{"version":3,"sources":["index.config.auth0.js"],"names":[],"mappings":"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;UACD,OAAO;UACP,OAAO;UACP,MAAM;UACN,KAAK;WACJ;UACD,OAAO;UACP,OAAO;UACP,MAAM;UACN,KAAK;WACJ;UACD,OAAO;UACP,OAAO;UACP,MAAM;UACN,KAAK;;;;IAIX,QAAQ;MACN,UAAU;MACV,UAAU;;IAEZ,eAAe;MACb,aAAa;MACb,cAAc;MACd,OAAO,CAAC;QACN,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;;;IAGT,cAAc;MACZ,SAAS;MACT,OAAO,CAAC;QACN,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;;;IAGT,WAAW;MACT,aAAa;MACb,cAAc;MACd,OAAO,CAAC;QACN,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;SACJ;QACD,OAAO;QACP,OAAO;QACP,MAAM;QACN,KAAK;;;IAGT,eAAe;KACd,SAAS,sBAAsB;IAChC,WAAW;IACX,KAAK;IACL,KAAK;IACL,MAAM;IACN,uBAAuB;KACtB,SAAS,cAAc,CAAC;IACzB,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OAAO;KACN;IACD,OAAO;IACP,OA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AI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,GAAG;AAClf,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,KAAK,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI;AACnf,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,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AI,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,KAAK,GAAG,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,EAAE;AACjf,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,E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","sourceRoot":"/source/","sourcesContent":["\"use strict\";\n\n(function () {\n  // Depends on 'services' so enterprise components (e.g. e-observation-report, e-phone-controls)\n  // that inject CallLogService, ObservationReportReloadHelper load after the services module.\n  angular.module('enterprise', []);\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTemplateTimesheets\n   * @restrict E\n   * @param {int} activeTabKey the index of the actively viewed data graph\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} timesheets the observationReport timesheets\n   * @param {object} dateRange the observation report currently selected date range (from the selector)\n   * @param {boolean} isReportEditable is this report editable?\n   * @param {boolean} isReportFromCurrentPeriod are we editing this report in the current month?\n   * @description\n   * Displays report timesheet details and form\n   */\n  angular.module('enterprise').component('eTemplateTimesheets', {\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      timesheets: '<',\n      dateRange: '<',\n      isReportEditable: '<',\n      isReportFromCurrentPeriod: '<',\n      onSubmitUpdateNotes: '&',\n      reportPeriodTxt: '<',\n      features: '<',\n      goToNextPatient: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, TimesheetService, NotificationsService, EUserProfilesService, UserProfilesService, EUserProfileFilterService, $state, ModalService, $translate) {\n      this.$onInit = function () {\n        var cycle_month, cycle_year, legacyPeriodStart, ref;\n        this.timesheetForDisplay = [];\n        $log = $log.getInstance('eTemplateTimesheets');\n        $log.log('component loaded');\n        $log.log('this.patientUserProfile', this.patientUserProfile);\n        $log.log('this.observationReport', this.observationReport);\n        $log.log('this.timesheets', this.timesheets);\n        // get reporting_period cycle month and year\n        if (this.observationReport.reporting_period_id) {\n          // new report\n          var _this$observationRepo = this.observationReport.reporting_period;\n          cycle_month = _this$observationRepo.cycle_month;\n          cycle_year = _this$observationRepo.cycle_year;\n        } else if (this.observationReport.period_started_at) {\n          // legacy report\n          legacyPeriodStart = luxon.DateTime.fromJSDate(this.observationReport.period_started_at);\n          cycle_month = legacyPeriodStart.month + 1;\n          cycle_year = legacyPeriodStart.year; // error\n        } else {\n          throw new Error('observation report missing reporting period and legacy periods');\n        }\n        this.cycleMonth = cycle_month;\n        this.cycleYear = cycle_year;\n        $log.log('cycle_year', cycle_year);\n        $log.log('cycle_month', cycle_month);\n        this.defaultRpmTime = 1;\n        this.rpmTime = this.defaultRpmTime;\n        this.dayOfService = luxon.DateTime.local().day;\n        this.showSpinner = false;\n        $log.log('this.isReportEditable', this.isReportEditable);\n        $log.log('this.isReportFromCurrentPeriod', this.isReportFromCurrentPeriod);\n        this.totalRPMSeconds = ((ref = this.observationReport) != null ? ref.timesheet_sum : void 0) || 0;\n        return this.processTimesheetsForDisplay();\n      };\n      this.processTimesheetsForDisplay = function () {\n        var i, len, minutesDiff, minutesTillNow, ref, timesheet, timesheetForDisplay, totalAsMins, totalAsSec;\n        timesheetForDisplay = [];\n        totalAsMins = 0;\n        totalAsSec = 0;\n        ref = this.timesheets;\n        for (i = 0, len = ref.length; i < len; i++) {\n          timesheet = ref[i];\n          totalAsSec += timesheet.duration_secs;\n          minutesTillNow = luxon.Duration.fromObject({\n            seconds: totalAsSec\n          }).toFormat('m');\n          minutesDiff = minutesTillNow - totalAsMins;\n          totalAsMins = minutesTillNow;\n          timesheetForDisplay.push(Object.assign(timesheet, {\n            min: minutesDiff,\n            totalAsMin: totalAsMins\n          }));\n        }\n        return this.timesheetForDisplay = timesheetForDisplay;\n      };\n      this.hasNext = EUserProfileFilterService.hasNext;\n      this.$doCheck = function () {\n        return this.processTimesheetsForDisplay();\n      };\n      this.$onChanges = function (changes) {\n        var ref;\n        this.processTimesheetsForDisplay();\n        if (changes.patientUserProfile) {\n          this.rpmTime = this.defaultRpmTime;\n        }\n        if (changes.observationReport) {\n          return this.totalRPMSeconds = ((ref = this.observationReport) != null ? ref.timesheet_sum : void 0) || 0;\n        }\n      };\n      this.onSubmit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var goToNext,\n          error,\n          i,\n          len,\n          newTimesheet,\n          reactivate,\n          ref,\n          t,\n          _args = arguments;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              goToNext = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n              this.patientUserProfile;\n              if (!this.patientUserProfile.deactivated_at) {\n                _context.next = 38;\n                break;\n              }\n              _context.t0 = ModalService;\n              _context.t1 = {};\n              _context.next = 7;\n              return $translate('PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.TIMESHEET_REACTIVATION_MODAL.HEADER');\n            case 7:\n              _context.t2 = _context.sent;\n              _context.next = 10;\n              return $translate('PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.TIMESHEET_REACTIVATION_MODAL.BODY');\n            case 10:\n              _context.t3 = _context.sent;\n              _context.next = 13;\n              return $translate('PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.TIMESHEET_REACTIVATION_MODAL.BUTTONS.ACTION');\n            case 13:\n              _context.t4 = _context.sent;\n              _context.next = 16;\n              return $translate('PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.TIMESHEET_REACTIVATION_MODAL.BUTTONS.CLOSE');\n            case 16:\n              _context.t5 = _context.sent;\n              _context.t6 = {\n                headerText: _context.t2,\n                bodyText: _context.t3,\n                actionButtonText: _context.t4,\n                closeButtonText: _context.t5\n              };\n              _context.next = 20;\n              return _context.t0.showModal.call(_context.t0, _context.t1, _context.t6).result;\n            case 20:\n              reactivate = _context.sent;\n              if (!reactivate) {\n                _context.next = 37;\n                break;\n              }\n              this.patientUserProfile.deactivation_reason_id = null;\n              this.patientUserProfile.deactivated_at = null;\n              _context.prev = 24;\n              _context.next = 27;\n              return UserProfilesService.reactivatePatient(this.user, this.patientUserProfile);\n            case 27:\n              _context.next = 35;\n              break;\n            case 29:\n              _context.prev = 29;\n              _context.t7 = _context[\"catch\"](24);\n              error = _context.t7;\n              $log.log('error', error);\n              $state.go('enterprise.observation_report.patient_deactivation_contact');\n              return _context.abrupt(\"return\");\n            case 35:\n              _context.next = 38;\n              break;\n            case 37:\n              return _context.abrupt(\"return\");\n            case 38:\n              this.timesheet = {\n                observation_report_id: this.observationReport.id,\n                submitted_by_user_profile_id: this.user.user_profile.id,\n                duration_secs: this.rpmTime * 60\n              };\n              _context.prev = 39;\n              this.showSpinner = true;\n              this.submitPromise = TimesheetService.post(this.timesheet);\n              _context.next = 44;\n              return this.submitPromise;\n            case 44:\n              newTimesheet = _context.sent;\n              if (newTimesheet.cpt_code === '99457') {\n                ref = this.timesheets;\n                for (i = 0, len = ref.length; i < len; i++) {\n                  t = ref[i];\n                  if (t.cpt_code === '99470') {\n                    t.cpt_code = null;\n                    t.date_of_service = null;\n                  }\n                }\n              }\n              this.timesheets.push(newTimesheet);\n              NotificationsService.success('Timesheet successfully created.');\n              this.rpmTime = this.defaultRpmTime;\n              // Uncomment if you'd like timesheet save to also save notes\n              // this.onSubmitUpdateNotes({model: this.observationReport})\n              if (!(goToNext && EUserProfileFilterService.hasNext())) {\n                _context.next = 51;\n                break;\n              }\n              return _context.abrupt(\"return\", this.goToNextPatient({\n                isNext: true\n              }));\n            case 51:\n              _context.next = 58;\n              break;\n            case 53:\n              _context.prev = 53;\n              _context.t8 = _context[\"catch\"](39);\n              error = _context.t8;\n              $log.log('error', error);\n              return _context.abrupt(\"return\", NotificationsService.error('Error creating timesheet.'));\n            case 58:\n              _context.prev = 58;\n              this.showSpinner = false;\n              return _context.finish(58);\n            case 61:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[24, 29], [39, 53, 58, 61]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-visualizer/e-template-timesheets/e-template-timesheets.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientObservationForm\n   * @restrict E\n   * @param {function} onSubmit on submit callback\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {string} label-txt the label text\n   * @description\n   * Displays enterprise patient observation form for enterprise customer to submit an observation\n   */\n  angular.module('enterprise').component('ePatientObservationForm', {\n    bindings: {\n      onSubmit: '&',\n      observationReport: '<',\n      labelTxt: '@',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, textAngularManager, AuthService) {\n      var _this = this;\n      var submitChange;\n      this.$onInit = function () {\n        var ref, ref1;\n        $log = $log.getInstance('ePatientObservationForm');\n        $log.log('ePatientObservationForm component loaded');\n        $log.log('this.observationReport', this.observationReport);\n        this.ccmEnabled = (ref = this.features) != null ? (ref1 = ref.ccm) != null ? ref1.is_enabled : void 0 : void 0;\n        $log.log('e-patient-observation-form:ccmEnabled', this.features);\n        $log.log('e-patient-observation-form:observationReport.service.name', this.observationReport.service.name);\n        if (this.observationReport.service.name === 'CCM' && !this.observationReport.details) {\n          this.observationReport.details = (this.observationReport.details || '') + \"<div class='ccm-notes'>\\n<div class='goals'>\\n<h3><span>Goals</span></h3>\\n<p>\\n<br>\\n</p>\\n</div>\\n<div class='symptoms'><h3><span>Symptoms</span></h3><p>\\n<br>\\n</p></div>\\n<div class='barriers'><h3><span>Barriers</span></h3><p>\\n<br>\\n</p></div>\\n<div class='interventions'><h3><span>Interventions</span></h3><p>\\n<br>\\n</p></div>\\n<div class='providers'><h3><span>Providers</span></h3><p>\\n<br>\\n</p></div>\\n<div class='caregivers'><h3><span>Caregivers</span></h3><p>\\n<br>\\n</p></div>\\n</div>\";\n        }\n        textAngularManager.updateToolDisplay('h2', {\n          buttontext: 'H'\n        });\n        this.disabled = !AuthService.isAuthorized(['role:clinical']);\n        $log.log('authorized:is', this.disabled);\n      };\n      submitChange = _.debounce(function (observationReport) {\n        $log.log('onSave debounce', observationReport.id, observationReport.details);\n        return _this.onSubmit({\n          // for rpm, which uses a new endpoint to append to the observation report notes\n          observationReportId: observationReport.id,\n          notes: observationReport.details_tobeadded,\n          // for ccm, which uses the existing endpoint to update the observation report notes\n          model: observationReport\n        });\n      }, 3000);\n      this.onSave = function (observationReport) {\n        var skipDebounce = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n        $log.log('onSave', observationReport.id, observationReport.details);\n        // if user deletes all notes will not save without converting to empty string.\n        observationReport.details = observationReport.details || \"\";\n        if (skipDebounce) {\n          submitChange.cancel();\n          return this.submitPromise = this.onSubmit({\n            // for rpm, which uses a new endpoint to append to the observation report notes\n            observationReportId: observationReport.id,\n            notes: observationReport.details_tobeadded,\n            // for ccm, which uses the existing endpoint to update the observation report notes\n            model: observationReport\n          });\n        } else {\n          return this.submitPromise = submitChange(observationReport);\n        }\n      };\n      this.$onDestroy = function () {\n        return submitChange.flush();\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-visualizer/e-patient-observation-form/e-patient-observation-form.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('eUsersNoAvaAdherenceDate', {\n    bindings: {\n      userProfile: '<',\n      enterpriseCustomer: '<',\n      dorBar: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller() {\n      var _this = this;\n      var NEWLY_ENROLLED_DAYS, RECENT_READING_HOURS;\n      NEWLY_ENROLLED_DAYS = 5;\n      RECENT_READING_HOURS = 48;\n      this.$onInit = function () {\n        return _this.updateMessageStatus();\n      };\n      this.$onChanges = function () {\n        return _this.updateMessageStatus();\n      };\n      this.updateMessageStatus = function () {\n        _this.lastReadingLabel = null;\n        if (!_this.canReceiveReminders()) {\n          // Notifications / SMS alerts are off — only case for \"Reminders Paused\".\n          return _this.messageStatus = 'REMINDERS_PAUSED';\n        } else if (!_this.hasMobileNumber()) {\n          return _this.messageStatus = 'NO_MOBILE_PHONE';\n        } else if (_this.computeNewlyEnrolled()) {\n          return _this.messageStatus = 'NEWLY_ENROLLED';\n        } else if (_this.hasAdherentPacing()) {\n          return _this.messageStatus = 'ADHERENT';\n        } else {\n          _this.lastReadingLabel = _this.formatLastReadingAge();\n          return _this.messageStatus = 'LAST_READING';\n        }\n      };\n      this.canReceiveReminders = function () {\n        return _this.enterpriseCustomer.vma_adherence_enabled && _this.userProfile.enable_sms_alerts;\n      };\n      this.hasMobileNumber = function () {\n        var noMobilePhone, noPhoneNumbers;\n        noPhoneNumbers = !_this.userProfile.phone_1_number && !_this.userProfile.phone_2_number && !_this.userProfile.phone_3_number;\n        if (noPhoneNumbers) {\n          return false;\n        }\n        noMobilePhone = _this.userProfile.phone_1_type !== 'm' && _this.userProfile.phone_2_type !== 'm' && _this.userProfile.phone_3_type !== 'm';\n        if (noMobilePhone) {\n          return false;\n        }\n        return true;\n      };\n      this.computeNewlyEnrolled = function () {\n        if (_this.getLatestReadingTakenAt() != null) {\n          // First 5 days with no readings yet. Any reading → Adherent instead.\n          return false;\n        }\n        return _this.isWithinNewlyEnrolledWindow();\n      };\n      this.isWithinNewlyEnrolledWindow = function () {\n        var cutoff, enrollmentDate;\n        enrollmentDate = _this.getEnrollmentDate();\n        if (enrollmentDate == null) {\n          return false;\n        }\n        cutoff = luxon.DateTime.local().minus({\n          days: NEWLY_ENROLLED_DAYS\n        });\n        return enrollmentDate >= cutoff;\n      };\n      this.getEnrollmentDate = function () {\n        var enrollmentDate, i, len, modelPatientService, ref, ref1, ref2, ref3;\n        ref1 = ((ref = _this.userProfile) != null ? ref.model_patient_services : void 0) || [];\n        for (i = 0, len = ref1.length; i < len; i++) {\n          modelPatientService = ref1[i];\n          if (((ref2 = modelPatientService.patient_service) != null ? ref2.name : void 0) === 'RPM' && modelPatientService.start_date) {\n            enrollmentDate = luxon.DateTime.fromISO(modelPatientService.start_date);\n            if (enrollmentDate.isValid) {\n              return enrollmentDate;\n            }\n          }\n        }\n        if ((ref3 = _this.userProfile) != null ? ref3.created_at : void 0) {\n          enrollmentDate = luxon.DateTime.fromISO(_this.userProfile.created_at);\n          if (enrollmentDate.isValid) {\n            return enrollmentDate;\n          }\n        }\n        return null;\n      };\n      this.getLatestReadingTakenAt = function () {\n        var device, i, j, latest, len, len1, reading, readingTakenAt, ref, ref1, ref2;\n        latest = null;\n        ref1 = ((ref = _this.userProfile) != null ? ref.devices : void 0) || [];\n        for (i = 0, len = ref1.length; i < len; i++) {\n          device = ref1[i];\n          ref2 = device.latest_device_readings || [];\n          for (j = 0, len1 = ref2.length; j < len1; j++) {\n            reading = ref2[j];\n            if (!(reading != null ? reading.reading_taken_ts : void 0)) {\n              continue;\n            }\n            readingTakenAt = luxon.DateTime.fromISO(reading.reading_taken_ts);\n            if (!readingTakenAt.isValid) {\n              continue;\n            }\n            if (latest == null || readingTakenAt > latest) {\n              latest = readingTakenAt;\n            }\n          }\n        }\n        return latest;\n      };\n      this.hasRecentReading = function () {\n        var cutoff, latest;\n        cutoff = luxon.DateTime.local().minus({\n          hours: RECENT_READING_HOURS\n        });\n        latest = _this.getLatestReadingTakenAt();\n        return latest != null && latest >= cutoff;\n      };\n      // e.g. \"Last reading, 2d, 12h ago\" or \"Last reading, 5h ago\"\n      this.formatLastReadingAge = function () {\n        var days, diff, hours, latest, minutes, now;\n        latest = _this.getLatestReadingTakenAt();\n        if (latest == null) {\n          return null;\n        }\n        now = luxon.DateTime.local();\n        if (latest > now) {\n          return null;\n        }\n        diff = now.diff(latest, ['days', 'hours', 'minutes']).toObject();\n        days = Math.floor(diff.days || 0);\n        hours = Math.floor(diff.hours || 0);\n        minutes = Math.floor(diff.minutes || 0);\n        if (days > 0) {\n          return \"Last reading, \".concat(days, \"d, \").concat(hours, \"h ago\");\n        }\n        if (hours > 0) {\n          return \"Last reading, \".concat(hours, \"h ago\");\n        }\n        if (minutes > 0) {\n          return \"Last reading, \".concat(minutes, \"m ago\");\n        }\n        return 'Last reading, just now';\n      };\n      // Adherent when pacing is green/orange, early enrollment with a reading, or a\n      // reading in the last 48 hours (before 30-day history is meaningful).\n      this.hasAdherentPacing = function () {\n        var ref;\n        if (_this.isWithinNewlyEnrolledWindow() && _this.getLatestReadingTakenAt() != null) {\n          return true;\n        }\n        if (_this.hasRecentReading()) {\n          return true;\n        }\n        return ((ref = _this.dorBar) != null ? ref.show : void 0) && (_this.dorBar.status === 'green' || _this.dorBar.status === 'orange');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-patients/e-users-card/e-users-no-ava-adherence-date/e-users-no-ava-adherence-date.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eUsersCard\n   * @restrict E\n   * @param {object} device of user_profile\n   * @description\n   * Displays enterprise user's device shipment details\n   */\n  angular.module('enterprise').component('eDeviceShipment', {\n    bindings: {\n      device: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, ShipmentStatusesTypes) {\n      this.$onInit = function () {\n        var _this = this;\n        var defaultShipmentStatus, shipmentStatus;\n        $log = $log.getInstance('eDeviceShipment');\n        $log.log('eDeviceShipment component loaded');\n        this.ALL_SHIPMENT_INFO = _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(ShipmentStatusesTypes.DELIVERED.toLocaleLowerCase()), {\n          status_icon: ShipmentStatusesTypes.DELIVERED.toLocaleLowerCase(),\n          popoverText: function popoverText(shipment) {\n            return $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.SHIPMENT_DELIVERED');\n          }\n        }), \"\".concat(ShipmentStatusesTypes.FULFILLED.toLocaleLowerCase()), {\n          status_icon: ShipmentStatusesTypes.FULFILLED.toLocaleLowerCase(),\n          popoverText: function popoverText(shipment) {\n            return _this.getDeviceSearchLink(shipment);\n          }\n        }), \"default\", {\n          status_icon: \"processing\",\n          popoverText: function popoverText(shipment) {\n            if (shipment.tracking_number) {\n              return _this.getDeviceSearchLink(shipment);\n            } else {\n              return $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.SHIPMENT_PROCESSING');\n            }\n          }\n        });\n        this.shipment = this.device.shipment;\n        this.shipment_delivered_status = ShipmentStatusesTypes.DELIVERED;\n        this.shipment_fulfilled_status = ShipmentStatusesTypes.FULFILLED;\n        if (this.shipment) {\n          defaultShipmentStatus = this.shipment !== null && this.shipment.status.toLocaleLowerCase() in this.ALL_SHIPMENT_INFO ? this.shipment.status.toLocaleLowerCase() : \"default\";\n          // Walk through the order events and make sure that we are getting the status\n          // Associated with _THIS_ serial, not an old status from a previous shipment\n          shipmentStatus = _.find(this.device.shipment.device_order_events, {\n            serial: this.device.serial\n          });\n          if (shipmentStatus) {\n            shipmentStatus = shipmentStatus.status.toLocaleLowerCase();\n          } else {\n            shipmentStatus = defaultShipmentStatus;\n          }\n          this.shipmentInfo = this.ALL_SHIPMENT_INFO[shipmentStatus];\n          return this.popoverText = this.shipmentInfo.popoverText(this.shipment);\n        }\n      };\n      // Doing this here to avoid complicated interpolation in the template\n      // @see https://code.angularjs.org/1.6.9/docs/guide/interpolation#embedding-interpolation-markup-inside-expressions\n      this.getDeviceSearchLink = function (shipment) {\n        var track_package_text;\n        track_package_text = $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.TRACK_PACKAGE');\n        track_package_text += ': ' + shipment.tracking_number;\n        return \"<a href=\\\"https://www.google.com/search?q=\".concat(encodeURIComponent(shipment.tracking_number), \"\\\" target=\\\"_blank\\\">\").concat(track_package_text, \"</a>\");\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-patients/e-users-card/e-device-shipment/e-device-shipment.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('ePatientDeactivationDeleteFileConfirmation', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, EDeactivationReasonsService) {\n      this.$onInit = function () {\n        var file, modalDefaults;\n        $log = $log.getInstance('ePatientDeactivationDeleteFileConfirmation');\n        $log.log('$onInit');\n        file = EDeactivationReasonsService.getStateByKey('file');\n        modalDefaults = {\n          windowClass: 'patient-deactivation-delete-file-confirmation-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, EDeactivationReasonsService) {\n            this.options = {\n              isLoading: true,\n              file: file,\n              init: function init() {\n                $log.log('loaded');\n                return this.isLoading = false;\n              },\n              delete: function _delete() {\n                EDeactivationReasonsService.setStateByKey('file', null);\n                EDeactivationReasonsService.setStateByKey('fileUploadedDate', null);\n                return this.cancel();\n              },\n              cancel: function cancel() {\n                $uibModalInstance.close(false);\n                return $state.go('enterprise.observation_report.patient_deactivation_insurance_change');\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              }\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-insurance-change/e-delete-file-confirmation/e-delete-file-confirmation.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc component\n   * @name enterprise.component:patientInsuranceModal\n   * @description\n   * Full-screen modal editor for primary, secondary, and tertiary insurance on an existing enrollment.\n   */\n  angular.module('enterprise').component('patientInsuranceModal', {\n    bindings: {\n      enrollment: '<?',\n      enrollmentId: '<',\n      enterpriseCustomer: '<',\n      patientUserProfile: '<',\n      user: '<',\n      onSaved: '&',\n      onCancel: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, REGEX, AuthService, GendersService, EEnrollmentsService, EInsurerTypeService, EPatientToPolicyholderRelationService, MedicareAdvantageService, PatientInsuranceFormService, NotificationsService) {\n      var _this = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var enrollment, error, insurerTypes, medAdvantageProviderOptions, medAdvantageProviders, ptprTypes, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('patientInsuranceModal');\n              _this.loading = true;\n              _this.saving = false;\n              _this.mbiRegex = REGEX.MBI;\n              _this.medicareNumValidationMessages = [{\n                type: 'unique',\n                message: 'PORTAL.ENTERPRISE.PATIENT_REPORTING.INSURANCE_MODAL.MEDICARE_NUM_UNIQUE'\n              }];\n              _this.isInternal = AuthService.isInternal();\n              _context.prev = 6;\n              _this.genderOptionsArray = GendersService.getGenders;\n              _context.next = 10;\n              return EInsurerTypeService.getAll();\n            case 10:\n              insurerTypes = _context.sent;\n              _this.insurerTypeOptions = _.map(insurerTypes, function (insurer) {\n                return {\n                  label: insurer.name,\n                  value: insurer.id\n                };\n              });\n              _context.next = 14;\n              return EPatientToPolicyholderRelationService.getAll();\n            case 14:\n              ptprTypes = _context.sent;\n              _this.ptprTypeOptions = _.map(ptprTypes, function (ptpr) {\n                return {\n                  label: ptpr.name,\n                  value: ptpr.id\n                };\n              });\n              enrollment = _this.enrollment;\n              medAdvantageProviders = [];\n              if (!(enrollment == null)) {\n                _context.next = 25;\n                break;\n              }\n              _context.next = 21;\n              return EEnrollmentsService.get(_this.enterpriseCustomer.id, _this.enrollmentId);\n            case 21:\n              enrollment = _context.sent;\n              _context.next = 24;\n              return MedicareAdvantageService.getAll();\n            case 24:\n              medAdvantageProviders = _context.sent;\n            case 25:\n              medAdvantageProviderOptions = _.map(medAdvantageProviders, function (provider) {\n                return {\n                  label: provider.name,\n                  value: provider.id\n                };\n              });\n              medAdvantageProviderOptions.splice(0, 0, {\n                label: '',\n                value: null\n              });\n              _this.medAdvantageProviderOptions = medAdvantageProviderOptions;\n              _this.enrollment = angular.copy(enrollment);\n              PatientInsuranceFormService.ensureInsurerObjects(_this.enrollment);\n              PatientInsuranceFormService.applyMedicareAdvantageProviderName(_this.enrollment, medAdvantageProviders);\n              _this.insuranceType = PatientInsuranceFormService.resolveInsuranceType(_this.enrollment);\n              if (_this.insuranceType == null) {\n                _this.insuranceType = 'medicare';\n              }\n              _this.showSecondaryInsurance = EEnrollmentsService.toggleShowInsurer(_this.enrollment.secondary_insurer);\n              _this.showTertiaryInsurance = EEnrollmentsService.toggleShowInsurer(_this.enrollment.tertiary_insurer);\n              if (_this.showTertiaryInsurance && !_this.showSecondaryInsurance) {\n                _this.showSecondaryInsurance = true;\n              }\n              if (_this.enrollment.secondary_insurer.policy_holder_is_patient == null && _this.enrollment.secondary_insurer.policy_holder_is_patient !== false) {\n                _this.enrollment.secondary_insurer.policy_holder_is_patient = true;\n              }\n              if (!(_this.enrollment.tertiary_insurer.policy_holder_is_patient == null && _this.enrollment.tertiary_insurer.policy_holder_is_patient !== false)) {\n                _context.next = 39;\n                break;\n              }\n              return _context.abrupt(\"return\", _this.enrollment.tertiary_insurer.policy_holder_is_patient = true);\n            case 39:\n              _context.next = 47;\n              break;\n            case 41:\n              _context.prev = 41;\n              _context.t0 = _context[\"catch\"](6);\n              error = _context.t0;\n              $log.error('patientInsuranceModal init error', error);\n              NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || (error != null ? error.message : void 0));\n              return _context.abrupt(\"return\", _this.onCancel());\n            case 47:\n              _context.prev = 47;\n              _this.loading = false;\n              return _context.finish(47);\n            case 50:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, null, [[6, 41, 47, 50]]);\n      }));\n      this.alignExplanation = function () {\n        return '<span>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.ALIGN_DOS_INFO') + '</span>';\n      };\n      this.onSearch = function (query) {\n        return MedicareAdvantageService.search(query);\n      };\n      this.blankSecondaryRelationshipFields = function () {\n        if (this.enrollment.secondary_insurer.policy_holder_is_patient) {\n          this.enrollment.secondary_insurer.patient_to_policyholder_relationship_id = null;\n          this.enrollment.secondary_insurer.policyholder_name_first = '';\n          this.enrollment.secondary_insurer.policyholder_name_last = '';\n          this.enrollment.secondary_insurer.policyholder_date_of_birth = null;\n          return this.enrollment.secondary_insurer.policyholder_sex = '';\n        }\n      };\n      this.hasSecondaryInsuranceData = function () {\n        var ref;\n        return PatientInsuranceFormService.hasSecondaryInsuranceData((ref = this.enrollment) != null ? ref.secondary_insurer : void 0);\n      };\n      this.clearSecondaryInsurance = function () {\n        this.enrollment.secondary_insurer = _.clone(PatientInsuranceFormService.blankInsurer());\n        this.enrollment.secondary_insurer.policy_holder_is_patient = true;\n        return this.showSecondaryInsurance = false;\n      };\n      this.hasTertiaryInsuranceData = function () {\n        var ref;\n        return PatientInsuranceFormService.hasSecondaryInsuranceData((ref = this.enrollment) != null ? ref.tertiary_insurer : void 0);\n      };\n      this.clearTertiaryInsurance = function () {\n        this.enrollment.tertiary_insurer = _.clone(PatientInsuranceFormService.blankInsurer());\n        this.enrollment.tertiary_insurer.policy_holder_is_patient = true;\n        return this.showTertiaryInsurance = false;\n      };\n      this.blankTertiaryRelationshipFields = function () {\n        if (this.enrollment.tertiary_insurer.policy_holder_is_patient) {\n          this.enrollment.tertiary_insurer.patient_to_policyholder_relationship_id = null;\n          this.enrollment.tertiary_insurer.policyholder_name_first = '';\n          this.enrollment.tertiary_insurer.policyholder_name_last = '';\n          this.enrollment.tertiary_insurer.policyholder_date_of_birth = null;\n          return this.enrollment.tertiary_insurer.policyholder_sex = '';\n        }\n      };\n      this.cancel = function () {\n        return this.onCancel();\n      };\n      this.clearMedicareNumUniqueError = function () {\n        var medicareNumField, ref;\n        medicareNumField = (ref = this.enrollmentInsuranceForm) != null ? ref['medicare-num'] : void 0;\n        if (medicareNumField != null) {\n          return medicareNumField.$setValidity('unique', true);\n        }\n      };\n      this.setMedicareNumUniqueError = function () {\n        var medicareNumField, ref;\n        medicareNumField = (ref = this.enrollmentInsuranceForm) != null ? ref['medicare-num'] : void 0;\n        if (medicareNumField != null) {\n          medicareNumField.$setValidity('unique', false);\n          return medicareNumField.$setTouched();\n        }\n      };\n      this.canSubmitInsuranceForm = function () {\n        var ref, ref1;\n        return PatientInsuranceFormService.isPrimaryInsuranceValid(this.enrollment, this.insuranceType) && PatientInsuranceFormService.isSecondaryInsuranceValid((ref = this.enrollment) != null ? ref.secondary_insurer : void 0) && (this.isInternal || !((ref1 = this.enrollmentInsuranceForm) != null ? ref1.$invalid : void 0));\n      };\n      this.submitForm = function () {\n        if (!this.canSubmitInsuranceForm()) {\n          return;\n        }\n        this.savePromise = this.save();\n        return this.savePromise;\n      };\n      this.save = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error, errorMessage, ref, ref1, ref2, ref3, response, savedEnrollment;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              if (_this.canSubmitInsuranceForm()) {\n                _context2.next = 2;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 2:\n              _this.saving = true;\n              _this.clearMedicareNumUniqueError();\n              _context2.prev = 4;\n              _this.showSecondaryInsurance = EEnrollmentsService.toggleShowInsurer(_this.enrollment.secondary_insurer);\n              _this.showTertiaryInsurance = EEnrollmentsService.toggleShowInsurer(_this.enrollment.tertiary_insurer);\n              PatientInsuranceFormService.prepareEnrollmentInsuranceForSave(_this.enrollment, _this.insuranceType, _this.medAdvantageProviderOptions, _this.showSecondaryInsurance, _this.showTertiaryInsurance);\n              delete _this.enrollment.enrollment_tos_delivery_methods;\n              delete _this.enrollment.pactsafe_request;\n              _context2.next = 12;\n              return EEnrollmentsService.put(_this.enterpriseCustomer.id, _this.enrollment);\n            case 12:\n              response = _context2.sent;\n              savedEnrollment = _.isArray(response) ? (ref = response[1]) != null ? ref[0] : void 0 : response;\n              $log.log('patientInsuranceModal saved enrollment', savedEnrollment);\n              NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.INSURANCE_MODAL.SAVE_SUCCESS');\n              return _context2.abrupt(\"return\", _this.onSaved({\n                enrollment: savedEnrollment\n              }));\n            case 19:\n              _context2.prev = 19;\n              _context2.t0 = _context2[\"catch\"](4);\n              error = _context2.t0;\n              $log.error('patientInsuranceModal save error', error);\n              errorMessage = (error != null ? (ref1 = error.data) != null ? ref1.errorMessage : void 0 : void 0) || (error != null ? (ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.message : void 0 : void 0 : void 0) || (error != null ? error.message : void 0);\n              if ((errorMessage != null ? errorMessage.indexOf('Medicare number already in use') : void 0) >= 0) {\n                _this.setMedicareNumUniqueError();\n                errorMessage = 'PORTAL.ENTERPRISE.PATIENT_REPORTING.INSURANCE_MODAL.MEDICARE_NUM_UNIQUE';\n              }\n              NotificationsService.error(errorMessage);\n              throw error;\n            case 27:\n              _context2.prev = 27;\n              _this.saving = false;\n              return _context2.finish(27);\n            case 30:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, null, [[4, 19, 27, 30]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/patient-header/patient-insurance-modal/patient-insurance-modal.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('graphCard', {\n    bindings: {\n      patientUserProfile: '<',\n      providerUser: '<',\n      deviceSerial: '<',\n      dateRange: '<',\n      graphDevice: '<',\n      graphId: '@',\n      graphViewName: '@',\n      graphType: '@',\n      graphIframeUniqueId: '@',\n      ignoreDateChanges: '<',\n      patientCreatedAt: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($rootScope, $log, $window, $location, $sce, $transitions, LookerService, GraphTypes, $filter) {\n      var _this2 = this;\n      this.$onInit = function () {\n        var _this = this;\n        this.isLoading = true;\n        $log = $log.getInstance('graphCard');\n        $log.log('graphCard component loaded', this.graphDevice);\n        this.isChartLoaded = false;\n        this.origin = 'https://analytics.ibeat.com';\n        // make sure the spinner starts immediately so that it's already spinning\n        // when we load the reporting ui-view the next time\n        this.lastPatientUserId = this.patientUserProfile.user.id;\n        return $transitions.onBefore({}, function (trans) {\n          var iframe;\n          if (trans.from().name === 'enterprise.observation_report' && _this.isLoading) {\n            $log.log('navigating away, canceling looker report', _this.graphIframeUniqueId);\n            iframe = document.getElementById(_this.graphIframeUniqueId);\n            iframe.contentWindow.postMessage(JSON.stringify({\n              type: 'dashboard:stop'\n            }), _this.origin);\n          }\n          if (trans.to().name === 'enterprise.observation_report' && !trans.from().name.startsWith('enterprise.observation_report.patient_deactivation')) {\n            return _this.isLoading = true;\n          }\n        });\n      };\n      this.$onChanges = function (changes) {\n        $log.log('changes', changes);\n        this.isLoading = true;\n        if (!this.isChartLoaded) {\n          $log.log('GraphTypes', GraphTypes, this.graphDevice);\n          this.graphConstants = GraphTypes[this.graphDevice];\n          $log.log('this.graphConstants', this.graphConstants);\n          this.graphId = this.graphConstants.ID;\n          $log.log('this.graphId', this.graphId);\n          this.graphType = this.graphConstants.TYPE;\n          this.graphViewName = this.graphConstants.VIEW_NAME;\n          this.graphIframeUniqueId = this.graphConstants.IFRAME_UNIQUE_ID;\n          window.removeEventListener('message', this.handleIframeEvents, false);\n          return this.loadGraphData();\n        } else if (changes.dateRange != null || (changes != null ? changes.deviceSerial : void 0)) {\n          if (!this.ignoreDateChanges || this.patientUserProfile.user.id !== this.lastPatientUserId) {\n            this.updateDashboardFilterValues();\n            return this.lastPatientUserId = this.patientUserProfile.user.id;\n          } else {\n            return this.isLoading = false;\n          }\n        }\n      };\n      this.loadGraphData = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var filters, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              window.addEventListener('message', this.handleIframeEvents, false);\n              this.timeZone = this.providerUser.user_profile.timezone;\n              if (this.ignoreDateChanges) {\n                this.dateRange.startDate = this.patientCreatedAt.substring(0, this.patientCreatedAt.indexOf('T'));\n              }\n              filters = Object.assign({}, this.dateRange, {\n                deviceSerial: this.deviceSerial || 'N/A',\n                graphType: this.graphType,\n                graphViewName: this.graphViewName,\n                timeZone: this.timeZone,\n                providerUserProfileId: this.providerUser.user_profile.id\n              });\n              _context.next = 6;\n              return LookerService.getLookerGraphUrl(this.patientUserProfile.user.id, this.graphId, filters);\n            case 6:\n              response = _context.sent;\n              this.graphUrl = $sce.trustAsResourceUrl(response);\n              return _context.abrupt(\"return\", this.isChartLoaded = true);\n            case 9:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.handleIframeEvents = function (event) {\n        var eventData, iframe;\n        $log.log(event);\n        iframe = document.getElementById(_this2.graphIframeUniqueId);\n        if (event.source === iframe.contentWindow) {\n          if (event.origin === _this2.origin) {\n            eventData = JSON.parse(event.data);\n            if (eventData.type === 'dashboard:filters:changed') {\n              $log.log(_this2.graphIframeUniqueId, 'filters changed');\n              _this2.isLoading = true;\n              $rootScope.$digest();\n            }\n            if (eventData.type === 'dashboard:loaded' && eventData.status === 'complete') {\n              $log.log(_this2.graphIframeUniqueId, 'dashboard loaded complete');\n            }\n            if (eventData.type === 'dashboard:run:complete') {\n              $log.log('dashboard:run:complete', eventData);\n              if (eventData.status === 'stopped') {\n                $log.log(_this2.graphIframeUniqueId, 'dashboard query canceled');\n              }\n              _this2.isLoading = false;\n              return $rootScope.$digest();\n            }\n          }\n        }\n      };\n      this.runDashboard = function () {\n        var iframe;\n        iframe = document.getElementById(this.graphIframeUniqueId);\n        return iframe.contentWindow.postMessage(JSON.stringify({\n          type: 'dashboard:run'\n        }), this.origin);\n      };\n      this.updateDashboardFilterValues = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var filters, iframe, response;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              // RPM graph uses different filters then the others\n              filters = {\n                Serial: this.deviceSerial,\n                Date: this.dateRange.startDate + ' to ' + this.dateRange.endDate\n              };\n              if (this.graphViewName === 'patient_rpm_data') {\n                // RPM graph date range should always include the entire history of the patient\n                filters = {\n                  UserProfileID: this.patientUserProfile.user.user_profile.id,\n                  StartDate: this.patientCreatedAt.substring(0, this.patientCreatedAt.indexOf('T')),\n                  EndDate: this.dateRange.endDate\n                };\n              }\n              if (!(!filters.UserProfileID && !filters.Serial)) {\n                _context2.next = 5;\n                break;\n              }\n              $log.log(this.graphIframeUniqueId, 'not updated no Serial or UserProfileID');\n              return _context2.abrupt(\"return\");\n            case 5:\n              iframe = document.getElementById(this.graphIframeUniqueId);\n              iframe.contentWindow.postMessage(JSON.stringify({\n                type: 'dashboard:filters:update',\n                filters: filters\n              }), this.origin);\n              filters = Object.assign({}, this.dateRange, {\n                deviceSerial: this.deviceSerial || 'N/A',\n                graphType: this.graphType,\n                graphViewName: this.graphViewName,\n                timeZone: this.timeZone,\n                providerUserProfileId: this.providerUser.user_profile.id\n              });\n              _context2.next = 10;\n              return LookerService.getLookerGraphUrl(this.patientUserProfile.user.id, this.graphId, filters);\n            case 10:\n              response = _context2.sent;\n              this.graphUrl = $sce.trustAsResourceUrl(response);\n              return _context2.abrupt(\"return\", this.runDashboard());\n            case 13:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.$onDestroy = function () {\n        return window.removeEventListener('message', this.handleIframeEvents, false);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/graphs/graph-card/graph-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTemplateVisualizer\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} timesheets the observationReport timesheets\n   * @param {string} reportPeriodTxt the date string ex: March 1-31, 2020\n   * @param {object} dateRange the observation report currently selected date range (from the selector)\n   * @param {function} onSubmit submits observation report\n   * @param {boolean} isReportEditable is this report editable?\n   * @param {boolean} isReportFromCurrentPeriod are we editing this report in the current month?\n   * @description\n   * Displays enterprise template builder doctor notes and patient data\n   */\n  angular.module('enterprise').component('eTemplateVisualizer', {\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      observationReports: '<',\n      timesheets: '<',\n      reportPeriodTxt: '<',\n      componentData: '=',\n      dateRange: '<',\n      onSubmitUpdateNotes: '&',\n      isReportEditable: '<',\n      isReportFromCurrentPeriod: '<',\n      features: '<',\n      goToNextPatient: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($rootScope, $log, EUserProfilesService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTemplateVisualizer');\n        $log.log('eTemplateVisualizer component loaded');\n        $log.log('this.dateRange', this.dateRange);\n        $log.log('this.enterpriseCustomer.name', this.enterpriseCustomer.name);\n        $log.log('this.reportPeriodTxt', this.reportPeriodTxt);\n        this.translationData = {\n          name: this.enterpriseCustomer.name\n        };\n        return $log.log('this.translationData', this.translationData);\n      };\n      this.$onChanges = function (changes) {\n        $log.log('changes', changes);\n        if (changes.dateRange) {\n          this.dateRange = changes.dateRange.currentValue;\n        }\n        if (changes.reportPeriodText) {\n          return this.reportPeriodText = changes.reportPeriodText.currentValue;\n        }\n      };\n      //      if changes.dateRange.currentValue isnt changes.dateRange.previousValue\n      //        this.loadWatchData()\n      this.loadWatchData = function () {\n        var filters;\n        this.isWatchDataLoading = true;\n        filters = {\n          startDate: moment(this.dateRange.startDate).format('YYYY-MM-DD'),\n          endDate: moment(this.dateRange.endDate).format('YYYY-MM-DD')\n        };\n        EUserProfilesService.getWatchData(this.enterpriseCustomer.id, this.patientUserProfile.id, filters).then(function (deviceData) {\n          $log.log('deviceData', deviceData);\n          this.deviceData = deviceData;\n          return this.isWatchDataLoading = false;\n        }).catch(function (error) {\n          this.isWatchDataLoading = false;\n          return $log.log('error: this.loadWatchData', error);\n        });\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-visualizer/e-template-visualizer.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTemplateReadOnly\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} timesheets the observationReport timesheets\n   * @param {string} reportPeriodTxt the date string ex: March 1-31, 2020\n   * @param {object} dateRange the observation report currently selected date range (from the selector)\n   * @param {function} onSubmit submits observation report\n   * @description\n   * Displays enterprise template builder read only state for closed/locked reports\n   */\n  angular.module('enterprise').component('eTemplateReadOnly', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      reportPeriodTxt: '@',\n      dateRange: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($rootScope, $log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTemplateReadOnly');\n        $log.log('eTemplateReadOnly component loaded');\n        $log.log('this.dateRange', this.dateRange);\n        return $log.log('this.observationReport', this.observationReport);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-readonly/e-template-readonly.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTemplateComponents\n   * @restrict E\n   * @param {int} activeTabKey the index of the actively viewed data graph\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} componentData the data to build this component view\n   * @param {function} onUpdate callback to update enterprise customer observation_report_template\n   * @param {function} onDelete callback to delete enterprise customer observation_report_template component item\n   * @param {function} onCreate callback to add enterprise customer observation_report_template component item\n   * @description\n   * Displays enterprise template \"left\" side - the templating data.\n   */\n  angular.module('enterprise').component('eTemplateComponents', {\n    bindings: {\n      activeTabKey: '=',\n      user: '<',\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      reportPeriodTxt: '<',\n      componentData: '<',\n      onUpdate: '&',\n      onDelete: '&',\n      onCreate: '&',\n      onSubmit: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $filter, ModalService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTemplateComponents');\n        $log.log('eTemplateComponents component loaded');\n        $log.log('this.activeTabKey', this.activeTabKey);\n        $log.log('this.componentData', this.componentData);\n        this.headerTxt = '';\n      };\n      this.$onChanges = function (changes) {\n        return $log.log('changes', changes);\n      };\n      this.addTextToTemplateVisualizer = function (item) {\n        var initials, timestamp;\n        //      $log.log 'text', item.value\n        timestamp = luxon.DateTime.local().toFormat('M/d HHmm');\n        initials = this.user.user_profile.name_first.charAt(0).toUpperCase() + this.user.user_profile.name_last.charAt(0).toUpperCase();\n        return $rootScope.$broadcast('add', timestamp + ' ' + item.value + ' ' + initials + ' ');\n      };\n      this.onEditOrCreate = function () {\n        var _this = this;\n        var componentItem = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n          value: ''\n        };\n        var createNewComponent, headerText, modalDefaults;\n        $log.log('componentItem', componentItem);\n        createNewComponent = false;\n        headerText = $filter('translate')('PORTAL.ENTERPRISE.TEMPLATES.EDIT');\n        if (componentItem.value === '') {\n          createNewComponent = true;\n          headerText = $filter('translate')('PORTAL.ENTERPRISE.TEMPLATES.CREATE');\n        }\n        modalDefaults = {\n          controller: function controller($scope, $uibModalInstance) {\n            $scope.modalOptions = {\n              headerText: headerText,\n              componentItem: componentItem,\n              close: function close(result) {\n                $uibModalInstance.close(false);\n              },\n              ok: function () {\n                var _ok = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(componentItem) {\n                  var error;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        $log.log('componentItem', componentItem);\n                        if (createNewComponent) {\n                          // pass back just the new comment node\n                          _this.submitPromise = _this.onCreate({\n                            model: {\n                              newComponentItem: componentItem,\n                              itemKey: _this.activeTabKey\n                            }\n                          });\n                        } else {\n                          // pass the entire json object back representing all nodes of template\n                          _this.submitPromise = _this.onUpdate({\n                            model: _this.componentData\n                          });\n                        }\n                        _context.prev = 2;\n                        _context.next = 5;\n                        return _this.submitPromise;\n                      case 5:\n                        $log.log('onEditOrCreate');\n                        $uibModalInstance.close(false);\n                        _context.next = 13;\n                        break;\n                      case 9:\n                        _context.prev = 9;\n                        _context.t0 = _context[\"catch\"](2);\n                        error = _context.t0;\n                        NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n                      case 13:\n                        return _context.abrupt(\"return\", _this.submitPromise);\n                      case 14:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee, null, [[2, 9]]);\n                }));\n                function ok(_x) {\n                  return _ok.apply(this, arguments);\n                }\n                return ok;\n              }()\n            };\n          },\n          templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-components/e-edit-template-component.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-components/e-template-components.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTaskUpload\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @description\n   * Task item to display to enterprise customer to upload file\n   */\n  angular.module('enterprise').component('eTaskUpload', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      enterpriseCustomerTask: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, uuid4, FilesService, Upload, ECustomerTasksService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTaskUpload');\n        return $log.log('eTaskUpload component loaded');\n      };\n      this.uploadFiles = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(file, errFiles) {\n          var renamedFile, response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('file', file);\n                // shell var for uploaded record\n                this.uploadedRecord = null;\n                // rename the file\n                renamedFile = Upload.rename(file, uuid4.generate() + '.' + file.name.split('.').pop());\n                this.file = renamedFile;\n                // handle errors\n                this.errFile = errFiles && errFiles[0];\n                if (!this.file) {\n                  _context.next = 16;\n                  break;\n                }\n                _context.next = 8;\n                return FilesService.getSignedUrlForFileUpload(this.enterpriseCustomer, {\n                  file_name: this.file.ngfName,\n                  file_type: this.file.type\n                });\n              case 8:\n                response = _context.sent;\n                _context.next = 11;\n                return this.createUploadRecord();\n              case 11:\n                _context.next = 13;\n                return this.uploadFile(response.url);\n              case 13:\n                _context.next = 15;\n                return this.processUpload();\n              case 15:\n                return _context.abrupt(\"return\", _context.sent);\n              case 16:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.uploadFile = function (url) {\n        return this.file.upload = Upload.http({\n          url: url,\n          method: \"PUT\",\n          headers: {\n            \"Content-Type\": this.file.type\n          },\n          data: this.file\n        });\n      };\n      this.processUpload = function () {\n        var _this = this;\n        return this.file.upload.then(function (response) {\n          return $timeout(function () {\n            return _this.file.result = response.data;\n          }, 0);\n        }, /*#__PURE__*/function () {\n          var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(response) {\n            return regeneratorRuntime.wrap(function _callee2$(_context2) {\n              while (1) switch (_context2.prev = _context2.next) {\n                case 0:\n                  if (!(response.status > 0)) {\n                    _context2.next = 6;\n                    break;\n                  }\n                  $log.log('Error status: ' + resp.status);\n                  _this.errorMsg = response.status + ': ' + response.data;\n                  _context2.next = 5;\n                  return FilesService.deleteUploadRecord(_this.enterpriseCustomer.id, _this.uploadedRecord.id);\n                case 5:\n                  return _context2.abrupt(\"return\", NotificationsService.error('PORTAL.ALERTS.BULK_ENROLLMENT.TOASTS.ERROR'));\n                case 6:\n                case \"end\":\n                  return _context2.stop();\n              }\n            }, _callee2);\n          }));\n          return function (_x3) {\n            return _ref2.apply(this, arguments);\n          };\n        }(), function (evt) {\n          return _this.file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));\n        });\n      };\n      this.createUploadRecord = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var file, uploadRecord;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              uploadRecord = {\n                enterprise_customer_id: this.enterpriseCustomer.id,\n                user_profile_id: this.user.user_profile.id,\n                file_name: this.file.ngfName,\n                type: 'PRACTICE_UPLOAD',\n                status: 'NEW'\n              };\n              $log.log('uploadRecord', uploadRecord);\n              _context3.next = 4;\n              return FilesService.createUploadRecord(this.enterpriseCustomer, uploadRecord);\n            case 4:\n              file = _context3.sent;\n              $log.log('file uploaded', file);\n              this.uploadedRecord = file;\n              NotificationsService.success('PORTAL.ALERTS.BULK_ENROLLMENT.TOASTS.SUCCESS');\n              return _context3.abrupt(\"return\", this.completeTask());\n            case 9:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.completeTask = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var error, task;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              this.enterpriseCustomerTask.is_completed = true;\n              _context4.prev = 1;\n              _context4.next = 4;\n              return ECustomerTasksService.put(this.enterpriseCustomer.id, this.enterpriseCustomerTask);\n            case 4:\n              task = _context4.sent;\n              return _context4.abrupt(\"return\", $log.log('task completed', task));\n            case 8:\n              _context4.prev = 8;\n              _context4.t0 = _context4[\"catch\"](1);\n              error = _context4.t0;\n              return _context4.abrupt(\"return\", $log.log('task update error', error));\n            case 12:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this, [[1, 8]]);\n      }));\n      this.dismissTask = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {\n        var error, task;\n        return regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) switch (_context5.prev = _context5.next) {\n            case 0:\n              this.enterpriseCustomerTask.is_dismissed = true;\n              _context5.prev = 1;\n              _context5.next = 4;\n              return ECustomerTasksService.put(this.enterpriseCustomer.id, this.enterpriseCustomerTask);\n            case 4:\n              task = _context5.sent;\n              return _context5.abrupt(\"return\", $log.log('task dismissed', task));\n            case 8:\n              _context5.prev = 8;\n              _context5.t0 = _context5[\"catch\"](1);\n              error = _context5.t0;\n              return _context5.abrupt(\"return\", $log.log('task update error', error));\n            case 12:\n            case \"end\":\n              return _context5.stop();\n          }\n        }, _callee5, this, [[1, 8]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/e-tasks/e-task-upload/e-task-upload.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTaskSummary\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} summaryData the numbers that go into the dashboard\n   * @description\n   * Dashboard of customer\n   */\n  angular.module('enterprise').component('eTaskSummary', {\n    bindings: {\n      user: '<',\n      summaryData: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, NotificationsService, $filter, $rootScope, env) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTaskSummary');\n        $log.log('eTaskSummary component loaded');\n        $log.log('summaryData', this.summaryData);\n      };\n      this.explainActive = function () {\n        return $filter('translate')('PORTAL.ALERTS.SUMMARY_TASK.BODY.TOOLTIP');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-tasks/e-task-summary/e-task-summary.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTaskOutcomesDashboard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @description\n   * Dashboard of customer\n   */\n  angular.module('enterprise').component('eTaskOutcomesDashboard', {\n    bindings: {\n      user: '<',\n      outcomesData: '<',\n      enterpriseCustomer: '<',\n      features: '<',\n      offices: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, uuid4, NotificationsService, $filter, $rootScope, env, Restangular) {\n      var SECTION_SPECS, UNCHANGED_THRESHOLD, buildCard, buildMetric, buildSections, buildStatsHtml, directionForChange, formatDisplay, formatPValue, hasStudyData, prepareStudy, toCount, toDisplayUnit, toNumber;\n      UNCHANGED_THRESHOLD = 0.05;\n      SECTION_SPECS = [{\n        key: 'hypertension',\n        titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.HEADER',\n        cards: [{\n          titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.LEFT.HEADER',\n          nKey: 'num_rows_Systolic_bp_past180D',\n          metrics: [{\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.LEFT.SYS_CHANGE',\n            day0Key: 'Systolic_bp_0D_mean',\n            day180Key: 'Systolic_bp_180D_mean',\n            pKey: 'p_value_Systolic_bp_past180D',\n            unit: 'mmHg'\n          }, {\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.LEFT.DIAS_CHANGE',\n            day0Key: 'Diastolic_bp_0D_mean',\n            day180Key: 'Diastolic_bp_180D_mean',\n            pKey: 'p_value_Diastolic_bp_past180D',\n            unit: 'mmHg'\n          }]\n        }, {\n          titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.RIGHT.HEADER',\n          nKey: 'over_140_num_rows_Systolic_bp_past180D',\n          metrics: [{\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.LEFT.SYS_CHANGE',\n            day0Key: 'over_140_Systolic_bp_0D_mean',\n            day180Key: 'over_140_Systolic_bp_180D_mean',\n            pKey: 'over_140_p_value_Systolic_bp_past180D',\n            unit: 'mmHg'\n          }, {\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.HYPERTENSION.LEFT.DIAS_CHANGE',\n            day0Key: 'over_140_Diastolic_bp_0D_mean',\n            day180Key: 'over_140_Diastolic_bp_180D_mean',\n            pKey: 'over_140_p_value_Diastolic_bp_past180D',\n            unit: 'mmHg'\n          }]\n        }]\n      }, {\n        key: 'obesity',\n        titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.OBESITY.HEADER',\n        cards: [{\n          titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.OBESITY.LEFT.HEADER',\n          nKey: 'num_rows_wt_morethan_100_past180D',\n          metrics: [{\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.OBESITY.LEFT.CHANGE',\n            day0Key: 'wt_morethan_100_0D_mean',\n            day180Key: 'wt_morethan_100_180D_mean',\n            pKey: 'p_value_wt_morethan_100_past180D',\n            unit: 'lbs',\n            isWeight: true\n          }]\n        }, {\n          titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.OBESITY.RIGHT.HEADER',\n          nKey: 'num_rows_wt_morethan_130_past180D',\n          metrics: [{\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.OBESITY.LEFT.CHANGE',\n            day0Key: 'wt_morethan_130_0D_mean',\n            day180Key: 'wt_morethan_130_180D_mean',\n            pKey: 'p_value_wt_morethan_130_past180D',\n            unit: 'lbs',\n            isWeight: true\n          }]\n        }]\n      }, {\n        key: 'diabetes',\n        titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.DIABETES.HEADER',\n        cards: [{\n          titleKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.DIABETES.CARD_HEADER',\n          nKey: 'num_rows_Diabetic_patients_past180D',\n          metrics: [{\n            labelKey: 'PORTAL.ALERTS.OUTCOMES.SECTIONS.DIABETES.CHANGE',\n            day0Key: 'Diabetic_patients_0D_mean',\n            day180Key: 'Diabetic_patients_180D_mean',\n            pKey: 'p_value_Diabetic_patients_past180D',\n            unit: 'mg/dL'\n          }]\n        }]\n      }];\n      toNumber = function toNumber(value) {\n        var num;\n        if (value === null || value === void 0 || value === '' || value === '-') {\n          return null;\n        }\n        num = Number(value);\n        if (!isFinite(num)) {\n          return null;\n        }\n        return num;\n      };\n      toCount = function toCount(value) {\n        var num;\n        num = toNumber(value);\n        if (num == null) {\n          return 0;\n        }\n        return Math.round(num);\n      };\n      formatPValue = function formatPValue(value) {\n        var num;\n        num = toNumber(value);\n        if (num == null) {\n          return null;\n        }\n        if (num < 0.01) {\n          return '<0.01';\n        } else {\n          return $filter('number')(num, 2);\n        }\n      };\n      formatDisplay = function formatDisplay(value) {\n        return $filter('number')(value, 1);\n      };\n      toDisplayUnit = function toDisplayUnit(value, isWeight) {\n        var numeric;\n        numeric = toNumber(value);\n        if (numeric == null) {\n          return null;\n        }\n        if (isWeight) {\n          return $filter('convertWeight')(numeric, 'pounds');\n        } else {\n          return numeric;\n        }\n      };\n      directionForChange = function directionForChange(change) {\n        if (change > UNCHANGED_THRESHOLD) {\n          return 'improved';\n        } else if (change < -UNCHANGED_THRESHOLD) {\n          return 'worsened';\n        } else {\n          return 'unchanged';\n        }\n      };\n      buildMetric = function buildMetric(data, spec) {\n        var change, day0, day180, direction;\n        day0 = toDisplayUnit(data[spec.day0Key], spec.isWeight);\n        day180 = toDisplayUnit(data[spec.day180Key], spec.isWeight);\n        if (!(day0 != null && day180 != null)) {\n          return null;\n        }\n        change = day0 - day180;\n        direction = directionForChange(change);\n        return {\n          labelKey: spec.labelKey,\n          day0: formatDisplay(day0),\n          day180: formatDisplay(day180),\n          change: formatDisplay(Math.abs(change)),\n          unit: spec.unit,\n          direction: direction,\n          statusKey: 'PORTAL.ALERTS.OUTCOMES.STATUS.' + direction.toUpperCase(),\n          changeLabelKey: 'PORTAL.ALERTS.OUTCOMES.CHANGE.' + direction.toUpperCase(),\n          pValue: formatPValue(data[spec.pKey])\n        };\n      };\n      buildStatsHtml = function buildStatsHtml(metrics, n) {\n        var day0Label, day180Label, metricBlocks, pLabel, sampleLabel, title;\n        title = $filter('translate')('PORTAL.ALERTS.OUTCOMES.STATISTICAL_DETAILS');\n        day0Label = $filter('translate')('PORTAL.ALERTS.OUTCOMES.DAY_0');\n        day180Label = $filter('translate')('PORTAL.ALERTS.OUTCOMES.DAY_180');\n        pLabel = $filter('translate')('PORTAL.ALERTS.OUTCOMES.P_VALUE');\n        sampleLabel = n === 1 ? $filter('translate')('PORTAL.ALERTS.OUTCOMES.BASED_ON_ONE') : $filter('translate')('PORTAL.ALERTS.OUTCOMES.BASED_ON', {\n          count: n\n        });\n        metricBlocks = metrics.map(function (metric) {\n          var label, pDisplay;\n          label = $filter('translate')(metric.labelKey);\n          pDisplay = metric.pValue || '—';\n          return \"<div class=\\\"outcomes-stats-metric\\\">\\n  <div class=\\\"outcomes-stats-metric-label\\\">\".concat(label, \"</div>\\n  <div class=\\\"outcomes-stats-grid\\\">\\n    <div class=\\\"outcomes-stats-cell\\\">\\n      <div class=\\\"outcomes-stats-cell-label\\\">\").concat(day0Label, \"</div>\\n      <div class=\\\"outcomes-stats-cell-value\\\">\").concat(metric.day0, \" <span>\").concat(metric.unit, \"</span></div>\\n    </div>\\n    <div class=\\\"outcomes-stats-cell\\\">\\n      <div class=\\\"outcomes-stats-cell-label\\\">\").concat(day180Label, \"</div>\\n      <div class=\\\"outcomes-stats-cell-value\\\">\").concat(metric.day180, \" <span>\").concat(metric.unit, \"</span></div>\\n    </div>\\n    <div class=\\\"outcomes-stats-cell\\\">\\n      <div class=\\\"outcomes-stats-cell-label\\\">\").concat(pLabel, \"</div>\\n      <div class=\\\"outcomes-stats-cell-value\\\">\").concat(pDisplay, \"</div>\\n    </div>\\n  </div>\\n</div>\");\n        });\n        return \"<div class=\\\"outcomes-stats-panel\\\">\\n  <div class=\\\"outcomes-stats-header\\\">\\n    <div class=\\\"outcomes-stats-title\\\">\".concat(title, \"</div>\\n    <div class=\\\"outcomes-stats-sample\\\">\").concat(sampleLabel, \"</div>\\n  </div>\\n  \").concat(metricBlocks.join(''), \"\\n</div>\");\n      };\n      buildCard = function buildCard(data, spec) {\n        var hasData, metrics, n;\n        n = toCount(data[spec.nKey]);\n        metrics = spec.metrics.map(function (metricSpec) {\n          return buildMetric(data, metricSpec);\n        }).filter(function (metric) {\n          return metric != null;\n        });\n        hasData = n > 0 && metrics.length > 0;\n        return {\n          titleKey: spec.titleKey,\n          n: n,\n          hasData: hasData,\n          metrics: hasData ? metrics : [],\n          statsHtml: hasData ? buildStatsHtml(metrics, n) : ''\n        };\n      };\n      buildSections = function buildSections(study) {\n        var data;\n        data = (study != null ? study.dashboard_data : void 0) || {};\n        return SECTION_SPECS.map(function (sectionSpec) {\n          return {\n            key: sectionSpec.key,\n            titleKey: sectionSpec.titleKey,\n            cards: sectionSpec.cards.map(function (cardSpec) {\n              return buildCard(data, cardSpec);\n            })\n          };\n        });\n      };\n      prepareStudy = function prepareStudy(study) {\n        var plain;\n        if (!study) {\n          return null;\n        }\n        plain = Restangular.stripRestangular ? Restangular.stripRestangular(study) : angular.copy(study);\n        return {\n          created_at: plain.created_at,\n          office_id: plain.office_id,\n          dashboard_data: angular.copy(plain.dashboard_data) || {}\n        };\n      };\n      hasStudyData = function hasStudyData(study) {\n        var ref;\n        return toNumber(study != null ? (ref = study.dashboard_data) != null ? ref.Systolic_bp_0D_mean : void 0 : void 0) != null;\n      };\n      this.setActiveStudy = function (study) {\n        this.activeStudy = study || {\n          dashboard_data: {}\n        };\n        this.showMetrics = hasStudyData(this.activeStudy);\n        this.outcomeSections = this.showMetrics ? buildSections(this.activeStudy) : [];\n      };\n      this.$onInit = function () {\n        var loggedInOfficeId, now, officeCount, officeRow, practiceRow, ref, studies;\n        $log = $log.getInstance('eTaskOutcomesDashboard');\n        $log.log('eTaskOutcomesDashboard component loaded');\n        $log.log('outcomesData', this.outcomesData);\n        studies = this.outcomesData || [];\n        loggedInOfficeId = (ref = this.user) != null ? ref.logged_in_office_id : void 0;\n        officeCount = (this.offices || []).length;\n        practiceRow = _.find(studies, function (study) {\n          return !study.office_id;\n        });\n        officeRow = loggedInOfficeId ? _.find(studies, function (study) {\n          return study.office_id === loggedInOfficeId;\n        }) : null;\n        this.practiceStudy = prepareStudy(practiceRow);\n        this.officeStudy = prepareStudy(officeRow);\n        // PP-7686 / PP-7633: show Practice + Office tabs for multi-office practices,\n        // independent of whether an office-scoped outcomes_studies row exists yet.\n        this.showOfficeTab = officeCount > 1;\n        this.activeTab = 'practice';\n        now = luxon.DateTime.local().toString();\n        this.translationData = {\n          as_of_date: $filter('date')(now, 'shortDate')\n        };\n        this.setActiveStudy(this.practiceStudy);\n      };\n      this.selectPracticeTab = function () {\n        this.activeTab = 'practice';\n        return this.setActiveStudy(this.practiceStudy);\n      };\n      this.selectOfficeTab = function () {\n        this.activeTab = 'office';\n        return this.setActiveStudy(this.officeStudy);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-tasks/e-task-outcomes-dashboard/e-task-outcomes-dashboard.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTaskCcmSummary\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} ccmSummaryData the numbers that go into the dashboard\n   * @description\n   * Dashboard of customer\n   */\n  angular.module('enterprise').component('eTaskCcmSummary', {\n    bindings: {\n      user: '<',\n      ccmSummaryData: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, $filter, $rootScope, env) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTaskCcmSummary');\n        $log.log('eTaskCcmSummary component loaded');\n        $log.log('ccmSummaryData', this.ccmSummaryData);\n      };\n      this.explainCCMActive = function () {\n        return $filter('translate')('PORTAL.ALERTS.SUMMARY_TASK.BODY.CCM.TOOLTIP');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-tasks/e-task-ccm-summary/e-task-ccm-summary.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eUsersCard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} eUserProfiles patients\n   * @param {object} enterpriseCustomer the customer (practice)\n   * @param {object} deviceTypes all device types\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @param {object} patientDashboard dashboard info for patients list\n   * @description\n   * Displays enterprise users list\n   */\n  var indexOf = [].indexOf;\n  angular.module('enterprise').component('eUsersCard', {\n    bindings: {\n      user: '<',\n      eUserProfiles: '<',\n      enterpriseCustomer: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      patientDashboard: '<',\n      providers: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(env, $log, $state, $rootScope, $stateParams, $filter, PER_PAGE, EUserProfilesService, EUserProfileFilterService, RPMTimes, StandardPagination, DateOfBirthConfigService, LastReadingConfigService, NotificationsService, ObservationReportService, Icd10Service, IntercomService, uuid4, $window, ALLOWED_ROLES_BY, GroupRoles, PatientStatuses, DeviceTypeCategories, GraphDataService, UserCard, TimesheetService) {\n      var _this2 = this;\n      var patientReviewedTemplate;\n      patientReviewedTemplate = UserCard.MARK_AS_REVIEWED;\n      this.patientReviewedDisclaimer = patientReviewedTemplate;\n      this.ptMarkedAsReviewed = false;\n      this.$onInit = function () {\n        var currentOfficeId, filter, groupMembershipsForLoggedInOffice, ref, ref1, ref2, ref3;\n        $log = $log.getInstance('eUsersCard');\n        $log.log('eUsersCard component loaded');\n        $log.log('this.deviceTypes', this.deviceTypes);\n        $log.log('this.eUserProfiles', this.eUserProfiles);\n        this.observationReportService = ObservationReportService; // referenced in view\n        this.DeviceTypeCategories = DeviceTypeCategories;\n        this.monthYear = luxon.DateTime.local().startOf(\"month\").toFormat(\"MMM yyyy\");\n        this.rpmTimesOptions = RPMTimes;\n        $log.log('this.eUserProfiles.headers(\"X-Total-Count\")', this.eUserProfiles.headers('X-Total-Count'));\n        this.patientsCount = this.eUserProfiles.headers('X-Total-Count');\n        this.patientDashboard.total_patient_count = this.eUserProfiles.headers('X-Total-Count');\n        this.patientDashboard.real_patient_count = this.eUserProfiles.headers('X-Real-Count');\n        this.patientDashboard.fake_patient_count = this.eUserProfiles.headers('X-Fake-Count');\n        this.patientDashboard.rpm_setup_count = this.eUserProfiles.headers('X-RPM-Setup-Count');\n        this.hasFilters = EUserProfileFilterService.hasFilters;\n        this.patients = this.eUserProfiles.data.data;\n        // ADA/ADH Colors\n        this.primaryProviderOptions = _.chain(this.providers).filter(function (provider) {\n          var ref, ref1, ref2;\n          return ref = (ref1 = provider.user_profile_practice_roles[0]) != null ? (ref2 = ref1.practice_role) != null ? ref2.key_name : void 0 : void 0, indexOf.call(ALLOWED_ROLES_BY.KEY_NAME, ref) >= 0;\n        }).map(function (provider) {\n          var ref, ref1;\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last, \" - \").concat((ref = provider.user_profile_practice_roles[0]) != null ? (ref1 = ref.practice_role) != null ? ref1.name : void 0 : void 0),\n            value: provider.id\n          };\n        }).value();\n        this.primaryProviderOptions.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.primaryProviderQuery = null;\n        this.itemsPerPage = PER_PAGE.PATIENTS;\n        this.pageNumber = $stateParams.patient_page || 1;\n        this.sortDir = 'DESC';\n        this.sortField = 'latest_device_reading';\n        this.isExportCollapsed = true;\n        this.isDaysOfReadingsCollapsed = true;\n        this.isDaysRemainingCollapsed = true;\n        this.countOfDevicesByType = function (allUserDevices, deviceCategory) {\n          var countOfCurrentDeviceType;\n          countOfCurrentDeviceType = _.filter(allUserDevices, function (d) {\n            return d.device_type.category === deviceCategory;\n          });\n          return countOfCurrentDeviceType.length;\n        };\n        this.sort = [{\n          field: 'unread',\n          dir: 'DESC'\n        }, {\n          field: 'btr',\n          dir: 'DESC'\n        }, {\n          field: '$latest_device_reading.reading_taken_ts$',\n          dir: 'DESC'\n        }];\n        this.sortOptions = {\n          threshold: [{\n            separator: 'Review Status'\n          }, {\n            label: 'Unread First',\n            sortDir: 'DESC',\n            sortField: 'unread',\n            isChecked: 1\n          }, {\n            label: 'Unread Last',\n            sortDir: 'ASC',\n            sortField: 'unread'\n          }, {\n            separator: 'Threshold'\n          }, {\n            label: 'Beyond Threshold First',\n            sortDir: 'DESC',\n            sortField: 'btr',\n            isChecked: 2\n          }, {\n            label: 'Beyond Threshold Last',\n            sortDir: 'ASC',\n            sortField: 'btr'\n          }, {\n            separator: 'Reading Value'\n          }, {\n            label: 'Systolic BP Low > Hi',\n            sortDir: 'ASC',\n            sortField: 'sys_bp'\n          }, {\n            label: 'Systolic BP Hi > Low',\n            sortDir: 'DESC',\n            sortField: 'sys_bp'\n          }, {\n            label: 'Diastolic BP Low > Hi',\n            sortDir: 'ASC',\n            sortField: 'dia_bp'\n          }, {\n            label: 'Diastolic BP Hi > Low',\n            sortDir: 'DESC',\n            sortField: 'dia_bp'\n          }, {\n            label: 'Glucose Low > Hi',\n            sortDir: 'ASC',\n            sortField: 'bg'\n          }, {\n            label: 'Glucose Hi > Low',\n            sortDir: 'DESC',\n            sortField: 'bg'\n          }, {\n            label: 'Weight Low > Hi',\n            sortDir: 'ASC',\n            sortField: 'w'\n          }, {\n            label: 'Weight Hi > Low',\n            sortDir: 'DESC',\n            sortField: 'w'\n          }, {\n            label: 'SPO₂ Low > Hi',\n            sortDir: 'ASC',\n            sortField: 'spo'\n          }, {\n            label: 'SPO₂ Hi > Low',\n            sortDir: 'DESC',\n            sortField: 'spo'\n          }, {\n            separator: 'Reading Time'\n          }, {\n            label: 'Most recent > oldest',\n            sortDir: 'DESC',\n            sortField: '$latest_device_reading.reading_taken_ts$',\n            isChecked: 3\n          }, {\n            label: 'Oldest > most recent',\n            sortDir: 'ASC',\n            sortField: '$latest_device_reading.reading_taken_ts$'\n          }],\n          last_ava_alert: [{\n            label: 'Most recently reminded via SMS first',\n            sortDir: 'DESC',\n            sortField: 'last_ava_alert'\n          }, {\n            label: 'Most recently reminded via SMS last',\n            sortDir: 'ASC',\n            sortField: 'last_ava_alert'\n          }],\n          name_last: [{\n            label: 'A to Z (last name)',\n            sortDir: 'ASC',\n            sortField: 'name_last'\n          }, {\n            label: 'Z to A (last name)',\n            sortDir: 'DESC',\n            sortField: 'name_last'\n          }],\n          last_reviewed: [{\n            label: 'Most recent first',\n            sortDir: 'DESC',\n            sortField: 'rpm_last_reviewed'\n          }, {\n            label: 'Most recent last',\n            sortDir: 'ASC',\n            sortField: 'rpm_last_reviewed'\n          }],\n          call_log: [{\n            label: 'Most recent first',\n            sortDir: 'DESC',\n            sortField: 'call_log.created_at'\n          }, {\n            label: 'Most recent last',\n            sortDir: 'ASC',\n            sortField: 'call_log.created_at'\n          }],\n          timesheet_sum: [{\n            label: '0 to 60 RPM time',\n            sortDir: 'ASC',\n            sortField: 'timesheet_sum'\n          }, {\n            label: '60 to 0 RPM time',\n            sortDir: 'DESC',\n            sortField: 'timesheet_sum'\n          }],\n          patient_services_count: [{\n            label: 'CCM last',\n            sortDir: 'ASC',\n            sortField: 'patient_services_count'\n          }, {\n            label: 'CCM first',\n            sortDir: 'DESC',\n            sortField: 'patient_services_count'\n          }]\n        };\n        this.deviceReadingSortFields = ['sys_bp', 'dia_bp', 'bg', 'w', 'spo', '$latest_device_reading.reading_taken_ts$'];\n        this.searchQueryFilter = null;\n        this.rpmTimeFilter = null;\n        this.rpmTime = null;\n        this.queryString = {};\n        this.latestReading = null;\n        this.latestReadingOptions = LastReadingConfigService.filterOptions;\n        this.showBtrAlert = function (reading, userProfile) {\n          var earlierReadingWasBeyondThreshold, hasNotBeenReviewedSinceBtr;\n          hasNotBeenReviewedSinceBtr = reading.last_beyond_threshold_reading_ts && reading.last_beyond_threshold_reading_ts > userProfile.patient_reports[0].updated_at;\n          earlierReadingWasBeyondThreshold = reading.reading_taken_ts !== reading.last_beyond_threshold_reading_ts;\n          // If there's a beyond threshold reading that has not been reviewed (obs report hasn't been updated since btr)\n          // then we need to show this alert.  The only exception to this is when we are using the next graph version\n          // and the BTR reading is actually the current reading -- in that case we don't show an alert.\n          if (hasNotBeenReviewedSinceBtr) {\n            return earlierReadingWasBeyondThreshold;\n          } else {\n            return false;\n          }\n        };\n        this.ccmEnabled = (ref = this.features) != null ? (ref1 = ref.ccm) != null ? ref1.is_enabled : void 0 : void 0;\n        // TODO: refactor this based on device type category - we shouldn't assume this string will always perfectly match\n        this.deviceTypeOptions = _.map(this.deviceTypes.data.data.filter(function (d) {\n          return d.category !== DeviceTypeCategories.THERMOMETER;\n        }), function (d) {\n          var name;\n          name = function () {\n            switch (d.category) {\n              case DeviceTypeCategories.BP_CUFF:\n                return 'Blood Pressure Cuff';\n              case DeviceTypeCategories.GLUCOMETER:\n                return 'Glucometer';\n              case DeviceTypeCategories.SCALE:\n                return 'Scale';\n              case DeviceTypeCategories.PULSE_OXIMETER:\n                return 'Pulse Oximeter';\n              case DeviceTypeCategories.AMBIENT_CHF:\n                return 'Ambient CHF';\n              case DeviceTypeCategories.THERMOMETER:\n                return 'T';\n              default:\n                return d.description;\n            }\n          }();\n          return {\n            label: name,\n            value: {\n              eq: d.id\n            }\n          };\n        });\n        this.groupDropdownText = {\n          dynamicButtonTextSuffix: \"Selected\"\n        };\n        this.groupDropdownSettings = {\n          displayProp: 'name',\n          selectedToTop: true,\n          scrollableHeight: 'inherit',\n          scrollable: true,\n          checkBoxes: true,\n          showCheckAll: false,\n          showUncheckAll: false\n        };\n        //enableSearch: true, #As the group list grows this feature might come in handy, leaving here as reminder.\n        this.groupOptionsModel = [];\n        currentOfficeId = this.user.logged_in_office_id;\n        groupMembershipsForLoggedInOffice = _.filter(this.user.user_profile.group_memberships, function (m) {\n          return m.group.office_id === currentOfficeId;\n        });\n        this.groupOptions = _.map(groupMembershipsForLoggedInOffice, function (m) {\n          return {\n            id: m.id,\n            group_id: m.group.id,\n            name: m.group.name,\n            role: m.group_role.role\n          };\n        });\n        this.groupOptions = _.filter(this.groupOptions, {\n          role: GroupRoles.CARE_MANAGER\n        });\n        this.noGroupsOption = {\n          id: 'NO_GROUPS',\n          group_id: 'NO_GROUPS',\n          name: 'No groups'\n        };\n        this.groupOptions.push(this.noGroupsOption);\n        if (_.isEmpty(this.groupOptions)) {\n          this.groupDropdownText.buttonDefaultText = \"Join in settings\";\n          this.groupDropdownDisabled = true;\n        }\n        this.deviceTypeModel = _.filter(this.deviceTypeOptions, function (o) {\n          var ref2;\n          return (ref2 = o.label) === 'Blood Pressure Cuff' || ref2 === 'Glucometer' || ref2 === 'Scale' || ref2 === 'Pulse Oximeter' || ref2 === 'Ambient CHF';\n        });\n        this.deviceTypeSelectExtraSettings = {\n          checkBoxes: true,\n          showCheckAll: false,\n          showUncheckAll: false,\n          smartButtonMaxItems: 3,\n          smartButtonTextConverter: function smartButtonTextConverter(d) {\n            switch (d) {\n              case 'Blood Pressure Cuff':\n                return 'BP';\n              case 'Glucometer':\n                return 'G';\n              case 'Scale':\n                return 'S';\n              case 'Pulse Oximeter':\n                return 'P0';\n              case 'Ambient CHF':\n                return 'CHF';\n              case 'Dual-mode infrared thermometer':\n                return 'T';\n              default:\n                return '';\n            }\n          }\n        };\n        this.readingAcuity = null;\n        this.readingAcuityOptions = [{\n          label: 'All',\n          value: null\n        }, {\n          label: 'Beyond threshold',\n          value: 'ABOVE'\n        }, {\n          label: 'Not beyond threshold',\n          value: 'BELOW'\n        }];\n        this.adherenceTrend = null;\n        this.adherenceOptions = [{\n          label: 'All',\n          value: null\n        }, {\n          label: 'Above pacing target',\n          value: 'UP'\n        }, {\n          label: 'Near pacing target',\n          value: 'NEU'\n        }, {\n          label: 'Below pacing target',\n          value: 'DOWN'\n        }];\n        this.diagnosis_codes = [];\n        this.spokenWithPatientOptions = [{\n          label: 'Any',\n          value: null\n        }, {\n          label: 'No',\n          value: false\n        }, {\n          label: 'Yes',\n          value: true\n        }];\n        this.spoken_with_patient = null;\n        this.spoken_with_patient_filter_enabled = (ref2 = this.features) != null ? (ref3 = ref2.spoken_to_patient_filter) != null ? ref3.is_enabled : void 0 : void 0;\n        this.patientServicesCountOptions = [{\n          label: 'All',\n          value: null\n        }, {\n          label: 'RPM only',\n          value: '1'\n        }, {\n          label: 'RPM and CCM',\n          value: '2'\n        }];\n        this.patient_services_count = null;\n        this.optionsForPagination = StandardPagination;\n        this.initDatePicker();\n        // PP-1478 Disable Patient Readings for now\n        //this.initLastReadingsPicker()\n        //this.createLastReadingToggle()\n        this.calcHeartrateReadings(this.eUserProfiles);\n        this.calcDorPacingBars(this.patients);\n        //if we find a filter in the service it was INTENTIONALLY preserved\n        // send the user back to the filtered view\n        filter = EUserProfileFilterService.getFilter();\n        if (filter) {\n          this.queryString = filter;\n          if (filter.current_period_timesheet_range) {\n            this.rpmTime = filter.current_period_timesheet_range;\n          }\n          if (filter.date_of_birth) {\n            this.datePicker.date.startDate = luxon.DateTime.fromJSDate(filter.date_of_birth.during, 'YYYY-MM-DD');\n            this.datePicker.date.endDate = luxon.DateTime.fromJSDate(filter.date_of_birth.and, 'YYYY-MM-DD');\n          }\n          if (filter['$providers.id$']) {\n            this.primaryProviderQuery = filter['$providers.id$'];\n          }\n          if (filter.query) {\n            this.query = filter.query;\n          }\n          if (filter.device_type_ids) {\n            this.deviceTypeModel = _.filter(this.deviceTypeOptions, function (o) {\n              var ref4;\n              return ref4 = o.value.eq, indexOf.call(filter.device_type_ids.split(','), ref4) >= 0;\n            });\n          }\n          if (filter.group_ids) {\n            this.groupOptionsModel = _.filter(this.groupOptions, function (o) {\n              var ref4;\n              return ref4 = o.group_id, indexOf.call(filter.group_ids.split(','), ref4) >= 0;\n            });\n          }\n          if (filter.reading_acuity) {\n            this.readingAcuity = filter.reading_acuity;\n          }\n          if (filter.dx_codes) {\n            this.diagnosis_codes = _.map(filter.dx_codes.split(','), function (c) {\n              return {\n                code: c\n              };\n            });\n          }\n          if (filter['$user_profile.deactivated_at$']) {\n            this.activeStatus = filter['$user_profile.deactivated_at$'];\n          }\n          if (filter['$latest_device_readings.reading_taken_ts$']) {\n            this.latestReading = filter['$latest_device_readings.reading_taken_ts$'];\n          }\n          if (filter.patient_services_count) {\n            this.patient_services_count = filter.patient_services_count;\n          }\n          if ('spoken_with_patient' in filter) {\n            this.spoken_with_patient = filter.spoken_with_patient;\n          }\n          if (filter['$dor_pacing_types.filter_key$']) {\n            this.adherenceTrend = filter['$dor_pacing_types.filter_key$'];\n          }\n          if (filter._sort) {\n            this._sort = _.map(filter._sort.split('|'), function (s) {\n              return JSON.parse(s);\n            });\n          }\n          // also set the paging and sorting\n          this._page = filter._page;\n          this._perPage = filter._perPage;\n        }\n        this.showSpinner = false;\n        return this.popoverIsOpen = {};\n      };\n      this.markAsReviewed = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee($event, userProfile) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $event.stopPropagation();\n                this.ptMarkedAsReviewed = true;\n                // Close only the popover that was marked as reviewed\n                this.popoverIsOpen = {};\n                this.patientUserProfileId = userProfile.provider_patient_authorization.patient_user_profile_id;\n                this.providerUserProfileId = userProfile.provider_patient_authorization.provider_user_profile_id;\n                this.observationReportId = userProfile.patient_reports[0].id;\n                this.timesheet = {\n                  observation_report_id: this.observationReportId,\n                  submitted_by_user_profile_id: this.providerUserProfileId,\n                  duration_secs: 60\n                };\n                _context.prev = 7;\n                _context.next = 10;\n                return TimesheetService.post(this.timesheet);\n              case 10:\n                _context.next = 12;\n                return ObservationReportService.postObservationReportNotes(this.enterpriseCustomer.id, this.observationReportId, '<p>' + $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.UNREAD.REVIEWED_NOTES', {\n                  timestamp: luxon.DateTime.local().toFormat('M/d HHmm'),\n                  initials: this.user.user_profile.name_first.charAt(0).toUpperCase() + this.user.user_profile.name_last.charAt(0).toUpperCase()\n                }) + '</p>');\n              case 12:\n                NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.UNREAD.REVIEWED_TOAST'));\n                // Re-sort (clear blue dot)\n                return _context.abrupt(\"return\", this.setSort(this.sort[0].field, this.sort[0].dir, true, true));\n              case 16:\n                _context.prev = 16;\n                _context.t0 = _context[\"catch\"](7);\n                error = _context.t0;\n                $log.error('Error posting timesheet:', error);\n                return _context.abrupt(\"return\", NotificationsService.error('Error occurred while noting the readings.'));\n              case 21:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[7, 16]]);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.openPopover = function ($index) {\n        var _this = this;\n        Object.keys(this.popoverIsOpen).forEach(function (key) {\n          return _this.popoverIsOpen[key] = false;\n        });\n        // Open only the popover corresponding to the hovered blue dot without this all popovers will open.\n        return this.popoverIsOpen[$index] = true;\n      };\n      this.createLastReadingToggle = function () {\n        var toggleTemplate;\n        toggleTemplate = \"  <div class=\\\"inserted-content\\\">\\n  <span class=\\\"choose-condition\\\">\".concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.CHOOSE_CONDITION'), \"</span>\\n  <label class=\\\"toggleSwitch nolabel\\\" onclick=\\\"\\\">\\n    <input type=\\\"checkbox\\\"\\n        name=\\\"last-reading\\\"\\n        id=\\\"readings-since\\\"\\n     />\\n    <a></a>\\n    <span>\\n      <span class=\\\"left-span\\\">\").concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.READINGS_SINCE'), \"</span>\\n      <span class=\\\"right-span\\\">\").concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NO_READINGS_SINCE'), \"</span>\\n    </span>\\n  </label>\\n</div><br/>\");\n        return angular.element(document).ready(function () {\n          var doc;\n          doc = document.querySelector('div.last-reading');\n          return doc.insertAdjacentHTML('afterbegin', toggleTemplate);\n        });\n      };\n      /*\n       parses the selected value, creates a payload object based on its properties, and calls onChange with the new payload.\n      */\n      this.onCustomChange = function (param, selectedItem) {\n        var e, newPayload, parsedValue, valueToUse;\n        valueToUse = '';\n        try {\n          parsedValue = selectedItem.model.value ? JSON.parse(selectedItem.model.value) : null;\n          if (parsedValue != null && parsedValue.lte != null) {\n            valueToUse = {\n              \"lte\": parsedValue.lte\n            };\n          } else {\n            valueToUse = selectedItem.model.value;\n          }\n        } catch (error1) {\n          e = error1;\n          valueToUse = selectedItem.model.value;\n        }\n        // Now we're sending an object that has the same format as the expected payload\n        newPayload = {\n          model: valueToUse\n        };\n        return this.onChange(param, newPayload);\n      };\n      this.onChange = function (property, payload) {\n        var newQueryString;\n        $log.log('onChange payload', property, payload);\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sort: this.sort,\n          _service: 'RPM',\n          provider_user_profile_id: this.user.user_profile.id,\n          '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n        };\n        if (property === 'spoken_with_patient') {\n          delete this.queryString['spoken_with_patient'];\n        }\n        // Assign new filter property.\n        // RPM time filter can have a valid value of 0, so make 0 a truthy value in this case and pass through.\n        if (payload.model !== null && payload.model !== '') {\n          $log.log('payload.model', payload.model);\n          newQueryString[property] = payload.model;\n        }\n        // Remove filter property if it exists in the query string and if payload value is falsy\n        if (this.queryString[property] && (payload.model === null || payload.model === '')) {\n          delete this.queryString[property];\n        }\n        // Allows for multiple filters at once.\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        EUserProfileFilterService.setFilter(this.queryString);\n        return this.fetchPatientsAndUpdateUI(1);\n      };\n      // DRY method for setting filters.\n      this.patientReportingFilters = function (name, filterName, filterValue) {\n        if (name !== null) {\n          return this.onChange(filterName, {\n            model: filterValue\n          });\n        }\n      };\n      this.calcHeartrateReadings = function (patients) {\n        return _.forEach(patients.data.data, function (p) {\n          var heartrateDevices;\n          heartrateDevices = ['BP_CUFF', 'PULSE_OXIMETER'];\n          // redice to items with a pulse quality\n          p.heartrateDevices = _.filter(p.devices, function (d) {\n            var ref;\n            return ref = d.device_type.category, indexOf.call(heartrateDevices, ref) >= 0;\n          });\n          // Get the latest one, put it in an array\n          if (p.heartrateDevices.length > 0) {\n            return p.heartrateDevices = [_.maxBy(p.heartrateDevices, function (d) {\n              var ref;\n              return (ref = d.latest_device_readings[0]) != null ? ref.reading_taken_ts : void 0;\n            }) || '1970-01-01'];\n          }\n        });\n      };\n      // Precompute the DoR pacing bar once per patient when data loads (and on\n      // filter/paging changes, which replace this.patients with fresh data).\n      // This keeps the template binding a stable object so ng-repeat/ng-if do not\n      // rebuild it every digest (PP-7626 infinite $digest regression).\n      this.calcDorPacingBars = function (patients) {\n        return _.forEach(patients, function (p) {\n          return p.dorBar = _this2.getDorPacingBar(p);\n        });\n      };\n      // Clear the filter fields back to default values — one request, not one per field.\n      // Calling onChange per field previously fired many competing list+idsOnly pairs\n      // (list cancelled sequentially; idsOnly requests stacked) and made clear-filters\n      // a common timeout trigger on large practices.\n      this.clearPatientReportingFilters = function () {\n        this.spoken_with_patient = null;\n        this.query = null;\n        this.primaryProviderQuery = null;\n        this.deviceTypeModel = _.filter(this.deviceTypeOptions, function (o) {\n          var ref;\n          return (ref = o.label) === 'Blood Pressure Cuff' || ref === 'Glucometer' || ref === 'Scale' || ref === 'Pulse Oximeter' || ref === 'Ambient CHF';\n        });\n        this.readingAcuity = null;\n        this.latestReading = null;\n        this.adherenceTrend = null;\n        this.activeStatus = PatientStatuses.ACTIVE;\n        this.rpmTime = null;\n        this.groupOptionsModel = [];\n        this.diagnosis_codes = [];\n        this.patient_services_count = null;\n        this.dorLow = null;\n        this.dorHigh = null;\n        this.drdorLow = null;\n        this.drdorHigh = null;\n        this.pageNumber = 1;\n        this.queryString = {\n          _page: 1,\n          _perPage: this.itemsPerPage,\n          _sort: this.sort,\n          _service: 'RPM',\n          provider_user_profile_id: this.user.user_profile.id,\n          '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id\n        };\n        EUserProfileFilterService.setFilter(this.queryString);\n        $rootScope.$broadcast('patientReporting:filtersCleared');\n        return this.fetchPatientsAndUpdateUI(1);\n      };\n      this.getPDF = function (patientUserProfile) {\n        return ObservationReportService.getPDF(this.currentReportingPeriod, this.enterpriseCustomer.id, patientUserProfile, this.user.user_profile.timezone);\n      };\n      this.download = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(useFilters) {\n          var cacheBuster, currentFilters, downloadRequest, download_data, error, filters;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.showSpinner = true;\n                cacheBuster = uuid4.generate();\n                currentFilters = angular.copy(EUserProfileFilterService.getFilter() || {});\n                filters = useFilters ? angular.copy(currentFilters) : {};\n                filters = Object.assign(filters, {\n                  _cacheBuster: cacheBuster,\n                  provider_user_profile_id: this.user.user_profile.id,\n                  '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id,\n                  _packageForDownload: true\n                });\n                _context2.prev = 5;\n                IntercomService.trackEvent(env.intercom.events.charge_csv_downloaded);\n                downloadRequest = EUserProfilesService.getAllPatients(this.enterpriseCustomer.id, filters);\n                EUserProfileFilterService.setFilter(currentFilters);\n                this.queryString = currentFilters;\n                _context2.next = 12;\n                return downloadRequest;\n              case 12:\n                download_data = _context2.sent;\n                if (!download_data.url) {\n                  _context2.next = 17;\n                  break;\n                }\n                return _context2.abrupt(\"return\", $window.location.href = download_data.url);\n              case 17:\n                return _context2.abrupt(\"return\", NotificationsService.error('No data'));\n              case 18:\n                _context2.next = 25;\n                break;\n              case 20:\n                _context2.prev = 20;\n                _context2.t0 = _context2[\"catch\"](5);\n                error = _context2.t0;\n                $log.log('error', error);\n                return _context2.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage || error.data.data));\n              case 25:\n                _context2.prev = 25;\n                EUserProfileFilterService.setFilter(currentFilters);\n                this.queryString = currentFilters;\n                this.isExportCollapsed = true;\n                this.showSpinner = false;\n                return _context2.finish(25);\n              case 31:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[5, 20, 25, 31]]);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.initDatePicker = function () {\n        var _this3 = this;\n        var datePickerEventHandler, jsEndDate, jsStartDate;\n        jsStartDate = DateOfBirthConfigService.startDateDOB.toJSDate();\n        jsEndDate = DateOfBirthConfigService.endDateDOB.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        datePickerEventHandler = {\n          'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n            var payload;\n            $log.log('applying date range', event, picker, _this3.datePicker.date);\n            payload = {\n              model: {\n                'during': _this3.datePicker.date.startDate.local().toFormat('YYYY-MM-DD'),\n                'and': _this3.datePicker.date.endDate.local().toFormat('YYYY-MM-DD')\n              }\n            };\n            return _this3.onChange('date_of_birth', payload);\n          }\n        };\n        this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: DateOfBirthConfigService.setupOptions()\n        };\n        return this.datePicker.options.eventHandlers = datePickerEventHandler;\n      };\n      this.formatReadingDate = function (text, start, end) {\n        start = luxon.DateTime.fromJSDate(start).toFormat('M/D/YY');\n        end = luxon.DateTime.fromJSDate(end).toFormat('M/D/YY');\n        if (start === end) {\n          return text + ' since ' + start;\n        } else {\n          return text + ' between ' + start + '-' + end;\n        }\n      };\n      this.initLastReadingsPicker = function () {\n        var _this4 = this;\n        var jsEndDate, jsStartDate, lastReadingPickerCancelHandler, lastReadingPickerEventHandler;\n        jsStartDate = LastReadingConfigService.startDate.toJSDate();\n        jsEndDate = LastReadingConfigService.endDate.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        lastReadingPickerCancelHandler = function lastReadingPickerCancelHandler(event, picker) {\n          $log.log('cancelling date range', event, picker, _this4.lastReadingPicker.date);\n          _this4.lastReadingPicker.date = '';\n          return _this4.onChange('$latest_device_readings.reading_taken_ts$', '');\n        };\n        lastReadingPickerEventHandler = function lastReadingPickerEventHandler(event, picker) {\n          var doc, end, payload, start;\n          $log.log('applying date range', event, picker, _this4.lastReadingPicker.date);\n          start = luxon.DateTime.fromJSDate(_this4.lastReadingPicker.date.startDate).toFormat('M/D/YY');\n          end = luxon.DateTime.fromJSDate(_this4.lastReadingPicker.date.endDate).toFormat('M/D/YY');\n          doc = document.querySelector('#readings-since');\n          if (doc.checked === false) {\n            if (start !== end) {\n              payload = {\n                model: {\n                  'between': _this4.lastReadingPicker.date.startDate,\n                  'and': _this4.lastReadingPicker.date.endDate\n                }\n              };\n            } else {\n              payload = {\n                model: {\n                  'gte': _this4.lastReadingPicker.date.startDate\n                }\n              };\n            }\n            document.querySelector('input.last-reading').value = _this4.formatReadingDate('Readings', _this4.lastReadingPicker.date.startDate, _this4.lastReadingPicker.date.endDate);\n          } else {\n            if (start !== end) {\n              payload = {\n                model: {\n                  'notbetween': _this4.lastReadingPicker.date.startDate,\n                  'and': _this4.lastReadingPicker.date.endDate\n                }\n              };\n            } else {\n              payload = {\n                model: {\n                  'lte': _this4.lastReadingPicker.date.startDate\n                }\n              };\n            }\n            document.querySelector('input.last-reading').value = _this4.formatReadingDate('No Readings', _this4.lastReadingPicker.date.startDate, _this4.lastReadingPicker.date.endDate);\n          }\n          return _this4.onChange('$latest_device_readings.reading_taken_ts$', payload);\n        };\n        this.lastReadingPicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: LastReadingConfigService.setupOptions()\n        };\n        return this.lastReadingPicker.options.eventHandlers = {\n          'cancel.daterangepicker': lastReadingPickerCancelHandler,\n          'apply.daterangepicker': lastReadingPickerEventHandler\n        };\n      };\n      this.formatReadingDate = function (text, start, end) {\n        start = luxon.DateTime.fromJSDate(start).toFormat('M/D/YY');\n        end = luxon.DateTime.fromJSDate(end).toFormat('M/D/YY');\n        if (start === end) {\n          return text + ' since ' + start;\n        } else {\n          return text + ' between ' + start + '-' + end;\n        }\n      };\n      this.initLastReadingsPicker = function () {\n        var _this5 = this;\n        var jsEndDate, jsStartDate, lastReadingPickerCancelHandler, lastReadingPickerEventHandler;\n        jsStartDate = LastReadingConfigService.startDate.toJSDate();\n        jsEndDate = LastReadingConfigService.endDate.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        lastReadingPickerCancelHandler = function lastReadingPickerCancelHandler(event, picker) {\n          $log.log('cancelling date range', event, picker, _this5.lastReadingPicker.date);\n          _this5.lastReadingPicker.date = '';\n          return _this5.onChange('$latest_device_readings.reading_taken_ts$', '');\n        };\n        lastReadingPickerEventHandler = function lastReadingPickerEventHandler(event, picker) {\n          var doc, end, payload, start;\n          $log.log('applying date range', event, picker, _this5.lastReadingPicker.date);\n          start = luxon.DateTime.fromJSDate(_this5.lastReadingPicker.date.startDate).toFormat('M/D/YY');\n          end = luxon.DateTime.fromJSDate(_this5.lastReadingPicker.date.endDate).toFormat('M/D/YY');\n          doc = document.querySelector('#readings-since');\n          if (doc.checked === false) {\n            if (start !== end) {\n              payload = {\n                model: {\n                  'during': _this5.lastReadingPicker.date.startDate.local().toFormat('YYYY-MM-DD'),\n                  'and': _this5.lastReadingPicker.date.endDate.local().toFormat('YYYY-MM-DD')\n                }\n              };\n            } else {\n              payload = {\n                model: {\n                  'gte': _this5.lastReadingPicker.date.startDate.local().toFormat('YYYY-MM-DD')\n                }\n              };\n            }\n            document.querySelector('input.last-reading').value = _this5.formatReadingDate('Readings', _this5.lastReadingPicker.date.startDate, _this5.lastReadingPicker.date.endDate);\n          } else {\n            if (start !== end) {\n              payload = {\n                model: {\n                  'notduring': _this5.lastReadingPicker.date.startDate.local().toFormat('YYYY-MM-DD'),\n                  'and': _this5.lastReadingPicker.date.endDate.local().toFormat('YYYY-MM-DD')\n                }\n              };\n            } else {\n              payload = {\n                model: {\n                  'lte': _this5.lastReadingPicker.date.startDate.local().toFormat('YYYY-MM-DD')\n                }\n              };\n            }\n            document.querySelector('input.last-reading').value = _this5.formatReadingDate('No Readings', _this5.lastReadingPicker.date.startDate, _this5.lastReadingPicker.date.endDate);\n          }\n          return _this5.onChange('$latest_device_readings.reading_taken_ts$', payload);\n        };\n        this.lastReadingPicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: LastReadingConfigService.setupOptions()\n        };\n        return this.lastReadingPicker.options.eventHandlers = {\n          'cancel.daterangepicker': lastReadingPickerCancelHandler,\n          'apply.daterangepicker': lastReadingPickerEventHandler\n        };\n      };\n      this.formatReadingDate = function (text, start, end) {\n        start = luxon.DateTime.fromJSDate(start).toFormat('M/D/YY');\n        end = luxon.DateTime.fromJSDate(end).toFormat('M/D/YY');\n        if (start === end) {\n          return text + ' since ' + start;\n        } else {\n          return text + ' between ' + start + '-' + end;\n        }\n      };\n      this.initLastReadingsPicker = function () {\n        var _this6 = this;\n        var jsEndDate, jsStartDate, lastReadingPickerCancelHandler, lastReadingPickerEventHandler;\n        jsStartDate = LastReadingConfigService.startDate.toJSDate();\n        jsEndDate = LastReadingConfigService.endDate.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        lastReadingPickerCancelHandler = function lastReadingPickerCancelHandler(event, picker) {\n          $log.log('cancelling date range', event, picker, _this6.lastReadingPicker.date);\n          _this6.lastReadingPicker.date = '';\n          return _this6.onChange('$latest_device_readings.reading_taken_ts$', '');\n        };\n        lastReadingPickerEventHandler = function lastReadingPickerEventHandler(event, picker) {\n          var doc, end, payload, start;\n          $log.log('applying date range', event, picker, _this6.lastReadingPicker.date);\n          start = luxon.DateTime.fromJSDate(_this6.lastReadingPicker.date.startDate).toFormat('M/D/YY');\n          end = luxon.DateTime.fromJSDate(_this6.lastReadingPicker.date.endDate).toFormat('M/D/YY');\n          doc = document.querySelector('#readings-since');\n          if (doc.checked === false) {\n            if (start !== end) {\n              payload = {\n                model: {\n                  'between': _this6.lastReadingPicker.date.startDate,\n                  'and': _this6.lastReadingPicker.date.endDate\n                }\n              };\n            } else {\n              payload = {\n                model: {\n                  'gte': _this6.lastReadingPicker.date.startDate\n                }\n              };\n            }\n            document.querySelector('input.last-reading').value = _this6.formatReadingDate('Readings', _this6.lastReadingPicker.date.startDate, _this6.lastReadingPicker.date.endDate);\n          } else {\n            if (start !== end) {\n              payload = {\n                model: {\n                  'notbetween': _this6.lastReadingPicker.date.startDate,\n                  'and': _this6.lastReadingPicker.date.endDate\n                }\n              };\n            } else {\n              payload = {\n                model: {\n                  'lte': _this6.lastReadingPicker.date.startDate\n                }\n              };\n            }\n            document.querySelector('input.last-reading').value = _this6.formatReadingDate('No Readings', _this6.lastReadingPicker.date.startDate, _this6.lastReadingPicker.date.endDate);\n          }\n          return _this6.onChange('$latest_device_readings.reading_taken_ts$', payload);\n        };\n        this.lastReadingPicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: LastReadingConfigService.setupOptions()\n        };\n        return this.lastReadingPicker.options.eventHandlers = {\n          'cancel.daterangepicker': lastReadingPickerCancelHandler,\n          'apply.daterangepicker': lastReadingPickerEventHandler\n        };\n      };\n      this.InSort = function (sortOptions) {\n        return _.some(sortOptions, 'isChecked');\n      };\n      this.fieldIsAscSort = function (sortOptions) {\n        return _.some(sortOptions, function (s) {\n          return s.isChecked && s.sortDir === \"ASC\";\n        });\n      };\n      this.setSort = function (field, dir, forceRefresh, stayOnPage) {\n        var _this7 = this;\n        var existingSortOptionKey, found, i, incomingSortOptionKey, key, len, ref, s, sortOptions;\n        found = _.find(this.sort, {\n          field: field\n        });\n        if (found) {\n          if (found.dir === dir && !forceRefresh) {\n            _.remove(this.sort, found);\n          } else {\n            //change direction\n            found.dir = dir;\n          }\n        } else {\n          // we only allow for multisorting a single column\n          // remove the following to enable multisort on multiple columns\n          existingSortOptionKey = _.findKey(this.sortOptions, function (options) {\n            var ref, ref1;\n            return _.find(options, {\n              sortField: (ref = _this7.sort[0]) != null ? ref.field : void 0,\n              sortDir: (ref1 = _this7.sort[0]) != null ? ref1.dir : void 0\n            });\n          });\n          incomingSortOptionKey = _.findKey(this.sortOptions, function (options) {\n            return _.find(options, {\n              sortField: field,\n              sortDir: dir\n            });\n          });\n          if (existingSortOptionKey !== incomingSortOptionKey) {\n            this.sort = [];\n          }\n          // if this is a sort on device readings we should remove any other sorts on device readings\n          if (indexOf.call(this.deviceReadingSortFields, field) >= 0) {\n            this.sort = _.reject(this.sort, function (s) {\n              var ref;\n              return ref = s.field, indexOf.call(_this7.deviceReadingSortFields, ref) >= 0;\n            });\n          }\n          this.sort.push({\n            field: field,\n            dir: dir\n          });\n        }\n        ref = this.sortOptions;\n        // update isChecked index options\n        for (key in ref) {\n          sortOptions = ref[key];\n          for (i = 0, len = sortOptions.length; i < len; i++) {\n            s = sortOptions[i];\n            delete s.isChecked;\n            s.isChecked = _.findIndex(this.sort, {\n              field: s.sortField,\n              dir: s.sortDir\n            }) + 1;\n            // remove index if only single sort\n            if (s.isChecked && this.sort.length === 1) {\n              s.isChecked = ' ';\n            }\n          }\n        }\n        if (!stayOnPage) {\n          this.pageNumber = 1;\n        }\n        return this.goToPage();\n      };\n      this.goToPage = function () {\n        var newQueryString;\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sort: this.sort,\n          _service: 'RPM',\n          provider_user_profile_id: this.user.user_profile.id,\n          '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n        };\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        EUserProfileFilterService.setFilter(this.queryString);\n        return this.fetchPatientsAndUpdateUI(this.pageNumber);\n      };\n      this.fetchPatientsAndUpdateUI = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(pageNumber) {\n          var e, eUserProfiles, ref;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                this.showSpinner = true;\n                _context3.prev = 1;\n                $log.log('this.currentReportingPeriod.id', this.currentReportingPeriod.id);\n                if ((ref = this.currentReportingPeriod) != null ? ref.id : void 0) {\n                  _context3.next = 5;\n                  break;\n                }\n                throw new Error('currentReportingPeriod required');\n              case 5:\n                _context3.next = 7;\n                return EUserProfilesService.getAllPatients(this.enterpriseCustomer.id, null, true);\n              case 7:\n                eUserProfiles = _context3.sent;\n                // update the url if we paginate\n                if (parseInt($stateParams.patient_page) !== parseInt(pageNumber)) {\n                  $state.go('.', {\n                    patient_page: pageNumber\n                  });\n                }\n                this.patientsCount = eUserProfiles.headers('X-Total-Count');\n                this.patientDashboard.total_patient_count = eUserProfiles.headers('X-Total-Count');\n                this.patientDashboard.real_patient_count = eUserProfiles.headers('X-Real-Count');\n                this.patientDashboard.fake_patient_count = eUserProfiles.headers('X-Fake-Count');\n                this.calcHeartrateReadings(eUserProfiles);\n                this.patients = eUserProfiles.data.data;\n                this.calcDorPacingBars(this.patients);\n                _context3.next = 22;\n                break;\n              case 18:\n                _context3.prev = 18;\n                _context3.t0 = _context3[\"catch\"](1);\n                e = _context3.t0;\n                $log.log('Error pulling patients', e);\n              case 22:\n                return _context3.abrupt(\"return\", this.showSpinner = false);\n              case 23:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[1, 18]]);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.onRowClick = function (index) {\n        return EUserProfileFilterService.setIndex(index, true);\n      };\n      this.getDeviceTypeName = function (device) {\n        var ref, ref1;\n        if ((ref = device.device_type) != null ? ref.category : void 0) {\n          return (ref1 = _.find(this.deviceTypes.data.data, {\n            category: device.device_type.category\n          })) != null ? ref1.description : void 0;\n        } else {\n          return device.legacy_device_type;\n        }\n      };\n      this.getProviderName = function (id) {\n        var provider;\n        provider = _.find(this.providers, {\n          id: id\n        });\n        if (provider) {\n          return \"\".concat(provider.name_first, \"  \").concat(provider.name_last);\n        } else {\n          return \"Deactivated provider\";\n        }\n      };\n      this.getDiagnosisCodes = function (userProfile) {\n        return EUserProfilesService.getDiagnosisCodes(userProfile);\n      };\n      this.getMoreDiagnosisCodesTooltip = function (codes) {\n        return _.map(codes.slice(2), function (c) {\n          return '<span class=\"cpt-code-wrapper\"></span><span class=\"cpt-code-badge\">' + c.code + '</span></span>: ' + c.description;\n        }).join('<br>');\n      };\n      this.navigateToReport = function (userProfile, missingReportDates) {\n        $log.log('missingReportDates', missingReportDates);\n        // if a draft report exists for the missing billed dates then navigate to the draft report\n        if (missingReportDates.draft_report) {\n          return $state.go('enterprise.observation_report', {\n            user_profile_id: userProfile.id,\n            observation_report_id: missingReportDates.draft_report.id\n          });\n        } else {\n          // otherwise navigate to a new observation report page\n          return $state.go('enterprise.observation_report_new', {\n            user_profile_id: userProfile.id,\n            period_started_at: missingReportDates.period_started_at\n          });\n        }\n      };\n      this.deviceTypeChanged = function () {\n        var payload;\n        $log.log(\"deviceTypeModel\", _this2.deviceTypeModel);\n        payload = _this2.deviceTypeModel && _this2.deviceTypeModel.length > 0 ? {\n          model: _.map(_this2.deviceTypeModel, 'value.eq').join(',')\n        } : '';\n        return _this2.onChange('device_type_ids', payload);\n      };\n      this.groupSelectionChanged = function () {\n        var payload;\n        $log.log(\"groupOptionsModel\", _this2.groupOptionsModel);\n        // If the special \"no groups\" option is chosen, unselect all other options by creating a one-item array with just the \"no groups\" option\n        if (_.includes(_this2.groupOptionsModel, _this2.noGroupsOption)) {\n          _this2.groupOptionsModel = [_this2.noGroupsOption];\n        }\n        payload = _this2.groupOptionsModel && _this2.groupOptionsModel.length > 0 ? {\n          model: _.map(_this2.groupOptionsModel, 'group_id').join(',')\n        } : '';\n        return _this2.onChange('group_ids', payload);\n      };\n      this.loadDiagnoses = function (query) {\n        var _this8 = this;\n        $log.log('query', query);\n        this.isTagLoading = true;\n        return Icd10Service.search(query, 8).then(function (icd10s) {\n          _this8.isTagLoading = false;\n          $log.log('query', icd10s);\n          _.map(icd10s, function (icd10) {\n            return icd10.description = icd10.code + \": \" + icd10.description;\n          });\n          return icd10s;\n        });\n      };\n      this.dorRange = function (low, high) {\n        var highToShow, lowToShow;\n        if (!low) {\n          lowToShow = 0;\n        } else {\n          lowToShow = low;\n        }\n        if (!high) {\n          highToShow = 31; // Max days in a month\n        } else {\n          highToShow = high;\n        }\n        return lowToShow.toString() + \"-\" + highToShow.toString();\n      };\n      this.getDorPacingMetrics = function (userProfile) {\n        /*\n          Use startof day for date difference calculation. current_period_ended_at is a date with no time\n          By using start of day, diff will always be whole number\n          if time is added, diff may be a float number, which will cause issues with parseInt\n        */\n        var cycleLastDayOfMonth, cycleStartDate, cycleTotalDays, dailyaverage, daysElapsed, forecast, forecastGapPercent, forecastPercent, hasSubscription, now, readingsPercent, readingsSoFar, ref, ref1, ref2, ref3, ref4, ref5, remainingDays, scaleMax, status, subscription, target, todayPercent;\n        now = luxon.DateTime.local().startOf(\"day\");\n        // patient_subscriptions[0] must be the most recent and ACTIVE\n        subscription = userProfile != null ? (ref = userProfile.patient_subscriptions) != null ? ref[0] : void 0 : void 0;\n        cycleStartDate = luxon.DateTime.fromSQL(subscription != null ? subscription.current_period_started_at : void 0);\n        cycleLastDayOfMonth = luxon.DateTime.fromSQL(subscription != null ? subscription.current_period_ended_at : void 0);\n        remainingDays = parseInt(cycleLastDayOfMonth.diff(now, \"days\").toObject().days);\n        readingsSoFar = (userProfile != null ? (ref1 = userProfile.metrics_by_patient_subscriptions) != null ? (ref2 = ref1[0]) != null ? ref2.metric_value : void 0 : void 0 : void 0) || 0;\n        if (cycleStartDate.toMillis() > luxon.DateTime.local().toMillis()) {\n          remainingDays = 0;\n        }\n        cycleTotalDays = 1;\n        daysElapsed = 0;\n        forecast = readingsSoFar;\n        if ((subscription != null ? subscription.current_period_started_at : void 0) && (subscription != null ? subscription.current_period_ended_at : void 0)) {\n          cycleTotalDays = Math.max(parseInt(cycleLastDayOfMonth.diff(cycleStartDate, \"days\").toObject().days) + 1, 1);\n          daysElapsed = Math.min(Math.max(cycleTotalDays - remainingDays, 0), cycleTotalDays);\n        }\n        if (remainingDays > 0) {\n          dailyaverage = parseFloat(((userProfile != null ? (ref3 = userProfile.patient_metrics) != null ? (ref4 = ref3[0]) != null ? ref4.metric_value : void 0 : void 0 : void 0) || 0) / 30);\n          forecast = readingsSoFar + parseInt(dailyaverage * remainingDays);\n        }\n        target = (userProfile != null ? userProfile.monthly_dor_target : void 0) || 16;\n        scaleMax = 31;\n        status = forecast > target + 2 ? 'green' : forecast >= target - 2 ? 'orange' : 'red';\n        readingsPercent = Math.min(readingsSoFar / scaleMax * 100, 100);\n        todayPercent = Math.min(daysElapsed / scaleMax * 100, 100);\n        forecastPercent = Math.min(forecast / scaleMax * 100, 100);\n        forecastGapPercent = Math.max(Math.min(forecastPercent - readingsPercent, 100 - readingsPercent), 0);\n        hasSubscription = !!((subscription != null ? subscription.current_period_started_at : void 0) && remainingDays >= 0);\n        return {\n          readingsSoFar: readingsSoFar,\n          forecast: forecast,\n          remainingDays: remainingDays,\n          daysElapsed: daysElapsed,\n          cycleTotalDays: cycleTotalDays,\n          target: target,\n          status: status,\n          show: hasSubscription && (userProfile != null ? (ref5 = userProfile.metrics_by_patient_subscriptions) != null ? ref5[0] : void 0 : void 0) != null,\n          readingsPercent: readingsPercent,\n          todayPercent: todayPercent,\n          forecastPercent: forecastPercent,\n          forecastGapPercent: forecastGapPercent\n        };\n      };\n      this.getDorPacingBar = function (userProfile) {\n        return this.getDorPacingMetrics(userProfile);\n      };\n      this.formatDorMetricsAsOf = function (userProfile) {\n        var parsed, raw, ref, ref1;\n        raw = userProfile != null ? (ref = userProfile.metrics_by_patient_subscriptions) != null ? (ref1 = ref[0]) != null ? ref1.updated_at : void 0 : void 0 : void 0;\n        if (!raw) {\n          return '';\n        }\n        parsed = luxon.DateTime.fromISO(raw);\n        if (!parsed.isValid) {\n          parsed = luxon.DateTime.fromSQL(raw);\n        }\n        if (!parsed.isValid) {\n          return '';\n        }\n        return \"<tr>As of \".concat(parsed.toLocaleString(luxon.DateTime.DATETIME_FULL), \"</tr>\");\n      };\n      this.getDorTooltop = function (userProfile) {\n        var asOfRow, forecast, metrics, readingsSoFar, ref, ref1, ref2, ref3, remainingDays, remainingForecast;\n        metrics = this.getDorPacingMetrics(userProfile);\n        var _metrics = metrics;\n        readingsSoFar = _metrics.readingsSoFar;\n        forecast = _metrics.forecast;\n        remainingDays = _metrics.remainingDays;\n        remainingForecast = \"\";\n        asOfRow = this.formatDorMetricsAsOf(userProfile);\n        // Remaining days will be negative for a cancelled or paused patient (the last subscription will be historic)\n        if (remainingDays > 0) {\n          remainingForecast = \"\".concat(asOfRow, \" <tr><td>DoR in Billing Cycle:</td><td>\").concat(readingsSoFar || 0, \" DoR</td></tr> <tr><td>Days Remaining in Billing Cycle:</td><td>\").concat(remainingDays || 0, \" </td></tr> <tr><td>Billing Cycle Forecast:</td><td>\").concat(forecast || 0, \" DoR</td></tr>\");\n        }\n        if (remainingDays === 0) {\n          remainingForecast = \"\".concat(asOfRow, \" <tr><td>DoR in Billing Cycle:</td><td>\").concat(readingsSoFar || 0, \" DoR</td></tr> <tr><td colspan='2'>Last day of billing cycle</td></tr>\");\n        }\n        if (remainingDays < 0 || !(userProfile != null ? (ref = userProfile.patient_subscriptions) != null ? (ref1 = ref[0]) != null ? ref1.current_period_started_at : void 0 : void 0 : void 0)) {\n          remainingForecast = \"<tr><td colspan='2'>No active subscription</td></tr>\";\n        }\n        return \"<table> \".concat(remainingForecast, \" <tr><td>Last 30 Days: </td><td>\").concat((userProfile != null ? (ref2 = userProfile.patient_metrics) != null ? (ref3 = ref2[0]) != null ? ref3.metric_value : void 0 : void 0 : void 0) || 0, \" DoR</td></tr> <tr><td>Target: </td><td>\").concat((userProfile != null ? userProfile.monthly_dor_target : void 0) || 0, \" DoR</td></tr> </table>\");\n      };\n      this.onDiagnosisAdded = function () {\n        var payload;\n        $log.log('diagnosis_codes', this.diagnosis_codes);\n        payload = this.diagnosis_codes && this.diagnosis_codes.length > 0 ? {\n          model: _.map(this.diagnosis_codes, 'code').join(',')\n        } : '';\n        return this.onChange('dx_codes', payload);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-patients/e-users-card/e-users-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientTempDeactivation\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @param {object} patientSubscription Currently active patient subscription data\n   * @description\n   * Allows user to specify a date period where the patient will be temporarily deactivated\n   */\n  angular.module('enterprise').component('ePatientTempDeactivation', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      deactivationReasons: '<',\n      patientSubscription: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, $timeout, UserProfilesService, EDeactivationReasonsService, EPatientSubscriptionHelperService, $stateParams) {\n      this.$onInit = function () {\n        var baseTranslation, modalDefaults, patientSubscription, patientUserProfile, reason, reasonId, reasonsMap, user;\n        $log = $log.getInstance('ePatientTempDeactivation');\n        $log.log('$onInit');\n        user = this.user;\n        patientUserProfile = EDeactivationReasonsService.getDeactivatingPatient() || this.patientUserProfile;\n        $log.log('temp deactivation profile', patientUserProfile);\n        patientSubscription = this.patientSubscription;\n        reason = EDeactivationReasonsService.getReason();\n        baseTranslation = 'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.TEMP_DEACTIVATION_MODAL';\n        reasonsMap = EDeactivationReasonsService.getReasonsMappedByKeyName(this.deactivationReasons);\n        reasonId = reasonsMap[reason];\n        modalDefaults = {\n          windowClass: 'patient-temp-deactivation-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, $timeout, UserProfilesService, EDeactivationReasonsService, EPatientSubscriptionHelperService) {\n            this.options = {\n              isLoading: true,\n              reason: reason,\n              unknown: false,\n              hideCalendar: false,\n              calendarInit: false,\n              datePicker: null,\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!reason) {\n                  $log.log('missing reason, default to parent');\n                  return $uibModalInstance.close(false);\n                }\n              },\n              getTranslationKeyByField: function getTranslationKeyByField(field) {\n                return \"\".concat(baseTranslation, \".\").concat(reason, \".\").concat(field);\n              },\n              getDateRange: function getDateRange() {\n                var endDate, startDate;\n                startDate = _.get(this.datePicker, 'date.startDate');\n                endDate = _.get(this.datePicker, 'date.endDate');\n                return EPatientSubscriptionHelperService.getDatepickerRangeInDays(startDate, endDate);\n              },\n              onUnknownChange: function onUnknownChange() {\n                // Reset daterangepicker\n                if (this.unknown) {\n                  _.set(this.datePicker, 'date', null);\n                  _.set(this.datePicker, 'picker.element[0].value', '');\n                  _.set(this.datePicker, 'picker.startDate', moment());\n                  return _.set(this.datePicker, 'picker.endDate', moment());\n                }\n              },\n              detectChange: function detectChange($event) {\n                var _this = this;\n                var maxDate, minDate;\n                // this handles the scenario where the modal pops up, the date input is already\n                // focused (but we don't want to show the calendar on first show), and the user\n                // starts typing and then the user clicks out, then clicks back into the input\n                // daterangepicker already \"listens\" for focus, so we don't want to toggle\n                // or else the calendar flickers\n                if (this.calendarInit && $event.type !== 'focus') {\n                  $timeout(function () {\n                    return _this.datePicker.picker.toggle();\n                  });\n                }\n                if (!this.calendarInit) {\n                  this.calendarInit = true;\n                  minDate = EDeactivationReasonsService.getMinDateByDeactivationReason(reason);\n                  maxDate = EDeactivationReasonsService.getMaxDateByDeactivationReason(reason);\n                  return this.datePicker = {\n                    date: {\n                      startDate: null,\n                      endDate: null\n                    },\n                    minDate: minDate,\n                    maxDate: maxDate,\n                    picker: null,\n                    options: {\n                      pickerClasses: 'e-deactivation-custom-display',\n                      // angular-daterangepicker extra\n                      autoUpdateInput: false,\n                      buttonClasses: 'btn',\n                      applyButtonClasses: 'btn-primary',\n                      cancelButtonClasses: 'btn-danger',\n                      locale: {\n                        cancelLabel: 'Reset',\n                        customRangeLabel: 'Custom range',\n                        separator: ' - ',\n                        format: 'MM-DD-YYYY'\n                      },\n                      ranges: {\n                        'One month': [minDate, luxon.DateTime.local().plus({\n                          months: 1\n                        }).toJSDate()],\n                        'Two months': [minDate, luxon.DateTime.local().plus({\n                          months: 2\n                        }).toJSDate()]\n                      },\n                      eventHandlers: {\n                        'cancel.daterangepicker': function cancelDaterangepicker(event) {\n                          var elemVal;\n                          // Reset button clears date range input\n                          elemVal = _.get(event, 'picker.element[0].value');\n                          if (elemVal) {\n                            _.set(event, 'picker.element[0].value', '');\n                            event.model = {\n                              startDate: null,\n                              endDate: null\n                            };\n                            event.picker.startDate = moment();\n                            return event.picker.endDate = moment();\n                          }\n                        }\n                      }\n                    }\n                  };\n                }\n              },\n              disableSubmit: function disableSubmit() {\n                var endDate, isValid, noDatesSelected, startDate;\n                if (this.isLoading) {\n                  return true;\n                }\n                if (this.unknown) {\n                  return false;\n                }\n                startDate = _.get(this.datePicker, 'date.startDate');\n                endDate = _.get(this.datePicker, 'date.endDate');\n                noDatesSelected = _.isEmpty(startDate) && _.isEmpty(endDate);\n                if (!this.unknown && noDatesSelected) {\n                  return true;\n                }\n                // Travel pauses allow any selected date range (no billing-cycle/length restriction)\n                if (reason === 'PAUSE_INVOICING_TRAVELING') {\n                  return false;\n                }\n                // Other temporary pauses (hospitalization/rehab) require a range of at least 15 days\n                isValid = EPatientSubscriptionHelperService.isValidTimePeriod(startDate, endDate);\n                return !isValid;\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              },\n              closeLoadingModal: function closeLoadingModal() {\n                this.isLoading = false;\n                return $uibModalInstance.close(false);\n              },\n              deactivate: function deactivate(metadata) {\n                return UserProfilesService.createDeactivationRequest(user, patientUserProfile, reasonId, metadata);\n              },\n              continue: function () {\n                var _continue2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n                  var billingPeriods, canPauseInvoicing, endDate, metadata, nextState, notes, startDate;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        $log.log('continue');\n                        this.isLoading = true;\n                        if (reason) {\n                          _context.next = 6;\n                          break;\n                        }\n                        $log.log('Reason key is missing');\n                        this.closeLoadingModal();\n                        return _context.abrupt(\"return\");\n                      case 6:\n                        EDeactivationReasonsService.setStateByKey('unknown', this.unknown);\n                        notes = EDeactivationReasonsService.getStateByKey('notes');\n                        nextState = 'enterprise.observation_report.patient_deactivation_complete';\n                        if (!this.unknown) {\n                          _context.next = 21;\n                          break;\n                        }\n                        // proceed to creating deactivation requests... no need to check dates\n                        metadata = {\n                          notes: notes,\n                          is_known: !this.unknown\n                        };\n                        _context.prev = 11;\n                        _context.next = 14;\n                        return this.deactivate(metadata);\n                      case 14:\n                        _context.next = 19;\n                        break;\n                      case 16:\n                        _context.prev = 16;\n                        _context.t0 = _context[\"catch\"](11);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 19:\n                        _context.next = 56;\n                        break;\n                      case 21:\n                        // Known date range selected\n                        startDate = _.get(this.datePicker, 'date.startDate');\n                        endDate = _.get(this.datePicker, 'date.endDate');\n                        EDeactivationReasonsService.setStateByKey('startDate', startDate);\n                        EDeactivationReasonsService.setStateByKey('endDate', endDate);\n                        if (!(reason === 'PAUSE_INVOICING_TRAVELING')) {\n                          _context.next = 37;\n                          break;\n                        }\n                        // Travel pauses are purely operational: always schedule the pause for the\n                        // selected range regardless of billing cycles\n                        metadata = EDeactivationReasonsService.getPausePeriodMetadata(reason, startDate, endDate, notes);\n                        _context.prev = 27;\n                        _context.next = 30;\n                        return this.deactivate(metadata);\n                      case 30:\n                        _context.next = 35;\n                        break;\n                      case 32:\n                        _context.prev = 32;\n                        _context.t1 = _context[\"catch\"](27);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 35:\n                        _context.next = 56;\n                        break;\n                      case 37:\n                        // Other temporary pauses (hospitalization/rehab) check the range against billing cycles\n                        billingPeriods = EPatientSubscriptionHelperService.getBillingPeriods(patientSubscription);\n                        // Some data is missing if there are no billing periods, the patient doesn't have an active subscription\n                        if (!(billingPeriods.length === 0)) {\n                          _context.next = 41;\n                          break;\n                        }\n                        this.closeLoadingModal();\n                        return _context.abrupt(\"return\");\n                      case 41:\n                        canPauseInvoicing = EPatientSubscriptionHelperService.canPauseInvoicing(billingPeriods, startDate, endDate);\n                        if (canPauseInvoicing) {\n                          _context.next = 47;\n                          break;\n                        }\n                        EDeactivationReasonsService.setStateByKey('billingPeriods', billingPeriods);\n                        nextState = 'enterprise.observation_report.patient_deactivation_billing_cycles';\n                        _context.next = 56;\n                        break;\n                      case 47:\n                        // The requested pause period includes a billing cycle where the patient will\n                        // not have access to the device for at least 16 days, so we will proceed\n                        // to schedule their temp deactivation\n                        metadata = EDeactivationReasonsService.getPausePeriodMetadata(reason, startDate, endDate, notes);\n                        _context.prev = 48;\n                        _context.next = 51;\n                        return this.deactivate(metadata);\n                      case 51:\n                        _context.next = 56;\n                        break;\n                      case 53:\n                        _context.prev = 53;\n                        _context.t2 = _context[\"catch\"](48);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 56:\n                        this.closeLoadingModal();\n                        // Calendar was flickering in between this modal closing and the other one opening,\n                        // so I created this extra toggle to remove the rendered div all together\n                        this.hideCalendar = true;\n                        return _context.abrupt(\"return\", $state.go(nextState));\n                      case 59:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee, this, [[11, 16], [27, 32], [48, 53]]);\n                }));\n                function _continue() {\n                  return _continue2.apply(this, arguments);\n                }\n                return _continue;\n              }()\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-temp-deactivation/e-temp-deactivation.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientDeactivationAdherence\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @description\n   * Displays Education on Patient Adherence\n   */\n  angular.module('enterprise').component('ePatientDeactivationAdherence', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      deactivationReasons: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, UserProfilesService, EDeactivationReasonsService, $stateParams) {\n      this.$onInit = function () {\n        var modalDefaults, patientUserProfile, reasonId, reasonsMap, user;\n        $log = $log.getInstance('ePatientDeactivationAdherence');\n        $log.log('$onInit');\n        user = this.user;\n        patientUserProfile = EDeactivationReasonsService.getDeactivatingPatient() || this.patientUserProfile;\n        $log.log('adherence deactivating profile', patientUserProfile);\n        reasonsMap = EDeactivationReasonsService.getReasonsMappedByKeyName(this.deactivationReasons);\n        reasonId = reasonsMap['ADHERENCE'];\n        modalDefaults = {\n          windowClass: 'patient-deactivation-adherence-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, UserProfilesService, EDeactivationReasonsService) {\n            this.options = {\n              isLoading: true,\n              init: function init() {\n                $log.log('loaded');\n                return this.isLoading = false;\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              },\n              continue: function () {\n                var _continue2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n                  var nextState, notes;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        $log.log('continue');\n                        this.isLoading = true;\n                        notes = EDeactivationReasonsService.getNotes();\n                        nextState = 'enterprise.observation_report.patient_deactivation_complete';\n                        _context.prev = 4;\n                        _context.next = 7;\n                        return UserProfilesService.createDeactivationRequest(user, patientUserProfile, reasonId, {\n                          notes: notes\n                        });\n                      case 7:\n                        _context.next = 12;\n                        break;\n                      case 9:\n                        _context.prev = 9;\n                        _context.t0 = _context[\"catch\"](4);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 12:\n                        this.isLoading = false;\n                        $uibModalInstance.close(false);\n                        return _context.abrupt(\"return\", $state.go(nextState));\n                      case 15:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee, this, [[4, 9]]);\n                }));\n                function _continue() {\n                  return _continue2.apply(this, arguments);\n                }\n                return _continue;\n              }()\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-patient-adherence/e-patient-adherence.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientDeactivationInsuranceChange\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @description\n   * Displays Modal to prompt user to upload additional patient information (e.g. EOB)\n   */\n  angular.module('enterprise').component('ePatientDeactivationInsuranceChange', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      deactivationReasons: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, Upload, NotificationsService, UserProfilesService, EDeactivationReasonsService, $stateParams) {\n      this.$onInit = function () {\n        var baseTranslation, file, modalDefaults, notes, patientUserProfile, reason, reasonId, reasonsMap, uploadedDate, user;\n        $log = $log.getInstance('ePatientDeactivationInsuranceChange');\n        $log.log('$onInit');\n        user = this.user;\n        patientUserProfile = EDeactivationReasonsService.getDeactivatingPatient() || this.patientUserProfile;\n        $log.log('insurance change profile', patientUserProfile);\n        reason = EDeactivationReasonsService.getReason();\n        reasonsMap = EDeactivationReasonsService.getReasonsMappedByKeyName(this.deactivationReasons);\n        reasonId = reasonsMap[reason];\n        notes = EDeactivationReasonsService.getStateByKey('notes');\n        file = EDeactivationReasonsService.getStateByKey('file');\n        uploadedDate = EDeactivationReasonsService.getStateByKey('fileUploadedDate');\n        baseTranslation = 'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL';\n        modalDefaults = {\n          windowClass: 'patient-deactivation-insurance-change-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, $timeout, Upload, UserProfilesService, EDeactivationReasonsService) {\n            this.options = {\n              isLoading: true,\n              errorMsg: '',\n              fileUnavailable: false,\n              file: file,\n              uploadedDate: uploadedDate,\n              signedUrl: null,\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!reason) {\n                  $log.log('missing reason, default to parent');\n                  return $uibModalInstance.close(false);\n                }\n              },\n              disableSubmit: function disableSubmit() {\n                if (this.isLoading) {\n                  return true;\n                }\n                if (this.fileUnavailable) {\n                  return false;\n                }\n                return _.isEmpty(this.file);\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              },\n              onFileUnavailableChange: function onFileUnavailableChange() {\n                if (this.fileUnavailable) {\n                  this.file = null;\n                  return this.signedUrl = null;\n                }\n              },\n              deleteFile: function deleteFile() {\n                $log.log('delete file');\n                EDeactivationReasonsService.setStateByKey('file', this.file);\n                EDeactivationReasonsService.setStateByKey('fileUploadedDate', this.uploadedDate);\n                $uibModalInstance.close(false);\n                return $state.go('enterprise.observation_report.patient_deactivation_file_delete_confirmation');\n              },\n              uploadFile: function uploadFile(file) {\n                var newFileName, renamedFile;\n                $log.log('upload file');\n                if (!reason) {\n                  throw new Error(\"reason is missing\");\n                }\n                newFileName = EDeactivationReasonsService.getFileUploadNameByReason(file.name, reason);\n                renamedFile = Upload.rename(file, newFileName);\n                this.file = renamedFile;\n                return this.uploadedDate = luxon.DateTime.local().toFormat('f');\n              },\n              getSignedUrl: function () {\n                var _getSignedUrl = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n                  var signedUrlResponse;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        _context.next = 2;\n                        return UserProfilesService.getDeactivationMetaDataSignedUrl(patientUserProfile, {\n                          file_name: this.file.ngfName,\n                          file_type: this.file.type\n                        });\n                      case 2:\n                        signedUrlResponse = _context.sent;\n                        return _context.abrupt(\"return\", _.get(signedUrlResponse, 'url'));\n                      case 4:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee, this);\n                }));\n                function getSignedUrl() {\n                  return _getSignedUrl.apply(this, arguments);\n                }\n                return getSignedUrl;\n              }(),\n              uploadFileToS3: function uploadFileToS3(signedUrl) {\n                $log.log('uploadFileToS3');\n                return Upload.http({\n                  url: signedUrl,\n                  method: 'PUT',\n                  headers: {\n                    'Content-Type': this.file.type\n                  },\n                  data: this.file\n                }).then(function (response) {\n                  $timeout(function () {\n                    var data, fileName;\n                    fileName = _.get(response, 'config.data.file.name');\n                    data = _.get(response, 'data');\n                    $log.log('file: ' + fileName + ', Response: ' + JSON.stringify(data));\n                  });\n                }, function (response) {\n                  $log.log('response', response);\n                  return response;\n                });\n              },\n              deactivate: function deactivate(metadata) {\n                return UserProfilesService.createDeactivationRequest(user, patientUserProfile, reasonId, metadata);\n              },\n              closeLoadingModal: function closeLoadingModal() {\n                this.isLoading = false;\n                return $uibModalInstance.close(false);\n              },\n              continue: function () {\n                var _continue2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n                  var fileUrl, metadata, nextState, resp, signedUrl;\n                  return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        $log.log('continue');\n                        this.isLoading = true;\n                        if (reason) {\n                          _context2.next = 8;\n                          break;\n                        }\n                        NotificationsService.error(\"\".concat(baseTranslation, \".TOASTS.ERROR\"));\n                        $log.log('Reason key is missing');\n                        this.closeLoadingModal();\n                        EDeactivationReasonsService.clearState();\n                        return _context2.abrupt(\"return\");\n                      case 8:\n                        if (!this.fileUnavailable) {\n                          _context2.next = 22;\n                          break;\n                        }\n                        metadata = {\n                          notes: notes,\n                          is_file_available: false\n                        };\n                        nextState = 'enterprise.observation_report.patient_deactivation_complete';\n                        _context2.prev = 11;\n                        _context2.next = 14;\n                        return this.deactivate(metadata);\n                      case 14:\n                        _context2.next = 19;\n                        break;\n                      case 16:\n                        _context2.prev = 16;\n                        _context2.t0 = _context2[\"catch\"](11);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 19:\n                        this.closeLoadingModal();\n                        $state.go(nextState);\n                        return _context2.abrupt(\"return\");\n                      case 22:\n                        if (this.file) {\n                          _context2.next = 28;\n                          break;\n                        }\n                        NotificationsService.error(\"\".concat(baseTranslation, \".TOASTS.NO_FILE_ERROR\"));\n                        $log.log('Cannot find file upload');\n                        this.closeLoadingModal();\n                        EDeactivationReasonsService.clearState();\n                        return _context2.abrupt(\"return\");\n                      case 28:\n                        _context2.next = 30;\n                        return this.getSignedUrl();\n                      case 30:\n                        signedUrl = _context2.sent;\n                        $log.log('signedUrl', signedUrl);\n                        if (signedUrl) {\n                          _context2.next = 38;\n                          break;\n                        }\n                        NotificationsService.error(\"\".concat(baseTranslation, \".TOASTS.ERROR\"));\n                        $log.log('Cannot upload file without signed url');\n                        this.closeLoadingModal();\n                        EDeactivationReasonsService.clearState();\n                        return _context2.abrupt(\"return\");\n                      case 38:\n                        fileUrl = signedUrl.split('?')[0];\n                        $log.log('fileUrl', fileUrl);\n                        metadata = EDeactivationReasonsService.getInsuranceReasonMetadata(reason, fileUrl);\n                        _context2.next = 43;\n                        return this.uploadFileToS3(signedUrl);\n                      case 43:\n                        resp = _context2.sent;\n                        if (!(!_.isUndefined(resp) && resp.status < 0)) {\n                          _context2.next = 50;\n                          break;\n                        }\n                        NotificationsService.error(\"\".concat(baseTranslation, \".TOASTS.FILE_UPLOAD_ERROR\"));\n                        $log.log('Error in uploading file to S3');\n                        this.closeLoadingModal();\n                        EDeactivationReasonsService.clearState();\n                        return _context2.abrupt(\"return\");\n                      case 50:\n                        nextState = 'enterprise.observation_report.patient_deactivation_complete';\n                        _context2.prev = 51;\n                        _context2.next = 54;\n                        return this.deactivate(metadata);\n                      case 54:\n                        _context2.next = 59;\n                        break;\n                      case 56:\n                        _context2.prev = 56;\n                        _context2.t1 = _context2[\"catch\"](51);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 59:\n                        this.closeLoadingModal();\n                        return _context2.abrupt(\"return\", $state.go(nextState));\n                      case 61:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2, this, [[11, 16], [51, 56]]);\n                }));\n                function _continue() {\n                  return _continue2.apply(this, arguments);\n                }\n                return _continue;\n              }()\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-insurance-change/e-insurance-change.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientDeactivationDeviceIssue\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @param {object} deviceTypes all available device types\n   * @description\n   * Displays Modal to prompt user to choose what devices the patient's are having issues with\n   */\n  angular.module('enterprise').component('ePatientDeactivationDeviceIssue', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      deactivationReasons: '<',\n      deviceTypes: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, UserProfilesService, EDeactivationReasonsService, $stateParams) {\n      this.$onInit = function () {\n        var deviceTypes, devices, modalDefaults, patientDevices, patientUserProfile, reason, reasonId, reasonsMap, user;\n        $log = $log.getInstance('ePatientDeactivationDeviceIssue');\n        $log.log('$onInit');\n        user = this.user;\n        patientUserProfile = EDeactivationReasonsService.getDeactivatingPatient() || this.patientUserProfile;\n        $log.log('device issue deactivating profile', patientUserProfile);\n        reason = EDeactivationReasonsService.getReason();\n        reasonsMap = EDeactivationReasonsService.getReasonsMappedByKeyName(this.deactivationReasons);\n        reasonId = reasonsMap[reason];\n        deviceTypes = _.get(this.deviceTypes, 'data.data', []);\n        patientDevices = _.get(patientUserProfile, 'devices', []);\n        devices = [];\n        // Creating an array that's easily digest-able by the UI\n        _.forEach(patientDevices, function (device) {\n          var deviceType, ref;\n          deviceType = deviceTypes.find(function (dt) {\n            return dt.id === device.device_type_id;\n          });\n          // set some reasonable defaults if device type is not found\n          return devices.push({\n            device_type_id: _.get(deviceType, \"id\", device.device_type_id),\n            label: _.get(deviceType, \"description\", device != null ? (ref = device.device_type) != null ? ref.description : void 0 : void 0)\n          });\n        });\n        modalDefaults = {\n          windowClass: 'patient-deactivation-device-issue-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, UserProfilesService, EDeactivationReasonsService) {\n            this.options = {\n              isLoading: true,\n              patientDevices: devices,\n              selectedDevices: [],\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!reason || !devices) {\n                  $log.log('missing reason or no devices, default to parent');\n                  return $uibModalInstance.close(false);\n                }\n              },\n              disableSubmit: function disableSubmit() {\n                if (this.isLoading) {\n                  return true;\n                }\n                return this.selectedDevices.length < 1;\n              },\n              toggleSelection: function toggleSelection(deviceId) {\n                if (this.selectedDevices.indexOf(deviceId) === -1) {\n                  return this.selectedDevices.push(deviceId);\n                } else {\n                  return this.selectedDevices.splice(this.selectedDevices.indexOf(deviceId), 1);\n                }\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              },\n              closeLoadingModal: function closeLoadingModal() {\n                this.isLoading = false;\n                return $uibModalInstance.close(false);\n              },\n              continue: function () {\n                var _continue2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n                  var metadata, nextState, problematicDevices, selectedDevices;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        $log.log('continue');\n                        this.isLoading = true;\n                        if (reason) {\n                          _context.next = 6;\n                          break;\n                        }\n                        $log.log('Reason key is missing');\n                        this.closeLoadingModal();\n                        return _context.abrupt(\"return\");\n                      case 6:\n                        // filter out the problematic devices out of all the patient's devices\n                        patientDevices = this.patientDevices;\n                        selectedDevices = this.selectedDevices;\n                        problematicDevices = _.filter(patientDevices, function (device) {\n                          return _.includes(selectedDevices, device.device_type_id);\n                        });\n                        metadata = {\n                          notes: EDeactivationReasonsService.getNotes(),\n                          problematic_devices: problematicDevices\n                        };\n                        nextState = 'enterprise.observation_report.patient_deactivation_complete';\n                        _context.prev = 11;\n                        _context.next = 14;\n                        return UserProfilesService.createDeactivationRequest(user, patientUserProfile, reasonId, metadata);\n                      case 14:\n                        _context.next = 19;\n                        break;\n                      case 16:\n                        _context.prev = 16;\n                        _context.t0 = _context[\"catch\"](11);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 19:\n                        this.closeLoadingModal();\n                        return _context.abrupt(\"return\", $state.go(nextState));\n                      case 21:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee, this, [[11, 16]]);\n                }));\n                function _continue() {\n                  return _continue2.apply(this, arguments);\n                }\n                return _continue;\n              }()\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-device-issue/e-device-issue.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('ePatientDeactivationReason', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      deactivationReasons: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, $stateParams, EDeactivationReasonsService, UserProfilesService) {\n      this.$onInit = function () {\n        var allowDeactivation, baseTranslationKey, formMap, modalDefaults, patientUserProfile, reasonsMap, user;\n        $log = $log.getInstance('ePatientDeactivationReason');\n        $log.log('$onInit');\n        // EDeactivationReasonsService.getDeactivatingPatient() will be undefined when navigating directly to the deactivation state but this.patientUserProfile will not be\n        // This direct navigation probably doesn't ever happen but this is here just in case.\n        this.patientUserProfile = EDeactivationReasonsService.getDeactivatingPatient() || this.patientUserProfile;\n        $log.log('deactivating patient:', this.patientUserProfile);\n        baseTranslationKey = \"PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.REASON_MODAL\";\n        formMap = EDeactivationReasonsService.getReasonsBySection();\n        reasonsMap = EDeactivationReasonsService.getReasonsMappedByKeyName(this.deactivationReasons);\n        user = this.user;\n        patientUserProfile = this.patientUserProfile;\n        allowDeactivation = _.get(this.enterpriseCustomer, 'should_allow_deactivation_requests', false);\n        modalDefaults = {\n          windowClass: 'patient-deactivation-reason-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state) {\n            this.options = {\n              isLoading: true,\n              formMap: formMap,\n              model: {\n                reasonKey: null,\n                notes: null\n              },\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!allowDeactivation) {\n                  $log.log('deactivations not allowed');\n                  $uibModalInstance.close(false);\n                  return $state.go(\"enterprise.observation_report.patient_deactivation_contact\");\n                }\n              },\n              getSectionLabel: function getSectionLabel(section) {\n                return \"\".concat(baseTranslationKey, \".SECTIONS.\").concat(section);\n              },\n              getFieldLabel: function getFieldLabel(section, field) {\n                return \"\".concat(baseTranslationKey, \".FIELDS.\").concat(section, \".\").concat(field);\n              },\n              disableSubmit: function disableSubmit() {\n                var notes, reasonKey;\n                if (this.isLoading) {\n                  return true;\n                }\n                reasonKey = this.model.reasonKey;\n                notes = this.model.notes;\n                if (reasonKey === 'OTHER' && !notes) {\n                  return true;\n                }\n                return _.isEmpty(reasonKey);\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              },\n              createDeactivationRequest: function () {\n                var _createDeactivationRequest = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(reasonKey, notes) {\n                  var reasonId;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        $log.log('creating deactivation request for reason ', reasonKey);\n                        reasonId = reasonsMap[reasonKey];\n                        _context.next = 4;\n                        return UserProfilesService.createDeactivationRequest(user, patientUserProfile, reasonId, {\n                          notes: notes\n                        });\n                      case 4:\n                        return _context.abrupt(\"return\", _context.sent);\n                      case 5:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n                function createDeactivationRequest(_x, _x2) {\n                  return _createDeactivationRequest.apply(this, arguments);\n                }\n                return createDeactivationRequest;\n              }(),\n              submit: function () {\n                var _submit = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n                  var isImmediateDeactivationRequest, nextState, notes, reason;\n                  return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        $log.log('submit');\n                        reason = this.model.reasonKey;\n                        notes = this.model.notes;\n                        $log.log('reason', reason);\n                        nextState = EDeactivationReasonsService.getNextStateByReason(reason);\n                        if (nextState) {\n                          _context2.next = 7;\n                          break;\n                        }\n                        throw new Error(\"cannot determine next state to redirect to for reason: \".concat(reason));\n                      case 7:\n                        $log.log('nextState', nextState);\n                        EDeactivationReasonsService.setReason(reason);\n                        EDeactivationReasonsService.setNotes(notes);\n                        isImmediateDeactivationRequest = EDeactivationReasonsService.isImmediateDeactivationRequest(reason);\n                        if (!isImmediateDeactivationRequest) {\n                          _context2.next = 22;\n                          break;\n                        }\n                        this.isLoading = true;\n                        _context2.prev = 13;\n                        _context2.next = 16;\n                        return this.createDeactivationRequest(reason, notes);\n                      case 16:\n                        _context2.next = 21;\n                        break;\n                      case 18:\n                        _context2.prev = 18;\n                        _context2.t0 = _context2[\"catch\"](13);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 21:\n                        this.isLoading = false;\n                      case 22:\n                        $uibModalInstance.close(false);\n                        return _context2.abrupt(\"return\", $state.go(nextState));\n                      case 24:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2, this, [[13, 18]]);\n                }));\n                function submit() {\n                  return _submit.apply(this, arguments);\n                }\n                return submit;\n              }()\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-deactivation-reason/e-deactivation-reason.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('ePatientDeactivationContact', {\n    'ngInject': 'ngInject',\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $state, $scope) {\n      this.$onInit = function () {\n        var modalDefaults;\n        $log = $log.getInstance('ePatientDeactivationContact');\n        modalDefaults = {\n          windowClass: 'e-deactivation-contact-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state) {\n            this.options = {\n              isLoading: true,\n              init: function init() {\n                $log.log('loaded');\n                return this.isLoading = false;\n              },\n              close: function close() {\n                return $uibModalInstance.close(false);\n              }\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-deactivation-contact/e-deactivation-contact.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('ePatientDeactivationComplete', {\n    'ngInject': 'ngInject',\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, EDeactivationReasonsService) {\n      this.$onInit = function () {\n        var baseTranslation, modalDefaults, reason;\n        $log = $log.getInstance('ePatientDeactivationComplete');\n        $log.log('$onInit');\n        reason = EDeactivationReasonsService.getReason();\n        baseTranslation = 'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.DEACTIVATION_COMPLETE_MODAL';\n        modalDefaults = {\n          windowClass: 'e-deactivation-complete-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, EDeactivationReasonsService) {\n            this.options = {\n              isLoading: true,\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!reason) {\n                  return $uibModalInstance.close(false);\n                }\n              },\n              getTranslationKeyByField: function getTranslationKeyByField(field) {\n                return \"\".concat(baseTranslation, \".\").concat(field);\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                EDeactivationReasonsService.clearState();\n                $log.log('emit deactivation logs table refresh');\n                return $rootScope.$emit('deactivation_requests_refresh');\n              }\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-deactivation-complete/e-deactivation-complete.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientDeactivationBillingCycles\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @param {object} patientSubscription Currently active patient subscription data\n   * @description\n   * Displays all the patient's billing cycles starting at current billing cycle up until\n   * the billing cycle(s) that the pause period resides in\n   */\n  angular.module('enterprise').component('ePatientDeactivationBillingCycles', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      deactivationReasons: '<',\n      patientSubscription: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, $timeout, UserProfilesService, EDeactivationReasonsService, EPatientSubscriptionHelperService) {\n      this.$onInit = function () {\n        var baseTranslation, billingPeriods, endDate, modalDefaults, patientUserProfile, reason, startDate, user;\n        $log = $log.getInstance('ePatientDeactivationBillingCycles');\n        $log.log('$onInit');\n        user = this.user;\n        patientUserProfile = this.patientUserProfile;\n        reason = EDeactivationReasonsService.getReason();\n        baseTranslation = 'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BILLING_CYCLES_MODAL';\n        billingPeriods = EDeactivationReasonsService.getStateByKey('billingPeriods');\n        startDate = EDeactivationReasonsService.getStateByKey('startDate');\n        endDate = EDeactivationReasonsService.getStateByKey('endDate');\n        modalDefaults = {\n          windowClass: 'patient-deactivation-billing-cycles-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, EDeactivationReasonsService, EPatientSubscriptionHelperService) {\n            this.options = {\n              isLoading: true,\n              reason: reason,\n              billingPeriods: [],\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!reason) {\n                  $log.log('missing reason, default to parent');\n                  $uibModalInstance.close(false);\n                  return;\n                }\n                if (!startDate || !endDate) {\n                  $log.log('missing pause period, default to parent');\n                  $uibModalInstance.close(false);\n                  return;\n                }\n                // We don't want to show all the billing periods we checked... just show the billing periods\n                // up until the one where the pause period end date resides\n                return this.billingPeriods = EPatientSubscriptionHelperService.filterBillingPeriodsByPausedPeriod(billingPeriods, startDate, endDate);\n              },\n              getTranslationKeyByField: function getTranslationKeyByField(field) {\n                return \"\".concat(baseTranslation, \".\").concat(reason, \".\").concat(field);\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              }\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-deactivation-billing-cycles/e-deactivation-billing-cycles.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientDeactivationAdditionalInfo\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @description\n   * Displays Modal to prompt user to upload additional patient information (e.g. Left Practice, Hospice/Nursing)\n   */\n  angular.module('enterprise').component('ePatientDeactivationAdditionalInfo', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      deactivationReasons: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, $timeout, UserProfilesService, EDeactivationReasonsService, $stateParams) {\n      this.$onInit = function () {\n        var baseTranslation, modalDefaults, patientUserProfile, reason, reasonId, reasonsMap, user;\n        $log = $log.getInstance('ePatientDeactivationAdditionalInfo');\n        $log.log('$onInit');\n        user = this.user;\n        patientUserProfile = EDeactivationReasonsService.getDeactivatingPatient() || this.patientUserProfile;\n        reason = EDeactivationReasonsService.getReason();\n        baseTranslation = 'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.ADDITIONAL_INFO_MODAL';\n        reasonsMap = EDeactivationReasonsService.getReasonsMappedByKeyName(this.deactivationReasons);\n        reasonId = reasonsMap[reason];\n        modalDefaults = {\n          windowClass: 'patient-deactivation-additional-info-modal',\n          backdrop: 'static',\n          controllerAs: 'modal',\n          controller: function controller($scope, $uibModalInstance, $state, $timeout, UserProfilesService, EDeactivationReasonsService) {\n            this.options = {\n              isLoading: true,\n              reason: reason,\n              unknown: false,\n              hideCalendar: false,\n              calendarInit: false,\n              practiceName: '',\n              datePicker: null,\n              init: function init() {\n                $log.log('loaded');\n                this.isLoading = false;\n                if (!reason) {\n                  $log.log('missing reason, default to parent');\n                  return $uibModalInstance.close(false);\n                }\n              },\n              getFieldLabel: function getFieldLabel(field) {\n                return \"\".concat(baseTranslation, \".\").concat(reason, \".\").concat(field);\n              },\n              onUnknownChange: function onUnknownChange() {\n                if (this.unknown) {\n                  _.set(this.datePicker, 'date', null);\n                  return this.practiceName = '';\n                }\n              },\n              detectChange: function detectChange($event) {\n                var _this = this;\n                var maxDate, minDate;\n                // this handles the scenario where the modal pops up, the date input is already\n                // focused (but we don't want to show the calendar on first show), and the user\n                // starts typing and then the user clicks out, then clicks back into the input\n                // daterangepicker already \"listens\" for focus, so we don't want to toggle\n                // or else the calendar flickers\n                if (this.calendarInit && $event.type !== 'focus') {\n                  $timeout(function () {\n                    return _this.datePicker.picker.toggle();\n                  });\n                }\n                if (!this.calendarInit) {\n                  this.calendarInit = true;\n                  minDate = luxon.DateTime.fromJSDate(patientUserProfile.created_at).toJSDate();\n                  maxDate = EDeactivationReasonsService.getMaxDateByDeactivationReason(reason);\n                  return this.datePicker = {\n                    date: null,\n                    minDate: minDate,\n                    maxDate: maxDate,\n                    picker: null,\n                    options: {\n                      pickerClasses: 'e-deactivation-custom-display',\n                      // angular-daterangepicker extra\n                      singleDatePicker: true,\n                      autoUpdateInput: false,\n                      locale: {\n                        format: 'MM-DD-YYYY'\n                      }\n                    }\n                  };\n                }\n              },\n              disableSubmit: function disableSubmit() {\n                var fieldToCheck;\n                if (this.isLoading) {\n                  return true;\n                }\n                fieldToCheck = reason === 'LEFT_PRACTICE' ? this.practiceName : _.get(this.datePicker, 'date');\n                if (!this.unknown && !fieldToCheck) {\n                  return true;\n                }\n                if (this.unknown) {\n                  return false;\n                }\n                return !fieldToCheck;\n              },\n              close: function close() {\n                $uibModalInstance.close(false);\n                return EDeactivationReasonsService.clearState();\n              },\n              closeLoadingModal: function closeLoadingModal() {\n                this.isLoading = false;\n                return $uibModalInstance.close(false);\n              },\n              continue: function () {\n                var _continue2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n                  var date, metadata, nextState;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        $log.log('continue');\n                        this.isLoading = true;\n                        if (this.reason) {\n                          _context.next = 6;\n                          break;\n                        }\n                        $log.log('Reason key is missing');\n                        this.closeLoadingModal();\n                        return _context.abrupt(\"return\");\n                      case 6:\n                        metadata = {};\n                        EDeactivationReasonsService.setStateByKey('unknown', this.unknown);\n                        if (reason === 'LEFT_PRACTICE') {\n                          EDeactivationReasonsService.setStateByKey('practiceName', this.practiceName);\n                          metadata = EDeactivationReasonsService.getLeftPracticeMetadata(reason, this.practiceName, this.unknown);\n                        } else {\n                          date = this.datePicker.date;\n                          EDeactivationReasonsService.setStateByKey('startDate', date);\n                          metadata = EDeactivationReasonsService.getEventDateMetadata(reason, date, this.unknown);\n                        }\n                        nextState = 'enterprise.observation_report.patient_deactivation_complete';\n                        _context.prev = 10;\n                        _context.next = 13;\n                        return UserProfilesService.createDeactivationRequest(user, patientUserProfile, reasonId, metadata);\n                      case 13:\n                        _context.next = 18;\n                        break;\n                      case 15:\n                        _context.prev = 15;\n                        _context.t0 = _context[\"catch\"](10);\n                        nextState = 'enterprise.observation_report.patient_deactivation_contact';\n                      case 18:\n                        this.closeLoadingModal();\n                        // Calendar was flickering in between this modal closing and the other one opening,\n                        // so I created this extra toggle to remove the rendered div all together\n                        this.hideCalendar = true;\n                        return _context.abrupt(\"return\", $state.go(nextState));\n                      case 21:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee, this, [[10, 15]]);\n                }));\n                function _continue() {\n                  return _continue2.apply(this, arguments);\n                }\n                return _continue;\n              }()\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-patient-deactivation/e-additional-info/e-additional-info.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eObservationPhoneNumbers', {\n    bindings: {\n      patientUserProfile: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, EUserProfilesService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eObservationPhoneNumbers');\n        this.setComponentSettings();\n      };\n      this.$onChanges = function () {\n        this.setComponentSettings();\n      };\n      this.setComponentSettings = function () {\n        this.numberOfPhoneNumbers = 3;\n        // Phone 1 is always editable to always display or 'ask' for it\n        this.editablePhoneNumber1 = true;\n        // Phone 2 and 3 are editable if the user profile has phone numbers set\n        this.editablePhoneNumber2 = false;\n        if (this.patientUserProfile['phone_2_number']) {\n          this.editablePhoneNumber2 = true;\n        }\n        this.editablePhoneNumber3 = false;\n        if (this.patientUserProfile['phone_3_number']) {\n          this.editablePhoneNumber3 = true;\n        }\n        this.listenerPhoneSet1 = false;\n        this.listenerPhoneSet2 = false;\n        this.listenerPhoneSet2 = false;\n        this.savingProfile = false;\n      };\n      this.phoneNumberClick = function (id) {\n        this['editablePhoneNumber' + id] = true;\n      };\n      this.updatePhoneNumber = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(id, phoneNumber) {\n          var err, payload, res, saveError;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                // Turn off the click listener regardless of whether the save was successful\n                // this way it doesn't try to update the phone number repeatedly\n                this['listenerPhoneSet' + id] = false;\n                if (this['abortController' + id]) {\n                  this['abortController' + id].abort();\n                }\n                $log.log('updatePhoneNumber', id, phoneNumber);\n                phoneNumber = phoneNumber.replace(/\\D/g, '');\n                if (!this.checkIfPhoneAlreadyUsed(id, phoneNumber)) {\n                  _context.next = 7;\n                  break;\n                }\n                NotificationsService.error($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.PHONE_NUMBER_ALREADY_USED'));\n                return _context.abrupt(\"return\");\n              case 7:\n                this.patientUserProfile['phone_' + id + '_number'] = phoneNumber;\n                this.savingProfile = true;\n                _context.prev = 9;\n                payload = {};\n                payload['phone_' + id + '_number'] = phoneNumber;\n                _context.next = 14;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, payload);\n              case 14:\n                res = _context.sent;\n                this.savingProfile = false;\n                // this['editablePhoneNumber'+id] = false\n                NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.PHONE_NUMBER_UPDATED'));\n                if (res[1] && res[1][0] && Object.keys(res[1][0]).length > 0) {\n                  this.patientUserProfile['phone_' + id + '_type'] = res[1][0]['phone_' + id + '_type'];\n                }\n                _context.next = 27;\n                break;\n              case 20:\n                _context.prev = 20;\n                _context.t0 = _context[\"catch\"](9);\n                err = _context.t0;\n                saveError = err.data.message || err.data.data.message;\n                $log.error(err, saveError);\n                if (saveError && saveError.toLowerCase().includes('was not found')) {\n                  NotificationsService.error($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.PHONE_NUMBER_IS_INVALID'));\n                } else {\n                  NotificationsService.error(saveError);\n                }\n                this.savingProfile = false;\n              case 27:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[9, 20]]);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.checkIfPhoneAlreadyUsed = function (id, phoneNumber) {\n        var x;\n        $log.log('checkIfPhoneAlreadyUsed', id, phoneNumber);\n        x = 1;\n        while (x <= this.numberOfPhoneNumbers) {\n          if (x === id || !this.patientUserProfile['phone_' + x + '_number']) {\n            x++;\n            continue;\n          }\n          if (this.patientUserProfile['phone_' + x + '_number'] === phoneNumber) {\n            return true;\n          }\n          x++;\n        }\n        return false;\n      };\n      this.phoneNumberKeyPress = function (event, id) {\n        if (event.keyCode === 13) {\n          this.updatePhoneNumber(id, event.target.value);\n        }\n      };\n      this.profileCanAddPhoneNumbers = function () {\n        var x;\n        x = 1;\n        while (x <= this.numberOfPhoneNumbers) {\n          if (!this.patientUserProfile['phone_' + x + '_number'] && !this['editablePhoneNumber' + x]) {\n            return true;\n          }\n          x++;\n        }\n        return false;\n      };\n      this.addPhoneNumber = function () {\n        var x;\n        x = 1;\n        while (x <= this.numberOfPhoneNumbers) {\n          if (!this.patientUserProfile['phone_' + x + '_number'] && !this['editablePhoneNumber' + x]) {\n            this['editablePhoneNumber' + x] = true;\n            return;\n          }\n          x++;\n        }\n      };\n      this.setInputListener = function (id) {\n        var _this = this;\n        var specifiedElement;\n        if (this['listenerPhoneSet' + id]) {\n          return;\n        }\n        // turns off the listener when the user clicks out of the input so it only saves once\n        // @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#add_an_abortable_listener\n        this['abortController' + id] = new AbortController();\n        specifiedElement = document.getElementById('phone_' + id + '_number_input');\n        document.getElementById('portal').addEventListener('click', function (event) {\n          var isClickInside;\n          isClickInside = specifiedElement.contains(event.target);\n          if (isClickInside) {\n            return;\n          }\n          if (!isClickInside) {\n            _this.updatePhoneNumber(id, specifiedElement.value);\n          }\n        }, {\n          signal: this['abortController' + id].signal\n        });\n        this['listenerPhoneSet' + id] = true;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-observation-report/e-observation-phone-numbers/e-observation-phone-numbers.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eObservationDownloadSubstantionFiles\n   * @restrict E\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @description\n   * Displays a menu to see EHR file sync status and ability to download them\n   */\n  angular.module('enterprise').component('eObservationDownloadSubstantionFiles', {\n    bindings: {\n      patientUserProfile: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, UserProfilesService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eObservationDownloadSubstantionFiles');\n        $log.log('pactsafe_eula', this.patientUserProfile.pactsafe_eula);\n        $log.log('enrollment', this.patientUserProfile.enterprise_enrollment);\n        this.canDownloadEula = this.checkPactsafeEulaDownload();\n        this.menuActive = false;\n        this.downloadingEula = false;\n        this.downloading99453 = false;\n      };\n      this.$onChanges = function () {\n        $log.log('pactsafe_eula', this.patientUserProfile.pactsafe_eula);\n        $log.log('enrollment', this.patientUserProfile.enterprise_enrollment);\n        this.canDownloadEula = this.checkPactsafeEulaDownload();\n      };\n      this.toggleMenu = function () {\n        this.menuActive = !this.menuActive;\n      };\n      this.checkPactsafeEulaDownload = function () {\n        return this.patientUserProfile.pactsafe_eula;\n      };\n      this.downloadPactsafeEula = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var e;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (!this.downloadingEula) {\n                _context.next = 2;\n                break;\n              }\n              return _context.abrupt(\"return\");\n            case 2:\n              _context.prev = 2;\n              this.downloadingEula = true;\n              NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.DOWNLOADING_SIGNED_CONSENT'));\n              _context.next = 7;\n              return UserProfilesService.getPactsafeEula(this.patientUserProfile.id);\n            case 7:\n              _context.next = 14;\n              break;\n            case 9:\n              _context.prev = 9;\n              _context.t0 = _context[\"catch\"](2);\n              e = _context.t0;\n              $log.log('this.downloadPactsafeEula error', e);\n              NotificationsService.error($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.ERROR_DOWNLOADING_SIGNED_CONSENT'));\n            case 14:\n              this.downloadingEula = false;\n            case 15:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[2, 9]]);\n      }));\n      this.download99453 = function () {\n        var e;\n        if (this.downloading99453) {\n          return;\n        }\n        $log.log('this.download99453');\n        try {\n          this.downloading99453 = true;\n        } catch (error) {\n          // ToDo Implement download of 99453 documentation\n          e = error;\n          $log.log('this.download99453 error', e);\n        }\n        this.downloading99453 = false;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-observation-report/e-observation-download-substantiation-files/e-observation-download-substantiation-files.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePaymentMethod\n   * @restrict E\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} stripeCustomer stripe customer object\n   * @param {string=} nextState next state to navigate to after save\n   * @description\n   * Notification item to explain/prompt adding a credit card or bank account to practice\n   */\n  angular.module('enterprise').component('ePaymentMethod', {\n    bindings: {\n      enterpriseCustomer: '<',\n      stripeCustomer: '<',\n      nextState: '@',\n      nextStateTab: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state) {\n      this.$onInit = function () {\n        $log = $log.getInstance('ePaymentMethod');\n        return $log.log('ePaymentMethod component loaded');\n      };\n      this.$onInit = function () {\n        return $log.log('this.stripeCustomer', this.stripeCustomer);\n      };\n      this.navigate = function () {\n        if (this.nextStateTab) {\n          return this.submitPromise = $state.go(this.nextState, this.nextStateTab);\n        } else {\n          return this.submitPromise = $state.go(this.nextState);\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-notifications/e-payment-method/e-payment-method.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eOverdueInvoice\n   * @restrict E\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {string=} nextState next state to navigate to after save\n   * @description\n   * Notification item to explain/prompt adding an updated credit card or bank account to practice\n   */\n  angular.module('enterprise').component('eOverdueInvoice', {\n    bindings: {\n      enterpriseCustomer: '<',\n      nextState: '@',\n      nextStateTab: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eOverdueInvoice');\n        return $log.log('eOverdueInvoice component loaded');\n      };\n      this.navigate = function () {\n        if (this.nextStateTab) {\n          return this.submitPromise = $state.go(this.nextState, this.nextStateTab);\n        } else {\n          return this.submitPromise = $state.go(this.nextState);\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-notifications/e-overdue-invoice/e-overdue-invoice.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eNotificationMicrodeposits\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {string=} nextState next state to navigate to after save\n   * @description\n   * Notification item to explain/prompt micro-deposit verification\n   */\n  angular.module('enterprise').component('eNotificationMicrodeposits', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      nextState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, $state, ACHService, EACHService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eNotificationMicrodeposits');\n        $log.log('eNotificationMicrodeposits component loaded');\n        this.linkHandler = null; // a reference to the Plaid Link object\n        this.showLink = false;\n        this.accountsPendingVerification = [];\n        this.translationData = {};\n        return this.loadPromise = this.fetchAccountsPendingVerification();\n      };\n      this.onVerify = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return this.fetchAccountsPendingVerification();\n            case 2:\n              this.loadPromise = _context.sent;\n              if (!(this.accountsPendingVerification.length > 0)) {\n                _context.next = 6;\n                break;\n              }\n              this.translationData = {\n                nextBusinessDay: $filter('date')(this.accountsPendingVerification[0].next_business_day_at, 'MM/dd/yyyy')\n              };\n              return _context.abrupt(\"return\", this.showLink = true);\n            case 6:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.fetchAccountsPendingVerification = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var accountsPendingVerification, queryFilters;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              queryFilters = {\n                account_verification_status: 'pending_manual_verification',\n                is_expired: false\n              };\n              _context2.next = 3;\n              return EACHService.getAll(this.enterpriseCustomer.id, queryFilters);\n            case 3:\n              accountsPendingVerification = _context2.sent;\n              $log.log('accountsPendingVerification', accountsPendingVerification);\n              this.accountsPendingVerification = accountsPendingVerification;\n              if (this.accountsPendingVerification.length > 0) {\n                this.translationData = {\n                  nextBusinessDay: $filter('date')(this.accountsPendingVerification[0].next_business_day_at, 'MM/dd/yyyy')\n                };\n              }\n              return _context2.abrupt(\"return\", this.accountsPendingVerification);\n            case 8:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.onSuccess = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n          var error, plaidAchAccount;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.prev = 0;\n                _context3.next = 3;\n                return EACHService.onLinkSuccess(payload, this.enterpriseCustomer.id, this.user.user_profile.id, this.enterpriseCustomer.stripe_customer_id);\n              case 3:\n                plaidAchAccount = _context3.sent;\n                $log.log('plaidAchAccount', plaidAchAccount);\n                // TODO: determine status and show correct message\n                if (plaidAchAccount.account_verification_status === null || plaidAchAccount.account_verification_status === 'manually_verified') {\n                  this.accountsPendingVerification = [];\n                  this.fetchAccountsPendingVerification();\n                  NotificationsService.success('PORTAL.ALERTS.VERIFY_BANK.TOASTS.SUCCESS_VERIFIED');\n                } else {\n                  NotificationsService.success('PORTAL.ALERTS.VERIFY_BANK.TOASTS.SUCCESS_NOT_VERIFIED');\n                }\n                return _context3.abrupt(\"return\", $state.reload());\n              case 9:\n                _context3.prev = 9;\n                _context3.t0 = _context3[\"catch\"](0);\n                error = _context3.t0;\n                $log.log('onSuccess: error', error);\n                return _context3.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage || error.data.message || error.data.data.message));\n              case 14:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[0, 9]]);\n        }));\n        return function (_x) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.onLoad = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(payload) {\n          var link;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return EACHService.onLinkLoad(payload);\n              case 2:\n                link = _context4.sent;\n                this.linkHandler = link;\n                return _context4.abrupt(\"return\", this.hidePanel = true);\n              case 5:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this);\n        }));\n        return function (_x2) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.onEvent = function (payload) {\n        // OPEN\n        // SELECT_INSTITUTION\n        // HANDOFF\n        // TRANSITION_VIEW\n        $log.log('onEvent', payload);\n        if (payload.eventName === 'EXIT') {\n          this.hidePanel = false;\n        }\n      };\n      this.onExit = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(payload) {\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return EACHService.onLinkExit(payload);\n              case 2:\n                this.hidePanel = false;\n                return _context5.abrupt(\"return\", $state.reload());\n              case 4:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        return function (_x3) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.addBankAccountFailure = function () {\n        // enter a credit card instead\n        // $state.go(this.skipState)\n        return $log.log('add bank failure');\n      };\n      this.back = function () {\n        if (this.prevState) {\n          return this.backPromise = $state.go(this.prevState);\n        }\n      };\n      this.$onDestroy = function () {\n        EACHService.onLinkDestroy(this.linkHandler);\n        return this.showLink = false;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-notifications/e-notification-microdeposits/e-notification-microdeposits.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eNotesEditor\n   * @restrict E\n   * @requires $log\n   * @param {string} buttonText text displayed on submit button\n   * @param {string} placeholder for the editor\n   * @param {string} note model\n   * @param {function} onSubmit callback\n   * @description\n   * Displays the rich text editor and submit button\n   */\n  angular.module('enterprise').component('eNotesEditor', {\n    bindings: {\n      buttonText: '<',\n      placeholder: '<',\n      note: '<',\n      onSubmit: '&',\n      onChange: '&',\n      exceededNoteLimit: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $scope) {\n      var _this = this;\n      var submitChange;\n      this.$onInit = function () {\n        $log = $log.getInstance('eNotesEditor');\n        $log.log('eNotesEditor component Loaded');\n        // NOTE: textAngular toolbars are registered globally by `name`.\n        // This component can be rendered multiple times on the same page (e.g. RPM setup + CHF setup),\n        // so we must ensure the toolbar/editor names are unique per instance.\n        this.toolbarName = \"notes-toolbar-\".concat($scope.$id);\n        return this.editorName = \"noteEditor-\".concat($scope.$id);\n      };\n      this.onClick = function () {\n        $log.log('e-notes-editor:onSave', this.note);\n        if (this.onSubmit) {\n          submitChange.cancel();\n          return this.submitPromise = this.onSubmit({\n            note: this.note\n          });\n        }\n      };\n      submitChange = _.debounce(function (note) {\n        $log.log('e-notes-editor:onNoteEdited', note);\n        return _this.onChange({\n          note: note\n        });\n      }, 3000);\n      this.onNoteEdited = function (note) {\n        var ref;\n        if (this.onChange) {\n          submitChange(note);\n        }\n        return this.exceededNoteLimit = ((ref = this.note) != null ? ref.length : void 0) >= 2000;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-notes/e-notes-editor/e-notes-editor.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsProvision\n   * @restrict E\n   * @param {object} user user model object\n   * @param {object} enrollment enrollment model object\n   * @param {object} enterpriseCustomer enterpriseCustomer model object\n   * @description\n   * Admin page to update enrollment shipping info and also provision accounts from enrollments.\n   */\n  angular.module('enterprise').component('eEnrollmentsProvision', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enrollment: '<',\n      enterpriseCustomer: '<',\n      deviceTypes: '<',\n      enrollmentStatuses: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, $state, $filter, EEnrollmentsService, NotificationsService, EnrollmentSignatureStatuses, EnrollmentStatuses, Shippers, ShipmentStatuses, ShipmentsService, EUserProfilesService, DevicesService, $q, ErrorMessages) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eEnrollmentsProvision');\n        $log.log('this.enrollment', this.enrollment);\n        $log.log('enrollment statuses', this.enrollmentStatuses);\n        this.openPendingTrackingStatus = this.enrollmentStatuses.find(function (status) {\n          return status.key_name === 'OPEN_PENDING_TRACKING';\n        });\n        this.activeTab = 0;\n        this.deviceSerial = null;\n        this.isBillableEditable = true;\n        this.signatureStatusLabelOptionsArray = EnrollmentSignatureStatuses;\n        this.shipperLabelOptionsArray = Shippers;\n        this.shipmentStatusesLabelOptionsArray = ShipmentStatuses;\n        if (this.enrollment.enrolled_user_profile_id) {\n          this.getEnrolledPatient();\n        }\n        this.statusLabelOptionsArray = _.map(this.enrollmentStatuses, function (status) {\n          return {\n            label: status.name,\n            value: status.id\n          };\n        });\n        this.signedEULAMethod = this.enrollment.enrollment_tos_delivery_methods.find(function (eulaMethod) {\n          return eulaMethod.signature_status === 'SIGNED';\n        });\n        return this.pactsafeObj = _.get(this.signedEULAMethod, 'tos_delivery_response', null);\n      };\n      this.getEnrolledPatient = function () {\n        var _this = this;\n        this.isLoading = true;\n        return EUserProfilesService.get(this.enterpriseCustomer.id, this.enrollment.enrolled_user_profile_id).then(function (enrolledProfile) {\n          $log.log('enrolledProfile', enrolledProfile);\n          _this.enrolledPatient = enrolledProfile;\n          return DevicesService.getAll(_this.enrolledPatient.id).then(function (devices) {\n            return _this.patientDevices = devices;\n          });\n        }).finally(function () {\n          return _this.isLoading = false;\n        });\n      };\n      this.getDeviceTypeName = function (deviceTypeId, shipment) {\n        var deviceType;\n        deviceType = _.find(this.deviceTypes.data.data, {\n          id: deviceTypeId\n        });\n        if (!deviceType) {\n          return shipment.device_type.description;\n        }\n        return deviceType.description;\n      };\n      this.getDeviceTypeCategory = function (deviceTypeId) {\n        var deviceType;\n        deviceType = _.find(this.deviceTypes.data.data, {\n          id: deviceTypeId\n        });\n        return deviceType.category;\n      };\n      this.getShipmentForDeviceTypeId = function (deviceTypeId) {\n        return _.find(this.enrollment.shipments, {\n          device_type_id: deviceTypeId\n        });\n      };\n      this.onTabSelect = function (event, inputId) {\n        $log.log('event', event);\n        return this.timeout = $timeout(function () {\n          return angular.element(inputId).focus();\n        }, 100);\n      };\n      this.save = function (enrollment) {\n        return this.submitPromise = EEnrollmentsService.put(enrollment.enterprise_customer_id, enrollment).then(function (enrollment) {\n          var thisEnrollment;\n          thisEnrollment = enrollment[1][0];\n          $log.log('thisEnrollment', thisEnrollment);\n          return NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.UPDATED');\n        }).catch(function (error) {\n          $log.log('error', error);\n          return NotificationsService.error('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR');\n        });\n      };\n      this.saveEnrollment = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enrollment) {\n          var _this2 = this;\n          var error, shipmentPromises;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return EEnrollmentsService.put(enrollment.enterprise_customer_id, enrollment);\n              case 3:\n                shipmentPromises = [];\n                _.each(enrollment.shipments, function (shipment) {\n                  return shipmentPromises.push(ShipmentsService.put(shipment));\n                });\n                return _context.abrupt(\"return\", this.submitPromise = $q.all(shipmentPromises).then(function (updatedShipments) {\n                  $log.log('updatedShipments', updatedShipments);\n                  NotificationsService.success('Successfully updated enrollment and shipments.');\n                  $log.log('this.enrollmentShippingForm', _this2.enrollmentShippingForm);\n                  _this2.enrollmentShippingForm.$setPristine();\n                  return _this2.enrollmentShippingForm.$setUntouched();\n                }).catch(function (error) {\n                  $log.error('saveShipments', error);\n                  NotificationsService.error(error.data.data.message);\n                }));\n              case 8:\n                _context.prev = 8;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                $log.log('error', error);\n                return _context.abrupt(\"return\", NotificationsService.error(error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 8]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.provisionAccount = function (enrollment, deviceSerial) {\n        var _this3 = this;\n        if (enrollment.enrollment_status_id !== this.openPendingTrackingStatus.id) {\n          NotificationsService.error(ErrorMessages.CANNOT_PROVISION_NOT_PENDING_TRACKING);\n          return;\n        }\n        delete enrollment.enrollment_tos_delivery_methods;\n        return this.submitPromise = EEnrollmentsService.put(enrollment.enterprise_customer_id, enrollment).then(function (updatedEnrollment) {\n          $log.log('updatedEnrollment', updatedEnrollment);\n          return EEnrollmentsService.provisionNewPatientAccount(enrollment.enterprise_customer_id, enrollment.id, deviceSerial).then(function (updatedEnrollment) {\n            $log.log('updatedEnrollment', updatedEnrollment);\n            NotificationsService.success('Successfully provisioned new account');\n            _this3.deviceSerial = null;\n            $state.go('enterprise.enrollments');\n          });\n        }).catch(function (error) {\n          $log.error('provisionAccount', error);\n          NotificationsService.error(error.data.data.message);\n        });\n      };\n      // device serials must be uppercase - enforce here\n      this.upcaseDeviceSerial = function (payload) {\n        payload.shipment.serial = $filter('uppercase')(payload.model);\n      };\n      this.upcaseDeviceSerialLegacy = function (payload) {\n        this.deviceSerial = $filter('uppercase')(payload.model);\n      };\n      this.isProviderTestDeviceAccount = function (payload) {\n        $log.log('isProviderTestDeviceAccount', payload);\n        if (payload.model) {\n          this.enrollment.is_billable = false;\n          this.isBillableEditable = false;\n        } else {\n          this.enrollment.is_billable = true;\n          this.isBillableEditable = true;\n        }\n      };\n      this.$onDestroy = function () {\n        return $timeout.cancel(this.timeout);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-provision/e-enrollments-provision.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsList\n   * @restrict E\n   * @param {object} enterpriseCustomerId the enterprise company id the admin belongs to\n   * @param {object} enrollments the pre-enrollments for the enterprise customer\n   * @description\n   * Displays enterprise admin enrollments (wearers pre-enrolled by enterprise customer)\n   */\n  angular.module('enterprise').component('eEnrollmentsList', {\n    bindings: {\n      enterpriseCustomerId: '<',\n      enrollments: '<',\n      deviceTypes: '<',\n      enrollmentStatuses: '<',\n      primaryProviders: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $window, $stateParams, PER_PAGE, uuid4, EEnrollmentsService, NotificationsService, AuthService, InPersonAgreementTypes, StandardPagination, DateOfBirthConfigService) {\n      var _this5 = this;\n      var attachInPersonEULAMethodsToEnrollment;\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('eEnrollmentsList');\n        $log.log('eEnrollmentsList component loaded', this.enrollments);\n        this.enrollmentCount = this.enrollments.headers('X-Total-Count');\n        this.itemsPerPage = PER_PAGE.ENROLLMENTS;\n        this.pageNumber = $stateParams.enrollment_page || 1;\n        attachInPersonEULAMethodsToEnrollment();\n        this.enrollmentStatusOptionsArray = [];\n        this.InPersonAgreementTypes = InPersonAgreementTypes;\n        this.isInternalUser = AuthService.isInternal();\n        this.primaryProviderOptions = _.map(this.primaryProviders, function (provider) {\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n            value: provider.id\n          };\n        });\n        this.primaryProviderOptions.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.primaryProviderQuery = null;\n        this.enrollmentStatuses.forEach(function (status) {\n          if (status.context !== 'CANCELED' && status.key_name !== 'OPEN_MISSING_INFORMATION') {\n            return _this.enrollmentStatusOptionsArray.push({\n              label: status.name,\n              value: status.key_name\n            });\n          }\n        });\n        // Push a general Canceled item to the end since no specific filter item should exist for each individual cancel status item.\n        this.enrollmentStatusOptionsArray.push({\n          label: 'Canceled',\n          value: 'Canceled'\n        });\n        // Insert an object with empty/null values so you can deselect filter\n        this.enrollmentStatusOptionsArray.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.statusQuery = null;\n        this.queryString = {};\n        this.optionsForPagination = StandardPagination;\n        this.initDatePicker();\n        this.isExportCollapsed = true;\n        this.showSpinner = false;\n      };\n      this.download = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(useFilters) {\n          var cacheBuster, enrollments, error, filters;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                this.showSpinner = true;\n                cacheBuster = uuid4.generate();\n                if (useFilters) {\n                  filters = Object.assign({}, this.queryString);\n                  delete filters['_perPage'];\n                  delete filters['_page'];\n                  filters = Object.assign(filters, {\n                    _cacheBuster: cacheBuster,\n                    _packageForDownload: true\n                  });\n                } else {\n                  filters = {\n                    _cacheBuster: cacheBuster,\n                    _packageForDownload: true\n                  };\n                }\n                _context.prev = 3;\n                _context.next = 6;\n                return EEnrollmentsService.getAll(this.enterpriseCustomerId, filters);\n              case 6:\n                enrollments = _context.sent;\n                $window.location.href = enrollments.data.data.url;\n                _context.next = 15;\n                break;\n              case 10:\n                _context.prev = 10;\n                _context.t0 = _context[\"catch\"](3);\n                error = _context.t0;\n                NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n                $log.log('error', error);\n              case 15:\n                this.isExportCollapsed = true;\n                return _context.abrupt(\"return\", this.showSpinner = false);\n              case 17:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[3, 10]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.initDatePicker = function () {\n        var _this2 = this;\n        var datePickerEventHandler, jsEndDate, jsStartDate;\n        jsStartDate = DateOfBirthConfigService.startDateDOB.toJSDate();\n        jsEndDate = DateOfBirthConfigService.endDateDOB.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        datePickerEventHandler = {\n          'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n            var payload;\n            $log.log('applying date range', event, picker, _this2.datePicker.date);\n            payload = {\n              model: {\n                'during': _this2.datePicker.date.startDate.local().format('YYYY-MM-DD'),\n                'and': _this2.datePicker.date.endDate.local().format('YYYY-MM-DD')\n              }\n            };\n            return _this2.onChange('date_of_birth', payload);\n          }\n        };\n        this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: DateOfBirthConfigService.setupOptions()\n        };\n        return this.datePicker.options.eventHandlers = datePickerEventHandler;\n      };\n      this.onVisitSignature = function (enrollment, type) {\n        // Only show the pactsafe agreement if there was an in person method\n        if (type === InPersonAgreementTypes.PATIENT && enrollment.inPersonEULAMethod) {\n          $log.log('enrollment', enrollment);\n          return $window.location.href = enrollment.inPersonEULAMethod.tos_delivery_response.signers[0].request_url;\n        } else if (type === InPersonAgreementTypes.PHYSICIAN_ATTESTATION && enrollment.physicianAttestationEULAMethod) {\n          return $window.location.href = enrollment.physicianAttestationEULAMethod.tos_delivery_response.signers[0].request_url;\n        }\n      };\n      this.deleteEnrollment = function (enterpriseEnrollmentId) {\n        var that;\n        that = this;\n        return EEnrollmentsService.delete(this.enterpriseCustomerId, enterpriseEnrollmentId).then( /*#__PURE__*/function () {\n          var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(response) {\n            var enrollments;\n            return regeneratorRuntime.wrap(function _callee2$(_context2) {\n              while (1) switch (_context2.prev = _context2.next) {\n                case 0:\n                  _context2.next = 2;\n                  return EEnrollmentsService.getAll(that.enterpriseCustomerId, that.queryString);\n                case 2:\n                  enrollments = _context2.sent;\n                  that.enrollments = enrollments;\n                  attachInPersonEULAMethodsToEnrollment();\n                  that.enrollmentCount = enrollments.headers('X-Total-Count');\n                  return _context2.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS.TOASTS.SUCCESS'));\n                case 7:\n                case \"end\":\n                  return _context2.stop();\n              }\n            }, _callee2);\n          }));\n          return function (_x2) {\n            return _ref2.apply(this, arguments);\n          };\n        }()).catch(function (error) {\n          $log.log('error', error);\n          return NotificationsService.error(error.data.errorMessage);\n        });\n      };\n      this.goToPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var enrollments, newQueryString;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log.log('goToPage', this.pageNumber);\n              newQueryString = {\n                _page: this.pageNumber,\n                _perPage: this.itemsPerPage,\n                _sortDir: 'desc',\n                _sortField: 'created_at'\n              };\n              // Maintain query string with all filters when navigating between pages.\n              this.queryString = Object.assign(this.queryString, newQueryString);\n              _context3.next = 5;\n              return EEnrollmentsService.getAll(this.enterpriseCustomerId, this.queryString);\n            case 5:\n              enrollments = _context3.sent;\n              $state.go('.', {\n                enrollment_page: this.pageNumber\n              });\n              this.enrollments = enrollments;\n              attachInPersonEULAMethodsToEnrollment();\n              return _context3.abrupt(\"return\", this.enrollmentCount = enrollments.headers('X-Total-Count'));\n            case 10:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.onChange = function (property, payload) {\n        var _this3 = this;\n        var newQueryString;\n        this.showSpinner = true;\n        newQueryString = {\n          _page: 1,\n          _perPage: this.itemsPerPage,\n          _sortDir: 'desc',\n          _sortField: 'created_at'\n        };\n        // Assign new filter property\n        if (payload.model) {\n          if (property === 'full_name') {\n            payload = {\n              'concat': 'true',\n              'field_1': 'name_first',\n              'field_2': 'name_last',\n              'value': payload.model\n            };\n            newQueryString['full_name'] = payload;\n          } else {\n            newQueryString[property] = payload.model;\n          }\n        }\n        // Remove filter property if it exists in the query string and if payload value is falsy\n        if (this.queryString[property] && !payload.model) {\n          delete this.queryString[property];\n        }\n        // Allows for multiple filters at once.\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        return EEnrollmentsService.getAll(this.enterpriseCustomerId, this.queryString).then(function (enrollments) {\n          $log.log('enrollments', enrollments);\n          $state.go('.', {\n            enrollment_page: _this3.pageNumber\n          });\n          _this3.pageNumber = 1;\n          _this3.enrollmentCount = enrollments.headers('X-Total-Count');\n          _this3.enrollments = enrollments;\n          attachInPersonEULAMethodsToEnrollment();\n          return _this3.showSpinner = false;\n        }).catch(function (error) {\n          NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n          return this.showSpinner = false;\n        });\n      };\n      this.getDeviceType = function (enrollment) {\n        var deviceTypes;\n        // $log.log 'getDeviceType: enrollment', enrollment\n        deviceTypes = enrollment.device_type;\n        if (enrollment.shipments.length > 0) {\n          deviceTypes = _.map(enrollment.shipments, function (shipment) {\n            return shipment.device_type.description;\n          }).join(', ').toUpperCase();\n        }\n        return deviceTypes;\n      };\n      this.getDeviceTypeName = function (deviceTypeId) {\n        var deviceType;\n        deviceType = _.find(this.deviceTypes.data.data, {\n          id: deviceTypeId\n        });\n        return deviceType.category;\n      };\n      this.getShippingInfo = function (enrollment) {\n        var _this4 = this;\n        var info;\n        info = \"\";\n        _.each(enrollment.shipments, function (shipment) {\n          if (shipment.tracking_number) {\n            return info += \"<p>\".concat(_this4.getDeviceTypeName(shipment.device_type_id), \" \").concat(shipment.carrier, \" \").concat(shipment.tracking_number, \"</p>\");\n          } else {\n            return info += \"<p>\".concat(_this4.getDeviceTypeName(shipment.device_type_id), \" awaiting shipment</p>\");\n          }\n        });\n        return info;\n      };\n      attachInPersonEULAMethodsToEnrollment = function attachInPersonEULAMethodsToEnrollment() {\n        var enrollment, i, len, ref, results;\n        ref = _this5.enrollments.data.data;\n        // Attach any delivery methods that need to be signed in person to the top most level of the object so we can easily access it in the html without a function based watcher.\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n          enrollment = ref[i];\n          enrollment.inPersonEULAMethod = enrollment.enrollment_tos_delivery_methods.find(function (method) {\n            return method.tos_delivery_method.key_name === 'IN_PERSON';\n          });\n          results.push(enrollment.physicianAttestationEULAMethod = enrollment.enrollment_tos_delivery_methods.find(function (method) {\n            return method.tos_delivery_method.key_name === 'PHYSICIAN_ATTESTATION';\n          }));\n        }\n        return results;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-list/e-enrollments-list.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsIncompleteList\n   * @restrict E\n   * @param {object} enterpriseCustomerId the enterprise company id the admin belongs to\n   * @param {object} enrollments the pre-enrollments for the enterprise customer\n   * @description\n   * Displays enterprise admin enrollments (wearers pre-enrolled by enterprise customer)\n   */\n  angular.module('enterprise').component('eEnrollmentsIncompleteList', {\n    bindings: {\n      enterpriseCustomerId: '<',\n      enrollments: '<',\n      deviceTypes: '<',\n      enrollmentStatuses: '<',\n      primaryProviders: '<',\n      editState: '@'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $window, $stateParams, PER_PAGE, uuid4, EEnrollmentsService, NotificationsService, AuthService, InPersonAgreementTypes, StandardPagination, MissingInformationFilter, DateOfBirthConfigService) {\n      var _this3 = this;\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('eEnrollmentsIncompleteList');\n        $log.log('eEnrollmentsListIncomplete component loaded', this.enrollments);\n        this.isAdmin = AuthService.isAdmin() || AuthService.isAccountManager();\n        this.enrollmentCount = this.enrollments.headers('X-Total-Count');\n        this.itemsPerPage = PER_PAGE.ENROLLMENTS;\n        this.pageNumber = $stateParams.enrollment_page || 1;\n        this.attachInPersonEULAMethodsToEnrollment();\n        this.enrollmentStatusOptionsArray = [];\n        this.InPersonAgreementTypes = InPersonAgreementTypes;\n        this.primaryProviderOptions = _.map(this.primaryProviders, function (provider) {\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n            value: provider.id\n          };\n        });\n        this.primaryProviderOptions.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.primaryProviderQuery = null;\n        // PP 712 v2 functionality\n        this.primaryDOBOptions = [{\n          label: 'Over 65',\n          value: '{\"gt\", \"something\"}'\n        }, {\n          label: 'Under 65',\n          value: '{\"lt\", \"something\"}'\n        }, {\n          label: '65 in < 6 months',\n          value: '{\"?\", \"?\"}'\n        }];\n        // PP-834, More specific incomplete information\n        this.incompleteFilterOptions = MissingInformationFilter;\n        this.incompleteFilterModel = _.clone(MissingInformationFilter, true);\n        // PP-712\n        this.enrollmentStatuses.forEach(function (status) {\n          if (status.key_name === 'OPEN_MISSING_INFORMATION' || status.key_name === 'OPEN_CONSULT' || status.key_name === 'OPEN_UNABLE_TO_CONTACT') {\n            return _this.enrollmentStatusOptionsArray.push({\n              label: status.name,\n              value: status.key_name\n            });\n          }\n        });\n        // Push a general Canceled item to the end since no specific filter item should exist for each individual cancel status item.\n        this.enrollmentStatusOptionsArray.push({\n          label: 'Canceled',\n          value: 'Canceled'\n        });\n        // Insert an object with empty/null values so you can deselect filter\n        this.enrollmentStatusOptionsArray.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.statusQuery = null;\n        this.missingQuery = null;\n        this.queryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sortDir: 'desc',\n          _sortField: 'created_at'\n        };\n        this.optionsForPagination = StandardPagination;\n        this.isExportCollapsed = true;\n        this.initDatePicker();\n        this.showSpinner = false;\n      };\n      this.initDatePicker = function () {\n        var _this2 = this;\n        var datePickerEventHandler, jsEndDate, jsStartDate;\n        jsStartDate = DateOfBirthConfigService.startDateDOB.toJSDate();\n        jsEndDate = DateOfBirthConfigService.endDateDOB.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        datePickerEventHandler = {\n          'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n            var payload;\n            $log.log('applying date range', event, picker, _this2.datePicker.date);\n            payload = {\n              model: {\n                'during': _this2.datePicker.date.startDate.local().format('YYYY-MM-DD'),\n                'and': _this2.datePicker.date.endDate.local().format('YYYY-MM-DD')\n              }\n            };\n            return _this2.onChange('date_of_birth', payload);\n          }\n        };\n        this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: DateOfBirthConfigService.setupOptions()\n        };\n        return this.datePicker.options.eventHandlers = datePickerEventHandler;\n      };\n      this.onVisitSignature = function (enrollment, type) {\n        // Only show the pactsafe agreement if there was an in person method\n        if (type === InPersonAgreementTypes.PATIENT && enrollment.inPersonEULAMethod) {\n          $log.log('enrollment-inc', enrollment);\n          return $window.location.href = enrollment.inPersonEULAMethod.tos_delivery_response.signers[0].request_url;\n        } else if (type === InPersonAgreementTypes.PHYSICIAN_ATTESTATION && enrollment.physicianAttestationEULAMethod) {\n          return $window.location.href = enrollment.physicianAttestationEULAMethod.tos_delivery_response.signers[0].request_url;\n        }\n      };\n      this.editEnrollment = function (enrollment) {\n        $log.log('enrollment-inc', enrollment);\n        $log.log('this.editState', this.editState);\n        return $state.go(this.editState, {\n          enterprise_enrollment_id: enrollment.id\n        });\n      };\n      this.deleteEnrollment = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseEnrollmentId) {\n          var enrollments, error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return EEnrollmentsService.delete(this.enterpriseCustomerId, enterpriseEnrollmentId);\n              case 3:\n                _context.next = 5;\n                return EEnrollmentsService.getAllIncomplete(this.enterpriseCustomerId);\n              case 5:\n                enrollments = _context.sent;\n                this.enrollments = enrollments;\n                this.attachInPersonEULAMethodsToEnrollment();\n                this.enrollmentCount = enrollments.headers('X-Total-Count');\n                return _context.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS.TOASTS.SUCCESS'));\n              case 12:\n                _context.prev = 12;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                $log.log('error', error);\n                return _context.abrupt(\"return\", NotificationsService.error(error.data.errorMessage));\n              case 17:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 12]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.missingFilterChange = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var enrollments, error;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log(\"filter\", _this3.incompleteFilterModel);\n              if (_this3.incompleteFilterModel && _this3.incompleteFilterModel.length > 0 && _this3.incompleteFilterModel.length !== MissingInformationFilter.length) {\n                Object.assign(_this3.queryString, {\n                  '_filter_missing': {\n                    \"in\": _.map(_this3.incompleteFilterModel, 'value')\n                  }\n                });\n              } else {\n                delete _this3.queryString['_filter_missing'];\n              }\n              _context2.prev = 2;\n              _context2.next = 5;\n              return EEnrollmentsService.getAllIncomplete(_this3.enterpriseCustomerId, _this3.queryString);\n            case 5:\n              enrollments = _context2.sent;\n              $log.log('incomplete enrollments', enrollments);\n              $state.go('.', {\n                enrollment_page: _this3.pageNumber\n              });\n              _this3.enrollmentCount = enrollments.headers('X-Total-Count');\n              _this3.enrollments = enrollments;\n              _this3.attachInPersonEULAMethodsToEnrollment();\n              return _context2.abrupt(\"return\", _this3.showSpinner = false);\n            case 14:\n              _context2.prev = 14;\n              _context2.t0 = _context2[\"catch\"](2);\n              error = _context2.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              return _context2.abrupt(\"return\", $log.log('error', error));\n            case 19:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, null, [[2, 14]]);\n      }));\n      this.goToPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var enrollments, error, newQueryString;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log.log('goToPage', this.pageNumber);\n              newQueryString = {\n                _page: this.pageNumber,\n                _perPage: this.itemsPerPage,\n                _sortDir: 'desc',\n                _sortField: 'created_at'\n              };\n              // Maintain query string with all filters when navigating between pages.\n              this.queryString = Object.assign(this.queryString, newQueryString);\n              _context3.prev = 3;\n              _context3.next = 6;\n              return EEnrollmentsService.getAllIncomplete(this.enterpriseCustomerId, this.queryString);\n            case 6:\n              enrollments = _context3.sent;\n              $log.log('incomplete enrollments', enrollments);\n              $state.go('.', {\n                enrollment_page: this.pageNumber\n              });\n              this.enrollmentCount = enrollments.headers('X-Total-Count');\n              this.enrollments = enrollments;\n              this.attachInPersonEULAMethodsToEnrollment();\n              return _context3.abrupt(\"return\", this.showSpinner = false);\n            case 15:\n              _context3.prev = 15;\n              _context3.t0 = _context3[\"catch\"](3);\n              error = _context3.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              return _context3.abrupt(\"return\", $log.log('error', error));\n            case 20:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[3, 15]]);\n      }));\n      this.download = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(useFilters) {\n          var cacheBuster, enrollments, error, filters;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                this.showSpinner = true;\n                cacheBuster = uuid4.generate();\n                if (useFilters) {\n                  filters = Object.assign({}, this.queryString);\n                  delete filters['_perPage'];\n                  delete filters['_page'];\n                  filters = Object.assign(filters, {\n                    _cacheBuster: cacheBuster,\n                    _packageForDownload: true\n                  });\n                } else {\n                  filters = {\n                    _cacheBuster: cacheBuster,\n                    _packageForDownload: true\n                  };\n                }\n                _context4.prev = 3;\n                _context4.next = 6;\n                return EEnrollmentsService.getAllIncomplete(this.enterpriseCustomerId, filters);\n              case 6:\n                enrollments = _context4.sent;\n                $window.location.href = enrollments.data.data.url;\n                _context4.next = 15;\n                break;\n              case 10:\n                _context4.prev = 10;\n                _context4.t0 = _context4[\"catch\"](3);\n                error = _context4.t0;\n                NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n                $log.log('error', error);\n              case 15:\n                this.isExportCollapsed = true;\n                return _context4.abrupt(\"return\", this.showSpinner = false);\n              case 17:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this, [[3, 10]]);\n        }));\n        return function (_x2) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.onChange = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(property, payload) {\n          var enrollments, error, newQueryString;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                this.showSpinner = true;\n                newQueryString = {\n                  _page: 1,\n                  _perPage: this.itemsPerPage,\n                  _sortDir: 'desc',\n                  _sortField: 'created_at'\n                };\n                if (payload.model) {\n                  if (property === 'full_name') {\n                    payload = {\n                      'concat': 'true',\n                      'field_1': 'name_first',\n                      'field_2': 'name_last',\n                      'value': payload.model\n                    };\n                    newQueryString['full_name'] = payload;\n                  } else {\n                    newQueryString[property] = payload.model;\n                  }\n                }\n                // Remove filter property if it exists in the query string and if payload value is falsy\n                if (this.queryString[property] && !payload.model) {\n                  delete this.queryString[property];\n                }\n                // Allows for multiple filters at once.\n                this.queryString = Object.assign(this.queryString, newQueryString);\n                _context5.prev = 5;\n                _context5.next = 8;\n                return EEnrollmentsService.getAllIncomplete(this.enterpriseCustomerId, this.queryString);\n              case 8:\n                enrollments = _context5.sent;\n                $log.log('incomplete enrollments', enrollments);\n                $state.go('.', {\n                  enrollment_page: this.pageNumber\n                });\n                this.pageNumber = 1;\n                this.enrollmentCount = enrollments.headers('X-Total-Count');\n                this.enrollments = enrollments;\n                this.attachInPersonEULAMethodsToEnrollment();\n                return _context5.abrupt(\"return\", this.showSpinner = false);\n              case 18:\n                _context5.prev = 18;\n                _context5.t0 = _context5[\"catch\"](5);\n                error = _context5.t0;\n                NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n                return _context5.abrupt(\"return\", $log.log('error', error));\n              case 23:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this, [[5, 18]]);\n        }));\n        return function (_x3, _x4) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.getDeviceType = function (enrollment) {\n        var deviceTypes;\n        // $log.log 'getDeviceType: enrollment', enrollment\n        deviceTypes = enrollment.device_type;\n        if (enrollment.shipments.length > 0) {\n          deviceTypes = _.map(enrollment.shipments, function (shipment) {\n            return shipment.device_type.description;\n          }).join(', ').toUpperCase();\n        }\n        return deviceTypes;\n      };\n      this.getDeviceTypeName = function (deviceTypeId) {\n        var deviceType;\n        deviceType = _.find(this.deviceTypes.data.data, {\n          id: deviceTypeId\n        });\n        return deviceType.category;\n      };\n      this.getShippingInfo = function (enrollment) {\n        var _this4 = this;\n        var info;\n        info = \"\";\n        _.each(enrollment.shipments, function (shipment) {\n          if (shipment.tracking_number) {\n            return info += \"<p>\".concat(_this4.getDeviceTypeName(shipment.device_type_id), \" \").concat(shipment.carrier, \" \").concat(shipment.tracking_number, \"</p>\");\n          } else {\n            return info += \"<p>\".concat(_this4.getDeviceTypeName(shipment.device_type_id), \" awaiting shipment</p>\");\n          }\n        });\n        return info;\n      };\n      this.attachInPersonEULAMethodsToEnrollment = function () {\n        var enrollment, i, len, ref, results;\n        ref = _this3.enrollments.data.data;\n        // Attach any delivery methods that need to be signed in person to the top most level of the object so we can easily access it in the html without a function based watcher.\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n          enrollment = ref[i];\n          enrollment.inPersonEULAMethod = enrollment.enrollment_tos_delivery_methods.find(function (method) {\n            return method.tos_delivery_method.key_name === 'IN_PERSON';\n          });\n          results.push(enrollment.physicianAttestationEULAMethod = enrollment.enrollment_tos_delivery_methods.find(function (method) {\n            return method.tos_delivery_method.key_name === 'PHYSICIAN_ATTESTATION';\n          }));\n        }\n        return results;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-list/e-enrollments-incomplete-list.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsAddCard\n   * @restrict E\n   * @param {object} user user model object\n   * @description\n   * Add an enterprise enrollment\n   */\n  var indexOf = [].indexOf;\n  angular.module('enterprise').component('eEnrollmentsIncompleteEditCard', {\n    'ngInject': 'ngInject',\n    bindings: {\n      enrollment: '<',\n      isInternal: '<',\n      enterpriseCustomerId: '<',\n      adminUserProfileId: '<',\n      relationships: '<',\n      deviceTypes: '<',\n      medAdvantageProviders: '<',\n      providers: '<',\n      tosDeliveryMethods: '<',\n      cancelState: '@',\n      enterpriseCustomer: '<',\n      globalConfigurations: '<',\n      user: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, $window, $rootScope, $timeout, $state, $element, $q, TranslationHelperService, StatesService, REGEX, UserService, UserProfilesService, DevicesService, AddressLookupService, RelationshipsService, NotificationsService, EEnrollmentsService, GendersService, Icd10Service, PactsafeService, ShipmentsService, EEnrollmentTOSDeliveryMethodsService, EPatientToPolicyholderRelationService, EInsurerTypeService, SignatureStatuses, MedicareAdvantageService, MAX_PHONE_NUMBERS_COUNT, PORTAL_ENROLLMENT_SOURCE, LanguagesService, PatientServicesService, GroupService) {\n      var _this3 = this;\n      var addSelectedTOSDeliveryMethodsToEnrollment, calculateDifferences, createEnrollment, enrollmentTosDeliveryObject, findInPersonEnrollmentTosDeliveryMethod, getInPersonAgreementRequestUrl, getTOSDeliveryMethodIDByKeyName, isMethodInEnrollmentTOSDeliveryMethods, redirectToInPersonAgreement, selectAllAvailableElectronicMethods, setLastRequestedTOSDeliveryMethods, updateEnrollment, updateEnrollmentDeliveryMethod, updateEnrollmentTOSDeliveryMethods, updateShipments;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var allGroups, error, loggedInOffice, medAdvantageProviderOptions, patientServices, ref, ref1, ref10, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('eEnrollmentsIncompleteEditCard');\n              this.timeout = null;\n              this.agreementUrlPollActive = false;\n              if (this.enterpriseCustomer.ehr_type) {\n                this.ehrIdFieldPlaceholderText = \"\".concat(this.enterpriseCustomer.ehr_type.name, \"'s Unique ID for this Patient\");\n              } else {\n                this.ehrIdFieldPlaceholderText = \"Your EHR's Unique ID for this Patient\";\n              }\n              this.readyToSave = false;\n              $log.log('this.isInternal', this.isInternal);\n              this.numberOfAdditionalPhoneNumbers = MAX_PHONE_NUMBERS_COUNT - 1;\n              this.numberExistingAdditionalPhoneNumberInputs = EEnrollmentsService.getExistingAdditionalPhoneNumberInputs(this.enrollment);\n              this.relationshipsOptionsArray = _.map(this.relationships, function (relationship) {\n                return {\n                  label: relationship.name,\n                  value: relationship.id\n                };\n              });\n              medAdvantageProviderOptions = _.map(this.medAdvantageProviders, function (provider) {\n                return {\n                  label: provider.name,\n                  value: provider.id\n                };\n              });\n              // Insert an object with empty/null values so you can deselect medicare advantage\n              medAdvantageProviderOptions.splice(0, 0, {\n                label: '',\n                value: null\n              });\n              this.medAdvantageProviderOptions = medAdvantageProviderOptions;\n              this.providerOptions = EEnrollmentsService.generateProviderOptions(this.providers, this.enrollment);\n              _context.next = 15;\n              return EPatientToPolicyholderRelationService.getAll();\n            case 15:\n              this.ptprTypes = _context.sent;\n              this.ptprTypeOptions = _.map(this.ptprTypes, function (ptpr) {\n                return {\n                  label: ptpr.name,\n                  value: ptpr.id\n                };\n              });\n              _context.next = 19;\n              return EInsurerTypeService.getAll();\n            case 19:\n              this.insurerTypes = _context.sent;\n              this.insurerTypeOptions = _.map(this.insurerTypes, function (insurer) {\n                return {\n                  label: insurer.name,\n                  value: insurer.id\n                };\n              });\n              if ((ref = this.enrollment) != null ? (ref1 = ref.primary_insurer) != null ? ref1.medicare_advantage_provider_id : void 0 : void 0) {\n                $log.log('Med Advantage', this.enrollment.primary_insurer.medicare_advantage_provider_id);\n                this.enrollment.primary_insurer.medicare_advantage_provider = _.find(this.medAdvantageProviders, {\n                  id: this.enrollment.primary_insurer.medicare_advantage_provider_id\n                }).name;\n              }\n              if (this.isInternal) {\n                this.isMedAdvantageNumsRequired = false;\n              } else {\n                this.isMedAdvantageNumsRequired = true;\n              }\n              this.isEmailDisabled = false;\n              this.activeTab = 0;\n              // create new record or load one to edit\n              if (_.isUndefined(this.enrollment)) {\n                this.enrollment = EEnrollmentsService.new();\n                // Set initial creator and current admin id on new enrollment.\n                this.enrollment.initial_creator_enterprise_admin_id = this.adminUserProfileId;\n                this.enrollment.enterprise_admin_id = this.adminUserProfileId;\n                this.enrollment.secondary_insurer.policy_holder_is_patient = true;\n                this.enrollment.tertiary_insurer.policy_holder_is_patient = true;\n              } else {\n                this.initialEnrollmentState = angular.copy(this.enrollment);\n                setLastRequestedTOSDeliveryMethods(this.initialEnrollmentState);\n                // Set last edited admin\n                this.enrollment.last_edited_enterprise_admin_id = this.adminUserProfileId;\n              }\n              this.enrollment.q_patient_present = true;\n              this.translationData = {\n                name: this.enrollment.name_first + ' ' + this.enrollment.name_last\n              };\n              this.ccmEnabled = (ref2 = this.features) != null ? (ref3 = ref2.ccm) != null ? ref3.is_enabled : void 0 : void 0;\n              $log.log('e-enrollments-add-card:ccmEnabled', this.ccmEnabled);\n              this.nonMedicareEnabled = (ref4 = this.features) != null ? (ref5 = ref4.non_medicare_providers) != null ? ref5.is_enabled : void 0 : void 0;\n              $log.log('e-enrollments-edit-card:non-medicare-providersEnabled', this.nonMedicareEnabled);\n              this.dXCodesRequired = !this.nonMedicareEnabled;\n              _context.prev = 33;\n              _context.next = 36;\n              return GroupService.getAll(this.user.user_profile.enterprise_customer_id, this.user.logged_in_office_id, {\n                _sortDir: 'asc',\n                _sortField: 'name'\n              });\n            case 36:\n              allGroups = _context.sent;\n              _context.next = 45;\n              break;\n            case 39:\n              _context.prev = 39;\n              _context.t0 = _context[\"catch\"](33);\n              error = _context.t0;\n              $log.log('eObservationReport.$onInit error calling GroupService.getAll()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              NotificationsService.error((error != null ? (ref6 = error.data) != null ? ref6.errorMessage : void 0 : void 0) || (error != null ? (ref7 = error.data) != null ? (ref8 = ref7.data) != null ? ref8.message : void 0 : void 0 : void 0) || error);\n            case 45:\n              loggedInOffice = this.user.logged_in_office_id;\n              this.enrollment = this.enrollment || {};\n              this.enrollment.patient_groups = this.enrollment.patient_groups || [];\n              this.groupOptions = _.map(allGroups.data.data, function (g) {\n                if (loggedInOffice === g.office_id) {\n                  return {\n                    id: g.id,\n                    name: g.name,\n                    key_name: g.key_name\n                  };\n                }\n              });\n              if (!this.enrollment.id) {\n                this.enrollment.has_no_email = false;\n              } else {\n                this.isEmailDisabled = this.enrollment.has_no_email;\n                this.enrollment.q_patient_present = false;\n                if (this.enrollment.has_no_email) {\n                  this.enrollment.email = null;\n                }\n                this.translationData.method = this.getEnrollmentSignedTOSMethod();\n              }\n              this.initialQuestionsAnswered = !!this.enrollment.id;\n              this.enrollment.enterprise_customer_id = this.enterpriseCustomerId;\n              this.stateOptionsArray = StatesService.states;\n              this.phoneLabelOptionsArray = UserProfilesService.phoneLabels;\n              this.deviceTypeLabelOptionsArray = DevicesService.deviceTypes;\n              this.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptions;\n              this.emailRegex = REGEX.EMAIL;\n              this.mbiRegex = REGEX.MBI;\n              this.genderOptionsArray = GendersService.getGenders;\n              // PP-712 Allow null gender\n              if (indexOf.call(this.genderOptionsArray, '') < 0) {\n                this.genderOptionsArray.push({\n                  label: '',\n                  value: ''\n                });\n              }\n              this.wristSizeOptionsArray = [{\n                label: 'Small',\n                value: 'SM'\n              }, {\n                label: 'Large',\n                value: 'LG'\n              }];\n              this.stateOptionsArray = StatesService.states;\n              this.showGlucoseTestsPerDayField = false;\n              this.glucoseTestsPerDayOptionsArray = EEnrollmentsService.getNumGlucoseTestsPerDay;\n              this.geocode = {\n                result: false,\n                processing: false\n              };\n              this.selectedDevices = [];\n              $log.log('this.deviceTypes', this.deviceTypes);\n              _.each(this.enrollment.shipments, function (shipment) {\n                var deviceType;\n                deviceType = _.find(_this.deviceTypes, {\n                  id: shipment.device_type_id\n                });\n                if (deviceType) {\n                  if (deviceType.category === 'GLUCOMETER') {\n                    _this.showGlucoseTestsPerDayField = true;\n                  }\n                  return _this.selectedDevices.push(deviceType);\n                }\n              });\n              this.legacyDevices = [];\n              _.each(this.enrollment.shipments, function (shipment) {\n                var deviceType;\n                deviceType = _.find(_this.deviceTypes, {\n                  id: shipment.device_type_id\n                });\n                if (!deviceType) {\n                  _this.legacyDevices.push(shipment);\n                  if (shipment.device_type.category === 'GLUCOMETER') {\n                    return _this.showGlucoseTestsPerDayField = true;\n                  }\n                }\n              });\n              $log.log('this.legacyDevices', this.legacyDevices);\n              _context.next = 73;\n              return PatientServicesService.getAll(this.enterpriseCustomer.id);\n            case 73:\n              patientServices = _context.sent;\n              this.serviceOptionsArray = _.map(patientServices, function (s) {\n                return {\n                  label: s.name,\n                  value: [{\n                    patient_service_id: s.id\n                  }]\n                };\n              });\n              this.serviceOptionsArray.push({\n                label: 'RPM and CCM',\n                value: _.map(patientServices, function (s) {\n                  return {\n                    patient_service_id: s.id\n                  };\n                })\n              });\n              this.selectedPatientServices = (ref9 = _.find(this.serviceOptionsArray, function (s) {\n                return _.isEqual(_.map(s.value, 'patient_service_id').sort(), _.map(_this.enrollment.model_patient_services || [], 'patient_service_id').sort());\n              })) != null ? ref9.value : void 0;\n              this.ccmPatientService = {\n                patient_service_id: (ref10 = _.find(patientServices, {\n                  name: 'CCM'\n                })) != null ? ref10.id : void 0\n              };\n              _context.prev = 78;\n              _context.next = 81;\n              return LanguagesService.getOnlySupportedLanguages();\n            case 81:\n              this.preferredLanguageOptionsArray = _context.sent;\n              _context.next = 88;\n              break;\n            case 84:\n              _context.prev = 84;\n              _context.t1 = _context[\"catch\"](78);\n              error = _context.t1;\n              $log.log('Languages Error', error);\n            case 88:\n              $log.log('this.preferredLanguageOptionsArray', this.preferredLanguageOptionsArray);\n              if (!this.enrollment.address) {\n                this.geocode.result = true;\n                this.enrollment.address = {};\n                this.enrollment.address.address_zipcode = '';\n              } else {\n                if (this.enrollment.id && this.enrollment.address.address_zipcode) {\n                  this.geocode.result = true;\n                }\n              }\n              // legacy conversion code below\n              if (this.enrollment.id && this.enrollment.device_type) {\n                this.adaptLegacyEnrollmentToDeviceType();\n              }\n              // legacy: for PERS_WATCH enrollments, clear old data\n              if (this.enrollment.id && this.enrollment.device_type === 'PERS_WATCH') {\n                this.enrollment.device_type = null;\n                this.enrollment.wrist_size = null;\n                this.enrollment.contacts = [];\n              }\n              this.enrollment.primary_insurer.medicare_advantage_provider_name = EEnrollmentsService.convertIDToLabel(this.enrollment.primary_insurer, this.medAdvantageProviderOptions);\n              this.showSecondaryInsurance = EEnrollmentsService.toggleShowInsurer(this.enrollment.secondary_insurer);\n              this.showTertiaryInsurance = EEnrollmentsService.toggleShowInsurer(this.enrollment.tertiary_insurer);\n              // Init the type selection if we have existing data\n              if (!(this.enrollment.primary_insurer.medicare_advantage_provider_name || this.enrollment.primary_insurer.individual_num || this.enrollment.primary_insurer.group_num)) {\n                _context.next = 99;\n                break;\n              }\n              return _context.abrupt(\"return\", this.insuranceType = 'other');\n            case 99:\n              return _context.abrupt(\"return\", this.insuranceType = 'medicare');\n            case 100:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[33, 39], [78, 84]]);\n      }));\n      this.validateBirthdate = function ($event) {\n        var isInvalid;\n        isInvalid = EEnrollmentsService.isInvalidBirthdate(this.enrollment.date_of_birth);\n        if (isInvalid) {\n          NotificationsService.error('Invalid date of birth');\n          NotificationsService.error('Invalid Start or End date, please review date carefully');\n        }\n        return this.enrollmentProfileForm['date-of-birth'].$invalid = isInvalid;\n      };\n      this.isNowComplete = function () {\n        var isComplete, ref, ref1, ref2;\n        $log.log('isNowComplete: this.enrollment', this.enrollment);\n        isComplete = true;\n        if (this.dXCodesRequired && (!this.enrollment.diagnosis || !this.enrollment.diagnosis.codes || this.enrollment.diagnosis.codes.length === 0)) {\n          isComplete = false;\n        }\n        if (this.deviceSelectionRequired() && (!this.enrollment.shipments || this.enrollment.shipments.length === 0)) {\n          isComplete = false;\n        }\n        if (!((ref = this.enrollment.address) != null ? ref.address_zipcode : void 0) || !((ref1 = this.enrollment.address) != null ? ref1.address_city : void 0) || !((ref2 = this.enrollment.address) != null ? ref2.address_street : void 0)) {\n          isComplete = false;\n        }\n        if (!this.enrollment.gender) {\n          isComplete = false;\n        }\n        if (!this.enrollment.date_of_birth) {\n          isComplete = false;\n        }\n        if (!this.enrollment.phone_1_number) {\n          isComplete = false;\n        }\n        if (!this.enrollment.email && !this.enrollment.has_no_email) {\n          isComplete = false;\n        }\n        if (!this.enrollment.language_id) {\n          isComplete = false;\n        }\n        if (_.isEmpty(this.enrollment.primary_insurer.policy_num) && (_.isEmpty(this.enrollment.primary_insurer.medicare_advantage_provider_id) || _.isEmpty(this.enrollment.primary_insurer.individual_num) || _.isEmpty(this.enrollment.primary_insurer.group_num))) {\n          isComplete = false;\n        }\n        return isComplete;\n      };\n      this.proceedToSave = function () {\n        if (!this.readyToSave) {\n          this.readyToSave = true;\n          angular.element('#enrollmentFormSaveButton').click();\n        }\n        return true;\n      };\n      this.saveButtonTranslationString = function () {\n        if (this.isNowComplete()) {\n          return 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.OKAY';\n        } else {\n          return 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.DO_THIS_LATER';\n        }\n      };\n      this.alignExplanation = function () {\n        return '<span>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.ALIGN_DOS_INFO') + '</span>';\n      };\n      this.checkEnrollmentComplete = function () {\n        var hasMissingInfo, message, ref, ref1, ref2;\n        hasMissingInfo = false;\n        message = '';\n        if (this.dXCodesRequired && (!this.enrollment.diagnosis || !this.enrollment.diagnosis.codes || this.enrollment.diagnosis.codes.length === 0)) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.DIAGNOSIS') + '</li>';\n        }\n        if (this.deviceSelectionRequired() && (!this.enrollment.shipments || this.enrollment.shipments.length === 0)) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.DEVICES') + '</li>';\n        }\n        if (!this.enrollment.gender) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.GENDER') + '</li>';\n        }\n        if (!this.enrollment.date_of_birth) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.DATE_OF_BIRTH') + '</li>';\n        }\n        if (!((ref = this.enrollment.address) != null ? ref.address_city : void 0) || !((ref1 = this.enrollment.address) != null ? ref1.address_street : void 0)) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.ADDRESS') + '</li>';\n        }\n        if (!((ref2 = this.enrollment.address) != null ? ref2.address_zipcode : void 0)) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.ZIP_CODE') + '</li>';\n        }\n        if (!this.enrollment.phone_1_number) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.PHONE_NUMBER') + '</li>';\n        }\n        if (!this.enrollment.email && !this.enrollment.has_no_email) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.EMAIL') + '</li>';\n        }\n        if (!this.enrollment.language_id) {\n          hasMissingInfo = true;\n        }\n        if (_.isEmpty(this.enrollment.primary_insurer.policy_num) && (_.isEmpty(this.enrollment.primary_insurer.medicare_advantage_provider_id) || _.isEmpty(this.enrollment.primary_insurer.individual_num) || _.isEmpty(this.enrollment.primary_insurer.group_num) && this.enrollment.primary_insurer.group_number_unavailable === false) || _.isEmpty(this.enrollment.primary_insurer.group_num) && this.enrollment.primary_insurer.group_number_unavailable === true) {\n          hasMissingInfo = true;\n          message = message + '<li>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.INSURANCE') + '</li>';\n        }\n        if (!hasMissingInfo) {\n          message = '<div class=\"centered\"><b>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.COMPLETE') + '</b></div>';\n        } else {\n          message = '<b>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.STILL_MISSING') + '</b><ul>' + message + '</ul>';\n        }\n        return message;\n      };\n      this.adaptLegacyEnrollmentToDeviceType = function () {\n        var deviceType;\n        $log.log('adapting legacy enrollment', this.enrollment.device_type);\n        deviceType = _.find(this.deviceTypes, {\n          category: this.enrollment.device_type\n        });\n        if (deviceType) {\n          this.selectedDevices.push(deviceType);\n          this.enrollment.shipments.push({\n            device_type_id: deviceType.id\n          });\n          this.enrollment.device_type = null; // nullify so when it's PUT'ed the enrollment is no longer legacy\n          return $log.log('this.enrollment.shipments', this.enrollment.shipments);\n        } else {\n          return $log.warn('error adapting legacy enrollment.device_type not found', this.enrollment.device_type);\n        }\n      };\n      this.onTabSelect = function (event, inputId) {\n        $log.log('event', event);\n        return this.timeout = $timeout(function () {\n          return angular.element(inputId).focus();\n        }, 100);\n      };\n      //TODO, save here?\n      this.loadDiagnoses = function (query) {\n        var _this2 = this;\n        $log.log('query', query);\n        this.isTagLoading = true;\n        return Icd10Service.search(query, 8).then(function (icd10s) {\n          _this2.isTagLoading = false;\n          $log.log('query', icd10s);\n          _.map(icd10s, function (icd10) {\n            return icd10.description = icd10.code + \": \" + icd10.description;\n          });\n          return icd10s;\n        });\n      };\n      this.shipmentGroupBy = function (item) {\n        if (item.group_key === 'SINGLE') {\n          return 'Not Eligible for Bundling';\n        } else {\n          return 'Eligible for Bundling';\n        }\n      };\n      this.deviceSelectionRequired = function () {\n        var ref, ref1, ref2, ref3, ref4, ref5;\n        if (this.legacyDevices && this.legacyDevices.length) {\n          return false;\n        }\n        return ((ref = this.enrollment) != null ? (ref1 = ref.model_patient_services) != null ? ref1.length : void 0 : void 0) > 1 || ((ref2 = this.enrollment) != null ? (ref3 = ref2.model_patient_services) != null ? (ref4 = ref3[0]) != null ? ref4.patient_service_id : void 0 : void 0 : void 0) !== ((ref5 = this.ccmPatientService) != null ? ref5.patient_service_id : void 0);\n      };\n      this.disableDeviceSelection = function () {\n        var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7;\n        return this.ccmEnabled && ((ref = this.enrollment) != null ? (ref1 = ref.model_patient_services) != null ? ref1.length : void 0 : void 0) === 0 || ((ref2 = this.enrollment) != null ? (ref3 = ref2.model_patient_services) != null ? ref3.length : void 0 : void 0) === 1 && ((ref4 = this.enrollment) != null ? (ref5 = ref4.model_patient_services) != null ? (ref6 = ref5[0]) != null ? ref6.patient_service_id : void 0 : void 0 : void 0) === ((ref7 = this.ccmPatientService) != null ? ref7.patient_service_id : void 0);\n      };\n      this.disableShipmentChoice = function (item) {\n        var deviceTypeGroupKeys;\n        // $log.log 'item', item\n        //      return false\n        deviceTypeGroupKeys = _.map(this.selectedDevices, function (deviceType) {\n          return deviceType.group_key;\n        });\n        if (deviceTypeGroupKeys.includes('SINGLE')) {\n          return true;\n        } else if (item.group_key === 'SINGLE' && this.selectedDevices.length > 0) {\n          return true;\n        } else {\n          return false;\n        }\n      };\n      this.onShipmentAdd = function (deviceType) {\n        var shipment;\n        $log.log('onShipmentsAdd', deviceType);\n        if (deviceType.category === 'GLUCOMETER') {\n          this.showGlucoseTestsPerDayField = true;\n        }\n        shipment = {\n          device_type_id: deviceType.id\n        };\n        return this.enrollment.shipments.push(shipment);\n      };\n      this.onShipmentRemove = function (deviceType) {\n        $log.log('onShipmentsRemove', deviceType);\n        if (deviceType.category === 'GLUCOMETER') {\n          this.showGlucoseTestsPerDayField = false;\n        }\n        return this.enrollment.shipments = _.reject(this.enrollment.shipments, {\n          device_type_id: deviceType.id\n        });\n      };\n      this.getDescriptionWithAvailability = function (item) {\n        return EEnrollmentsService.getDescriptionWithAvailability(item);\n      };\n      calculateDifferences = function calculateDifferences() {\n        var addDeviceTypeIdsArray, existingShipmentDeviceIds, newShipmentDeviceIds, removeDeviceTypeIdsArray;\n        existingShipmentDeviceIds = _.map(_this3.initialEnrollmentState.shipments, 'device_type_id');\n        newShipmentDeviceIds = _.map(_this3.enrollment.shipments, 'device_type_id');\n        removeDeviceTypeIdsArray = _.difference(existingShipmentDeviceIds, newShipmentDeviceIds);\n        addDeviceTypeIdsArray = _.difference(newShipmentDeviceIds, existingShipmentDeviceIds);\n        $log.log('removeDeviceTypeIdsArray', removeDeviceTypeIdsArray);\n        $log.log('addDeviceTypeIdsArray', addDeviceTypeIdsArray);\n        return {\n          removeDeviceTypeIds: removeDeviceTypeIdsArray,\n          addDeviceTypeIds: addDeviceTypeIdsArray\n        };\n      };\n      // IMPORTANT: creates correct schema for tag object\n      this.onTagAdded = function (tag) {\n        var ref, separator;\n        $log.log('tag', tag);\n        if (tag.id) {\n          delete tag.id;\n        }\n        // creates correct schema for custom tag object\n        $log.log('!tag.description', !tag.description);\n        if (!tag.description) {\n          tag.description = tag.code;\n        }\n        separator = ': ';\n        if (((ref = tag.description) != null ? ref.indexOf(separator) : void 0) !== -1) {\n          tag.description = tag.description.split(separator)[1];\n        }\n        if (this.checkTag(tag) >= 0) {\n          NotificationsService.error('XL Devices are recommended for this Diagnosis code');\n        }\n        return this.checkTag = function (tag) {\n          var xlTags;\n          $log.log(\"Analyzing XL DX for:\", tag.code);\n          xlTags = this.globalConfigurations[0].xl_device_dx_codes.split(\",\");\n          return xlTags.indexOf(tag.code);\n        };\n      };\n      this.deleteContact = function (index) {\n        if (this.enrollment.contacts.length > 1) {\n          return this.enrollment.contacts.splice(index, 1);\n        }\n      };\n      this.onChange = function (payload) {\n        var _this4 = this;\n        this.geocode.processing = true;\n        if (!payload.model) {\n          return;\n        }\n        return AddressLookupService.lookupCityStateByZip(payload.model).then(function (address) {\n          if (address.city && address.state && address.country === \"United States\") {\n            _this4.geocode.result = true;\n            _this4.geocode.processing = false;\n            _this4.enrollment.address.address_city = address.city;\n            _this4.enrollment.address.address_state = address.state;\n          } else {\n            _this4.geocode.result = false;\n            _this4.geocode.processing = false;\n          }\n        }, function (error) {\n          this.geocode.result = false;\n          return this.geocode.processing = false;\n        });\n      };\n      this.onEmailBlur = function (payload) {\n        if (payload.model) {\n          return UserProfilesService.confirmUniqueEmail(payload.model).then(function (response) {\n            if (!response) {\n              return NotificationsService.error('Email is taken. Please use another!');\n            }\n          });\n        }\n      };\n      this.onDeliveryMethodChange = function (payload) {\n        if (payload.model === 'SMS') {\n          return this.enrollment.phone_1_type = 'm';\n        }\n      };\n      this.onPatientServiceChange = function (payload) {\n        var ref;\n        if (payload.model.length === 1 && payload.model[0].patient_service_id === ((ref = this.ccmPatientService) != null ? ref.patient_service_id : void 0)) {\n          this.enrollment.shipments = [];\n          this.selectedDevices = [];\n          this.showGlucoseTestsPerDayField = false;\n        } else {\n          this.enrollmentProfileForm['shipment'].$invalid = true;\n        }\n        return this.enrollment.model_patient_services = payload.model;\n      };\n      this.save = function (willSignLater) {\n        var blankInsurer, id_match, provider_name;\n        blankInsurer = {\n          individual_num: '',\n          insurer_type_id: null,\n          group_num: '',\n          insurer_name: '',\n          medicare_advantage_provider_id: null,\n          notes: '',\n          patient_to_policyholder_relationship_id: null,\n          policy_holder_is_patient: true,\n          policy_num: '',\n          policyholder_date_of_birth: null,\n          policyholder_name_first: '',\n          policyholder_name_last: '',\n          policyholder_sex: ''\n        };\n        provider_name = _.get(this.enrollment, 'primary_insurer.medicare_advantage_provider_name', 'None');\n        if (provider_name !== 'None') {\n          id_match = _.find(this.medAdvantageProviderOptions, {\n            label: provider_name\n          });\n          this.enrollment.primary_insurer.medicare_advantage_provider_id = id_match ? id_match.value : null;\n        }\n        if (!this.showSecondaryInsurance) {\n          this.enrollment.secondary_insurer = _.clone(blankInsurer);\n        }\n        if (!this.showTertiaryInsurance) {\n          this.enrollment.tertiary_insurer = _.clone(blankInsurer);\n        }\n        if (this.readyToSave) {\n          if (this.enrollment.primary_insurer) {\n            this.enrollment.primary_insurer.rank = 'PRIMARY';\n          }\n          if (this.enrollment.secondary_insurer) {\n            this.enrollment.secondary_insurer.rank = 'SECONDARY'; // Need to force this attribute somewhere\n          }\n          if (this.enrollment.tertiary_insurer) {\n            this.enrollment.tertiary_insurer.rank = 'TERTIARY';\n          }\n          $log.log('this.enrollment.date_of_birth', this.enrollment.date_of_birth);\n          if (!!this.enrollment.id) {\n            this.submitPromise = updateEnrollment(willSignLater);\n          } else {\n            this.submitPromise = createEnrollment(willSignLater);\n          }\n          return this.submitPromise;\n        }\n      };\n      updateEnrollment = function updateEnrollment(willSignLater) {\n        $log.log('updateEnrollment', _this3.enrollment);\n        if (_this3.enrollment.has_no_email) {\n          // Put back the auto generated email before update\n          _this3.enrollment.email = _this3.initialEnrollmentState.email;\n        }\n        // delete the enrollment tos delivery methods before updating because the delivery objects could potentially be pretty big\n        // and this will speed up the request and prevent any payload too large errors. They are not updated on this put request anyway.\n        delete _this3.enrollment.enrollment_tos_delivery_methods;\n        // Set the source of the enrollment if needed\n        if (_.isEmpty(_this3.enrollment.source)) {\n          _this3.enrollment.source = PORTAL_ENROLLMENT_SOURCE;\n        }\n        return _this3.submitPromise = EEnrollmentsService.put(_this3.enterpriseCustomerId, _this3.enrollment).then( /*#__PURE__*/function () {\n          var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(enrollment) {\n            var enrollmentInPersonMethod, items, newEnrollmentDeliveryMethods, thisEnrollment;\n            return regeneratorRuntime.wrap(function _callee2$(_context2) {\n              while (1) switch (_context2.prev = _context2.next) {\n                case 0:\n                  thisEnrollment = enrollment[1][0];\n                  $log.log('thisEnrollment', thisEnrollment);\n                  _context2.next = 4;\n                  return updateShipments();\n                case 4:\n                  items = _context2.sent;\n                  $log.log('shipment items', items);\n                  _context2.next = 8;\n                  return updateEnrollmentTOSDeliveryMethods();\n                case 8:\n                  newEnrollmentDeliveryMethods = _context2.sent;\n                  $log.log('newDeliveryMethods', newEnrollmentDeliveryMethods);\n                  // Update the enrollment again if there were shipments so that the enrollment status\n                  // can get set to pending tracking if enrollment was missing shipment records.\n                  if (!(items.length > 0)) {\n                    _context2.next = 13;\n                    break;\n                  }\n                  _context2.next = 13;\n                  return EEnrollmentsService.put(_this3.enterpriseCustomerId, _this3.enrollment);\n                case 13:\n                  enrollmentInPersonMethod = findInPersonEnrollmentTosDeliveryMethod(newEnrollmentDeliveryMethods);\n                  if (thisEnrollment.signature_status !== 'SIGNED' && enrollmentInPersonMethod && !willSignLater) {\n                    redirectToInPersonAgreement({\n                      id: thisEnrollment.id,\n                      enrollment_tos_delivery_methods: newEnrollmentDeliveryMethods\n                    });\n                  } else {\n                    $state.go('enterprise.enrollments-incomplete');\n                  }\n                  // Check if patient is under 18\n                  EEnrollmentsService.checkPatientUnder18(_this3.enrollment.date_of_birth, 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.UNDER_18');\n                  return _context2.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.UPDATED'));\n                case 17:\n                case \"end\":\n                  return _context2.stop();\n              }\n            }, _callee2);\n          }));\n          return function (_x) {\n            return _ref2.apply(this, arguments);\n          };\n        }()).catch(function (error) {\n          var ref, ref1, ref2;\n          $log.log('error', error);\n          return NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR');\n        });\n      };\n      updateShipments = function updateShipments() {\n        var promisesArray, shipmentDifferences;\n        // here we need to update the shipment changes manually (we did a nested create before)\n        shipmentDifferences = calculateDifferences();\n        promisesArray = [];\n        _.each(shipmentDifferences.addDeviceTypeIds, function (deviceTypeId) {\n          return promisesArray.push(ShipmentsService.post({\n            enterprise_enrollment_id: _this3.enrollment.id,\n            device_type_id: deviceTypeId\n          }));\n        });\n        _.each(shipmentDifferences.removeDeviceTypeIds, function (deviceTypeId) {\n          var shipment;\n          shipment = _.find(_this3.initialEnrollmentState.shipments, function (shipment) {\n            return shipment.device_type_id === deviceTypeId;\n          });\n          return promisesArray.push(ShipmentsService.delete(shipment));\n        });\n        return $q.all(promisesArray);\n      };\n      createEnrollment = function createEnrollment(willSignLater) {\n        addSelectedTOSDeliveryMethodsToEnrollment();\n        return _this3.submitPromise = EEnrollmentsService.post(_this3.enterpriseCustomerId, _this3.enrollment).then(function (enrollment) {\n          if (!willSignLater && findInPersonEnrollmentTosDeliveryMethod(enrollment)) {\n            redirectToInPersonAgreement(enrollment);\n          } else {\n            $state.go('enterprise.enrollments-incomplete');\n          }\n          return NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.SUCCESS');\n        }).catch(function (error) {\n          var ref, ref1, ref2;\n          $log.log('saveerror', error);\n          return NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR');\n        });\n      };\n      isMethodInEnrollmentTOSDeliveryMethods = function isMethodInEnrollmentTOSDeliveryMethods(source, tosMethod) {\n        var method;\n        method = source.filter(function (method) {\n          return method.tos_delivery_method.key_name === tosMethod;\n        });\n        if (method.length) {\n          return method[0];\n        }\n        return false;\n      };\n      getInPersonAgreementRequestUrl = function getInPersonAgreementRequestUrl(enrollmentInPersonMethod) {\n        return _.get(enrollmentInPersonMethod, 'tos_delivery_response.signers[0].request_url');\n      };\n      findInPersonEnrollmentTosDeliveryMethod = function findInPersonEnrollmentTosDeliveryMethod(enrollmentOrMethods) {\n        var enrollmentInPersonMethod, methods;\n        methods = _.isArray(enrollmentOrMethods) ? enrollmentOrMethods : enrollmentOrMethods.enrollment_tos_delivery_methods;\n        enrollmentInPersonMethod = isMethodInEnrollmentTOSDeliveryMethods(methods, 'IN_PERSON');\n        return enrollmentInPersonMethod || isMethodInEnrollmentTOSDeliveryMethods(methods, 'PHYSICIAN_ATTESTATION');\n      };\n      redirectToInPersonAgreement = function redirectToInPersonAgreement(enrollment) {\n        var attempts, enrollmentInPersonMethod, failAgreementUrlPoll, maxAttempts, maxPollDelayMs, pollBackoffFactor, pollDelayMs, pollForAgreementUrl, requestUrl, scheduleAgreementUrlPoll;\n        enrollmentInPersonMethod = findInPersonEnrollmentTosDeliveryMethod(enrollment);\n        if (!enrollmentInPersonMethod) {\n          return;\n        }\n        requestUrl = getInPersonAgreementRequestUrl(enrollmentInPersonMethod);\n        if (requestUrl) {\n          $window.location.href = requestUrl;\n          return;\n        }\n        _this3.agreementUrlPollActive = true;\n        attempts = 0;\n        maxAttempts = 20;\n        pollDelayMs = 500;\n        maxPollDelayMs = 3000;\n        pollBackoffFactor = 1.5;\n        failAgreementUrlPoll = function failAgreementUrlPoll() {\n          if (!_this3.agreementUrlPollActive) {\n            return;\n          }\n          _this3.agreementUrlPollActive = false;\n          $timeout.cancel(_this3.timeout);\n          NotificationsService.error('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR');\n          return $state.go('enterprise.enrollments-incomplete');\n        };\n        scheduleAgreementUrlPoll = function scheduleAgreementUrlPoll() {\n          var delayMs;\n          if (!_this3.agreementUrlPollActive) {\n            return;\n          }\n          $timeout.cancel(_this3.timeout);\n          delayMs = pollDelayMs;\n          pollDelayMs = Math.min(Math.round(pollDelayMs * pollBackoffFactor), maxPollDelayMs);\n          return _this3.timeout = $timeout(pollForAgreementUrl, delayMs);\n        };\n        pollForAgreementUrl = function pollForAgreementUrl() {\n          if (!_this3.agreementUrlPollActive) {\n            return;\n          }\n          attempts += 1;\n          if (attempts > maxAttempts) {\n            failAgreementUrlPoll();\n            return;\n          }\n          return EEnrollmentsService.get(_this3.enterpriseCustomerId, enrollment.id).then(function (reloadedEnrollment) {\n            var reloadedRequestUrl;\n            if (!_this3.agreementUrlPollActive) {\n              return;\n            }\n            reloadedRequestUrl = getInPersonAgreementRequestUrl(findInPersonEnrollmentTosDeliveryMethod(reloadedEnrollment));\n            if (reloadedRequestUrl) {\n              _this3.agreementUrlPollActive = false;\n              $timeout.cancel(_this3.timeout);\n              return $window.location.href = reloadedRequestUrl;\n            } else {\n              return scheduleAgreementUrlPoll();\n            }\n          }).catch(function (error) {\n            if (!_this3.agreementUrlPollActive) {\n              return;\n            }\n            $log.log('poll agreement url error', error);\n            if (attempts >= maxAttempts) {\n              return failAgreementUrlPoll();\n            } else {\n              return scheduleAgreementUrlPoll();\n            }\n          });\n        };\n        return pollForAgreementUrl();\n      };\n      addSelectedTOSDeliveryMethodsToEnrollment = function addSelectedTOSDeliveryMethodsToEnrollment() {\n        _this3.enrollment.enrollment_tos_delivery_methods = [];\n        if (_this3.eulaDeliveryMethod === 'ELECTRONIC') {\n          if (_this3.smsOptionSelected) {\n            _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject('SMS'));\n          }\n          if (_this3.inPersonOptionSelected) {\n            _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject('IN_PERSON'));\n          }\n          if (_this3.emailOptionSelected) {\n            return _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject('EMAIL'));\n          }\n        } else {\n          return _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject(_this3.eulaDeliveryMethod));\n        }\n      };\n      updateEnrollmentTOSDeliveryMethods = function updateEnrollmentTOSDeliveryMethods() {\n        var promisesStorage;\n        promisesStorage = [];\n        if (_this3.eulaDeliveryMethod === 'ELECTRONIC') {\n          if (_this3.smsOptionSelected) {\n            promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject('SMS', _this3.enrollment.id)));\n          }\n          if (_this3.inPersonOptionSelected) {\n            promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject('IN_PERSON', _this3.enrollment.id)));\n          }\n          if (_this3.emailOptionSelected) {\n            promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject('EMAIL', _this3.enrollment.id)));\n          }\n          // Check to make sure eulaDeliveryMethod is at least defined, because enrollment is saveable without selecting a new method.\n        } else if (_this3.eulaDeliveryMethod) {\n          promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject(_this3.eulaDeliveryMethod, _this3.enrollment.id)));\n        }\n        return $q.all(promisesStorage);\n      };\n      getTOSDeliveryMethodIDByKeyName = function getTOSDeliveryMethodIDByKeyName(keyName) {\n        var deliveryMethod, i, len, ref;\n        ref = _this3.tosDeliveryMethods;\n        for (i = 0, len = ref.length; i < len; i++) {\n          deliveryMethod = ref[i];\n          if (deliveryMethod.key_name === keyName) {\n            return deliveryMethod.id;\n          }\n        }\n      };\n      enrollmentTosDeliveryObject = function enrollmentTosDeliveryObject(keyName) {\n        var enterpriseEnrollmentID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var newObject;\n        newObject = {\n          tos_delivery_method_id: getTOSDeliveryMethodIDByKeyName(keyName),\n          is_currently_selected: true\n        };\n        if (enterpriseEnrollmentID) {\n          newObject.enterprise_enrollment_id = enterpriseEnrollmentID;\n        }\n        return newObject;\n      };\n      // automatically set wrist_size based on gender\n      this.onGenderChange = function (payload) {\n        if (payload.model === 'm') {\n          return this.enrollment.wrist_size = 'LG';\n        } else if (payload.model === 'f') {\n          return this.enrollment.wrist_size = 'SM';\n        }\n      };\n      this.getEulaAgreementModalName = function () {\n        if (this.eulaDeliveryMethod === 'ELECTRONIC') {\n          if (this.smsOptionSelected) {\n            return 'SMS';\n          }\n          if (this.inPersonOptionSelected) {\n            return 'HANDOFF';\n          }\n          if (this.emailOptionSelected) {\n            return 'EMAIL';\n          }\n        } else {\n          return this.eulaDeliveryMethod;\n        }\n      };\n      this.onChangeDoesPatientHaveEmail = function () {\n        if (this.enrollment.has_no_email) {\n          this.isEmailDisabled = true;\n          this.enrollment.email = null;\n        } else {\n          this.isEmailDisabled = false;\n        }\n        return updateEnrollmentDeliveryMethod();\n      };\n      // this.onChangeIsPatientPresent = ->\n      //   updateEnrollmentDeliveryMethod()\n      updateEnrollmentDeliveryMethod = function updateEnrollmentDeliveryMethod() {\n        if (!_this3.enrollment.q_patient_present && _this3.enrollment.has_no_email) {\n          _this3.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptionsSnailMail;\n          return _this3.enrollment.pactsafe_request_delivery_method = 'MAIL';\n        } else if (!_this3.enrollment.q_patient_present && !_this3.enrollment.has_no_email) {\n          _this3.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptionsNotPresent;\n          return _this3.enrollment.pactsafe_request_delivery_method = 'EMAIL';\n        } else {\n          _this3.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptions;\n          return _this3.enrollment.pactsafe_request_delivery_method = 'IN_PERSON';\n        }\n      };\n      this.onSearch = function (query) {\n        return MedicareAdvantageService.search(query).then(function (providers) {\n          $log.log('query', providers);\n          providers.unshift({\n            id: '',\n            name: 'None'\n          });\n          return providers;\n        });\n      };\n      this.onMedicareAdvantageProviderChange = function (payload) {\n        if (payload.model) {\n          if (this.isInternal) {\n            return this.isMedAdvantageNumsRequired = false;\n          } else {\n            return this.isMedAdvantageNumsRequired = true;\n          }\n        } else {\n          this.enrollment.medicare_advantage_group_num = null;\n          this.enrollment.medicare_advantage_individual_num = null;\n          return this.isMedAdvantageNumsRequired = false;\n        }\n      };\n      this.onEULADeliveryMethodChange = function (method, isSelected) {\n        var electronicMethods;\n        if (method === 'ELECTRONIC') {\n          selectAllAvailableElectronicMethods();\n          return;\n        }\n        electronicMethods = ['SMS', 'IN_PERSON', 'EMAIL'];\n        if (indexOf.call(electronicMethods, method) >= 0 && isSelected) {\n          return this.eulaDeliveryMethod = 'ELECTRONIC';\n        } else if (indexOf.call(electronicMethods, method) < 0) {\n          // Clear out electronic selections\n          this.smsOptionSelected = false;\n          this.inPersonOptionSelected = false;\n          return this.emailOptionSelected = false;\n        }\n      };\n      this.initPatientAgreementDefaults = function () {\n        if (!this.enrollment.id) {\n          this.smsOptionSelected = false;\n          this.emailOptionSelected = false;\n          this.eulaDeliveryMethod = 'ELECTRONIC';\n          return selectAllAvailableElectronicMethods();\n        }\n      };\n      selectAllAvailableElectronicMethods = function selectAllAvailableElectronicMethods() {\n        _this3.inPersonOptionSelected = true;\n        if (!_this3.enrollment.has_no_email) {\n          _this3.emailOptionSelected = true;\n        }\n        if (_this3.enterpriseCustomer.vma_consent_enabled && (_this3.enrollment.phone_1_type === 'm' || _this3.enrollment.phone_2_type === 'm' || _this3.enrollment.phone_3_type === 'm')) {\n          return _this3.smsOptionSelected = true;\n        }\n      };\n      setLastRequestedTOSDeliveryMethods = function setLastRequestedTOSDeliveryMethods(enrollment) {\n        var i, lastElectronicTOSDeliveryMethods, len, method, ref;\n        if (enrollment.enrollment_tos_delivery_methods) {\n          lastElectronicTOSDeliveryMethods = [];\n          _this3.previouslySelectedTOSDeliveryMethodsStrings = [];\n          ref = enrollment.enrollment_tos_delivery_methods;\n          for (i = 0, len = ref.length; i < len; i++) {\n            method = ref[i];\n            if (method.is_currently_selected) {\n              if (method.tos_delivery_method.key_name === 'SMS') {\n                _this3.previouslySelectedSMSOption = true;\n                lastElectronicTOSDeliveryMethods.push(method.tos_delivery_method.name);\n              }\n              if (method.tos_delivery_method.key_name === 'EMAIL') {\n                _this3.previouslySelectedEmailOption = true;\n                lastElectronicTOSDeliveryMethods.push(method.tos_delivery_method.name);\n              } else if (method.tos_delivery_method.key_name === 'IN_PERSON') {\n                _this3.previouslySelectedInPersonOption = true;\n                lastElectronicTOSDeliveryMethods.push(method.tos_delivery_method.name);\n              } else if (method.tos_delivery_method.key_name === 'IVR') {\n                _this3.previouslySelectedIVROption = true;\n                _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature by \".concat(method.tos_delivery_method.name.toLowerCase()));\n              } else if (method.tos_delivery_method.key_name === 'MAIL') {\n                _this3.previouslySelectedMailOption = true;\n                _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature by \".concat(method.tos_delivery_method.name.toLowerCase()));\n              } else if (method.tos_delivery_method.key_name === 'PHYSICIAN_ATTESTATION') {\n                _this3.previouslySelectedPhysicianAttestationOption = true;\n                _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature by \".concat(method.tos_delivery_method.name.toLowerCase()));\n              }\n            }\n          }\n          if (lastElectronicTOSDeliveryMethods.length) {\n            lastElectronicTOSDeliveryMethods = lastElectronicTOSDeliveryMethods.join(', ').toLowerCase().replace(/, ((?:.(?!, ))+)$/, ' and $1');\n            _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature electronically - \".concat(lastElectronicTOSDeliveryMethods));\n          }\n          if (_this3.previouslySelectedSMSOption && _this3.previouslySelectedEmailOption && _this3.previouslySelectedInPersonOption && _this3.previouslySelectedIVROption && _this3.previouslySelectedMailOption) {\n            return _this3.allTOSMethodsUsed = true;\n          } else {\n            return _this3.allTOSMethodsUsed = false;\n          }\n        }\n      };\n      this.getEnrollmentSignedTOSMethod = function () {\n        var i, len, method, ref;\n        ref = this.enrollment.enrollment_tos_delivery_methods;\n        for (i = 0, len = ref.length; i < len; i++) {\n          method = ref[i];\n          if (method.signature_status === SignatureStatuses.SIGNED) {\n            return method.tos_delivery_method.name.toLowerCase();\n          }\n        }\n      };\n      this.blankSecondaryRelationshipFields = function () {\n        if (this.enrollment.secondary_insurer.policy_holder_is_patient === true) {\n          this.enrollment.secondary_insurer.patient_to_policyholder_relationship_id = null;\n          this.enrollment.secondary_insurer.policyholder_name_first = '';\n          this.enrollment.secondary_insurer.policyholder_name_last = '';\n          this.enrollment.secondary_insurer.policyholder_date_of_birth = null;\n          return this.enrollment.secondary_insurer.policyholder_sex = '';\n        }\n      };\n      this.blankTertiaryRelationshipFields = function () {\n        if (this.enrollment.tertiary_insurer.policy_holder_is_patient === true) {\n          this.enrollment.tertiary_insurer.patient_to_policyholder_relationship_id = null;\n          this.enrollment.tertiary_insurer.policyholder_name_first = '';\n          this.enrollment.tertiary_insurer.policyholder_name_last = '';\n          this.enrollment.tertiary_insurer.policyholder_date_of_birth = null;\n          return this.enrollment.tertiary_insurer.policyholder_sex = '';\n        }\n      };\n      this.$onDestroy = function () {\n        this.agreementUrlPollActive = false;\n        return $timeout.cancel(this.timeout);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-edit-card/e-enrollments-incomplete-edit-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsIncompleteEdit\n   * @restrict E\n   * @param {object} user user model object\n   * @description\n   * Add an enterprise enrollment page wrapper component\n   */\n  angular.module('enterprise').component('eEnrollmentsIncompleteEdit', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enrollment: '<',\n      relationships: '<',\n      deviceTypes: '<',\n      medAdvantageProviders: '<',\n      tosDeliveryMethods: '<',\n      providers: '<',\n      enterpriseCustomer: '<',\n      features: '<',\n      globalConfigurations: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        var name;\n        $log = $log.getInstance('eEnrollmentsIncompleteEdit');\n        $log.log('this.enrollment', this.enrollment);\n        name = this.enrollment ? this.enrollment.name_first + ' ' + this.enrollment.name_last : '';\n        return this.translationData = {\n          name: name\n        };\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-edit/e-enrollments-incomplete-edit.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollments\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} enrollments the pre-enrollments for the enterprise customer\n   * @description\n   * Displays enterprise admin enrollments (wearers pre-enrolled by enterprise customer)\n   */\n  angular.module('enterprise').component('eEnrollmentsIncomplete', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '<',\n      enrollments: '<',\n      addressTypes: '<',\n      relationships: '<',\n      deviceTypes: '<',\n      enrollmentStatuses: '<',\n      primaryProviders: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $window, NotificationsService, IB_PHONE, IB_SUPPORT_EMAIL) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eEnrollmentsIncomplete');\n        $log.log('eEnrollmentsIncomplete component loaded', this.enrollments);\n        this.supportPhone = IB_PHONE.NUMBER_FORMATTED;\n        this.supportEmail = IB_SUPPORT_EMAIL.EMAIL;\n      };\n      this.onVisitSignature = function (enrollment) {\n        return $window.location.href = enrollment.pactsafe_request.signers[0].request_url;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete/e-enrollments-incomplete.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsAddCard\n   * @restrict E\n   * @param {object} user user model object\n   * @description\n   * Add an enterprise enrollment\n   */\n  var indexOf = [].indexOf;\n  angular.module('enterprise').component('eEnrollmentsAddCard', {\n    'ngInject': 'ngInject',\n    bindings: {\n      enrollment: '<',\n      isInternal: '<',\n      adminUserProfileId: '<',\n      relationships: '<',\n      deviceTypes: '<',\n      medAdvantageProviders: '<',\n      providers: '<',\n      tosDeliveryMethods: '<',\n      cancelState: '@',\n      enterpriseCustomer: '<',\n      user: '<',\n      features: '<',\n      globalConfigurations: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, $window, $rootScope, $timeout, $state, $element, $q, TranslationHelperService, StatesService, REGEX, UserService, UserProfilesService, DevicesService, AddressLookupService, RelationshipsService, NotificationsService, EEnrollmentsService, GendersService, Icd10Service, PactsafeService, ShipmentsService, EEnrollmentTOSDeliveryMethodsService, EPatientToPolicyholderRelationService, EInsurerTypeService, SignatureStatuses, MedicareAdvantageService, LanguagesService, MAX_PHONE_NUMBERS_COUNT, PORTAL_ENROLLMENT_SOURCE, GroupService, PatientServicesService) {\n      var _this3 = this;\n      var addSelectedTOSDeliveryMethodsToEnrollment, calculateDifferences, createEnrollment, enrollmentTosDeliveryObject, findInPersonEnrollmentTosDeliveryMethod, getInPersonAgreementRequestUrl, getTOSDeliveryMethodIDByKeyName, isMethodInEnrollmentTOSDeliveryMethods, redirectToInPersonAgreement, selectAllAvailableElectronicMethods, setLastRequestedTOSDeliveryMethods, updateEnrollment, updateEnrollmentDeliveryMethod, updateEnrollmentTOSDeliveryMethods, updateShipments;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var allGroups, error, loggedInOffice, medAdvantageProviderOptions, patientServices, ref, ref1, ref10, ref11, ref12, ref13, ref14, ref15, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('eEnrollmentsAddCard');\n              this.timeout = null;\n              this.agreementUrlPollActive = false;\n              this.multiPhoneNumberInputReady = false;\n              if (this.enterpriseCustomer.ehr_type) {\n                this.ehrIdFieldPlaceholderText = \"\".concat(this.enterpriseCustomer.ehr_type.name, \"'s Unique ID for this Patient\");\n              } else {\n                this.ehrIdFieldPlaceholderText = \"Your EHR's Unique ID for this Patient\";\n              }\n              // Insurance\n              _context.next = 7;\n              return EInsurerTypeService.getAll();\n            case 7:\n              this.insurerTypes = _context.sent;\n              this.insurerTypeOptions = _.map(this.insurerTypes, function (insurer) {\n                return {\n                  label: insurer.name,\n                  value: insurer.id\n                };\n              });\n              $log.log('this.insurerTypeOptions', this.insurerTypeOptions);\n              // Insurance\n              _context.next = 12;\n              return EPatientToPolicyholderRelationService.getAll();\n            case 12:\n              this.ptprTypes = _context.sent;\n              this.ptprTypeOptions = _.map(this.ptprTypes, function (ptpr) {\n                return {\n                  label: ptpr.name,\n                  value: ptpr.id\n                };\n              });\n              $log.log('this.ptprTypeOptions', this.ptprTypeOptions);\n              this.showSecondaryInsurance = false;\n              this.showTertiaryInsurance = false;\n              $log.log('this.isInternal', this.isInternal);\n              $log.log('this.globalConfigurations', this.globalConfigurations);\n              this.numberOfAdditionalPhoneNumbers = MAX_PHONE_NUMBERS_COUNT - 1;\n              this.numberExistingAdditionalPhoneNumberInputs = EEnrollmentsService.getExistingAdditionalPhoneNumberInputs(this.enrollment);\n              $log.log('numberOfAdditionalPhoneNumbers', this.numberOfAdditionalPhoneNumbers, this.numberExistingAdditionalPhoneNumberInputs);\n              this.multiPhoneNumberInputReady = true;\n              this.enrollment = this.enrollment || {};\n              this.enrollment.patient_groups = this.enrollment.patient_groups || [];\n              _context.prev = 25;\n              _context.next = 28;\n              return GroupService.getAll(this.user.user_profile.enterprise_customer_id, this.user.logged_in_office_id, {\n                _sortDir: 'asc',\n                _sortField: 'name'\n              });\n            case 28:\n              allGroups = _context.sent;\n              _context.next = 36;\n              break;\n            case 31:\n              _context.prev = 31;\n              _context.t0 = _context[\"catch\"](25);\n              error = _context.t0;\n              $log.log('eObservationReport.$onInit error calling GroupService.getAll()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 36:\n              loggedInOffice = this.user.logged_in_office_id;\n              this.groupOptions = _.map(allGroups.data.data, function (g) {\n                if (loggedInOffice === g.office_id) {\n                  return {\n                    id: g.id,\n                    name: g.name\n                  };\n                }\n              });\n              this.relationshipsOptionsArray = _.map(this.relationships, function (relationship) {\n                return {\n                  label: relationship.name,\n                  value: relationship.id\n                };\n              });\n              medAdvantageProviderOptions = _.map(this.medAdvantageProviders, function (provider) {\n                return {\n                  label: provider.name,\n                  value: provider.id\n                };\n              });\n              // Insert an object with empty/null values so you can deselect medicare advantage\n              medAdvantageProviderOptions.splice(0, 0, {\n                label: '',\n                value: null\n              });\n              this.medAdvantageProviderOptions = medAdvantageProviderOptions;\n              this.providerOptions = EEnrollmentsService.generateProviderOptions(this.providers, this.enrollment);\n              if ((ref = this.enrollment) != null ? (ref1 = ref.primary_insurer) != null ? ref1.medicare_advantage_provider_id : void 0 : void 0) {\n                $log.log('Med Advantage', this.enrollment.primary_insurer.medicare_advantage_provider_id);\n                this.enrollment.primary_insurer.medicare_advantage_provider = _.find(this.medAdvantageProviders, {\n                  id: this.enrollment.primary_insurer.medicare_advantage_provider_id\n                }).name;\n              }\n              // determine whether to show original medicare or medicare advantage info\n              this.insuranceType = ((ref2 = this.enrollment) != null ? (ref3 = ref2.primary_insurer) != null ? ref3.policy_num : void 0 : void 0) ? 'medicare' : ((ref4 = this.enrollment) != null ? (ref5 = ref4.primary_insurer) != null ? ref5.medicare_advantage_provider_name : void 0 : void 0) || ((ref6 = this.enrollment) != null ? (ref7 = ref6.primary_insurer) != null ? ref7.medicare_advantage_provider_id : void 0 : void 0) || ((ref8 = this.enrollment) != null ? (ref9 = ref8.primary_insurer) != null ? ref9.individual_num : void 0 : void 0) ? 'other' : void 0;\n              if (this.isInternal) {\n                this.isMedAdvantageNumsRequired = false;\n              } else {\n                this.isMedAdvantageNumsRequired = true;\n              }\n              this.isEmailDisabled = false;\n              this.activeTab = 0;\n              if (!this.enrollment.id) {\n                this.enrollment = EEnrollmentsService.new();\n                // Set initial creator and current admin id on new enrollment.\n                this.enrollment.initial_creator_enterprise_admin_id = this.adminUserProfileId;\n                this.enrollment.enterprise_admin_id = this.adminUserProfileId;\n                this.enrollment.secondary_insurer.policy_holder_is_patient = true;\n                this.enrollment.tertiary_insurer.policy_holder_is_patient = true;\n              } else {\n                this.initialEnrollmentState = angular.copy(this.enrollment);\n                setLastRequestedTOSDeliveryMethods(this.initialEnrollmentState);\n                // Set last edited admin\n                this.enrollment.last_edited_enterprise_admin_id = this.adminUserProfileId;\n              }\n              this.enrollment.q_patient_present = true;\n              this.translationData = {\n                name: this.enrollment.name_first + ' ' + this.enrollment.name_last\n              };\n              this.ccmEnabled = (ref10 = this.features) != null ? (ref11 = ref10.ccm) != null ? ref11.is_enabled : void 0 : void 0;\n              $log.log('e-enrollments-add-card:ccmEnabled', this.ccmEnabled);\n              this.nonMedicareEnabled = (ref12 = this.features) != null ? (ref13 = ref12.non_medicare_providers) != null ? ref13.is_enabled : void 0 : void 0;\n              $log.log('e-enrollments-add-card:non-medicare-providersEnabled', this.nonMedicareEnabled);\n              this.dXCodesRequired = !this.nonMedicareEnabled;\n              if (!this.enrollment.id) {\n                this.enrollment.align_dos = this.enterpriseCustomer.default_for_align_dos;\n                this.enrollment.has_no_email = false;\n                this.enrollment.patient_groups = [];\n              } else {\n                this.isEmailDisabled = this.enrollment.has_no_email;\n                this.enrollment.q_patient_present = false;\n                if (this.enrollment.has_no_email) {\n                  this.enrollment.email = null;\n                }\n                this.translationData.method = this.getEnrollmentSignedTOSMethod();\n              }\n              this.initialQuestionsAnswered = !!this.enrollment.id;\n              this.enrollment.enterprise_customer_id = this.enterpriseCustomer.id;\n              this.stateOptionsArray = StatesService.states;\n              this.phoneLabelOptionsArray = UserProfilesService.phoneLabels;\n              this.deviceTypeLabelOptionsArray = DevicesService.deviceTypes;\n              this.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptions;\n              this.emailRegex = REGEX.EMAIL;\n              this.mbiRegex = REGEX.MBI;\n              this.genderOptionsArray = GendersService.getGenders;\n              this.wristSizeOptionsArray = [{\n                label: 'Small',\n                value: 'SM'\n              }, {\n                label: 'Large',\n                value: 'LG'\n              }];\n              this.stateOptionsArray = StatesService.states;\n              this.showGlucoseTestsPerDayField = false;\n              this.glucoseTestsPerDayOptionsArray = EEnrollmentsService.getNumGlucoseTestsPerDay;\n              this.geocode = {\n                result: false,\n                processing: false\n              };\n              this.selectedDevices = [];\n              $log.log('this.deviceTypes', this.deviceTypes);\n              _.each(this.enrollment.shipments, function (shipment) {\n                var deviceType;\n                deviceType = _.find(_this.deviceTypes, {\n                  id: shipment.device_type_id\n                });\n                if (deviceType) {\n                  if (deviceType.category === 'GLUCOMETER') {\n                    _this.showGlucoseTestsPerDayField = true;\n                  }\n                  return _this.selectedDevices.push(deviceType);\n                }\n              });\n              this.legacyDevices = [];\n              _.each(this.enrollment.shipments, function (shipment) {\n                var deviceType;\n                deviceType = _.find(_this.deviceTypes, {\n                  id: shipment.device_type_id\n                });\n                if (!deviceType) {\n                  _this.legacyDevices.push(shipment);\n                  if (shipment.device_type.category === 'GLUCOMETER') {\n                    return _this.showGlucoseTestsPerDayField = true;\n                  }\n                }\n              });\n              $log.log('this.legacyDevices', this.legacyDevices);\n              _context.next = 79;\n              return PatientServicesService.getAll(this.enterpriseCustomer.id);\n            case 79:\n              patientServices = _context.sent;\n              this.serviceOptionsArray = _.map(patientServices, function (s) {\n                return {\n                  label: s.name,\n                  value: [{\n                    patient_service_id: s.id\n                  }]\n                };\n              });\n              this.serviceOptionsArray.push({\n                label: 'RPM and CCM',\n                value: _.map(patientServices, function (s) {\n                  return {\n                    patient_service_id: s.id\n                  };\n                })\n              });\n              this.selectedPatientServices = (ref14 = _.find(this.serviceOptionsArray, function (s) {\n                return _.isEqual(_.map(s.value, 'patient_service_id').sort(), _.map(_this.enrollment.model_patient_services || [], 'patient_service_id').sort());\n              })) != null ? ref14.value : void 0;\n              this.ccmPatientService = {\n                patient_service_id: (ref15 = _.find(patientServices, {\n                  name: 'CCM'\n                })) != null ? ref15.id : void 0\n              };\n              _context.prev = 84;\n              _context.next = 87;\n              return LanguagesService.getOnlySupportedLanguages();\n            case 87:\n              this.preferredLanguageOptionsArray = _context.sent;\n              _context.next = 94;\n              break;\n            case 90:\n              _context.prev = 90;\n              _context.t1 = _context[\"catch\"](84);\n              error = _context.t1;\n              $log.log('Languages Error', error);\n            case 94:\n              $log.log('this.preferredLanguageOptionsArray', this.preferredLanguageOptionsArray);\n              if (this.enrollment.id && this.enrollment.address.address_zipcode) {\n                this.geocode.result = true;\n              }\n              // legacy conversion code below\n              if (this.enrollment.id && this.enrollment.device_type) {\n                this.adaptLegacyEnrollmentToDeviceType();\n              }\n              // legacy: for PERS_WATCH enrollments, clear old data\n              if (this.enrollment.id && this.enrollment.device_type === 'PERS_WATCH') {\n                this.enrollment.device_type = null;\n                this.enrollment.wrist_size = null;\n                this.enrollment.contacts = [];\n              }\n              this.enrollment.primary_insurer.medicare_advantage_provider_name = EEnrollmentsService.convertIDToLabel(this.enrollment.primary_insurer, this.medAdvantageProviderOptions);\n              this.showSecondaryInsurance = EEnrollmentsService.toggleShowInsurer(this.enrollment.secondary_insurer);\n              return _context.abrupt(\"return\", this.showTertiaryInsurance = EEnrollmentsService.toggleShowInsurer(this.enrollment.tertiary_insurer));\n            case 101:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[25, 31], [84, 90]]);\n      }));\n      this.adaptLegacyEnrollmentToDeviceType = function () {\n        var deviceType;\n        $log.log('adapting legacy enrollment', this.enrollment.device_type);\n        deviceType = _.find(this.deviceTypes, {\n          category: this.enrollment.device_type\n        });\n        if (deviceType) {\n          this.selectedDevices.push(deviceType);\n          this.enrollment.shipments.push({\n            device_type_id: deviceType.id\n          });\n          this.enrollment.device_type = null; // nullify so when it's PUT'ed the enrollment is no longer legacy\n          return $log.log('this.enrollment.shipments', this.enrollment.shipments);\n        } else {\n          return $log.warn('error adapting legacy enrollment.device_type not found', this.enrollment.device_type);\n        }\n      };\n      this.alignExplanation = function () {\n        return '<span>' + $filter('translate')('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.ALIGN_DOS_INFO') + '</span>';\n      };\n      this.onTabSelect = function (event, inputId) {\n        $log.log('event', event);\n        return this.timeout = $timeout(function () {\n          return angular.element(inputId).focus();\n        }, 100);\n      };\n      this.loadDiagnoses = function (query) {\n        var _this2 = this;\n        $log.log('query', query);\n        this.isTagLoading = true;\n        return Icd10Service.search(query, 8).then(function (icd10s) {\n          _this2.isTagLoading = false;\n          $log.log('query', icd10s);\n          _.map(icd10s, function (icd10) {\n            return icd10.description = icd10.code + \": \" + icd10.description;\n          });\n          return icd10s;\n        });\n      };\n      this.shipmentGroupBy = function (item) {\n        if (item.group_key === 'SINGLE') {\n          return 'Not Eligible for Bundling';\n        } else {\n          return 'Eligible for Bundling';\n        }\n      };\n      this.deviceSelectionRequired = function () {\n        var ref, ref1, ref2, ref3, ref4, ref5;\n        if (this.legacyDevices && this.legacyDevices.length) {\n          return false;\n        }\n        return ((ref = this.enrollment) != null ? (ref1 = ref.model_patient_services) != null ? ref1.length : void 0 : void 0) > 1 || ((ref2 = this.enrollment) != null ? (ref3 = ref2.model_patient_services) != null ? (ref4 = ref3[0]) != null ? ref4.patient_service_id : void 0 : void 0 : void 0) !== ((ref5 = this.ccmPatientService) != null ? ref5.patient_service_id : void 0);\n      };\n      this.disableDeviceSelection = function () {\n        var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7;\n        return this.ccmEnabled && ((ref = this.enrollment) != null ? (ref1 = ref.model_patient_services) != null ? ref1.length : void 0 : void 0) === 0 || ((ref2 = this.enrollment) != null ? (ref3 = ref2.model_patient_services) != null ? ref3.length : void 0 : void 0) === 1 && ((ref4 = this.enrollment) != null ? (ref5 = ref4.model_patient_services) != null ? (ref6 = ref5[0]) != null ? ref6.patient_service_id : void 0 : void 0 : void 0) === ((ref7 = this.ccmPatientService) != null ? ref7.patient_service_id : void 0);\n      };\n      this.disableShipmentChoice = function (item) {\n        var deviceTypeGroupKeys;\n        // $log.log 'item', item\n        // return false\n        deviceTypeGroupKeys = _.map(this.selectedDevices, function (deviceType) {\n          return deviceType.group_key;\n        });\n        if (deviceTypeGroupKeys.includes('SINGLE')) {\n          return true;\n        } else if (item.group_key === 'SINGLE' && this.selectedDevices.length > 0) {\n          return true;\n        } else {\n          return false;\n        }\n      };\n      this.onSearch = function (query) {\n        return MedicareAdvantageService.search(query).then(function (providers) {\n          $log.log('query', providers);\n          return providers;\n        });\n      };\n      this.onShipmentAdd = function (deviceType) {\n        var shipment;\n        $log.log('onShipmentsAdd', deviceType);\n        if (deviceType.category === 'GLUCOMETER') {\n          this.showGlucoseTestsPerDayField = true;\n        }\n        shipment = {\n          device_type_id: deviceType.id\n        };\n        return this.enrollment.shipments.push(shipment);\n      };\n      this.onShipmentRemove = function (deviceType) {\n        $log.log('onShipmentsRemove', deviceType);\n        if (deviceType.category === 'GLUCOMETER') {\n          this.showGlucoseTestsPerDayField = false;\n        }\n        return this.enrollment.shipments = _.reject(this.enrollment.shipments, {\n          device_type_id: deviceType.id\n        });\n      };\n      this.getDescriptionWithAvailability = function (item) {\n        return EEnrollmentsService.getDescriptionWithAvailability(item);\n      };\n      calculateDifferences = function calculateDifferences() {\n        var addDeviceTypeIdsArray, existingShipmentDeviceIds, newShipmentDeviceIds, removeDeviceTypeIdsArray;\n        existingShipmentDeviceIds = _.map(_this3.initialEnrollmentState.shipments, 'device_type_id');\n        newShipmentDeviceIds = _.map(_this3.enrollment.shipments, 'device_type_id');\n        removeDeviceTypeIdsArray = _.difference(existingShipmentDeviceIds, newShipmentDeviceIds);\n        addDeviceTypeIdsArray = _.difference(newShipmentDeviceIds, existingShipmentDeviceIds);\n        $log.log('removeDeviceTypeIdsArray', removeDeviceTypeIdsArray);\n        $log.log('addDeviceTypeIdsArray', addDeviceTypeIdsArray);\n        return {\n          removeDeviceTypeIds: removeDeviceTypeIdsArray,\n          addDeviceTypeIds: addDeviceTypeIdsArray\n        };\n      };\n      // IMPORTANT: creates correct schema for tag object\n      this.onTagAdded = function (tag) {\n        var ref, separator;\n        $log.log('tag', tag);\n        if (tag.id) {\n          delete tag.id;\n        }\n        // creates correct schema for custom tag object\n        $log.log('!tag.description', !tag.description);\n        if (!tag.description) {\n          tag.description = tag.code;\n        }\n        separator = ': ';\n        if (((ref = tag.description) != null ? ref.indexOf(separator) : void 0) !== -1) {\n          tag.description = tag.description.split(separator)[1];\n        }\n        if (this.checkTag(tag) >= 0) {\n          return NotificationsService.error('XL Devices are recommended for this Diagnosis code');\n        }\n      };\n      this.checkTag = function (tag) {\n        var xlTags;\n        if (this.disableDeviceSelection()) {\n          return -1;\n        }\n        $log.log(\"Analyzing XL DX for:\", tag.code);\n        xlTags = this.globalConfigurations[0].xl_device_dx_codes.split(\",\");\n        return xlTags.indexOf(tag.code);\n      };\n      this.deleteContact = function (index) {\n        if (this.enrollment.contacts.length > 1) {\n          return this.enrollment.contacts.splice(index, 1);\n        }\n      };\n      this.onChange = function (payload) {\n        var _this4 = this;\n        this.geocode.processing = true;\n        if (!payload.model) {\n          return;\n        }\n        return AddressLookupService.lookupCityStateByZip(payload.model).then(function (address) {\n          if (address.city && address.state && address.country === \"United States\") {\n            _this4.geocode.result = true;\n            _this4.geocode.processing = false;\n            _this4.enrollment.address.address_city = address.city;\n            _this4.enrollment.address.address_state = address.state;\n          } else {\n            _this4.geocode.result = false;\n            _this4.geocode.processing = false;\n          }\n        }, function (error) {\n          this.geocode.result = false;\n          return this.geocode.processing = false;\n        });\n      };\n      this.onEmailBlur = function (payload) {\n        if (payload.model) {\n          return UserProfilesService.confirmUniqueEmail(payload.model).then(function (response) {\n            if (!response) {\n              return NotificationsService.error('Email is taken. Please use another!');\n            }\n          });\n        }\n      };\n      this.onDeliveryMethodChange = function (payload) {\n        if (payload.model === 'SMS') {\n          return this.enrollment.phone_1_type = 'm';\n        }\n      };\n      this.onPatientServiceChange = function (payload) {\n        var ref;\n        if (payload.model.length === 1 && payload.model[0].patient_service_id === ((ref = this.ccmPatientService) != null ? ref.patient_service_id : void 0)) {\n          this.enrollment.shipments = [];\n          this.selectedDevices = [];\n          this.showGlucoseTestsPerDayField = false;\n        } else {\n          this.enrollmentProfileForm['shipment'].$invalid = true;\n        }\n        return this.enrollment.model_patient_services = payload.model;\n      };\n      this.validateBirthdate = function ($event) {\n        var isInvalid;\n        isInvalid = EEnrollmentsService.isInvalidBirthdate(this.enrollment.date_of_birth);\n        if (isInvalid) {\n          NotificationsService.error('Invalid date of birth');\n        }\n        return this.enrollmentProfileForm['date-of-birth'].$invalid = isInvalid;\n      };\n      this.save = function (willSignLater) {\n        var blankInsurer, id_match, provider_name;\n        // only send primary insurance info for the selected type (original medicare/medicare advantage)\n        // e.g. if the patient uses original medicare, don't send medicare advantage info\n        if (this.insuranceType === 'medicare') {\n          this.enrollment.primary_insurer.medicare_advantage_provider_name = null;\n          this.enrollment.primary_insurer.group_num = null;\n          this.enrollment.group_number_unavailable = null;\n          this.enrollment.primary_insurer.individual_num = null;\n        } else {\n          this.enrollment.primary_insurer.policy_num = null;\n        }\n        // get medicare advantage provider id from name\n        provider_name = _.get(this.enrollment, 'primary_insurer.medicare_advantage_provider_name', 'None');\n        if (provider_name !== 'None') {\n          id_match = _.find(this.medAdvantageProviderOptions, {\n            label: provider_name\n          });\n        }\n        this.enrollment.primary_insurer.medicare_advantage_provider_id = id_match ? id_match.value : null;\n        $log.log('this.enrollment.date_of_birth', this.enrollment.date_of_birth);\n        blankInsurer = {\n          individual_num: '',\n          insurer_type_id: null,\n          group_num: '',\n          insurer_name: '',\n          medicare_advantage_provider_id: null,\n          notes: '',\n          patient_to_policyholder_relationship_id: null,\n          policy_holder_is_patient: true,\n          policy_num: '',\n          policyholder_date_of_birth: null,\n          policyholder_name_first: '',\n          policyholder_name_last: '',\n          policyholder_sex: ''\n        };\n        if (!this.showSecondaryInsurance) {\n          this.enrollment.secondary_insurer = _.clone(blankInsurer);\n        }\n        if (!this.showTertiaryInsurance) {\n          this.enrollment.tertiary_insurer = _.clone(blankInsurer);\n        }\n        if (this.enrollment.primary_insurer) {\n          this.enrollment.primary_insurer.rank = 'PRIMARY';\n        }\n        if (this.enrollment.secondary_insurer) {\n          this.enrollment.secondary_insurer.rank = 'SECONDARY'; // Need to force this attrinute somewhere\n        }\n        if (this.enrollment.tertiary_insurer) {\n          this.enrollment.tertiary_insurer.rank = 'TERTIARY';\n        }\n        if (!!this.enrollment.id) {\n          this.submitPromise = updateEnrollment(willSignLater);\n        } else {\n          this.submitPromise = createEnrollment(willSignLater);\n        }\n        return this.submitPromise;\n      };\n      updateEnrollment = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(willSignLater) {\n          var enrollment, enrollmentInPersonMethod, error, items, newEnrollmentDeliveryMethods, ref, ref1, ref2, ref3, thisEnrollment;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                $log.log('updateEnrollment', _this3.enrollment);\n                if (!(_this3.enrollment.shipments.length === 0 && !_this3.enrollment.device_type && ((ref = _this3.enrollment.model_patient_services[0]) != null ? ref.patient_service_id : void 0) !== _this3.ccmPatientService.patient_service_id)) {\n                  _context2.next = 5;\n                  break;\n                }\n                return _context2.abrupt(\"return\", NotificationsService.error('Please add a device to this enrollment.'));\n              case 5:\n                if (_this3.enrollment.has_no_email) {\n                  // Put back the auto generated email before update\n                  _this3.enrollment.email = _this3.initialEnrollmentState.email;\n                }\n                // delete the enrollment tos delivery methods before updating because the delivery objects could potentially be pretty big\n                // and this will speed up the request and prevent any payload too large errors. They are not updated on this put request anyway.\n                delete _this3.enrollment.enrollment_tos_delivery_methods;\n                // Set the source of the enrollment if needed\n                if (_.isEmpty(_this3.enrollment.source)) {\n                  _this3.enrollment.source = PORTAL_ENROLLMENT_SOURCE;\n                }\n                _context2.prev = 8;\n                _context2.next = 11;\n                return EEnrollmentsService.put(_this3.enterpriseCustomer.id, _this3.enrollment);\n              case 11:\n                enrollment = _context2.sent;\n                _this3.submitPromise = enrollment;\n                thisEnrollment = enrollment[1][0];\n                $log.log('thisEnrollment', thisEnrollment);\n                _context2.next = 17;\n                return updateShipments();\n              case 17:\n                items = _context2.sent;\n                $log.log('shipment items', items);\n                _context2.next = 21;\n                return updateEnrollmentTOSDeliveryMethods();\n              case 21:\n                newEnrollmentDeliveryMethods = _context2.sent;\n                $log.log('newDeliveryMethods', newEnrollmentDeliveryMethods);\n                // Update the enrollment again if there were shipments so that the enrollment status\n                // can get set to pending tracking if enrollment was missing shipment records.\n                if (!(items.length > 0)) {\n                  _context2.next = 26;\n                  break;\n                }\n                _context2.next = 26;\n                return EEnrollmentsService.put(_this3.enterpriseCustomer.id, _this3.enrollment);\n              case 26:\n                enrollmentInPersonMethod = findInPersonEnrollmentTosDeliveryMethod(newEnrollmentDeliveryMethods);\n                if (thisEnrollment.signature_status !== 'SIGNED' && enrollmentInPersonMethod && !willSignLater) {\n                  redirectToInPersonAgreement({\n                    id: thisEnrollment.id,\n                    enrollment_tos_delivery_methods: newEnrollmentDeliveryMethods\n                  });\n                } else {\n                  $state.go('enterprise.enrollments');\n                }\n                // Check if patient is under 18.\n                EEnrollmentsService.checkPatientUnder18(_this3.enrollment.date_of_birth, 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.UNDER_18');\n                return _context2.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.UPDATED'));\n              case 32:\n                _context2.prev = 32;\n                _context2.t0 = _context2[\"catch\"](8);\n                error = _context2.t0;\n                $log.log('saveerror', error);\n                return _context2.abrupt(\"return\", NotificationsService.error((error != null ? (ref1 = error.data) != null ? ref1.errorMessage : void 0 : void 0) || (error != null ? (ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.message : void 0 : void 0 : void 0) || 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR'));\n              case 37:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, null, [[8, 32]]);\n        }));\n        return function updateEnrollment(_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      updateShipments = function updateShipments() {\n        var promisesArray, shipmentDifferences;\n        // here we need to update the shipment changes manually (we did a nested create before)\n        shipmentDifferences = calculateDifferences();\n        promisesArray = [];\n        _.each(shipmentDifferences.addDeviceTypeIds, function (deviceTypeId) {\n          return promisesArray.push(ShipmentsService.post({\n            enterprise_enrollment_id: _this3.enrollment.id,\n            device_type_id: deviceTypeId\n          }));\n        });\n        _.each(shipmentDifferences.removeDeviceTypeIds, function (deviceTypeId) {\n          var shipment;\n          shipment = _.find(_this3.initialEnrollmentState.shipments, function (shipment) {\n            return shipment.device_type_id === deviceTypeId;\n          });\n          return promisesArray.push(ShipmentsService.delete(shipment));\n        });\n        return $q.all(promisesArray);\n      };\n      createEnrollment = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(willSignLater) {\n          var enrollment, error, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                addSelectedTOSDeliveryMethodsToEnrollment();\n                _context3.prev = 1;\n                _context3.next = 4;\n                return EEnrollmentsService.post(_this3.enterpriseCustomer.id, _this3.enrollment);\n              case 4:\n                enrollment = _context3.sent;\n                _this3.submitPromise = enrollment;\n                if (!willSignLater && findInPersonEnrollmentTosDeliveryMethod(enrollment)) {\n                  redirectToInPersonAgreement(enrollment);\n                } else {\n                  $state.go('enterprise.enrollments');\n                }\n                // Check if patient is under 18.\n                EEnrollmentsService.checkPatientUnder18(_this3.enrollment.date_of_birth, 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.UNDER_18');\n                return _context3.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.SUCCESS'));\n              case 11:\n                _context3.prev = 11;\n                _context3.t0 = _context3[\"catch\"](1);\n                error = _context3.t0;\n                $log.log('createerror', error);\n                return _context3.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || 'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR'));\n              case 16:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, null, [[1, 11]]);\n        }));\n        return function createEnrollment(_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      isMethodInEnrollmentTOSDeliveryMethods = function isMethodInEnrollmentTOSDeliveryMethods(source, tosMethod) {\n        var method;\n        method = source.filter(function (method) {\n          return method.tos_delivery_method.key_name === tosMethod;\n        });\n        if (method.length) {\n          return method[0];\n        }\n        return false;\n      };\n      getInPersonAgreementRequestUrl = function getInPersonAgreementRequestUrl(enrollmentInPersonMethod) {\n        return _.get(enrollmentInPersonMethod, 'tos_delivery_response.signers[0].request_url');\n      };\n      findInPersonEnrollmentTosDeliveryMethod = function findInPersonEnrollmentTosDeliveryMethod(enrollmentOrMethods) {\n        var enrollmentInPersonMethod, methods;\n        methods = _.isArray(enrollmentOrMethods) ? enrollmentOrMethods : enrollmentOrMethods.enrollment_tos_delivery_methods;\n        enrollmentInPersonMethod = isMethodInEnrollmentTOSDeliveryMethods(methods, 'IN_PERSON');\n        return enrollmentInPersonMethod || isMethodInEnrollmentTOSDeliveryMethods(methods, 'PHYSICIAN_ATTESTATION');\n      };\n      redirectToInPersonAgreement = function redirectToInPersonAgreement(enrollment) {\n        var attempts, enrollmentInPersonMethod, failAgreementUrlPoll, maxAttempts, maxPollDelayMs, pollBackoffFactor, pollDelayMs, pollForAgreementUrl, requestUrl, scheduleAgreementUrlPoll;\n        enrollmentInPersonMethod = findInPersonEnrollmentTosDeliveryMethod(enrollment);\n        if (!enrollmentInPersonMethod) {\n          return;\n        }\n        requestUrl = getInPersonAgreementRequestUrl(enrollmentInPersonMethod);\n        if (requestUrl) {\n          $window.location.href = requestUrl;\n          return;\n        }\n        _this3.agreementUrlPollActive = true;\n        attempts = 0;\n        maxAttempts = 20;\n        pollDelayMs = 500;\n        maxPollDelayMs = 3000;\n        pollBackoffFactor = 1.5;\n        failAgreementUrlPoll = function failAgreementUrlPoll() {\n          if (!_this3.agreementUrlPollActive) {\n            return;\n          }\n          _this3.agreementUrlPollActive = false;\n          $timeout.cancel(_this3.timeout);\n          NotificationsService.error('PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOASTS.ERROR');\n          return $state.go('enterprise.enrollments');\n        };\n        scheduleAgreementUrlPoll = function scheduleAgreementUrlPoll() {\n          var delayMs;\n          if (!_this3.agreementUrlPollActive) {\n            return;\n          }\n          $timeout.cancel(_this3.timeout);\n          delayMs = pollDelayMs;\n          pollDelayMs = Math.min(Math.round(pollDelayMs * pollBackoffFactor), maxPollDelayMs);\n          return _this3.timeout = $timeout(pollForAgreementUrl, delayMs);\n        };\n        pollForAgreementUrl = function pollForAgreementUrl() {\n          if (!_this3.agreementUrlPollActive) {\n            return;\n          }\n          attempts += 1;\n          if (attempts > maxAttempts) {\n            failAgreementUrlPoll();\n            return;\n          }\n          return EEnrollmentsService.get(_this3.enterpriseCustomer.id, enrollment.id).then(function (reloadedEnrollment) {\n            var reloadedRequestUrl;\n            if (!_this3.agreementUrlPollActive) {\n              return;\n            }\n            reloadedRequestUrl = getInPersonAgreementRequestUrl(findInPersonEnrollmentTosDeliveryMethod(reloadedEnrollment));\n            if (reloadedRequestUrl) {\n              _this3.agreementUrlPollActive = false;\n              $timeout.cancel(_this3.timeout);\n              return $window.location.href = reloadedRequestUrl;\n            } else {\n              return scheduleAgreementUrlPoll();\n            }\n          }).catch(function (error) {\n            if (!_this3.agreementUrlPollActive) {\n              return;\n            }\n            $log.log('poll agreement url error', error);\n            if (attempts >= maxAttempts) {\n              return failAgreementUrlPoll();\n            } else {\n              return scheduleAgreementUrlPoll();\n            }\n          });\n        };\n        return pollForAgreementUrl();\n      };\n      addSelectedTOSDeliveryMethodsToEnrollment = function addSelectedTOSDeliveryMethodsToEnrollment() {\n        _this3.enrollment.enrollment_tos_delivery_methods = [];\n        if (_this3.eulaDeliveryMethod === 'ELECTRONIC') {\n          if (_this3.smsOptionSelected) {\n            _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject('SMS'));\n          }\n          if (_this3.inPersonOptionSelected) {\n            _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject('IN_PERSON'));\n          }\n          if (_this3.emailOptionSelected) {\n            return _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject('EMAIL'));\n          }\n        } else {\n          return _this3.enrollment.enrollment_tos_delivery_methods.push(enrollmentTosDeliveryObject(_this3.eulaDeliveryMethod));\n        }\n      };\n      updateEnrollmentTOSDeliveryMethods = function updateEnrollmentTOSDeliveryMethods() {\n        var promisesStorage;\n        promisesStorage = [];\n        if (_this3.eulaDeliveryMethod === 'ELECTRONIC') {\n          if (_this3.smsOptionSelected) {\n            promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject('SMS', _this3.enrollment.id)));\n          }\n          if (_this3.inPersonOptionSelected) {\n            promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject('IN_PERSON', _this3.enrollment.id)));\n          }\n          if (_this3.emailOptionSelected) {\n            promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject('EMAIL', _this3.enrollment.id)));\n          }\n          // Check to make sure eulaDeliveryMethod is at least defined, because enrollment is saveable without selecting a new method.\n        } else if (_this3.eulaDeliveryMethod) {\n          promisesStorage.push(EEnrollmentTOSDeliveryMethodsService.post(enrollmentTosDeliveryObject(_this3.eulaDeliveryMethod, _this3.enrollment.id)));\n        }\n        return $q.all(promisesStorage);\n      };\n      getTOSDeliveryMethodIDByKeyName = function getTOSDeliveryMethodIDByKeyName(keyName) {\n        var deliveryMethod, i, len, ref;\n        ref = _this3.tosDeliveryMethods;\n        for (i = 0, len = ref.length; i < len; i++) {\n          deliveryMethod = ref[i];\n          if (deliveryMethod.key_name === keyName) {\n            return deliveryMethod.id;\n          }\n        }\n      };\n      enrollmentTosDeliveryObject = function enrollmentTosDeliveryObject(keyName) {\n        var enterpriseEnrollmentID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var newObject;\n        newObject = {\n          tos_delivery_method_id: getTOSDeliveryMethodIDByKeyName(keyName),\n          is_currently_selected: true\n        };\n        if (enterpriseEnrollmentID) {\n          newObject.enterprise_enrollment_id = enterpriseEnrollmentID;\n        }\n        return newObject;\n      };\n      // automatically set wrist_size based on gender\n      this.onGenderChange = function (payload) {\n        if (payload.model === 'm') {\n          return this.enrollment.wrist_size = 'LG';\n        } else if (payload.model === 'f') {\n          return this.enrollment.wrist_size = 'SM';\n        }\n      };\n      this.getEulaAgreementModalName = function () {\n        if (this.eulaDeliveryMethod === 'ELECTRONIC') {\n          if (this.smsOptionSelected) {\n            return 'SMS';\n          }\n          if (this.inPersonOptionSelected) {\n            return 'HANDOFF';\n          }\n          if (this.emailOptionSelected) {\n            return 'EMAIL';\n          }\n        } else {\n          return this.eulaDeliveryMethod;\n        }\n      };\n      this.onChangeDoesPatientHaveEmail = function () {\n        if (this.enrollment.has_no_email) {\n          this.isEmailDisabled = true;\n          this.enrollment.email = null;\n        } else {\n          this.isEmailDisabled = false;\n        }\n        return updateEnrollmentDeliveryMethod();\n      };\n      // this.onChangeIsPatientPresent = ->\n      //   updateEnrollmentDeliveryMethod()\n      updateEnrollmentDeliveryMethod = function updateEnrollmentDeliveryMethod() {\n        if (!_this3.enrollment.q_patient_present && _this3.enrollment.has_no_email) {\n          _this3.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptionsSnailMail;\n          return _this3.enrollment.pactsafe_request_delivery_method = 'MAIL';\n        } else if (!_this3.enrollment.q_patient_present && !_this3.enrollment.has_no_email) {\n          _this3.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptionsNotPresent;\n          return _this3.enrollment.pactsafe_request_delivery_method = 'EMAIL';\n        } else {\n          _this3.pactsafeEulaDeliveryOptionsArray = PactsafeService.pactsafeEulaDeliveryOptions;\n          return _this3.enrollment.pactsafe_request_delivery_method = 'IN_PERSON';\n        }\n      };\n      this.onMedicareAdvantageProviderChange = function (payload) {\n        if (payload.model) {\n          if (this.isInternal) {\n            return this.isMedAdvantageNumsRequired = false;\n          } else {\n            return this.isMedAdvantageNumsRequired = true;\n          }\n        } else {\n          this.enrollment.medicare_advantage_group_num = null;\n          this.enrollment.medicare_advantage_individual_num = null;\n          return this.isMedAdvantageNumsRequired = false;\n        }\n      };\n      this.onEULADeliveryMethodChange = function (method, isSelected) {\n        var electronicMethods;\n        if (method === 'ELECTRONIC') {\n          selectAllAvailableElectronicMethods();\n          return;\n        }\n        electronicMethods = ['SMS', 'IN_PERSON', 'EMAIL'];\n        if (indexOf.call(electronicMethods, method) >= 0 && isSelected) {\n          return this.eulaDeliveryMethod = 'ELECTRONIC';\n        } else if (indexOf.call(electronicMethods, method) < 0) {\n          // Clear out electronic selections\n          this.smsOptionSelected = false;\n          this.inPersonOptionSelected = false;\n          return this.emailOptionSelected = false;\n        }\n      };\n      this.initPatientAgreementDefaults = function () {\n        if (!this.enrollment.id) {\n          this.smsOptionSelected = false;\n          this.emailOptionSelected = false;\n          this.eulaDeliveryMethod = 'ELECTRONIC';\n          return selectAllAvailableElectronicMethods();\n        }\n      };\n      selectAllAvailableElectronicMethods = function selectAllAvailableElectronicMethods() {\n        _this3.inPersonOptionSelected = true;\n        if (!_this3.enrollment.has_no_email) {\n          _this3.emailOptionSelected = true;\n        }\n        if (_this3.enterpriseCustomer.vma_consent_enabled && (_this3.enrollment.phone_1_type === 'm' || _this3.enrollment.phone_2_type === 'm' || _this3.enrollment.phone_3_type === 'm')) {\n          return _this3.smsOptionSelected = true;\n        }\n      };\n      setLastRequestedTOSDeliveryMethods = function setLastRequestedTOSDeliveryMethods(enrollment) {\n        var i, lastElectronicTOSDeliveryMethods, len, method, ref;\n        if (enrollment.enrollment_tos_delivery_methods) {\n          lastElectronicTOSDeliveryMethods = [];\n          _this3.previouslySelectedTOSDeliveryMethodsStrings = [];\n          ref = enrollment.enrollment_tos_delivery_methods;\n          for (i = 0, len = ref.length; i < len; i++) {\n            method = ref[i];\n            if (method.is_currently_selected) {\n              if (method.tos_delivery_method.key_name === 'SMS') {\n                _this3.previouslySelectedSMSOption = true;\n                lastElectronicTOSDeliveryMethods.push(method.tos_delivery_method.name);\n              }\n              if (method.tos_delivery_method.key_name === 'EMAIL') {\n                _this3.previouslySelectedEmailOption = true;\n                lastElectronicTOSDeliveryMethods.push(method.tos_delivery_method.name);\n              } else if (method.tos_delivery_method.key_name === 'IN_PERSON') {\n                _this3.previouslySelectedInPersonOption = true;\n                lastElectronicTOSDeliveryMethods.push(method.tos_delivery_method.name);\n              } else if (method.tos_delivery_method.key_name === 'IVR') {\n                _this3.previouslySelectedIVROption = true;\n                _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature by \".concat(method.tos_delivery_method.name.toLowerCase()));\n              } else if (method.tos_delivery_method.key_name === 'MAIL') {\n                _this3.previouslySelectedMailOption = true;\n                _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature by \".concat(method.tos_delivery_method.name.toLowerCase()));\n              } else if (method.tos_delivery_method.key_name === 'PHYSICIAN_ATTESTATION') {\n                _this3.previouslySelectedPhysicianAttestationOption = true;\n                _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature by \".concat(method.tos_delivery_method.name.toLowerCase()));\n              }\n            }\n          }\n          if (lastElectronicTOSDeliveryMethods.length) {\n            lastElectronicTOSDeliveryMethods = lastElectronicTOSDeliveryMethods.join(', ').toLowerCase().replace(/, ((?:.(?!, ))+)$/, ' and $1');\n            _this3.previouslySelectedTOSDeliveryMethodsStrings.push(\"The patient agreement is currently pending signature electronically - \".concat(lastElectronicTOSDeliveryMethods));\n          }\n          if (_this3.previouslySelectedSMSOption && _this3.previouslySelectedEmailOption && _this3.previouslySelectedInPersonOption && _this3.previouslySelectedIVROption && _this3.previouslySelectedMailOption) {\n            return _this3.allTOSMethodsUsed = true;\n          } else {\n            return _this3.allTOSMethodsUsed = false;\n          }\n        }\n      };\n      this.getEnrollmentSignedTOSMethod = function () {\n        var i, len, method, ref;\n        ref = this.enrollment.enrollment_tos_delivery_methods;\n        for (i = 0, len = ref.length; i < len; i++) {\n          method = ref[i];\n          if (method.signature_status === SignatureStatuses.SIGNED) {\n            return method.tos_delivery_method.name.toLowerCase();\n          }\n        }\n      };\n      this.blankSecondaryRelationshipFields = function () {\n        if (this.enrollment.secondary_insurer.policy_holder_is_patient === true) {\n          this.enrollment.secondary_insurer.patient_to_policyholder_relationship_id = null;\n          this.enrollment.secondary_insurer.policyholder_name_first = '';\n          this.enrollment.secondary_insurer.policyholder_name_last = '';\n          this.enrollment.secondary_insurer.policyholder_date_of_birth = null;\n          return this.enrollment.secondary_insurer.policyholder_sex = '';\n        }\n      };\n      this.blankTertiaryRelationshipFields = function () {\n        if (this.enrollment.tertiary_insurer.policy_holder_is_patient === true) {\n          this.enrollment.tertiary_insurer.patient_to_policyholder_relationship_id = null;\n          this.enrollment.tertiary_insurer.policyholder_name_first = '';\n          this.enrollment.tertiary_insurer.policyholder_name_last = '';\n          this.enrollment.tertiary_insurer.policyholder_date_of_birth = null;\n          return this.enrollment.tertiary_insurer.policyholder_sex = '';\n        }\n      };\n      this.$onDestroy = function () {\n        this.agreementUrlPollActive = false;\n        return $timeout.cancel(this.timeout);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-add-card/e-enrollments-add-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollmentsAdd\n   * @restrict E\n   * @param {object} user user model object\n   * @description\n   * Add an enterprise enrollment page wrapper component\n   */\n  angular.module('enterprise').component('eEnrollmentsAdd', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enrollment: '<',\n      relationships: '<',\n      deviceTypes: '<',\n      medAdvantageProviders: '<',\n      tosDeliveryMethods: '<',\n      providers: '<',\n      enterpriseCustomer: '<',\n      features: '<',\n      globalConfigurations: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        var name;\n        $log = $log.getInstance('eEnrollmentsAdd');\n        $log.log('this.enrollment', this.enrollment);\n        name = this.enrollment ? this.enrollment.name_first + ' ' + this.enrollment.name_last : '';\n        return this.translationData = {\n          name: name\n        };\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments-add/e-enrollments-add.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eDeactivatedUsersCard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} eUserProfiles patients\n   * @param {object} enterpriseCustomer the customer (practice)\n   * @param {object} deviceTypes all device types\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @param {object} patientDashboard dashboard info for patients list\n   * @description\n   * Displays enterprise users list\n   */\n  angular.module('enterprise').component('eDeactivatedUsersCard', {\n    bindings: {\n      user: '<',\n      eUserProfiles: '<',\n      enterpriseCustomer: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      patientDashboard: '<',\n      providers: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $filter, $stateParams, PER_PAGE, EUserProfilesService, UserProfilesService, RPMTimes, StandardPagination, DateOfBirthConfigService, NotificationsService, ObservationReportService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eDeactivatedUsersCard');\n        $log.log('eDeactivatedUsersCard component loaded');\n        $log.log('this.deviceTypes', this.deviceTypes);\n        $log.log('this.eUserProfiles', this.eUserProfiles);\n        this.monthYear = moment().startOf(\"month\").format('MMMM YYYY');\n        this.rpmTimesOptions = RPMTimes;\n        $log.log('this.eUserProfiles.headers(\"X-Total-Count\")', this.eUserProfiles.headers('X-Total-Count'));\n        this.patientsCount = this.eUserProfiles.headers('X-Total-Count');\n        this.patients = this.eUserProfiles.data.data;\n        this.primaryProviderOptions = _.map(this.providers, function (provider) {\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n            value: provider.id\n          };\n        });\n        this.primaryProviderOptions.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.primaryProviderQuery = null;\n        this.itemsPerPage = PER_PAGE.PATIENTS;\n        this.pageNumber = $stateParams.patient_page || 1;\n        this.sortDir = 'DESC';\n        this.sortField = 'created_at';\n        this.searchQueryFilter = null;\n        this.rpmTimeFilter = null;\n        this.rpmTime = null;\n        this.queryString = {};\n        this.optionsForPagination = StandardPagination;\n        this.initDatePicker();\n        return this.showSpinner = false;\n      };\n      this.onChange = function (property, payload) {\n        var newQueryString;\n        $log.log('payload', payload);\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sortDir: this.sortDir,\n          _sortField: this.sortField,\n          provider_user_profile_id: this.user.user_profile.id\n        };\n        // Assign new filter property.\n        // RPM time filter can have a valid value of 0, so make 0 a truthy value in this case and pass through.\n        if (payload.model !== null && payload.model !== '') {\n          $log.log('payload.model', payload.model);\n          newQueryString[property] = payload.model;\n        }\n        // Remove filter property if it exists in the query string and if payload value is falsy\n        if (this.queryString[property] && (payload.model === null || payload.model === '')) {\n          delete this.queryString[property];\n        }\n        // Allows for multiple filters at once.\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        return this.fetchPatientsAndUpdateUI(1, this.queryString);\n      };\n      this.initDatePicker = function () {\n        var _this = this;\n        var datePickerEventHandler, jsEndDate, jsStartDate;\n        jsStartDate = DateOfBirthConfigService.startDateDOB.toJSDate();\n        jsEndDate = DateOfBirthConfigService.endDateDOB.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        datePickerEventHandler = {\n          'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n            var payload;\n            $log.log('applying date range', event, picker, _this.datePicker.date);\n            payload = {\n              model: {\n                'during': _this.datePicker.date.startDate.local().format('YYYY-MM-DD'),\n                'and': _this.datePicker.date.endDate.local().format('YYYY-MM-DD')\n              }\n            };\n            return _this.onChange('date_of_birth', payload);\n          }\n        };\n        this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: DateOfBirthConfigService.setupOptions()\n        };\n        return this.datePicker.options.eventHandlers = datePickerEventHandler;\n      };\n      this.goToPage = function () {\n        var newQueryString;\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sortDir: this.sortDir,\n          _sortField: this.sortField,\n          provider_user_profile_id: this.user.user_profile.id\n        };\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        return this.fetchPatientsAndUpdateUI(this.pageNumber, this.queryString);\n      };\n      this.modalBody = function () {\n        return ObservationReportService.reactivationModalBody();\n      };\n      this.reActivate = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(user) {\n          var error, patientUserProfile;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                user.deactivation_reason_id = null;\n                user.deactivated_at = null;\n                _context.prev = 2;\n                patientUserProfile = user; // just to be more verbose and clear...\n                _context.next = 6;\n                return UserProfilesService.reactivatePatient(this.user, patientUserProfile);\n              case 6:\n                NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTIFICATION.SUCCESS'));\n                return _context.abrupt(\"return\", $state.go('enterprise.patients'));\n              case 10:\n                _context.prev = 10;\n                _context.t0 = _context[\"catch\"](2);\n                error = _context.t0;\n                $log.log('error', error);\n                return _context.abrupt(\"return\", $state.go('enterprise.observation_report.patient_deactivation_contact'));\n              case 15:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[2, 10]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.fetchPatientsAndUpdateUI = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(pageNumber, queryString) {\n          var eUserProfiles, ref;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.showSpinner = true;\n                $log.log('this.currentReportingPeriod.id', this.currentReportingPeriod.id);\n                if ((ref = this.currentReportingPeriod) != null ? ref.id : void 0) {\n                  _context2.next = 4;\n                  break;\n                }\n                throw new Error('currentReportingPeriod required');\n              case 4:\n                _context2.next = 6;\n                return EUserProfilesService.getDeactivatedPatients(this.enterpriseCustomer.id, queryString);\n              case 6:\n                eUserProfiles = _context2.sent;\n                // update the url if we paginate\n                if (parseInt($stateParams.patient_page) !== parseInt(pageNumber)) {\n                  $state.go('.', {\n                    patient_page: pageNumber\n                  });\n                }\n                this.patientsCount = eUserProfiles.headers('X-Total-Count');\n                this.patients = eUserProfiles.data.data;\n                return _context2.abrupt(\"return\", this.showSpinner = false);\n              case 11:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x2, _x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.getDeviceTypeName = function (device) {\n        var ref, ref1;\n        if ((ref = device.device_type) != null ? ref.category : void 0) {\n          return (ref1 = _.find(this.deviceTypes.data.data, {\n            category: device.device_type.category\n          })) != null ? ref1.description : void 0;\n        } else {\n          return device.legacy_device_type;\n        }\n      };\n      this.getDiagnosisCodes = function (userProfile) {\n        return EUserProfilesService.getDiagnosisCodes(userProfile);\n      };\n      this.navigateToReport = function (userProfile, missingReportDates) {\n        $log.log('missingReportDates', missingReportDates);\n        // if a draft report exists for the missing billed dates then navigate to the draft report\n        if (missingReportDates.draft_report) {\n          return $state.go('enterprise.observation_report', {\n            user_profile_id: userProfile.id,\n            observation_report_id: missingReportDates.draft_report.id\n          });\n        } else {\n          // otherwise navigate to a new observation report page\n          return $state.go('enterprise.observation_report_new', {\n            user_profile_id: userProfile.id,\n            period_started_at: missingReportDates.period_started_at\n          });\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-deactivated-patients/e-deactivated-users-card/e-deactivated-users-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('eCarePlanVitals', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eCarePlanVitals');\n        $log.log('eCarePlanVitals component loaded');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/vitals/vitals.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eCarePlanSymptoms', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, CarePlanSymptomService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eCarePlanSymptoms');\n        $log.log('eCarePlanSymptoms component loaded');\n        this.tableOptions = {\n          entityName: 'Symptom',\n          properties: [{\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.SYMPTOMS.DESCRIPTION',\n            value: 'description',\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.SYMPTOMS.SEVERITY',\n            value: 'severity',\n            type: 'number',\n            required: true,\n            max: 10,\n            min: 1\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.SYMPTOMS.FREQUENCY',\n            value: 'frequency',\n            type: 'number',\n            required: true,\n            max: 10,\n            min: 1\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.SYMPTOMS.ONSET_DATE',\n            value: 'onset_date',\n            required: false,\n            type: 'date',\n            filter: 'date'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.SYMPTOMS.NOTES',\n            value: 'notes'\n          }],\n          defaultRow: {\n            care_plan_id: this.patientCarePlan.id,\n            severity: 1,\n            frequency: 1\n          }\n        };\n      };\n      this.getPage = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(perPage, pageNumber) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return CarePlanSymptomService.getAll(this.patientUserProfile.id, this.patientCarePlan.id, {\n                  _page: pageNumber,\n                  _perPage: perPage,\n                  _sortField: 'created_at',\n                  _sortDir: 'ASC'\n                });\n              case 2:\n                response = _context.sent;\n                return _context.abrupt(\"return\", {\n                  data: response.data.data,\n                  count: response.headers('X-Total-Count')\n                });\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.save = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(symptom) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!symptom.id) {\n                  _context2.next = 6;\n                  break;\n                }\n                _context2.next = 3;\n                return CarePlanSymptomService.update(this.patientUserProfile.id, this.patientCarePlan.id, symptom);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.next = 8;\n                return CarePlanSymptomService.post(this.patientUserProfile.id, this.patientCarePlan.id, symptom);\n              case 8:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(symptom) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return CarePlanSymptomService.delete(this.patientUserProfile.id, this.patientCarePlan.id, symptom);\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/symptoms/symptoms.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eCarePlanProviders', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?',\n      practiceSpecialties: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, CarePlanProviderService) {\n      this.$onInit = function () {\n        var practiceSpecialtiesOptions;\n        $log = $log.getInstance('eCarePlanProviders');\n        $log.log('eCarePlanProviders component loaded');\n        practiceSpecialtiesOptions = _.map(this.practiceSpecialties, function (practiceSpecialty) {\n          return {\n            label: practiceSpecialty.name,\n            value: practiceSpecialty.id\n          };\n        });\n        this.tableOptions = {\n          entityName: 'Provider',\n          properties: [{\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.PROVIDER.PRACTICE_ID',\n            value: 'practice_specialty_id',\n            type: 'select',\n            options: practiceSpecialtiesOptions,\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.PROVIDER.NAME',\n            value: 'name',\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.PROVIDER.EMAIL',\n            value: 'email'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.PROVIDER.PHONE',\n            value: 'phone_number',\n            type: 'text',\n            regex: '^[0-9]{10}$'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.PROVIDER.ROLE',\n            value: 'role'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.PROVIDER.NOTES',\n            value: 'notes'\n          }],\n          defaultRow: {\n            care_plan_id: this.patientCarePlan.id,\n            practice_specialty_id: practiceSpecialtiesOptions[0].value\n          }\n        };\n      };\n      this.getPage = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(perPage, pageNumber) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return CarePlanProviderService.getAll(this.patientUserProfile.id, this.patientCarePlan.id, {\n                  _page: pageNumber,\n                  _perPage: perPage,\n                  _sortField: 'created_at',\n                  _sortDir: 'ASC'\n                });\n              case 2:\n                response = _context.sent;\n                return _context.abrupt(\"return\", {\n                  data: response.data.data,\n                  count: response.headers('X-Total-Count')\n                });\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.save = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(provider) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!provider.id) {\n                  _context2.next = 6;\n                  break;\n                }\n                _context2.next = 3;\n                return CarePlanProviderService.update(this.patientUserProfile.id, this.patientCarePlan.id, provider);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.next = 8;\n                return CarePlanProviderService.post(this.patientUserProfile.id, this.patientCarePlan.id, provider);\n              case 8:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(provider) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return CarePlanProviderService.delete(this.patientUserProfile.id, this.patientCarePlan.id, provider);\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/providers/providers.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('eCarePlanMedications', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eCarePlanMedications');\n        $log.log('eCarePlanMedications component loaded');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/medications/medications.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eCarePlanInterventions', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?',\n      interventionTypes: '<',\n      responsiblePartyTypes: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, CarePlanInterventionService) {\n      this.$onInit = function () {\n        var interventionTypeOptions, responsiblePartyTypeOptions;\n        $log = $log.getInstance('eCarePlanInterventions');\n        $log.log('eCarePlanInterventions component loaded');\n        interventionTypeOptions = _.map(this.interventionTypes, function (interventionType) {\n          return {\n            label: interventionType.name,\n            value: interventionType.id\n          };\n        });\n        responsiblePartyTypeOptions = _.map(this.responsiblePartyTypes, function (responsiblePartyType) {\n          return {\n            label: responsiblePartyType.name,\n            value: responsiblePartyType.id\n          };\n        });\n        this.tableOptions = {\n          entityName: 'Intervention',\n          properties: [{\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.INTERVENTION_TYPE',\n            value: 'intervention_type_id',\n            required: true,\n            type: 'select',\n            options: interventionTypeOptions\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.RESPONSIBLE_PARTY',\n            value: 'responsible_party_type_id',\n            type: 'select',\n            options: responsiblePartyTypeOptions,\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.STATUS',\n            value: 'status',\n            type: 'select',\n            options: [{\n              label: 'Not Started',\n              value: 'NOT_STARTED'\n            }, {\n              label: 'In Progress',\n              value: 'IN_PROGRESS'\n            }, {\n              label: 'On Hold',\n              value: 'ON_HOLD'\n            }, {\n              label: 'Completed',\n              value: 'COMPLETED'\n            }]\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.FREQUENCY',\n            value: 'frequency'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.DESCRIPTION',\n            value: 'description',\n            type: 'text',\n            max: 255,\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.NOTES',\n            value: 'notes',\n            type: 'text',\n            max: 255\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.START_DATE',\n            value: 'start_date',\n            type: 'date',\n            filter: 'date'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.INTERVENTIONS.END_DATE',\n            value: 'end_date',\n            type: 'date',\n            filter: 'date'\n          }],\n          defaultRow: {\n            care_plan_id: this.patientCarePlan.id,\n            status: 'NOT_STARTED',\n            responsible_party_type_id: responsiblePartyTypeOptions[0].value,\n            intervention_type_id: interventionTypeOptions[0].value\n          }\n        };\n      };\n      this.getPage = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(perPage, pageNumber) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return CarePlanInterventionService.getAll(this.patientUserProfile.id, this.patientCarePlan.id, {\n                  _page: pageNumber,\n                  _perPage: perPage,\n                  _sortField: 'created_at',\n                  _sortDir: 'ASC'\n                });\n              case 2:\n                response = _context.sent;\n                return _context.abrupt(\"return\", {\n                  data: response.data.data,\n                  count: response.headers('X-Total-Count')\n                });\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.save = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(intervention) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!intervention.id) {\n                  _context2.next = 6;\n                  break;\n                }\n                _context2.next = 3;\n                return CarePlanInterventionService.update(this.patientUserProfile.id, this.patientCarePlan.id, intervention);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.next = 8;\n                return CarePlanInterventionService.post(this.patientUserProfile.id, this.patientCarePlan.id, intervention);\n              case 8:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(intervention) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return CarePlanInterventionService.delete(this.patientUserProfile.id, this.patientCarePlan.id, intervention);\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/interventions/interventions.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eCarePlanGoals', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, CarePlanGoalService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eCarePlanGoals');\n        $log.log('eCarePlanGoals component loaded');\n        this.tableOptions = {\n          entityName: 'Goal',\n          properties: [{\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.GOALS.IMPORTANCE',\n            value: 'importance',\n            type: 'select',\n            options: [{\n              label: 'High',\n              value: 'HIGH'\n            }, {\n              label: 'Medium',\n              value: 'MEDIUM'\n            }, {\n              label: 'Low',\n              value: 'LOW'\n            }]\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.GOALS.STATUS',\n            value: 'status',\n            type: 'select',\n            options: [{\n              label: 'Not Started',\n              value: 'NOT_STARTED'\n            }, {\n              label: 'In Progress',\n              value: 'IN_PROGRESS'\n            }, {\n              label: 'On Hold',\n              value: 'ON_HOLD'\n            }, {\n              label: 'Completed',\n              value: 'COMPLETED'\n            }]\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.GOALS.DESCRIPTION',\n            value: 'description',\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.GOALS.TARGET_DATE',\n            value: 'target_date',\n            type: 'date',\n            filter: 'date'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.GOALS.NOTES',\n            value: 'notes'\n          }],\n          defaultRow: {\n            care_plan_id: this.patientCarePlan.id,\n            importance: 'MEDIUM',\n            status: 'NOT_STARTED',\n            target_date: null\n          }\n        };\n      };\n      this.getPage = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(perPage, pageNumber) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return CarePlanGoalService.getAll(this.patientUserProfile.id, this.patientCarePlan.id, {\n                  _page: pageNumber,\n                  _perPage: perPage,\n                  _sortField: 'created_at',\n                  _sortDir: 'ASC'\n                });\n              case 2:\n                response = _context.sent;\n                return _context.abrupt(\"return\", {\n                  data: response.data.data,\n                  count: response.headers('X-Total-Count')\n                });\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.save = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(goal) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!goal.id) {\n                  _context2.next = 6;\n                  break;\n                }\n                _context2.next = 3;\n                return CarePlanGoalService.update(this.patientUserProfile.id, this.patientCarePlan.id, goal);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.next = 8;\n                return CarePlanGoalService.post(this.patientUserProfile.id, this.patientCarePlan.id, goal);\n              case 8:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(goal) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return CarePlanGoalService.delete(this.patientUserProfile.id, this.patientCarePlan.id, goal);\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/goals/goals.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eCarePlanCaregivers', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?',\n      relationships: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, CarePlanCaregiverService) {\n      this.$onInit = function () {\n        var relationshipOptions;\n        $log = $log.getInstance('eCarePlanCaregivers');\n        $log.log('eCarePlanCaregivers component loaded');\n        relationshipOptions = _.map(this.relationships, function (relationship) {\n          return {\n            label: relationship.name,\n            value: relationship.id\n          };\n        });\n        this.tableOptions = {\n          entityName: 'Caregiver',\n          properties: [{\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.CAREGIVER.RELATIONSHIP_ID',\n            value: 'relationship_id',\n            type: 'select',\n            options: relationshipOptions,\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.CAREGIVER.NAME',\n            value: 'name',\n            type: 'text',\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.CAREGIVER.EMAIL',\n            value: 'email'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.CAREGIVER.PHONE',\n            value: 'phone_number'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.CAREGIVER.ROLE',\n            value: 'role',\n            type: 'text'\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.CAREGIVER.NOTES',\n            value: 'notes',\n            type: 'text'\n          }],\n          defaultRow: {\n            care_plan_id: this.patientCarePlan.id,\n            relationship_id: relationshipOptions[0].value\n          }\n        };\n      };\n      this.getPage = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(perPage, pageNumber) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return CarePlanCaregiverService.getAll(this.patientUserProfile.id, this.patientCarePlan.id, {\n                  _page: pageNumber,\n                  _perPage: perPage,\n                  _sortField: 'created_at',\n                  _sortDir: 'ASC'\n                });\n              case 2:\n                response = _context.sent;\n                return _context.abrupt(\"return\", {\n                  data: response.data.data,\n                  count: response.headers('X-Total-Count')\n                });\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.save = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(caregiver) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!caregiver.id) {\n                  _context2.next = 6;\n                  break;\n                }\n                _context2.next = 3;\n                return CarePlanCaregiverService.update(this.patientUserProfile.id, this.patientCarePlan.id, caregiver);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.next = 8;\n                return CarePlanCaregiverService.post(this.patientUserProfile.id, this.patientCarePlan.id, caregiver);\n              case 8:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(caregiver) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return CarePlanCaregiverService.delete(this.patientUserProfile.id, this.patientCarePlan.id, caregiver);\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/caregivers/caregivers.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eCarePlanBarriers', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?',\n      barrierTypes: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, CarePlanBarrierService) {\n      this.$onInit = function () {\n        var barrierTypeOptions;\n        $log = $log.getInstance('eCarePlanBarriers');\n        $log.log('eCarePlanBarriers component loaded');\n        barrierTypeOptions = _.map(this.barrierTypes, function (barrier_type) {\n          return {\n            label: barrier_type.name,\n            value: barrier_type.id\n          };\n        });\n        this.tableOptions = {\n          entityName: 'Barrier',\n          properties: [{\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BARRIERS.TYPE',\n            value: 'barrier_type_id',\n            type: 'select',\n            options: barrierTypeOptions,\n            required: true\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BARRIERS.IMPACT',\n            value: 'impact',\n            required: true,\n            type: 'number',\n            max: 10,\n            min: 1\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BARRIERS.DESCRIPTION',\n            value: 'description',\n            required: true,\n            max: 255\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BARRIERS.NOTES',\n            value: 'notes',\n            max: 255\n          }, {\n            label: 'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BARRIERS.RESOLUTIONS',\n            value: 'resolutions'\n          }],\n          defaultRow: {\n            care_plan_id: this.patientCarePlan.id,\n            barrier_type_id: barrierTypeOptions[0].value\n          }\n        };\n      };\n      this.getPage = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(perPage, pageNumber) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return CarePlanBarrierService.getAll(this.patientUserProfile.id, this.patientCarePlan.id, {\n                  _page: pageNumber,\n                  _perPage: perPage,\n                  _sortField: 'created_at',\n                  _sortDir: 'ASC'\n                });\n              case 2:\n                response = _context.sent;\n                return _context.abrupt(\"return\", {\n                  data: response.data.data,\n                  count: response.headers('X-Total-Count')\n                });\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.save = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(barrier) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!barrier.id) {\n                  _context2.next = 6;\n                  break;\n                }\n                _context2.next = 3;\n                return CarePlanBarrierService.update(this.patientUserProfile.id, this.patientCarePlan.id, barrier);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.next = 8;\n                return CarePlanBarrierService.post(this.patientUserProfile.id, this.patientCarePlan.id, barrier);\n              case 8:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 9:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(barrier) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return CarePlanBarrierService.delete(this.patientUserProfile.id, this.patientCarePlan.id, barrier);\n              case 2:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x4) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/barriers/barriers.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('eCarePlanAllergies', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      isCompact: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eCarePlanAllergies');\n        $log.log('eCarePlanAllergies component loaded');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/allergies/allergies.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('billing', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name billing.directive:updateCard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} stripeCustomer stripe customer object\n   * @param {object} enterpriseCustomer practice customer object\n   * @param {boolean=} onEdit contains boolean of active/inactive state of parent\n   * @description\n   * Form to update the current user's stripe source (credit card)\n   */\n  angular.module('billing').component('updateCard', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '<',\n      stripeCustomer: '<',\n      onEdit: '=?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, env, CacheFactory, NotificationsService, EBillingService) {\n      this.$onInit = function () {\n        this.payment = {};\n        this.stripe = null;\n        this.card = null;\n        this.errorMsg = null;\n        return this.stripe = Stripe(env.stripe_public_key);\n      };\n      this.updateCard = function () {\n        var _this = this;\n        var additionalData;\n        additionalData = {\n          name: this.payment.name\n        };\n        this.submitPromise = this.stripe.createToken(this.card, additionalData).then(function (response) {\n          var ref, sourceMetadata;\n          // get stripe token back from successful card authorization\n          $log.log('stripe.createToken', response);\n          // add the card to the user's stripe account\n          sourceMetadata = {\n            customer_type: 'DOCTOR',\n            sponsor_user_profile_id: _this.user.user_profile.id // logged in user\n          };\n          if (!(response != null ? (ref = response.token) != null ? ref.id : void 0 : void 0)) {\n            throw new Error('We were not able to validate this card number. Please check #, expiration, CVV');\n          }\n          return EBillingService.updateCard(_this.enterpriseCustomer.id, response.token.id, sourceMetadata).then(function (response) {\n            $log.log('response', response);\n            NotificationsService.success('PORTAL.BILLING.UPDATE_CARD.TOASTS.SUCCESS');\n            return $state.go('enterprise.practicesettingstab', {\n              tab: 'payment'\n            }, {\n              reload: true\n            });\n          }, function (error) {\n            return NotificationsService.error('PORTAL.BILLING.UPDATE_CARD.TOASTS.ERROR');\n          });\n          // do nothing\n        }).then(function (payment) {}).catch(function (err) {\n          if (err.type && /^Stripe/.test(err.type)) {\n            $log.log('Stripe error: ', err.message);\n            return NotificationsService.error(err.message);\n          } else {\n            $log.error('Error', err.message, err);\n            return NotificationsService.error(err.message);\n          }\n        });\n        return this.submitPromise;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-billing/update-card/update-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name billing.directive:updateBankAccount\n   * @restrict E\n   * @param {object} user user model object\n   * @param {object} stripeCustomer stripe customer\n   * @param {object} enterpriseCustomer practice\n   * @description\n   * Allows enterprise customer to add a bank account. This is done by creating\n    a plaid_ach_account record. This model has lifecycle hooks that handle attaching accounts to Stripe\n    automatically based on the instance attribute values.\n    example:\n    plaidAchAccount.account_verification_status is null (verified)\n    plaidAchAccount.account_verification_status is 'pending_manual_verification' (microdeposit verification required)\n   */\n  angular.module('billing').component('updateBankAccount', {\n    bindings: {\n      user: '<',\n      stripeCustomer: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, EACHService, NotificationsService) {\n      this.$onInit = function () {\n        $log.log('this.stripeCustomer', this.stripeCustomer);\n        this.linkHandler = null; // a reference to the Plaid Link object\n        return this.hidePanel = false;\n      };\n      this.onSuccess = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n          var error, plaidAchAccount;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('onSuccess', payload);\n                $log.log('this.stripeCustomer.data.id', this.stripeCustomer.data.id);\n                $log.log('this.enterpriseCustomer.id', this.enterpriseCustomer.id);\n                $log.log('this.user.user_profile.id', this.user.user_profile.id);\n                _context.prev = 4;\n                _context.next = 7;\n                return EACHService.onLinkSuccess(payload, this.enterpriseCustomer.id, this.user.user_profile.id, this.stripeCustomer.data.id);\n              case 7:\n                plaidAchAccount = _context.sent;\n                $log.log('plaidAchAccount', plaidAchAccount);\n                // TODO: determine status and show correct message\n                if (plaidAchAccount.account_verification_status === null) {\n                  NotificationsService.success('PORTAL.ALERTS.VERIFY_BANK.TOASTS.SUCCESS_VERIFIED');\n                } else {\n                  NotificationsService.success('PORTAL.ALERTS.VERIFY_BANK.TOASTS.SUCCESS_NOT_VERIFIED');\n                }\n                return _context.abrupt(\"return\", $state.go('enterprise.practicesettings', {\n                  tab: 'payment'\n                }, {\n                  reload: true\n                }));\n              case 13:\n                _context.prev = 13;\n                _context.t0 = _context[\"catch\"](4);\n                error = _context.t0;\n                $state.go('enterprise.practicesettings', {\n                  tab: 'payment'\n                });\n                return _context.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage || error.data.message || error.data.data.message));\n              case 18:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[4, 13]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onLoad = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(payload) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return EACHService.onLinkLoad(payload);\n              case 2:\n                this.linkHandler = _context2.sent;\n                return _context2.abrupt(\"return\", this.hidePanel = true);\n              case 4:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onEvent = function (payload) {\n        // OPEN\n        // SELECT_INSTITUTION\n        // HANDOFF\n        // TRANSITION_VIEW\n        $log.log('onEvent', payload);\n        if (payload.eventName === 'EXIT') {\n          this.hidePanel = false;\n        }\n      };\n      this.onExit = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return EACHService.onLinkExit(payload);\n              case 2:\n                this.hidePanel = false;\n                return _context3.abrupt(\"return\", $state.go('enterprise.practicesettings'));\n              case 4:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x3) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.addBankAccountFailure = function () {};\n      // display error\n      this.$onDestroy = function () {\n        return EACHService.onLinkDestroy(this.linkHandler);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-billing/update-bank-account/update-bank-account.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name billing.directive:billingOverview\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} customer stripe customer\n   * @param {object} subscription subscription\n   * @param {object} plans stripe plans\n   * @param {array} invoices invoices\n   * @description\n   * Displays the current user's payment, subscription, and invoice info\n   */\n  angular.module('billing').component('practiceSettings', {\n    bindings: {\n      tab: '<',\n      user: '=',\n      stripeCustomer: '<',\n      enterpriseCustomer: '<',\n      enterpriseInvites: '<',\n      providers: '<',\n      practiceRoles: '<',\n      offices: '<',\n      ehrTypeCredentialFields: '<',\n      amdOffice: '<',\n      features: '<',\n      loggedInOffice: '<',\n      latestSignedContractState: '<',\n      enterpriseRoles: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $filter, $state, EnterpriseInvitationsService, NotificationsService, OfficeService, EUserProfilesService, ECustomersService, REGEX) {\n      this.$onInit = function () {\n        var _this = this;\n        $log.log('account-settings component loaded');\n        $log.log('this.eUserProfile', this.eUserProfile);\n        $log.log('enterpriseCustomer', this.enterpriseCustomer);\n        $log.log('enterpriseInvites', this.enterpriseInvites);\n        $log.log('providers', this.providers);\n        $log.log('latestSignedContractState', this.latestSignedContractState);\n        $log.log('this.stripeCustomer', this.stripeCustomer);\n        $log.log('TEST', _.filter(this.providers, ['npi', null]));\n        this.claimDaysValidationMessages = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_CLAIM_SETTINGS.VALIDATION')\n        }];\n        this.numberRegex = REGEX.NUMBER;\n        this.has_npied_providers = !(_.size(this.providers) === _.size(_.filter(this.providers, ['npi', null])));\n        this.providerOptions = _.map(this.providers, function (provider) {\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n            value: provider.id\n          };\n        });\n        this.individualNPIPayload = {};\n        this.individualNPIPayload.providerOptions = this.providerOptions;\n        switch (this.tab) {\n          case 'eligibilitychecks':\n            this.activeTab = 2;\n            break;\n          case 'payment':\n            this.activeTab = 3;\n            break;\n          case 'biller':\n            this.activeTab = 4;\n            break;\n          case 'staffaccounts':\n            this.activeTab = 5;\n            break;\n          default:\n            this.activeTab = 0;\n        }\n        this.deregisterInvitationListener = $rootScope.$on('enterprise_invitations_get_all', function (event, payload) {\n          $log.log('enterprise_invitations_get_all');\n          return _this.getAllEnterpriseInvitations();\n        });\n      };\n      this.updateClaimDays = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n          var error, ref, ref1, ref2, ref3;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                this.enterpriseCustomer.push_claim_drafts_days_99454 = payload.model;\n                if (!(!isNaN(this.enterpriseCustomer.push_claim_drafts_days_99454) && parseInt(this.enterpriseCustomer.push_claim_drafts_days_99454) < 31 && parseInt(this.enterpriseCustomer.push_claim_drafts_days_99454) >= 0)) {\n                  _context.next = 12;\n                  break;\n                }\n                _context.prev = 2;\n                _context.next = 5;\n                return ECustomersService.put(this.enterpriseCustomer);\n              case 5:\n                return _context.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.TOASTS.SUCCESS'));\n              case 8:\n                _context.prev = 8;\n                _context.t0 = _context[\"catch\"](2);\n                error = _context.t0;\n                return _context.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? (ref1 = ref.data) != null ? ref1.message : void 0 : void 0 : void 0) || (error != null ? (ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.errorMessage : void 0 : void 0 : void 0)));\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[2, 8]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.saveNPI = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log(\"saveNPI\", _.pick(this.offices[0], ['id', 'billing_npi', 'billing_tax_id', 'ptan']));\n              _context2.prev = 1;\n              _context2.next = 4;\n              return OfficeService.put(this.user.user_profile.enterprise_customer_id, _.pick(this.offices[0], ['id', 'billing_npi', 'billing_tax_id', 'ptan']));\n            case 4:\n              NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.TOASTS.SUCCESS');\n              _context2.next = 11;\n              break;\n            case 7:\n              _context2.prev = 7;\n              _context2.t0 = _context2[\"catch\"](1);\n              error = _context2.t0;\n              NotificationsService.error(error.data.data.message || error.data.data.errorMessage);\n            case 11:\n              _context2.next = 13;\n              return OfficeService.getAll(this.user.user_profile.enterprise_customer_id);\n            case 13:\n              this.offices = _context2.sent;\n            case 14:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this, [[1, 7]]);\n      }));\n      this.saveIndividualNPI = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                $log.log(payload);\n                _context3.prev = 1;\n                _context3.next = 4;\n                return EUserProfilesService.put(this.user.user_profile.enterprise_customer_id, payload);\n              case 4:\n                NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.TOASTS.SUCCESS');\n                _context3.next = 11;\n                break;\n              case 7:\n                _context3.prev = 7;\n                _context3.t0 = _context3[\"catch\"](1);\n                error = _context3.t0;\n                NotificationsService.error(error.data.data.message || error.data.data.errorMessage);\n              case 11:\n                _context3.next = 13;\n                return EUserProfilesService.getAllAdminsScopedByOffice(this.user.user_profile.enterprise_customer_id);\n              case 13:\n                this.providers = _context3.sent;\n                this.has_npied_providers = !(_.size(this.providers) === _.size(_.filter(this.providers, ['npi', null])));\n              case 15:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[1, 7]]);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.getAllEnterpriseInvitations = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              _context4.prev = 0;\n              _context4.next = 3;\n              return OfficeService.getAll(this.user.user_profile.enterprise_customer_id);\n            case 3:\n              this.offices = _context4.sent;\n              _context4.next = 6;\n              return EnterpriseInvitationsService.getAll(this.enterpriseCustomer.id);\n            case 6:\n              this.enterpriseInvites = _context4.sent;\n              return _context4.abrupt(\"return\", $log.log('enterpriseInvites', this.enterpriseInvites));\n            case 10:\n              _context4.prev = 10;\n              _context4.t0 = _context4[\"catch\"](0);\n              error = _context4.t0;\n              $log.log('error', error);\n              return _context4.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n            case 15:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this, [[0, 10]]);\n      }));\n      this.$onDestroy = function () {\n        return this.deregisterInvitationListener();\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-billing/practice-settings/practice-settings.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('accountSettings', []);\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:eBillers\n   * @restrict E\n   * @description\n   * Displays the enterprise billers information\n   */\n  angular.module('accountSettings').component('eBillers', {\n    bindings: {\n      user: '=',\n      onEdit: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, REGEX, EBillersService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('billers');\n        $log.log('billers component loaded');\n        this.isLoading = true;\n        this.emailRegex = REGEX.EMAIL;\n        this.numberRegex = REGEX.NUMBER;\n        this.billerChoice = {\n          self: true\n        };\n        return this.fetchOrBuildBiller();\n      };\n      this.fetchOrBuildBiller = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var biller, error;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              _context.next = 3;\n              return EBillersService.getAll(this.user.user_profile.enterprise_customer_id);\n            case 3:\n              biller = _context.sent;\n              $log.log('biller', biller);\n              this.biller = biller;\n              if (this.biller) {\n                this.billerChoice.self = false;\n              } else {\n                this.billerChoice.self = true;\n                this.biller = EBillersService.new({\n                  enterprise_customer_id: this.user.user_profile.enterprise_customer_id\n                });\n              }\n              return _context.abrupt(\"return\", this.isLoading = false);\n            case 10:\n              _context.prev = 10;\n              _context.t0 = _context[\"catch\"](0);\n              error = _context.t0;\n              return _context.abrupt(\"return\", $log.log('error', error));\n            case 14:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[0, 10]]);\n      }));\n      this.removeBiller = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(biller) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.isLoading = true;\n                _context2.prev = 1;\n                _context2.next = 4;\n                return EBillersService.delete(biller);\n              case 4:\n                this.submitPromise = _context2.sent;\n                this.biller = EBillersService.new({\n                  enterprise_customer_id: this.user.user_profile.enterprise_customer_id\n                });\n                this.isLoading = false;\n                return _context2.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.TOASTS.SUCCESS_REMOVE'));\n              case 10:\n                _context2.prev = 10;\n                _context2.t0 = _context2[\"catch\"](1);\n                error = _context2.t0;\n                return _context2.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[1, 10]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.save = function (biller) {\n        this.isLoading = true;\n        if (biller.id) {\n          return this.update(biller);\n        } else {\n          return this.create(biller);\n        }\n      };\n      this.create = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(biller) {\n          var error, newBiller;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.prev = 0;\n                this.submitPromise = EBillersService.post(biller);\n                _context3.next = 4;\n                return this.submitPromise;\n              case 4:\n                newBiller = _context3.sent;\n                $log.log('newBiller', newBiller);\n                this.biller = newBiller;\n                this.isLoading = false;\n                NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.TOASTS.SUCCESS');\n                _context3.next = 17;\n                break;\n              case 11:\n                _context3.prev = 11;\n                _context3.t0 = _context3[\"catch\"](0);\n                error = _context3.t0;\n                $log.log('create biller error', error);\n                this.isLoading = false;\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 17:\n                return _context3.abrupt(\"return\", this.submitPromise);\n              case 18:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[0, 11]]);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.update = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(biller) {\n          var error, updatedBiller;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.prev = 0;\n                this.submitPromise = EBillersService.put(biller);\n                _context4.next = 4;\n                return this.submitPromise;\n              case 4:\n                updatedBiller = _context4.sent;\n                $log.log('updatedBiller', updatedBiller);\n                this.biller = updatedBiller[1][0];\n                this.isLoading = false;\n                NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.TOASTS.SUCCESS');\n                _context4.next = 17;\n                break;\n              case 11:\n                _context4.prev = 11;\n                _context4.t0 = _context4[\"catch\"](0);\n                error = _context4.t0;\n                $log.log('update biller error', error);\n                this.isLoading = false;\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 17:\n                return _context4.abrupt(\"return\", this.submitPromise);\n              case 18:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this, [[0, 11]]);\n        }));\n        return function (_x3) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-billing/e-billers/e-billers.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name billing.directive:addBankAccount\n   * @restrict E\n   * @param {object} enterpriseCustomer current enterprise customer\n   * @param {string=} achAccountId when supplied enables micro-deposit verification mode for that token\n   * @param {function} onSuccess on success callback for Plaid link\n   * @param {function=} onLoad on load callback for Plaid link\n   * @param {function=} onEvent on event callback for Plaid link\n   * @param {function} onExit on exit callback for Plaid link\n   * @description\n   * Shows the Plaid Link integrated bank account chooser\n   * https://stripe.com/docs/ach#integrating-plaid\n   * https://plaid.com/docs/link/stripe/\n   * https://plaid.com/docs/api/\n   * https://support.plaid.com/hc/en-us/articles/360020901714-Integrating-with-Plaid-Auth\n   * https://plaid.com/docs/#auth-webhooks\n   * https://plaid.com/docs/#integrating-with-link\n   */\n  angular.module('billing').component('addBankAccount', {\n    bindings: {\n      enterpriseCustomer: '<',\n      achAccountId: '<?',\n      onSuccess: '&',\n      onLoad: '&?',\n      onEvent: '&?',\n      onExit: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($rootScope, $log, EACHService) {\n      var _this = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return this.loadLink();\n            case 2:\n              return _context.abrupt(\"return\", _context.sent);\n            case 3:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.$onChanges = function (changes) {\n        // reload Link when the ACH account ID changes\n        $log.log('changes', changes);\n        if (changes.achAccountId && typeof changes.achAccountId.previousValue === 'string') {\n          return this.loadLink();\n        }\n      };\n      this.loadLink = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var plaidOptions;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.next = 2;\n              return EACHService.createLinkToken(_this.enterpriseCustomer.id, _this.achAccountId);\n            case 2:\n              _context2.t0 = _context2.sent;\n              _context2.t1 = function onSuccess(public_token, metadata) {\n                var payload;\n                // Send the public_token and account ID to your app server.\n                $log.log('public_token: ' + public_token);\n                $log.log('metadata: ', metadata);\n                $log.log('metadata.accounts: ', metadata.accounts);\n                payload = {\n                  public_token: public_token,\n                  metadata: metadata\n                };\n                _this.onSuccess(payload);\n                $rootScope.$apply();\n              };\n              _context2.t2 = function onLoad() {\n                var payload;\n                payload = {\n                  linkHandler: _this.linkHandler\n                };\n                _this.onLoad(payload);\n                $rootScope.$apply();\n              };\n              _context2.t3 = function onEvent(eventName, metadata) {\n                var payload;\n                payload = {\n                  eventName: eventName,\n                  metadata: metadata\n                };\n                _this.onEvent(payload);\n                $rootScope.$apply();\n              };\n              _context2.t4 = function onExit(err, metadata) {\n                var payload;\n                // The user exited the Link flow.\n                payload = {\n                  err: err,\n                  metadata: metadata\n                };\n                _this.onExit(payload);\n                $rootScope.$apply();\n              };\n              plaidOptions = {\n                token: _context2.t0,\n                onSuccess: _context2.t1,\n                onLoad: _context2.t2,\n                onEvent: _context2.t3,\n                onExit: _context2.t4\n              };\n              $log.log('plaidOptions', plaidOptions);\n              _this.linkHandler = Plaid.create(plaidOptions);\n              _this.linkHandler.open();\n            case 11:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2);\n      }));\n    },\n    template: '<div></div>'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('portal', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:customerSource\n   * @restrict E\n   * @param {object} user currently logged in user\n   * @param {object} stripeCustomer stripe customer\n   * @param {object} enterpriseCustomer practice\n   * @description\n   * Displays information about a Stripe source\n   */\n  angular.module('portal').component('customerSource', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      stripeCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, env) {\n      this.$onInit = function () {\n        var ref, ref1, ref2;\n        $log = $log.getInstance('customerSource');\n        this.onEdit = false;\n        this.CREDIT_CARD = 'card';\n        this.BANK_ACCOUNT = 'bank_account';\n        $log.log('this.stripeCustomer', this.stripeCustomer);\n        this.defaultSource = _.find(this.stripeCustomer.data.sources.data, {\n          id: this.stripeCustomer.data.default_source\n        });\n        if (this.defaultSource) {\n          this.defaultSourceType = this.defaultSource.type || this.defaultSource.object;\n          this.brand = this.defaultSource.brand || ((ref = this.defaultSource.card) != null ? ref.brand : void 0);\n          this.last4 = this.defaultSource.last4 || ((ref1 = this.defaultSource.card) != null ? ref1.last4 : void 0);\n        }\n        this.payByCheck = _.some((ref2 = this.enterpriseCustomer) != null ? ref2.payment_methods : void 0, {\n          'source_type': 'check'\n        });\n        if (this.payByCheck) {\n          return this.defaultSourceType = null;\n        }\n      };\n      this.changePaymentMethod = function () {\n        if (this.defaultSourceType !== 'card') {\n          return this.onEdit = true;\n        } else {\n          return $state.go('enterprise.practicesettings.update-bank-account');\n        }\n      };\n      this.updateSource = function () {\n        if (this.defaultSourceType === this.CREDIT_CARD) {\n          return this.onEdit = true;\n        } else if (this.defaultSourceType === this.BANK_ACCOUNT) {\n          return $state.go('enterprise.practicesettings.update-bank-account');\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-billing/customer-source/customer-source.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:verticalSlider\n   * @restrict E\n   * @param {object} options options to pass in\n   * @description\n   * Creates an adjustable vertical slider component\n   */\n  angular.module('enterprise').component('verticalSlider', {\n    bindings: {\n      value: '=',\n      valueHigh: '=?',\n      options: '<',\n      scale: '<',\n      height: '<',\n      isLowerDisabled: '<?',\n      systolicLegend: '<?',\n      diastolicLegend: '<?',\n      bgLegend: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $scope) {\n      var _this2 = this;\n      this.$onInit = function () {\n        $log = $log.getInstance('verticalSlider');\n        $log.log('verticalSlider component loaded');\n      };\n      this.$onChanges = function (changes) {\n        var _this = this;\n        var end;\n        $log.log('changes for e-alerts-vertical-slider', changes);\n        if (!this.systolicLegend && !this.diastolicLegend && !this.bgLegend) {\n          this.scaleVisible = false;\n        }\n        this.options.onStart = this.onStart;\n        // onEnd hide the scale then call the passed in onEnd function\n        end = angular.copy(this.options.onEnd);\n        return this.options.onEnd = function () {\n          $log.log('onEnd');\n          if (!_this.systolicLegend && !_this.diastolicLegend && !_this.bgLegend) {\n            _this.scaleVisible = false;\n          }\n          return end.apply(void 0, arguments);\n        };\n      };\n      this.onStart = function () {\n        $log.log('onStart');\n        if (!_this2.systolicLegend && !_this2.diastolicLegend && !_this2.bgLegend) {\n          return _this2.scaleVisible = false;\n        } else {\n          return _this2.scaleVisible = _this2.systolicLegend || _this2.diastolicLegend || _this2.bgLegend;\n        }\n      };\n      this.getHeight = function (scale) {\n        return this.height * (scale.high - scale.low) / (this.options.ceil - this.options.floor);\n      };\n      // Watch for changes in sliderLegendVisible and sliderBGLegendVisible and update scaleVisible accordingly\n      $scope.$watch(function () {\n        return [_this2.systolicLegend, _this2.diastolicLegend, _this2.bgLegend];\n      }, function (newValue, oldValue) {\n        if (newValue !== oldValue) {\n          return _this2.scaleVisible = newValue[0] || newValue[1] || newValue[2];\n        }\n      }, true);\n    },\n    templateUrl: 'app/components/portal/enterprise/e-alert-thresholds/vertical-slider/vertical-slider.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('rpmHeader', {\n    'ngInject': 'ngInject',\n    bindings: {\n      patientUserProfile: '<',\n      features: '<',\n      user: '<',\n      enterpriseCustomer: '<'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller(ProviderPatientAuthorizationsService, ObservationReportService, DORTargets, NotificationsService, EUserProfilesService, GroupRoles, GroupService, GroupRoleService, $log, REGEX) {\n      var _this = this;\n      var computeHasAmbientChfDevice;\n      computeHasAmbientChfDevice = function computeHasAmbientChfDevice(patientUserProfile) {\n        var devices;\n        devices = (patientUserProfile != null ? patientUserProfile.devices : void 0) || [];\n        return _.some(devices, function (d) {\n          var ref;\n          return (d != null ? (ref = d.device_type) != null ? ref.category : void 0 : void 0) === 'AMBIENT_CHF';\n        });\n      };\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var allGroups, currentUserGroupIds, error, groupMemberships, loggedInOffice, primaryProvider;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.optionsForDorTarget = DORTargets;\n              this.isPrimaryProviderVisible = true;\n              _context.next = 4;\n              return ProviderPatientAuthorizationsService.getAll(this.patientUserProfile.id);\n            case 4:\n              this.providerPatientAuthorizations = _context.sent;\n              this.hasAmbientChfDevice = computeHasAmbientChfDevice(this.patientUserProfile);\n              primaryProvider = _.find(this.providerPatientAuthorizations, function (providerPatientAuthorization) {\n                return providerPatientAuthorization.is_primary;\n              });\n              this.primaryProvider = primaryProvider;\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              if (_.isNil(this.patientUserProfile.group_memberships)) {\n                $log.warn(\"patientUserProfile.group_memberships unexpectedly returned null\");\n                this.patientUserProfile.group_memberships = [];\n              }\n              groupMemberships = _.filter(this.patientUserProfile.group_memberships, function (m) {\n                return m.group_role.role === GroupRoles.MEMBER;\n              });\n              currentUserGroupIds = _.map(groupMemberships, function (m) {\n                return m.group.id;\n              });\n              _context.prev = 12;\n              _context.next = 15;\n              return GroupService.getAll(this.user.user_profile.enterprise_customer_id, this.user.logged_in_office_id, {\n                _sortDir: 'asc',\n                _sortField: 'name'\n              });\n            case 15:\n              allGroups = _context.sent;\n              _context.next = 23;\n              break;\n            case 18:\n              _context.prev = 18;\n              _context.t0 = _context[\"catch\"](12);\n              error = _context.t0;\n              $log.log('eObservationReport.$onInit error calling GroupService.getAll()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 23:\n              loggedInOffice = this.user.logged_in_office_id;\n              this.groupOptions = _.map(allGroups.data.data, function (g) {\n                if (loggedInOffice === g.office_id) {\n                  return {\n                    id: g.id,\n                    name: g.name\n                  };\n                }\n              });\n              this.groupOptionsModel = _.filter(this.groupOptions, function (g) {\n                return _.includes(currentUserGroupIds, g.id);\n              });\n              _context.prev = 26;\n              _context.next = 29;\n              return GroupRoleService.getMemberRole();\n            case 29:\n              this.memberRole = _context.sent;\n              _context.next = 37;\n              break;\n            case 32:\n              _context.prev = 32;\n              _context.t1 = _context[\"catch\"](26);\n              error = _context.t1;\n              $log.log('eObservationReport.$onInit error calling GroupRoleService.getMemberRole()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 37:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[12, 18], [26, 32]]);\n      }));\n      this.$onChanges = function (changes) {\n        if (changes != null ? changes.patientUserProfile : void 0) {\n          return _this.hasAmbientChfDevice = computeHasAmbientChfDevice(_this.patientUserProfile);\n        }\n      };\n      this.groupDropdownText = {\n        dynamicButtonTextSuffix: \"Selected\"\n      };\n      this.groupDropdownSettings = {\n        displayProp: 'name',\n        selectedToTop: true,\n        scrollableHeight: 'inherit',\n        scrollable: true,\n        checkBoxes: true,\n        showCheckAll: false,\n        showUncheckAll: false\n      };\n      //enableSearch: true, #As the group list grows this feature might come in handy, leaving here as reminder.\n      this.addGroupMembership = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(g) {\n          var error, newMembership, result;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return GroupService.addMemberships(_this.user.user_profile.enterprise_customer_id, _this.user.logged_in_office_id, g.id, [{\n                  group_id: g.id,\n                  user_profile_id: _this.patientUserProfile.id,\n                  role_id: _this.memberRole.id\n                }]);\n              case 3:\n                result = _context2.sent;\n                newMembership = result[0];\n                newMembership.group_role = _this.memberRole;\n                return _context2.abrupt(\"return\", _this.patientUserProfile.group_memberships.push(newMembership));\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](0);\n                error = _context2.t0;\n                $log.log('eObservationReport.removeGroupMembership error calling GroupService.addMemberships()', error);\n                return _context2.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, null, [[0, 9]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.removeGroupMembership = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(g) {\n          var deletedMembershipId, error, membershipsToDelete;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                membershipsToDelete = [];\n                deletedMembershipId = null;\n                _.forEach(_this.patientUserProfile.group_memberships, function (gm) {\n                  var ref;\n                  if (gm.group_id === g.id || ((ref = gm.group) != null ? ref.id : void 0) === g.id) {\n                    membershipsToDelete.push(gm);\n                    return deletedMembershipId = gm.id;\n                  }\n                });\n                if (!membershipsToDelete) {\n                  _context3.next = 15;\n                  break;\n                }\n                _context3.prev = 4;\n                _context3.next = 7;\n                return GroupService.removeMemberships(_this.user.user_profile.enterprise_customer_id, _this.user.logged_in_office_id, g.id, membershipsToDelete);\n              case 7:\n                return _context3.abrupt(\"return\", _.remove(_this.patientUserProfile.group_memberships, {\n                  id: deletedMembershipId\n                }));\n              case 10:\n                _context3.prev = 10;\n                _context3.t0 = _context3[\"catch\"](4);\n                error = _context3.t0;\n                $log.log('eObservationReport.removeGroupMembership error calling GroupService.removeMemberships()', error);\n                return _context3.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 15:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, null, [[4, 10]]);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.onMonthlyDorTargetChange = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                $log.log('payload.model', payload.model);\n                this.patientUserProfile.monthly_dor_target = payload.model;\n                _context4.prev = 2;\n                _context4.next = 5;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  monthly_dor_target: payload.model\n                });\n              case 5:\n                return _context4.abrupt(\"return\", NotificationsService.success('Monthly Days of Readings updated.'));\n              case 8:\n                _context4.prev = 8;\n                _context4.t0 = _context4[\"catch\"](2);\n                error = _context4.t0;\n                $log.log('EUserProfilesService.put error', error);\n                return _context4.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this, [[2, 8]]);\n        }));\n        return function (_x3) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.onPrimaryProviderChange = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(payload) {\n          var error, newPrimaryProviderUserProfileId;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                $log.log('payload.model', payload.model);\n                newPrimaryProviderUserProfileId = payload.model;\n                _context5.prev = 2;\n                _context5.next = 5;\n                return ProviderPatientAuthorizationsService.updatePrimaryProvider(this.patientUserProfile.id, newPrimaryProviderUserProfileId);\n              case 5:\n                this.updatePrimaryProviderResponse = _context5.sent;\n                $log.log('this.updatePrimaryProviderResponse', this.updatePrimaryProviderResponse);\n                return _context5.abrupt(\"return\", NotificationsService.success(\"Monitoring Provider updated.\"));\n              case 10:\n                _context5.prev = 10;\n                _context5.t0 = _context5[\"catch\"](2);\n                error = _context5.t0;\n                $log.log('ProviderPatientAuthorizationsService.put error', error);\n                return _context5.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 15:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this, [[2, 10]]);\n        }));\n        return function (_x4) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.onPatientEheFieldLeave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        var error, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              if (!(this.previousPatientEhrId === this.patientUserProfile.patient_ehr_id)) {\n                _context6.next = 2;\n                break;\n              }\n              return _context6.abrupt(\"return\");\n            case 2:\n              _context6.prev = 2;\n              if (new RegExp(REGEX.EHR).test(this.patientUserProfile.patient_ehr_id)) {\n                _context6.next = 5;\n                break;\n              }\n              throw new Error(\"EHR cannot contain special charachters\");\n            case 5:\n              _context6.next = 7;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                patient_ehr_id: this.patientUserProfile.patient_ehr_id\n              });\n            case 7:\n              this.previousPatientEhrId = this.patientUserProfile.patient_ehr_id;\n              return _context6.abrupt(\"return\", NotificationsService.success('Patient EHR ID updated.'));\n            case 11:\n              _context6.prev = 11;\n              _context6.t0 = _context6[\"catch\"](2);\n              error = _context6.t0;\n              $log.log('EUserProfilesService.patch error', error);\n              return _context6.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 16:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this, [[2, 11]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/patient-header/rpm-header.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:patientHeader\n   * @restrict E\n   * @description\n   * Display a patient information\n   * @example\n    <pre>\n      <patient-header patient=\"vm.patientUserProfile\" observation-report=\"vm.observationReport\">\n      </patient-header>\n    </pre>\n   */\n  angular.module('enterprise').component('patientHeader', {\n    'ngInject': 'ngInject',\n    transclude: true,\n    bindings: {\n      patientUserProfile: '<',\n      providerPatientAuthorizations: '<',\n      enterpriseCustomer: '<',\n      user: '<',\n      reportPeriodText: '<',\n      observationReport: '<?',\n      features: '<',\n      deviceTypes: '<',\n      clinicalMonitoringContext: '<?',\n      othersActive: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $filter, ModalService, UserProfilesService, NotificationsService, LanguagesService, RelationshipsService, ReadingsShareService, EUserProfilesService, ObservationReportService, DORTargets, PracticeSpecialtyService, ProviderPatientAuthorizationsService, GendersService, StatesService, AddressService) {\n      var _this = this;\n      this.$onChanges = function (changes) {\n        if (changes.patientUserProfile) {\n          _this.onPatientChange();\n        }\n        if (changes.clinicalMonitoringContext) {\n          _this.setClinicalMonitoringContext();\n        }\n        if (changes.patientUserProfile || changes.enterpriseCustomer || changes.user) {\n          return _this.insuranceModalPayload = _this._buildInsuranceModalPayload();\n        }\n      };\n      this.initDatePicker = function () {\n        var _this2 = this;\n        var datePickerEventHandler, jsEndDate, jsStartDate;\n        $log.log('date of birth start', luxon.DateTime.fromISO(this.patientUserProfile.date_of_birth));\n        jsStartDate = luxon.DateTime.fromISO(this.patientUserProfile.date_of_birth);\n        jsEndDate = luxon.DateTime.fromISO(this.patientUserProfile.date_of_birth);\n        // jsStartDate.isValid = -> return true\n        // jsEndDate.isValid = -> return true\n        datePickerEventHandler = {\n          'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n            return $log.log('applying date range', event, picker, _this2.datePicker.date);\n          }\n        };\n        this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          picker: null,\n          options: {\n            autoclose: true,\n            showDropdowns: true,\n            singleDatePicker: true,\n            locale: {\n              format: 'MM/DD/YYYY'\n            }\n          }\n        };\n        return this.datePicker.options.eventHandlers = datePickerEventHandler;\n      };\n      this.startEditDob = function () {\n        this.previousDob = this.patientUserProfile.date_of_birth;\n        return this.editingDOB = true;\n      };\n      this.cancelEditDob = function () {\n        this.patientUserProfile.date_of_birth = this.previousDob;\n        return this.editingDOB = false;\n      };\n      this.startEditGender = function () {\n        this.previousGender = this.patientUserProfile.gender;\n        return this.editingGender = true;\n      };\n      this.cancelEditGender = function () {\n        this.patientUserProfile.gender = this.previousGender;\n        return this.editingGender = false;\n      };\n      this.resetAddress = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return EUserProfilesService.get(this.enterpriseCustomer.id, this.patientUserProfile.id);\n            case 2:\n              this.patientUserProfile = _context.sent;\n              this.modalPayload = {\n                address: this.patientUserProfile.addresses[0],\n                states: this.stateOptionsArray\n              };\n              return _context.abrupt(\"return\", this.setClinicalMonitoringContext());\n            case 5:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.onSavePatientDetails = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error, profileUpdates;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.prev = 0;\n              // Send only the scalar fields that the DOB/gender inline editors can change\n              profileUpdates = {};\n              if (this.editingDOB) {\n                profileUpdates.date_of_birth = this.patientUserProfile.date_of_birth;\n              }\n              if (this.editingGender) {\n                profileUpdates.gender = this.patientUserProfile.gender;\n              }\n              if (!(Object.keys(profileUpdates).length > 0)) {\n                _context2.next = 7;\n                break;\n              }\n              _context2.next = 7;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, profileUpdates);\n            case 7:\n              _context2.next = 9;\n              return AddressService.update(this.patientUserProfile.id, this.modalPayload.address.id, this.modalPayload.address);\n            case 9:\n              NotificationsService.success('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.PATIENT_UPDATED');\n              _context2.next = 17;\n              break;\n            case 12:\n              _context2.prev = 12;\n              _context2.t0 = _context2[\"catch\"](0);\n              error = _context2.t0;\n              $log.log('UserProfilesService.updateEnterpriseChart error', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 17:\n              _context2.next = 19;\n              return EUserProfilesService.get(this.enterpriseCustomer.id, this.patientUserProfile.id);\n            case 19:\n              this.patientUserProfile = _context2.sent;\n              this.modalPayload = {\n                address: this.patientUserProfile.addresses[0],\n                states: this.stateOptionsArray\n              };\n              this.setClinicalMonitoringContext();\n              this.editingGender = false;\n              this.editingAddress = false;\n              return _context2.abrupt(\"return\", this.editingDOB = false);\n            case 25:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this, [[0, 12]]);\n      }));\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var address_copy, primaryProvider, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log = $log.getInstance('patientHeader');\n              $log.log('patientHeader component loaded');\n              this.isCCM = $state.current.name.includes('care_plan');\n              this.showPatienServices = ((ref = this.features) != null ? (ref1 = ref.patient_header_services) != null ? ref1.is_enabled : void 0 : void 0) && ((ref2 = this.observationReport) != null ? ref2.reporting_period : void 0);\n              this.shareOptions = {};\n              this.shareOptions.payload = {};\n              this.shareOptions.buttonFunc = this.shareDisabled;\n              _context3.next = 9;\n              return ReadingsShareService.getAll(this.patientUserProfile.id);\n            case 9:\n              this.shareOptions.previousShares = _context3.sent;\n              _context3.next = 12;\n              return PracticeSpecialtyService.getAll();\n            case 12:\n              this.practiceSpecialties = _context3.sent;\n              this.practiceSpecialtiesOptions = _.map(this.practiceSpecialties, function (spec) {\n                return {\n                  label: spec.name,\n                  value: spec.id\n                };\n              });\n              this.shareOptions.practiceSpecialties = this.practiceSpecialtiesOptions;\n              // Create an array of relationships for the dropdown in share-readings.\n              _context3.next = 17;\n              return RelationshipsService.getRelationshipToPatient();\n            case 17:\n              this.relationshipsOptionsArray = _context3.sent;\n              this.shareOptions.relationships = this.relationshipsOptionsArray;\n              this.optionsForDorTarget = DORTargets;\n              // Create an array of languages for the dropdown in patient-reporting.\n              _context3.next = 22;\n              return LanguagesService.getOnlySupportedLanguages();\n            case 22:\n              this.languagesOptionsArray = _context3.sent;\n              this.shareOptions.languages = this.languagesOptionsArray;\n              this.showLogCall = this.shouldShowLogCall();\n              this.isPrimaryProviderVisible = true;\n              primaryProvider = _.find(this.providerPatientAuthorizations, function (providerPatientAuthorization) {\n                return providerPatientAuthorization.is_primary;\n              });\n              this.primaryProvider = primaryProvider;\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              this.genderOptionsArray = GendersService.getGenders;\n              this.editingGender = false;\n              this.editingAddress = false;\n              this.editingDOB = false;\n              this.initDatePicker();\n              this.stateOptionsArray = StatesService.states;\n              address_copy = Object.assign({}, this.patientUserProfile.addresses[0]);\n              this.modalPayload = {\n                address: address_copy,\n                states: this.stateOptionsArray\n              };\n              this.setClinicalMonitoringContext();\n              this.insuranceModalPayload = this._buildInsuranceModalPayload();\n              $log.info('Payload', this.AddressPayload);\n            case 40:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.setClinicalMonitoringContext = function () {\n        var ref, ref1;\n        this.clinicalMonitoringContext = ((ref = this.patientUserProfile) != null ? ref.clinical_monitoring_context : void 0) || {};\n        return this.escalationProtocolUrl = ((ref1 = this.clinicalMonitoringContext) != null ? ref1.is_visible : void 0) ? this.clinicalMonitoringContext.escalation_protocol_url : null;\n      };\n      this.shouldShowLogCall = function () {\n        var currentDate, err, isCurrentOrFutureMonth, periodDate, ref;\n        try {\n          if (!((ref = this.observationReport) != null ? ref.reporting_period : void 0)) {\n            return false;\n          }\n          periodDate = luxon.DateTime.local(this.observationReport.reporting_period.cycle_year, this.observationReport.reporting_period.cycle_month, 1);\n          if (!periodDate.isValid) {\n            $log.error('Invalid date in reporting_period:', this.observationReport.reporting_period);\n            return false;\n          }\n          currentDate = luxon.DateTime.now();\n          isCurrentOrFutureMonth = periodDate.year > currentDate.year || periodDate.year === currentDate.year && periodDate.month >= currentDate.month;\n          return isCurrentOrFutureMonth;\n        } catch (error1) {\n          err = error1;\n          $log.error('Error in shouldShowLogCall:', err);\n          return false;\n        }\n      };\n      this.onPatientChange = function () {\n        return this.fetchPrimaryProviderForNextPatient();\n      };\n      this.getEnterpriseChart = function () {\n        var base;\n        return (base = this.patientUserProfile).enterprise_chart != null ? base.enterprise_chart : base.enterprise_chart = {\n          user_profile_id: this.patientUserProfile.id,\n          notes: ''\n        };\n      };\n      this.hasReferenceNotes = function () {\n        var ref, ref1;\n        return !!((ref = this.patientUserProfile) != null ? (ref1 = ref.enterprise_chart) != null ? ref1.notes : void 0 : void 0);\n      };\n      this.showReferenceNotesModal = function () {\n        var _this3 = this;\n        var modalDefaults;\n        modalDefaults = {\n          backdrop: 'static',\n          controller: function controller($scope, $uibModalInstance, $log) {\n            $scope.enterpriseChart = _this3.getEnterpriseChart();\n            $scope.referenceNotesOrig = $scope.enterpriseChart.notes || '';\n            $scope.referenceNotesEdit = angular.copy($scope.referenceNotesOrig);\n            $scope.$on('modal.closing', function (event, reason, closed) {\n              if ($scope.notesHaveChanged && !$scope.hasIssuedCancelWithChangesWarning) {\n                $scope.hasIssuedCancelWithChangesWarning = true;\n                return event.preventDefault();\n              }\n            });\n            $scope.modalOptions = {\n              setNotesChangedFlag: function setNotesChangedFlag(item) {\n                return $scope.notesHaveChanged = $scope.referenceNotesEdit !== $scope.referenceNotesOrig;\n              },\n              close: function close() {\n                // If changed, alert\n                if ($scope.notesHaveChanged && !$scope.hasIssuedCancelWithChangesWarning) {\n                  return $scope.hasIssuedCancelWithChangesWarning = true;\n                } else {\n                  $uibModalInstance.close(false);\n                  return $scope.hasIssuedCancelWithChangesWarning = false;\n                }\n              },\n              ok: function () {\n                var _ok = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n                  var error, ref, ref1, ref2;\n                  return regeneratorRuntime.wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        if (!$scope.notesHaveChanged) {\n                          _context4.next = 16;\n                          break;\n                        }\n                        _this3.patientUserProfile.enterprise_chart.notes = $scope.referenceNotesEdit;\n                        _context4.prev = 2;\n                        if (_this3.patientUserProfile.enterprise_chart.id) {\n                          _context4.next = 5;\n                          break;\n                        }\n                        throw new Error('Enterprise chart missing for patient reference notes');\n                      case 5:\n                        _context4.next = 7;\n                        return UserProfilesService.updateEnterpriseChart(_this3.patientUserProfile.enterprise_chart);\n                      case 7:\n                        NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.UPDATE_SUCCESS');\n                        $scope.notesHaveChanged = false;\n                        _context4.next = 16;\n                        break;\n                      case 11:\n                        _context4.prev = 11;\n                        _context4.t0 = _context4[\"catch\"](2);\n                        error = _context4.t0;\n                        $log.log('UserProfilesService.updateEnterpriseChart error', error);\n                        NotificationsService.error(((ref = error.data) != null ? ref.errorMessage : void 0) || ((ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0) || error.message);\n                      case 16:\n                        return _context4.abrupt(\"return\", $uibModalInstance.close(false));\n                      case 17:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4, null, [[2, 11]]);\n                }));\n                function ok() {\n                  return _ok.apply(this, arguments);\n                }\n                return ok;\n              }()\n            };\n          },\n          templateUrl: 'app/components/portal/enterprise/e-observation-report/reference-notes.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n      this._onInsuranceModalSavedFromModal = function (event) {\n        return _this.onInsuranceModalSaved(event);\n      };\n      this._buildInsuranceModalPayload = function () {\n        var enrollmentId, ref, ref1;\n        enrollmentId = (ref = _this.patientUserProfile) != null ? (ref1 = ref.enterprise_enrollment) != null ? ref1.id : void 0 : void 0;\n        if (!enrollmentId) {\n          return null;\n        }\n        return {\n          enrollmentId: enrollmentId,\n          enterpriseCustomer: _this.enterpriseCustomer,\n          patientUserProfile: _this.patientUserProfile,\n          user: _this.user,\n          onSaved: _this._onInsuranceModalSavedFromModal\n        };\n      };\n      this.onInsuranceModalSaved = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {\n        var error, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) switch (_context5.prev = _context5.next) {\n            case 0:\n              _context5.prev = 0;\n              _context5.next = 3;\n              return EUserProfilesService.get(_this.enterpriseCustomer.id, _this.patientUserProfile.id);\n            case 3:\n              _this.patientUserProfile = _context5.sent;\n              _this.setClinicalMonitoringContext();\n              return _context5.abrupt(\"return\", _this.insuranceModalPayload = _this._buildInsuranceModalPayload());\n            case 8:\n              _context5.prev = 8;\n              _context5.t0 = _context5[\"catch\"](0);\n              error = _context5.t0;\n              $log.error('onInsuranceModalSaved error', error);\n              return _context5.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || (error != null ? error.message : void 0)));\n            case 13:\n            case \"end\":\n              return _context5.stop();\n          }\n        }, _callee5, null, [[0, 8]]);\n      }));\n      this.updateShares = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              this.shareOptions.share_data = {};\n              _context6.next = 3;\n              return ReadingsShareService.getAll(this.patientUserProfile.id);\n            case 3:\n              return _context6.abrupt(\"return\", this.shareOptions.previousShares = _context6.sent);\n            case 4:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this);\n      }));\n      this.shareReadings = function (payload) {\n        payload.shared_by_provider_profile_id = this.user.user_profile.id;\n        payload.patient_user_profile_id = this.patientUserProfile.id;\n        payload.relationship_id = payload.relationship.id;\n        delete payload.relationship;\n        $log.log(\"sharing...\", payload);\n        this.submitPromise = ReadingsShareService.post(this.patientUserProfile.id, payload).then(function (response) {\n          return NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.TOASTS.SUCCESS');\n        }, function (error) {\n          return NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.TOASTS.ERROR');\n        });\n        return this.submitPromise;\n      };\n      this.downloadCarePlan = function () {\n        return ObservationReportService.downloadCCMPDF(this.patientUserProfile, this.observationReport.reporting_period);\n      };\n      this.onLanguageChange = /*#__PURE__*/function () {\n        var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee7$(_context7) {\n            while (1) switch (_context7.prev = _context7.next) {\n              case 0:\n                $log.log('Language Id:', payload.model);\n                this.patientUserProfile.language_id = payload.model;\n                _context7.prev = 2;\n                _context7.next = 5;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  language_id: payload.model\n                });\n              case 5:\n                return _context7.abrupt(\"return\", NotificationsService.success(\"Language updated.\"));\n              case 8:\n                _context7.prev = 8;\n                _context7.t0 = _context7[\"catch\"](2);\n                error = _context7.t0;\n                $log.log('Language.put error', error);\n                return _context7.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context7.stop();\n            }\n          }, _callee7, this, [[2, 8]]);\n        }));\n        return function (_x) {\n          return _ref6.apply(this, arguments);\n        };\n      }();\n      this.reActivate = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee8$(_context8) {\n          while (1) switch (_context8.prev = _context8.next) {\n            case 0:\n              _context8.prev = 0;\n              _context8.next = 3;\n              return UserProfilesService.reactivatePatient(this.user, this.patientUserProfile);\n            case 3:\n              NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTIFICATION.SUCCESS'));\n              this.patientUserProfile.deactivation_reason_id = null;\n              this.patientUserProfile.deactivated_at = null;\n              return _context8.abrupt(\"return\", $state.go('enterprise.patients'));\n            case 9:\n              _context8.prev = 9;\n              _context8.t0 = _context8[\"catch\"](0);\n              error = _context8.t0;\n              $log.log('error', error);\n              return _context8.abrupt(\"return\", $state.go('enterprise.observation_report.patient_deactivation_contact'));\n            case 14:\n            case \"end\":\n              return _context8.stop();\n          }\n        }, _callee8, this, [[0, 9]]);\n      }));\n      this.modalBody = function () {\n        return ObservationReportService.reactivationModalBody();\n      };\n      this.fetchPrimaryProviderForNextPatient = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9() {\n        var error, primaryProvider;\n        return regeneratorRuntime.wrap(function _callee9$(_context9) {\n          while (1) switch (_context9.prev = _context9.next) {\n            case 0:\n              _context9.prev = 0;\n              this.isPrimaryProviderVisible = false;\n              _context9.next = 4;\n              return ProviderPatientAuthorizationsService.getAll(this.patientUserProfile.id);\n            case 4:\n              this.providerPatientAuthorizations = _context9.sent;\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              primaryProvider = _.find(this.providerPatientAuthorizations, function (providerPatientAuthorization) {\n                return providerPatientAuthorization.is_primary;\n              });\n              this.primaryProvider = primaryProvider;\n              return _context9.abrupt(\"return\", this.isPrimaryProviderVisible = true);\n            case 11:\n              _context9.prev = 11;\n              _context9.t0 = _context9[\"catch\"](0);\n              error = _context9.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              return _context9.abrupt(\"return\", $log.log('ProviderPatientAuthorizationsService.getAll error', error));\n            case 16:\n            case \"end\":\n              return _context9.stop();\n          }\n        }, _callee9, this, [[0, 11]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/patient-header/patient-header.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('ccmHeader', {\n    'ngInject': 'ngInject',\n    bindings: {\n      patientUserProfile: '<',\n      features: '<',\n      user: '<',\n      enterpriseCustomer: '<'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller(ProviderPatientAuthorizationsService, ObservationReportService, NotificationsService, EUserProfilesService, GroupRoles, GroupService, GroupRoleService, $log, $rootScope, REGEX) {\n      var _this = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var allGroups, currentUserGroupIds, error, groupMemberships, loggedInOffice, primaryProvider;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.isPrimaryProviderVisible = true;\n              _context.next = 3;\n              return ProviderPatientAuthorizationsService.getAll(this.patientUserProfile.id);\n            case 3:\n              this.providerPatientAuthorizations = _context.sent;\n              primaryProvider = _.find(this.providerPatientAuthorizations, function (providerPatientAuthorization) {\n                return providerPatientAuthorization.is_primary;\n              });\n              this.primaryProvider = primaryProvider;\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              if (_.isNil(this.patientUserProfile.group_memberships)) {\n                $log.warn(\"patientUserProfile.group_memberships unexpectedly returned null\");\n                this.patientUserProfile.group_memberships = [];\n              }\n              groupMemberships = _.filter(this.patientUserProfile.group_memberships, function (m) {\n                return m.group_role.role === GroupRoles.MEMBER;\n              });\n              currentUserGroupIds = _.map(groupMemberships, function (m) {\n                return m.group.id;\n              });\n              _context.prev = 10;\n              _context.next = 13;\n              return GroupService.getAll(this.user.user_profile.enterprise_customer_id, this.user.logged_in_office_id, {\n                _sortDir: 'asc',\n                _sortField: 'name'\n              });\n            case 13:\n              allGroups = _context.sent;\n              _context.next = 21;\n              break;\n            case 16:\n              _context.prev = 16;\n              _context.t0 = _context[\"catch\"](10);\n              error = _context.t0;\n              $log.log('eObservationReport.$onInit error calling GroupService.getAll()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 21:\n              loggedInOffice = this.user.logged_in_office_id;\n              this.groupOptions = _.map(allGroups.data.data, function (g) {\n                if (loggedInOffice === g.office_id) {\n                  return {\n                    id: g.id,\n                    name: g.name\n                  };\n                }\n              });\n              this.groupOptionsModel = _.filter(this.groupOptions, function (g) {\n                return _.includes(currentUserGroupIds, g.id);\n              });\n              _context.prev = 24;\n              _context.next = 27;\n              return GroupRoleService.getMemberRole();\n            case 27:\n              this.memberRole = _context.sent;\n              _context.next = 35;\n              break;\n            case 30:\n              _context.prev = 30;\n              _context.t1 = _context[\"catch\"](24);\n              error = _context.t1;\n              $log.log('eObservationReport.$onInit error calling GroupRoleService.getMemberRole()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 35:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[10, 16], [24, 30]]);\n      }));\n      this.groupDropdownText = {\n        dynamicButtonTextSuffix: \"Selected\"\n      };\n      this.groupDropdownSettings = {\n        displayProp: 'name',\n        selectedToTop: true,\n        scrollableHeight: 'inherit',\n        scrollable: true,\n        checkBoxes: true,\n        showCheckAll: false,\n        showUncheckAll: false\n      };\n      //enableSearch: true, #As the group list grows this feature might come in handy, leaving here as reminder.\n      this.addGroupMembership = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(g) {\n          var error, newMembership, result;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return GroupService.addMemberships(_this.user.user_profile.enterprise_customer_id, _this.user.logged_in_office_id, g.id, [{\n                  group_id: g.id,\n                  user_profile_id: _this.patientUserProfile.id,\n                  role_id: _this.memberRole.id\n                }]);\n              case 3:\n                result = _context2.sent;\n                newMembership = result[0];\n                newMembership.group_role = _this.memberRole;\n                return _context2.abrupt(\"return\", _this.patientUserProfile.group_memberships.push(newMembership));\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](0);\n                error = _context2.t0;\n                $log.log('eObservationReport.removeGroupMembership error calling GroupService.addMemberships()', error);\n                return _context2.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, null, [[0, 9]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.removeGroupMembership = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(g) {\n          var deletedMembershipId, error, membershipsToDelete;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                membershipsToDelete = [];\n                deletedMembershipId = null;\n                _.forEach(_this.patientUserProfile.group_memberships, function (gm) {\n                  var ref;\n                  if (gm.group_id === g.id || ((ref = gm.group) != null ? ref.id : void 0) === g.id) {\n                    membershipsToDelete.push(gm);\n                    return deletedMembershipId = gm.id;\n                  }\n                });\n                if (!membershipsToDelete) {\n                  _context3.next = 15;\n                  break;\n                }\n                _context3.prev = 4;\n                _context3.next = 7;\n                return GroupService.removeMemberships(_this.user.user_profile.enterprise_customer_id, _this.user.logged_in_office_id, g.id, membershipsToDelete);\n              case 7:\n                return _context3.abrupt(\"return\", _.remove(_this.patientUserProfile.group_memberships, {\n                  id: deletedMembershipId\n                }));\n              case 10:\n                _context3.prev = 10;\n                _context3.t0 = _context3[\"catch\"](4);\n                error = _context3.t0;\n                $log.log('eObservationReport.removeGroupMembership error calling GroupService.removeMemberships()', error);\n                return _context3.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 15:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, null, [[4, 10]]);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.onMonthlyDorTargetChange = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                $log.log('payload.model', payload.model);\n                this.patientUserProfile.monthly_dor_target = payload.model;\n                _context4.prev = 2;\n                _context4.next = 5;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  monthly_dor_target: payload.model\n                });\n              case 5:\n                return _context4.abrupt(\"return\", NotificationsService.success('Monthly Days of Readings updated.'));\n              case 8:\n                _context4.prev = 8;\n                _context4.t0 = _context4[\"catch\"](2);\n                error = _context4.t0;\n                $log.log('EUserProfilesService.put error', error);\n                return _context4.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this, [[2, 8]]);\n        }));\n        return function (_x3) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.onPrimaryProviderChange = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(payload) {\n          var error, newPrimaryProviderAuthId;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                $log.log('payload.model', payload.model);\n                newPrimaryProviderAuthId = payload.model;\n                $rootScope.$broadcast('primary_provider_change_in_progress');\n                _context5.prev = 3;\n                _context5.next = 6;\n                return ProviderPatientAuthorizationsService.updatePrimaryProvider(this.patientUserProfile.id, newPrimaryProviderAuthId);\n              case 6:\n                this.updatePrimaryProviderResponse = _context5.sent;\n                $log.log('this.updatePrimaryProviderResponse', this.updatePrimaryProviderResponse);\n                _context5.next = 10;\n                return this.updatePrimaryProviderResponse.get();\n              case 10:\n                this.providerAuths = _context5.sent;\n                this.primaryProviderAuth = _.find(this.providerAuths, function (p) {\n                  return p.id === newPrimaryProviderAuthId;\n                });\n                $rootScope.$broadcast('primary_provider_changed', this.primaryProviderAuth.provider_user_profile_id);\n                return _context5.abrupt(\"return\", NotificationsService.success(\"Monitoring Provider updated.\"));\n              case 16:\n                _context5.prev = 16;\n                _context5.t0 = _context5[\"catch\"](3);\n                error = _context5.t0;\n                $log.log('ProviderPatientAuthorizationsService.put error', error);\n                return _context5.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 21:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this, [[3, 16]]);\n        }));\n        return function (_x4) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.onPatientEheFieldLeave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        var error, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              if (!(this.previousPatientEhrId === this.patientUserProfile.patient_ehr_id)) {\n                _context6.next = 2;\n                break;\n              }\n              return _context6.abrupt(\"return\");\n            case 2:\n              _context6.prev = 2;\n              if (new RegExp(REGEX.EHR).test(this.patientUserProfile.patient_ehr_id)) {\n                _context6.next = 5;\n                break;\n              }\n              throw new Error(\"EHR cannot contain special charachters\");\n            case 5:\n              _context6.next = 7;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                patient_ehr_id: this.patientUserProfile.patient_ehr_id\n              });\n            case 7:\n              this.previousPatientEhrId = this.patientUserProfile.patient_ehr_id;\n              return _context6.abrupt(\"return\", NotificationsService.success('Patient EHR ID updated.'));\n            case 11:\n              _context6.prev = 11;\n              _context6.t0 = _context6[\"catch\"](2);\n              error = _context6.t0;\n              $log.log('EUserProfilesService.patch error', error);\n              return _context6.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 16:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this, [[2, 11]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/patient-header/ccm-header.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ccmCarePlanDownloadInitial\n   * @restrict E\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @description\n   */\n  angular.module('enterprise').component('ccmCarePlanDownloadInitial', {\n    bindings: {\n      patientUserProfile: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, NotificationsService, ObservationReportService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('ccmCarePlanDownloadInitial');\n        this.menuActive = false;\n        this.downloadingCarePlan = false;\n      };\n      this.toggleMenu = function () {\n        this.menuActive = !this.menuActive;\n      };\n      this.downloadCarePlan = function () {\n        var e;\n        if (this.downloadingCarePlan) {\n          return;\n        }\n        try {\n          this.downloadingCarePlan = true;\n          ObservationReportService.downloadCCMPDF(this.patientUserProfile, void 0, true);\n          NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.DOWNLOADING_INITIAL_CARE_PLAN'));\n        } catch (error) {\n          e = error;\n          $log.log('this.downloadCarePlan error', e);\n          NotificationsService.error($filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.ERROR_DOWNLOADING_INITIAL_CARE_PLAN'));\n        }\n        return this.downloadingCarePlan = false;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/patient-header/ccm-care-plan-download-initial.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eVideoCalls\n   * @restrict E\n   * @requires TwilioService\n   * @requires AuthService\n   * @param {object} patientUserProfile of the current patient\n   * @param {object} observationReport of the current patient\n   * @param {object} user currently logged in\n   * @description\n   * Displays the video call button and launches the video modal\n   * Helpful twilio docs\n   * https://www.twilio.com/docs/video/javascript-getting-started\n   * https://www.twilio.com/docs/video/solutions-blueprint-telemedicine-virtual-visits\n   */\n  angular.module('enterprise').component('eVideoCall', {\n    bindings: {\n      patientUserProfile: '<',\n      observationReport: '<',\n      user: '<',\n      reportingPeriodText: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, TwilioService, $uibModal, CallLogService, VIDEO_CALL, ModalService, $translate, TimesheetService, NotificationsService) {\n      var _this = this;\n      this.callInProgress = false;\n      this.modalOptions = {\n        templateUrl: 'app/components/portal/enterprise/e-video-call/e-video-call-modal.html',\n        backdrop: 'static',\n        windowClass: 'video-modal-dialog',\n        backdropClass: 'video-modal-open-backdrop',\n        openedClass: 'video-modal-open',\n        size: 'sm',\n        controllerAs: 'vm',\n        windowTopClass: 'video-modal-window-top-class',\n        controller: function controller($scope, $uibModalInstance, $timeout, $interval) {\n          $scope.modalOptions = {\n            patientName: _this.patientUserProfile.name_first,\n            videoEnabled: true,\n            audioEnabled: true,\n            callStatusText: 'VIDEO_CALL.CONNECTING',\n            callDuration: '00:00'\n          };\n          // The tablet currently does not notify once the call notification is sent so we fake it\n          _this.timeout = $timeout(function () {\n            return $scope.modalOptions.callStatusText = 'VIDEO_CALL.CALLING';\n          }, 10000);\n          $scope.modalOptions.disableAudio = function () {\n            $log.log('mute audio');\n            return _this.room.localParticipant.audioTracks.forEach(function (publication) {\n              return publication.track.disable();\n            });\n          };\n          $scope.modalOptions.enableAudio = function () {\n            $log.log('unmute audio');\n            return _this.room.localParticipant.audioTracks.forEach(function (publication) {\n              return publication.track.enable();\n            });\n          };\n          $scope.modalOptions.disableVideo = function () {\n            $log.log('disable video');\n            return _this.room.localParticipant.videoTracks.forEach(function (publication) {\n              return publication.track.disable();\n            });\n          };\n          $scope.modalOptions.enableVideo = function () {\n            $log.log('enable video');\n            return _this.room.localParticipant.videoTracks.forEach(function (publication) {\n              return publication.track.enable();\n            });\n          };\n          $scope.modalOptions.endCall = function (result) {\n            _this.room.disconnect();\n            $uibModalInstance.close(result);\n            return _this.callInProgress = false;\n          };\n          _this.interval = $interval(function () {\n            var duration, startTime;\n            if (_this.patientConnectTime) {\n              startTime = _this.patientConnectTime;\n              duration = luxon.DateTime.local().diff(startTime, 'seconds');\n              return $scope.modalOptions.callDuration = duration.toFormat(\"mm':'ss\");\n            }\n          }, 500);\n          $scope.$on('$destroy', function () {\n            var ref;\n            $log.log('modal on $destroy');\n            if ((ref = _this.room) != null) {\n              ref.disconnect();\n            }\n            $timeout.cancel(_this.timeout);\n            return $interval.cancel(_this.interval);\n          });\n        }\n      };\n      this.$onInit = function () {\n        $log = $log.getInstance('eVideoCall');\n        $log.log('this.patientUserProfile', this.patientUserProfile);\n        // only display if patient has a tablet device\n        this.canVideoCall = _.some(this.patientUserProfile.devices, ['device_type.category', VIDEO_CALL.DEVICE_TYPE]);\n      };\n      this.$onDestroy = function () {\n        var ref;\n        $log.log('$onDestroy');\n        return (ref = this.room) != null ? ref.disconnect() : void 0;\n      };\n      this.startCall = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var tokenResponse;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _this.callInProgress = true;\n              _this.modalOptions.callDuration = '0:00';\n              _this.patientConnectTime = null;\n              _context.next = 5;\n              return TwilioService.videoToken(_this.patientUserProfile.id, _this.user.user_profile.id);\n            case 5:\n              tokenResponse = _context.sent;\n              _this.modalInstance = $uibModal.open(_this.modalOptions);\n              _context.next = 9;\n              return Twilio.Video.connect(tokenResponse.twilioToken, {\n                name: _this.roomName,\n                // tracks can be pre-created or cached if chose to do so in the future\n                // for video preview or persistent camera across patient navigation?\n                // tracks: tracks\n                audio: true,\n                video: {\n                  height: 720,\n                  frameRate: 24,\n                  width: 1280\n                },\n                bandwidthProfile: {\n                  video: {\n                    mode: 'collaboration',\n                    dominantSpeakerPriority: 'high'\n                  }\n                },\n                dominantSpeaker: true,\n                preferredVideoCodecs: [{\n                  codec: 'VP8',\n                  simulcast: true\n                }],\n                networkQuality: {\n                  local: 1,\n                  remote: 1\n                }\n              });\n            case 9:\n              _this.room = _context.sent;\n              $log.log(_this.room);\n              // todo allow selection if multiple cameras?\n              _this.room.localParticipant.videoTracks.forEach(function (publication) {\n                return document.getElementById('my-video-preview').appendChild(publication.track.attach());\n              });\n              _this.providerConnectTime = luxon.DateTime.local();\n              _this.room.participants.forEach(function (participant) {\n                $log.log(\"Participant \".concat(participant.identity, \" is connected to the Room\"));\n                participant.tracks.forEach(function (publication) {\n                  return document.getElementById('twilio-video-call').appendChild(publication.track.attach());\n                });\n                return participant.on('trackSubscribed', function (track) {\n                  return document.getElementById('twilio-video-call').appendChild(track.attach());\n                });\n              });\n              _this.room.once('participantConnected', function (participant) {\n                var ref;\n                $log.log(\"Participant \".concat(participant.identity, \" has connected to the Room\"));\n                _this.patientConnectTime = luxon.DateTime.local();\n                if ((ref = document.getElementById('video-modal-spinner')) != null) {\n                  ref.remove();\n                }\n                document.getElementById('twilio-video-call').replaceChildren();\n                participant.tracks.forEach(function (publication) {\n                  var track;\n                  if (publication.isSubscribed) {\n                    track = publication.track;\n                    return document.getElementById('twilio-video-call').appendChild(track.attach());\n                  }\n                });\n                participant.on('trackSubscribed', function (track) {\n                  var ref1, ref2;\n                  $log.log('participant on track subbed', track);\n                  if ((track != null ? track.kind : void 0) === 'video') {\n                    if ((ref1 = document.getElementById('camera-off-icon')) != null) {\n                      ref1.remove();\n                    }\n                  } else if ((track != null ? track.kind : void 0) === 'audio') {\n                    if ((ref2 = document.getElementById('muted-icon')) != null) {\n                      ref2.remove();\n                    }\n                  }\n                  return document.getElementById('twilio-video-call').appendChild(track.attach());\n                });\n                return participant.on('trackUnsubscribed', function (track) {\n                  var cameraOffIcon, i, len, mutedIcon, ref1, results, v, videoCallNode;\n                  $log.log('participant on track unsubbed', track);\n                  videoCallNode = document.getElementById('twilio-video-call');\n                  if ((track != null ? track.kind : void 0) === 'video') {\n                    cameraOffIcon = document.createElement('i');\n                    cameraOffIcon.id = 'camera-off-icon';\n                    cameraOffIcon.className = 'fa fa-eye-slash';\n                    videoCallNode.prepend(cameraOffIcon);\n                    ref1 = videoCallNode.getElementsByTagName('video');\n                    results = [];\n                    for (i = 0, len = ref1.length; i < len; i++) {\n                      v = ref1[i];\n                      results.push(v != null ? v.remove() : void 0);\n                    }\n                    return results;\n                  } else if ((track != null ? track.kind : void 0) === 'audio') {\n                    mutedIcon = document.createElement('i');\n                    mutedIcon.id = 'muted-icon';\n                    mutedIcon.className = 'fa fa-microphone-slash';\n                    return videoCallNode.prepend(mutedIcon);\n                  }\n                });\n              });\n              _this.room.once('participantDisconnected', function (participant) {\n                var h2, ref, videoCallNode;\n                $log.log(\"Participant \".concat(participant.identity, \" has disconnected from the Room\"));\n                _this.patientDisconnectTime = luxon.DateTime.local();\n                videoCallNode = document.getElementById('twilio-video-call');\n                if (videoCallNode != null) {\n                  videoCallNode.replaceChildren();\n                }\n                h2 = document.createElement('h2');\n                h2.textContent = 'Patient Disconnected';\n                h2.style = 'padding-top: 200px';\n                //todo: prompt provider to end call ?\n                videoCallNode.appendChild(h2);\n                participant.tracks.forEach(function (publication) {\n                  var attachedElements, ref;\n                  attachedElements = publication != null ? (ref = publication.track) != null ? ref.detach() : void 0 : void 0;\n                  return attachedElements != null ? attachedElements.forEach(function (element) {\n                    return element.remove();\n                  }) : void 0;\n                });\n                if (!((ref = _this.room.participants) != null ? ref.size : void 0)) {\n                  if (confirm(\"You are the last person on the video call, would you like to leave?\")) {\n                    _this.room.disconnect();\n                    _this.callInProgress = false;\n                    return _this.modalInstance.close();\n                  }\n                }\n              });\n              return _context.abrupt(\"return\", _this.room.on('disconnected', function (room) {\n                // end call for all participants?\n                _this.providerDisconnectTime = luxon.DateTime.local();\n                room.localParticipant.tracks.forEach(function (publication) {\n                  var attachedElements;\n                  attachedElements = publication.track.detach();\n                  return attachedElements.forEach(function (element) {\n                    return element.remove();\n                  });\n                });\n                return _this.endCall();\n              }));\n            case 17:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      this.endCall = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var callLog, duration, endTime, ref, ref1, ref2, ref3, result, rpmTimeText, shiftedDuration, startTime, timesheet, translations;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log('ending call');\n              if (!(!this.patientConnectTime || !this.providerConnectTime)) {\n                _context2.next = 6;\n                break;\n              }\n              _context2.next = 4;\n              return CallLogService.create({\n                call_type: VIDEO_CALL.CALL_TYPE,\n                provider_user_profile: this.user.user_profile.id,\n                user_profile_id: this.patientUserProfile.id,\n                duration_ms: 0,\n                response: 'No answer'\n              });\n            case 4:\n              callLog = _context2.sent;\n              return _context2.abrupt(\"return\");\n            case 6:\n              startTime = this.patientConnectTime > this.providerConnectTime ? this.patientConnectTime : this.providerConnectTime;\n              endTime = this.patientDisconnectTime < this.providerDisconnectTime ? this.patientDisconnectTime : this.providerDisconnectTime;\n              duration = endTime.diff(startTime);\n              _context2.next = 11;\n              return CallLogService.create({\n                call_type: VIDEO_CALL.CALL_TYPE,\n                provider_user_profile: this.user.user_profile.id,\n                user_profile_id: this.patientUserProfile.id,\n                duration_ms: Math.floor(duration.as('seconds')),\n                response: duration.as('minutes') > 1 ? 'Spoke with patient' : 'No answer'\n              });\n            case 11:\n              callLog = _context2.sent;\n              shiftedDuration = duration.shiftTo(\"minutes\", \"seconds\");\n              shiftedDuration = shiftedDuration.set({\n                seconds: Math.floor(shiftedDuration.seconds)\n              });\n              rpmTimeText = shiftedDuration.toHuman();\n              if (!(shiftedDuration.minutes > 0)) {\n                _context2.next = 27;\n                break;\n              }\n              _context2.next = 18;\n              return $translate(['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'], {\n                call_time: rpmTimeText,\n                reportPeriodText: this.reportingPeriodText,\n                service: (ref = this.observationReport) != null ? (ref1 = ref.service) != null ? ref1.name : void 0 : void 0\n              });\n            case 18:\n              translations = _context2.sent;\n              _context2.next = 21;\n              return ModalService.showModal({}, {\n                bodyText: translations['AUDIO_CALL.TIME_MODAL.BODY'],\n                headerText: translations['AUDIO_CALL.TIME_MODAL.HEADER'],\n                closeButtonText: translations['AUDIO_CALL.TIME_MODAL.NO'],\n                actionButtonText: translations['AUDIO_CALL.TIME_MODAL.YES']\n              }).result;\n            case 21:\n              result = _context2.sent;\n              timesheet = {\n                observation_report_id: this.observationReport.id,\n                submitted_by_user_profile_id: this.user.user_profile.id,\n                duration_secs: Math.floor(duration.as('seconds'))\n              };\n              if (!result) {\n                _context2.next = 27;\n                break;\n              }\n              _context2.next = 26;\n              return TimesheetService.post(timesheet);\n            case 26:\n              return _context2.abrupt(\"return\", NotificationsService.success('AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION', {\n                call_time: rpmTimeText,\n                reportPeriodText: this.reportingPeriodText,\n                service: (ref2 = this.observationReport) != null ? (ref3 = ref2.service) != null ? ref3.name : void 0 : void 0\n              }));\n            case 27:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/e-video-call/e-video-call.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * Modal for editing call transcription notification contents.\n   * Cancel: dismiss only (no API). Save draft: PUT notification with updated contents + is_read: true.\n   * saveAndPostToPatientChart: integration hook for posting clinical summary to chart (future task).\n   */\n  var CALL_SUMMARY_NOT_AVAILABLE;\n  CALL_SUMMARY_NOT_AVAILABLE = 'Call summary not available. Refer to the full call transcription for call details.';\n  angular.module('portal').controller('TranscriptionEditModalCtrl', function ($uibModalInstance, $translate, UserNotificationsApiService, NotificationQueueStateService, modalNotification, modalUserId, modalPatientLabel, modalObservationReportId, modalPortalUser, PatientObservationReportNavService) {\n    'ngInject';\n\n    var c, durationMinutes, durationMs, formatContentsField, formatTimestamp, initialSummaryText, initialTranscriptionText, start, vm;\n    vm = this;\n    c = (modalNotification != null ? modalNotification.contents : void 0) || {};\n    formatContentsField = function formatContentsField(raw) {\n      if (raw === null || raw === void 0) {\n        return '';\n      }\n      if (angular.isString(raw)) {\n        return raw;\n      }\n      try {\n        return angular.toJson(raw, true);\n      } catch (error) {\n        return String(raw);\n      }\n    };\n    initialSummaryText = function initialSummaryText() {\n      if (c.call_summary === null || c.call_summary === '') {\n        return CALL_SUMMARY_NOT_AVAILABLE;\n      }\n      return formatContentsField(c.call_summary);\n    };\n    // Read-only accordion body (raw transcript); not edited in this modal.\n    initialTranscriptionText = function initialTranscriptionText() {\n      var ref;\n      return formatContentsField((ref = c.call_transcription) != null ? ref : c.transcription);\n    };\n    formatTimestamp = function formatTimestamp(value) {\n      var providerTimestamp, providerTimezone, ref, timestamp;\n      timestamp = luxon.DateTime.fromISO(String(value), {\n        setZone: true\n      });\n      if (!timestamp.isValid) {\n        return '';\n      }\n      providerTimezone = (modalPortalUser != null ? (ref = modalPortalUser.user_profile) != null ? ref.timezone : void 0 : void 0) || luxon.DateTime.local().zoneName;\n      providerTimestamp = timestamp.setZone(providerTimezone);\n      if (!providerTimestamp.isValid) {\n        providerTimestamp = timestamp.setZone(luxon.DateTime.local().zoneName);\n      }\n      timestamp = providerTimestamp;\n      return timestamp.toFormat('MMM d, yyyy h:mm:ss a');\n    };\n    start = c.start_time || modalNotification.created_at;\n    vm.metaLine = $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.META', {\n      date: formatTimestamp(start)\n    });\n    durationMs = c.duration_ms;\n    durationMinutes = durationMs ? Math.max(1, Math.round(Number(durationMs) / 60000)) : null;\n    vm.callDetails = {\n      call_transcription_id: c.call_transcription_id,\n      patient_user_profile_id: c.patient_user_profile_id,\n      enterprise_customer_id: c.enterprise_customer_id,\n      patient_label: modalPatientLabel || null,\n      provider_email: c.provider_email,\n      start_time_formatted: formatTimestamp(start)\n    };\n    vm.durationDisplay = durationMinutes ? $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.DURATION_MINUTES', {\n      count: durationMinutes\n    }) : null;\n    vm.draft = {\n      call_summary: initialSummaryText()\n    };\n    vm.transcriptDisplay = initialTranscriptionText();\n    vm.transcriptAccordionOpen = false;\n    vm.saving = false;\n    vm.markingUnread = false;\n    vm.errorMessage = null;\n    vm.isRead = !!(modalNotification != null ? modalNotification.is_read : void 0);\n    vm.canOpenPatientReport = !!c.patient_user_profile_id;\n    vm.observationReportId = modalObservationReportId || null;\n    vm.enterpriseCustomerId = c.enterprise_customer_id || null;\n    // Resolve the patient-report destination once up front via the shared service so the\n    // template does not duplicate the practice-switch branching.\n    vm.patientReportDestination = PatientObservationReportNavService.resolveDestination(c, vm.observationReportId, modalPortalUser);\n    vm.dismiss = function () {\n      return $uibModalInstance.dismiss('cancel');\n    };\n    vm.onPatientReportNavClick = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) switch (_context.prev = _context.next) {\n          case 0:\n            if (vm.patientReportDestination) {\n              _context.next = 2;\n              break;\n            }\n            return _context.abrupt(\"return\");\n          case 2:\n            _context.prev = 2;\n            _context.next = 5;\n            return PatientObservationReportNavService.navigate(vm.patientReportDestination);\n          case 5:\n            return _context.abrupt(\"return\", $uibModalInstance.close('navigated'));\n          case 8:\n            _context.prev = 8;\n            _context.t0 = _context[\"catch\"](2);\n          case 10:\n          case \"end\":\n            return _context.stop();\n        }\n      }, _callee, null, [[2, 8]]);\n    }));\n    vm.markAsRead = function () {\n      var baseContents, newContents;\n      if (vm.markingRead || vm.saving) {\n        return;\n      }\n      vm.markingRead = true;\n      vm.errorMessage = null;\n      baseContents = modalNotification.contents ? angular.copy(modalNotification.contents) : {};\n      newContents = angular.extend({}, baseContents, {\n        call_summary: vm.draft.call_summary\n      });\n      return UserNotificationsApiService.updateNotification(modalUserId, modalNotification.id, {\n        contents: newContents,\n        is_read: true\n      }).then(function (updated) {\n        NotificationQueueStateService.applySavedNotification(updated);\n        $uibModalInstance.close('marked_read').catch(function () {});\n        vm.errorMessage = $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.SAVE_ERROR').finally(function () {});\n        return vm.markingRead = false;\n      });\n    };\n    vm.markAsUnread = function () {\n      var baseContents, newContents;\n      if (vm.markingUnread || vm.saving) {\n        return;\n      }\n      vm.markingUnread = true;\n      vm.errorMessage = null;\n      baseContents = modalNotification.contents ? angular.copy(modalNotification.contents) : {};\n      newContents = angular.extend({}, baseContents, {\n        call_summary: vm.draft.call_summary\n      });\n      return UserNotificationsApiService.updateNotification(modalUserId, modalNotification.id, {\n        contents: newContents,\n        is_read: false\n      }).then(function (updated) {\n        NotificationQueueStateService.applySavedNotification(updated);\n        return $uibModalInstance.close('marked_unread');\n      }).catch(function () {\n        return vm.errorMessage = $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.SAVE_ERROR');\n      }).finally(function () {\n        return vm.markingUnread = false;\n      });\n    };\n    vm.saveDraft = function () {\n      var baseContents, newContents;\n      vm.saving = true;\n      vm.errorMessage = null;\n      baseContents = modalNotification.contents ? angular.copy(modalNotification.contents) : {};\n      newContents = angular.extend({}, baseContents, {\n        call_summary: vm.draft.call_summary\n      });\n      return UserNotificationsApiService.updateNotification(modalUserId, modalNotification.id, {\n        contents: newContents\n      }).then(function (updated) {\n        NotificationQueueStateService.applySavedNotification(updated);\n        return $uibModalInstance.close('saved');\n      }).catch(function () {\n        vm.errorMessage = $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.SAVE_ERROR');\n        return vm.saving = false;\n      });\n    };\n    vm.saveAndPostToPatientChart = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n      var updated;\n      return regeneratorRuntime.wrap(function _callee2$(_context2) {\n        while (1) switch (_context2.prev = _context2.next) {\n          case 0:\n            if (!vm.saving) {\n              _context2.next = 2;\n              break;\n            }\n            return _context2.abrupt(\"return\");\n          case 2:\n            vm.saving = true;\n            vm.errorMessage = null;\n            _context2.prev = 4;\n            _context2.next = 7;\n            return UserNotificationsApiService.postToPatientChart(modalUserId, modalNotification.id, {\n              enterprise_customer_id: vm.enterpriseCustomerId,\n              observation_report_id: vm.observationReportId,\n              call_summary: vm.draft.call_summary\n            });\n          case 7:\n            updated = _context2.sent;\n            NotificationQueueStateService.applySavedNotification(updated);\n            return _context2.abrupt(\"return\", $uibModalInstance.close('saved'));\n          case 12:\n            _context2.prev = 12;\n            _context2.t0 = _context2[\"catch\"](4);\n            return _context2.abrupt(\"return\", vm.errorMessage = $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.SAVE_ERROR'));\n          case 15:\n            _context2.prev = 15;\n            vm.saving = false;\n            return _context2.finish(15);\n          case 18:\n          case \"end\":\n            return _context2.stop();\n        }\n      }, _callee2, null, [[4, 12, 15, 18]]);\n    }));\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eTemplateBuilder\n   * @restrict E\n   * @param {int} activeTabKey the index of the actively viewed data graph\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} timesheets the observationReport timesheets\n   * @param {string} reportPeriodTxt the date string ex: March 1-31, 2020\n   * @param {object} dateRange the observation report currently selected date range (from the selector)\n   * @param {function} onSubmit submits observation report\n   * @param {boolean} isReportEditable is this report editable?\n   * @param {boolean} isReportFromCurrentPeriod are we editing this report in the current month?\n   * @description\n   * Displays enterprise wearer/patientUserProfile details\n   */\n  angular.module('enterprise').component('eTemplateBuilder', {\n    bindings: {\n      activeTabKey: '=',\n      user: '<',\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      observationReports: '<',\n      timesheets: '<',\n      reportPeriodTxt: '<',\n      onSubmit: '&',\n      dateRange: '<',\n      isReportEditable: '<',\n      isReportFromCurrentPeriod: '<',\n      features: '<',\n      goToNextPatient: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ECustomersService, ETemplateService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eTemplateBuilder');\n        return $log.log('eTemplateBuilder component loaded');\n      };\n      this.onUpdateComponentItem = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return ETemplateService.onUpdateComponentItem(this.enterpriseCustomer, payload);\n              case 3:\n                return _context.abrupt(\"return\", _context.sent);\n              case 6:\n                _context.prev = 6;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                return _context.abrupt(\"return\", $log.error('Error in onUpdateComponentItem:', error));\n              case 10:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 6]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onCreateComponentItem = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return ETemplateService.onCreateComponentItem(this.enterpriseCustomer, payload);\n              case 3:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 6:\n                _context2.prev = 6;\n                _context2.t0 = _context2[\"catch\"](0);\n                error = _context2.t0;\n                return _context2.abrupt(\"return\", $log.error('Error in onCreateComponentItem:', error));\n              case 10:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[0, 6]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onDeleteComponentItem = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.prev = 0;\n                _context3.next = 3;\n                return ETemplateService.onDeleteComponentItem(this.enterpriseCustomer, payload);\n              case 3:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 6:\n                _context3.prev = 6;\n                _context3.t0 = _context3[\"catch\"](0);\n                error = _context3.t0;\n                return _context3.abrupt(\"return\", $log.error('Error in onDeleteComponentItem:', error));\n              case 10:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[0, 6]]);\n        }));\n        return function (_x3) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-template-builder/e-template-builder.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('eSmartpactSignature', {\n    'ngInject': 'ngInject',\n    bindings: {\n      enrollment: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, env, ModalService, PactsafeService, NotificationsService, EEnrollmentsService) {\n      var _this = this;\n      this.$onInit = function () {\n        var modalDefaults;\n        $log = $log.getInstance('eSmartpactSignature');\n        $log.log('eSmartpactSignature component loaded');\n        _this.enrollment.pactsafe_request_data = {}; // init object\n        $log.log('this.enrollment', _this.enrollment);\n        modalDefaults = {\n          windowClass: 'smartpact-signature-modal',\n          controller: function controller($scope, $uibModalInstance) {\n            $scope.modalOptions = {\n              isLoading: true,\n              init: function () {\n                var _init = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n                  var signatureOptions;\n                  return regeneratorRuntime.wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        signatureOptions = {\n                          url: env.pactsafe.patient_esig_url,\n                          container: document.getElementById('e-smartpact-signature-modal-body'),\n                          allow_cancel: false,\n                          debug: false,\n                          from_left: 0,\n                          from_top: 0,\n                          message_listener: function message_listener(data) {\n                            // signer_identity_confirmed, request_signed, finished\n                            // Do something after user cancels, saves, etc...\n                            _this.updateEnrollmentWithPactsafeData(data, $uibModalInstance);\n                          }\n                        };\n                        _context.next = 3;\n                        return PactsafeService.loadSmartPactJS();\n                      case 3:\n                        $scope.modalOptions.isLoading = false;\n                        PactsafeService.showSmartPact(signatureOptions);\n                      case 5:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n                function init() {\n                  return _init.apply(this, arguments);\n                }\n                return init;\n              }(),\n              close: function close(result) {\n                $uibModalInstance.close(false);\n              }\n            };\n          },\n          //          ModalService.goToParentAfterClose($scope, $state)\n          backdrop: 'static',\n          // don't close\n          keyboard: false,\n          // don't close\n          templateUrl: 'app/components/portal/enterprise/e-smartpact-signature/e-smartpact-signature.html'\n        };\n        return ModalService.show(modalDefaults);\n      };\n      this.updateEnrollmentWithPactsafeData = function (data, $uibModalInstance) {\n        var error;\n        $log.log(data);\n        if (data.event) {\n          this.enrollment.pactsafe_request_data[data.event] = data.data;\n        }\n        if (data.event === 'finished') {\n          this.enrollment.is_signed = true;\n          $log.log('signature finished');\n          try {\n            EEnrollmentsService.put(this.enrollment.enterprise_customer_id, this.enrollment);\n            $uibModalInstance.close(false);\n            $state.go('enterprise.enrollments');\n            return NotificationsService.success('Enrollment complete');\n          } catch (error1) {\n            error = error1;\n            $log.error(error);\n            NotificationsService.error('Error saving signature, please try again');\n            return $state.reload();\n          }\n        }\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eRemotePatientMonitoringStatus\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @description\n   * Displays RPM Status & History\n   */\n  angular.module('enterprise').component('eRemotePatientMonitoringStatus', {\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      deactivationLogs: '<',\n      deactivationReasons: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $window, $filter, $stateParams, $rootScope, BILLING_FAQS, PER_PAGE, ECustomersService, UserProfilesService, NotificationsService, EDeactivationReasonsService, ObservationReportService) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('eRemotePatientMonitoringStatus');\n        $log.log('eRemotePatientMonitoringStatus component loaded');\n        this.deregisterListener = $rootScope.$on('deactivation_requests_refresh', function (e) {\n          $log.log('deactivation_requests_refresh event');\n          _this.pageNumber = 1;\n          // this.refreshEnterpriseCustomer()\n          $window.location.reload();\n          _this.goToPage();\n          return _this.refreshEnterpriseCustomer();\n        });\n        this.billingFAQsUrl = BILLING_FAQS.URL;\n        this.deactivations = this.getStatusHistory(this.deactivationLogs);\n        this.deactivationRequestsCount = this.deactivationLogs.headers('X-Total-Count');\n        this.itemsPerPage = PER_PAGE.DEACTIVATION_LOGS;\n        this.pageNumber = $stateParams.deactivation_logs_page || 1;\n        this.queryString = {};\n      };\n      // This hook is very important to have when dealing with components nested in a sticky load parent component\n      // You must handle parent sticky load component based changes here!\n      this.$onChanges = function (changes) {\n        if (changes != null ? changes.deactivationLogs : void 0) {\n          this.deactivations = this.getStatusHistory(this.deactivationLogs);\n          this.deactivationRequestsCount = this.deactivationLogs.headers('X-Total-Count');\n          return this.pageNumber = 1;\n        }\n      };\n      this.getStatusHistory = function (deactivationLogs) {\n        var baseTranslationKey, deactivations, logs;\n        logs = _.get(deactivationLogs, 'data.data', []);\n        baseTranslationKey = 'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.REQUEST_TYPE';\n        deactivations = [];\n        _.forEach(logs, function (log, index) {\n          var deactivatedDate, deactivationReason, deactivationRequestLog, deactivationStatus, isDeactivateRequest, isTempDeactivation, nextRecord, notes, previousRecord, reactivatedDate, reactivationRequestLog, reactivationStatus, reasonDescription, requestType, requestTypeKey, requestTypeTranslation, status, submitDate;\n          deactivationReason = _.get(log, 'deactivation_reason.key_name');\n          isDeactivateRequest = _.isNull(_.get(log, 'reactivation_request'));\n          deactivationStatus = _.get(log, 'deactivation_request.status');\n          reactivationStatus = _.get(log, 'reactivation_request.status');\n          isTempDeactivation = deactivationReason === 'PAUSE_INVOICING_TRAVELING' || deactivationReason === 'HOSPITALIZED_REHAB';\n          reasonDescription = EDeactivationReasonsService.parseReasonDescription(log);\n          if (isTempDeactivation && isDeactivateRequest) {\n            previousRecord = index - 1;\n            reactivationRequestLog = _.get(logs, \"[\".concat(previousRecord, \"]\"));\n            reasonDescription = EDeactivationReasonsService.getTempDeactivationReasonDescription(log, reactivationRequestLog);\n          }\n          // Don't show reactivation log in list until it's been manually approved or denied/canceled\n          if (isTempDeactivation && (reactivationStatus === 'Pending' || reactivationStatus === 'Canceled')) {\n            nextRecord = index + 1;\n            deactivationRequestLog = _.get(logs, \"[\".concat(nextRecord, \"]\"));\n            status = _.get(deactivationRequestLog, 'deactivation_request.status');\n            reasonDescription = EDeactivationReasonsService.getTempDeactivationReasonDescription(deactivationRequestLog, log);\n            if (status === 'Pending') {\n              return;\n            }\n          }\n          status = isDeactivateRequest ? deactivationStatus : reactivationStatus;\n          submitDate = _.get(log, 'created_at');\n          deactivatedDate = status !== 'Approved' ? '-' : _.get(log, 'deactivated_at');\n          reactivatedDate = _.get(log, 'reactivated_at', '-');\n          notes = _.get(log, 'deactivation_reason_metadatum.notes');\n          requestTypeKey = isDeactivateRequest ? EDeactivationReasonsService.getRequestTypeByReason(deactivationReason) : 'REACTIVATE';\n          requestTypeTranslation = \"\".concat(baseTranslationKey, \".\").concat(requestTypeKey);\n          requestType = $filter('translate')(requestTypeTranslation);\n          return deactivations.push({\n            isDeactivateRequest: isDeactivateRequest,\n            showReactivationReason: isTempDeactivation,\n            requestType: requestType,\n            reason: reasonDescription,\n            submitDate: submitDate,\n            deactivatedDate: deactivatedDate,\n            reactivatedDate: reactivatedDate,\n            notes: notes,\n            status: status\n          });\n        });\n        return deactivations;\n      };\n      this.viewBillingFAQs = function () {\n        return $window.open(this.billingFAQsUrl, '_blank');\n      };\n      this.goToPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var deactivationLogs, newQueryString;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log.log('goToPage', this.pageNumber);\n              newQueryString = {\n                _page: this.pageNumber,\n                _perPage: this.itemsPerPage,\n                _sortDir: 'desc',\n                _sortField: 'created_at'\n              };\n              // Maintain query string with all filters when navigating between pages.\n              this.queryString = Object.assign(this.queryString, newQueryString);\n              _context.next = 5;\n              return UserProfilesService.getDeactivationLogs($stateParams.user_profile_id, this.queryString);\n            case 5:\n              deactivationLogs = _context.sent;\n              $state.go('.', {\n                deactivation_logs_page: this.pageNumber\n              });\n              this.deactivations = this.getStatusHistory(deactivationLogs);\n              return _context.abrupt(\"return\", this.deactivationRequestsCount = deactivationLogs.headers('X-Total-Count'));\n            case 9:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.refreshEnterpriseCustomer = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var updatedCustomer;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log('getting latest enterprise customer');\n              _context2.next = 3;\n              return ECustomersService.getWithCacheBurst(this.user.user_profile.enterprise_customer_id);\n            case 3:\n              updatedCustomer = _context2.sent;\n              return _context2.abrupt(\"return\", this.enterpriseCustomer = updatedCustomer);\n            case 5:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.removePatient = function () {\n        var allowDeactivation, state;\n        $log.log('removePatient');\n        allowDeactivation = _.get(this.enterpriseCustomer, 'should_allow_deactivation_requests', false);\n        state = allowDeactivation ? 'reason' : 'contact';\n        EDeactivationReasonsService.setDeactivatingPatient(this.patientUserProfile);\n        return $state.go(\"enterprise.observation_report.patient_deactivation_\".concat(state), {\n          patientUserProfile: this.patientUserProfile\n        });\n      };\n      this.modalBody = function () {\n        return ObservationReportService.reactivationModalBody();\n      };\n      this.reactivatePatient = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log.log('reactivatePatient');\n              _context3.prev = 1;\n              _context3.next = 4;\n              return UserProfilesService.reactivatePatient(this.user, this.patientUserProfile);\n            case 4:\n              NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTIFICATION.SUCCESS'));\n              return _context3.abrupt(\"return\", $state.go('enterprise.patients'));\n            case 8:\n              _context3.prev = 8;\n              _context3.t0 = _context3[\"catch\"](1);\n              error = _context3.t0;\n              $log.log('error', error);\n              return _context3.abrupt(\"return\", $state.go('enterprise.observation_report.patient_deactivation_contact'));\n            case 13:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[1, 8]]);\n      }));\n      this.$onDestroy = function () {\n        return this.deregisterListener();\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-remote-patient-monitoring-status/e-remote-patient-monitoring-status.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('ePhoneControls', {\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($log, $scope, $state, $interval, $translate, $q, $rootScope, TwilioService, TwilioVoiceEvents, AUDIO_CALL_CONSTANTS, TimesheetService, ModalService, NotificationsService, PatientChartNavigationService, PatientServicesService, ReportingPeriodService, CallLogService) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('ePhoneControls');\n        $log.log('e-phone-controls:init');\n        this.resetControls(true);\n        TwilioService.subscribe(TwilioVoiceEvents.AUDIO_CALL_START, $scope, function (event, data) {\n          return _this.onCallStart(data);\n        });\n        TwilioService.subscribe(TwilioVoiceEvents.AUDIO_CALL_END, $scope, function () {\n          return _this.onCallEnd();\n        });\n        TwilioService.subscribe(TwilioVoiceEvents.AUDIO_CALL_CONNECTED, $scope, function (event, data) {\n          return _this.onCallConnected(data);\n        });\n        return TwilioService.subscribe(TwilioVoiceEvents.AUDIO_CALL_TOGGLE_MUTE, $scope, function (event, data) {\n          return _this.onToggleMute(data);\n        });\n      };\n      this.resetControls = function (clearControls) {\n        $log.log('e-phone-controls:reset-controls', clearControls);\n        if (clearControls) {\n          this.patient = {\n            name: '',\n            number: '',\n            id: '',\n            observation_report_id: ''\n          };\n          this.provider = {\n            profile_id: ''\n          };\n          this.call = {\n            active: TwilioService.isOnCall(),\n            calling_number: '',\n            muted: false,\n            callState: '',\n            startTime: null,\n            connection: null,\n            callTimerPromise: null,\n            duration_text: AUDIO_CALL_CONSTANTS.TIMER.NO_DURATION,\n            duration: luxon.Duration.fromObject({\n              minutes: 0,\n              seconds: 0\n            })\n          };\n        }\n        this.reportPeriodText = '';\n        return this.rpmTime = clearControls ? 0 : this.call.duration.as('seconds');\n      };\n      this.onCallStart = function (data) {\n        var patient, ref, ref1, ref2, ref3;\n        $log.log('e-phone-controls:on-call-start', data);\n        this.call.active = true;\n        this.call.calling_number = data.calling_number;\n        patient = data.data.patient;\n        this.patient.number = patient.number;\n        this.patient.name = patient.name_first + ' ' + patient.name_last;\n        this.patient.id = patient.profile_id;\n        this.patient.observation_report_id = patient.observation_report_id;\n        this.patient.model_patient_services = patient.model_patient_services;\n        this.provider.profile_id = data.data.provider.profile_id;\n        this.provider.enterprise_customer_id = ((ref = data.data.provider) != null ? ref.enterprise_customer_id : void 0) || ((ref1 = data.data.user_profile_id) != null ? ref1.enterprise_customer_id : void 0);\n        this.reportPeriodText = data.data.reportPeriodText;\n        this.service = (ref2 = data.data.observation_report) != null ? (ref3 = ref2.service) != null ? ref3.name : void 0 : void 0;\n        this.currentReportingPeriod = data.data.currentReportingPeriod;\n        this.callLogOptions = data.data.callLogOptions;\n      };\n      this.handleDualCallFlow = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(callLogOptions, total_call_duration) {\n          var _this2 = this;\n          var base, base1, base2, base3, base4, base5, base6, base7, baseCallLog, bodyKey, ccmBaseCallLog, ccmCallLog, ccmObservationReport, ccmObservationReportId, ccmService, ccmTimeText, ccm_duration_ms, ccm_response, confirmed, dualResult, dual_modal_keys, error, headerKey, modalDefaults, modalOptions, noKey, patientServices, rpmBaseCallLog, rpmCallLog, rpmObservationReport, rpmObservationReportId, rpmService, rpmTimeText, rpm_duration_ms, rpm_response, translationKeys, translations, yesKey, _this$callLogOptions$, _dual_modal_keys, _dual_modal_keys2;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if ((base = this.callLogOptions).call_log_data == null) {\n                  base.call_log_data = {};\n                }\n                if ((base1 = this.callLogOptions.call_log_data).provider_user_profile_id == null) {\n                  base1.provider_user_profile_id = this.callLogOptions.provider;\n                }\n                if ((base2 = this.callLogOptions.call_log_data).to_phone_number == null) {\n                  base2.to_phone_number = this.callLogOptions.patientNumber;\n                }\n                if ((base3 = this.callLogOptions.call_log_data).response == null) {\n                  base3.response = this.callLogOptions.connectionStatus;\n                }\n                if ((base4 = this.callLogOptions.call_log_data).rpm_duration_ms == null) {\n                  base4.rpm_duration_ms = null;\n                }\n                if ((base5 = this.callLogOptions.call_log_data).ccm_duration_ms == null) {\n                  base5.ccm_duration_ms = null;\n                }\n                if ((base6 = this.callLogOptions.call_log_data).rpm_response == null) {\n                  base6.rpm_response = null;\n                }\n                if ((base7 = this.callLogOptions.call_log_data).ccm_response == null) {\n                  base7.ccm_response = null;\n                }\n                this.callLogOptions.call_log_data.total_call_duration_minutes = total_call_duration;\n                translationKeys = ['PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HEADER', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SAVE_CALL'];\n                _context.next = 12;\n                return $translate(translationKeys);\n              case 12:\n                translations = _context.sent;\n                modalOptions = {\n                  headerText: translations[translationKeys[0]],\n                  closeButtonText: translations[translationKeys[1]],\n                  actionButtonText: translations[translationKeys[2]],\n                  payload: this.callLogOptions\n                };\n                modalDefaults = {\n                  templateUrl: 'app/components/portal/enterprise/e-audio-call/log-calls.html',\n                  controller: 'LogCallsModalController',\n                  controllerAs: 'vm',\n                  resolve: {\n                    payload: function payload() {\n                      return angular.copy(_this2.callLogOptions);\n                    }\n                  }\n                };\n                baseCallLog = {\n                  call_type: AUDIO_CALL_CONSTANTS.CALL_TYPE.MANUAL,\n                  user_profile_id: this.patient.id,\n                  to_phone_type: CallLogService.findPhoneType(this.callLogOptions.patientNumberOptions, this.patient.number),\n                  to_phone_number: this.patient.number,\n                  provider_user_profile_id: this.provider.profile_id\n                };\n                if (this.currentReportingPeriod) {\n                  _context.next = 20;\n                  break;\n                }\n                _context.next = 19;\n                return ReportingPeriodService.getCurrentReportingPeriodForLocalTime();\n              case 19:\n                this.currentReportingPeriod = _context.sent;\n              case 20:\n                _context.next = 22;\n                return PatientServicesService.getAll(this.provider.enterprise_customer_id);\n              case 22:\n                patientServices = _context.sent;\n                _context.next = 25;\n                return ModalService.showModal({\n                  templateUrl: 'app/components/portal/enterprise/e-audio-call/log-calls.html'\n                }, modalOptions).result;\n              case 25:\n                dualResult = _context.sent;\n                if (dualResult) {\n                  _this$callLogOptions$ = this.callLogOptions.call_log_data;\n                  rpm_duration_ms = _this$callLogOptions$.rpm_duration_ms;\n                  ccm_duration_ms = _this$callLogOptions$.ccm_duration_ms;\n                  rpm_response = _this$callLogOptions$.rpm_response;\n                  ccm_response = _this$callLogOptions$.ccm_response;\n                }\n                if (dualResult) {\n                  _context.next = 29;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 29:\n                _context.next = 31;\n                return PatientChartNavigationService.getCurrentObservationReport(this.provider.enterprise_customer_id, this.patient.id, this.currentReportingPeriod.id, 'RPM');\n              case 31:\n                rpmObservationReport = _context.sent;\n                rpmObservationReportId = rpmObservationReport != null ? rpmObservationReport.id : void 0;\n                _context.next = 35;\n                return PatientChartNavigationService.getCurrentObservationReport(this.provider.enterprise_customer_id, this.patient.id, this.currentReportingPeriod.id, 'CCM');\n              case 35:\n                ccmObservationReport = _context.sent;\n                ccmObservationReportId = ccmObservationReport != null ? ccmObservationReport.id : void 0;\n                // Handle dual call logs (both RPM and CCM)\n                if (!(rpm_duration_ms !== void 0 && rpm_duration_ms !== null && ccm_duration_ms !== void 0 && ccm_duration_ms !== null)) {\n                  _context.next = 71;\n                  break;\n                }\n                rpmTimeText = rpm_duration_ms / 60 + ' ' + (rpm_duration_ms >= 120 ? 'minutes' : 'minute');\n                ccmTimeText = ccm_duration_ms / 60 + ' ' + (ccm_duration_ms >= 120 ? 'minutes' : 'minute');\n                rpmService = patientServices.find(function (service) {\n                  return service.name === 'RPM';\n                });\n                ccmService = patientServices.find(function (service) {\n                  return service.name === 'CCM';\n                });\n                // One confirmation modal\n                dual_modal_keys = ['AUDIO_CALL.DUAL_CALL_TIME_MODAL.AUDIO_CALL_HEADER', 'AUDIO_CALL.DUAL_CALL_TIME_MODAL.NO', 'AUDIO_CALL.DUAL_CALL_TIME_MODAL.YES', 'AUDIO_CALL.DUAL_CALL_TIME_MODAL.BODY'];\n                _context.next = 45;\n                return $translate(dual_modal_keys, {\n                  rpm_call_time: rpmTimeText,\n                  ccm_call_time: ccmTimeText,\n                  reportPeriodText: this.reportPeriodText\n                });\n              case 45:\n                translations = _context.sent;\n                _dual_modal_keys = dual_modal_keys;\n                _dual_modal_keys2 = _slicedToArray(_dual_modal_keys, 4);\n                headerKey = _dual_modal_keys2[0];\n                noKey = _dual_modal_keys2[1];\n                yesKey = _dual_modal_keys2[2];\n                bodyKey = _dual_modal_keys2[3];\n                _context.next = 54;\n                return ModalService.showModal({}, {\n                  headerText: translations[headerKey],\n                  bodyText: translations[bodyKey],\n                  closeButtonText: translations[noKey],\n                  actionButtonText: translations[yesKey]\n                }).result;\n              case 54:\n                confirmed = _context.sent;\n                if (confirmed) {\n                  _context.next = 57;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 57:\n                // Save both calls + timesheets (logical transaction)\n                rpmCallLog = angular.extend({}, baseCallLog, {\n                  service_id: rpmService.id,\n                  duration_ms: rpm_duration_ms,\n                  response: rpm_response\n                });\n                ccmCallLog = angular.extend({}, baseCallLog, {\n                  service_id: ccmService.id,\n                  duration_ms: ccm_duration_ms,\n                  response: ccm_response\n                });\n                _context.prev = 59;\n                _context.next = 62;\n                return $q.all([CallLogService.create(rpmCallLog), CallLogService.create(ccmCallLog), TimesheetService.post({\n                  observation_report_id: rpmObservationReportId,\n                  submitted_by_user_profile_id: this.provider.profile_id,\n                  duration_secs: rpm_duration_ms\n                }), TimesheetService.post({\n                  observation_report_id: ccmObservationReportId,\n                  submitted_by_user_profile_id: this.provider.profile_id,\n                  duration_secs: ccm_duration_ms\n                })]);\n              case 62:\n                NotificationsService.success('AUDIO_CALL.DUAL_CALL_TIME_MODAL.SUCCESSFUL_NOTIFICATION', {\n                  rpm_call_time: rpmTimeText,\n                  ccm_call_time: ccmTimeText,\n                  reportPeriodText: this.reportPeriodText\n                });\n                // Broadcast event to reload timesheets, observationReport, and graphConfig\n                $rootScope.$broadcast('observationReport:reload', {\n                  observationReportId: this.patient.observation_report_id,\n                  patientUserProfileId: baseCallLog.user_profile_id\n                });\n                _context.next = 70;\n                break;\n              case 66:\n                _context.prev = 66;\n                _context.t0 = _context[\"catch\"](59);\n                error = _context.t0;\n                NotificationsService.error('AUDIO_CALL.DUAL_CALL_TIME_MODAL.ERROR_NOTIFICATION');\n              case 70:\n                return _context.abrupt(\"return\", $q.resolve());\n              case 71:\n                if (!(rpm_duration_ms !== void 0 && rpm_duration_ms !== null)) {\n                  _context.next = 80;\n                  break;\n                }\n                rpmService = patientServices.find(function (service) {\n                  return service.name === 'RPM';\n                });\n                if (rpmService) {\n                  _context.next = 77;\n                  break;\n                }\n                $log.error('saveCallLog: RPM service not found');\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                return _context.abrupt(\"return\", $q.reject('RPM service not found'));\n              case 77:\n                rpmBaseCallLog = angular.extend({}, baseCallLog, {\n                  service_id: rpmService.id\n                });\n                this.submitPromise = CallLogService.saveSingleCallLog({\n                  baseCallLog: rpmBaseCallLog,\n                  durationMs: rpm_duration_ms,\n                  observationReportId: rpmObservationReportId,\n                  reportingPeriodText: this.reportPeriodText,\n                  service: rpmService,\n                  modalKeys: ['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'],\n                  successNotificationKey: 'AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION',\n                  errorNotificationKey: 'AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION',\n                  response: rpm_response,\n                  submittedByUserProfileId: this.provider.profile_id\n                });\n                return _context.abrupt(\"return\", this.submitPromise);\n              case 80:\n                if (!(ccm_duration_ms !== void 0 && ccm_duration_ms !== null)) {\n                  _context.next = 89;\n                  break;\n                }\n                ccmService = patientServices.find(function (service) {\n                  return service.name === 'CCM';\n                });\n                if (ccmService) {\n                  _context.next = 86;\n                  break;\n                }\n                $log.error('saveCallLog: CCM service not found');\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                return _context.abrupt(\"return\", $q.reject('CCM service not found'));\n              case 86:\n                ccmBaseCallLog = angular.extend({}, baseCallLog, {\n                  service_id: ccmService.id\n                });\n                this.submitPromise = CallLogService.saveSingleCallLog({\n                  baseCallLog: ccmBaseCallLog,\n                  durationMs: ccm_duration_ms,\n                  observationReportId: ccmObservationReportId,\n                  reportingPeriodText: this.reportPeriodText,\n                  service: ccmService,\n                  modalKeys: ['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'],\n                  successNotificationKey: 'AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION',\n                  errorNotificationKey: 'AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION',\n                  response: ccm_response,\n                  submittedByUserProfileId: this.provider.profile_id\n                });\n                return _context.abrupt(\"return\", this.submitPromise);\n              case 89:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[59, 66]]);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onCallEnd = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error, minutes, ref, result, rpmTimeText, seconds, timesheet, translations, _this$call$duration;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.prev = 0;\n              $log.log('e-phone-controls:end');\n              $log.log('e-phone-controls:end', {\n                patient: this.patient,\n                provider: this.provider,\n                reportPeriodTxt: this.reportPeriodText\n              });\n              if (this.call.callTimerPromise) {\n                $log.log('e-phone-controls:call-status-timer');\n                $interval.cancel(this.call.callTimerPromise);\n                this.rpmTime = Math.floor(this.call.duration.as('seconds'));\n              }\n              if (!(this.rpmTime === 0)) {\n                _context2.next = 7;\n                break;\n              }\n              this.resetControls(true);\n              return _context2.abrupt(\"return\");\n            case 7:\n              // Keep the control till end of modal\n              rpmTimeText = '';\n              // Hopefully practitioners don't conduct call for hours\n              // Currently pluralization is not added. https://angular-translate.github.io/docs/#/guide/14_pluralization\n              // max out at 20 minutes of RPM time per call\n              _this$call$duration = this.call.duration;\n              minutes = _this$call$duration.minutes;\n              seconds = _this$call$duration.seconds;\n              if (this.rpmTime > 20 * 60) {\n                this.rpmTime = 20 * 60;\n                minutes = 20;\n                seconds = 0;\n              }\n              seconds = Math.floor(seconds);\n              if (minutes > 0) {\n                rpmTimeText += minutes + (minutes === 1 ? ' minute' : ' minutes');\n              }\n              if (seconds > 0) {\n                rpmTimeText += ' ' + seconds + (seconds === 1 ? ' second' : ' seconds');\n              }\n              // Use dual (RPM+CCM) flow only when patient has both RPM and CCM; otherwise single-service flow\n              if (!((ref = this.callLogOptions) != null ? ref.hasMultipleServices : void 0)) {\n                _context2.next = 20;\n                break;\n              }\n              _context2.next = 18;\n              return this.handleDualCallFlow(this.callLogOptions, rpmTimeText);\n            case 18:\n              _context2.next = 32;\n              break;\n            case 20:\n              _context2.next = 22;\n              return $translate(['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'], {\n                call_time: rpmTimeText,\n                reportPeriodText: this.reportPeriodText,\n                service: this.service\n              });\n            case 22:\n              translations = _context2.sent;\n              _context2.next = 25;\n              return ModalService.showModal({}, {\n                bodyText: translations['AUDIO_CALL.TIME_MODAL.BODY'],\n                headerText: translations['AUDIO_CALL.TIME_MODAL.HEADER'],\n                closeButtonText: translations['AUDIO_CALL.TIME_MODAL.NO'],\n                actionButtonText: translations['AUDIO_CALL.TIME_MODAL.YES']\n              }).result;\n            case 25:\n              result = _context2.sent;\n              timesheet = {\n                observation_report_id: this.patient.observation_report_id,\n                submitted_by_user_profile_id: this.provider.profile_id,\n                duration_secs: this.rpmTime\n              };\n              if (!result) {\n                _context2.next = 32;\n                break;\n              }\n              _context2.next = 30;\n              return TimesheetService.post(timesheet);\n            case 30:\n              NotificationsService.success('AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION', {\n                call_time: rpmTimeText,\n                reportPeriodText: this.reportPeriodText,\n                service: this.service\n              });\n              $rootScope.$broadcast('observationReport:reload', {\n                observationReportId: this.patient.observation_report_id,\n                patientUserProfileId: this.patient.id\n              });\n            case 32:\n              _context2.next = 39;\n              break;\n            case 34:\n              _context2.prev = 34;\n              _context2.t0 = _context2[\"catch\"](0);\n              error = _context2.t0;\n              $log.log('e-phone-controls:on-call-end:error', error);\n              NotificationsService.error('AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION');\n            case 39:\n              return _context2.abrupt(\"return\", this.resetControls(true));\n            case 40:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this, [[0, 34]]);\n      }));\n      this.hangUp = function () {\n        $log.log('e-phone-controls:hangup', this.call);\n        return TwilioService.hangup();\n      };\n      this.onCallConnected = function (data) {\n        var self, timeoutCallback;\n        $log.log('e-phone-controls:on-call-connected', data);\n        this.call.connection = data.connection;\n        this.call.startTime = luxon.DateTime.local();\n        self = this;\n        timeoutCallback = function timeoutCallback() {\n          self.call.callState = self.call.connection.status();\n          self.call.duration = luxon.Interval.fromDateTimes(self.call.startTime, luxon.DateTime.local()).toDuration(AUDIO_CALL_CONSTANTS.TIMER.DURATION_UNITS);\n          return self.call.duration_text = self.call.duration.toFormat(AUDIO_CALL_CONSTANTS.TIMER.FORMAT);\n        };\n        return this.call.callTimerPromise = $interval(timeoutCallback, AUDIO_CALL_CONSTANTS.TIMER.DELAY_MS);\n      };\n      this.onToggleMute = function (data) {\n        $log.log('e-phone-controls:on-toggle-mute', data);\n        return this.call.muted = data.mute;\n      };\n      this.toggleMute = function () {\n        return TwilioService.toggleMute(!this.call.muted);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-phone-controls/e-phone-controls.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatients\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} eUserProfiles patients\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @param {object} patientDashboard dashboard info for patients list\n   * @description\n   * Displays enterprise list of patients\n   */\n  angular.module('enterprise').component('ePatients', {\n    bindings: {\n      user: '=',\n      eUserProfiles: '<',\n      enterpriseCustomer: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      patientDashboard: '<',\n      providers: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('ePatients');\n        return $log.log('ePatients component loaded');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-patients/e-patients.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ePatientServices\n   */\n  angular.module('enterprise').component('ePatientServices', {\n    bindings: {\n      patientUserProfile: '<',\n      deviceTypes: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, PatientServicesService, ModelPatientServicesService, PatientServiceLogsService, NotificationsService, ShipmentsService) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var _this = this;\n        var otherService, ref, ref1, sl;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              $log = $log.getInstance('ePatientServices');\n              $log.log('here');\n              _context4.next = 4;\n              return PatientServicesService.getAll(this.patientUserProfile.enterprise_customer_id);\n            case 4:\n              this.patientServices = _context4.sent;\n              _context4.next = 7;\n              return PatientServiceLogsService.getAll(this.patientUserProfile.id);\n            case 7:\n              this.serviceLogs = _context4.sent;\n              _context4.next = 10;\n              return ModelPatientServicesService.getAll(this.patientUserProfile.id);\n            case 10:\n              this.modelPatientServices = _context4.sent;\n              if (this.modelPatientServices.length === 1) {\n                otherService = _.reject(this.patientServices, {\n                  id: this.modelPatientServices[0].patient_service_id\n                })[0];\n                $log.log(\"other service\");\n                $log.log(otherService);\n                // todo: start here, only get the latest log, make sure it matches the service removed\n                // if any of the removed at logs match the missing\n                sl = _.chain(this.serviceLogs).filter('removed_at').filter(function (l) {\n                  var ref;\n                  return ((ref = l.patient_service) != null ? ref.id : void 0) === otherService.id || l.model_patient_service_id === otherService.id;\n                }).sortBy('created_at', 'desc').first().value();\n                if (sl) {\n                  this.deactivatedLabel = \"\".concat(sl.patient_service.name, \" deactivated \").concat(luxon.DateTime.fromISO(sl.removed_at).toFormat('yyyy-LL-dd'));\n                }\n              }\n              $log.log('deviceTypes', this.deviceTypes);\n              this.modalPayload = {\n                patientServices: this.patientServices,\n                modelPatientServices: this.modelPatientServices,\n                serviceLogs: this.serviceLogs,\n                selectedDevices: _.map((ref = this.patientUserProfile) != null ? (ref1 = ref.enterprise_enrollment) != null ? ref1.shipments : void 0 : void 0, 'device_type_id') || [],\n                selectDevices: false,\n                deviceTypes: this.deviceTypes.data.data,\n                onShipmentAdd: function onShipmentAdd(item) {\n                  return console.log(item);\n                },\n                onShipmentRemove: function onShipmentRemove(item) {\n                  return console.log(item);\n                },\n                shipmentGroupBy: function shipmentGroupBy(item) {\n                  if (item.group_key === 'SINGLE') {\n                    return 'Not Eligible for Bundling';\n                  } else {\n                    return 'Eligible for Bundling';\n                  }\n                },\n                serviceToAdd: function serviceToAdd(s) {\n                  return !_.some(_this.modelPatientServices, {\n                    patient_service_id: s.id\n                  });\n                },\n                stopService: function () {\n                  var _stopService = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(s) {\n                    return regeneratorRuntime.wrap(function _callee$(_context) {\n                      while (1) switch (_context.prev = _context.next) {\n                        case 0:\n                          if (!confirm(\"Are you sure you want to \".concat(s.stop_date ? 'reactivate' : 'deactivate', \" \").concat(s.patient_service.name, \"?\"))) {\n                            _context.next = 8;\n                            break;\n                          }\n                          s.stop_date = s.stop_date ? null : luxon.DateTime.local().toFormat('yyyy-LL-dd');\n                          _context.next = 4;\n                          return ModelPatientServicesService.put(s.user_profile_id, s);\n                        case 4:\n                          _context.next = 6;\n                          return _this.refreshServices();\n                        case 6:\n                          NotificationsService.success(\"\".concat(s.patient_service.name, \" successfully \").concat(!s.stop_date ? 'added' : 'removed', \".\"));\n                          return _context.abrupt(\"return\", true);\n                        case 8:\n                          return _context.abrupt(\"return\", false);\n                        case 9:\n                        case \"end\":\n                          return _context.stop();\n                      }\n                    }, _callee);\n                  }));\n                  function stopService(_x) {\n                    return _stopService.apply(this, arguments);\n                  }\n                  return stopService;\n                }(),\n                startService: function () {\n                  var _startService = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(service) {\n                    var ret;\n                    return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                      while (1) switch (_context2.prev = _context2.next) {\n                        case 0:\n                          if (!(service.name === 'RPM')) {\n                            _context2.next = 4;\n                            break;\n                          }\n                          _this.modalPayload.selectDevices = true;\n                          _context2.next = 7;\n                          break;\n                        case 4:\n                          _context2.next = 6;\n                          return _this.addService(service);\n                        case 6:\n                          ret = _context2.sent;\n                        case 7:\n                          return _context2.abrupt(\"return\", ret);\n                        case 8:\n                        case \"end\":\n                          return _context2.stop();\n                      }\n                    }, _callee2);\n                  }));\n                  function startService(_x2) {\n                    return _startService.apply(this, arguments);\n                  }\n                  return startService;\n                }(),\n                submitRPMService: function () {\n                  var _submitRPMService = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n                    var service;\n                    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n                      while (1) switch (_context3.prev = _context3.next) {\n                        case 0:\n                          _this.modalPayload.selectDevices = false;\n                          service = _.find(_this.patientServices, {\n                            name: 'RPM'\n                          });\n                          _context3.next = 4;\n                          return _this.addService(service);\n                        case 4:\n                          return _context3.abrupt(\"return\", _context3.sent);\n                        case 5:\n                        case \"end\":\n                          return _context3.stop();\n                      }\n                    }, _callee3);\n                  }));\n                  function submitRPMService() {\n                    return _submitRPMService.apply(this, arguments);\n                  }\n                  return submitRPMService;\n                }()\n              };\n              return _context4.abrupt(\"return\", this.showServiceButton = true);\n            case 15:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this);\n      }));\n      this.addService = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(service) {\n          var d, i, len, ref, s;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                if (confirm(\"Are you sure you want to add \".concat(service.name, \"?\"))) {\n                  _context5.next = 2;\n                  break;\n                }\n                return _context5.abrupt(\"return\", false);\n              case 2:\n                if (service.name === 'RPM') {\n                  ref = this.modalPayload.selectedDevices;\n                  for (i = 0, len = ref.length; i < len; i++) {\n                    d = ref[i];\n                    ShipmentsService.post({\n                      enterprise_enrollment_id: this.patientUserProfile.enterprise_enrollment.id,\n                      device_type_id: d.id\n                    });\n                  }\n                }\n                s = {\n                  user_profile_id: this.patientUserProfile.id,\n                  patient_service_id: service.id,\n                  start_date: luxon.DateTime.local().toFormat('yyyy-LL-dd')\n                };\n                _context5.next = 6;\n                return ModelPatientServicesService.post(s.user_profile_id, s);\n              case 6:\n                _context5.next = 8;\n                return this.refreshServices();\n              case 8:\n                NotificationsService.success(\"\".concat(service.name, \" successfully added.\"));\n                return _context5.abrupt(\"return\", $uibModalInstance.close(false));\n              case 10:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        return function (_x3) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.refreshServices = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              _context6.next = 2;\n              return ModelPatientServicesService.getAll(this.patientUserProfile.id);\n            case 2:\n              this.modelPatientServices = _context6.sent;\n              this.modalPayload.modelPatientServices = this.modelPatientServices;\n              _context6.next = 6;\n              return PatientServiceLogsService.getAll(this.patientUserProfile.id);\n            case 6:\n              this.serviceLogs = _context6.sent;\n              return _context6.abrupt(\"return\", this.modalPayload.serviceLogs = this.serviceLogs);\n            case 8:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/e-patient-services/e-patient-services.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eObservationReports\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} currentReportingPeriod the currently open reporting period\n   * @param {object} observationReport the currently loaded observationReport\n   * @param {object} observationReports all reports for patient\n   * @description\n   * Displays enterprise observation reports table\n   */\n  angular.module('enterprise').component('eObservationReports', {\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      currentReportingPeriod: '<',\n      observationReport: '<',\n      observationReports: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, $rootScope, ObservationReportService, NotificationsService, PATIENT_SERVICES) {\n      this.reloadObservationReports = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, observationReports, ref, ref1, serviceName;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              $log.log('reloading observationReports list');\n              // Determine service type from current observationReport, default to RPM if not available\n              serviceName = ((ref = this.observationReport) != null ? (ref1 = ref.service) != null ? ref1.name : void 0 : void 0) || 'RPM';\n              _context.next = 5;\n              return ObservationReportService.getAll(this.user.user_profile.enterprise_customer_id, {\n                patient_user_profile_id: this.patientUserProfile.id,\n                '$service.name$': serviceName,\n                _sortField: 'created_at',\n                _sortDir: 'DESC'\n              });\n            case 5:\n              observationReports = _context.sent;\n              this.observationReports = observationReports;\n              this.showExportsColumn = this.shouldHaveExportsColumn();\n              return _context.abrupt(\"return\", $log.log('observationReports list reloaded', observationReports));\n            case 11:\n              _context.prev = 11;\n              _context.t0 = _context[\"catch\"](0);\n              error = _context.t0;\n              return _context.abrupt(\"return\", $log.error('error reloading observationReports list', error));\n            case 15:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[0, 11]]);\n      }));\n      this.shouldHaveExportsColumn = function () {\n        var i, len, observationReport, ref;\n        if (!this.observationReports) {\n          return false;\n        }\n        ref = this.observationReports;\n        for (i = 0, len = ref.length; i < len; i++) {\n          observationReport = ref[i];\n          if (observationReport != null ? observationReport.document_ehr_id : void 0) {\n            return true;\n          }\n        }\n        return false;\n      };\n      this.downloadObservationReport = function (observationReport) {\n        if (observationReport.service.name === 'CCM') {\n          return ObservationReportService.downloadCCMPDF(this.patientUserProfile, observationReport.reporting_period);\n        } else {\n          return ObservationReportService.getPDF(observationReport.reporting_period, observationReport.enterprise_customer_id, this.patientUserProfile, this.user.user_profile.timezone);\n        }\n      };\n      this.copyObservationReportLink = function (observationReport) {\n        var stateName;\n        stateName = observationReport.service.name === PATIENT_SERVICES.CCM ? 'enterprise.ccm_observation_report.goals' : 'enterprise.observation_report';\n        ObservationReportService.copyLinkToClipboard(stateName, {\n          user_profile_id: this.patientUserProfile.id,\n          observation_report_id: observationReport.id\n        });\n      };\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('eObservationReports');\n        $log.log('eObservationReports component loaded');\n        this.showExportsColumn = this.shouldHaveExportsColumn();\n        // Listen for observationReport:reload event to refresh observationReports list\n        this.reloadListener = $rootScope.$on('observationReport:reload', function (event, data) {\n          $log.log('observationReport:reload event received in eObservationReports', data);\n          // Reload if the event is for the current patient\n          if (data.patientUserProfileId === _this.patientUserProfile.id) {\n            return _this.reloadObservationReports();\n          }\n        });\n      };\n      this.$onDestroy = function () {\n        // Clean up event listener\n        if (this.reloadListener) {\n          return this.reloadListener();\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-observation-reports/e-observation-reports.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eObservationReport\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} timesheets the observationReport timesheets\n   * @param {object} patientSubscription Currently active patient subscription data\n   * @param {object} deactivationLogs All of the records of deactivation requests for this patient\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @param {object} deviceTypes all device_types\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @description\n   * Displays enterprise wearer/patientUserProfile details\n   */\n  angular.module('enterprise').component('eObservationReport', {\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      providerPatientAuthorizations: '<',\n      primaryProvider: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      observationReports: '<',\n      timesheets: '<',\n      threshold: '<',\n      patientSubscription: '<',\n      deactivationLogs: '<',\n      deactivationReasons: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      features: '<',\n      relationships: '<',\n      practiceSpecialties: '<',\n      graphConfig: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $filter, $window, $state, $stateParams, $q, ObservationReportService, EUserProfilesService, EUserProfileFilterService, NotificationsService, LookerService, $transitions, $translate, TimesheetService, EAlertThresholdsService, UserProfilesService, ProviderPatientAuthorizationsService, PER_PAGE, ReadingsShareService, PracticeSpecialtyService, ECustomersService, ModalService, GraphDataService, CarePlanService, PatientChartNavigationService, ObservationReportReloadHelper, SalesforceService, AdminService, AuthService, UserService, PatientChartPresenceService) {\n      var _this4 = this;\n      var createNextVersionGraphs;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var ambientChfReading, currentTimestamp, cycle_month, cycle_year, ecrfValidUntil, endDate, filter, hasAmbientChfWithSerial, hasNewChfAlert, latestReviewed, loggedInProfile, meta, modalResults, now, readingType, ref, ref1, ref2, ref3, ref4, ref5, startDate, translations, useOriginalUser, _this$observationRepo;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('eObservationReport');\n              $log.log('eObservationReport component loaded');\n              // Mix in shared reload methods\n              angular.extend(this, ObservationReportReloadHelper.getMethods());\n              $log.log('this.observationReport', this.observationReport);\n              $log.log('this.deviceTypes', this.deviceTypes);\n              this.othersActive = false;\n              this.presenceOwnerToken = null;\n              if ((ref = this.patientUserProfile) != null ? ref.id : void 0) {\n                this.presenceOwnerToken = PatientChartPresenceService.start(this.patientUserProfile.id, function (othersActive) {\n                  return _this.othersActive = othersActive;\n                });\n              }\n              $log.log('CHF Device available:', this.features.ambient_chf_device_available);\n              if (!$stateParams.observation_report_id) {\n                // PP-2701 - deeplink from claims to observation reports does NOT set the observation_report_id in the url\n                $state.params.observation_report_id = this.observationReport.id;\n                $state.transitionTo($state.current, $state.params, {\n                  reload: false\n                });\n              }\n              if (this.observationReport.service.name !== 'RPM') {\n                $state.go('enterprise.ccm_observation_report', {\n                  user_profile_id: $stateParams.user_profile_id,\n                  observation_report_id: $stateParams.observation_report_id\n                });\n              }\n              this.groupDropdownText = {\n                dynamicButtonTextSuffix: \"Assigned\",\n                buttonDefaultText: \"None\"\n              };\n              this.groupDropdownSettings = {\n                displayProp: 'name',\n                selectedToTop: true,\n                scrollableHeight: 'inherit',\n                scrollable: true,\n                checkBoxes: true,\n                showCheckAll: false,\n                showUncheckAll: false,\n                buttonClasses: \"form-control input-sm\"\n              };\n              this.supportRequestPayload = {};\n              this.supportRequestPayload.formData = {};\n              if (this.patientUserProfile) {\n                this.supportRequestPayload.formData.patientemail = this.patientUserProfile.email;\n                this.supportRequestPayload.formData.patientid = this.patientUserProfile.id;\n                this.supportRequestPayload.formData.patientname = (this.patientUserProfile.name_first || '') + ' ' + (this.patientUserProfile.name_last || '');\n                // When masquerading or user has multiple practices, use the originally logged-in user's name and email so support can contact the actual requestor (not the authorized/selected practice identity)\n                useOriginalUser = AdminService.isMasquerading() || UserService.hasMultipleEnterpriseCustomers(this.user);\n                if (useOriginalUser) {\n                  loggedInProfile = AuthService.currentUser();\n                  meta = loggedInProfile != null ? loggedInProfile.user_metadata : void 0;\n                  this.supportRequestPayload.formData.requester_name = (meta != null ? meta.name_first : void 0) || (meta != null ? meta.name_last : void 0) ? [meta.name_first, meta.name_last].filter(Boolean).join(' ') : (loggedInProfile != null ? loggedInProfile.name : void 0) || (this.user.user_profile.name_first || '') + ' ' + (this.user.user_profile.name_last || '');\n                  this.supportRequestPayload.formData.requestor_email = (loggedInProfile != null ? loggedInProfile.email : void 0) || this.user.user_profile.email;\n                } else {\n                  this.supportRequestPayload.formData.requester_name = (this.user.user_profile.name_first || '') + ' ' + (this.user.user_profile.name_last || '');\n                  this.supportRequestPayload.formData.requestor_email = this.user.user_profile.email;\n                }\n                this.supportRequestPayload.formData.practice_name = this.enterpriseCustomer.name;\n              }\n              $log.log('supportRequestPayload initialized', this.supportRequestPayload);\n              _context.next = 19;\n              return EUserProfilesService.updateTimezone(this.user.user_profile);\n            case 19:\n              // We always want to load patient report at the top of the page\n              $window.scrollTo(0, 0);\n              this.rpm_setup_notes = this.patientUserProfile.rpm_setup_notes;\n              this.chf_setup_notes = this.patientUserProfile.chf_setup_notes;\n              this.observationReportService = ObservationReportService; // referenced in view\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              this.getObservationReportsForPatient();\n              this.graphsToShow = ObservationReportService.getGraphTypesForDevices(this.deviceTypes.data.data, this.patientUserProfile.devices);\n              this.setActiveTab();\n              hasAmbientChfWithSerial = _.some(this.graphsToShow, function (graph) {\n                return graph.type === 'AMBIENT_CHF' && graph.serial !== null;\n              });\n              this.showChfSetup = hasAmbientChfWithSerial && this.patientUserProfile.chf_setup_date === null && this.features.ambient_chf_device_available.is_enabled;\n              this.isReportFromCurrentPeriod = true;\n              this.reportPeriodText = this.getReportingPeriodText();\n              this.patientPagingText = EUserProfileFilterService.getPagingString();\n              this.showBackToFilter = EUserProfileFilterService.hasFilters();\n              // get CCM service observation report id and care plan to be used for routing to the correct CCM patient chart\n              if (!(this.patientUserProfile.model_patient_services.length > 1)) {\n                _context.next = 40;\n                break;\n              }\n              _context.next = 36;\n              return PatientChartNavigationService.getCurrentObservationReport(this.user.user_profile.enterprise_customer_id, this.patientUserProfile.id, this.currentReportingPeriod.id, 'CCM');\n            case 36:\n              this.currentCCMObservationReport = _context.sent;\n              _context.next = 39;\n              return CarePlanService.get(this.patientUserProfile.id);\n            case 39:\n              this.carePlan = _context.sent;\n            case 40:\n              //get currently filtered service. if RPM, filter._service will be populated\n              filter = EUserProfileFilterService.getFilter();\n              this.isFilteredServiceRPM = filter != null ? filter._service : void 0;\n              // Set up sharing dialog\n              // Loading here rathing than in router so the content can render while this is calculated\n              this.practiceSpecialtiesOptions = _.map(this.practiceSpecialties, function (spec) {\n                return {\n                  label: spec.name,\n                  value: spec.id\n                };\n              });\n              this.isLoadingNextPatient = false;\n              // determine start and end dates\n              startDate = null;\n              endDate = null;\n              now = luxon.DateTime.local();\n              if (this.observationReport.reporting_period_id) {\n                _this$observationRepo = this.observationReport.reporting_period;\n                cycle_month = _this$observationRepo.cycle_month;\n                cycle_year = _this$observationRepo.cycle_year;\n                this.isReportFromCurrentPeriod = cycle_month === now.month && cycle_year === now.year;\n                $log.log('cycle_year', cycle_year);\n                $log.log('cycle_month', cycle_month);\n                if (this.isReportFromCurrentPeriod) {\n                  // current reporting period\n                  startDate = now.minus({\n                    months: 1\n                  });\n                  endDate = now; // older reporting period\n                } else {\n                  startDate = luxon.DateTime.local(cycle_year, cycle_month, 1);\n                  endDate = luxon.DateTime.local(cycle_year, cycle_month, 1).endOf('month');\n                }\n              } else if (this.observationReport.period_started_at) {\n                startDate = luxon.DateTime.fromJSDate(this.observationReport.period_started_at);\n                endDate = luxon.DateTime.fromJSDate(this.observationReport.period_ended_at);\n                this.isReportFromCurrentPeriod = startDate.month === now.month && startDate.year === now.year;\n              }\n              $log.log('startDate', startDate);\n              $log.log('endDate', endDate);\n              this.isReportEditable = this.getIsReportEditable(startDate);\n              this.initDatePicker(startDate, endDate);\n              this.setGraphDateRange(startDate, endDate);\n              this.previousPatientEhrId = this.patientUserProfile.patient_ehr_id;\n              $rootScope.windowSubTitle = \"\".concat(this.patientUserProfile.name_first, \" \").concat(this.patientUserProfile.name_last);\n              EUserProfilesService.getPrev(this.enterpriseCustomer.id, this.patientUserProfile.id).then(function (p) {\n                return _this.prevPatient = p;\n              });\n              EUserProfilesService.getNext(this.enterpriseCustomer.id, this.patientUserProfile.id).then(function (p) {\n                return _this.nextPatient = p;\n              });\n              // Listen for observationReport:reload event to refresh data after call logs/timesheets are created\n              this.reloadListener = $rootScope.$on('observationReport:reload', function (event, data) {\n                $log.log('observationReport:reload event received', data);\n                // Only reload if the event is for the current observation report\n                if (data.observationReportId === _this.observationReport.id) {\n                  _this.setGraphDateRange(startDate, endDate);\n                  return _this.reloadObservationReportData();\n                }\n              });\n              if (!$stateParams.alert_at) {\n                _context.next = 74;\n                break;\n              }\n              $log.log(\"Detected link from alert email, alert created at: \".concat($stateParams.alert_at));\n              $log.log(\"Checking date against threshold_id: \".concat((ref1 = this.threshold) != null ? ref1.id : void 0, \" - updated at: \").concat((ref2 = this.threshold) != null ? ref2.updated_at : void 0));\n              if (!($stateParams.alert_at < ((ref3 = this.threshold) != null ? ref3.updated_at : void 0))) {\n                _context.next = 74;\n                break;\n              }\n              $log.log('Threshold has been updated since the alert was sent! Alerting user');\n              readingType = function () {\n                var ref4, ref5, ref6;\n                switch (false) {\n                  case !((ref4 = $stateParams.alert_type) != null ? ref4.startsWith('bp') : void 0):\n                    return 'blood pressure ';\n                  case !((ref5 = $stateParams.alert_type) != null ? ref5.startsWith('bg') : void 0):\n                    return 'blood glucose ';\n                  case !((ref6 = $stateParams.alert_type) != null ? ref6.startsWith('bo') : void 0):\n                    return 'blood oxygen ';\n                  default:\n                    return '';\n                }\n              }();\n              _context.next = 66;\n              return $translate(['PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.CHANGED_THRESHOLD_MODAL.HEADER', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.CHANGED_THRESHOLD_MODAL.BODY', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.CHANGED_THRESHOLD_MODAL.CLOSE_BUTTON'], {\n                patientName: \"\".concat(this.patientUserProfile.name_first, \" \").concat(this.patientUserProfile.name_last),\n                readingType: readingType,\n                reading: $stateParams.reading // read and set the incoming reading text once PP-3435 is released\n              });\n            case 66:\n              translations = _context.sent;\n              modalResults = ModalService.showModal({}, {\n                headerText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.CHANGED_THRESHOLD_MODAL.HEADER'],\n                bodyText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.CHANGED_THRESHOLD_MODAL.BODY'],\n                closeButtonText: null,\n                actionButtonText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.CHANGED_THRESHOLD_MODAL.CLOSE_BUTTON']\n              });\n              _context.next = 70;\n              return modalResults.result;\n            case 70:\n              if (!_context.sent) {\n                _context.next = 74;\n                break;\n              }\n              $log.log('Modal closed showing threshold logs');\n              this.setActiveTab(this.graphsToShow.length + 1);\n              $window.scrollTo({\n                top: 1000,\n                left: 0,\n                behavior: 'smooth'\n              });\n            case 74:\n              // if the patient has a latest_device_reading of type AMBIENT_CHF and it last BTR reading\n              // is after the last rpm notes then display the survey link.  But only if the survey link\n              // hasn't expired.\n              this.heartfeltChfSurveyUrl = null;\n              latestReviewed = _.get(this.patientUserProfile, 'rpm_last_reviewed_at');\n              hasNewChfAlert = !_.isEmpty(this.patientUserProfile.latest_device_readings) && (!latestReviewed || _.some(this.patientUserProfile.latest_device_readings, function (reading) {\n                return reading.device_type.category === 'AMBIENT_CHF' && reading.last_beyond_threshold_reading_ts && reading.last_beyond_threshold_reading_ts > latestReviewed;\n              }));\n              if (hasNewChfAlert) {\n                ambientChfReading = _.find(this.patientUserProfile.latest_device_readings, function (reading) {\n                  return reading.device_type.category === 'AMBIENT_CHF';\n                });\n                if ((ambientChfReading != null ? (ref4 = ambientChfReading.last_beyond_threshold_reading_values) != null ? ref4.ecrf_link : void 0 : void 0) || (ambientChfReading != null ? (ref5 = ambientChfReading.last_beyond_threshold_reading_values[0]) != null ? ref5.ecrf_link : void 0 : void 0)) {\n                  ecrfValidUntil = ambientChfReading.last_beyond_threshold_reading_values.ecrf_valid_until || ambientChfReading.last_beyond_threshold_reading_values[0].ecrf_valid_until;\n                  currentTimestamp = Math.floor(Date.now() / 1000);\n                  if (ecrfValidUntil && currentTimestamp < ecrfValidUntil) {\n                    this.heartfeltChfSurveyUrl = ambientChfReading.last_beyond_threshold_reading_values.ecrf_link || ambientChfReading.last_beyond_threshold_reading_values[0].ecrf_link;\n                    this.chfSurveyExpirationTimestamp = new Date(ecrfValidUntil * 1000).toLocaleString();\n                  }\n                }\n              }\n            case 78:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.openChfSurvey = function () {\n        return $window.open(this.heartfeltChfSurveyUrl, '_blank');\n      };\n      this.getRefreshTooltip = function () {\n        return $filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.REFRESH_DATA_TOOLTIP');\n      };\n      this.getPDF = function () {\n        return ObservationReportService.getPDF(this.observationReport.reporting_period, this.patientUserProfile.enterprise_customer_id, $stateParams.user_profile_id, this.user.user_profile.timezone);\n      };\n      this.shareDisabled = function (payload) {\n        var ref, ref1;\n        $log.log(\"payload\", payload);\n        if ((payload != null ? payload.provider_name : void 0) && ((payload != null ? (ref = payload.fax_number) != null ? ref.length : void 0 : void 0) > 9 || (payload != null ? (ref1 = payload.email) != null ? ref1.length : void 0 : void 0) > 6)) {\n          if ((payload != null ? payload.relationship : void 0) || (payload != null ? payload.practice_specialty_id : void 0)) {\n            return false;\n          }\n        }\n        return true;\n      };\n      // can edit report if it has a reporting_period (not legacy) and local datetime is not more than 1 month later\n      this.getIsReportEditable = function (startDate) {\n        var canEditUntil;\n        if (this.observationReport.reporting_period_id) {\n          canEditUntil = startDate.plus({\n            months: 2 // 1 month for this period and 1 additional month\n          });\n          $log.log('canEditUntil', canEditUntil);\n          // Since startDate gets set to start of the month on init, we need to compare to the end of the month.\n          if (luxon.DateTime.local() < canEditUntil.endOf('month')) {\n            return true;\n          }\n        }\n      };\n      this.initDatePicker = function (startDate, endDate) {\n        var _this2 = this;\n        /*\n         * wrapper docs: https://github.com/fragaria/angular-daterangepicker\n         * docs: http://www.daterangepicker.com/\n        Internally the daterangepicker plugin converts all objects to moment.js objects.\n        As we are going to remove moment.js as a project dependency, we're using luxon and\n        adding the isValid method to fool the plugin into thinking the objects we pass in to\n        startDate and endDate are moment objects. After they're passed in, they're automatically\n        converted to moment.js objects and it can be assumed they are that type when referencing\n        them in datePicker event callback functions.\n         */\n        var jsEndDate, jsStartDate;\n        $log.log('initDatePicker', startDate, endDate);\n        jsStartDate = startDate.toJSDate();\n        jsEndDate = endDate.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        return this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          minDate: luxon.DateTime.fromJSDate(this.patientUserProfile.created_at).toJSDate(),\n          maxDate: endDate,\n          picker: null,\n          options: {\n            pickerClasses: 'custom-display',\n            // angular-daterangepicker extra\n            buttonClasses: 'btn',\n            applyButtonClasses: 'btn-primary',\n            cancelButtonClasses: 'btn-danger',\n            locale: {\n              applyLabel: 'Save',\n              cancelLabel: 'Cancel',\n              customRangeLabel: 'Custom range',\n              separator: ' - ',\n              format: \"YYYY-MM-DD\" // will give you 2017-01-06\n            },\n            // format: \"D-MMM-YY\", # will give you 6-Jan-17\n            // format: \"D-MMMM-YY\", # will give you 6-January-17\n            ranges: {\n              'Current Month': [luxon.DateTime.local().startOf('month').toJSDate(), luxon.DateTime.local().plus({\n                months: 1\n              }).endOf('month').toJSDate()],\n              'Last Month': [luxon.DateTime.local().startOf('month').minus({\n                months: 1\n              }).toJSDate(), luxon.DateTime.local().endOf('month').minus({\n                months: 1\n              }).plus({\n                days: 1\n              }).toJSDate()],\n              'Last 7 Days': [luxon.DateTime.local().minus({\n                days: 7\n              }).toJSDate(), luxon.DateTime.local().toJSDate()],\n              'Last 30 Days': [luxon.DateTime.local().minus({\n                days: 29\n              }).toJSDate(), luxon.DateTime.local().toJSDate()]\n            },\n            eventHandlers: {\n              'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n                $log.log('applying date range', event, picker, _this2.datePicker.date);\n                return _this2.setGraphDateRange(luxon.DateTime.fromJSDate(_this2.datePicker.date.startDate.toDate()), luxon.DateTime.fromJSDate(_this2.datePicker.date.endDate.toDate()));\n              }\n            }\n          }\n        };\n      };\n      this.getToolTipText = function () {\n        var cycleEndDate, cycleMonth, cycleMonthString, cycleStartDate, cycleYear;\n        if (!this.observationReport.reporting_period_id) {\n          // legacy observation report\n          cycleStartDate = luxon.DateTime.local(this.observationReport.period_started_at).toFormat('MMMM DD');\n          cycleEndDate = luxon.DateTime.local(this.observationReport.period_ended_at).toFormat('MMMM DD, YYYY');\n          return \"\".concat(cycleStartDate, \" - \").concat(cycleEndDate);\n        } else {\n          // new observation reports w/ reporting period\n          cycleMonth = this.observationReport.reporting_period.cycle_month;\n          cycleYear = this.observationReport.reporting_period.cycle_year;\n          cycleStartDate = luxon.DateTime.local(cycleYear, cycleMonth, 1);\n          cycleMonthString = cycleStartDate.toFormat('MMMM');\n          return \"\".concat(cycleMonthString, \" \").concat(cycleYear);\n        }\n      };\n      this.getReportingPeriodText = function () {\n        var cycleEndDate, cycleFirstDayOfMonth, cycleLastDayOfMonth, cycleMonth, cycleMonthString, cycleStartDate, cycleYear;\n        if (!this.observationReport.reporting_period_id) {\n          // legacy observation report\n          cycleStartDate = luxon.DateTime.local(this.observationReport.period_started_at).toFormat('MMMM DD');\n          cycleEndDate = luxon.DateTime.local(this.observationReport.period_ended_at).toFormat('MMMM DD, YYYY');\n          return \"\".concat(cycleStartDate, \" - \").concat(cycleEndDate);\n        } else {\n          // new observation reports w/ reporting period\n          cycleMonth = this.observationReport.reporting_period.cycle_month;\n          $log.log('cycleMonth', cycleMonth);\n          cycleYear = this.observationReport.reporting_period.cycle_year;\n          $log.log('cycleYear', cycleYear);\n          $log.log('luxon.DateTime', luxon.DateTime);\n          cycleStartDate = luxon.DateTime.local(cycleYear, cycleMonth, 1);\n          $log.log('cycleStartDate', cycleStartDate);\n          cycleMonthString = cycleStartDate.toFormat('MMMM');\n          $log.log('cycleMonthString', cycleMonthString);\n          cycleFirstDayOfMonth = cycleStartDate.startOf('month').day;\n          $log.log('cycleFirstDayOfMonth', cycleFirstDayOfMonth);\n          cycleLastDayOfMonth = cycleStartDate.endOf('month').day;\n          $log.log('cycleLastDayOfMonth', cycleLastDayOfMonth);\n          return \"\".concat(cycleMonthString, \" \").concat(cycleYear);\n        }\n      };\n      this.setGraphDateRange = function (startDate, endDate) {\n        var dateFormat;\n        $log.log('this.setGraphDateRange inputs', 'startDate', startDate, 'endDate', endDate);\n        dateFormat = 'yyyy/MM/dd';\n        if (startDate.constructor.name !== 'DateTime') {\n          throw new Error('setGraphDateRange startDate requires a Luxon DateTime object');\n        }\n        if (endDate.constructor.name !== 'DateTime') {\n          throw new Error('setGraphDateRange endDate requires a Luxon DateTime object');\n        }\n        /*\n        enforce date format that the looker api expects\n        For Devices graphs: Looker API is not inclusive of the endDate, add 1 day to include end date\n        */\n        this.graphDateRange = {\n          startDate: startDate.toFormat(dateFormat),\n          endDate: endDate.plus({\n            days: 1\n          }).toFormat(dateFormat)\n        };\n        $log.log('this.graphDateRange', this.graphDateRange);\n        this.rpmGraphDateRange = {\n          startDate: startDate.toFormat(dateFormat),\n          endDate: endDate.toFormat(dateFormat)\n        };\n        createNextVersionGraphs(this.patientUserProfile.id, this.graphDateRange.startDate, this.graphDateRange.endDate);\n        return $log.log('this.rpmGraphDateRange', this.rpmGraphDateRange);\n      };\n      this.postObservationReportNotes = function (payload) {\n        var _this3 = this;\n        var notes, observationReportId;\n        observationReportId = payload.observationReportId;\n        notes = payload.notes;\n        if (!notes) {\n          return $q.when();\n        }\n        return ObservationReportService.postObservationReportNotes(this.enterpriseCustomer.id, observationReportId, notes).then(function () {\n          _this3.observationReport.details = notes + _this3.observationReport.details;\n          return _this3.observationReport.details_tobeadded = null;\n        }).catch( /*#__PURE__*/function () {\n          var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(error) {\n            var modalError, noteCopy, patientName, ref, ref1, ref2, shouldCopy, translations;\n            return regeneratorRuntime.wrap(function _callee2$(_context2) {\n              while (1) switch (_context2.prev = _context2.next) {\n                case 0:\n                  $log.log('error saving observation report notes', error);\n                  patientName = [(ref = _this3.patientUserProfile) != null ? ref.name_first : void 0, (ref1 = _this3.patientUserProfile) != null ? ref1.name_last : void 0].filter(Boolean).join(' ');\n                  noteCopy = \"\".concat(patientName, \" (\").concat((ref2 = _this3.patientUserProfile) != null ? ref2.id : void 0, \")\\n\\n\").concat(notes);\n                  _context2.next = 5;\n                  return $translate(['PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.HEADER', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.BODY', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.CLOSE', 'PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.ACTION']);\n                case 5:\n                  translations = _context2.sent;\n                  _context2.prev = 6;\n                  _context2.next = 9;\n                  return ModalService.showModal({}, {\n                    headerText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.HEADER'],\n                    bodyText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.BODY'],\n                    closeButtonText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.CLOSE'],\n                    actionButtonText: translations['PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.ACTION']\n                  }).result;\n                case 9:\n                  shouldCopy = _context2.sent;\n                  if (shouldCopy) {\n                    ObservationReportService.copyTextToClipboard(noteCopy, 'PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.NOTES_COPIED');\n                  }\n                  _context2.next = 17;\n                  break;\n                case 13:\n                  _context2.prev = 13;\n                  _context2.t0 = _context2[\"catch\"](6);\n                  modalError = _context2.t0;\n                  $log.log('observation report notes failure modal dismissed', modalError);\n                case 17:\n                  return _context2.abrupt(\"return\", $q.reject(error));\n                case 18:\n                case \"end\":\n                  return _context2.stop();\n              }\n            }, _callee2, null, [[6, 13]]);\n          }));\n          return function (_x) {\n            return _ref2.apply(this, arguments);\n          };\n        }());\n      };\n      this.postObservationReport = function (data) {\n        // Combine the timesheet notes\n        if (data.model.details_tobeadded) {\n          data.model.details = data.model.details_tobeadded + data.model.details;\n        }\n        this.observationReport = data.model;\n        this.observationReport.user_profile_id = this.user.user_profile.id;\n        // DO NOT update the timesheet sum and count! this will be done in the timesheet hooks\n        delete this.observationReport.timesheet_sum;\n        delete this.observationReport.timesheet_count;\n        return ObservationReportService.put(this.enterpriseCustomer.id, this.observationReport).then(function (response) {\n          $log.log('postObservationReport', response);\n          return data.model.details_tobeadded = null;\n        }).catch(function (error) {\n          $log.log('error', error);\n          return NotificationsService.error('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.ERROR');\n        });\n      };\n      this.setActiveTab = function (index) {\n        var indexesWithSerials;\n        $log.log('this.graphsToShow', this.graphsToShow);\n        indexesWithSerials = _.map(_.keys(_.pickBy(this.graphsToShow, function (graph) {\n          return graph.serial !== null;\n        })), Number);\n        $log.log('indexesWithSerials', indexesWithSerials);\n        this.activeTab = index || indexesWithSerials[0];\n        $log.log('this.activeTab', this.activeTab);\n        if (indexesWithSerials.includes(this.activeTab)) {\n          return this.getActiveTabKeyForComponentBuilder(this.activeTab);\n        }\n      };\n      // computed property: the active tab key of the full observation report template -\n      // this gets passed down to the template builder and it's components so we know what template item strings to show\n      // and which one's to edit/update/delete\n      this.getActiveTabKeyForComponentBuilder = function (activeTab) {\n        var activeTabName;\n        activeTabName = this.graphsToShow[activeTab].type;\n        this.activeKeyForComponentBuilder = activeTabName;\n        return $log.log('this.activeKeyForComponentBuilder', this.activeKeyForComponentBuilder);\n      };\n      this.getObservationReportsForPatient = function () {\n        var error;\n        try {\n          $log.log('getObservationReportsForPatient');\n          $log.log('this.observationReports', this.observationReports);\n          this.currentReport = _.find(this.observationReports, {\n            reporting_period_id: this.currentReportingPeriod.id\n          });\n          return $log.log('this.currentReport', this.currentReport);\n        } catch (error1) {\n          error = error1;\n          return $log.log('error', error);\n        }\n      };\n      this.$onDestroy = function () {\n        $log.log('destroyed');\n        PatientChartPresenceService.stop(this.presenceOwnerToken);\n        // Clean up event listener\n        if (this.reloadListener) {\n          return this.reloadListener();\n        }\n      };\n      // we only display the prev/next arrows if the prev/next patient is ready\n      this.hasNext = function () {\n        var ref;\n        return !this.isLoadingNextPatient && EUserProfileFilterService.hasNext() && ((ref = this.nextPatient) != null ? ref.id : void 0);\n      };\n      this.hasPrev = function () {\n        var ref;\n        return !this.isLoadingNextPatient && EUserProfileFilterService.hasPrev() && ((ref = this.prevPatient) != null ? ref.id : void 0);\n      };\n      // TODO: is there a cleaner way to define this? isNext variable name feels weird\n      this.goToNextPatient = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(isNext) {\n          var patient;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                if (!this.isLoadingNextPatient) {\n                  _context3.next = 2;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 2:\n                this.isLoadingNextPatient = true;\n                this.patientsCount = EUserProfileFilterService.getCount();\n                // update index and count\n                EUserProfileFilterService.setCount(this.patientsCount);\n                EUserProfileFilterService.setIndex(EUserProfileFilterService.getIndex() + (isNext ? 1 : -1));\n                this.patientPagingText = EUserProfileFilterService.getPagingString();\n                patient = isNext ? this.nextPatient : this.prevPatient;\n                _context3.next = 10;\n                return PatientChartNavigationService.goToNextPatientProfile(patient, this.currentReportingPeriod.id, this.user);\n              case 10:\n                return _context3.abrupt(\"return\", _context3.sent);\n              case 11:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.next = function () {\n        $log.log('next');\n        return this.goToNextPatient(true);\n      };\n      this.prev = function () {\n        $log.log('prev');\n        return this.goToNextPatient(false);\n      };\n      this.submitAndNext = function () {\n        return this.goToNextPatient(true);\n      };\n      //##### RPM Setup Complete\n      this.onRPMSetup = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(note) {\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                this.rpm_setup_notes = note;\n                $log.log('RPM Complete Setup', {\n                  id: this.patientUserProfile.id,\n                  rpm_setup_date: new Date(),\n                  rpm_setup_notes: this.rpm_setup_notes\n                });\n                this.patientUserProfile.rpm_setup_notes = this.rpm_setup_notes;\n                this.patientUserProfile.rpm_setup_date = new Date();\n                _context4.next = 6;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  rpm_setup_notes: this.rpm_setup_notes,\n                  rpm_setup_date: this.patientUserProfile.rpm_setup_date\n                });\n              case 6:\n                return _context4.abrupt(\"return\", $state.go($state.current, $state.params, {\n                  reload: true\n                }));\n              case 7:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this);\n        }));\n        return function (_x3) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.onCHFSetup = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(note) {\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                this.chf_setup_notes = note;\n                $log.log('CHF Complete Setup', {\n                  id: this.patientUserProfile.id,\n                  chf_setup_date: new Date(),\n                  chf_setup_notes: this.chf_setup_notes\n                });\n                this.patientUserProfile.chf_setup_notes = this.chf_setup_notes;\n                this.patientUserProfile.chf_setup_date = new Date();\n                _context5.next = 6;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  chf_setup_notes: this.chf_setup_notes,\n                  chf_setup_date: this.patientUserProfile.chf_setup_date\n                });\n              case 6:\n                return _context5.abrupt(\"return\", $state.go($state.current, $state.params, {\n                  reload: true\n                }));\n              case 7:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        return function (_x4) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      //##### RPM Setup Notes Templates\n      this.onCHFNoteEdited = function (note) {\n        if (this.patientUserProfile.chf_setup_date) {\n          return;\n        }\n        //##### text-angular send undefined on empty editor\n        this.chf_setup_notes = note || null;\n        return this.saveDraftCHFNotes();\n      };\n      this.onNoteEdited = function (note) {\n        if (this.patientUserProfile.rpm_setup_date) {\n          return;\n        }\n        //##### text-angular send undefined on empty editor\n        this.rpm_setup_notes = note || null;\n        return this.saveDraftRpmNotes();\n      };\n      this.onCHFNoteSelected = function (note) {\n        // Keeps the db from being updated with a blank string. retaining null.\n        if (this.chf_setup_notes !== null) {\n          this.chf_setup_notes = \"\".concat(this.chf_setup_notes, \" \").concat(note);\n        } else {\n          // if note is empty then explicitly set to null\n          this.chf_setup_notes = note || null;\n        }\n        return this.saveDraftCHFNotes();\n      };\n      this.onNoteSelected = function (note) {\n        // Keeps the db from being updated with a blank string. retaining null.\n        if (this.rpm_setup_notes !== null) {\n          this.rpm_setup_notes = \"\".concat(this.rpm_setup_notes, \" \").concat(note);\n        } else {\n          // if note is empty then explicitly set to null\n          this.rpm_setup_notes = note || null;\n        }\n        return this.saveDraftRpmNotes();\n      };\n      this.onCHFNoteTemplatesChanged = /*#__PURE__*/function () {\n        var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(notes) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee6$(_context6) {\n            while (1) switch (_context6.prev = _context6.next) {\n              case 0:\n                if (!this.enterpriseCustomer.rpm_setup_notes_template) {\n                  this.enterpriseCustomer.rpm_setup_notes_template = {};\n                }\n                this.enterpriseCustomer.rpm_setup_notes_template['chf_setup_notes'] = notes;\n                _context6.prev = 2;\n                _context6.next = 5;\n                return ECustomersService.put({\n                  id: this.enterpriseCustomer.id,\n                  rpm_setup_notes_template: this.enterpriseCustomer.rpm_setup_notes_template\n                });\n              case 5:\n                return _context6.abrupt(\"return\", _context6.sent);\n              case 8:\n                _context6.prev = 8;\n                _context6.t0 = _context6[\"catch\"](2);\n                error = _context6.t0;\n                $log.log(error, \"CHF Notes Edit\");\n                return _context6.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage));\n              case 13:\n              case \"end\":\n                return _context6.stop();\n            }\n          }, _callee6, this, [[2, 8]]);\n        }));\n        return function (_x5) {\n          return _ref6.apply(this, arguments);\n        };\n      }();\n      this.openPrintVersion = function () {\n        return $window.open(\"/#/account/patient-chart/\".concat(this.patientUserProfile.id, \"/?startDate=\").concat(this.graphDateRange.startDate, \"&endDate=\").concat(this.graphDateRange.endDate));\n      };\n      this.onNoteTemplatesChanged = /*#__PURE__*/function () {\n        var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(notes) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee7$(_context7) {\n            while (1) switch (_context7.prev = _context7.next) {\n              case 0:\n                if (!this.enterpriseCustomer.rpm_setup_notes_template) {\n                  this.enterpriseCustomer.rpm_setup_notes_template = {};\n                }\n                this.enterpriseCustomer.rpm_setup_notes_template['rpm_setup_notes'] = notes;\n                _context7.prev = 2;\n                _context7.next = 5;\n                return ECustomersService.put({\n                  id: this.enterpriseCustomer.id,\n                  rpm_setup_notes_template: this.enterpriseCustomer.rpm_setup_notes_template\n                });\n              case 5:\n                return _context7.abrupt(\"return\", _context7.sent);\n              case 8:\n                _context7.prev = 8;\n                _context7.t0 = _context7[\"catch\"](2);\n                error = _context7.t0;\n                $log.log(error);\n                return _context7.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage));\n              case 13:\n              case \"end\":\n                return _context7.stop();\n            }\n          }, _callee7, this, [[2, 8]]);\n        }));\n        return function (_x6) {\n          return _ref7.apply(this, arguments);\n        };\n      }();\n      this.openPrintVersion = function () {\n        return $window.open(\"/#/account/patient-chart/\".concat(this.patientUserProfile.id, \"/?startDate=\").concat(this.graphDateRange.startDate, \"&endDate=\").concat(this.graphDateRange.endDate));\n      };\n      this.saveDraftCHFNotes = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee8$(_context8) {\n          while (1) switch (_context8.prev = _context8.next) {\n            case 0:\n              _context8.prev = 0;\n              this.patientUserProfile.chf_setup_notes = this.chf_setup_notes;\n              _context8.next = 4;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                chf_setup_notes: this.chf_setup_notes\n              });\n            case 4:\n              return _context8.abrupt(\"return\", _context8.sent);\n            case 7:\n              _context8.prev = 7;\n              _context8.t0 = _context8[\"catch\"](0);\n              error = _context8.t0;\n              $log.log('CHF setup notes save draft error.', error);\n              //       Created conditional here as we still want to capture error that isn't because of char length reached.\n              if (!error.data.data.message.includes(\"value too long\")) {\n                _context8.next = 15;\n                break;\n              }\n              return _context8.abrupt(\"return\", NotificationsService.error('PORTAL.ENTERPRISE.CHF_SETUP.TOASTS.ERROR'));\n            case 15:\n              return _context8.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n            case 16:\n            case \"end\":\n              return _context8.stop();\n          }\n        }, _callee8, this, [[0, 7]]);\n      }));\n      this.submitSupportRequest = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9() {\n        var error, ref, ref1, ref2, ref3;\n        return regeneratorRuntime.wrap(function _callee9$(_context9) {\n          while (1) switch (_context9.prev = _context9.next) {\n            case 0:\n              $log.log('submitSupportRequest payload', this.supportRequestPayload);\n              _context9.prev = 1;\n              _context9.next = 4;\n              return SalesforceService.createSupportRequest(((ref = this.supportRequestPayload) != null ? ref.formData : void 0) || this.supportRequestPayload);\n            case 4:\n              return _context9.abrupt(\"return\", NotificationsService.success('Support request submitted successfully'));\n            case 7:\n              _context9.prev = 7;\n              _context9.t0 = _context9[\"catch\"](1);\n              error = _context9.t0;\n              $log.log('Support request submission error', error);\n              return _context9.abrupt(\"return\", NotificationsService.error(((ref1 = error.data) != null ? ref1.errorMessage : void 0) || ((ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.errorMessage : void 0 : void 0) || 'Failed to submit support request'));\n            case 12:\n            case \"end\":\n              return _context9.stop();\n          }\n        }, _callee9, this, [[1, 7]]);\n      }));\n      this.saveDraftRpmNotes = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee10$(_context10) {\n          while (1) switch (_context10.prev = _context10.next) {\n            case 0:\n              _context10.prev = 0;\n              this.patientUserProfile.rpm_setup_notes = this.rpm_setup_notes;\n              _context10.next = 4;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                rpm_setup_notes: this.rpm_setup_notes\n              });\n            case 4:\n              return _context10.abrupt(\"return\", _context10.sent);\n            case 7:\n              _context10.prev = 7;\n              _context10.t0 = _context10[\"catch\"](0);\n              error = _context10.t0;\n              $log.log('RPM  setup notes save draft error.', error);\n              //       Created conditional here as we still want to capture error that isn't because of char length reached.\n              if (!error.data.data.message.includes(\"value too long\")) {\n                _context10.next = 15;\n                break;\n              }\n              return _context10.abrupt(\"return\", NotificationsService.error('PORTAL.ENTERPRISE.RPM_SETUP.TOASTS.ERROR'));\n            case 15:\n              return _context10.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n            case 16:\n            case \"end\":\n              return _context10.stop();\n          }\n        }, _callee10, this, [[0, 7]]);\n      }));\n      createNextVersionGraphs = /*#__PURE__*/function () {\n        var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(patientUserProfileId, startDate, endDate) {\n          var base, data, error, graph, i, j, len, len1, name, ref, ref1, results;\n          return regeneratorRuntime.wrap(function _callee11$(_context11) {\n            while (1) switch (_context11.prev = _context11.next) {\n              case 0:\n                _this4.nextVersionGraphsToShow = _toConsumableArray(_this4.graphsToShow);\n                ref = _this4.nextVersionGraphsToShow;\n                // remove config to show the loading spinner\n                for (i = 0, len = ref.length; i < len; i++) {\n                  graph = ref[i];\n                  graph.config = null;\n                }\n                _context11.next = 5;\n                return GraphDataService.getData(patientUserProfileId, {\n                  start_date: startDate,\n                  end_date: endDate,\n                  tz: _this4.user.user_profile.timezone\n                });\n              case 5:\n                data = _context11.sent;\n                ref1 = _this4.nextVersionGraphsToShow;\n                results = [];\n                for (j = 0, len1 = ref1.length; j < len1; j++) {\n                  graph = ref1[j];\n                  try {\n                    results.push(graph.config = typeof (base = _this4.graphConfig)[name = graph.type] === \"function\" ? base[name](data.readings, data.meta) : void 0);\n                  } catch (error1) {\n                    error = error1;\n                    $log.info('error in ', graph.type);\n                    results.push($log.info(error));\n                  }\n                }\n                return _context11.abrupt(\"return\", results);\n              case 10:\n              case \"end\":\n                return _context11.stop();\n            }\n          }, _callee11);\n        }));\n        return function createNextVersionGraphs(_x7, _x8, _x9) {\n          return _ref11.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-observation-report/e-observation-report.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eNotes\n   * @restrict E\n   * @param {string} header text displayed header\n   * @param {array} notes array of note templates\n   * @param {string} note model\n   * @param {function} onSelect callback when a note is clicked\n   * @param {function} onChange callback when template array is changed (added/updated/deleted)\n   * @description\n   * Display the template list and publish\n   * 1. when note is selected\n   * 2. when templates array is changed (updated/added/deleted)\n   */\n  angular.module('enterprise').component('eNotes', {\n    bindings: {\n      header: '<',\n      notes: '<',\n      onSelect: '&',\n      onChange: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, ModalService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eNotes');\n        $log.log('eNotes component Loaded');\n        if (!this.notes) {\n          return this.notes = [];\n        }\n      };\n      this.publishChangedTemplates = function () {\n        if (this.onChange) {\n          return this.onChange({\n            notes: this.notes\n          });\n        }\n      };\n      this.onNoteSelected = function (note) {\n        if (this.onSelect) {\n          return this.onSelect({\n            note: note\n          });\n        }\n      };\n      this.onDeleteNote = function (index) {\n        this.notes.splice(index, 1);\n        return this.publishChangedTemplates();\n      };\n      this.onNoteTemplateAdded = function (note) {\n        return this.notes.push(note);\n      };\n      this.onNoteTemplateUpdated = function (note, index) {\n        return this.notes.splice(index, 1, note);\n      };\n      this.onEditOrCreate = function (note, index) {\n        var _this = this;\n        var createNewComponent, modalDefault, modalHeaderText;\n        createNewComponent = false;\n        modalHeaderText = $filter('translate')('PORTAL.ENTERPRISE.TEMPLATES.EDIT');\n        if (!note) {\n          createNewComponent = true;\n          modalHeaderText = $filter('translate')('PORTAL.ENTERPRISE.TEMPLATES.CREATE');\n        }\n        modalDefault = {\n          controller: function controller($scope, $uibModalInstance, $log) {\n            $scope.modalOptions = {\n              header: modalHeaderText,\n              item: note,\n              index: index,\n              close: function close(result) {\n                $uibModalInstance.close(false);\n              },\n              ok: function ok(item) {\n                var error, submitPromise;\n                if (createNewComponent) {\n                  _this.onNoteTemplateAdded(item);\n                } else {\n                  _this.onNoteTemplateUpdated(item, index);\n                }\n                try {\n                  submitPromise = _this.publishChangedTemplates();\n                  $uibModalInstance.close(false);\n                } catch (error1) {\n                  error = error1;\n                  $log.log(error);\n                  NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n                }\n                return submitPromise;\n              }\n            };\n          },\n          templateUrl: 'app/components/portal/enterprise/e-notes/e-notes-edit-template.html'\n        };\n        return ModalService.showModal(modalDefault);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-notes/e-notes.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc component\n   * @name enterprise.component:eFive9Call\n   * @description\n   * Patient-context Five9 click-to-call control for the frontend MVP.\n   */\n  angular.module('enterprise').component('eFive9Call', {\n    bindings: {\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      user: '<',\n      features: '<',\n      observationReport: '<',\n      reportingPeriodText: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $scope, env, Five9Service, NotificationsService) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('eFive9Call');\n        this.status = 'idle';\n        this.phoneNumbers = [];\n        this.five9State = Five9Service.getState();\n        this.updatePhones();\n        this.syncBusyFromRuntime();\n        if (this.isCallEnabled()) {\n          Five9Service.initialize().catch(function (error) {\n            return _this.status = 'failed';\n          });\n        }\n        Five9Service.subscribe('five9:stateChanged', $scope, function (event, state) {\n          _this.five9State = state;\n          return _this.syncBusyFromRuntime();\n        });\n        Five9Service.subscribe('five9:callStarted', $scope, function () {\n          return _this.status = 'calling';\n        });\n        Five9Service.subscribe('five9:callFinished', $scope, function () {\n          return _this.status = 'idle';\n        });\n        Five9Service.subscribe('five9:cavApplied', $scope, function () {\n          return _this.status = 'metadata_attached';\n        });\n        Five9Service.subscribe('five9:cavFailed', $scope, function (event, data) {\n          return _this.status = 'failed';\n        });\n        return Five9Service.subscribe('five9:callFailed', $scope, function () {\n          return _this.status = 'failed';\n        });\n      };\n      this.$onChanges = function (changes) {\n        if (changes.patientUserProfile) {\n          return this.updatePhones();\n        }\n      };\n      this.isCallEnabled = function () {\n        var ref, ref1;\n        return !!((ref = this.features) != null ? (ref1 = ref.five9_patient_click_to_call_enabled) != null ? ref1.is_enabled : void 0 : void 0);\n      };\n      this.isSmsEnabled = function () {\n        return this.isCallEnabled() && Five9Service.isSmsEnabled();\n      };\n      this.syncBusyFromRuntime = function () {\n        var ref, status;\n        status = (ref = this.five9State) != null ? ref.status : void 0;\n        if (status === 'calling' || status === 'call_requesting' || status === 'wrap_up') {\n          if (this.status === 'idle' || this.status === 'metadata_attached') {\n            return this.status = 'calling';\n          }\n        } else if (status === 'ready' && (this.status === 'calling' || this.status === 'initiating')) {\n          return this.status = 'idle';\n        }\n      };\n      this.updatePhones = function () {\n        var patient;\n        this.phoneNumbers = [];\n        patient = this.patientUserProfile;\n        if (!patient) {\n          return;\n        }\n        if (patient.phone_1_number) {\n          this.phoneNumbers.push({\n            type: patient.phone_1_type,\n            number: patient.phone_1_number\n          });\n        }\n        if (patient.phone_2_number) {\n          this.phoneNumbers.push({\n            type: patient.phone_2_type,\n            number: patient.phone_2_number\n          });\n        }\n        if (patient.phone_3_number) {\n          return this.phoneNumbers.push({\n            type: patient.phone_3_type,\n            number: patient.phone_3_number\n          });\n        }\n      };\n      this.validPhone = function (phone) {\n        var digits;\n        digits = String((phone != null ? phone.number : void 0) || '').replace(/\\D/g, '');\n        return digits.length >= 7;\n      };\n      this.validSmsPhone = function (phone) {\n        return (phone != null ? phone.type : void 0) === 'm' && this.validPhone(phone);\n      };\n      this.isBusy = function () {\n        var ref, runtimeBusy;\n        runtimeBusy = ['call_requesting', 'calling', 'wrap_up'].indexOf((ref = this.five9State) != null ? ref.status : void 0) >= 0;\n        return runtimeBusy || ['initiating', 'calling'].indexOf(this.status) >= 0;\n      };\n      this.buttonDisabled = function () {\n        var activeCall, ref;\n        activeCall = ['call_requesting', 'calling'].indexOf((ref = this.five9State) != null ? ref.status : void 0) >= 0;\n        return !this.isCallEnabled() || activeCall || this.status === 'initiating';\n      };\n      this.phoneDisabled = function (phone) {\n        return this.isBusy() || !this.validPhone(phone);\n      };\n      this.callDisabled = function (phone) {\n        return !Five9Service.isReady() || this.phoneDisabled(phone);\n      };\n      this.textDisabled = function (phone) {\n        return !this.isSmsEnabled() || !Five9Service.isReady() || !this.validSmsPhone(phone);\n      };\n      this.statusLabel = function () {\n        switch (this.status) {\n          case 'initiating':\n            return 'Starting Five9 call...';\n          case 'calling':\n            return 'Calling with Five9...';\n          case 'metadata_attached':\n            return 'Five9 metadata attached';\n          case 'failed':\n            return 'Five9 call failed';\n          default:\n            return this.five9StatusLabel();\n        }\n      };\n      this.five9StatusLabel = function () {\n        var ref;\n        switch ((ref = this.five9State) != null ? ref.status : void 0) {\n          case 'disabled':\n            return 'Five9 disabled';\n          case 'sdk_loading':\n            return 'Loading Five9 SDK';\n          case 'sdk_loaded':\n            return 'Five9 SDK loaded';\n          case 'extension_detecting':\n            return 'Detecting Five9 extension';\n          case 'extension_detected':\n            return 'Five9 extension detected';\n          case 'authentication_required':\n            return 'Sign in to Five9';\n          case 'runtime_connecting':\n          case 'connecting':\n          case 'reconnecting':\n            return 'Connecting to Five9';\n          case 'ready':\n            return 'Call with Five9';\n          case 'calling':\n          case 'call_requesting':\n            return 'Calling with Five9';\n          case 'wrap_up':\n            return 'Five9 wrap-up in progress';\n          case 'unsupported_runtime':\n            return 'Five9 extension unavailable';\n          case 'failed':\n            return 'Five9 connection failed';\n          default:\n            return 'Five9 unavailable';\n        }\n      };\n      this.buildCrmObject = function (patientSnapshot) {\n        return {\n          id: patientSnapshot.id,\n          type: 'ProviderPortalPatient',\n          label: 'Provider Portal Patient',\n          name: patientSnapshot.id,\n          isWho: true,\n          isWhat: false\n        };\n      };\n      this.startText = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(phone) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (!this.textDisabled(phone)) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 2:\n                Five9Service.openPanel('sms');\n                _context.prev = 3;\n                _context.next = 6;\n                return Five9Service.suggestPatientSmsNumber(phone.number, {\n                  crmObject: this.buildCrmObject({\n                    id: this.patientUserProfile.id\n                  })\n                });\n              case 6:\n                return _context.abrupt(\"return\", NotificationsService.success('Patient mobile is ready in Five9. Open Make a Call, select it, then choose Send SMS. Five9 cannot open SMS mode directly from Provider Portal.'));\n              case 9:\n                _context.prev = 9;\n                _context.t0 = _context[\"catch\"](3);\n                error = _context.t0;\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[3, 9]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.startCall = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(phone) {\n          var enterpriseSnapshot, error, patientSnapshot, phoneSnapshot, ref, userSnapshot;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!(this.buttonDisabled() || this.callDisabled(phone))) {\n                  _context2.next = 2;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 2:\n                this.status = 'initiating';\n                Five9Service.openPanel();\n                patientSnapshot = angular.copy(this.patientUserProfile);\n                userSnapshot = angular.copy(this.user);\n                enterpriseSnapshot = angular.copy(this.enterpriseCustomer);\n                phoneSnapshot = angular.copy(phone);\n                _context2.prev = 8;\n                if (env.name !== 'prod' && ((ref = env.five9) != null ? ref.diagnosticsEnabled : void 0)) {\n                  $log.info('Five9 call button clicked', {\n                    patientUserProfileId: patientSnapshot != null ? patientSnapshot.id : void 0,\n                    phoneType: phoneSnapshot != null ? phoneSnapshot.type : void 0\n                  });\n                }\n                _context2.next = 12;\n                return Five9Service.initialize();\n              case 12:\n                _context2.next = 14;\n                return Five9Service.startPatientCall(phoneSnapshot.number, {\n                  patientUserProfile: patientSnapshot,\n                  user: userSnapshot,\n                  enterpriseCustomer: enterpriseSnapshot,\n                  crmObject: this.buildCrmObject(patientSnapshot)\n                });\n              case 14:\n                return _context2.abrupt(\"return\", _context2.sent);\n              case 17:\n                _context2.prev = 17;\n                _context2.t0 = _context2[\"catch\"](8);\n                error = _context2.t0;\n                return _context2.abrupt(\"return\", this.status = 'failed');\n              case 21:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[8, 17]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-five9-call/e-five9-call.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eEnrollments\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} enrollments the pre-enrollments for the enterprise customer\n   * @description\n   * Displays enterprise admin enrollments (wearers pre-enrolled by enterprise customer)\n   */\n  angular.module('enterprise').component('eEnrollments', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '<',\n      enrollments: '<',\n      addressTypes: '<',\n      relationships: '<',\n      deviceTypes: '<',\n      enrollmentStatuses: '<',\n      primaryProviders: '<',\n      latestSignedContractState: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(env, $log, $window, $state, NotificationsService, IB_PHONE, IB_SUPPORT_EMAIL, IntercomService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eEnrollments');\n        $log.log('eEnrollments component loaded', this.enrollments);\n        this.disableEnrollments = _.keys(this.latestSignedContractState).includes('skip_based_on_bypass'); // they have bypassed a contract, disable button\n        this.supportPhone = IB_PHONE.NUMBER_FORMATTED;\n        this.supportEmail = IB_SUPPORT_EMAIL.EMAIL;\n      };\n      this.createEnrollmentRequest = function () {\n        IntercomService.trackEvent(env.intercom.events.enrollment_request_created);\n        return $state.go('enterprise.enrollments-add');\n      };\n      this.onVisitSignature = function (enrollment) {\n        return $window.location.href = enrollment.pactsafe_request.signers[0].request_url;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-enrollments/e-enrollments.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eDeactivatedPatients\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} eUserProfiles patients\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @param {object} patientDashboard dashboard info for patients list\n   * @description\n   * Displays enterprise list of patients\n   */\n  angular.module('enterprise').component('eDeactivatedPatients', {\n    bindings: {\n      user: '=',\n      eUserProfiles: '<',\n      enterpriseCustomer: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      patientDashboard: '<',\n      providers: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eDeactivatedPatients');\n        return $log.log('eDeactivatedPatients component loaded');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-deactivated-patients/e-deactivated-patients.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eDashboard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} stripeCustomer stripe customer object\n   * @description\n   * Displays enterprise admin dashboard\n   */\n  angular.module('enterprise').component('eDashboard', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '<',\n      stripeCustomer: '<',\n      enterpriseCustomerTasks: '<',\n      outcomesDashboard: '<',\n      enterpriseCustomerEnrollments: '<',\n      currentReportingPeriod: '<',\n      enterpriseCustomerTotalEnrollmentCount: '<',\n      enterpriseCustomerIncompleteMissingRequired: '<',\n      enterpriseCustomerCompleteConsentedShipped: '<',\n      enterpriseCustomerCompleteRpmCount: '<',\n      latestSignedContractState: '<',\n      eUserProfiles: '<',\n      offices: '<',\n      cptFees: '<',\n      patientDashboard: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $window, $filter, Restangular, NotificationsService, ModalService, EUserProfilesService, AdminService) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var CENTS_IN_DOLLAR, EQUIPMENT_MULTIPLIER, MONTHS_IN_YEAR, code99453, code99454, code99457, latestSignedContractState, revenueAllServices, revenueMonitoring;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('eDashboard');\n              $log.log('eDashboard component loaded');\n              latestSignedContractState = Restangular.stripRestangular(this.latestSignedContractState);\n              $log.log('latestSignedContractState', latestSignedContractState);\n              $log.log('Contracts require signing', _.values(latestSignedContractState).includes(false));\n              if (this.offices.length === 0) {\n                NotificationsService.success('Your practice details are required. Enter them now.');\n                $state.go('portal.account-settings.details');\n              }\n              $log.log('outcomesDashboard', this.outcomesDashboard);\n              $log.log('cptFees', this.cptFees);\n              $log.log('currentReportingPeriod', this.currentReportingPeriod.id);\n              $log.log('eUserProfiles', this.eUserProfiles);\n              _context.next = 12;\n              return EUserProfilesService.updateTimezone(this.user.user_profile);\n            case 12:\n              // CPT 99453 + 12 x CPT 99454 x 20% + 12 x CPT 99457\n              MONTHS_IN_YEAR = 12;\n              CENTS_IN_DOLLAR = 100;\n              EQUIPMENT_MULTIPLIER = .2;\n              code99453 = _.find(this.cptFees, {\n                code: \"99453\"\n              });\n              code99454 = _.find(this.cptFees, {\n                code: \"99454\"\n              });\n              code99457 = _.find(this.cptFees, {\n                code: \"99457\"\n              });\n              revenueAllServices = (code99453.non_facility_price_cents + MONTHS_IN_YEAR * code99454.non_facility_price_cents * EQUIPMENT_MULTIPLIER + MONTHS_IN_YEAR * code99457.non_facility_price_cents) / CENTS_IN_DOLLAR;\n              revenueMonitoring = MONTHS_IN_YEAR * code99457.non_facility_price_cents / CENTS_IN_DOLLAR;\n              this.patients_enrollment_count = 0;\n              this.patients_consented_and_shipped = 0;\n              this.patients_missing_required = 0;\n              this.patients_rpm_count = 0;\n              this.patients_missing_required_revenue = 0;\n              this.patients_consented_and_shipped_without_rpm = 0;\n              // Do all the math\n              this.patients_enrollment_count = parseInt(this.enterpriseCustomerTotalEnrollmentCount.headers('X-Total-Count'));\n              this.patients_missing_required = parseInt(this.enterpriseCustomerIncompleteMissingRequired.headers('X-Total-Count'));\n              this.patients_consented_and_shipped = this.enterpriseCustomerCompleteConsentedShipped.total_patient_count;\n              this.patients_rpm_count = parseInt(this.enterpriseCustomerCompleteRpmCount.headers('X-Total-Count'));\n              _.each(this.eUserProfiles.data.data, function (patient) {\n                if (!patient.is_provider_device_test_account && !patient.deleted_at && !patient.is_fake) {\n                  return _this.patients_consented_and_shipped_without_rpm = Number(_this.patients_consented_and_shipped_without_rpm) + 1;\n                }\n              });\n              // Put all the numbers into the alerts\n              return _context.abrupt(\"return\", this.translationData = {\n                enterprise_customer_name: this.enterpriseCustomer.name,\n                patients_rpm_count: this.patients_rpm_count,\n                patients_rpm_revenue: $filter('currency')(this.patients_rpm_count * revenueAllServices, '$', '0'),\n                patients_consented_and_shipped: this.patients_consented_and_shipped,\n                patients_consented_and_shipped_without_rpm: this.patients_consented_and_shipped_without_rpm,\n                patients_consented_and_shipped_revenue: $filter('currency')(this.patients_consented_and_shipped * revenueMonitoring, '$', '0'),\n                patients_missing_required: this.patients_missing_required,\n                patients_missing_required_revenue: $filter('currency')(this.patients_missing_required * revenueAllServices, '$', '0')\n              });\n            case 32:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.navExternally = function (url) {\n        return $window.open(url, '_blank');\n      };\n      this.showFields = function () {\n        var modalDefaults, modalOptions;\n        $log.log('Viewing modal');\n        modalOptions = {\n          headerText: \"hi\",\n          bodyText: PORTAL.ALERTS.BULK_ENROLLMENT.BODY.REQUIRED_INFO,\n          bodyText2: PORTAL.ALERTS.BULK_ENROLLMENT.BODY.REQUIRED_HEADER,\n          closeButtonText: 'OK',\n          actionButtonText: this.actionBtnTxt\n        };\n        modalDefaults = {};\n        return ModalService.showModal(modalDefaults, modalOptions);\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-dashboard/e-dashboard.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eCCMPatients\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} eUserProfiles patients\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @param {object} patientDashboard dashboard info for patients list\n   * @description\n   * Displays enterprise list of Care Management patients\n   */\n  var indexOf = [].indexOf;\n  angular.module('enterprise').component('eCCMPatients', {\n    bindings: {\n      user: '<',\n      eUserProfiles: '<',\n      enterpriseCustomer: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      patientDashboard: '<',\n      providers: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, EUserProfileFilterService, EUserProfilesService, PER_PAGE, $stateParams, PatientStatuses, ALLOWED_ROLES_BY, GroupRoles, CCMTimes, ObservationReportService, StandardPagination, Icd10Service, uuid4, IntercomService, $window, NotificationsService, env) {\n      var _this = this;\n      var setDefaultFilterVariables;\n      this.$onInit = function () {\n        var currentOfficeId, filter, groupMembershipsForLoggedInOffice, ref, ref1;\n        $log = $log.getInstance('eCCMPatients');\n        $log.log('eCCMPatients component loaded');\n        $log.log('this.eUserProfiles', this.eUserProfiles);\n        this.observationReportService = ObservationReportService;\n        this.monthYear = luxon.DateTime.local().startOf(\"month\").toFormat(\"MMM yyyy\");\n        $log.log('this.eUserProfiles.headers(\"X-Total-Count\")', this.eUserProfiles.headers('X-Total-Count'));\n        this.patientsCount = this.eUserProfiles.headers('X-Total-Count');\n        this.patients = this.eUserProfiles.data.data;\n        this.queryString = {};\n        this.isExportCollapsed = true;\n        // pagination\n        this.itemsPerPage = PER_PAGE.PATIENTS;\n        this.pageNumber = $stateParams.patient_page || 1;\n        this.optionsForPagination = StandardPagination;\n        //sort\n        this.sortDir = 'DESC';\n        this.sortField = 'care_plan.completed_at';\n        this.sort = [{\n          field: 'care_plan.completed_at',\n          dir: 'DESC'\n        }];\n        this.sortOptions = {\n          name_last: [{\n            label: 'A to Z (last name)',\n            sortDir: 'ASC',\n            sortField: 'name_last'\n          }, {\n            label: 'Z to A (last name)',\n            sortDir: 'DESC',\n            sortField: 'name_last'\n          }],\n          last_reviewed: [{\n            label: 'Most recent first',\n            sortDir: 'DESC',\n            sortField: 'ccm_last_reviewed',\n            isChecked: 1\n          }, {\n            label: 'Most recent last',\n            sortDir: 'ASC',\n            sortField: 'ccm_last_reviewed'\n          }],\n          call_log: [{\n            label: 'Most recent first',\n            sortDir: 'DESC',\n            sortField: 'call_log.created_at'\n          }, {\n            label: 'Most recent last',\n            sortDir: 'ASC',\n            sortField: 'call_log.created_at'\n          }],\n          timesheet_sum: [{\n            label: '0 to 60 CCM time',\n            sortDir: 'ASC',\n            sortField: 'timesheet_sum'\n          }, {\n            label: '60 to 0 CCM time',\n            sortDir: 'DESC',\n            sortField: 'timesheet_sum'\n          }],\n          patient_services_count: [{\n            label: 'RPM last',\n            sortDir: 'ASC',\n            sortField: 'patient_services_count'\n          }, {\n            label: 'RPM first',\n            sortDir: 'DESC',\n            sortField: 'patient_services_count'\n          }]\n        };\n        //filter options\n        this.ccmTimesOptions = CCMTimes;\n        this.primaryProviderOptions = _.chain(this.providers).filter(function (provider) {\n          var ref, ref1, ref2;\n          return ref = (ref1 = provider.user_profile_practice_roles[0]) != null ? (ref2 = ref1.practice_role) != null ? ref2.key_name : void 0 : void 0, indexOf.call(ALLOWED_ROLES_BY.KEY_NAME, ref) >= 0;\n        }).map(function (provider) {\n          var ref, ref1;\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last, \" - \").concat((ref = provider.user_profile_practice_roles[0]) != null ? (ref1 = ref.practice_role) != null ? ref1.name : void 0 : void 0),\n            value: provider.id\n          };\n        }).value();\n        this.primaryProviderOptions.splice(0, 0, {\n          label: 'All',\n          value: null\n        });\n        this.spokenWithPatientOptions = [{\n          label: 'Any',\n          value: null\n        }, {\n          label: 'No',\n          value: false\n        }, {\n          label: 'Yes',\n          value: true\n        }];\n        this.spoken_with_patient = null;\n        this.spoken_with_patient_filter_enabled = (ref = this.features) != null ? (ref1 = ref.spoken_to_patient_filter) != null ? ref1.is_enabled : void 0 : void 0;\n        this.patientServicesCountOptions = [{\n          label: 'All',\n          value: null\n        }, {\n          label: 'CCM only',\n          value: '1'\n        }, {\n          label: 'CCM and RPM',\n          value: '2'\n        }];\n        this.patient_services_count = null;\n        this.groupDropdownText = {\n          dynamicButtonTextSuffix: \"Selected\"\n        };\n        this.groupDropdownSettings = {\n          displayProp: 'name',\n          selectedToTop: true,\n          scrollableHeight: 'inherit',\n          scrollable: true,\n          checkBoxes: true,\n          showCheckAll: false,\n          showUncheckAll: false\n        };\n        //enableSearch: true, #As the group list grows this feature might come in handy, leaving here as reminder.\n        this.groupOptionsModel = [];\n        currentOfficeId = this.user.logged_in_office_id;\n        groupMembershipsForLoggedInOffice = _.filter(this.user.user_profile.group_memberships, function (m) {\n          return m.group.office_id === currentOfficeId;\n        });\n        this.groupOptions = _.map(groupMembershipsForLoggedInOffice, function (m) {\n          return {\n            id: m.id,\n            group_id: m.group.id,\n            name: m.group.name,\n            role: m.group_role.role\n          };\n        });\n        this.groupOptions = _.filter(this.groupOptions, {\n          role: GroupRoles.CARE_MANAGER\n        });\n        this.noGroupsOption = {\n          id: 'NO_GROUPS',\n          group_id: 'NO_GROUPS',\n          name: 'No groups'\n        };\n        this.groupOptions.push(this.noGroupsOption);\n        if (_.isEmpty(this.groupOptions)) {\n          this.groupDropdownText.buttonDefaultText = \"Join in settings\";\n          this.groupDropdownDisabled = true;\n        }\n        setDefaultFilterVariables();\n        filter = EUserProfileFilterService.getFilter();\n        if (filter) {\n          this.queryString = filter;\n          if (filter.query) {\n            this.query = filter.query;\n          }\n          if (filter['$providers.id$']) {\n            this.primaryProviderQuery = filter['$providers.id$'];\n          }\n          if (filter.current_period_timesheet_range) {\n            this.ccmTime = filter.current_period_timesheet_range;\n          }\n          if (filter.dx_codes) {\n            this.diagnosis_codes = _.map(filter.dx_codes.split(','), function (c) {\n              return {\n                code: c\n              };\n            });\n          }\n          if (filter.group_ids) {\n            this.groupOptionsModel = _.filter(this.groupOptions, function (o) {\n              var ref2;\n              return ref2 = o.group_id, indexOf.call(filter.group_ids.split(','), ref2) >= 0;\n            });\n          }\n          if (filter.patient_services_count) {\n            this.patient_services_count = filter.patient_services_count;\n          }\n          if ('spoken_with_patient' in filter) {\n            this.spoken_with_patient = filter.spoken_with_patient;\n          }\n          if (filter._sort) {\n            return this._sort = _.map(filter._sort.split('|'), function (s) {\n              return JSON.parse(s);\n            });\n          }\n        }\n      };\n      this.hasFilters = EUserProfileFilterService.hasFilters;\n      this.inSort = function (sortOptions) {\n        return _.some(sortOptions, 'isChecked');\n      };\n      this.fieldIsAscSort = function (sortOptions) {\n        return _.some(sortOptions, function (s) {\n          return s.isChecked && s.sortDir === \"ASC\";\n        });\n      };\n      this.setSort = function (field, dir) {\n        var i, key, len, ref, s, sortOptions;\n        ref = this.sortOptions;\n        for (key in ref) {\n          sortOptions = ref[key];\n          for (i = 0, len = sortOptions.length; i < len; i++) {\n            s = sortOptions[i];\n            delete s.isChecked;\n            if (s.sortField === field && s.sortDir === dir) {\n              s.isChecked = 1;\n              this.sort = [{\n                field: field,\n                dir: dir\n              }];\n            }\n          }\n        }\n        return this.goToPage();\n      };\n      this.groupSelectionChanged = function () {\n        var payload;\n        $log.log(\"groupOptionsModel\", _this.groupOptionsModel);\n        // If the special \"no groups\" option is chosen, unselect all other options by creating a one-item array with just the \"no groups\" option\n        if (_.includes(_this.groupOptionsModel, _this.noGroupsOption)) {\n          _this.groupOptionsModel = [_this.noGroupsOption];\n        }\n        payload = _this.groupOptionsModel && _this.groupOptionsModel.length > 0 ? {\n          model: _.map(_this.groupOptionsModel, 'group_id').join(',')\n        } : '';\n        return _this.onChange('group_ids', payload);\n      };\n      this.loadDiagnoses = function (query) {\n        var _this2 = this;\n        $log.log('query', query);\n        this.isTagLoading = true;\n        return Icd10Service.search(query, 8).then(function (icd10s) {\n          _this2.isTagLoading = false;\n          $log.log('query', icd10s);\n          _.map(icd10s, function (icd10) {\n            return icd10.description = icd10.code + \": \" + icd10.description;\n          });\n          return icd10s;\n        });\n      };\n      this.onChange = function (property, payload) {\n        var newQueryString;\n        $log.log('payload', payload);\n        this.pageNumber = 1;\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sort: this.sort,\n          provider_user_profile_id: this.user.user_profile.id,\n          'services': 'CCM',\n          '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n        };\n        if (property === 'spoken_with_patient') {\n          delete this.queryString['spoken_with_patient'];\n        }\n        // Assign new filter property.\n        // CCM time filter can have a valid value of 0, so make 0 a truthy value in this case and pass through.\n        if (payload.model !== null && payload.model !== '') {\n          $log.log('payload.model', payload.model);\n          newQueryString[property] = payload.model;\n        }\n        // Remove filter property if it exists in the query string and if payload value is falsy\n        if (this.queryString[property] && (payload.model === null || payload.model === '')) {\n          delete this.queryString[property];\n        }\n        // Allows for multiple filters at once.\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        EUserProfileFilterService.setFilter(this.queryString);\n        return this.fetchPatientsAndUpdateUI(1);\n      };\n      this.fetchPatientsAndUpdateUI = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(pageNumber) {\n          var eUserProfiles, error, ref;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                this.showSpinner = true;\n                this.pageNumber = pageNumber;\n                $log.log('this.currentReportingPeriod.id', this.currentReportingPeriod.id);\n                if ((ref = this.currentReportingPeriod) != null ? ref.id : void 0) {\n                  _context.next = 7;\n                  break;\n                }\n                $log.error('currentReportingPeriod required');\n                this.showSpinner = false;\n                return _context.abrupt(\"return\");\n              case 7:\n                _context.prev = 7;\n                _context.next = 10;\n                return EUserProfilesService.getAllPatients(this.enterpriseCustomer.id, null, true);\n              case 10:\n                eUserProfiles = _context.sent;\n                this.patients = eUserProfiles.data.data;\n                this.patientsCount = eUserProfiles.headers('X-Total-Count');\n                this.pageNumber = pageNumber;\n                _context.next = 20;\n                break;\n              case 16:\n                _context.prev = 16;\n                _context.t0 = _context[\"catch\"](7);\n                error = _context.t0;\n                $log.error('Error fetching patients:', error);\n              case 20:\n                return _context.abrupt(\"return\", this.showSpinner = false);\n              case 21:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[7, 16]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      setDefaultFilterVariables = function setDefaultFilterVariables() {\n        _this.query = null;\n        _this.primaryProviderQuery = null;\n        _this.ccmTime = null;\n        _this.diagnosis_codes = [];\n        _this.spoken_with_patient = null;\n        _this.groupOptionsModel = [];\n        return _this.patient_services_count = null;\n      };\n      // Clear the filter fields back to default values.\n      this.clearPatientReportingFilters = function () {\n        var filterProperties, i, len, prop;\n        filterProperties = ['query', '$providers.id$', 'current_period_timesheet_range', '$user_profile.deactivated_at$', '$deactivation_reason.key_name$', 'dx_codes', 'spoken_with_patient', 'group_ids', 'patient_services_count'];\n        for (i = 0, len = filterProperties.length; i < len; i++) {\n          prop = filterProperties[i];\n          this.onChange(prop, {\n            model: null\n          });\n        }\n        setDefaultFilterVariables();\n        return $rootScope.$broadcast('patientReporting:filtersCleared');\n      };\n      this.onRowClick = function (index) {\n        return EUserProfileFilterService.setIndex(index, true);\n      };\n      this.goToPage = function () {\n        var newQueryString;\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sort: this.sort,\n          provider_user_profile_id: this.user.user_profile.id,\n          'services': 'CCM',\n          '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n        };\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        EUserProfileFilterService.setFilter(this.queryString);\n        return this.fetchPatientsAndUpdateUI(this.pageNumber);\n      };\n      this.getProviderName = function (id) {\n        var provider;\n        provider = _.find(this.providers, {\n          id: id\n        });\n        if (provider) {\n          return \"\".concat(provider.name_first, \"  \").concat(provider.name_last);\n        }\n      };\n      this.getPDF = function (patientUserProfile) {\n        return ObservationReportService.downloadCCMPDF(patientUserProfile, this.currentReportingPeriod);\n      };\n      this.download = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(useFilters) {\n          var cacheBuster, download_data, error, filters;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.showSpinner = true;\n                cacheBuster = uuid4.generate();\n                if (useFilters) {\n                  filters = EUserProfileFilterService.getFilter();\n                } else {\n                  filters = {};\n                }\n                filters = Object.assign(filters, {\n                  _cacheBuster: cacheBuster,\n                  provider_user_profile_id: this.user.user_profile.id,\n                  '$patient_reports.reporting_period_id$': this.currentReportingPeriod.id,\n                  'services': 'CCM',\n                  _packageForDownload: true\n                });\n                _context2.prev = 4;\n                IntercomService.trackEvent(env.intercom.events.charge_csv_downloaded);\n                _context2.next = 8;\n                return EUserProfilesService.getAllPatients(this.enterpriseCustomer.id, filters);\n              case 8:\n                download_data = _context2.sent;\n                if (download_data.url) {\n                  delete filters[\"_packageForDownload\"];\n                  $window.location.href = download_data.url;\n                } else {\n                  NotificationsService.error('No data');\n                }\n                _context2.next = 17;\n                break;\n              case 12:\n                _context2.prev = 12;\n                _context2.t0 = _context2[\"catch\"](4);\n                error = _context2.t0;\n                $log.log('error', error);\n                NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage || error.data.data);\n              case 17:\n                this.isExportCollapsed = true;\n                return _context2.abrupt(\"return\", this.showSpinner = false);\n              case 19:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[4, 12]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onDiagnosisAdded = function () {\n        var payload;\n        $log.log('e-ccm-patients:diagnosis_codes', this.diagnosis_codes);\n        if (this.diagnosis_codes != null) {\n          payload = this.diagnosis_codes.length > 0 ? {\n            model: _.map(this.diagnosis_codes, 'code').join(',')\n          } : '';\n          return this.onChange('dx_codes', payload);\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-ccm-patients/e-ccm-patients.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eCCMObservationReport\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @param {object} enterpriseCustomer the enterprise company the admin belongs to\n   * @param {object} observationReport the observationReport whose details are being viewed\n   * @param {object} timesheets the observationReport timesheets\n   * @param {object} patientSubscription Currently active patient subscription data\n   * @param {object} deactivationLogs All of the records of deactivation requests for this patient\n   * @param {object} deactivationReasons Deactivation Reasons to display in the UI\n   * @param {object} deviceTypes all device_types\n   * @param {object} currentReportingPeriod the current reporting period for the local datetime\n   * @description\n   * Displays enterprise wearer/patientUserProfile details\n   */\n  angular.module('enterprise').component('eCCMObservationReport', {\n    bindings: {\n      user: '<',\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      providerPatientAuthorizations: '<',\n      primaryProvider: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      timesheets: '<',\n      threshold: '<',\n      patientSubscription: '<',\n      deactivationLogs: '<',\n      deactivationReasons: '<',\n      deviceTypes: '<',\n      currentReportingPeriod: '<',\n      features: '<',\n      relationships: '<',\n      graphConfig: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $filter, $window, $state, $stateParams, $q, ObservationReportService, EUserProfilesService, EUserProfileFilterService, NotificationsService, LookerService, $transitions, $translate, TimesheetService, EAlertThresholdsService, UserProfilesService, ProviderPatientAuthorizationsService, PER_PAGE, ReadingsShareService, PracticeSpecialtyService, ECustomersService, DORTargets, ModalService, RelationshipsService, LanguagesService, GroupService, GroupRoles, GroupRoleService, ETemplateService, GraphDataService, PatientChartNavigationService, ObservationReportReloadHelper, PatientChartPresenceService) {\n      var _this2 = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var allGroups, base, currentUserGroupIds, cycle_month, cycle_year, data, dateFormat, endDate, error, filter, groupMemberships, now, ref, startDate, _this$observationRepo;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('eCCMObservationReport');\n              $log.log('eCCMObservationReport component loaded');\n              // Mix in shared reload methods\n              angular.extend(this, ObservationReportReloadHelper.getMethods());\n              $log.log('this.observationReport', this.observationReport);\n              $log.log('this.deviceTypes', this.deviceTypes);\n              this.othersActive = false;\n              this.presenceOwnerToken = null;\n              if ((ref = this.patientUserProfile) != null ? ref.id : void 0) {\n                this.presenceOwnerToken = PatientChartPresenceService.start(this.patientUserProfile.id, function (othersActive) {\n                  return _this.othersActive = othersActive;\n                });\n              }\n              this.isCollapsed = false;\n              // get RPM service observation report id to be used for routing to RPM patient chart\n              if (!(this.patientUserProfile.model_patient_services.length > 1)) {\n                _context.next = 13;\n                break;\n              }\n              _context.next = 12;\n              return PatientChartNavigationService.getCurrentObservationReport(this.user.user_profile.enterprise_customer_id, this.patientUserProfile.id, this.currentReportingPeriod.id);\n            case 12:\n              this.currentRPMObservationReport = _context.sent;\n            case 13:\n              //get currently filtered service. if RPM, filter._service will be populated\n              filter = EUserProfileFilterService.getFilter();\n              this.isFilteredServiceRPM = filter != null ? filter._service : void 0;\n              if (!$stateParams.observation_report_id) {\n                // PP-2701 - deeplink from claims to observation reports does NOT set the observation_report_id in the url\n                $state.params.observation_report_id = this.observationReport.id;\n                $state.transitionTo($state.current, $state.params, {\n                  reload: false\n                });\n              }\n              if (this.observationReport.service.name !== 'CCM') {\n                $state.go('enterprise.dashboard');\n              }\n              this.groupDropdownText = {\n                dynamicButtonTextSuffix: \"Assigned\",\n                buttonDefaultText: \"None\"\n              };\n              this.groupDropdownSettings = {\n                displayProp: 'name',\n                selectedToTop: true,\n                scrollableHeight: 'inherit',\n                scrollable: true,\n                checkBoxes: true,\n                showCheckAll: false,\n                showUncheckAll: false,\n                buttonClasses: \"form-control input-sm\"\n              };\n              _context.next = 21;\n              return EUserProfilesService.updateTimezone(this.user.user_profile);\n            case 21:\n              if (_.isNil(this.patientUserProfile.group_memberships)) {\n                $log.warn(\"patientUserProfile.group_memberships unexpectedly returned null\");\n                this.patientUserProfile.group_memberships = [];\n              }\n              groupMemberships = _.filter(this.patientUserProfile.group_memberships, function (m) {\n                return m.group_role.role === GroupRoles.MEMBER;\n              });\n              currentUserGroupIds = _.map(groupMemberships, function (m) {\n                return m.group.id;\n              });\n              _context.prev = 24;\n              _context.next = 27;\n              return GroupService.getAll(this.user.user_profile.enterprise_customer_id, this.user.logged_in_office_id, {\n                _sortDir: 'asc',\n                _sortField: 'name'\n              });\n            case 27:\n              allGroups = _context.sent;\n              _context.next = 35;\n              break;\n            case 30:\n              _context.prev = 30;\n              _context.t0 = _context[\"catch\"](24);\n              error = _context.t0;\n              $log.log('eCCMObservationReport.$onInit error calling GroupService.getAll()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 35:\n              this.groupOptions = _.map(allGroups.data.data, function (g) {\n                return {\n                  id: g.id,\n                  name: g.name\n                };\n              });\n              this.groupOptionsModel = _.filter(this.groupOptions, function (g) {\n                return _.includes(currentUserGroupIds, g.id);\n              });\n              _context.prev = 37;\n              _context.next = 40;\n              return GroupRoleService.getMemberRole();\n            case 40:\n              this.memberRole = _context.sent;\n              _context.next = 48;\n              break;\n            case 43:\n              _context.prev = 43;\n              _context.t1 = _context[\"catch\"](37);\n              error = _context.t1;\n              $log.log('eCCMObservationReport.$onInit error calling GroupRoleService.getMemberRole()', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 48:\n              // We always want to load patient report at the top of the page\n              $window.scrollTo(0, 0);\n              this.rpm_setup_notes = this.patientUserProfile.rpm_setup_notes;\n              this.observationReportService = ObservationReportService; // referenced in view\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              this.isPrimaryProviderVisible = true;\n              this.getObservationReportsForPatient();\n              this.isReportFromCurrentPeriod = true;\n              this.reportPeriodText = this.getReportingPeriodText();\n              this.patientPagingText = EUserProfileFilterService.getPagingString();\n              this.showBackToFilter = EUserProfileFilterService.hasFilters();\n              this.optionsForDorTarget = DORTargets;\n              // Set up sharing dialog\n              // Loading here rathing than in router so the content can render while this is calculated\n              _context.next = 61;\n              return PracticeSpecialtyService.getAll();\n            case 61:\n              this.practiceSpecialties = _context.sent;\n              this.practiceSpecialtiesOptions = _.map(this.practiceSpecialties, function (spec) {\n                return {\n                  label: spec.name,\n                  value: spec.id\n                };\n              });\n              this.isLoadingNextPatient = false;\n              // determine start and end dates\n              startDate = null;\n              endDate = null;\n              now = luxon.DateTime.local();\n              if (this.observationReport.reporting_period_id) {\n                _this$observationRepo = this.observationReport.reporting_period;\n                cycle_month = _this$observationRepo.cycle_month;\n                cycle_year = _this$observationRepo.cycle_year;\n                this.isReportFromCurrentPeriod = cycle_month === now.month && cycle_year === now.year;\n                $log.log('cycle_year', cycle_year);\n                $log.log('cycle_month', cycle_month);\n                if (this.isReportFromCurrentPeriod) {\n                  // current reporting period\n                  startDate = now.minus({\n                    months: 1\n                  });\n                  endDate = now; // older reporting period\n                } else {\n                  startDate = luxon.DateTime.local(cycle_year, cycle_month, 1);\n                  endDate = luxon.DateTime.local(cycle_year, cycle_month, 1).endOf('month');\n                }\n              } else if (this.observationReport.period_started_at) {\n                startDate = luxon.DateTime.fromJSDate(this.observationReport.period_started_at);\n                endDate = luxon.DateTime.fromJSDate(this.observationReport.period_ended_at);\n                this.isReportFromCurrentPeriod = startDate.month === now.month && startDate.year === now.year;\n              }\n              $log.log('startDate', startDate);\n              $log.log('endDate', endDate);\n              this.isReportEditable = this.getIsReportEditable(startDate);\n              this.previousPatientEhrId = this.patientUserProfile.patient_ehr_id;\n              dateFormat = 'yyyy/MM/dd';\n              _context.next = 75;\n              return GraphDataService.getData(this.patientUserProfile.id, {\n                start_date: startDate.toFormat(dateFormat),\n                end_date: endDate.plus({\n                  days: 1\n                }).toFormat(dateFormat),\n                tz: this.user.user_profile.timezone\n              });\n            case 75:\n              data = _context.sent;\n              this.callLogGraph = typeof (base = this.graphConfig)['CALL_LOGS'] === \"function\" ? base['CALL_LOGS'](data.readings, data.meta) : void 0;\n              $rootScope.windowSubTitle = \"\".concat(this.patientUserProfile.name_first, \" \").concat(this.patientUserProfile.name_last);\n              // Listen for observationReport:reload event to refresh data after call logs/timesheets are created\n              this.reloadListener = $rootScope.$on('observationReport:reload', function (event, data) {\n                $log.log('observationReport:reload event received', data);\n                // Only reload if the event is for the current observation report\n                if (data.observationReportId === _this.observationReport.id) {\n                  return _this.reloadObservationReportData();\n                }\n              });\n            case 79:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[24, 30], [37, 43]]);\n      }));\n      this.addGroupMembership = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(g) {\n          var error, newMembership, result;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return GroupService.addMemberships(_this2.user.user_profile.enterprise_customer_id, _this2.user.logged_in_office_id, g.id, [{\n                  group_id: g.id,\n                  user_profile_id: _this2.patientUserProfile.id,\n                  role_id: _this2.memberRole.id\n                }]);\n              case 3:\n                result = _context2.sent;\n                newMembership = result[0];\n                newMembership.group_role = _this2.memberRole;\n                return _context2.abrupt(\"return\", _this2.patientUserProfile.group_memberships.push(newMembership));\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](0);\n                error = _context2.t0;\n                $log.log('eCCMObservationReport.removeGroupMembership error calling GroupService.addMemberships()', error);\n                return _context2.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, null, [[0, 9]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.removeGroupMembership = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(g) {\n          var deletedMembershipId, error, membershipsToDelete;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                membershipsToDelete = [];\n                deletedMembershipId = null;\n                _.forEach(_this2.patientUserProfile.group_memberships, function (gm) {\n                  var ref;\n                  if (gm.group_id === g.id || ((ref = gm.group) != null ? ref.id : void 0) === g.id) {\n                    membershipsToDelete.push(gm);\n                    return deletedMembershipId = gm.id;\n                  }\n                });\n                if (!membershipsToDelete) {\n                  _context3.next = 15;\n                  break;\n                }\n                _context3.prev = 4;\n                _context3.next = 7;\n                return GroupService.removeMemberships(_this2.user.user_profile.enterprise_customer_id, _this2.user.logged_in_office_id, g.id, membershipsToDelete);\n              case 7:\n                return _context3.abrupt(\"return\", _.remove(_this2.patientUserProfile.group_memberships, {\n                  id: deletedMembershipId\n                }));\n              case 10:\n                _context3.prev = 10;\n                _context3.t0 = _context3[\"catch\"](4);\n                error = _context3.t0;\n                $log.log('eCCMObservationReport.removeGroupMembership error calling GroupService.removeMemberships()', error);\n                return _context3.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 15:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, null, [[4, 10]]);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.getRefreshTooltip = function () {\n        return $filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.REFRESH_DATA_TOOLTIP');\n      };\n      this.getPDF = function () {\n        return ObservationReportService.downloadCCMPDF(this.patientUserProfile, this.currentReportingPeriod);\n      };\n      this.shareDisabled = function (payload) {\n        var ref, ref1;\n        $log.log(\"payload\", payload);\n        if ((payload != null ? payload.provider_name : void 0) && ((payload != null ? (ref = payload.fax_number) != null ? ref.length : void 0 : void 0) > 9 || (payload != null ? (ref1 = payload.email) != null ? ref1.length : void 0 : void 0) > 6)) {\n          if ((payload != null ? payload.relationship : void 0) || (payload != null ? payload.practice_specialty_id : void 0)) {\n            return false;\n          }\n        }\n        return true;\n      };\n      this.fetchPrimaryProviderForNextPatient = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var error, primaryProvider;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              _context4.prev = 0;\n              this.isPrimaryProviderVisible = false;\n              _context4.next = 4;\n              return ProviderPatientAuthorizationsService.getAll($stateParams.user_profile_id);\n            case 4:\n              this.providerPatientAuthorizations = _context4.sent;\n              this.optionsForProviderPatientAuthorizations = ObservationReportService.buildOptionsForProviderPatientAuthorizations(this.providerPatientAuthorizations);\n              primaryProvider = _.find(this.providerPatientAuthorizations, function (providerPatientAuthorization) {\n                return providerPatientAuthorization.is_primary;\n              });\n              this.primaryProvider = primaryProvider;\n              return _context4.abrupt(\"return\", this.isPrimaryProviderVisible = true);\n            case 11:\n              _context4.prev = 11;\n              _context4.t0 = _context4[\"catch\"](0);\n              error = _context4.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              return _context4.abrupt(\"return\", $log.log('ProviderPatientAuthorizationsService.getAll error', error));\n            case 16:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this, [[0, 11]]);\n      }));\n      // can edit report if it has a reporting_period (not legacy) and local datetime is not more than 1 month later\n      this.getIsReportEditable = function (startDate) {\n        var canEditUntil;\n        if (this.observationReport.reporting_period_id) {\n          canEditUntil = startDate.plus({\n            months: 2 // 1 month for this period and 1 additional month\n          });\n          $log.log('canEditUntil', canEditUntil);\n          // Since startDate gets set to start of the month on init, we need to compare to the end of the month.\n          if (luxon.DateTime.local() < canEditUntil.endOf('month')) {\n            return true;\n          }\n        }\n      };\n      this.getToolTipText = function () {\n        var cycleEndDate, cycleMonth, cycleMonthString, cycleStartDate, cycleYear;\n        if (!this.observationReport.reporting_period_id) {\n          // legacy observation report\n          cycleStartDate = luxon.DateTime.local(this.observationReport.period_started_at).toFormat('MMMM DD');\n          cycleEndDate = luxon.DateTime.local(this.observationReport.period_ended_at).toFormat('MMMM DD, YYYY');\n          return \"\".concat(cycleStartDate, \" - \").concat(cycleEndDate);\n        } else {\n          // new observation reports w/ reporting period\n          cycleMonth = this.observationReport.reporting_period.cycle_month;\n          cycleYear = this.observationReport.reporting_period.cycle_year;\n          cycleStartDate = luxon.DateTime.local(cycleYear, cycleMonth, 1);\n          cycleMonthString = cycleStartDate.toFormat('MMMM');\n          return \"\".concat(cycleMonthString, \" \").concat(cycleYear);\n        }\n      };\n      this.getReportingPeriodText = function () {\n        var cycleEndDate, cycleFirstDayOfMonth, cycleLastDayOfMonth, cycleMonth, cycleMonthString, cycleStartDate, cycleYear;\n        if (!this.observationReport.reporting_period_id) {\n          // legacy observation report\n          cycleStartDate = luxon.DateTime.local(this.observationReport.period_started_at).toFormat('MMMM DD');\n          cycleEndDate = luxon.DateTime.local(this.observationReport.period_ended_at).toFormat('MMMM DD, YYYY');\n          return \"\".concat(cycleStartDate, \" - \").concat(cycleEndDate);\n        } else {\n          // new observation reports w/ reporting period\n          cycleMonth = this.observationReport.reporting_period.cycle_month;\n          $log.log('cycleMonth', cycleMonth);\n          cycleYear = this.observationReport.reporting_period.cycle_year;\n          $log.log('cycleYear', cycleYear);\n          $log.log('luxon.DateTime', luxon.DateTime);\n          cycleStartDate = luxon.DateTime.local(cycleYear, cycleMonth, 1);\n          $log.log('cycleStartDate', cycleStartDate);\n          cycleMonthString = cycleStartDate.toFormat('MMMM');\n          $log.log('cycleMonthString', cycleMonthString);\n          cycleFirstDayOfMonth = cycleStartDate.startOf('month').day;\n          $log.log('cycleFirstDayOfMonth', cycleFirstDayOfMonth);\n          cycleLastDayOfMonth = cycleStartDate.endOf('month').day;\n          $log.log('cycleLastDayOfMonth', cycleLastDayOfMonth);\n          return \"\".concat(cycleMonthString, \" \").concat(cycleYear);\n        }\n      };\n      this.postObservationReport = function (data) {\n        this.observationReport = data.model;\n        this.observationReport.user_profile_id = this.user.user_profile.id;\n        // DO NOT update the timesheet sum and count! this will be done in the timesheet hooks\n        delete this.observationReport.timesheet_sum;\n        delete this.observationReport.timesheet_count;\n        return ObservationReportService.put(this.enterpriseCustomer.id, this.observationReport).then(function (response) {\n          return $log.log('postObservationReport', response);\n        }).catch(function (error) {\n          $log.log('error', error);\n          return NotificationsService.error('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.ERROR');\n        });\n      };\n      this.getObservationReportsForPatient = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {\n        var error, reports;\n        return regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) switch (_context5.prev = _context5.next) {\n            case 0:\n              _context5.prev = 0;\n              _context5.next = 3;\n              return ObservationReportService.getAll(this.user.user_profile.enterprise_customer_id, {\n                patient_user_profile_id: this.patientUserProfile.id,\n                '$service.name$': 'CCM',\n                _sortField: 'created_at',\n                _sortDir: 'DESC'\n              });\n            case 3:\n              reports = _context5.sent;\n              $log.log('getObservationReportsForPatient', reports);\n              this.currentReport = _.find(reports, {\n                reporting_period_id: this.currentReportingPeriod.id\n              });\n              $log.log('this.currentReport', this.currentReport);\n              this.observationReports = reports;\n              return _context5.abrupt(\"return\", $log.log('this.observationReports', this.observationReports));\n            case 11:\n              _context5.prev = 11;\n              _context5.t0 = _context5[\"catch\"](0);\n              error = _context5.t0;\n              return _context5.abrupt(\"return\", $log.log('error', error));\n            case 15:\n            case \"end\":\n              return _context5.stop();\n          }\n        }, _callee5, this, [[0, 11]]);\n      }));\n      this.modalBody = function () {\n        return ObservationReportService.reactivationModalBody();\n      };\n      this.reActivate = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              this.patientUserProfile.deactivation_reason_id = null;\n              this.patientUserProfile.deactivated_at = null;\n              _context6.prev = 2;\n              _context6.next = 5;\n              return UserProfilesService.reactivatePatient(this.user, this.patientUserProfile);\n            case 5:\n              NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTIFICATION.SUCCESS'));\n              return _context6.abrupt(\"return\", $state.go('enterprise.patients'));\n            case 9:\n              _context6.prev = 9;\n              _context6.t0 = _context6[\"catch\"](2);\n              error = _context6.t0;\n              $log.log('error', error);\n              return _context6.abrupt(\"return\", $state.go('enterprise.observation_report.patient_deactivation_contact'));\n            case 14:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this, [[2, 9]]);\n      }));\n      this.$onDestroy = function () {\n        $log.log('destroyed');\n        PatientChartPresenceService.stop(this.presenceOwnerToken);\n        // Clean up event listener\n        if (this.reloadListener) {\n          return this.reloadListener();\n        }\n      };\n      // TODO: do we need to worry about debouncing this?\n      this.hasNext = function () {\n        return !this.isLoadingNextPatient && EUserProfileFilterService.hasNext();\n      };\n      this.hasPrev = function () {\n        return !this.isLoadingNextPatient && EUserProfileFilterService.hasPrev();\n      };\n      // TODO: is there a cleaner way to define this? isNext variable name feels weird\n      this.goToNextPatient = /*#__PURE__*/function () {\n        var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(isNext) {\n          var currentUserGroupIds, error, groupMemberships, nextProfile;\n          return regeneratorRuntime.wrap(function _callee7$(_context7) {\n            while (1) switch (_context7.prev = _context7.next) {\n              case 0:\n                if (!this.isLoadingNextPatient) {\n                  _context7.next = 2;\n                  break;\n                }\n                return _context7.abrupt(\"return\");\n              case 2:\n                $log.log('goToNextPatient');\n                this.isLoadingNextPatient = true;\n                _context7.prev = 4;\n                if (!isNext) {\n                  _context7.next = 11;\n                  break;\n                }\n                _context7.next = 8;\n                return EUserProfilesService.getNext(this.enterpriseCustomer.id, this.patientUserProfile.id);\n              case 8:\n                nextProfile = _context7.sent;\n                _context7.next = 14;\n                break;\n              case 11:\n                _context7.next = 13;\n                return EUserProfilesService.getPrev(this.enterpriseCustomer.id, this.patientUserProfile.id);\n              case 13:\n                nextProfile = _context7.sent;\n              case 14:\n                _context7.next = 21;\n                break;\n              case 16:\n                _context7.prev = 16;\n                _context7.t0 = _context7[\"catch\"](4);\n                error = _context7.t0;\n                $log.log('eCCMObservationReport.goToNextPatient error calling EUserProfilesService.getNext/Prev', error);\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 21:\n                groupMemberships = _.filter(nextProfile.group_memberships, function (m) {\n                  return m.group_role.role === GroupRoles.MEMBER;\n                });\n                currentUserGroupIds = _.map(groupMemberships, function (m) {\n                  return m.group.id;\n                });\n                this.groupOptionsModel = _.filter(this.groupOptions, function (g) {\n                  return _.includes(currentUserGroupIds, g.id);\n                });\n                this.patientsCount = EUserProfileFilterService.getCount();\n                // update index and count\n                EUserProfileFilterService.setCount(this.patientsCount);\n                EUserProfileFilterService.setIndex(EUserProfileFilterService.getIndex() + (isNext ? 1 : -1));\n                $log.log('nextProfile', nextProfile);\n                _context7.next = 30;\n                return PatientChartNavigationService.goToNextPatientProfile(nextProfile, this.currentReportingPeriod.id, this.user);\n              case 30:\n                return _context7.abrupt(\"return\", _context7.sent);\n              case 31:\n              case \"end\":\n                return _context7.stop();\n            }\n          }, _callee7, this, [[4, 16]]);\n        }));\n        return function (_x3) {\n          return _ref7.apply(this, arguments);\n        };\n      }();\n      this.next = function () {\n        $log.log('next');\n        return this.goToNextPatient(true);\n      };\n      this.prev = function () {\n        $log.log('prev');\n        return this.goToNextPatient(false);\n      };\n      this.onMonthlyDorTargetChange = /*#__PURE__*/function () {\n        var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee8$(_context8) {\n            while (1) switch (_context8.prev = _context8.next) {\n              case 0:\n                $log.log('payload.model', payload.model);\n                this.patientUserProfile.monthly_dor_target = payload.model;\n                _context8.prev = 2;\n                _context8.next = 5;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  monthly_dor_target: payload.model\n                });\n              case 5:\n                return _context8.abrupt(\"return\", NotificationsService.success('Monthly Days of Readings updated.'));\n              case 8:\n                _context8.prev = 8;\n                _context8.t0 = _context8[\"catch\"](2);\n                error = _context8.t0;\n                $log.log('EUserProfilesService.patch error', error);\n                return _context8.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context8.stop();\n            }\n          }, _callee8, this, [[2, 8]]);\n        }));\n        return function (_x4) {\n          return _ref8.apply(this, arguments);\n        };\n      }();\n      this.onLanguageChange = /*#__PURE__*/function () {\n        var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee9$(_context9) {\n            while (1) switch (_context9.prev = _context9.next) {\n              case 0:\n                $log.log('Language Id:', payload.model);\n                this.patientUserProfile.language_id = payload.model;\n                _context9.prev = 2;\n                _context9.next = 5;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  language_id: payload.model\n                });\n              case 5:\n                return _context9.abrupt(\"return\", NotificationsService.success(\"Language updated.\"));\n              case 8:\n                _context9.prev = 8;\n                _context9.t0 = _context9[\"catch\"](2);\n                error = _context9.t0;\n                $log.log('Language.patch error', error);\n                return _context9.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context9.stop();\n            }\n          }, _callee9, this, [[2, 8]]);\n        }));\n        return function (_x5) {\n          return _ref9.apply(this, arguments);\n        };\n      }();\n      this.onPrimaryProviderChange = /*#__PURE__*/function () {\n        var _ref10 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(payload) {\n          var error, newPrimaryProviderUserProfileId;\n          return regeneratorRuntime.wrap(function _callee10$(_context10) {\n            while (1) switch (_context10.prev = _context10.next) {\n              case 0:\n                $log.log('payload.model', payload.model);\n                newPrimaryProviderUserProfileId = payload.model;\n                _context10.prev = 2;\n                _context10.next = 5;\n                return ProviderPatientAuthorizationsService.updatePrimaryProvider(this.patientUserProfile.id, newPrimaryProviderUserProfileId);\n              case 5:\n                this.updatePrimaryProviderResponse = _context10.sent;\n                $log.log('this.updatePrimaryProviderResponse', this.updatePrimaryProviderResponse);\n                return _context10.abrupt(\"return\", NotificationsService.success(\"Monitoring Provider updated.\"));\n              case 10:\n                _context10.prev = 10;\n                _context10.t0 = _context10[\"catch\"](2);\n                error = _context10.t0;\n                $log.log('ProviderPatientAuthorizationsService.put error', error);\n                return _context10.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 15:\n              case \"end\":\n                return _context10.stop();\n            }\n          }, _callee10, this, [[2, 10]]);\n        }));\n        return function (_x6) {\n          return _ref10.apply(this, arguments);\n        };\n      }();\n      this.onPatientEheFieldLeave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee11$(_context11) {\n          while (1) switch (_context11.prev = _context11.next) {\n            case 0:\n              if (!(this.previousPatientEhrId === this.patientUserProfile.patient_ehr_id)) {\n                _context11.next = 2;\n                break;\n              }\n              return _context11.abrupt(\"return\");\n            case 2:\n              _context11.prev = 2;\n              _context11.next = 5;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                patient_ehr_id: this.patientUserProfile.patient_ehr_id\n              });\n            case 5:\n              this.previousPatientEhrId = this.patientUserProfile.patient_ehr_id;\n              return _context11.abrupt(\"return\", NotificationsService.success('Patient EHR ID updated.'));\n            case 9:\n              _context11.prev = 9;\n              _context11.t0 = _context11[\"catch\"](2);\n              error = _context11.t0;\n              $log.log('EUserProfilesService.patch error', error);\n              return _context11.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n            case 14:\n            case \"end\":\n              return _context11.stop();\n          }\n        }, _callee11, this, [[2, 9]]);\n      }));\n      //##### RPM Setup Complete\n      this.onRPMSetup = /*#__PURE__*/function () {\n        var _ref12 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(note) {\n          return regeneratorRuntime.wrap(function _callee12$(_context12) {\n            while (1) switch (_context12.prev = _context12.next) {\n              case 0:\n                this.rpm_setup_notes = note;\n                $log.log('RPM Complete Setup', {\n                  id: this.patientUserProfile.id,\n                  rpm_setup_date: new Date(),\n                  rpm_setup_notes: this.rpm_setup_notes\n                });\n                this.patientUserProfile.rpm_setup_notes = this.rpm_setup_notes;\n                this.patientUserProfile.rpm_setup_date = new Date();\n                _context12.next = 6;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  rpm_setup_notes: this.rpm_setup_notes,\n                  rpm_setup_date: this.patientUserProfile.rpm_setup_date\n                });\n              case 6:\n                return _context12.abrupt(\"return\", $state.go($state.current, $state.params, {\n                  reload: true\n                }));\n              case 7:\n              case \"end\":\n                return _context12.stop();\n            }\n          }, _callee12, this);\n        }));\n        return function (_x7) {\n          return _ref12.apply(this, arguments);\n        };\n      }();\n      this.onCHFSetup = /*#__PURE__*/function () {\n        var _ref13 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(note) {\n          return regeneratorRuntime.wrap(function _callee13$(_context13) {\n            while (1) switch (_context13.prev = _context13.next) {\n              case 0:\n                this.chf_setup_notes = note;\n                $log.log('CHF Complete Setup', {\n                  id: this.patientUserProfile.id,\n                  chf_setup_date: new Date(),\n                  chf_setup_notes: this.chf_setup_notes\n                });\n                this.patientUserProfile.chf_setup_notes = this.chf_setup_notes;\n                this.patientUserProfile.chf_setup_date = new Date();\n                _context13.next = 6;\n                return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                  chf_setup_notes: this.chf_setup_notes,\n                  chf_setup_date: this.patientUserProfile.chf_setup_date\n                });\n              case 6:\n                return _context13.abrupt(\"return\", $state.go($state.current, $state.params, {\n                  reload: true\n                }));\n              case 7:\n              case \"end\":\n                return _context13.stop();\n            }\n          }, _callee13, this);\n        }));\n        return function (_x8) {\n          return _ref13.apply(this, arguments);\n        };\n      }();\n      //##### RPM Setup Notes Templates\n      this.onNoteEdited = function (note) {\n        if (this.patientUserProfile.rpm_setup_date) {\n          return;\n        }\n        //##### text-angular send undefined on empty editor\n        this.rpm_setup_notes = note || null;\n        return this.saveDraftRpmNotes();\n      };\n      this.onNoteSelected = function (note) {\n        // Keeps the db from being updated with a blank string. retaining null.\n        if (this.rpm_setup_notes !== null) {\n          this.rpm_setup_notes = \"\".concat(this.rpm_setup_notes, \" \").concat(note);\n        } else {\n          // if note is empty then explicitly set to null\n          this.rpm_setup_notes = note || null;\n        }\n        return this.saveDraftRpmNotes();\n      };\n      this.onNoteTemplatesChanged = /*#__PURE__*/function () {\n        var _ref14 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14(notes) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee14$(_context14) {\n            while (1) switch (_context14.prev = _context14.next) {\n              case 0:\n                if (!this.enterpriseCustomer.rpm_setup_notes_template) {\n                  this.enterpriseCustomer.rpm_setup_notes_template = {};\n                }\n                this.enterpriseCustomer.rpm_setup_notes_template['rpm_setup_notes'] = notes;\n                _context14.prev = 2;\n                _context14.next = 5;\n                return ECustomersService.put({\n                  id: this.enterpriseCustomer.id,\n                  rpm_setup_notes_template: this.enterpriseCustomer.rpm_setup_notes_template\n                });\n              case 5:\n                return _context14.abrupt(\"return\", _context14.sent);\n              case 8:\n                _context14.prev = 8;\n                _context14.t0 = _context14[\"catch\"](2);\n                error = _context14.t0;\n                $log.log(error);\n                return _context14.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage));\n              case 13:\n              case \"end\":\n                return _context14.stop();\n            }\n          }, _callee14, this, [[2, 8]]);\n        }));\n        return function (_x9) {\n          return _ref14.apply(this, arguments);\n        };\n      }();\n      this.saveDraftRpmNotes = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee15$(_context15) {\n          while (1) switch (_context15.prev = _context15.next) {\n            case 0:\n              _context15.prev = 0;\n              this.patientUserProfile.rpm_setup_notes = this.rpm_setup_notes;\n              _context15.next = 4;\n              return EUserProfilesService.patch(this.enterpriseCustomer.id, this.patientUserProfile.id, {\n                rpm_setup_notes: this.rpm_setup_notes\n              });\n            case 4:\n              return _context15.abrupt(\"return\", _context15.sent);\n            case 7:\n              _context15.prev = 7;\n              _context15.t0 = _context15[\"catch\"](0);\n              error = _context15.t0;\n              $log.log('RPM setup notes save draft error.', error);\n              return _context15.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n            case 12:\n            case \"end\":\n              return _context15.stop();\n          }\n        }, _callee15, this, [[0, 7]]);\n      }));\n      this.onUpdateComponentItem = /*#__PURE__*/function () {\n        var _ref16 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee16$(_context16) {\n            while (1) switch (_context16.prev = _context16.next) {\n              case 0:\n                _context16.prev = 0;\n                _context16.next = 3;\n                return ETemplateService.onUpdateComponentItem(this.enterpriseCustomer, payload);\n              case 3:\n                return _context16.abrupt(\"return\", _context16.sent);\n              case 6:\n                _context16.prev = 6;\n                _context16.t0 = _context16[\"catch\"](0);\n                error = _context16.t0;\n                return _context16.abrupt(\"return\", $log.error('Error in onUpdateComponentItem:', error));\n              case 10:\n              case \"end\":\n                return _context16.stop();\n            }\n          }, _callee16, this, [[0, 6]]);\n        }));\n        return function (_x10) {\n          return _ref16.apply(this, arguments);\n        };\n      }();\n      this.onCreateComponentItem = /*#__PURE__*/function () {\n        var _ref17 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee17(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee17$(_context17) {\n            while (1) switch (_context17.prev = _context17.next) {\n              case 0:\n                _context17.prev = 0;\n                _context17.next = 3;\n                return ETemplateService.onCreateComponentItem(this.enterpriseCustomer, payload);\n              case 3:\n                return _context17.abrupt(\"return\", _context17.sent);\n              case 6:\n                _context17.prev = 6;\n                _context17.t0 = _context17[\"catch\"](0);\n                error = _context17.t0;\n                return _context17.abrupt(\"return\", $log.error('Error in onCreateComponentItem:', error));\n              case 10:\n              case \"end\":\n                return _context17.stop();\n            }\n          }, _callee17, this, [[0, 6]]);\n        }));\n        return function (_x11) {\n          return _ref17.apply(this, arguments);\n        };\n      }();\n      this.onDeleteComponentItem = /*#__PURE__*/function () {\n        var _ref18 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee18(payload) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee18$(_context18) {\n            while (1) switch (_context18.prev = _context18.next) {\n              case 0:\n                _context18.prev = 0;\n                _context18.next = 3;\n                return ETemplateService.onDeleteComponentItem(this.enterpriseCustomer, payload);\n              case 3:\n                return _context18.abrupt(\"return\", _context18.sent);\n              case 6:\n                _context18.prev = 6;\n                _context18.t0 = _context18[\"catch\"](0);\n                error = _context18.t0;\n                return _context18.abrupt(\"return\", $log.error('Error in onDeleteComponentItem:', error));\n              case 10:\n              case \"end\":\n                return _context18.stop();\n            }\n          }, _callee18, this, [[0, 6]]);\n        }));\n        return function (_x12) {\n          return _ref18.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/enterprise/e-ccm-observation-report/e-ccm-observation-report.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eCarePlan\n   * @restrict E\n   * @param {object} eUserProfile patient\n   * @description\n   * Displays and allows for creation of care plan\n   */\n  angular.module('enterprise').component('eCarePlan', {\n    bindings: {\n      patientUserProfile: '<',\n      patientCarePlan: '<',\n      user: '<',\n      enterpriseCustomer: '<',\n      providerPatientAuthorizations: '<',\n      isCompact: '@?',\n      features: '<',\n      currentReportingPeriod: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, CarePlanService, $rootScope, $timeout, EUserProfilesService, EUserProfileFilterService, ProviderPatientAuthorizationsService, GroupRoles, PatientChartNavigationService) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var filter;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('eCarePlan');\n              $log.log('eCarePlan component loaded');\n              this.activeStep = $state.current.url.replace('/', '');\n              this.patientPagingText = EUserProfileFilterService.getPagingString();\n              this.showBackToFilter = EUserProfileFilterService.hasFilters();\n              _context.next = 7;\n              return ProviderPatientAuthorizationsService.getAll(this.patientUserProfile.id);\n            case 7:\n              this.providerPatientAuthorizations = _context.sent;\n              this.primaryProviderAuth = _.find(this.providerPatientAuthorizations, function (providerPatientAuthorization) {\n                return providerPatientAuthorization.is_primary;\n              });\n              this.primaryProviderId = this.primaryProviderAuth.provider_user_profile_id;\n              // care plans do NOT have an observation report but need this for downloads to work\n              this.fakeObservationReport = {\n                reporting_period: this.currentReportingPeriod\n              };\n              this.setIsPrimaryProvider();\n              $timeout(function () {\n                return $rootScope.$broadcast('focus', 'goals');\n              }, 500);\n              $log.log(this.patientCarePlan);\n              this.reportPeriodText = luxon.DateTime.local().toFormat('MMMM yyyy');\n              this.isPrimaryProviderChangeInProgress = false;\n              this.isLoadingCompletePlan = false;\n              this.primaryProviderChangeInProgressListener = $rootScope.$on('primary_provider_change_in_progress', function (e) {\n                return _this.isPrimaryProviderChangeInProgress = true;\n              });\n              this.primaryProviderChangedListener = $rootScope.$on('primary_provider_changed', function (e, payload) {\n                _this.primaryProviderId = payload;\n                _this.setIsPrimaryProvider();\n                return _this.isPrimaryProviderChangeInProgress = false;\n              });\n              // get RPM service observation report id to be used for routing to RPM patient chart\n              if (!(this.patientUserProfile.model_patient_services.length > 1)) {\n                _context.next = 23;\n                break;\n              }\n              _context.next = 22;\n              return PatientChartNavigationService.getCurrentObservationReport(this.user.user_profile.enterprise_customer_id, this.patientUserProfile.id, this.currentReportingPeriod.id);\n            case 22:\n              this.currentRPMObservationReport = _context.sent;\n            case 23:\n              return _context.abrupt(\"return\");\n            case 26:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.carePlanSteps = [{\n        label: 'Goals',\n        url: 'goals'\n      }, {\n        label: 'Symptoms',\n        url: 'symptoms'\n      }, {\n        label: 'Barriers',\n        url: 'barriers'\n      }, {\n        label: 'Interventions',\n        url: 'interventions'\n      }, {\n        label: 'Providers',\n        url: 'providers'\n      }, {\n        label: 'Caregivers',\n        url: 'caregivers'\n      }];\n      //      { label: 'Vitals', url: 'vitals'},\n      //      { label: 'Allergies', url: 'allergies'},\n      //      { label: 'Medications', url: 'medications'},\n      this.setActiveStep = function (step) {\n        this.activeStep = step.url;\n        return $rootScope.$broadcast('focus', this.activeStep);\n      };\n      this.updateCarePlan = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.next = 2;\n              return CarePlanService.update(this.patientUserProfile.id, this.patientCarePlan);\n            case 2:\n              return _context2.abrupt(\"return\", _context2.sent);\n            case 3:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.complete = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              this.isLoadingCompletePlan = true;\n              this.patientCarePlan.completed_at = luxon.DateTime.local();\n              _context3.next = 4;\n              return CarePlanService.update(this.patientUserProfile.id, this.patientCarePlan);\n            case 4:\n              return _context3.abrupt(\"return\", $state.go('enterprise.ccm-patients'));\n            case 5:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.approve = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              this.patientCarePlan.approved_at = luxon.DateTime.local();\n              this.patientCarePlan.approving_provider_id = this.primaryProviderId;\n              _context4.next = 4;\n              return CarePlanService.update(this.patientUserProfile.id, this.patientCarePlan);\n            case 4:\n              return _context4.abrupt(\"return\", $state.go('enterprise.ccm-patients'));\n            case 5:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this);\n      }));\n      // FIXME: dry this up!!!!\n      this.hasNext = function () {\n        return EUserProfileFilterService.hasNext();\n      };\n      this.hasPrev = function () {\n        return EUserProfileFilterService.hasPrev();\n      };\n      // TODO: is there a cleaner way to define this? isNext variable name feels weird\n      this.goToNextPatient = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(isNext) {\n          var currentUserGroupIds, error, groupMemberships, nextProfile;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                if (!this.isLoadingNextPatient) {\n                  _context5.next = 2;\n                  break;\n                }\n                return _context5.abrupt(\"return\");\n              case 2:\n                $log.log('goToNextPatient');\n                this.isLoadingNextPatient = true;\n                _context5.prev = 4;\n                if (!isNext) {\n                  _context5.next = 11;\n                  break;\n                }\n                _context5.next = 8;\n                return EUserProfilesService.getNext(this.enterpriseCustomer.id, this.patientUserProfile.id);\n              case 8:\n                nextProfile = _context5.sent;\n                _context5.next = 14;\n                break;\n              case 11:\n                _context5.next = 13;\n                return EUserProfilesService.getPrev(this.enterpriseCustomer.id, this.patientUserProfile.id);\n              case 13:\n                nextProfile = _context5.sent;\n              case 14:\n                _context5.next = 21;\n                break;\n              case 16:\n                _context5.prev = 16;\n                _context5.t0 = _context5[\"catch\"](4);\n                error = _context5.t0;\n                $log.log('eCCMObservationReport.goToNextPatient error calling EUserProfilesService.getNext/Prev', error);\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 21:\n                groupMemberships = _.filter(nextProfile.group_memberships, function (m) {\n                  return m.group_role.role === GroupRoles.MEMBER;\n                });\n                currentUserGroupIds = _.map(groupMemberships, function (m) {\n                  return m.group.id;\n                });\n                this.groupOptionsModel = _.filter(this.groupOptions, function (g) {\n                  return _.includes(currentUserGroupIds, g.id);\n                });\n                this.isLoadingNextPatient = false;\n                this.patientsCount = EUserProfileFilterService.getCount();\n                // update index and count\n                EUserProfileFilterService.setCount(this.patientsCount);\n                EUserProfileFilterService.setIndex(EUserProfileFilterService.getIndex() + (isNext ? 1 : -1));\n                $log.log('nextProfile', nextProfile);\n                _context5.next = 31;\n                return PatientChartNavigationService.goToNextPatientProfile(nextProfile, this.currentReportingPeriod.id, this.user);\n              case 31:\n                return _context5.abrupt(\"return\", _context5.sent);\n              case 32:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this, [[4, 16]]);\n        }));\n        return function (_x) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.next = function () {\n        $log.log('next');\n        return this.goToNextPatient(true);\n      };\n      this.prev = function () {\n        $log.log('prev');\n        return this.goToNextPatient(false);\n      };\n      this.$onDestroy = function (newProviderId) {\n        this.primaryProviderChangeInProgressListener();\n        return this.primaryProviderChangedListener();\n      };\n      this.setIsPrimaryProvider = function () {\n        return this.isLoggedInUserPrimaryProvider = this.primaryProviderId === this.user.user_profile.id;\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-care-plan/e-care-plan.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name billing.directive:billing\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} stripeCustomer stripe customer\n   * @description\n   * Parent most billing component that wraps other child components\n   */\n  angular.module('billing').component('billing', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '<',\n      stripeCustomer: '<'\n    },\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('billing');\n        return $log.log('billing');\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-billing/billing.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eAudioCalls\n   * @restrict E\n   * @requires $log\n   * @requires $scope\n   * @requires TwilioService\n   * @requires TwilioVoiceEvents\n   * @requires AuthService\n   * @param {object} patientUserProfile of the current patient\n   * @param {object} observationReport of the current patient\n   * @param {object} user logged in\n   * @param {object} reportingPeriodText current reporting period as text\n   * @description\n   * Displays the call button and dropdown of all available phone numbers\n   */\n  angular.module('enterprise').component('eAudioCalls', {\n    bindings: {\n      patientUserProfile: '<',\n      enterpriseCustomer: '<',\n      observationReport: '<',\n      user: '<',\n      reportingPeriodText: '<',\n      date: '<',\n      callLogOptions: '<',\n      manualOnly: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $scope, $timeout, $translate, $filter, $q, $rootScope, TwilioService, TwilioVoiceEvents, AuthService, CallLogService, EUserProfilesService, NotificationsService, ObservationReportService, TimesheetService, ModalService, AUDIO_CALL_CONSTANTS, ESelectedPatientServiceService, PatientChartNavigationService, ReportingPeriodService, PatientServicesService) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.name = 'Check';\n              $log = $log.getInstance('eAudioCalls');\n              $log.log('this.patientUserProfile', this.patientUserProfile);\n              this.onCall = this.manualOnly ? false : TwilioService.isOnCall();\n              this.callLogForm = null;\n              this.initModel();\n              this.service = ESelectedPatientServiceService.currentSelectedService();\n              _context.next = 9;\n              return ReportingPeriodService.getCurrentReportingPeriodForLocalTime();\n            case 9:\n              this.currentReportingPeriod = _context.sent;\n              $log.log('eAudioCalls.service', this.service);\n              $log.log('eAudioCalls.reportingPeriod', this.currentReportingPeriod);\n              if (!this.manualOnly) {\n                TwilioService.setup();\n                TwilioService.subscribe(TwilioVoiceEvents.AUDIO_CALL_START, $scope, function () {\n                  $log.log('e-audio-calls:make-call');\n                  return _this.onCall = true;\n                });\n                TwilioService.subscribe(TwilioVoiceEvents.AUDIO_CALL_END, $scope, function () {\n                  $log.log('e-audio-calls:end-call');\n                  return _this.onCall = false;\n                });\n              }\n              this.phoneNumbers = [];\n              this.updatePhones(this.patientUserProfile);\n              // Fields for Call Log.\n              _context.next = 17;\n              return EUserProfilesService.getAllAdminsScopedByOffice(this.patientUserProfile.enterprise_customer_id);\n            case 17:\n              this.providers = _context.sent;\n              this.updateCallLogOptions();\n              return _context.abrupt(\"return\", this.textLogTime = '1 minute');\n            case 20:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.initModel = function () {\n        this.callLogModel = CallLogService.new();\n        return this.callLogModel.user_profile_id = this.patientUserProfile.id;\n      };\n      this.updateCallLogOptions = function () {\n        this.callLogOptions = CallLogService.buildCallLogOptions(this.providers, this.patientUserProfile);\n        this.callLogOptions.provider = this.findInOptions(this.callLogOptions.providerOptions, this.user.user_profile.id);\n        this.callLogOptions.patientNumber = this.findInOptions(this.callLogOptions.patientNumberOptions, this.patientUserProfile.phone_1_number);\n        return this.callLogOptions.connectionStatus = this.findInOptions(this.callLogOptions.connectionStatusOptions, '');\n      };\n      this.findInOptions = function (options, targetValue) {\n        var foundItem;\n        foundItem = options.find(function (item) {\n          return item.value === targetValue;\n        });\n        return foundItem != null ? foundItem.value : void 0;\n      };\n      this.findServiceByName = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(serviceName) {\n          var patientServices, service;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return PatientServicesService.getAll(this.user.user_profile.enterprise_customer_id);\n              case 2:\n                patientServices = _context2.sent;\n                service = patientServices.find(function (service) {\n                  return service.name === serviceName;\n                });\n                return _context2.abrupt(\"return\", service);\n              case 5:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.findObservationReportByService = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(serviceName) {\n          var observationReport;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                if (!(this.patientUserProfile.model_patient_services.length > 1)) {\n                  _context3.next = 5;\n                  break;\n                }\n                _context3.next = 3;\n                return PatientChartNavigationService.getCurrentObservationReport(this.user.user_profile.enterprise_customer_id, this.patientUserProfile.id, this.currentReportingPeriod.id, serviceName);\n              case 3:\n                observationReport = _context3.sent;\n                return _context3.abrupt(\"return\", observationReport != null ? observationReport.id : void 0);\n              case 5:\n                return _context3.abrupt(\"return\", null);\n              case 6:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.showDualCallConfirmation = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(options) {\n          var ccmTimeText, reportingPeriodText, result, rpmTimeText, translations;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                rpmTimeText = options.rpmTimeText;\n                ccmTimeText = options.ccmTimeText;\n                reportingPeriodText = options.reportingPeriodText;\n                _context4.next = 5;\n                return $translate(['AUDIO_CALL.DUAL_CALL_TIME_MODAL.HEADER', 'AUDIO_CALL.DUAL_CALL_TIME_MODAL.NO', 'AUDIO_CALL.DUAL_CALL_TIME_MODAL.YES', 'AUDIO_CALL.DUAL_CALL_TIME_MODAL.BODY'], {\n                  rpm_call_time: rpmTimeText,\n                  ccm_call_time: ccmTimeText,\n                  reportPeriodText: reportingPeriodText\n                });\n              case 5:\n                translations = _context4.sent;\n                _context4.next = 8;\n                return ModalService.showModal({}, {\n                  headerText: translations['AUDIO_CALL.DUAL_CALL_TIME_MODAL.HEADER'],\n                  bodyText: translations['AUDIO_CALL.DUAL_CALL_TIME_MODAL.BODY'],\n                  closeButtonText: translations['AUDIO_CALL.DUAL_CALL_TIME_MODAL.NO'],\n                  actionButtonText: translations['AUDIO_CALL.DUAL_CALL_TIME_MODAL.YES']\n                }).result;\n              case 8:\n                result = _context4.sent;\n                return _context4.abrupt(\"return\", result);\n              case 10:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4);\n        }));\n        return function (_x3) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.saveCallLog = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(callLog) {\n          var _this2 = this;\n          var baseCallLog, ccmBaseCallLog, ccmCallLog, ccmDuration, ccmObservationReportId, ccmService, ccmTimeText, ccmTimesheet, confirmed, error, rpmBaseCallLog, rpmCallLog, rpmDuration, rpmObservationReportId, rpmService, rpmTimeText, rpmTimesheet;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.prev = 0;\n                $log.log('saveCallLog: callLog', callLog);\n                // Create base call log with common properties\n                baseCallLog = {\n                  call_type: AUDIO_CALL_CONSTANTS.CALL_TYPE.MANUAL,\n                  user_profile_id: this.patientUserProfile.id,\n                  to_phone_type: CallLogService.findPhoneType(this.callLogOptions.patientNumberOptions, callLog.to_phone_number),\n                  to_phone_number: callLog.to_phone_number,\n                  provider_user_profile_id: callLog.provider_user_profile_id\n                };\n                _context5.next = 5;\n                return this.findObservationReportByService('RPM');\n              case 5:\n                rpmObservationReportId = _context5.sent;\n                _context5.next = 8;\n                return this.findObservationReportByService('CCM');\n              case 8:\n                ccmObservationReportId = _context5.sent;\n                rpmDuration = callLog.rpm_duration_ms;\n                ccmDuration = callLog.ccm_duration_ms;\n                // Handle dual call logs (both RPM and CCM)\n                if (!(rpmDuration !== void 0 && rpmDuration !== null && ccmDuration !== void 0 && ccmDuration !== null)) {\n                  _context5.next = 49;\n                  break;\n                }\n                _context5.next = 14;\n                return this.findServiceByName('RPM');\n              case 14:\n                rpmService = _context5.sent;\n                _context5.next = 17;\n                return this.findServiceByName('CCM');\n              case 17:\n                ccmService = _context5.sent;\n                if (!(!rpmService || !ccmService)) {\n                  _context5.next = 22;\n                  break;\n                }\n                $log.error('saveCallLog: RPM or CCM service not found');\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                return _context5.abrupt(\"return\", $q.reject('RPM or CCM service not found'));\n              case 22:\n                rpmTimeText = rpmDuration / 60 + ' ' + (rpmDuration >= 120 ? 'minutes' : 'minute');\n                ccmTimeText = ccmDuration / 60 + ' ' + (ccmDuration >= 120 ? 'minutes' : 'minute');\n                _context5.next = 26;\n                return this.showDualCallConfirmation({\n                  rpmTimeText: rpmTimeText,\n                  ccmTimeText: ccmTimeText,\n                  reportingPeriodText: this.reportingPeriodText\n                });\n              case 26:\n                confirmed = _context5.sent;\n                if (confirmed) {\n                  _context5.next = 29;\n                  break;\n                }\n                return _context5.abrupt(\"return\");\n              case 29:\n                rpmCallLog = angular.extend({}, baseCallLog, {\n                  service_id: rpmService.id,\n                  duration_ms: rpmDuration,\n                  response: callLog.rpm_response\n                });\n                ccmCallLog = angular.extend({}, baseCallLog, {\n                  service_id: ccmService.id,\n                  duration_ms: ccmDuration,\n                  response: callLog.ccm_response\n                });\n                rpmTimesheet = {\n                  observation_report_id: rpmObservationReportId,\n                  submitted_by_user_profile_id: this.user.user_profile.id,\n                  duration_secs: rpmDuration\n                };\n                ccmTimesheet = {\n                  observation_report_id: ccmObservationReportId,\n                  submitted_by_user_profile_id: this.user.user_profile.id,\n                  duration_secs: ccmDuration\n                };\n                _context5.prev = 33;\n                _context5.next = 36;\n                return $q.all([CallLogService.create(rpmCallLog), CallLogService.create(ccmCallLog), TimesheetService.post(rpmTimesheet), TimesheetService.post(ccmTimesheet)]);\n              case 36:\n                NotificationsService.success('AUDIO_CALL.DUAL_CALL_TIME_MODAL.SUCCESSFUL_NOTIFICATION', {\n                  rpm_call_time: rpmTimeText,\n                  ccm_call_time: ccmTimeText,\n                  reportPeriodText: this.reportingPeriodText\n                });\n                // Broadcast event to reload timesheets, observationReport, and graphConfig\n                // Broadcast for both RPM and CCM observation reports\n                $rootScope.$broadcast('observationReport:reload', {\n                  observationReportId: rpmObservationReportId,\n                  patientUserProfileId: this.patientUserProfile.id\n                });\n                $rootScope.$broadcast('observationReport:reload', {\n                  observationReportId: ccmObservationReportId,\n                  patientUserProfileId: this.patientUserProfile.id\n                });\n                this.resetForm();\n                _context5.next = 48;\n                break;\n              case 42:\n                _context5.prev = 42;\n                _context5.t0 = _context5[\"catch\"](33);\n                error = _context5.t0;\n                $log.error('Dual call save failed', error);\n                NotificationsService.error('AUDIO_CALL.DUAL_CALL_TIME_MODAL.ERROR_NOTIFICATION');\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n              case 48:\n                return _context5.abrupt(\"return\", $q.resolve());\n              case 49:\n                if (!(rpmDuration !== void 0 && rpmDuration !== null)) {\n                  _context5.next = 60;\n                  break;\n                }\n                _context5.next = 52;\n                return this.findServiceByName('RPM');\n              case 52:\n                rpmService = _context5.sent;\n                if (rpmService) {\n                  _context5.next = 57;\n                  break;\n                }\n                $log.error('saveCallLog: RPM service not found');\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                return _context5.abrupt(\"return\", $q.reject('RPM service not found'));\n              case 57:\n                rpmBaseCallLog = angular.extend({}, baseCallLog, {\n                  service_id: rpmService.id\n                });\n                this.submitPromise = CallLogService.saveSingleCallLog({\n                  baseCallLog: rpmBaseCallLog,\n                  durationMs: rpmDuration,\n                  observationReportId: rpmObservationReportId,\n                  reportingPeriodText: this.reportingPeriodText,\n                  service: rpmService,\n                  modalKeys: ['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'],\n                  successNotificationKey: 'AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION',\n                  errorNotificationKey: 'AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION',\n                  response: callLog.rpm_response,\n                  submittedByUserProfileId: this.user.user_profile.id\n                }).then(function (result) {\n                  if (!(result != null ? result.cancelled : void 0)) {\n                    return _this2.resetForm();\n                  }\n                });\n                return _context5.abrupt(\"return\", this.submitPromise);\n              case 60:\n                if (!(ccmDuration !== void 0 && ccmDuration !== null)) {\n                  _context5.next = 71;\n                  break;\n                }\n                _context5.next = 63;\n                return this.findServiceByName('CCM');\n              case 63:\n                ccmService = _context5.sent;\n                if (ccmService) {\n                  _context5.next = 68;\n                  break;\n                }\n                $log.error('saveCallLog: CCM service not found');\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                return _context5.abrupt(\"return\", $q.reject('CCM service not found'));\n              case 68:\n                ccmBaseCallLog = angular.extend({}, baseCallLog, {\n                  service_id: ccmService.id\n                });\n                this.submitPromise = CallLogService.saveSingleCallLog({\n                  baseCallLog: ccmBaseCallLog,\n                  durationMs: ccmDuration,\n                  observationReportId: ccmObservationReportId,\n                  reportingPeriodText: this.reportingPeriodText,\n                  service: ccmService,\n                  modalKeys: ['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'],\n                  successNotificationKey: 'AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION',\n                  errorNotificationKey: 'AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION',\n                  response: callLog.ccm_response,\n                  submittedByUserProfileId: this.user.user_profile.id\n                }).then(function (result) {\n                  if (!(result != null ? result.cancelled : void 0)) {\n                    return _this2.resetForm();\n                  }\n                });\n                return _context5.abrupt(\"return\", this.submitPromise);\n              case 71:\n                // Handle single call log (no RPM/CCM specific fields)\n                baseCallLog.service_id = this.service.id;\n                this.submitPromise = CallLogService.saveSingleCallLog({\n                  baseCallLog: baseCallLog,\n                  durationMs: callLog.duration_ms,\n                  observationReportId: this.observationReport.id,\n                  reportingPeriodText: this.reportingPeriodText,\n                  service: this.service,\n                  modalKeys: ['AUDIO_CALL.TIME_MODAL.HEADER', 'AUDIO_CALL.TIME_MODAL.NO', 'AUDIO_CALL.TIME_MODAL.YES', 'AUDIO_CALL.TIME_MODAL.BODY'],\n                  successNotificationKey: 'AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION',\n                  errorNotificationKey: 'AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION',\n                  response: callLog.response,\n                  submittedByUserProfileId: this.user.user_profile.id\n                }).then(function (result) {\n                  if (!(result != null ? result.cancelled : void 0)) {\n                    return _this2.resetForm();\n                  }\n                });\n                return _context5.abrupt(\"return\", this.submitPromise);\n              case 76:\n                _context5.prev = 76;\n                _context5.t1 = _context5[\"catch\"](0);\n                error = _context5.t1;\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                return _context5.abrupt(\"return\", $q.reject(error));\n              case 81:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this, [[0, 76], [33, 42]]);\n        }));\n        return function (_x4) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.saveTextLog = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        var error, promisesArray, self, submitPromise;\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              _context6.prev = 0;\n              self = this;\n              _context6.next = 4;\n              return ObservationReportService.get(this.enterpriseCustomer.id, this.observationReport.id);\n            case 4:\n              this.currentPatientObservationReport = _context6.sent;\n              this.callLog = {\n                call_type: AUDIO_CALL_CONSTANTS.CALL_TYPE.TEXT,\n                provider_user_profile_id: this.user.user_profile.id,\n                user_profile_id: this.patientUserProfile.id,\n                service_id: this.service.id,\n                to_phone_number: this.patientUserProfile.phone_1_number\n              };\n              this.timesheet = {\n                observation_report_id: this.observationReport.id,\n                submitted_by_user_profile_id: this.user.user_profile.id,\n                duration_secs: 60\n              };\n              this.observationReport = {\n                id: this.observationReport.id,\n                patient_user_profile_id: this.patientUserProfile.id,\n                user_profile_id: this.user.user_profile.id,\n                enterprise_customer_id: this.enterpriseCustomer.id,\n                details: '<p>' + $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.OBSERVATION_NOTE.TEXT', {\n                  timestamp: luxon.DateTime.local().toFormat('M/d HHmm'),\n                  service: this.service.name,\n                  initials: this.user.user_profile.name_first.charAt(0).toUpperCase() + this.user.user_profile.name_last.charAt(0).toUpperCase()\n                }) + '</p>' + (this.currentPatientObservationReport.details || '')\n              };\n              submitPromise = function submitPromise(promise) {\n                return promise.then(function (res) {\n                  return {\n                    success: true,\n                    data: res.data\n                  };\n                }, function (err) {\n                  return {\n                    success: false,\n                    error: err\n                  };\n                });\n              };\n              promisesArray = [submitPromise(CallLogService.create(this.callLog)), submitPromise(TimesheetService.post(this.timesheet)), submitPromise(ObservationReportService.put(this.enterpriseCustomer.id, this.observationReport))];\n              this.submitPromise = $q.all(promisesArray).then(function (responses) {\n                var r1, r2, r3;\n                var _responses = _slicedToArray(responses, 3);\n                r1 = _responses[0];\n                r2 = _responses[1];\n                r3 = _responses[2];\n                if (r1.success) {\n                  NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.TOASTS.SUCCESS');\n                } else {\n                  NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.TOASTS.ERROR');\n                }\n                if (r2.success) {\n                  NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.TIMESHEET.SUCCESS_NOTIFICATION', {\n                    reportPeriodText: self.reportingPeriodText,\n                    service: self.currentPatientObservationReport.service.name\n                  });\n                } else {\n                  NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.TIMESHEET.ERROR_NOTIFICATION');\n                }\n                if (r3.success) {\n                  NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.OBSERVATION_NOTE.SUCCESS');\n                } else {\n                  NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.OBSERVATION_NOTE.ERROR');\n                }\n                // Broadcast event to reload timesheets, observationReport, and graphConfig if all operations succeeded\n                if (r1.success && r2.success && r3.success) {\n                  return $rootScope.$broadcast('observationReport:reload', {\n                    observationReportId: self.observationReport.id,\n                    patientUserProfileId: self.patientUserProfile.id\n                  });\n                }\n              });\n              return _context6.abrupt(\"return\", this.submitPromise);\n            case 14:\n              _context6.prev = 14;\n              _context6.t0 = _context6[\"catch\"](0);\n              error = _context6.t0;\n              NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.TOASTS.ERROR');\n              return _context6.abrupt(\"return\", $q.reject(error));\n            case 19:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this, [[0, 14]]);\n      }));\n      this.resetForm = function () {\n        this.initModel();\n        return this.callLogOptions.call_log_data = null;\n      };\n      this.updatePhones = function (patient) {\n        this.phoneNumbers = [];\n        if (patient.phone_1_number) {\n          this.phoneNumbers.push({\n            type: patient.phone_1_type,\n            number: patient.phone_1_number\n          });\n        }\n        if (patient.phone_2_number) {\n          this.phoneNumbers.push({\n            type: patient.phone_2_type,\n            number: patient.phone_2_number\n          });\n        }\n        if (patient.phone_3_number) {\n          return this.phoneNumbers.push({\n            type: patient.phone_3_type,\n            number: patient.phone_3_number\n          });\n        }\n      };\n      this.$onChanges = function (changes) {\n        var err;\n        $log.log('e-audio-calls:on-change', changes);\n        $log.log('e-audio-calls:on-change:ob', this.observationReport);\n        try {\n          if (changes.patientUserProfile) {\n            this.updatePhones(this.patientUserProfile);\n            return this.updateCallLogOptions();\n          }\n        } catch (error1) {\n          err = error1;\n          return $log.log('e-audio-calls:on-change:error', err);\n        }\n      };\n      this.onMakeCall = function (to_phone_number, to_phone_type) {\n        var ref, ref1;\n        $log.log('e-audio-calls:onMakeCall', {\n          to_phone_number: to_phone_number,\n          to_phone_type: to_phone_type\n        });\n        return TwilioService.makeCall(to_phone_number, {\n          patient: {\n            name_first: this.patientUserProfile.name_first,\n            name_last: this.patientUserProfile.name_last,\n            profile_id: this.patientUserProfile.id,\n            observation_report_id: (ref = this.observationReport) != null ? ref.id : void 0,\n            model_patient_services: this.patientUserProfile.model_patient_services,\n            number: to_phone_number,\n            phone_type: to_phone_type,\n            service_id: this.service.id\n          },\n          provider: {\n            profile_id: this.user.user_profile.id,\n            enterprise_customer_id: this.user.user_profile.enterprise_customer_id\n          },\n          name_first: this.patientUserProfile.name_first,\n          name_last: this.patientUserProfile.name_last,\n          user_profile_id: this.patientUserProfile.id,\n          observation_report_id: (ref1 = this.observationReport) != null ? ref1.id : void 0,\n          observation_report: this.observationReport,\n          provider_user_profile_id: this.user.id,\n          reportPeriodText: this.reportingPeriodText,\n          currentReportingPeriod: this.currentReportingPeriod,\n          callLogOptions: this.callLogOptions\n        });\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-audio-call/e-audio-calls.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eAlertThresholdsAuditLogs\n   * @restrict E\n   * @param {object} patientUserProfile the patientUserProfile whose threshold audit logs are displayed\n   * @description\n   * Displays patientUserProfile threshold audit logs\n   */\n  angular.module('enterprise').component('eAlertThresholdsAuditLogs', {\n    bindings: {\n      patientUserProfile: '<',\n      threshold: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, EAlertThresholdsService, AlertThresholds, $rootScope) {\n      var _this = this;\n      var defaultQueryString;\n      defaultQueryString = {\n        _page: 1,\n        _perPage: 10,\n        _sortDir: 'desc',\n        _sortField: 'created_at'\n      };\n      this.$onInit = function () {\n        $log = $log.getInstance('eAlertThresholdsAuditLogs');\n        $log.log('eAlertThresholdsAuditLogs component loaded');\n        $log.log('threshold ', this.threshold);\n        this.queryString = defaultQueryString;\n        return this.goToPage();\n      };\n      this.goToPage = _.debounce( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var auditLogsResponse, ref;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log.log('goToPage called');\n              // Not placed in the resolve since the audit logs are not immediately visible\n              _context.next = 3;\n              return EAlertThresholdsService.getAuditLogs(this.patientUserProfile.id, this.queryString);\n            case 3:\n              auditLogsResponse = _context.sent;\n              this.auditLogs = auditLogsResponse != null ? (ref = auditLogsResponse.data) != null ? ref.data : void 0 : void 0;\n              this.auditLogsCount = 0;\n              if (auditLogsResponse != null ? auditLogsResponse.headers : void 0) {\n                this.auditLogsCount = auditLogsResponse.headers('X-Total-Count');\n              }\n              return _context.abrupt(\"return\", $log.log('auditLogs', this.auditLogs));\n            case 8:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      })));\n      this.$onChanges = function (changes) {\n        $log.log('changes for e-alert-threshold: navigate to next patient', changes);\n        if (changes.patientUserProfile) {\n          this.queryString = defaultQueryString;\n          return this.goToPage();\n        }\n      };\n      // we are listening for the broadcast from eAlertThresholds.onSave\n      // we can't just watch for $onChanges here since angular only tracks SimpleChanges\n      // and since that does not do a deep comparison on the threshold it will not fire on any updates\n      $rootScope.$on(AlertThresholds.ON_SAVE_EVENT, function (e, val) {\n        $log.log('changes for e-alert-threshold: current threshold changed ');\n        return _this.goToPage();\n      });\n    },\n    templateUrl: 'app/components/portal/enterprise/e-alert-thresholds-audit-logs/e-alert-thresholds-audit-logs.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:eAlertThresholds\n   * @restrict E\n   * @param {object} enterpriseCustomer the enterprise company the patient belongs to\n   * @param {object} patientUserProfile the patientUserProfile whose details are being viewed\n   * @description\n   * Displays enterprise patientUserProfile threshold details and controls\n   */\n  var indexOf = [].indexOf;\n  angular.module('enterprise').component('eAlertThresholds', {\n    bindings: {\n      enterpriseCustomer: '<',\n      patientUserProfile: '<',\n      deviceTypes: '<',\n      threshold: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, REGEX, EAlertThresholdsService, NotificationsService, AlertThresholds, $rootScope, AuthService) {\n      var _this = this;\n      var bloodGlucoseTemplate, bpDiastolicTemplate, bpSystolicTemplate;\n      this.numberRegex = REGEX.NUMBER;\n      this.isLoadingThreshold = true;\n      this.isSavingThreshold = false;\n      // Blood Pressure\n      this.systolicLegend = false;\n      this.diastolicLegend = false;\n      this.diastolicLegendVisibility = function () {\n        return this.diastolicLegend = !this.diastolicLegend;\n      };\n      this.systolicLegendVisibility = function () {\n        return this.systolicLegend = !this.systolicLegend;\n      };\n      // Blood Glucose\n      this.bgLegend = false;\n      this.bgLegendVisibility = function () {\n        this.bgLegend = !this.bgLegend;\n        return $log.log('bgLegendVisibility', this.bgLegend);\n      };\n      this.$onInit = function () {\n        $log = $log.getInstance('eAlertThresholds');\n        $log.log('eAlertThresholds component loaded');\n        this.scales = {\n          BP_SYSTOLIC: AlertThresholds.BLOOD_PRESSURE.SYSTOLIC.SCALE,\n          BP_DIASTOLIC: AlertThresholds.BLOOD_PRESSURE.DIASTOLIC.SCALE,\n          BG: AlertThresholds.BLOOD_GLUCOSE.SCALE,\n          BO: AlertThresholds.BLOOD_OXYGEN.SCALE,\n          HR: AlertThresholds.HEARTRATE.SCALE\n        };\n        this.isAuthorized = AuthService.isAuthorized(['role:clinical', 'role:administrative']);\n        return this.setupDefaults();\n      };\n      bpSystolicTemplate = AlertThresholds.DISCLAIMER.SYSTOLIC_DISCLAIMER;\n      bpDiastolicTemplate = AlertThresholds.DISCLAIMER.DIASTOLIC_DISCLAIMER;\n      bloodGlucoseTemplate = AlertThresholds.DISCLAIMER.BG_DISCLAIMER;\n      this.systolicDisclaimer = bpSystolicTemplate;\n      this.diastolicDisclaimer = bpDiastolicTemplate;\n      this.bgDisclaimer = bloodGlucoseTemplate;\n      this.setupDefaults = function () {\n        $log.log('threshold', this.threshold);\n        if (!this.threshold) {\n          this.threshold = Object.assign({\n            patient_user_profile_id: this.patientUserProfile.id\n          }, EAlertThresholdsService.getDefaultThreshold());\n        }\n        this.bpSystolicRegex = REGEX.ALERT_THRESHOLD_BP_SYSTOLIC_RANGE;\n        this.bpDiastolicRegex = REGEX.ALERT_THRESHOLD_BP_DIASTOLIC_RANGE;\n        this.bgRangeRegex = REGEX.ALERT_THRESHOLD_BG_RANGE;\n        this.boRangeRegex = REGEX.ALERT_THRESHOLD_BO_RANGE;\n        this.hrRangeRegex = REGEX.ALERT_THRESHOLD_HR_RANGE;\n        this.weightRangeRegex = REGEX.ALERT_THRESHOLD_WEIGHT_RANGE;\n        this.bpSystolicValidationMessage = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.VALIDATION.BP_SYSTOLIC')\n        }];\n        this.bpDiastolicValidationMessage = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.VALIDATION.BP_DIASTOLIC')\n        }];\n        this.bgValidationMessage = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.VALIDATION.BLOOD_GLUCOSE')\n        }];\n        this.boValidationMessage = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.VALIDATION.BLOOD_OXYGEN')\n        }];\n        this.hrValidationMessage = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.VALIDATION.HEART_RATE')\n        }];\n        this.weightValidationMessage = [{\n          type: 'pattern',\n          message: $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.VALIDATION.WEIGHT')\n        }];\n      };\n      this.$onChanges = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(changes) {\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('changes for e-alerts', changes);\n                if (!changes.patientUserProfile) {\n                  _context.next = 12;\n                  break;\n                }\n                this.patientUserProfile = changes.patientUserProfile.currentValue;\n                this.isLoadingThreshold = true;\n                _context.prev = 4;\n                _context.next = 7;\n                return EAlertThresholdsService.get(this.patientUserProfile.id);\n              case 7:\n                this.threshold = _context.sent;\n                return _context.abrupt(\"return\", this.setupDefaults());\n              case 9:\n                _context.prev = 9;\n                this.isLoadingThreshold = false;\n                return _context.finish(9);\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[4,, 9, 12]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onChange = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(property) {\n          var _len,\n            values,\n            _key,\n            _args2 = arguments;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!(_this.isLoadingThreshold || _this.isSavingThreshold)) {\n                  _context2.next = 3;\n                  break;\n                }\n                $log.log(\"threshold operation in progress; skipping onChange\");\n                return _context2.abrupt(\"return\");\n              case 3:\n                _context2.next = 5;\n                return EAlertThresholdsService.get(_this.patientUserProfile.id);\n              case 5:\n                _this.previouslySavedThresholds = _context2.sent;\n                for (_len = _args2.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                  values[_key - 1] = _args2[_key];\n                }\n                $log.log(\"onChange: \".concat(property, \" \").concat(values));\n                if (!(((values != null ? values[0] : void 0) === void 0 || (values != null ? values[0] : void 0) === null) && (property === 'BP_CUFF' || property === 'HEARTRATE' || property === 'GLUCOMETER' || property === 'PULSE_OXIMETER' || property === 'weight_increase' || property === 'weight_decrease'))) {\n                  _context2.next = 10;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 10:\n                if (!(property === AlertThresholds.WEIGHT.DECREASE || property === AlertThresholds.WEIGHT.INCREASE)) {\n                  _context2.next = 15;\n                  break;\n                }\n                // update the model immediately to avoid stale value from on-change\n                _this.threshold[\"\".concat(property, \"_pounds\")] = values[0];\n                _this.threshold[\"\".concat(property, \"_num_days\")] = values[1];\n                if (!(!_this.threshold[\"\".concat(property, \"_pounds\")] !== !_this.threshold[\"\".concat(property, \"_num_days\")])) {\n                  _context2.next = 15;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 15:\n                if (property === AlertThresholds.BLOOD_PRESSURE.LOWER_BOUND_TOGGLE) {\n                  // Need to explicitly set this value to the model due to wonkiness with\n                  // how the checkbox input sets the value to its model.\n                  _this.threshold[property] = values[0];\n                  _this.threshold.systolic_low_threshold = EAlertThresholdsService.getDefaultThreshold().systolic_low_threshold;\n                  _this.threshold.diastolic_low_threshold = EAlertThresholdsService.getDefaultThreshold().diastolic_low_threshold;\n                }\n                if (!_this.threshold.is_blood_pressure_alert_enabled) {\n                  _context2.next = 27;\n                  break;\n                }\n                if (!(_this.threshold.systolic_low_threshold >= _this.threshold.systolic_high_threshold)) {\n                  _context2.next = 22;\n                  break;\n                }\n                NotificationsService.error('Entry range is invalid: Low threshold must be below high threshold');\n                _this.threshold.systolic_low_threshold = _this.previouslySavedThresholds.systolic_low_threshold;\n                _this.threshold.systolic_high_threshold = _this.previouslySavedThresholds.systolic_high_threshold;\n                return _context2.abrupt(\"return\");\n              case 22:\n                if (!(_this.threshold.diastolic_low_threshold >= _this.threshold.diastolic_high_threshold)) {\n                  _context2.next = 27;\n                  break;\n                }\n                NotificationsService.error('Entry range is invalid: Low threshold must be below high threshold');\n                _this.threshold.diastolic_low_threshold = _this.previouslySavedThresholds.diastolic_low_threshold;\n                _this.threshold.diastolic_high_threshold = _this.previouslySavedThresholds.diastolic_high_threshold;\n                return _context2.abrupt(\"return\");\n              case 27:\n                if (!_this.threshold.is_heartrate_alert_enabled) {\n                  _context2.next = 33;\n                  break;\n                }\n                if (!(_this.threshold.heartrate_low_threshold >= _this.threshold.heartrate_high_threshold)) {\n                  _context2.next = 33;\n                  break;\n                }\n                NotificationsService.error('Entry range is invalid: Low threshold must be below high threshold');\n                _this.threshold.heartrate_low_threshold = _this.previouslySavedThresholds.heartrate_low_threshold;\n                _this.threshold.heartrate_high_threshold = _this.previouslySavedThresholds.heartrate_high_threshold;\n                return _context2.abrupt(\"return\");\n              case 33:\n                if (!_this.threshold.is_blood_glucose_alert_enabled) {\n                  _context2.next = 39;\n                  break;\n                }\n                if (!(_this.threshold.blood_glucose_low_threshold >= _this.threshold.blood_glucose_high_threshold)) {\n                  _context2.next = 39;\n                  break;\n                }\n                NotificationsService.error('Entry range is invalid: Low threshold must be below high threshold');\n                _this.threshold.blood_glucose_low_threshold = _this.previouslySavedThresholds.blood_glucose_low_threshold;\n                _this.threshold.blood_glucose_high_threshold = _this.previouslySavedThresholds.blood_glucose_high_threshold;\n                return _context2.abrupt(\"return\");\n              case 39:\n                if (!(_this.threshold.is_blood_pressure_alert_enabled && ![_this.threshold.systolic_low_threshold, _this.threshold.systolic_high_threshold, _this.threshold.diastolic_low_threshold, _this.threshold.diastolic_high_threshold].every(function (val) {\n                  return val != null;\n                }))) {\n                  _context2.next = 41;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 41:\n                if (!(_this.threshold.is_weight_alert_enabled && ![_this.threshold.weight_decrease_num_days, _this.threshold.weight_decrease_pounds, _this.threshold.weight_increase_num_days, _this.threshold.weight_increase_pounds].every(function (val) {\n                  return val != null;\n                }))) {\n                  _context2.next = 43;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 43:\n                if (!(_this.threshold.is_heartrate_alert_enabled && ![_this.threshold.heartrate_high_threshold, _this.threshold.heartrate_low_threshold].every(function (val) {\n                  return val != null;\n                }))) {\n                  _context2.next = 45;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 45:\n                if (!(_this.threshold.is_blood_glucose_alert_enabled && ![_this.threshold.blood_glucose_low_threshold, _this.threshold.blood_glucose_high_threshold].every(function (val) {\n                  return val != null;\n                }))) {\n                  _context2.next = 47;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 47:\n                if (!(_this.threshold.is_blood_oxygen_alert_enabled && _this.threshold.blood_oxygen_low_threshold === null)) {\n                  _context2.next = 49;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 49:\n                _this.validateWeightThresholds();\n                _this.onSave();\n                return _context2.abrupt(\"return\", _this.notify(property, values));\n              case 52:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onSave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log.log('onSave:this.threshold', this.threshold);\n              if (!(this.isLoadingThreshold || this.isSavingThreshold)) {\n                _context3.next = 3;\n                break;\n              }\n              return _context3.abrupt(\"return\");\n            case 3:\n              this.isSavingThreshold = true;\n              _context3.prev = 4;\n              if (!this.threshold.id) {\n                _context3.next = 10;\n                break;\n              }\n              _context3.next = 8;\n              return EAlertThresholdsService.put(this.patientUserProfile.id, this.threshold);\n            case 8:\n              _context3.next = 13;\n              break;\n            case 10:\n              _context3.next = 12;\n              return EAlertThresholdsService.post(this.patientUserProfile.id, this.threshold);\n            case 12:\n              this.threshold = _context3.sent;\n            case 13:\n              _context3.next = 19;\n              break;\n            case 15:\n              _context3.prev = 15;\n              _context3.t0 = _context3[\"catch\"](4);\n              error = _context3.t0;\n              NotificationsService.error(error);\n            case 19:\n              _context3.prev = 19;\n              this.isSavingThreshold = false;\n              return _context3.finish(19);\n            case 22:\n              // we have to broadcast this change so the audit log list can be property updated\n              $rootScope.$broadcast(AlertThresholds.ON_SAVE_EVENT);\n            case 23:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[4, 15, 19, 22]]);\n      }));\n      this.resetToDefault = function () {\n        var i, len, p;\n        for (var _len2 = arguments.length, properties = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          properties[_key2] = arguments[_key2];\n        }\n        for (i = 0, len = properties.length; i < len; i++) {\n          p = properties[i];\n          this.threshold[p] = EAlertThresholdsService.getDefaultThreshold()[p];\n        }\n        this.onSave();\n        this.notify();\n      };\n      this.validateWeightThresholds = function () {\n        var i, len, property, ref, results;\n        ref = [AlertThresholds.WEIGHT.DECREASE, AlertThresholds.WEIGHT.INCREASE];\n        // check both pairs of inputs and null out if they are invalid\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n          property = ref[i];\n          if (!this.threshold[\"\".concat(property, \"_pounds\")] !== !this.threshold[\"\".concat(property, \"_num_days\")]) {\n            this.threshold[\"\".concat(property, \"_pounds\")] = null;\n            results.push(this.threshold[\"\".concat(property, \"_num_days\")] = null);\n          } else {\n            results.push(void 0);\n          }\n        }\n        return results;\n      };\n      this.notify = function (property, values) {\n        var biometricType, doesPatientHaveCategory, patientCategories, propertyCategories;\n        if (!property) {\n          NotificationsService.success(\"Alert threshold reset to default\");\n          return;\n        }\n        propertyCategories = function () {\n          switch (property) {\n            case 'is_blood_pressure_alert_enabled':\n            case AlertThresholds.BLOOD_PRESSURE.LOWER_BOUND_TOGGLE:\n              return ['BP_CUFF'];\n            case 'is_weight_alert_enabled':\n            case AlertThresholds.WEIGHT.DECREASE:\n            case AlertThresholds.WEIGHT.INCREASE:\n              return ['SCALE'];\n            case 'is_blood_glucose_alert_enabled':\n              return ['GLUCOMETER'];\n            case 'is_blood_oxygen_alert_enabled':\n              return ['PULSE_OXIMETER'];\n            case 'is_heartrate_alert_enabled':\n            case 'HEARTRATE':\n              return ['BP_CUFF', 'PULSE_OXIMETER'];\n            default:\n              return [property];\n            // the property is the category when modifying the threshold values\n          }\n        }();\n        patientCategories = this.patientUserProfile.devices.map(function (device) {\n          return device.device_type.category;\n        });\n        doesPatientHaveCategory = propertyCategories.some(function (category) {\n          return indexOf.call(patientCategories, category) >= 0;\n        });\n        if (doesPatientHaveCategory) {\n          // determine the name of the biometric toggled\n          biometricType = function () {\n            switch (property) {\n              case 'is_blood_pressure_alert_enabled':\n                return 'blood pressure cuff';\n              case 'is_weight_alert_enabled':\n                return 'scale';\n              case 'is_blood_glucose_alert_enabled':\n                return 'glucometer';\n              case 'is_blood_oxygen_alert_enabled':\n                return 'pulse oximeter';\n              case 'is_heartrate_alert_enabled':\n                return 'heart rate';\n              default:\n                return null;\n            }\n          }();\n          // patient has a device in this category, show a success message\n          if (biometricType) {\n            // enable/disable\n            NotificationsService.success(\"Alerts for \".concat(this.patientUserProfile.name_first, \" \").concat(this.patientUserProfile.name_last, \"'s \").concat(biometricType, \" readings are \").concat(this.threshold[property] ? 'on' : 'off', \" for all providers\"));\n          } else if (property === AlertThresholds.BLOOD_PRESSURE.LOWER_BOUND_TOGGLE) {\n            NotificationsService.success(\"Low blood pressure alerts for \".concat(this.patientUserProfile.name_first, \" \").concat(this.patientUserProfile.name_last, \" have been \").concat(values[0] === true ? 'enabled' : 'disabled', \" for all providers.\"));\n          } else if (property === AlertThresholds.WEIGHT.DECREASE || property === AlertThresholds.WEIGHT.INCREASE) {\n            // weight only\n            if (values[0] && values[1]) {\n              NotificationsService.success(\"Alert threshold changed to \".concat(values[0], \" lbs. \").concat(property === AlertThresholds.WEIGHT.DECREASE ? 'lost' : 'gained', \" over \").concat(values[1], \" days for all providers\"));\n            } else {\n              NotificationsService.success(\"Alert threshold removed for weight \".concat(property === AlertThresholds.WEIGHT.DECREASE ? 'loss' : 'gain'));\n            }\n          } else if (values != null ? values.length : void 0) {\n            // any threshold value(s)\n            if (property === 'BP_CUFF' && !this.threshold.is_blood_pressure_lower_bound_enabled) {\n              NotificationsService.success(\"Alert threshold changed to \\u2265 \".concat(values[1], \" for all providers.\"));\n            } else {\n              NotificationsService.success(\"Alert threshold changed to ≤ \" + values[0] + (values[1] ? \" or ≥ \" + values[1] : '') + \" for all providers\");\n            }\n          }\n        } else {\n          // the patient does NOT have this device, so we'll warn the user\n          NotificationsService.warn(\"This patient has not been assigned a \".concat(propertyCategories.join(' or ').replaceAll('_', ' ').toLowerCase(), \". If you would like to add a device please contact support@100plus.com\"));\n        }\n      };\n    },\n    templateUrl: 'app/components/portal/enterprise/e-alert-thresholds/e-alert-thresholds.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('enterprise').component('eAgreements', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '=',\n      latestSignedContractState: '<',\n      enterpriseCustomer: '<',\n      eCustomerFees: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ModalService, $filter, env, $rootScope, $state, AuthService, NotificationsService, $cookies) {\n      this.$onInit = function () {\n        var _this = this;\n        var modalDefaults;\n        $log = $log.getInstance('eAgreements');\n        $log.log('$onInit');\n        $log.log('this.enterpriseCustomer', this.enterpriseCustomer);\n        // https://developer.pactsafe.com/docs/how-to-use-dynamic-contracts-with-the-javascript-library\n        this.monthlyFeePerPatient = $filter('currency')(this.eCustomerFees[0].monthly_fee_per_patient_cents / 100, '');\n        this.pactSafeGroupId = this.enterpriseCustomer.pactsafe_contract_group_id;\n        modalDefaults = {\n          windowClass: 'agreements-modal',\n          backdrop: 'static',\n          keyboard: false,\n          controller: function controller($scope, $uibModalInstance, $state) {\n            $scope.modalOptions = {\n              isLoading: true,\n              displayLaterBtn: AuthService.isAdmin() || AuthService.isAccountManager() || _this.enterpriseCustomer.id === 'ac9df775-3b06-4cc9-91db-5b357bd61ce6',\n              init: function init() {\n                $log.log('loaded');\n                $scope.modalOptions.isLoading = false;\n                $scope.modalOptions.enterpriseCustomer = _this.enterpriseCustomer;\n                return _this.loadPactsafe();\n              },\n              close: function close(result) {\n                return $uibModalInstance.close(false);\n              },\n              ok: function ok(result) {\n                return $uibModalInstance.close(result);\n              }\n            };\n            ModalService.goToParentAfterClose($scope, $state);\n          },\n          templateUrl: 'app/components/portal/enterprise/e-agreements/e-agreements.html'\n        };\n        return ModalService.showModal(modalDefaults);\n      };\n      this.loadPactsafe = function () {\n        var _this2 = this;\n        _ps('create', env.pactsafe.site_access_id, {\n          disable_sending: true,\n          dynamic: true\n        });\n        return _ps('load', this.pactSafeGroupId, {\n          container_selector: 'agreements',\n          render_data: {\n            signing_user_profile_id: this.user.user_profile.id,\n            name_first: this.user.user_profile.name_first,\n            name_last: this.user.user_profile.name_last,\n            email: this.user.user_profile.email,\n            auth0_user_id: this.user.auth0_user_id,\n            monthly_fee_per_patient: this.monthlyFeePerPatient\n          },\n          event_callback: function event_callback() {\n            $log.log('event_callback');\n            _ps('set', 'signer_id', _this2.user.user_profile.email);\n            //          _ps.on('all', (args) ->\n            //            $log.log 'event', args\n            //          )\n            //          _ps.on('ready', ->\n            //            $log.log 'ready'\n            //          )\n            return _ps.on('valid', function () {\n              return _this2.agreed();\n            });\n          }\n        });\n      };\n      this.agreed = function () {\n        return _ps(this.pactSafeGroupId + ':send', 'agreed', {\n          disable_sending: false,\n          event_callback: function event_callback(err, event_type, context, payload) {\n            $rootScope.$digest();\n            // $log.log 'err', err, event_type, context, payload\n            if (err) {\n              $log.log('pactsafe error', err);\n              return NotificationsService.error(err);\n            } else {\n              return $state.go('enterprise.dashboard');\n            }\n          }\n        });\n      };\n      this.completeSigningLater = function () {\n        $log.log(\"bypass_contract\", \"1\");\n        $cookies.put(\"bypass_contract\", '1');\n        $state.go('enterprise.dashboard');\n        return true;\n      };\n      this.$onDestroy = function () {\n        $log.log('removing _ps');\n        _ps.off();\n        return _ps.remove('s0');\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('dxCodes', {\n    bindings: {\n      patientUserProfile: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, UserProfilesService, NotificationsService, Icd10Service) {\n      this.$onInit = function () {\n        $log = $log.getInstance('dxCodes');\n        $log.log('onInit');\n        this.editingDxCodes = false;\n        return this._syncDiagnosisCodesFromProfile();\n      };\n      this.$onChanges = function (changes) {\n        if (changes.patientUserProfile && !this.editingDxCodes) {\n          return this._syncDiagnosisCodesFromProfile();\n        }\n      };\n      this._syncDiagnosisCodesFromProfile = function () {\n        var codes, ref, ref1, ref2;\n        codes = (ref = this.patientUserProfile) != null ? (ref1 = ref.enterprise_chart) != null ? (ref2 = ref1.diagnosis) != null ? ref2.codes : void 0 : void 0 : void 0;\n        return this.diagnosis_codes = (codes != null ? codes.length : void 0) ? angular.copy(codes) : [];\n      };\n      this._getEnterpriseChartForSave = function () {\n        var chart, ref;\n        chart = (ref = this.patientUserProfile) != null ? ref.enterprise_chart : void 0;\n        if (!(chart != null ? chart.id : void 0)) {\n          return null;\n        }\n        if (chart.diagnosis == null) {\n          chart.diagnosis = {\n            codes: []\n          };\n        }\n        return chart;\n      };\n      this.beginEditDxCodes = function () {\n        var ref, ref1;\n        if (!((ref = this.patientUserProfile) != null ? (ref1 = ref.enterprise_chart) != null ? ref1.id : void 0 : void 0)) {\n          NotificationsService.error('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.DX_CODES_UPDATE_FAILED');\n          return;\n        }\n        this._syncDiagnosisCodesFromProfile();\n        return this.editingDxCodes = true;\n      };\n      this.cancelEditDxCodes = function () {\n        this._syncDiagnosisCodesFromProfile();\n        return this.editingDxCodes = false;\n      };\n      this.onDiagnosisAdded = function () {\n        var ref, ref1, ref2;\n        $log.log('dxCodes', this.diagnosis_codes, (ref = this.patientUserProfile) != null ? (ref1 = ref.enterprise_chart) != null ? (ref2 = ref1.diagnosis) != null ? ref2.codes : void 0 : void 0 : void 0);\n      };\n      this.loadDiagnoses = function (query) {\n        var _this = this;\n        $log.log('query', query);\n        this.isTagLoading = true;\n        return Icd10Service.search(query, 8).then(function (icd10s) {\n          _this.isTagLoading = false;\n          $log.log('query', icd10s);\n          _.map(icd10s, function (icd10) {\n            return icd10.displayText = icd10.code + \": \" + icd10.description;\n          });\n          return icd10s;\n        });\n      };\n      this.onSave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var chart, error, ref, ref1, ref2, ref3, ref4, updatedChart;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              chart = this._getEnterpriseChartForSave();\n              if (chart) {\n                _context.next = 5;\n                break;\n              }\n              NotificationsService.error('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.DX_CODES_UPDATE_FAILED');\n              this.editingDxCodes = false;\n              return _context.abrupt(\"return\");\n            case 5:\n              chart.diagnosis.codes = this.diagnosis_codes || [];\n              _context.prev = 6;\n              _context.next = 9;\n              return UserProfilesService.updateEnterpriseChart(chart);\n            case 9:\n              updatedChart = _context.sent;\n              if (updatedChart != null ? (ref = updatedChart.diagnosis) != null ? ref.codes : void 0 : void 0) {\n                chart.diagnosis.codes = updatedChart.diagnosis.codes;\n              }\n              return _context.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.DX_CODES_UPDATED'));\n            case 14:\n              _context.prev = 14;\n              _context.t0 = _context[\"catch\"](6);\n              error = _context.t0;\n              $log.log('UserProfilesService.updateEnterpriseChart error', error);\n              NotificationsService.error(((ref1 = error.data) != null ? ref1.errorMessage : void 0) || ((ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.message : void 0 : void 0) || ((ref4 = error.data) != null ? ref4.message : void 0) || 'PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.DX_CODES_UPDATE_FAILED');\n              return _context.abrupt(\"return\", this._syncDiagnosisCodesFromProfile());\n            case 20:\n              _context.prev = 20;\n              this.editingDxCodes = false;\n              return _context.finish(20);\n            case 23:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[6, 14, 20, 23]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/enterprise/dx-codes/dx-codes.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:cardWrapper\n   * @restrict E\n   * @description\n   * Wraps both the card and cardInfo components. Nothing special, but allows for global card logic in the future, if needed.\n   * IMPORTANT: only use template: and not templateUrl: with this component so that the $postLink event works w/ transclusion: https://docs.angularjs.org/api/ng/service/$compile#life-cycle-hooks\n   * @example\n  <pre>\n    <card-wrapper>\n      <card card-name=\"my-class-name\">\n        my info\n      </card>\n  </card-wrapper>\n  </pre>\n   */\n  angular.module('enterprise').component('cardWrapper', {\n    bindings: {},\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('cardWrapper');\n      };\n    },\n    template: \"<div class=\\\"card-wrapper\\\">\\n  <ng-transclude></ng-transclude>\\n</div>\"\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:card\n   * @restrict E\n   * @param {string} cardName adds a css class to the card div\n   * @description\n   * Used inside it's parent component, card-wrapper. Everything placed inside this component is placed within a site 'card' - white background, drop shadow.\n   * IMPORTANT: only use template: and not templateUrl: with this component so that the $postLink event works w/ transclusion: https://docs.angularjs.org/api/ng/service/$compile#life-cycle-hooks\n   * @example\n  <pre>\n    <card-wrapper>\n      <card card-name=\"my-class-name\">\n        my info\n      </card>\n  </card-wrapper>\n  </pre>\n   */\n  angular.module('enterprise').component('card', {\n    bindings: {\n      cardName: '@'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('card');\n      };\n    },\n    template: \"<div class=\\\"card {{::vm.cardName}}\\\">\\n  <ng-transclude></ng-transclude>\\n</div>\"\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:badgeList\n   * @restrict E\n   * @param {object} rolesToDisplay Roles to display as badges\n   * @description\n   * This will display list of roles as badges.\n   */\n  angular.module('enterprise').component('rolesBadgeList', {\n    bindings: {\n      rolesToDisplay: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('rolesBadgeList');\n      };\n    },\n    template: '<span ng-repeat=\"role in vm.rolesToDisplay track by $index\" class=\"badge role-badge\">{{role}}<span>'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:providersList\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the current practice\n   * @param {object} enterpriseInvites the admin invites for practice\n   * @param {object} providers all providers for practice\n   * @description\n   * Displays list of providers in practice\n   */\n  angular.module('enterprise').component('providersList', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      enterpriseInvites: '<',\n      providers: '<',\n      enterpriseRoles: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, EnterpriseInvitationsService, NotificationsService, ModalService, ECustomersService) {\n      var _this = this;\n      this.$onInit = function () {\n        $log = $log.getInstance('providersList');\n        $log.log('providersList component loaded');\n        this.translateData = {\n          practiceName: this.enterpriseCustomer.name\n        };\n        this.rolesMap = _.reduce(this.enterpriseRoles, function (result, role) {\n          result[role.name] = role.label;\n          return result;\n        }, {});\n        this.rolesOptions = _.map(this.enterpriseRoles, function (role) {\n          return {\n            label: role.label,\n            name: role.name\n          };\n        });\n        this.rolesDropDownSettings = {\n          checkBoxes: true,\n          showCheckAll: false,\n          showUncheckAll: false,\n          smartButtonMaxItems: 3,\n          smartButtonTextConverter: function smartButtonTextConverter(role) {\n            return role.label;\n          }\n        };\n        this.allStaff = [];\n        this.populateRoles();\n      };\n      this.$onChanges = function () {\n        return _this.populateRoles();\n      };\n      this.populateRoles = function () {\n        var allProviders;\n        allProviders = [];\n        _.forEach(_.filter(_this.enterpriseInvites, function (invite) {\n          return !invite.accepted_at;\n        }), function (invite) {\n          var staff;\n          staff = {\n            id: invite.id,\n            type: 'invite',\n            created_at: invite.created_at,\n            name_first: invite.name_first,\n            name_last: invite.name_last,\n            practice_roles: invite.enterprise_invitation_practice_roles,\n            email: invite.email,\n            invited_by: {\n              name_first: invite.initiator_user_profile.name_first || '',\n              name_last: invite.initiator_user_profile.name_last || ''\n            },\n            isExpired: luxon.DateTime.fromISO(invite.expires_at) < luxon.DateTime.local(),\n            isEditing: false,\n            saveRoles: function saveRoles(updatedRoles) {\n              return EnterpriseInvitationsService.put(_this.enterpriseCustomer.id, {\n                enterprise_roles: updatedRoles,\n                id: staff.id\n              });\n            }\n          };\n          staff.roles = invite.enterprise_roles || [];\n          staff.rolesLabel = _this.getRoleLabels(staff.roles);\n          staff.selectedRoles = _.filter(_this.rolesOptions, function (ro) {\n            return staff.roles.includes(ro.name);\n          });\n          staff.status = staff.isExpired ? 'EXPIRED' : 'PENDING ACCEPTANCE';\n          return allProviders.push(staff);\n        });\n        _.forEach(_this.providers, /*#__PURE__*/function () {\n          var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(provider) {\n            var invitation_initiator, staff;\n            return regeneratorRuntime.wrap(function _callee$(_context) {\n              while (1) switch (_context.prev = _context.next) {\n                case 0:\n                  invitation_initiator = provider.received_enterprise_invite ? provider.received_enterprise_invite.initiator_user_profile ? provider.received_enterprise_invite.initiator_user_profile : null : null;\n                  staff = {\n                    id: provider.id,\n                    type: 'provider',\n                    created_at: provider.created_at,\n                    name_first: provider.name_first,\n                    name_last: provider.name_last,\n                    practice_roles: provider.user_profile_practice_roles,\n                    email: provider.email,\n                    invited_by: {\n                      name_first: invitation_initiator ? invitation_initiator.name_first : '',\n                      name_last: invitation_initiator ? invitation_initiator.name_last : ''\n                    },\n                    status: 'ACTIVE',\n                    isExpired: false,\n                    isEditing: false,\n                    saveRoles: function saveRoles(updatedRoles) {\n                      $log.log('saving roles for provider', updatedRoles);\n                      return ECustomersService.updateProviderRoles(_this.enterpriseCustomer.id, staff.id, updatedRoles);\n                    }\n                  };\n                  _context.next = 4;\n                  return ECustomersService.getProviderRoles(_this.enterpriseCustomer.id, provider.id);\n                case 4:\n                  _context.t0 = _context.sent;\n                  if (_context.t0) {\n                    _context.next = 7;\n                    break;\n                  }\n                  _context.t0 = [];\n                case 7:\n                  staff.roles = _context.t0;\n                  staff.rolesLabel = _this.getRoleLabels(staff.roles);\n                  staff.selectedRoles = _.filter(_this.rolesOptions, function (ro) {\n                    return staff.roles.includes(ro.name);\n                  });\n                  return _context.abrupt(\"return\", allProviders.push(staff));\n                case 11:\n                case \"end\":\n                  return _context.stop();\n              }\n            }, _callee);\n          }));\n          return function (_x) {\n            return _ref.apply(this, arguments);\n          };\n        }());\n        _this.allStaff = allProviders;\n      };\n      this.getRoleLabels = function (roles) {\n        if (!_this.rolesMap) {\n          _this.rolesMap = {};\n        }\n        if (roles) {\n          return _.map(roles, function (roleName) {\n            if (_this.rolesMap.hasOwnProperty(roleName)) {\n              return _this.rolesMap[roleName];\n            } else {\n              return roleName;\n            }\n          });\n        } else {\n          return [];\n        }\n      };\n      this.deleteInvite = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(inviteId) {\n          var err;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return EnterpriseInvitationsService.delete(this.enterpriseCustomer.id, inviteId);\n              case 3:\n                $rootScope.$emit('enterprise_invitations_get_all');\n                return _context2.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.NOTIFICATION.INVITE_DELETED'));\n              case 7:\n                _context2.prev = 7;\n                _context2.t0 = _context2[\"catch\"](0);\n                err = _context2.t0;\n                $log.log('deleteInvite', err);\n                return _context2.abrupt(\"return\", NotificationsService.error('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.NOTIFICATION.INVITE_DELETION_ERROR'));\n              case 12:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[0, 7]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.resendInvitation = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(inviteId) {\n          var err;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.prev = 0;\n                _context3.next = 3;\n                return EnterpriseInvitationsService.resend(this.enterpriseCustomer.id, inviteId);\n              case 3:\n                $rootScope.$emit('enterprise_invitations_get_all');\n                return _context3.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.NOTIFICATION.INVITE_RESEND'));\n              case 7:\n                _context3.prev = 7;\n                _context3.t0 = _context3[\"catch\"](0);\n                err = _context3.t0;\n                $log.log('resendInvitation:error', err);\n                return _context3.abrupt(\"return\", NotificationsService.error('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.NOTIFICATION.INVITE_RESEND_ERROR'));\n              case 12:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[0, 7]]);\n        }));\n        return function (_x3) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.editRoles = function (staff) {\n        staff.editedRoles = _toConsumableArray(staff.selectedRoles);\n        return staff.isEditing = true;\n      };\n      this.saveRoles = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(staff) {\n          var error, updatedRoles;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.prev = 0;\n                updatedRoles = _.map(staff.editedRoles, function (er) {\n                  return er.name;\n                });\n                _context4.next = 4;\n                return staff.saveRoles(updatedRoles);\n              case 4:\n                staff.roles = updatedRoles;\n                staff.rolesLabel = this.getRoleLabels(staff.roles);\n                staff.selectedRoles = _.filter(this.rolesOptions, function (ro) {\n                  return staff.roles.includes(ro.name);\n                });\n                NotificationsService.success(\"PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.EDIT_ROLE_MODAL.\".concat(staff.type.toUpperCase(), \"_ROLE_UPDATED\"));\n                _context4.next = 15;\n                break;\n              case 10:\n                _context4.prev = 10;\n                _context4.t0 = _context4[\"catch\"](0);\n                error = _context4.t0;\n                $log.log('editProviderRoles', error);\n                NotificationsService.error('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.EDIT_ROLE_MODAL.ERROR_MESSAGE');\n              case 15:\n                staff.isEditing = false;\n                return _context4.abrupt(\"return\", staff.editedRoles = []);\n              case 17:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this, [[0, 10]]);\n        }));\n        return function (_x4) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/account-settings/providers-list/providers-list.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:providerInvite\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the current practice\n   * @param {object} providers all providers for practice\n   * @description\n   * Send invitation to provider for practice\n   */\n  angular.module('enterprise').component('providerInvite', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      providers: '<',\n      practiceRoles: '<',\n      enterpriseRoles: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $translate, EnterpriseInvitationsService, NotificationsService, ModalService) {\n      var _this = this;\n      this.$onInit = function () {\n        $log = $log.getInstance('providerInvite');\n        $log.log('providerInvite component loaded');\n        $log.log('roles', this.enterpriseRoles);\n        this.practiceRolesOptions = _.map(this.practiceRoles, function (role) {\n          return {\n            label: role.name,\n            value: role.id\n          };\n        });\n        this.providerInviteForm = null;\n        this.translateData = {\n          practiceName: this.enterpriseCustomer.name\n        };\n        this.rolesDropDownSettings = {\n          displayProp: 'label',\n          selectedToTop: false,\n          scrollableHeight: 'inherit',\n          scrollable: true,\n          checkBoxes: true,\n          showCheckAll: false,\n          showUncheckAll: false,\n          buttonClasses: \"button\"\n        };\n        this.rolesOptions = _.map(this.enterpriseRoles, function (r) {\n          return {\n            name: r.name,\n            label: r.label\n          };\n        });\n        this.selectedRoles = [];\n        this.rolesDropDownText = {\n          dynamicButtonTextSuffix: \"Roles Selected\"\n        };\n        this.initInvite();\n      };\n      this.initInvite = function () {\n        this.providerInvite = EnterpriseInvitationsService.new();\n        this.providerInvite.enterprise_customer_id = this.enterpriseCustomer.id;\n        return this.providerInvite.initiator_user_profile_id = this.user.user_profile.id;\n      };\n      this.sendProviderInvite = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              this.submitPromise = EnterpriseInvitationsService.post(this.enterpriseCustomer.id, this.providerInvite);\n              _context.next = 4;\n              return this.submitPromise;\n            case 4:\n              response = _context.sent;\n              $rootScope.$emit('enterprise_invitations_get_all');\n              this.resetForm();\n              $log.log('sendProviderInvite response', response);\n              return _context.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDER_INVITE.TOASTS.SUCCESS'));\n            case 11:\n              _context.prev = 11;\n              _context.t0 = _context[\"catch\"](0);\n              error = _context.t0;\n              $log.log('error', error);\n              return _context.abrupt(\"return\", NotificationsService.error(error.data.data.message));\n            case 16:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[0, 11]]);\n      }));\n      this.resetForm = function () {\n        this.initInvite();\n        this.selectedRoles = [];\n        this.providerInviteForm.$setPristine();\n        return this.providerInviteForm.$setUntouched();\n      };\n      this.roleSelectionChanged = function () {\n        return _this.providerInvite.enterprise_roles = _.map(_this.selectedRoles, function (r) {\n          return r.name;\n        });\n      };\n      this.showRolesModal = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var modalDefaults, modalOptions;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              modalDefaults = {\n                backdrop: true,\n                keyboard: true,\n                modalFade: true,\n                templateUrl: 'app/components/portal/account-settings/provider-invite/roles-modal.html',\n                bindToController: true\n              };\n              _context2.t0 = this.enterpriseRoles;\n              _context2.next = 4;\n              return $translate('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.ENTERPRISE_ROLES');\n            case 4:\n              _context2.t1 = _context2.sent;\n              modalOptions = {\n                roles: _context2.t0,\n                headerText: _context2.t1\n              };\n              $log.log('roles', modalOptions);\n              return _context2.abrupt(\"return\", ModalService.showModal(modalDefaults, modalOptions));\n            case 8:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n    },\n    templateUrl: 'app/components/portal/account-settings/provider-invite/provider-invite.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:patientTestAlerts\n   * @restrict E\n   * @param {object} user user model object\n   * @param {list} providers list of all providers that can be edited\n   * @description\n   * Edit patient test alert settings for passed in providers\n   */\n  var indexOf = [].indexOf;\n  angular.module('accountSettings').component('patientTestAlerts', {\n    bindings: {\n      user: '=',\n      providers: '<',\n      eUserProfile: '<',\n      groupList: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, EUserProfilesService, EProviderAlertSubscriptionsService, NotificationsService, PER_PAGE, GroupService) {\n      this.$onInit = function () {\n        var _this = this,\n          _formattedProviders;\n        var currProvider, formattedProviders, group, i, len, otherProviders, providersNotInOffice, ref, ref1;\n        this.isLoading = true;\n        $log = $log.getInstance('patientTestAlerts');\n        $log.log('patientTestAlerts component loaded');\n        $log.log('eUserProfile', this.eUserProfile.provider_alert_subscriptions);\n        this.itemsPerPage = PER_PAGE.PATIENT_TEST_ALERTS;\n        // Set up providers data for first table\n        formattedProviders = _.map(this.providers, function (provider) {\n          var ref;\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n            value: provider,\n            id: provider.id,\n            type: 'provider',\n            isEnabled: (ref = provider.id, indexOf.call(_.map(_this.eUserProfile.provider_alert_subscriptions, 'primary_provider_id'), ref) >= 0)\n          };\n        });\n        // filter for any existing provider subscriptions to other offices\n        providersNotInOffice = _.filter(this.eUserProfile.provider_alert_subscriptions, function (subscription) {\n          var ref;\n          return subscription.primary_provider_id != null && (ref = subscription.primary_provider_id, indexOf.call(_.map(_this.providers, 'id'), ref) < 0);\n        });\n        (_formattedProviders = formattedProviders).push.apply(_formattedProviders, _toConsumableArray(_.map(providersNotInOffice, function (sub) {\n          var ref, ref1;\n          return {\n            label: \"Provider at \".concat((sub != null ? (ref = sub.primary_provider) != null ? (ref1 = ref.d_o) != null ? ref1.name : void 0 : void 0 : void 0) || 'a different office'),\n            value: sub,\n            id: sub.primary_provider_id,\n            type: 'provider',\n            isEnabled: true\n          };\n        })));\n        // Sort by current logged in user first and then the rest alphabetically\n        currProvider = formattedProviders.filter(function (provider) {\n          return provider.id === _this.eUserProfile.id;\n        });\n        otherProviders = formattedProviders.filter(function (provider) {\n          return provider.id !== _this.eUserProfile.id;\n        });\n        otherProviders = otherProviders.sort(function (a, b) {\n          var ref, ref1, ref2;\n          return a != null ? (ref = a.value) != null ? (ref1 = ref.name_last) != null ? ref1.localeCompare(b != null ? (ref2 = b.value) != null ? ref2.name_last : void 0 : void 0) : void 0 : void 0 : void 0;\n        });\n        this.providerList = currProvider.concat(otherProviders);\n        this.providerPageNumber = 1;\n        this.goToProviderPage();\n        // Set up groups data for second table\n        this.groupPageNumber = 1;\n        // we already resolved the first page of the group list so don't refetch it, just slice it down to page size\n        // make a copy so we have a new object, otherwise the groupList shared with other tabs will be modified\n        this.groupList = angular.copy(this.groupList);\n        this.groupList.data = this.groupList.data.slice(0, this.itemsPerPage);\n        ref = this.groupList.data;\n        for (i = 0, len = ref.length; i < len; i++) {\n          group = ref[i];\n          group.isEnabled = (ref1 = group.id, indexOf.call(_.map(this.eUserProfile.provider_alert_subscriptions, 'group_id'), ref1) >= 0);\n          group.type = 'group';\n        }\n        return this.isLoading = false;\n      };\n      this.goToProviderPage = function () {\n        var startIndex;\n        startIndex = (this.providerPageNumber - 1) * this.itemsPerPage;\n        return this.providerListPage = this.providerList.slice(startIndex, startIndex + this.itemsPerPage);\n      };\n      this.goToGroupPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, group, i, len, ref, ref1;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.isLoading = true;\n              _context.prev = 1;\n              _context.next = 4;\n              return GroupService.getPagedGroupList(this.eUserProfile.enterprise_customer_id, this.user.logged_in_office_id, this.groupPageNumber, this.itemsPerPage, this.user);\n            case 4:\n              this.groupList = _context.sent;\n              ref = this.groupList.data;\n              for (i = 0, len = ref.length; i < len; i++) {\n                group = ref[i];\n                group.isEnabled = (ref1 = group.id, indexOf.call(_.map(this.eUserProfile.provider_alert_subscriptions, 'group_id'), ref1) >= 0);\n                group.type = 'group';\n              }\n              _context.next = 14;\n              break;\n            case 9:\n              _context.prev = 9;\n              _context.t0 = _context[\"catch\"](1);\n              error = _context.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              $log.err('error', error);\n            case 14:\n              return _context.abrupt(\"return\", this.isLoading = false);\n            case 15:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1, 9]]);\n      }));\n      this.onClick = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(subscribedEntity) {\n          var error, subscription;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!this.isLoading) {\n                  _context2.next = 2;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 2:\n                this.isLoading = true;\n                subscribedEntity.isEnabled = !subscribedEntity.isEnabled;\n                if (subscribedEntity.type === 'provider') {\n                  subscription = _.find(this.eUserProfile.provider_alert_subscriptions, function (subscription) {\n                    return subscription.primary_provider_id === subscribedEntity.id;\n                  });\n                } else {\n                  subscription = _.find(this.eUserProfile.provider_alert_subscriptions, function (subscription) {\n                    return subscription.group_id === subscribedEntity.id;\n                  });\n                }\n                _context2.prev = 5;\n                if (!(!subscribedEntity.isEnabled && subscription)) {\n                  _context2.next = 20;\n                  break;\n                }\n                _context2.prev = 7;\n                _context2.next = 10;\n                return EProviderAlertSubscriptionsService.delete(this.eUserProfile.enterprise_customer_id, subscription.id);\n              case 10:\n                _.remove(this.eUserProfile.provider_alert_subscriptions, {\n                  id: subscription.id\n                });\n                _context2.next = 18;\n                break;\n              case 13:\n                _context2.prev = 13;\n                _context2.t0 = _context2[\"catch\"](7);\n                error = _context2.t0;\n                $log.log('error deleting provider alert subscription', error);\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 18:\n                _context2.next = 33;\n                break;\n              case 20:\n                if (!(subscribedEntity.isEnabled && !subscription)) {\n                  _context2.next = 33;\n                  break;\n                }\n                _context2.prev = 21;\n                _context2.next = 24;\n                return EProviderAlertSubscriptionsService.post(this.eUserProfile.enterprise_customer_id, {\n                  alert_type: 'EMAIL',\n                  subscribed_provider_id: this.eUserProfile.id,\n                  primary_provider_id: subscribedEntity.type === 'provider' ? subscribedEntity.id : null,\n                  group_id: subscribedEntity.type === 'group' ? subscribedEntity.id : null\n                });\n              case 24:\n                subscription = _context2.sent;\n                this.eUserProfile.provider_alert_subscriptions.push(subscription);\n                _context2.next = 33;\n                break;\n              case 28:\n                _context2.prev = 28;\n                _context2.t1 = _context2[\"catch\"](21);\n                error = _context2.t1;\n                $log.log('error creating provider alert subscription', error);\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 33:\n                _context2.next = 40;\n                break;\n              case 35:\n                _context2.prev = 35;\n                _context2.t2 = _context2[\"catch\"](5);\n                error = _context2.t2;\n                $log.log('error', error);\n                NotificationsService.error(error.data.errorMessage || error.data.data.message);\n              case 40:\n                return _context2.abrupt(\"return\", this.isLoading = false);\n              case 41:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[5, 35], [7, 13], [21, 28]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      // Currently the subscribedToIdField will be either 'primary_provider_id' or 'group_id'\n      this.getAlertSubscriptionsByType = function (subscribedToIdField) {\n        return _.filter(this.eUserProfile.provider_alert_subscriptions, function (pas) {\n          return !_.isNull(pas[subscribedToIdField]);\n        });\n      };\n      // The alert subscriptions can be for a primary provider or for a patient group so expected subscribedToIdField names\n      // are 'primary_provider_id' or 'group_id'\n      this.toggleAllProviders = function () {\n        var _this2 = this;\n        var existingAlertSubscriptions, requests;\n        if (this.isLoading) {\n          return;\n        }\n        this.isLoading = true;\n        requests = [];\n        existingAlertSubscriptions = this.getAlertSubscriptionsByType('primary_provider_id');\n        if (this.providerList.length === existingAlertSubscriptions.length) {\n          existingAlertSubscriptions.forEach(function (subscription) {\n            return requests.push(EProviderAlertSubscriptionsService.delete(_this2.eUserProfile.enterprise_customer_id, subscription.id));\n          });\n          this.eUserProfile.provider_alert_subscriptions = _.filter(this.eUserProfile.provider_alert_subscriptions, function (pas) {\n            return !_.includes(existingAlertSubscriptions, pas);\n          });\n          this.providerList.forEach(function (p) {\n            return p.isEnabled = false;\n          });\n        } else {\n          this.providerList.forEach(function (provider) {\n            var ref;\n            if (ref = provider.id, indexOf.call(_.map(existingAlertSubscriptions, 'primary_provider_id'), ref) < 0) {\n              requests.push(EProviderAlertSubscriptionsService.post(_this2.eUserProfile.enterprise_customer_id, {\n                alert_type: 'EMAIL',\n                subscribed_provider_id: _this2.eUserProfile.id,\n                primary_provider_id: provider.id\n              }));\n            }\n            return provider.isEnabled = true;\n          });\n        }\n        this.postBatchProviderAlertSubscriptionRequests(requests);\n        return this.isLoading = false;\n      };\n      this.toggleAllGroups = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var _this3 = this;\n        var allGroups, allGroupsResponse, error, existingAlertSubscriptions, group, i, j, len, len1, ref, ref1, requests;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              if (!this.isLoading) {\n                _context3.next = 2;\n                break;\n              }\n              return _context3.abrupt(\"return\");\n            case 2:\n              this.isLoading = true;\n              requests = [];\n              // Only toggle subscriptions of the given type (primary provider or patient group)\n              existingAlertSubscriptions = this.getAlertSubscriptionsByType('group_id');\n              _context3.prev = 5;\n              _context3.next = 8;\n              return GroupService.getAll(this.eUserProfile.enterprise_customer_id, this.user.logged_in_office_id);\n            case 8:\n              allGroupsResponse = _context3.sent;\n              _context3.next = 16;\n              break;\n            case 11:\n              _context3.prev = 11;\n              _context3.t0 = _context3[\"catch\"](5);\n              error = _context3.t0;\n              $log.log('error fetching all groups', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.message);\n            case 16:\n              allGroups = allGroupsResponse.data.data;\n              if (allGroups.length === existingAlertSubscriptions.length) {\n                existingAlertSubscriptions.forEach(function (subscription) {\n                  return requests.push(EProviderAlertSubscriptionsService.delete(_this3.eUserProfile.enterprise_customer_id, subscription.id));\n                });\n                this.eUserProfile.provider_alert_subscriptions = _.filter(this.eUserProfile.provider_alert_subscriptions, function (pas) {\n                  return !_.includes(existingAlertSubscriptions, pas);\n                });\n                this.groupList.data.forEach(function (p) {\n                  return p.isEnabled = false;\n                });\n              } else {\n                for (i = 0, len = allGroups.length; i < len; i++) {\n                  group = allGroups[i];\n                  if (ref = group.id, indexOf.call(_.map(existingAlertSubscriptions, 'group_id'), ref) < 0) {\n                    requests.push(EProviderAlertSubscriptionsService.post(this.eUserProfile.enterprise_customer_id, {\n                      alert_type: 'EMAIL',\n                      subscribed_provider_id: this.eUserProfile.id,\n                      group_id: group.id\n                    }));\n                  }\n                }\n                ref1 = this.groupList.data;\n                for (j = 0, len1 = ref1.length; j < len1; j++) {\n                  group = ref1[j];\n                  group.isEnabled = true;\n                }\n              }\n              this.postBatchProviderAlertSubscriptionRequests(requests);\n              return _context3.abrupt(\"return\", this.isLoading = false);\n            case 20:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[5, 11]]);\n      }));\n      this.postBatchProviderAlertSubscriptionRequests = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(requests) {\n          var _this4 = this;\n          var error, providerAlertSubscriptions;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.prev = 0;\n                _context4.next = 3;\n                return Promise.all(requests);\n              case 3:\n                providerAlertSubscriptions = _context4.sent;\n                return _context4.abrupt(\"return\", providerAlertSubscriptions.forEach(function (providerAlertSubscription) {\n                  if (providerAlertSubscription.id) {\n                    return _this4.eUserProfile.provider_alert_subscriptions.push(providerAlertSubscription);\n                  }\n                }));\n              case 7:\n                _context4.prev = 7;\n                _context4.t0 = _context4[\"catch\"](0);\n                error = _context4.t0;\n                $log.log('error', error);\n                return _context4.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n              case 12:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, null, [[0, 7]]);\n        }));\n        return function (_x2) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.onSave = function () {\n        var _this5 = this;\n        // We have to use $timeout here to prevent updating the user profile with the OLD value\n        // this happens with ng-change binding on parent bindings using '<'\n        // see here for more info: https://github.com/angular/angular.js/issues/4558\n        return this.timeout = $timeout(function () {\n          return EUserProfilesService.put(_this5.eUserProfile.enterprise_customer_id, _this5.eUserProfile);\n        });\n      };\n      this.$onDestroy = function () {\n        return $timeout.cancel(this.timeout);\n      };\n    },\n    templateUrl: 'app/components/portal/account-settings/patient-test-alerts/patient-test-alerts.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('accountSettings').component('patientGroups', {\n    bindings: {\n      user: '=',\n      eUserProfile: '<',\n      careManagerRole: '<',\n      groupList: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, $stateParams, $state, EUserProfilesService, GroupService, GroupRoleService, PER_PAGE, GroupRoles, NotificationsService) {\n      this.itemsPerPage = PER_PAGE.PATIENT_GROUPS;\n      this.pageNumber = $stateParams.group_page || 1;\n      this.maxCareManagersToShow = 10;\n      this.$onInit = function () {\n        $log = $log.getInstance('patientGroups');\n        $log.log('patientGroups component loaded');\n        $log.log('eUserProfile', this.eUserProfile.provider_alert_subscriptions);\n        this.enterpriseCustomerId = this.eUserProfile.enterprise_customer_id;\n        this.officeId = this.user.logged_in_office_id;\n        this.newGroup = {};\n        this.newGroup.enterprise_customer_id = this.enterpriseCustomerId;\n        this.newGroup.office_id = this.officeId;\n        this.newGroup.created_by_user_profile_id = this.user.user_profile.id;\n        this.itemsPerPage = PER_PAGE.PATIENT_GROUPS;\n        this.pageNumber = $stateParams.group_page || 1;\n        return this.isLoading = false;\n      };\n      this.saveGroup = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(groupToSave) {\n          var error, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                if (!groupToSave.id) {\n                  _context.next = 7;\n                  break;\n                }\n                _context.next = 4;\n                return GroupService.update(this.enterpriseCustomerId, this.officeId, groupToSave);\n              case 4:\n                NotificationsService.success('PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TOASTS.UPDATE_SUCCESS');\n                _context.next = 11;\n                break;\n              case 7:\n                _context.next = 9;\n                return GroupService.create(this.enterpriseCustomerId, this.officeId, groupToSave);\n              case 9:\n                this.pageNumber = 1;\n                NotificationsService.success('PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TOASTS.CREATE_SUCCESS');\n              case 11:\n                _context.next = 13;\n                return GroupService.getPagedGroupList(this.enterpriseCustomerId, this.officeId, this.pageNumber, this.itemsPerPage, this.user);\n              case 13:\n                this.groupList = _context.sent;\n                return _context.abrupt(\"return\", this.newGroup.name = \"\");\n              case 17:\n                _context.prev = 17;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                groupToSave.name = groupToSave.original_name;\n                $log.log('error', error);\n                return _context.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.errorMessage : void 0 : void 0 : void 0) || 'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TOASTS.ERROR'));\n              case 23:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 17]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.deleteGroup = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(groupId) {\n          var error, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return GroupService.delete(this.enterpriseCustomerId, this.officeId, groupId);\n              case 3:\n                NotificationsService.success('PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TOASTS.DELETE_SUCCESS');\n                _context2.next = 6;\n                return GroupService.getPagedGroupList(this.enterpriseCustomerId, this.officeId, this.pageNumber, this.itemsPerPage, this.user);\n              case 6:\n                return _context2.abrupt(\"return\", this.groupList = _context2.sent);\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](0);\n                error = _context2.t0;\n                $log.log('error', error);\n                return _context2.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.errorMessage : void 0 : void 0 : void 0) || 'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TOASTS.ERROR'));\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[0, 9]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.goToPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log.log('goToPage', this.pageNumber);\n              _context3.prev = 1;\n              _context3.next = 4;\n              return GroupService.getPagedGroupList(this.enterpriseCustomerId, this.officeId, this.pageNumber, this.itemsPerPage, this.user);\n            case 4:\n              return _context3.abrupt(\"return\", this.groupList = _context3.sent);\n            case 7:\n              _context3.prev = 7;\n              _context3.t0 = _context3[\"catch\"](1);\n              error = _context3.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              return _context3.abrupt(\"return\", $log.log('error', error));\n            case 12:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[1, 7]]);\n      }));\n      this.toggleJoined = function (g) {\n        var _this = this;\n        var deletedMembershipId, membershipsToDelete;\n        if (this.isLoading) {\n          return;\n        }\n        this.isLoading = true;\n        if (g.currentUserIsCareManager) {\n          membershipsToDelete = [];\n          deletedMembershipId = null;\n          _.forEach(g.group_memberships, function (gm) {\n            if (gm.group_role.role === GroupRoles.CARE_MANAGER && gm.user_profile.id === _this.user.user_profile.id) {\n              membershipsToDelete.push(gm);\n              return deletedMembershipId = gm.id;\n            }\n          });\n          if (membershipsToDelete) {\n            GroupService.removeMemberships(this.enterpriseCustomerId, this.officeId, g.id, membershipsToDelete);\n          }\n          g.currentUserIsCareManager = false;\n          g.careManagers = _.reject(g.careManagers, function (name) {\n            return name === _this.user.user_profile.name_first + ' ' + _this.user.user_profile.name_last;\n          });\n          _.remove(g.group_memberships, {\n            id: deletedMembershipId\n          });\n        } else {\n          // Add the group membership\n          GroupService.addMemberships(this.enterpriseCustomerId, this.officeId, g.id, [{\n            group_id: g.id,\n            user_profile_id: this.user.user_profile.id,\n            role_id: this.careManagerRole.id\n          }]).then(function (result) {\n            var newMembership;\n            newMembership = result[0];\n            newMembership.group_role = _this.careManagerRole;\n            newMembership.user_profile = _this.user.user_profile;\n            return g.group_memberships.push(newMembership);\n          });\n          g.currentUserIsCareManager = true;\n          g.careManagers.push(this.user.user_profile.name_first + ' ' + this.user.user_profile.name_last);\n        }\n        g.careManagers = g.careManagers.sort();\n        return this.isLoading = false;\n      };\n      this.getCareManagerTooltip = function (careManagers) {\n        var careManager, html, i, len;\n        html = \"\";\n        for (i = 0, len = careManagers.length; i < len; i++) {\n          careManager = careManagers[i];\n          html = html + careManager + \"<br/>\";\n        }\n        return html;\n      };\n    },\n    templateUrl: 'app/components/portal/account-settings/patient-groups/patient-groups.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ehrProviderSettings\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the current practice\n   * @param {object} providers all providers for practice\n   * @param {[object]} a list of credential field types for the ehr type\n   * @description\n   * EHR Provider based settings\n   */\n  angular.module('enterprise').component('ehrProviderSettings', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      providers: '<',\n      ehrTypeCredentialFields: '<',\n      amdOffice: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $filter, NotificationsService, EhrTypesService, EhrIntegrationService, ECustomersService, AuthService, INTEROPS_EMAIL) {\n      this.$onInit = function () {\n        var ref, ref1, ref2, ref3, ref4;\n        $log = $log.getInstance('ehrProviderSettings');\n        $log.log('ehrProviderSettings component loaded');\n        this.mailToEmail = INTEROPS_EMAIL.EMAIL;\n        this.activeStatus = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_STATUS.ACTIVE');\n        this.inactiveStatus = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_STATUS.INACTIVE');\n        if (this.amdOffice || this.enterpriseCustomer.ehr_type_id) {\n          this.integrationStatus = '';\n          this.isIntegrationStatusLoading = true;\n          this.getIntegrationStatus();\n        } else {}\n        this.integrationStatus = this.inactiveStatus;\n        this.isAdmin = AuthService.isAdmin() || AuthService.isAccountManager();\n        $log.log('practice', this.enterpriseCustomer);\n        this.ehrTypeSearch = (ref = this.enterpriseCustomer.ehr_type) != null ? ref.name : void 0;\n        this.credentialsLabelText = (ref1 = this.enterpriseCustomer.ehr_type) != null ? ref1.name : void 0;\n        this.integratedAt = (ref2 = this.enterpriseCustomer.ehr_type) != null ? ref2.integrated_at : void 0;\n        $log.log('this.ehrTypeCredentialFields', this.ehrTypeCredentialFields);\n        this.ehrTypeCredentialFields = EhrTypesService.orderFields(this.ehrTypeCredentialFields, (ref3 = this.enterpriseCustomer.ehr_type) != null ? ref3.key_name : void 0);\n        this.requestIntegrationSubject = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.SUBJECT', {\n          practiceName: this.enterpriseCustomer.name\n        });\n        return this.requestIntegrationBody = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.BODY', {\n          practiceName: this.enterpriseCustomer.name,\n          ehrName: (ref4 = this.enterpriseCustomer.ehr_type) != null ? ref4.name : void 0,\n          providerName: this.user.current_account.getFullName()\n        });\n      };\n      this.resetCredentialFields = function () {\n        return this.ehrCredentials = {};\n      };\n      this.searchEhrTypes = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(query) {\n          var e, ehrTypesResults, errorMessage;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return EhrTypesService.search(query);\n              case 3:\n                ehrTypesResults = _context.sent;\n                return _context.abrupt(\"return\", ehrTypesResults);\n              case 7:\n                _context.prev = 7;\n                _context.t0 = _context[\"catch\"](0);\n                e = _context.t0;\n                $log.log(e);\n                errorMessage = _.get(e, 'data.data.message');\n                return _context.abrupt(\"return\", NotificationsService.error(errorMessage));\n              case 13:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, null, [[0, 7]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onEhrTypeSelect = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(payload) {\n          var e, errorMessage;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.ehrTypeCredentialFields = [];\n                this.enterpriseCustomer.ehr_type_id = payload.id;\n                this.credentialsLabelText = payload.model;\n                this.integratedAt = payload.integratedAt;\n                this.resetCredentialFields();\n                _context2.prev = 5;\n                _context2.next = 8;\n                return EhrTypesService.getCredentialFields(payload.id);\n              case 8:\n                this.ehrTypeCredentialFields = _context2.sent;\n                this.ehrTypeCredentialFields = EhrTypesService.orderFields(this.ehrTypeCredentialFields, payload.keyName);\n                $log.log('ehrTypeCredentialFields', this.ehrTypeCredentialFields);\n                return _context2.abrupt(\"return\", this.requestIntegrationBody = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.BODY', {\n                  practiceName: this.enterpriseCustomer.name,\n                  ehrName: payload.model,\n                  providerName: this.user.current_account.getFullName()\n                }));\n              case 14:\n                _context2.prev = 14;\n                _context2.t0 = _context2[\"catch\"](5);\n                e = _context2.t0;\n                $log.log(e);\n                errorMessage = _.get(e, 'data.data.message');\n                return _context2.abrupt(\"return\", NotificationsService.error(errorMessage));\n              case 20:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[5, 14]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.saveForm = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var e, errorMessage, requestBody;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              this.isLoading = true;\n              requestBody = Object.assign({}, this.ehrCredentials, {\n                ehr_type_id: this.enterpriseCustomer.ehr_type_id,\n                enterprise_customer_id: this.enterpriseCustomer.id\n              });\n              _context3.prev = 2;\n              $log.log(this.isAdmin, new Date(this.integratedAt).getTime() <= Date.now(), !this.isCredentialsFormIncomplete());\n              if (!(this.isAdmin && new Date(this.integratedAt).getTime() <= Date.now() && !this.isCredentialsFormIncomplete())) {\n                _context3.next = 14;\n                break;\n              }\n              _context3.next = 7;\n              return EhrIntegrationService.storeCredentials(requestBody);\n            case 7:\n              this.submitPromise = _context3.sent;\n              $log.log('responseFromPromise: ', this.submitPromise);\n              if (!this.submitPromise.isIntegrated) {\n                _context3.next = 12;\n                break;\n              }\n              NotificationsService.success('Credentials have been saved!');\n              return _context3.abrupt(\"return\", this.integrationStatus = this.activeStatus);\n            case 12:\n              _context3.next = 19;\n              break;\n            case 14:\n              $log.log('Updating just enterprise customer...');\n              _context3.next = 17;\n              return ECustomersService.put(this.enterpriseCustomer);\n            case 17:\n              this.submitPromise = _context3.sent;\n              return _context3.abrupt(\"return\", NotificationsService.success('Settings updated!'));\n            case 19:\n              _context3.next = 27;\n              break;\n            case 21:\n              _context3.prev = 21;\n              _context3.t0 = _context3[\"catch\"](2);\n              e = _context3.t0;\n              $log.log(e);\n              errorMessage = _.get(e, 'data.data.message');\n              return _context3.abrupt(\"return\", NotificationsService.error(errorMessage));\n            case 27:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[2, 21]]);\n      }));\n      this.isCredentialsFormIncomplete = function () {\n        var field, i, len, ref;\n        ref = this.ehrTypeCredentialFields;\n        for (i = 0, len = ref.length; i < len; i++) {\n          field = ref[i];\n          if (field.is_required && _.isEmpty(this.ehrCredentials[field.ehr_credential_field_type.field_name])) {\n            return true;\n          }\n        }\n        return false;\n      };\n      this.getIntegrationStatus = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var e, response;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              _context4.prev = 0;\n              _context4.next = 3;\n              return EhrIntegrationService.getIntegrationStatus(this.enterpriseCustomer.id);\n            case 3:\n              response = _context4.sent;\n              this.integrationStatus = response.is_ehr_integration_on ? this.activeStatus : this.inactiveStatus;\n              this.shouldDisableEHRChange = response.is_ehr_integration_on;\n              _context4.next = 13;\n              break;\n            case 8:\n              _context4.prev = 8;\n              _context4.t0 = _context4[\"catch\"](0);\n              e = _context4.t0;\n              this.integrationStatus = this.inactiveStatus;\n              this.shouldDisableEHRChange = false;\n            case 13:\n              return _context4.abrupt(\"return\", this.isIntegrationStatusLoading = false);\n            case 14:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this, [[0, 8]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/account-settings/ehr-provider-settings/ehr-provider-settings.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name enterprise.directive:ehrProviderSettings\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomer the current practice\n   * @param {object} providers all providers for practice\n   * @param {[object]} a list of credential field types for the ehr type\n   * @description\n   * EHR Provider based settings\n   */\n  angular.module('enterprise').component('ehrOfficeSettings', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      providers: '<',\n      officeEhrTypeCredentialFields: '<',\n      loggedInOffice: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $filter, NotificationsService, EhrTypesService, EhrIntegrationService, ECustomersService, OfficeService, AuthService, INTEROPS_EMAIL) {\n      this.$onInit = function () {\n        $log = $log.getInstance('ehrOfficeSettings');\n        $log.log('ehrOfficeSettings component loaded');\n        $log.log('loggedInOffice', this.loggedInOffice);\n        this.mailToEmail = INTEROPS_EMAIL.EMAIL;\n        this.activeStatus = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_STATUS.ACTIVE');\n        this.inactiveStatus = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_STATUS.INACTIVE');\n        this.isAdmin = AuthService.isAdmin() || AuthService.isAccountManager();\n        this.office = {};\n        this.amdOffice = null;\n        this.initSettings();\n      };\n      this.$onChanges = function () {\n        return this.initSettings();\n      };\n      this.initSettings = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (!_.isEmpty(this.loggedInOffice)) {\n                this.office = this.loggedInOffice;\n              }\n              if (!(((ref = this.office) != null ? ref.ehr_type_id : void 0) && !this.amdOffice)) {\n                _context.next = 5;\n                break;\n              }\n              this.officeIsIntegrationStatusLoading = true;\n              _context.next = 5;\n              return this.loadAmdOffice();\n            case 5:\n              if (!(this.amdOffice || ((ref1 = this.office) != null ? ref1.ehr_type_id : void 0))) {\n                _context.next = 12;\n                break;\n              }\n              this.officeIntegrationStatus = '';\n              this.officeIsIntegrationStatusLoading = true;\n              _context.next = 10;\n              return this.getOfficeIntegrationStatus();\n            case 10:\n              _context.next = 13;\n              break;\n            case 12:\n              this.officeIntegrationStatus = this.inactiveStatus;\n            case 13:\n              this.officeEhrCredentials = {};\n              this.officeEhrTypeSearch = (ref2 = this.office) != null ? (ref3 = ref2.ehr_type) != null ? ref3.name : void 0 : void 0;\n              this.officeCredentialsLabelText = (ref4 = this.office) != null ? (ref5 = ref4.ehr_type) != null ? ref5.name : void 0 : void 0;\n              this.officeIntegratedAt = (ref6 = this.office) != null ? (ref7 = ref6.ehr_type) != null ? ref7.integrated_at : void 0 : void 0;\n              if (!(((ref8 = this.office) != null ? ref8.ehr_type : void 0) && this.officeIntegrationStatus === this.inactiveStatus)) {\n                _context.next = 20;\n                break;\n              }\n              _context.next = 20;\n              return this.loadCredentialFields();\n            case 20:\n              this.setOfficeEhrIntegrationEmailValues();\n            case 21:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.loadAmdOffice = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var data, ref;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.next = 2;\n              return ECustomersService.getOfficeSpecificAmdOffice(this.enterpriseCustomer.id, (ref = this.office) != null ? ref.id : void 0);\n            case 2:\n              data = _context2.sent;\n              $log.log('loadAmdOffice', data);\n              this.amdOffice = data;\n              return _context2.abrupt(\"return\", this.officeIsIntegrationStatusLoading = false);\n            case 6:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.loadCredentialFields = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              _context3.next = 2;\n              return EhrTypesService.getCredentialFields((ref = this.office) != null ? ref.ehr_type_id : void 0);\n            case 2:\n              this.officeEhrTypeCredentialFields = _context3.sent;\n              return _context3.abrupt(\"return\", this.officeEhrTypeCredentialFields = EhrTypesService.orderFields(this.officeEhrTypeCredentialFields, (ref1 = this.office) != null ? (ref2 = ref1.ehr_type) != null ? ref2.key_name : void 0 : void 0));\n            case 4:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.searchEhrTypes = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(query) {\n          var e, ehrTypesResults, errorMessage;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.prev = 0;\n                _context4.next = 3;\n                return EhrTypesService.search(query);\n              case 3:\n                ehrTypesResults = _context4.sent;\n                return _context4.abrupt(\"return\", ehrTypesResults);\n              case 7:\n                _context4.prev = 7;\n                _context4.t0 = _context4[\"catch\"](0);\n                e = _context4.t0;\n                $log.log(e);\n                errorMessage = _.get(e, 'data.data.message');\n                return _context4.abrupt(\"return\", NotificationsService.error(errorMessage));\n              case 13:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, null, [[0, 7]]);\n        }));\n        return function (_x) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.getOfficeIntegrationStatus = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {\n        var e, ref, response;\n        return regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) switch (_context5.prev = _context5.next) {\n            case 0:\n              _context5.prev = 0;\n              _context5.next = 3;\n              return EhrIntegrationService.getIntegrationStatusForOffice(this.enterpriseCustomer.id, (ref = this.office) != null ? ref.id : void 0);\n            case 3:\n              response = _context5.sent;\n              this.officeIntegrationStatus = response.is_ehr_integration_on ? this.activeStatus : this.inactiveStatus;\n              this.officeShouldDisableEHRChange = response.is_ehr_integration_on;\n              _context5.next = 13;\n              break;\n            case 8:\n              _context5.prev = 8;\n              _context5.t0 = _context5[\"catch\"](0);\n              e = _context5.t0;\n              this.officeIntegrationStatus = this.inactiveStatus;\n              this.officeShouldDisableEHRChange = false;\n            case 13:\n              return _context5.abrupt(\"return\", this.officeIsIntegrationStatusLoading = false);\n            case 14:\n            case \"end\":\n              return _context5.stop();\n          }\n        }, _callee5, this, [[0, 8]]);\n      }));\n      this.setOfficeEhrIntegrationEmailValues = function () {\n        var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8;\n        if (this.enterpriseCustomer.name !== ((ref = this.office) != null ? ref.name : void 0)) {\n          this.officeRequestIntegrationSubject = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.SUBJECT_FOR_OFFICE_NAMED', {\n            practiceName: this.enterpriseCustomer.name,\n            officeName: (ref1 = this.office) != null ? ref1.name : void 0\n          });\n          this.officeRequestIntegrationBody = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.BODY_FOR_OFFICE_NAMED', {\n            practiceName: this.enterpriseCustomer.name,\n            officeName: (ref2 = this.office) != null ? ref2.name : void 0,\n            ehrName: (ref3 = this.office) != null ? (ref4 = ref3.ehr_type) != null ? ref4.name : void 0 : void 0,\n            providerName: this.user.current_account.getFullName()\n          });\n        } else {\n          this.officeRequestIntegrationSubject = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.SUBJECT_FOR_OFFICE', {\n            practiceName: this.enterpriseCustomer.name,\n            officeName: (ref5 = this.office) != null ? ref5.name : void 0\n          });\n          this.officeRequestIntegrationBody = $filter('translate')('PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION_EMAIL.BODY_FOR_OFFICE', {\n            practiceName: this.enterpriseCustomer.name,\n            officeName: (ref6 = this.office) != null ? ref6.name : void 0,\n            ehrName: (ref7 = this.office) != null ? (ref8 = ref7.ehr_type) != null ? ref8.name : void 0 : void 0,\n            providerName: this.user.current_account.getFullName()\n          });\n        }\n      };\n      this.onOfficeEhrTypeSelect = /*#__PURE__*/function () {\n        var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(payload) {\n          var e, errorMessage, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee6$(_context6) {\n            while (1) switch (_context6.prev = _context6.next) {\n              case 0:\n                $log.log('onOfficeEhrTypeSelect: ', payload);\n                if ((ref = this.office) != null) {\n                  ref.ehr_type = {};\n                }\n                if ((ref1 = this.office) != null) {\n                  ref1.ehr_type.name = payload.model;\n                }\n                this.officeEhrTypeCredentialFields = [];\n                if ((ref2 = this.office) != null) {\n                  ref2.ehr_type_id = payload.id;\n                }\n                this.officeCredentialsLabelText = payload.model;\n                this.officeIntegratedAt = payload.integratedAt;\n                this.resetOfficeCredentialFields();\n                _context6.prev = 8;\n                _context6.next = 11;\n                return this.loadCredentialFields();\n              case 11:\n                $log.log('officeEhrTypeCredentialFields', this.officeEhrTypeCredentialFields);\n                $log.log(this.officeEhrTypeCredentialFields.length > 0, this.isAdmin, !this.amdOffice);\n                return _context6.abrupt(\"return\", this.setOfficeEhrIntegrationEmailValues());\n              case 16:\n                _context6.prev = 16;\n                _context6.t0 = _context6[\"catch\"](8);\n                e = _context6.t0;\n                $log.log(e);\n                errorMessage = _.get(e, 'data.data.message');\n                return _context6.abrupt(\"return\", NotificationsService.error(errorMessage));\n              case 22:\n              case \"end\":\n                return _context6.stop();\n            }\n          }, _callee6, this, [[8, 16]]);\n        }));\n        return function (_x2) {\n          return _ref6.apply(this, arguments);\n        };\n      }();\n      this.resetOfficeCredentialFields = function () {\n        return this.officeEhrCredentials = {};\n      };\n      this.saveOfficeSettingsForm = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() {\n        var e, errorMessage, ref, ref1, requestBody;\n        return regeneratorRuntime.wrap(function _callee7$(_context7) {\n          while (1) switch (_context7.prev = _context7.next) {\n            case 0:\n              this.isLoading = true;\n              requestBody = Object.assign(this.officeEhrCredentials, {\n                ehr_type_id: (ref = this.office) != null ? ref.ehr_type_id : void 0,\n                enterprise_customer_id: this.enterpriseCustomer.id,\n                office_id: (ref1 = this.office) != null ? ref1.id : void 0\n              });\n              _context7.prev = 2;\n              $log.log('saveOfficeSettingsForm', this.isAdmin, !this.isOfficeCredentialsFormIncomplete());\n              if (!(this.isAdmin && !this.isOfficeCredentialsFormIncomplete())) {\n                _context7.next = 13;\n                break;\n              }\n              $log.log('Updating office and checking ehr credentials and integration...');\n              _context7.next = 8;\n              return EhrIntegrationService.storeOfficeCredentials(requestBody);\n            case 8:\n              this.submitPromise = _context7.sent;\n              $log.log('responseFromPromise: ', this.submitPromise);\n              if (this.submitPromise.isIntegrated) {\n                NotificationsService.success('Credentials have been saved!');\n                this.officeIntegrationStatus = this.activeStatus;\n              }\n              _context7.next = 18;\n              break;\n            case 13:\n              $log.log('Updating just office...', this.office);\n              _context7.next = 16;\n              return OfficeService.put(this.enterpriseCustomer.id, this.office);\n            case 16:\n              this.submitPromise = _context7.sent;\n              NotificationsService.success('Settings updated!');\n            case 18:\n              _context7.next = 26;\n              break;\n            case 20:\n              _context7.prev = 20;\n              _context7.t0 = _context7[\"catch\"](2);\n              e = _context7.t0;\n              $log.log(e);\n              errorMessage = _.get(e, 'data.data.message');\n              NotificationsService.error(errorMessage);\n            case 26:\n            case \"end\":\n              return _context7.stop();\n          }\n        }, _callee7, this, [[2, 20]]);\n      }));\n      this.isOfficeCredentialsFormIncomplete = function () {\n        var field, i, len, ref;\n        ref = this.officeEhrTypeCredentialFields;\n        for (i = 0, len = ref.length; i < len; i++) {\n          field = ref[i];\n          if (field.is_required && _.isEmpty(this.officeEhrCredentials[field.ehr_credential_field_type.field_name])) {\n            return true;\n          }\n        }\n        return false;\n      };\n    },\n    templateUrl: 'app/components/portal/account-settings/ehr-office-settings/ehr-office-settings.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:eOfficeEdit\n   * @restrict E\n   * @param {object} user user model object\n   * @param {boolean} onEdit show or hide the component\n   * @description\n   * Edit notification settings for passed in user profile\n   */\n  angular.module('accountSettings').component('eOfficeEdit', {\n    bindings: {\n      user: '=',\n      onEdit: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, $translate, NotificationsService, AddressLookupService, EPhysicianLookupService, ECustomersService, UserProfilesService, StatesService, OfficeService, SalesforceService, REGEX) {\n      this.$onInit = function () {\n        $log = $log.getInstance('eOfficeEdit');\n        $log.log('eOfficeEdit component loaded');\n        $log.log('this.user', this.user);\n        this.emailRegex = REGEX.EMAIL;\n        this.phoneLabelOptionsArray = UserProfilesService.phoneLabels;\n        this.stateOptionsArray = StatesService.states;\n        this.geocode = {\n          result: false,\n          processing: false\n        };\n        this.practice = OfficeService.new();\n        this.practice.is_primary = true;\n        // don't show zipcode lookup error text if we're loading an existing address\n        if (this.practice.address_zipcode) {\n          return this.geocode.result = true;\n        }\n      };\n      this.onChange = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n          var address, error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (!(payload.model !== this.practice.address_zipcode)) {\n                  _context.next = 16;\n                  break;\n                }\n                _context.prev = 1;\n                this.geocode.processing = true;\n                if (payload.model) {\n                  _context.next = 5;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 5:\n                _context.next = 7;\n                return AddressLookupService.lookupCityStateByZip(payload.model);\n              case 7:\n                address = _context.sent;\n                if (address.city && address.state && address.country === \"United States\") {\n                  this.geocode.result = true;\n                  this.geocode.processing = false;\n                  this.practice.address_city = address.city;\n                  this.practice.address_state = address.state;\n                } else {\n                  this.geocode.result = false;\n                  this.geocode.processing = false;\n                }\n                _context.next = 16;\n                break;\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](1);\n                error = _context.t0;\n                this.geocode.result = false;\n                return _context.abrupt(\"return\", this.geocode.processing = false);\n              case 16:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[1, 11]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.addOffice = function () {\n        return OfficeService.post(this.user.user_profile.enterprise_customer_id, Object.assign({}, this.practice, {\n          enterprise_customer_id: this.user.user_profile.enterprise_customer_id\n        }));\n      };\n      this.save = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error, office;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              _context2.prev = 0;\n              this.submitPromise = this.addOffice();\n              _context2.next = 4;\n              return this.submitPromise;\n            case 4:\n              office = _context2.sent;\n              $log.log('office', office);\n              this.onEdit = false;\n              NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.TOASTS.SUCCESS');\n              _context2.next = 15;\n              break;\n            case 10:\n              _context2.prev = 10;\n              _context2.t0 = _context2[\"catch\"](0);\n              error = _context2.t0;\n              $log.log('create office error', error);\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n            case 15:\n              return _context2.abrupt(\"return\", this.submitPromise);\n            case 16:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this, [[0, 10]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/account-settings/e-office-edit/e-office-edit.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:eOffice\n   * @restrict E\n   * @description\n   * Displays the enterprise billers information\n   */\n  angular.module('accountSettings').component('eOffice', {\n    bindings: {\n      user: '=',\n      onEdit: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, OfficeService, NotificationsService) {\n      $log = $log.getInstance('eOffice');\n      $log.log('eOffice component loaded');\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, offices;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.isLoading = true;\n              _context.prev = 1;\n              _context.next = 4;\n              return OfficeService.getAll(this.user.user_profile.enterprise_customer_id);\n            case 4:\n              offices = _context.sent;\n              this.office = _.find(offices, {\n                id: this.user.logged_in_office_id\n              });\n              this.isLoading = false;\n              _context.next = 13;\n              break;\n            case 9:\n              _context.prev = 9;\n              _context.t0 = _context[\"catch\"](1);\n              error = _context.t0;\n              NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1, 9]]);\n      }));\n      this.savePhone = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(office) {\n          var error, offices;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                $log.log(\"saveOffice\", office);\n                _context2.prev = 1;\n                _context2.next = 4;\n                return OfficeService.put(this.user.user_profile.enterprise_customer_id, _.pick(office, ['id', 'phone_1_number']));\n              case 4:\n                _context2.next = 6;\n                return OfficeService.getAll(this.user.user_profile.enterprise_customer_id);\n              case 6:\n                offices = _context2.sent;\n                this.office = _.find(offices, {\n                  is_primary: true\n                });\n                NotificationsService.success('PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.TOASTS.SUCCESS');\n                _context2.next = 15;\n                break;\n              case 11:\n                _context2.prev = 11;\n                _context2.t0 = _context2[\"catch\"](1);\n                error = _context2.t0;\n                NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n              case 15:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[1, 11]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/account-settings/e-office/e-office.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:authenticationInfoEdit\n   * @restrict E\n   * @description\n   * Edit state for the user's account email\n   */\n  angular.module('accountSettings').component('authenticationInfoEdit', {\n    bindings: {\n      user: '=',\n      onEdit: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, REGEX, $state, $transitions, StatesService, ContactsService, CropImageModalService, UserProfilesService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('authenticationInfoEdit');\n        $log.log('authenticationInfoEdit component loaded');\n        this.emailRegex = REGEX.EMAIL;\n        return this.emailCopy = angular.copy(this.user.current_account.email);\n      };\n      this.onEmailChange = function (payload) {\n        return this.shouldReauthenticate = this.emailCopy !== payload.model && this.user.user_profile.id === this.user.current_account.id;\n      };\n      this.onSave = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(userProfile, shouldLogout) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                // update the user profile\n                this.submitPromise = UserProfilesService.put(userProfile);\n                _context.next = 4;\n                return this.submitPromise;\n              case 4:\n                userProfile = _context.sent;\n                $log.log('userProfile', userProfile);\n                this.user.current_account = userProfile;\n                this.onEdit = false;\n                if (shouldLogout) {\n                  $state.go('account.login');\n                  NotificationsService.success('PORTAL.USER_PROFILE.ACCOUNT_INFO.TOASTS.RE_AUTHENTICATE');\n                }\n                _context.next = 16;\n                break;\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                $log.log('userProfile error', error);\n                NotificationsService.error(error.data.data.message);\n              case 16:\n                return _context.abrupt(\"return\", this.submitPromise);\n              case 17:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 11]]);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/account-settings/authentication-info-edit/authentication-info-edit.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:authenticationInfo\n   * @restrict E\n   * @description\n   * Displays the user's email, phone number, and password reset details\n   */\n  angular.module('accountSettings').component('authenticationInfo', {\n    bindings: {\n      user: '=',\n      onEdit: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, AccountService, NotificationsService, EUserProfilesService, UserService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('authenticationInfo');\n        $log.log('authenticationInfo component loaded');\n        this.phoneNumber = this.user.user_profile.phone_1_number;\n        return this.phoneType = this.user.user_profile.phone_1_type;\n      };\n      this.requestPasswordResetEmail = function () {\n        this.credentials = {};\n        this.credentials.email = this.user.user_profile.email;\n        this.submitPromise = AccountService.requestPasswordResetEmail(this.credentials).then(function (response) {\n          return NotificationsService.success('ACCOUNT.FORGOT_PASSWORD.TOASTS.SUCCESS');\n        }, function (error) {\n          return NotificationsService.error('ACCOUNT.FORGOT_PASSWORD.TOASTS.ERROR');\n        });\n        return this.submitPromise;\n      };\n      this.save = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.user.user_profile.phone_1_number = this.phoneNumber;\n              _context.next = 3;\n              return EUserProfilesService.put(this.user.user_profile.enterprise_customer_id, this.user.user_profile);\n            case 3:\n              this.isEditing = false;\n            case 4:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    },\n    templateUrl: 'app/components/portal/account-settings/authentication-info/authentication-info.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').directive('uiSelectExtension', function () {\n    return {\n      require: 'uiSelect',\n      link: function link($scope, $element, attrs, $select, $log) {\n        var blurHandler, focusHandler, searchInput;\n        $log.log('loaded', $element);\n        searchInput = $element.querySelectorAll('input.ui-select-search');\n        if (searchInput.length !== 1) {\n          throw Error('could not find ui-select');\n        }\n        focusHandler = function focusHandler() {\n          $log.log('focus', $select);\n          $select.activate();\n        };\n        blurHandler = function blurHandler() {\n          $log.log('blur', $select);\n          $select.close();\n        };\n        searchInput.on('focus', function () {\n          return focusHandler();\n        });\n        searchInput.on('blur', function () {\n          return blurHandler();\n        });\n        $scope.$on('$destroy', function () {\n          searchInput.off('focus', focusHandler());\n          searchInput.off('blur', blurHandler());\n          return $log.log('uiSelectExtension destroy');\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('typeaheadInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      onSelect: '&',\n      className: '@',\n      inputId: '@',\n      inputName: '@',\n      isRequired: '=',\n      tabIndex: '@',\n      typeaheadMinLength: '@',\n      maxLen: '@',\n      regex: '@',\n      placeholderTxt: '@',\n      labelTxt: '@',\n      labelHidden: '@?',\n      mask: '@?',\n      maskPlaceholder: '@?',\n      selectedItem: '=?',\n      // the currently selected object\n      typeaheadFieldName: '@',\n      typeaheadJsonNodeName: '@',\n      // the json node name for the value to set the model to\n      typeaheadPayload: '=',\n      typeaheadLimit: '@',\n      typeaheadLoadingMessage: '@',\n      typeaheadNoResultsMessage: '@',\n      typeaheadTemplate: '@?',\n      heightClass: '@?',\n      // accepts 'input-lg', 'input-sm' or empty\n      isDisabled: '<?',\n      errorMessageLocation: '@?' // accepts 'top' or 'bottom'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $element, $timeout) {\n      this.$onInit = function () {\n        $log = $log.getInstance('typeaheadInput');\n        return this.timeout1 = null;\n      };\n      // After selecting an option... if a user then edits the text input value but doesn't select a new option\n      // the last selection is reverted\n      this.onBlur = function (e) {\n        var ref, ref1;\n        this.isFocused = false;\n        if (this.model !== ((ref = this.selectedItem) != null ? ref[this.typeaheadJsonNodeName] : void 0) && !_.isEmpty(this.selectedItem)) {\n          this.model = (ref1 = this.selectedItem) != null ? ref1[this.typeaheadJsonNodeName] : void 0;\n        }\n        if (!this.selectedItem) {\n          return this.model = null;\n        }\n      };\n      this.onFocus = function (e) {\n        return this.isFocused = true;\n      };\n      // this.model = null\n\n      // focus next input field on selection\n      this.focusNext = function () {\n        return this.timeout1 = $timeout(function () {\n          var input;\n          // :input selects all input types (select, textarea, etc)\n          input = $element.next().find(':input');\n          if (input.length > 0) {\n            return input.focus();\n          }\n        }, 200);\n      };\n      this.$onDestroy = function () {\n        return $timeout.cancel(this.timeout1);\n      };\n    },\n    templateUrl: 'app/global/fields/typeahead-input/typeahead-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:textInput\n   * @restrict E\n   * @param {string} field-type form field type. 'text' or 'password', etc...\n   * @param {object} form the angularjs form object\n   * @param {object} model two-way bound form field model\n   * @param {object=} modelOptions one-way bound form field model options ex: { updateOn: 'blur' }\n   * @param {string} class-name input class name\n   * @param {string} input-id input id\n   * @param {string} input-name input name\n   * @param {boolean} is-required require field to be filled out\n   * @param {boolean} autocomplete set html autocomplete attribute\n   * @param {int} tab-index input tabindex\n   * @param {int=} min-len the minimum length of the model\n   * @param {int=} max-len the maximum length of the model\n   * @param {string} regex validate model input with this regex\n   * @param {int=} auto-focus-ms if the field should autofocus on page load input the milliseconds here before focus() fires\n   * @param {string=} placeholder-txt the placeholder text\n   * @param {string} label-txt the label text\n   * @param {boolean} label-hidden should the label be hidden?\n   * @param {string=} mask format the model ex: (999)-999-9999\n   * @param {string=} mask-placeholder the placeholder for the mask\n   * @param {string=} height-class bootstrap height class. ex: input-sm.\n   * @param {boolean=} is-disabled sets ng-disabled\n   * @param {object=} match-model match the model to this other model\n   * @param {boolean=} match-model-caseless should model matching allow caseless matching?\n   * @param {boolean=} match-enable enable/disable model matching\n   * @param {array=} validation-messages custom validation messages\n   * @param {function=} on-change callback function for ng-change\n   * @param {function=} on-blur callback function for ng-blur\n   * @param {function=} on-keyup callback function for ng-keyup\n   * @param {string=} addon-pre string to display before input field\n   * @param {string=} addon-post string to display after input field\n   * @param {string=} addon-pre-icon string for font-awesome 4 icon to show before input\n   * @description\n   * Text form field w/ error handling (ng-messages), masking, model matching, custom validation messages, and callback support.\n   * @example\n    <pre>\n      <form id=\"codeForm\"\n              ng-if=\"!vm.credentials\"\n              name=\"codeForm\"\n              class=\"top-label-form\"\n              novalidate>\n          <text-input class-name=\"code\"\n                      form=\"codeForm\"\n                      model=\"vm.code\"\n                      on-keyup=\"vm.onCodeChange({model: model})\"\n                      label-txt=\"{{ 'GLOBAL.ACCOUNT.FIELDS.CODE' | translate }}\"\n                      input-name=\"code\"\n                      input-id=\"code\"\n                      height-class=\"input-sm\"\n                      tab-index=\"1\"\n                      regex=\"{{::vm.customRegex}}\"\n                      validation-messages=\"::vm.validationMessages\"\n                      is-required=\"true\"></text-input>\n        </form>\n    </pre>\n     <pre>\n      validationMessages: [\n                    {\n                      type: 'pattern'\n                      message: 'VALIDATION.PATTERN' // translation string\n                    },\n                    {\n                      type: 'required'\n                      message: 'VALIDATION.REQUIRED'\n                    },\n                    {\n                      type: 'minlength'\n                      message: 'VALIDATION.WEIGHT.MIN'\n                    },\n                    {\n                      type: 'maxlength'\n                      message: 'VALIDATION.WEIGHT.MAX'\n                    }\n                  ]\n    </pre>\n   */\n  angular.module('global').component('textInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      fieldType: '@',\n      form: '<',\n      model: '=',\n      modelOptions: '<',\n      className: '@',\n      inputId: '@',\n      inputName: '@',\n      testId: '@?',\n      isRequired: '=',\n      autocomplete: '@',\n      tabIndex: '@',\n      minLen: '@?',\n      maxLen: '@?',\n      min: '@?',\n      max: '@?',\n      regex: '@',\n      autoFocusMs: '@?',\n      placeholderTxt: '@?',\n      labelTxt: '@',\n      labelHidden: '@?',\n      isDisabled: '<?',\n      mask: '@?',\n      maskPlaceholder: '@?',\n      maskOptions: '@?',\n      heightClass: '@?',\n      // accepts 'input-lg', 'input-sm' or empty\n      matchModel: '=?',\n      matchModelCaseless: '@?',\n      matchEnable: '@?',\n      validationMessages: '<?',\n      onChange: '&?',\n      onBlur: '&?',\n      onKeyup: '&?',\n      addonPre: '@?',\n      addonPost: '@?',\n      addonPreIcon: '@?',\n      showInvalidOnLoad: \"=\"\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, $element, REGEX) {\n      this.$onInit = function () {\n        $log = $log.getInstance('textInput');\n        this.timer = null;\n        if (this.autoFocusMs) {\n          this.timer = $timeout(function () {\n            return angular.element($element).find('input').focus();\n          }, parseInt(this.autoFocusMs));\n        }\n        if (this.showInvalidOnLoad) {\n          this.timer = $timeout(function () {\n            return angular.element($element).find('input').triggerHandler(\"blur\");\n          });\n        }\n        if (this.fieldType === 'email') {\n          return this.regex = REGEX.EMAIL;\n        }\n      };\n      this.$onDestroy = function () {\n        return $timeout.cancel(this.timer);\n      };\n    },\n    templateUrl: 'app/global/fields/text-input/text-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('textAreaInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      className: '@',\n      inputId: '@',\n      inputName: '@',\n      isRequired: '=',\n      minLen: '@',\n      maxLen: '@',\n      tabIndex: '@',\n      placeholderTxt: '@',\n      labelTxt: '@',\n      heightClass: '@?' // accepts 'input-lg', 'input-sm' or empty\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      return this.$onInit = function () {\n        $log = $log.getInstance('textAreaInput');\n        return $log.log('textAreaInput loaded');\n      };\n    },\n    templateUrl: 'app/global/fields/text-area-input/text-area-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('selectInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      onChange: '&?',\n      optionsArray: '=',\n      className: '@',\n      autoFocusMs: '@?',\n      inputId: '@',\n      inputName: '@',\n      labelTxt: '@',\n      labelHidden: '@?',\n      infoTxt: '@',\n      isDisabled: '<?',\n      isRequired: '=?',\n      tabIndex: '@?',\n      heightClass: '@?',\n      // accepts 'input-lg', 'input-sm' or empty\n      showInvalidOnLoad: \"=\"\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $element, $timeout) {\n      this.$onInit = function () {\n        $log = $log.getInstance('selectInput');\n        this.timer = null;\n        if (this.autoFocusMs) {\n          this.timer = $timeout(function () {\n            return angular.element($element).find('select').focus();\n          }, parseInt(this.autoFocusMs));\n        }\n        if (this.showInvalidOnLoad) {\n          return this.timer = $timeout(function () {\n            return angular.element($element).find('select').triggerHandler(\"blur\");\n          });\n        }\n      };\n      this.$onDestroy = function () {\n        return $timeout.cancel(this.timer);\n      };\n    },\n    templateUrl: 'app/global/fields/select-input/select-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('passwordInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      className: '@',\n      inputId: '@',\n      inputName: '@',\n      isRequired: '=',\n      minLen: '@',\n      maxLen: '@',\n      tabIndex: '@?',\n      onKeyup: '&?',\n      regex: '@',\n      placeholderTxt: '@',\n      labelTxt: '@',\n      hideRequirements: '@?',\n      heightClass: '@?' // accepts 'input-lg', 'input-sm' or empty\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log, $element) {\n      this.$onInit = function () {\n        $log = $log.getInstance('passwordInput');\n        this.inputType = 'password';\n        return this.toggleBtnText = 'Show';\n      };\n      this.togglePasswordVisibility = function () {\n        if (this.inputType === 'password') {\n          this.inputType = 'text';\n          return this.toggleBtnText = 'Hide';\n        } else {\n          this.inputType = 'password';\n          return this.toggleBtnText = 'Show';\n        }\n      };\n      this.getViewValue = function () {\n        return $element.find('input').val();\n      };\n      this.onPasswordChange = function (payload) {\n        var lowcasePattern, numPattern, ref, upcasePattern;\n        upcasePattern = new RegExp('[A-Z]');\n        lowcasePattern = new RegExp('[a-z]');\n        numPattern = new RegExp('[0-9]');\n        return this.passwordValidity = {\n          length: ((ref = payload.model) != null ? ref.length : void 0) > 7 || false,\n          casing: upcasePattern.test(payload.model) && lowcasePattern.test(payload.model),\n          number: numPattern.test(payload.model)\n        };\n      };\n    },\n    templateUrl: 'app/global/fields/password-input/password-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:multiPhoneNumberInput\n   * @restrict E\n   * @param {number} numberOfInputs the max number of phone number inputs to display\n   * @param {number} numberOfExistingPhoneNumbers the number of inputs that should be displayed on the component init for existing phone numbers\n   * @param {object} model the object to store the values to from the phone number fields\n   * @param {string} phoneTypeClassName the class(es) that should be applied to the phone type element\n   * @param {string} phoneNumberClassName the class(es) that should be applied to the phone number element\n   * @param {string} addPhoneClassName the class(es) that should be applied to the add phone number button element\n   * @param {array} optionsArray the options to display on the phone type dropdown element\n   * @param {object} form the form object that should be related to the phone number fields\n   * @param {string} phoneTypeLabelTxt the text that should be displayed above the phone type select field\n   * @param {string} phoneNumberLabelTxt the text that should be displayed above the phone number input field\n   * @param {number} startingTabIndex the tab index of the html element that appears right before this component.\n                                    Allows for correct incremental tabs without having to re-order existing elements' tabs\n   * @description\n   * A component that allows for X number of phone type and phone number fields\n   */\n  angular.module('global').component('multiPhoneNumberInput', {\n    bindings: {\n      numberOfInputs: '<',\n      numberOfExistingPhoneNumbers: '=',\n      model: '=',\n      phoneTypeClassName: '@',\n      phoneNumberClassName: '@',\n      addPhoneClassName: '@',\n      optionsArray: '=',\n      form: '<',\n      phoneTypeLabelTxt: '@',\n      phoneNumberLabelTxt: '@',\n      startingTabIndex: '@?',\n      enrollmentId: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, MAX_PHONE_NUMBERS_COUNT) {\n      this.$onInit = function () {\n        var i, j, ref, results;\n        $log = $log.getInstance('multiPhoneNumberInput');\n        $log.log('multiPhoneNumberInput loaded numberOfAdditionalPhoneNumbers', this.numberOfInputs, this.numberOfExistingPhoneNumbers);\n        // This array object is used to dynamically generate how many phone inputs should be displayed\n        this.existingPhoneNumberInputs = [];\n        results = [];\n        for (i = j = 0, ref = this.numberOfExistingPhoneNumbers; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {\n          // +2 here because additional phone numbers start with phone_2_(type/number)\n          // which is how the dynamic additional phone inputs map it back to the model.\n          results.push(this.existingPhoneNumberInputs.push(i + 2));\n        }\n        return results;\n      };\n      this.addPhoneNumberInput = function () {\n        if (this.existingPhoneNumberInputs.length < this.numberOfInputs) {\n          return this.existingPhoneNumberInputs.push(this.existingPhoneNumberInputs.length + 2);\n        }\n      };\n    },\n    templateUrl: 'app/global/fields/multi-phone-number-input/multi-phone-number-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:fieldErrors\n   * @restrict E\n   * @param {object} form the current form\n   * @param {string} inputName the name attribute for the input field\n   * @param {array} validationMessages objects containing ng-message error type (pattern, min, max, etc) and the translation string to display\n   * @description\n   * Encompasses angular's ng-message(s) directives and expands upon them. Displays all form field error messages.\n   * @example\n  <pre>\n    <field-errors form=\"::vm.form\" input-name=\"{{::vm.inputName}}\" validation-messages=\"::vm.validationMessages\"></field-errors>\n  </pre>\n   */\n  angular.module('global').component('fieldErrors', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      inputName: '@',\n      validationMessages: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('fieldErrors');\n      };\n    },\n    templateUrl: 'app/global/fields/field-errors/field-errors.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('dateInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      dateFormat: '@',\n      className: '@',\n      onblur: '&?',\n      inputId: '@',\n      inputName: '@',\n      isRequired: '=',\n      placeholderTxt: '@',\n      labelTxt: '@',\n      tabIndex: '@',\n      mask: '@',\n      maskPlaceholder: '@',\n      isDisabled: '<?',\n      maskOptions: '@',\n      heightClass: '@?' // accepts 'input-lg', 'input-sm' or empty\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      return this.$onInit = function () {\n        $log = $log.getInstance('dateInput');\n        return $log.log('dateInput loaded');\n      };\n    },\n    templateUrl: 'app/global/fields/date-input/date-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').directive('dateFormatter', function ($filter, $log) {\n    return {\n      require: 'ngModel',\n      scope: {\n        dateFormat: '@'\n      },\n      link: function link(scope, element, attrs, ngModelController) {\n        // format and check new user entered data\n        ngModelController.$parsers.push(function (data) {\n          var date, minDate;\n          // make sure the date is past 01/01/1900\n          minDate = Date.parse('01/01/1900');\n          //      eighteenAtDate = (18).years().ago()\n          date = void 0;\n          date = Date.parseExact(data, 'yyyy-MM-dd');\n          date === null && (date = Date.parseExact(data, 'MM/dd/yyyy'));\n          if (date !== null) {\n            ngModelController.$setValidity('date', date !== null && date > minDate);\n          }\n          //      ngModelController.$setValidity('date', (date != null) and (date > minDate) and (date < eighteenAtDate))\n          return $filter('date')(date, scope.dateFormat || 'yyyy-MM-dd HH:mm:ss');\n        });\n        // read into the model from existing data\n        ngModelController.$formatters.push(function (data) {\n          var date;\n          // date filter only works with a date, convert it first\n          date = Date.parse(data);\n          return $filter('date')(date, 'MM/dd/yyyy');\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('creditCardNumberInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      className: '@',\n      inputName: '@',\n      inputId: '@',\n      isRequired: '=',\n      minLen: '@',\n      maxLen: '@',\n      tabIndex: '@',\n      placeholderTxt: '@',\n      labelTxt: '@',\n      labelHidden: '@?',\n      maskPlaceholder: '@?',\n      maskPlaceholderChar: '@?',\n      // accepts 'space' or another character\n      heightClass: '@?' // accepts 'input-lg', 'input-sm' or empty\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('creditCardNumberInput');\n        this.masks = {\n          mastercard: '9999 9999 9999 9999',\n          visa: '9999 9999 9999 9999',\n          americanexpress: '9999 999999 99999',\n          diners: '9999 9999 9999 99',\n          discover: '9999 9999 9999 9999',\n          unknown: '9999 9999 9999 9999'\n        };\n        return this.mask = this.masks.unknown;\n      };\n      this.getMask = function (cardType) {\n        var cardTypeReplace;\n        if (cardType === void 0) {\n          cardType = 'unknown';\n        }\n        cardTypeReplace = cardType.replace(' ', '').toLowerCase();\n        return this.masks[cardTypeReplace] || this.masks.unknown;\n      };\n      this.onChange = function (payload) {\n        $log.log('payload', payload, this.form[this.inputName].$viewValue);\n        return this.mask = this.getMask(payload.cardType);\n      };\n    },\n    templateUrl: 'app/global/fields/credit-card-number-input/credit-card-number-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:creditCardFields\n   * @restrict E\n   * @param {object} card pass in a null card object so that it can be populated in this component and available in the parent one\n   * @param {object} stripe pass in the same Stripe object that will be used to call stripe.createToken. It cannot be a different instance of a Stripe object.\n   * @description\n   * This component wraps the Stripe Elements credit card fields (the default fields) for processing a credit card. The Stripe Elements package handles\n   * rendering our credit card fields and ensuring PCI compliance.\n   */\n  angular.module('global').component('creditCardFields', {\n    'ngInject': 'ngInject',\n    bindings: {\n      card: '=',\n      stripe: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, env) {\n      this.$onInit = function () {\n        $log = $log.getInstance('creditCardFields');\n        return $log.log('creditCardFields loaded');\n      };\n      this.$postLink = function () {\n        var cardCvc, cardExpiry, elementClasses, elementStyles, elements;\n        elements = this.stripe.elements({\n          fonts: [{\n            cssSrc: 'https://fonts.googleapis.com/css?family=Open+Sans:400,600'\n          }]\n        });\n        elementClasses = {\n          focus: 'focus',\n          empty: 'empty',\n          invalid: 'invalid'\n        };\n        elementStyles = {\n          base: {\n            color: '#555555',\n            lineHeight: '35px',\n            fontWeight: 400,\n            fontFamily: '\"Inter\", sans-serif',\n            fontSize: '24px',\n            ':focus': {\n              color: '#424770'\n            }\n          },\n          invalid: {\n            color: '#555555'\n          }\n        };\n        this.card = elements.create('cardNumber', {\n          placeholder: '',\n          style: elementStyles,\n          classes: elementClasses\n        });\n        this.card.mount('#card-number');\n        cardExpiry = elements.create('cardExpiry', {\n          style: elementStyles,\n          classes: elementClasses\n        });\n        cardExpiry.mount('#card-expiry');\n        cardCvc = elements.create('cardCvc', {\n          placeholder: '',\n          style: elementStyles,\n          classes: elementClasses\n        });\n        cardCvc.mount('#card-cvc');\n        this.elements = [{\n          element: this.card,\n          errorId: 'card-number-errors',\n          hasError: true\n        }, {\n          element: cardCvc,\n          errorId: 'card-cvc-errors',\n          hasError: true\n        }, {\n          element: cardExpiry,\n          errorId: 'card-expiry-errors',\n          hasError: true\n        }];\n        // listen for events\n        return this.elements.forEach(function (item) {\n          return item.element.addEventListener('change', function (event) {\n            var displayError;\n            displayError = document.getElementById(item.errorId);\n            if (event.error) {\n              // event.error.message\n              displayError.textContent = 'Invalid';\n              return item.hasError = true;\n            } else {\n              displayError.textContent = '';\n              return item.hasError = false;\n            }\n          });\n        });\n      };\n      // $log.log item\n      this.$onDestroy = function () {\n        return this.elements.forEach(function (item) {\n          return item.element.removeEventListener('change');\n        });\n      };\n    },\n    templateUrl: 'app/global/fields/credit-card-fields/credit-card-fields.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('creditCardExpirationInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      monthModel: '=',\n      yearModel: '=',\n      className: '@',\n      monthInputName: '@',\n      yearInputName: '@',\n      monthInputId: '@',\n      yearInputId: '@',\n      isRequired: '=',\n      minLen: '@',\n      maxLen: '@',\n      tabIndex: '@',\n      monthPlaceholderTxt: '@',\n      yearPlaceholderTxt: '@',\n      monthLabelTxt: '@',\n      yearLabelTxt: '@',\n      monthLabelHidden: '@?',\n      yearLabelHidden: '@?',\n      heightClass: '@?' // accepts 'input-lg', 'input-sm' or empty\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        var currentYear, expYears, ref;\n        $log = $log.getInstance('creditCardExpirationInput');\n        this.yearInputTabIndex = parseInt(this.tabIndex) + 1 || '';\n        this.months = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\n        currentYear = new Date().getFullYear();\n        expYears = function () {\n          var results = [];\n          for (var i = currentYear, ref = currentYear + 20; currentYear <= ref ? i <= ref : i >= ref; currentYear <= ref ? i++ : i--) {\n            results.push(i);\n          }\n          return results;\n        }.apply(this);\n        return this.years = _.map(expYears, function (year) {\n          return {\n            label: year,\n            value: String(year).substring(2, 4)\n          };\n        });\n      };\n      this.showMonthRequiredMessage = function () {\n        return _.isUndefined(this.monthModel);\n      };\n      this.showYearRequiredMessage = function () {\n        return _.isUndefined(this.monthModel);\n      };\n    },\n    templateUrl: 'app/global/fields/credit-card-expiration-input/credit-card-expiration-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('creditCardCvcInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      className: '@',\n      inputName: '@',\n      inputId: '@',\n      creditCardNumberInputName: '@',\n      isRequired: '=',\n      minLen: '@',\n      maxLen: '@',\n      tabIndex: '@',\n      placeholderTxt: '@',\n      labelTxt: '@',\n      labelHidden: '@?',\n      mask: '@?',\n      maskPlaceholder: '@?',\n      heightClass: '@?' // accepts 'input-lg', 'input-sm' or empty\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('creditCardCvcInput');\n      };\n    },\n    templateUrl: 'app/global/fields/credit-card-cvc-input/credit-card-cvc-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('checkboxInput', {\n    'ngInject': 'ngInject',\n    bindings: {\n      form: '<',\n      model: '=',\n      className: '@',\n      inputId: '@',\n      inputName: '@',\n      isRequired: '=',\n      tabIndex: '@?',\n      isDisabled: '<?',\n      placeholderTxt: '@?',\n      labelTxt: '@',\n      labelHidden: '@?',\n      heightClass: '@?',\n      // accepts 'input-lg', 'input-sm' or empty\n      onChange: '&?'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      return this.$onInit = function () {\n        $log = $log.getInstance('checkboxInput');\n        return $log.log('checkboxInput loaded');\n      };\n    },\n    templateUrl: 'app/global/fields/checkbox-input/checkbox-input.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:areYouAPatientBanner\n   * @restrict E\n   * @description\n   * A banner showing helper text for patients that navigate to the practice registration page.\n   */\n  angular.module('global').component('areYouAPatientBanner', {\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($log, PATIENT_FAQS, IB_SUPPORT_EMAIL) {\n      this.$onInit = function () {\n        this.patientFAQsURL = PATIENT_FAQS.URL;\n        return this.supportEmail = IB_SUPPORT_EMAIL.EMAIL;\n      };\n    },\n    templateUrl: 'app/global/banners/are-you-a-patient-banner/are-you-a-patient-banner.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('setup', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:setup-nav\n   * @restrict E\n   * @param {string=} step current step in the setup flow\n   * @description\n   * Navbar for the account setup flow\n   */\n  angular.module('setup').component('setupNav', {\n    bindings: {\n      step: '@'\n    },\n    controllerAs: 'vm',\n    controller: function controller() {\n      this.steps = ['ENTERPRISE_SETUP.REGISTRATION.NAV.STEP1', 'ENTERPRISE_SETUP.REGISTRATION.NAV.STEP2', 'ENTERPRISE_SETUP.REGISTRATION.NAV.STEP3'];\n    },\n    templateUrl: 'app/components/setup/setup-nav/setup-nav.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseRegistrationInvitation\n   * @restrict E\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string} skipState skip state to navigate to\n   * @description\n   * Allows user to enter a secret invite code and register an account. that account will be linked to the invitation device_id\n   */\n  angular.module('setup').component('enterpriseRegistrationInvitation', {\n    'ngInject': 'ngInject',\n    bindings: {\n      nextState: '@?',\n      skipState: '@',\n      practiceRoles: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(env, $log, $rootScope, $element, $state, $stateParams, Auth0Store, $translate, UserService, AuthService, REGEX, EnterpriseInvitationsService, NotificationsService) {\n      this.$onInit = function () {\n        var signatureSessionId;\n        this.practiceRolesOptions = _.map(this.practiceRoles, function (role) {\n          return {\n            label: role.name,\n            value: role.id\n          };\n        });\n        // pactSafeGroupId = env.pactsafe.enterprise_registration_group_key\n        signatureSessionId = null;\n        this.isAgreementChecked = true; // TODO: revert to FALSE once pactsafe is re-enabled\n\n        // load the contract group\n        //      _ps('load', pactSafeGroupId, {\n        //        container_selector: 'agreements',\n        //        signer_id_selector: 'email',\n        //        event_callback: () ->\n        //          _ps.on('validated', (isValidated, context) ->\n        //            this.isAgreementChecked = isValidated\n        //            $rootScope.$digest()\n        //          )\n        //          # fetch the signer's ID\n        //          _ps.on('valid', (data, group) ->\n        //            # $log.log 'group.site.get(\"uuid\")', group.site.get(\"uuid\")\n        //            signatureSessionId = group.site.get('uuid')\n        //            $rootScope.$digest()\n        //          )\n        //      })\n        this.isExistingUsername = false;\n        this.credentials = null;\n        this.code = $stateParams.invitation_code || null;\n        this.emailValidationMessages = [{\n          type: 'pattern',\n          message: 'VALIDATION.PATTERN'\n        }, {\n          type: 'required',\n          message: 'VALIDATION.REQUIRED'\n        }];\n        this.emailRegex = REGEX.EMAIL;\n        this.passwordRegex = REGEX.PASSWORD;\n        if (this.code !== null) {\n          return this.getInvitation();\n        }\n      };\n      this.getInvitation = function () {\n        var _this = this;\n        return this.submitCodePromise = EnterpriseInvitationsService.getViaHash($stateParams.invitation_hash, this.code).then(function (invitation) {\n          $log.log('invitation', invitation);\n          _this.invitation = invitation;\n          if (invitation) {\n            _this.translationData = {\n              practiceName: invitation.enterprise_customer.name\n            };\n            _this.credentials = {\n              nameFirst: invitation.name_first,\n              nameLast: invitation.name_last,\n              email: invitation.email,\n              emailConfirmation: invitation.email,\n              password: null,\n              enterpriseCustomerId: invitation.enterprise_customer_id,\n              enterpriseInvitationId: invitation.id,\n              signatureSessionId: null,\n              practiceRole: _this.invitation.practice_roles.length > 0 ? _this.invitation.practice_roles[0].id : void 0,\n              enterpriseRoles: _this.invitation.enterprise_roles\n            };\n            return $log.log('credentials', _this.credentials);\n          } else {\n            _this.isExpiredInvitation = true;\n            return NotificationsService.error('ENTERPRISE_SETUP.REGISTRATION.TOASTS.SECRET.ERROR');\n          }\n        });\n      };\n      // translations\n      //   this.headerTrans = 'ENTERPRISE_SETUP.INVITATION_REGISTRATION.BODY.HEADER1'\n      //   this.copyTrans = 'ENTERPRISE_SETUP.INVITATION_REGISTRATION.BODY.COPY1'\n      //   $translate([this.headerTrans, this.copyTrans]).then (translations) =>\n      //     this.header = translations[this.headerTrans]\n      //     this.copy = translations[this.copyTrans]\n      // , (error) ->\n      //   NotificationsService.error(error)\n\n      // this.createAccount = ->\n      //   _ps(pactSafeGroupId + ':send', 'agreed', {\n      //     disable_sending: false,\n      //     event_callback: (err, event_type, context, payload) =>\n      //       # $log.log 'err', err, event_type, context, payload\n      //       $rootScope.$digest()\n      //       if (err)\n      //         $log.log 'pactsafe error', err\n      //         this.submitPromise = NotificationsService.error(err)\n      //       else\n      //         this.credentials.signatureSessionId = signatureSessionId\n      //         this.submitPromise = AuthService.signup(this.credentials)\n      //           .then (response) =>\n      //             $log.log 'response', response\n      //             this.isExistingUsername = false\n      //           .catch (error) =>\n      //             $log.log 'create account error', error\n      //             if error.code is 'user_exists'\n      //               this.isExistingUsername = true\n      //             else\n      //               NotificationsService.error(error.description)\n      //   })\n      //   return this.submitPromise\n      this.createAccountWithoutSignature = function () {\n        var _this2 = this;\n        //      this.credentials.signatureSessionId = signatureSessionId # TODO: revert back to this\n        this.credentials.signatureSessionId = \"\";\n        this.submitPromise = AuthService.signup(this.credentials).then(function (response) {\n          $log.log('response', response);\n          return _this2.isExistingUsername = false;\n        }).catch(function (error) {\n          $log.log('create account error', error);\n          if (error.code === 'user_exists') {\n            return _this2.isExistingUsername = true;\n          } else {\n            return NotificationsService.error(error.description);\n          }\n        });\n        return this.submitPromise;\n      };\n      //    this.onHasAccount = ->\n      //      # store invitationId in localStorage. we'll retrieve after login.\n      //      Auth0Store.set('invitationHash', $stateParams.invitation_hash)\n      //      $log.log 'this.skipState', this.skipState\n      //      $state.go(this.skipState)\n      this.goToLogin = function () {\n        return $state.go('account.login');\n      };\n      this.resetIsExistingUsername = function () {\n        return this.isExistingUsername = false;\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-registration-invitation/enterprise-registration-invitation.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseRegistration\n   * @restrict E\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string} skipState skip state to navigate to\n   * @description\n   * Allows user to enter a secret invite code and register an account. that account will be linked to the invitation device_id\n   */\n  angular.module('setup').component('enterpriseRegistration', {\n    'ngInject': 'ngInject',\n    bindings: {\n      nextState: '@?',\n      skipState: '@',\n      practiceRoles: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(env, $log, $rootScope, $element, $state, $stateParams, Auth0Store, $translate, UserService, AuthService, REGEX, EnterpriseInvitationsService, NotificationsService, SalesforceService) {\n      var _this2 = this;\n      var createSalesforceLead, getEmailFromParameters, getParameterByName;\n      this.$onInit = function () {\n        var signatureSessionId;\n        $log.log('pRoles', this.practiceRoles);\n        this.practiceRolesOptions = _.map(this.practiceRoles, function (role) {\n          return {\n            label: role.name,\n            value: role.id\n          };\n        });\n        // pactSafeGroupId = env.pactsafe.enterprise_registration_group_key\n        signatureSessionId = null;\n        this.isAgreementChecked = true; // TODO: revert to FALSE once pactsafe is re-enabled\n\n        // load the contract group\n        //      _ps('load', pactSafeGroupId, {\n        //        container_selector: 'agreements',\n        //        signer_id_selector: 'email',\n        //        event_callback: () ->\n        //          _ps.on('validated', (isValidated, context) ->\n        //            this.isAgreementChecked = isValidated\n        //            $rootScope.$digest()\n        //          )\n        //          # fetch the signer's ID\n        //          _ps.on('valid', (data, group) ->\n        //            # $log.log 'group.site.get(\"uuid\")', group.site.get(\"uuid\")\n        //            signatureSessionId = group.site.get('uuid')\n        //            $rootScope.$digest()\n        //          )\n        //      })\n        this.isExistingUsername = false;\n        this.credentials = {\n          nameFirst: null,\n          nameLast: null,\n          email: null,\n          emailConfirmation: null,\n          npi: null,\n          phone: null,\n          password: null,\n          signatureSessionId: null,\n          isEnterpriseCustomerRegistration: \"true\",\n          practiceRole: null\n        };\n        this.code = $stateParams.invitation_code || null;\n        this.emailValidationMessages = [{\n          type: 'pattern',\n          message: 'VALIDATION.PATTERN'\n        }, {\n          type: 'required',\n          message: 'VALIDATION.REQUIRED'\n        }, {\n          type: 'match',\n          message: 'VALIDATION.MATCH.EMAIL'\n        }];\n        this.emailRegex = REGEX.EMAIL;\n        this.passwordRegex = REGEX.PASSWORD;\n        return this.buildCredentialsFromParams();\n      };\n      // PHP sends the form GET request in this format:\n      // http://localhost:3000/?name_first=Mehmet&name_last=Oz&email=vtgbeats%2Bdr1%40gmail.com&practice_name=Southwest+Medical&npi=1111111&phone=3334445555&physicians_in_practice#/enterprise/setup/registration/\n      // UI-Router doesn't work unless the query string params follow the hash \"#\". This is a workaround.\n      // ^ Not the case anymore, query params are sent in a way that angular can handle.\n      getParameterByName = function getParameterByName(name) {\n        return $stateParams[name];\n      };\n      // PP-1130.  +'s in emails get URL decoded as spaces, so we add them back in for emails\n      getEmailFromParameters = function getEmailFromParameters() {\n        var ref;\n        return (ref = $stateParams['email']) != null ? ref.replace(' ', '+') : void 0;\n      };\n      this.buildCredentialsFromParams = function () {\n        this.credentials = {\n          nameFirst: getParameterByName('name_first'),\n          nameLast: getParameterByName('name_last'),\n          email: getEmailFromParameters(),\n          emailConfirmation: getEmailFromParameters(),\n          npi: getParameterByName('npi'),\n          phone: getParameterByName('phone'),\n          enterpriseCustomerName: getParameterByName('practice_name'),\n          password: null,\n          signatureSessionId: null,\n          isEnterpriseCustomerRegistration: \"true\"\n        };\n        return this.translateData = {\n          name: this.credentials.enterpriseCustomerName\n        };\n      };\n      // createSalesforceLead()\n\n      // this.createAccount = ->\n      //   _ps(pactSafeGroupId + ':send', 'agreed', {\n      //     disable_sending: false,\n      //     event_callback: (err, event_type, context, payload) =>\n      //       # $log.log 'err', err, event_type, context, payload\n      //       $rootScope.$digest()\n      //       if (err)\n      //         $log.log 'pactsafe error', err\n      //         this.submitPromise = NotificationsService.error(err)\n      //       else\n      //         this.credentials.signatureSessionId = signatureSessionId\n      //         this.submitPromise = AuthService.signup(this.credentials)\n      //           .then (response) =>\n      //             $log.log 'response', response\n      //             this.isExistingUsername = false\n      //           .catch (error) =>\n      //             $log.log 'create account error', error\n      //             if error.code is 'user_exists'\n      //               this.isExistingUsername = true\n      //             else\n      //               NotificationsService.error(error.description)\n      //   })\n      //   return this.submitPromise\n      this.createAccountWithoutSignature = function () {\n        var _this = this;\n        //      this.credentials.signatureSessionId = signatureSessionId # TODO: revert back to this\n        this.credentials.signatureSessionId = \"\";\n        this.credentials.npi = \"\";\n        this.credentials.practiceRole = this.practiceRolesOptions[0].value;\n        $log.log(this.credentials);\n        createSalesforceLead();\n        this.submitPromise = AuthService.signup(this.credentials).then(function (response) {\n          $log.log('response', response);\n          return _this.isExistingUsername = false;\n        }).catch(function (error) {\n          $log.log('create account error', error);\n          if (error.code === 'user_exists') {\n            return _this.isExistingUsername = true;\n          } else {\n            return NotificationsService.error(error.description);\n          }\n        });\n        return this.submitPromise;\n      };\n      //    this.onHasAccount = ->\n      //      # store invitationId in localStorage. we'll retrieve after login.\n      //      Auth0Store.set('invitationHash', $stateParams.invitation_hash)\n      //      $log.log 'this.skipState', this.skipState\n      //      $state.go(this.skipState)\n      createSalesforceLead = function createSalesforceLead() {\n        var newLead;\n        newLead = SalesforceService.buildNewLead();\n        newLead.lead_source = \"New Registration\";\n        newLead.company = 'Dr. ' + _this2.credentials.nameLast + '\\'s Practice';\n        newLead.name_last = _this2.credentials.nameLast;\n        newLead.name_first = _this2.credentials.nameFirst;\n        newLead.email = _this2.credentials.email;\n        newLead.phone = _this2.credentials.phone_1_number;\n        //      newLead.address_street = this.practice.address_street\n        //      newLead.address_city = this.practice.address_city\n        //      newLead.address_state = this.practice.address_state\n        //      newLead.address_zip = this.practice.address_zipcode\n        return SalesforceService.createNewLead(newLead).then(function (response) {\n          return $log.log('created new Salesforce lead', response);\n        }).catch(function (error) {\n          return $log.log('error', error);\n        });\n      };\n      this.goToLogin = function () {\n        return $state.go('account.login');\n      };\n      this.resetIsExistingUsername = function () {\n        return this.isExistingUsername = false;\n      };\n      this.login = function () {\n        return AuthService.login();\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-registration/enterprise-registration.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterprisePractice\n   * @restrict E\n   * @param {object} user user model object\n   * @param {object} offices offices model object\n   * @param {object} enterpriseCustomer the current customer\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string=} prevState previous state to navigate to\n   * @param {string=} skipState state to skip to\n   * @description\n   * Used in dr. customer registration flow to verify dr and practice info returned by NPI Lookup.\n   */\n  angular.module('setup').component('enterprisePractice', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      eUserProfile: '<',\n      offices: '<',\n      deviceTypes: '<',\n      enterpriseCustomer: '<',\n      nextState: '@?',\n      prevState: '@?',\n      skipState: '@?',\n      npiResult: '<',\n      practiceSpecialties: '<',\n      practiceRoles: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, $filter, NotificationsService, AddressLookupService, EPhysicianLookupService, ECustomersService, UserProfilesService, StatesService, OfficeService, REGEX, EEnrollmentsService, EnterpriseInvitationsService, TwilioService, EUserProfilesService, EhrTypesService) {\n      $log = $log.getInstance('enterprisePractice');\n      this.$onInit = function () {\n        var device, deviceType, i, len, results, selectedDevices;\n        $log.log('this.user', this.user);\n        this.showInvites = false;\n        this.emailRegex = REGEX.EMAIL;\n        this.providerInvite = {};\n        this.providerInvites = [];\n        this.positiveNumberRegex = REGEX.NUMBER;\n        this.phoneLabelOptionsArray = UserProfilesService.phoneLabels;\n        this.stateOptionsArray = StatesService.states;\n        this.practiceSpecialtiesOptions = _.map(this.practiceSpecialties, function (spec) {\n          return {\n            label: spec.name,\n            value: spec.id\n          };\n        });\n        this.practiceRolesOptions = _.map(this.practiceRoles, function (role) {\n          return {\n            label: role.name,\n            value: role.id\n          };\n        });\n        this.eUserProfile.practiceRole = this.practiceRolesOptions[0].value;\n        this.geocode = {\n          result: false,\n          processing: false\n        };\n        this.isExistingPractice = false;\n        if (this.offices.length > 0) {\n          this.practice = this.offices[0];\n          this.isExistingPractice = true;\n        } else {\n          if ($stateParams.practice) {\n            this.practice = angular.fromJson($stateParams.practice);\n          } else {\n            this.practice = OfficeService.new();\n            this.practice.is_primary = true;\n          }\n          this.displayFoundNPI = false;\n          this.displayNotFoundNPI = false;\n          if (this.npiResult && this.npiResult.npi) {\n            this.practice.address_street = this.npiResult.hq_address;\n            this.practice.address_city = this.npiResult.hq_city;\n            this.practice.address_state = this.npiResult.hq_state;\n            this.practice.address_zipcode = this.npiResult.hq_zip_code;\n            this.practice.name = this.npiResult.primary_affiliation_hospital_name;\n            this.translationData = {\n              name: this.npiResult.physician_name\n            };\n            this.displayFoundNPI = true;\n            this.displayNotFoundNPI = false;\n          } else {\n            this.displayFoundNPI = false;\n            this.displayNotFoundNPI = true;\n          }\n        }\n        // don't show zipcode lookup error text if we're loading an existing address\n        if (this.practice.address_zipcode) {\n          this.geocode.result = true;\n        }\n        this.selectedDeviceTypes = [];\n        if ($stateParams.devices_selected) {\n          selectedDevices = $stateParams.devices_selected.split(',');\n          $log.log('selectedDevices', selectedDevices);\n          results = [];\n          for (i = 0, len = selectedDevices.length; i < len; i++) {\n            device = selectedDevices[i];\n            deviceType = _.find(this.deviceTypes.data.data, {\n              category: device\n            });\n            $log.log('deviceType', deviceType);\n            results.push(this.selectedDeviceTypes.push(deviceType));\n          }\n          return results;\n        }\n      };\n      this.searchEhrTypes = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(query) {\n          var e, ehrTypesResults, errorMessage;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return EhrTypesService.search(query);\n              case 3:\n                ehrTypesResults = _context.sent;\n                $log.log('ehr types query results', ehrTypesResults);\n                return _context.abrupt(\"return\", ehrTypesResults);\n              case 8:\n                _context.prev = 8;\n                _context.t0 = _context[\"catch\"](0);\n                e = _context.t0;\n                $log.log(e);\n                errorMessage = _.get(e, 'data.data.message');\n                return _context.abrupt(\"return\", NotificationsService.error(errorMessage));\n              case 14:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, null, [[0, 8]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onEhrTypeSelect = function (payload) {\n        return this.practice.ehr_type_id = payload.id;\n      };\n      this.addInvitation = function () {\n        $log.log(\"invitation\", this.providerInvite);\n        if (this.providerInvite.name_first && this.providerInvite.name_last && this.providerInvite.email) {\n          this.providerInvites.push(this.providerInvite);\n          this.providerInvite = {};\n          return this.showInvites = false;\n        }\n      };\n      this.removeInvitation = function (idx) {\n        $log.log(idx, this.providerInvites[idx]);\n        this.providerInvites.splice(idx, 1);\n        return $log.log(idx, this.providerInvites);\n      };\n      this.onPhoneChange = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(phoneNumber) {\n          var e, errorMessage, errorStatus, phoneValid;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!_.isEmpty(phoneNumber)) {\n                  _context2.next = 2;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 2:\n                $log.log('this.practiceForm', this.practiceForm);\n                phoneValid = true;\n                _context2.prev = 4;\n                _context2.next = 7;\n                return TwilioService.getPhoneInfo(phoneNumber);\n              case 7:\n                _context2.next = 17;\n                break;\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](4);\n                e = _context2.t0;\n                errorStatus = _.get(e, 'status');\n                errorMessage = _.get(e, 'data.data.message');\n                if (errorStatus === 400) {\n                  errorMessage = 'GLOBAL.ERRORS.INVALID_PHONE';\n                }\n                NotificationsService.error(errorMessage);\n                phoneValid = false;\n              case 17:\n                this.practiceForm.$setValidity('primary-phone', phoneValid);\n                return _context2.abrupt(\"return\", this.practiceForm['primary-phone'].$invalid = !phoneValid);\n              case 19:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[4, 9]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onChange = function (payload) {\n        var _this = this;\n        if (payload.model !== this.practice.address_zipcode) {\n          this.geocode.processing = true;\n          if (!payload.model) {\n            return;\n          }\n          return AddressLookupService.lookupCityStateByZip(payload.model).then(function (address) {\n            if (address.city && address.state && address.country === \"United States\") {\n              _this.geocode.result = true;\n              _this.geocode.processing = false;\n              _this.practice.address_city = address.city;\n              _this.practice.address_state = address.state;\n            } else {\n              _this.geocode.result = false;\n              _this.geocode.processing = false;\n            }\n          }, function (error) {\n            _this.geocode.result = false;\n            return _this.geocode.processing = false;\n          });\n        }\n      };\n      this.onPracticeRoleChange = function () {\n        return EUserProfilesService.put(this.eUserProfile.enterprise_customer_id, this.eUserProfile);\n      };\n      this.addOffice = function () {\n        if (this.isExistingPractice) {\n          return OfficeService.put(this.user.user_profile.enterprise_customer_id, this.practice);\n        } else {\n          return OfficeService.post(this.user.user_profile.enterprise_customer_id, Object.assign({}, this.practice, {\n            enterprise_customer_id: this.user.user_profile.enterprise_customer_id\n          }));\n        }\n      };\n      this.save = function () {\n        var _this2 = this;\n        var error;\n        try {\n          $log.log('updating practice...', this.practice);\n          if (!this.practice.ehr_type_id) {\n            throw new Error($filter('translate')('SETUP.REGISTRATION.TOASTS.PLEASE_SELECT_YOUR_EHR_PROVIDER'));\n          }\n          this.submitPromise = ECustomersService.put({\n            id: this.user.user_profile.enterprise_customer_id,\n            name: this.practice.name,\n            number_of_physicians: this.practice.number_of_physicians,\n            practice_specialty_id: this.practice.practiceSpec,\n            ehr_type_id: this.practice.ehr_type_id\n          }).then(function (customer) {\n            $log.log('customer', customer);\n            return _this2.addOffice().then( /*#__PURE__*/function () {\n              var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(office) {\n                var i, invite, len, ref;\n                return regeneratorRuntime.wrap(function _callee3$(_context3) {\n                  while (1) switch (_context3.prev = _context3.next) {\n                    case 0:\n                      $log.log('office', office);\n                      if (!(_this2.selectedDeviceTypes.length > 0)) {\n                        _context3.next = 4;\n                        break;\n                      }\n                      _context3.next = 4;\n                      return EEnrollmentsService.createEvaluationEnrollment(_this2.user.user_profile.enterprise_customer_id, _this2.selectedDeviceTypes);\n                    case 4:\n                      if (!(_this2.providerInvites.length > 0)) {\n                        _context3.next = 20;\n                        break;\n                      }\n                      ref = _this2.providerInvites;\n                      i = 0, len = ref.length;\n                    case 7:\n                      if (!(i < len)) {\n                        _context3.next = 20;\n                        break;\n                      }\n                      invite = ref[i];\n                      invite.setup_invitation = true;\n                      invite.enterprise_customer_id = _this2.user.user_profile.enterprise_customer_id;\n                      invite.initiator_user_profile_id = _this2.user.user_profile.id;\n                      invite.enterprise_invitation_practice_roles = [];\n                      invite.enterprise_invitation_practice_roles[0] = {\n                        practice_role_id: invite.practice_role_id\n                      };\n                      $log.log('creating invite...', invite, _this2.user.user_profile.enterprise_customer_id, _this2.user.user_profile.id);\n                      _context3.next = 17;\n                      return EnterpriseInvitationsService.post(_this2.user.user_profile.enterprise_customer_id, invite);\n                    case 17:\n                      i++;\n                      _context3.next = 7;\n                      break;\n                    case 20:\n                      if (!_this2.nextState) {\n                        _context3.next = 22;\n                        break;\n                      }\n                      return _context3.abrupt(\"return\", $state.go(_this2.nextState));\n                    case 22:\n                    case \"end\":\n                      return _context3.stop();\n                  }\n                }, _callee3);\n              }));\n              return function (_x3) {\n                return _ref3.apply(this, arguments);\n              };\n            }());\n          }).catch(function (error) {\n            $log.log('update customer error', error);\n            throw error;\n          });\n          return this.submitPromise;\n        } catch (error1) {\n          error = error1;\n          return NotificationsService.error(error.message || error.data.errorMessage || error.data.data.errorMessage || error.data.data.message);\n        }\n      };\n      this.back = function () {\n        if (this.prevState) {\n          return $state.go(this.prevState);\n        }\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-practice/enterprise-practice.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterprisePaymentMethod\n   * @restrict E\n   * @param {object} user user model object\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string=} skipState state to skip to (bank account chooser in this case)\n   * @description\n   * Choose payment method\n   */\n  angular.module('setup').component('enterprisePaymentMethod', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      eCustomerFees: '<',\n      nextState: '@?',\n      skipState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $filter, Auth0Store, IB_PHONE) {\n      this.$onInit = function () {\n        this.ibPhone = IB_PHONE;\n        $log.log('this.eCustomerFees[0].monthly_fee_per_patient', this.eCustomerFees[0].monthly_fee_per_patient_cents);\n        return this.translateData = {\n          monthlyFeePerPatient: $filter('currency')(this.eCustomerFees[0].monthly_fee_per_patient_cents / 100, '$', 2)\n        };\n      };\n      this.isCreditPayment = function (isCreditCard) {\n        if (isCreditCard) {\n          $state.go(this.nextState);\n        }\n        if (!isCreditCard) {\n          return $state.go(this.skipState);\n        }\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-payment-method/enterprise-payment-method.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseOffering\n   * @restrict E\n   * @param {object} user user model object\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string=} prevState prev state to navigate to after save\n   * @description\n   * Provider setup flow - explains our offering\n   */\n  angular.module('setup').component('enterpriseOffering', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      nextState: '@?',\n      prevState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state) {\n      this.$onInit = function () {\n        $log = $log.getInstance('enterpriseOffering');\n        return $log.log('enterpriseOffering loaded');\n      };\n      this.goToNext = function () {\n        return this.submitPromise = $state.go(this.nextState);\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-offering/enterprise-offering.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseLearnRevenue\n   * @restrict E\n   * @param {object} user user model object\n   * @param {object} offices enterprise customer offices\n   * @param {object} cptFees cptFees for the enterprise customer office\n   * @param {object} eCustomerFees eCustomerFees for the office zipcode\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string=} prevState prev state to navigate to after save\n   * @param {string=} skipState state to skip to\n   * @description\n   * Provider setup flow - explains provider revenue\n   */\n  angular.module('setup').component('enterpriseLearnRevenue', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      offices: '<',\n      cptFees: '<',\n      eCustomerFees: '<',\n      nextState: '@?',\n      prevState: '@?',\n      skipState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, REGEX) {\n      this.$onInit = function () {\n        $log.log('this.user', this.user);\n        $log.log('cptFees', this.cptFees);\n        $log.log('eCustomerFees', this.eCustomerFees);\n        this.regex = REGEX.NUMBER;\n        this.inputNumPatients = 800;\n        this.numPatients = this.inputNumPatients;\n        this.serviceCptCode = _.find(this.cptFees, {\n          code: '99454'\n        });\n        this.reportingCptCode = _.find(this.cptFees, {\n          code: '99457'\n        });\n        this.reportingExtendedCptCode = _.find(this.cptFees, {\n          code: '99458'\n        });\n        this.setupCptCode = _.find(this.cptFees, {\n          code: '99453'\n        });\n        this.reportingPrice = this.reportingCptCode.non_facility_price_cents;\n        this.reportingExtendedPrice = this.reportingExtendedCptCode.non_facility_price_cents;\n        this.setupPrice = this.setupCptCode.non_facility_price_cents;\n        this.servicePrice = this.serviceCptCode.non_facility_price_cents;\n        this.monthlyFeePerPatient = this.eCustomerFees[0].monthly_fee_per_patient_cents;\n        return this.calculateRevenue();\n      };\n      this.recalculate = function () {\n        return this.numPatients = this.inputNumPatients;\n      };\n      this.calculateRevenue = function (priceInCents, numPatients, yearlyInterval) {\n        return priceInCents * (numPatients * (yearlyInterval || 12));\n      };\n      this.calculateTotalAnnualRevenue = function (numPatients) {\n        return this.calculateRevenue(this.reportingPrice, numPatients, 12) + this.calculateRevenue(this.setupPrice, numPatients, 1) + this.calculateRevenue(this.servicePrice, numPatients, 12) - this.calculateRevenue(this.monthlyFeePerPatient, numPatients, 12);\n      };\n      this.print = function (divName) {\n        var popupWin, printContents;\n        popupWin = null;\n        printContents = document.getElementById(divName).innerHTML;\n        if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n          popupWin = window.open('', '_blank', 'width=800,height=600,scrollbars=no,menubar=no,toolbar=no,location=no,status=no,titlebar=no');\n          popupWin.window.focus();\n          popupWin.document.write('<html> <head> <style> table.practice-revenue { margin-bottom: 10px; font-size: 0.75rem; line-height: 16px; color: #1f1f1f; font-family: sans-serif; border-collapse: collapse; } table.practice-revenue tr th { padding: 12px; text-align: center; font-weight: normal; color: #6d6d6d; } table.practice-revenue tr td { width: 15%; padding: 10px; text-align: center; } table.practice-revenue tr td .code { display: block; line-height: 18px; font-weight: bold; } table.practice-revenue tr td .code-description, table.practice-revenue tr td .code-description-info { display: inline-block; color: #6d6d6d; } table.practice-revenue tr td .code-description-info { margin-top: 10px; font-size: 0.625rem; line-height: 14px; } table.practice-revenue tr td .code-description-info strong { color: #1f1f1f; } table.practice-revenue tr td:first-child { width: 40%; text-align: left; } table.practice-revenue tbody tr td { border: 1px solid #E0E0E0; } table.practice-revenue tbody tr td:first-child { border-left: none; } table.practice-revenue tbody tr td:last-child { border-right: none; } table.practice-revenue tbody tr.revenue-totals { border-top: 5px solid #E0E0E0; border-bottom: 1px solid #E0E0E0; } table.practice-revenue tbody tr.revenue-totals td { border: none; } table.practice-revenue tr td.bg-gray { background-color: #E0E0E0; } </style> </head> <body onload=\"window.print()\">' + printContents + '</body> </html>');\n          popupWin.onbeforeunload = function (event) {\n            popupWin.close();\n            return '.\\n';\n          };\n          popupWin.onabort = function (event) {\n            popupWin.document.close();\n            popupWin.close();\n          };\n        } else {\n          popupWin = window.open('', '_blank', 'width=800,height=600');\n          popupWin.document.open();\n          popupWin.document.write('<html> <head> <style> table.practice-revenue { margin-bottom: 10px; font-size: 0.75rem; line-height: 16px; color: #1f1f1f; font-family: sans-serif; border-collapse: collapse; } table.practice-revenue tr th { padding: 12px; text-align: center; font-weight: normal; color: #6d6d6d; } table.practice-revenue tr td { width: 15%; padding: 10px; text-align: center; } table.practice-revenue tr td .code { display: block; line-height: 18px; font-weight: bold; } table.practice-revenue tr td .code-description, table.practice-revenue tr td .code-description-info { display: inline-block; color: #6d6d6d; } table.practice-revenue tr td .code-description-info { margin-top: 10px; font-size: 0.625rem; line-height: 14px; } table.practice-revenue tr td .code-description-info strong { color: #1f1f1f; } table.practice-revenue tr td:first-child { width: 40%; text-align: left; } table.practice-revenue tbody tr td { border: 1px solid #E0E0E0; } table.practice-revenue tbody tr td:first-child { border-left: none; } table.practice-revenue tbody tr td:last-child { border-right: none; } table.practice-revenue tbody tr.revenue-totals { border-top: 5px solid #E0E0E0; border-bottom: 1px solid #E0E0E0; } table.practice-revenue tbody tr.revenue-totals td { border: none; } table.practice-revenue tr td.bg-gray { background-color: #E0E0E0; } </style> </head> <body onload=\"window.print()\">' + printContents + '</body> </html>');\n          popupWin.document.close();\n        }\n        popupWin.document.close();\n        return true;\n      };\n      this.goToNext = function () {\n        this.learnRevenueForm.$setPristine();\n        this.learnRevenueForm.$setUntouched();\n        return this.submitPromise = $state.go(this.nextState);\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-learn-revenue/enterprise-learn-revenue.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseCreditCard\n   * @restrict E\n   * @param {object} user current user\n   * @param {object} enterpriseCustomer enterprise customer (practice)\n   * @param {string=} nextState the next state string\n   * @param {string=} prevState the previous state string\n   * @description\n  Adds credit card to Stripe account of enterprise customer.\n   */\n  angular.module('setup').component('enterpriseCreditCard', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      nextState: '@?',\n      prevState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, env, EBillingService, StatesService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('enterpriseCreditCard');\n        this.stateOptionsArray = StatesService.states;\n        this.payment = {};\n        this.stripe = Stripe(env.stripe_public_key);\n        this.card = {};\n        return this.errorMsg = null;\n      };\n      this.paymentProcess = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var additionalData, error, response, sourceMetadata, updateCardResponse;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              additionalData = {\n                name: this.payment.name\n              };\n              _context.prev = 1;\n              this.submitPromise = this.stripe.createToken(this.card, additionalData);\n              _context.next = 5;\n              return this.submitPromise;\n            case 5:\n              response = _context.sent;\n              // get stripe token back from successful card authorization\n              $log.log('stripe.createToken', response);\n              // add the card to the user's stripe account\n              sourceMetadata = {\n                customer_type: 'DOCTOR',\n                sponsor_user_profile_id: this.user.user_profile.id // logged in user\n              };\n              $log.log('sourceMetadata', sourceMetadata);\n              _context.prev = 9;\n              this.submitPromise = EBillingService.updateCard(this.enterpriseCustomer.id, response.token.id, sourceMetadata);\n              _context.next = 13;\n              return this.submitPromise;\n            case 13:\n              updateCardResponse = _context.sent;\n              $log.log('updateCardResponse', updateCardResponse);\n              return _context.abrupt(\"return\", $state.go(this.nextState));\n            case 18:\n              _context.prev = 18;\n              _context.t0 = _context[\"catch\"](9);\n              error = _context.t0;\n              $log.log('updateCard error', error);\n              return _context.abrupt(\"return\", NotificationsService.error('PORTAL.BILLING.UPDATE_CARD.TOASTS.ERROR'));\n            case 23:\n              _context.next = 35;\n              break;\n            case 25:\n              _context.prev = 25;\n              _context.t1 = _context[\"catch\"](1);\n              error = _context.t1;\n              if (!(error.type && /^Stripe/.test(error.type))) {\n                _context.next = 33;\n                break;\n              }\n              $log.log('Stripe error: ', error.message);\n              return _context.abrupt(\"return\", NotificationsService.error(error.message));\n            case 33:\n              $log.error('Unknown Stripe CC error', error.message, error);\n              return _context.abrupt(\"return\", NotificationsService.error(error.message));\n            case 35:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1, 25], [9, 18]]);\n      }));\n    },\n    templateUrl: 'app/components/setup/enterprise-credit-card/enterprise-credit-card.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseComplete\n   * @restrict E\n   * @param {string} nextState the next state string\n   * @description\n   * Final page in the enterprise admin setup flow. Set the setup_progress is_complete flag to true here.\n   */\n  angular.module('setup').component('enterpriseComplete', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      nextState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, SetupProgressService) {\n      this.$onInit = function () {\n        this.user.user_profile.setup_progress.is_complete = true;\n        return SetupProgressService.put(this.user.user_profile, this.user.user_profile.setup_progress);\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-complete/enterprise-complete.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseChooseDevices\n   * @restrict E\n   * @param {object} user user model object\n   * @param {object} deviceTypes deviceTypes model objects\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string=} prevState previous state to navigate to\n   * @param {string=} skipState state to skip to\n   * @description\n   * Used in dr. customer registration flow to select test devices for provider.\n   */\n  angular.module('setup').component('enterpriseChooseDevices', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      offices: '<',\n      deviceTypes: '<',\n      enterpriseCustomer: '<',\n      nextState: '@?',\n      prevState: '@?',\n      skipState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, $state, $stateParams, EEnrollmentsService, StatesService, AddressLookupService, OfficeService) {\n      this.$onInit = function () {\n        $log.log('this.user', this.user);\n        this.sortedDeviceTypes = [];\n        this.evaluationDevices = {};\n        this.sortEvaluationDevices();\n        this.stateOptionsArray = StatesService.states;\n        this.geocode = {\n          result: false,\n          processing: false\n        };\n        this.isExistingPractice = false;\n        if (this.offices.length > 0) {\n          this.practice = this.offices[0];\n          this.isExistingPractice = true;\n        } else {\n          this.practice = OfficeService.new();\n          this.practice.is_primary = true;\n          this.displayFoundNPI = false;\n          this.displayNotFoundNPI = false;\n          if (this.npiResult && this.npiResult.npi) {\n            this.practice.address_street = this.npiResult.hq_address;\n            this.practice.address_city = this.npiResult.hq_city;\n            this.practice.address_state = this.npiResult.hq_state;\n            this.practice.address_zipcode = this.npiResult.hq_zip_code;\n            this.practice.name = this.npiResult.primary_affiliation_hospital_name;\n            this.translationData = {\n              name: this.npiResult.physician_name\n            };\n            this.displayFoundNPI = true;\n            this.displayNotFoundNPI = false;\n          } else {\n            this.displayFoundNPI = false;\n            this.displayNotFoundNPI = true;\n          }\n        }\n        // set a default practice name\n        if (this.user.user_profile.name_last && !this.enterpriseCustomer.name) {\n          return this.practice.name = 'Dr. ' + this.user.user_profile.name_last + '\\'s Practice';\n        } else {\n          return this.practice.name = this.enterpriseCustomer.name;\n        }\n      };\n      this.createEvaluationEnrollment = function () {\n        var _this = this;\n        var selectedDeviceTypes, state;\n        selectedDeviceTypes = [];\n        $log.log('this.sortedDeviceTypes', this.sortedDeviceTypes);\n        _.forOwn(this.evaluationDevices, function (value, key) {\n          var deviceType;\n          $log.log('value', value);\n          $log.log('key', key);\n          if (value) {\n            deviceType = _.find(_this.sortedDeviceTypes, {\n              id: key\n            });\n            $log.log('deviceType', deviceType);\n            return selectedDeviceTypes.push(deviceType.category);\n          }\n        });\n        state = {\n          practice: angular.toJson(this.practice)\n        };\n        if (selectedDeviceTypes.length > 0) {\n          state.devices_selected = selectedDeviceTypes.toString();\n        }\n        return this.submitPromise = $state.go(this.nextState, state);\n      };\n      this.sortEvaluationDevices = function () {\n        var _this2 = this;\n        var ambientChf, bpCuff, glucometer, pulseOximeter, scale, thermometer;\n        thermometer = _.find(this.deviceTypes.data.data, {\n          category: 'THERMOMETER'\n        });\n        pulseOximeter = _.find(this.deviceTypes.data.data, {\n          category: 'PULSE_OXIMETER'\n        });\n        bpCuff = _.find(this.deviceTypes.data.data, {\n          category: 'BP_CUFF'\n        });\n        scale = _.find(this.deviceTypes.data.data, {\n          category: 'SCALE'\n        });\n        glucometer = _.find(this.deviceTypes.data.data, {\n          category: 'GLUCOMETER'\n        });\n        ambientChf = _.find(this.deviceTypes.data.data, {\n          category: 'AMBIENT_CHF'\n        });\n        this.sortedDeviceTypes = _.compact([bpCuff, glucometer, scale, pulseOximeter, ambientChf]);\n        _.each(this.sortedDeviceTypes, function (device) {\n          return _this2.evaluationDevices[device.id] = true;\n        });\n        return this.comingSoonDeviceTypes = _.compact([thermometer]);\n      };\n      this.onChange = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n          var address, error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (!(payload.model !== this.practice.address_zipcode)) {\n                  _context.next = 16;\n                  break;\n                }\n                this.geocode.processing = true;\n                _context.prev = 2;\n                if (payload.model) {\n                  _context.next = 5;\n                  break;\n                }\n                return _context.abrupt(\"return\");\n              case 5:\n                _context.next = 7;\n                return AddressLookupService.lookupCityStateByZip(payload.model);\n              case 7:\n                address = _context.sent;\n                if (address.city && address.state && address.country === \"United States\") {\n                  this.geocode.result = true;\n                  this.geocode.processing = false;\n                  this.practice.address_city = address.city;\n                  this.practice.address_state = address.state;\n                } else {\n                  this.geocode.result = false;\n                  this.geocode.processing = false;\n                }\n                _context.next = 16;\n                break;\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](2);\n                error = _context.t0;\n                this.geocode.result = false;\n                return _context.abrupt(\"return\", this.geocode.processing = false);\n              case 16:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[2, 11]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.back = function () {\n        if (this.prevState) {\n          return $state.go(this.prevState);\n        }\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-choose-devices/enterprise-choose-devices.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseBillerSetup\n   * @restrict E\n   * @param {object} user user model object\n   * @param {string=} nextState next state to navigate to after save\n   * @param {string=} skipState state to skip to\n   * @description\n   * Used in dr. customer registration flow to create a biller for the practice.\n   */\n  angular.module('setup').component('enterpriseBillerSetup', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      nextState: '@?',\n      skipState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $translate, NotificationsService, EBillersService, REGEX) {\n      this.$onInit = function () {\n        $log.log('this.user', this.user);\n        this.numberRegex = REGEX.NUMBER;\n        this.biller = EBillersService.new();\n        this.biller.enterprise_customer_id = this.user.user_profile.enterprise_customer_id;\n        $log.log('this.biller', this.biller);\n        this.billerChoice = {\n          self: true\n        };\n        this.emailValidationMessages = [{\n          type: 'pattern',\n          message: 'VALIDATION.PATTERN'\n        }, {\n          type: 'required',\n          message: 'VALIDATION.REQUIRED'\n        }, {\n          type: 'match',\n          message: 'VALIDATION.MATCH.EMAIL'\n        }];\n        this.emailRegex = REGEX.EMAIL;\n        return this.numberRegex = REGEX.NUMBER;\n      };\n      this.save = function () {\n        var _this = this;\n        this.submitPromise = EBillersService.post(this.biller).then(function (biller) {\n          $log.log('biller', biller);\n          if (_this.nextState) {\n            return $state.go(_this.nextState);\n          }\n        }).catch(function (error) {\n          $log.log('create biller error', error);\n          return NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n        });\n        return this.submitPromise;\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-biller-setup/enterprise-biller-setup.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:enterpriseBankAccount\n   * @restrict E\n   * @param {object} user user model object\n   * @param {object} customer stripe customer\n   * @param {string} nextState next state to navigate to after save\n   * @param {string=} prevState prev state to navigate to\n   * @param {string=} skipState state to skip to (bank account chooser in this case)\n   * @description\n   * Wrapper page for the add-bank-account component in setup flow.\n   * Allows enterprise customer to add a credit card or bank account.\n   */\n  angular.module('setup').component('enterpriseBankAccount', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      nextState: '@',\n      prevState: '@?',\n      skipState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, Auth0Store, EACHService, NotificationsService) {\n      this.$onInit = function () {\n        this.linkHandler = null; // a reference to the Plaid Link object\n        return this.hidePanel = true;\n      };\n      this.onSuccess = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(payload) {\n          var error, plaidAchAccount;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return EACHService.onLinkSuccess(payload, this.enterpriseCustomer.id, this.user.user_profile.id, this.enterpriseCustomer.stripe_customer_id);\n              case 3:\n                plaidAchAccount = _context.sent;\n                $log.log('plaidAchAccount', plaidAchAccount);\n                // TODO: determine status and show correct message\n                if (plaidAchAccount.account_verification_status === null) {\n                  NotificationsService.success('PORTAL.ALERTS.VERIFY_BANK.TOASTS.SUCCESS_VERIFIED');\n                } else {\n                  NotificationsService.success('PORTAL.ALERTS.VERIFY_BANK.TOASTS.SUCCESS_NOT_VERIFIED');\n                }\n                return _context.abrupt(\"return\", $state.go(this.nextState));\n              case 9:\n                _context.prev = 9;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                return _context.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage || error.data.message || error.data.data.message));\n              case 13:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 9]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onLoad = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(payload) {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return EACHService.onLinkLoad(payload);\n              case 2:\n                this.linkHandler = _context2.sent;\n                return _context2.abrupt(\"return\", this.hidePanel = true);\n              case 4:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onEvent = function (payload) {\n        // OPEN\n        // SELECT_INSTITUTION\n        // HANDOFF\n        // TRANSITION_VIEW\n        $log.log('onEvent', payload);\n        if (payload.eventName === 'EXIT') {\n          this.hidePanel = false;\n        }\n      };\n      this.onExit = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.next = 2;\n                return EACHService.onLinkExit(payload);\n              case 2:\n                return _context3.abrupt(\"return\", this.hidePanel = false);\n              case 3:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x3) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.addBankAccountFailure = function () {\n        // enter a credit card instead\n        return $state.go(this.skipState);\n      };\n      this.back = function () {\n        if (this.prevState) {\n          return this.backPromise = $state.go(this.prevState);\n        }\n      };\n      this.$onDestroy = function () {\n        return EACHService.onLinkDestroy(this.linkHandler);\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-bank-account/enterprise-bank-account.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('setup').component('enterpriseAgreements', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '=',\n      latestSignedContractState: '<',\n      enterpriseCustomer: '<',\n      eCustomerFees: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $filter, env, $rootScope, $state, AuthService, NotificationsService, SetupProgressService, $cookies, OfficeService) {\n      var _this = this;\n      this.$onInit = function () {\n        // Clear for testing, re-register, any situation where they might be\n        // coming to this page a second time\n        $cookies.put(\"bypass_contract\", '0');\n        $log = $log.getInstance('enterpriseAgreements');\n        $log.log('$onInit');\n        $log.log('this.enterpriseCustomer', this.enterpriseCustomer);\n        this.isLoading = true;\n        this.displayLaterBtn = AuthService.isAdmin() || AuthService.isAccountManager() || this.enterpriseCustomer.id === 'ac9df775-3b06-4cc9-91db-5b357bd61ce6';\n        // https://developer.pactsafe.com/docs/how-to-use-dynamic-contracts-with-the-javascript-library\n        this.monthlyFeePerPatient = $filter('currency')(this.eCustomerFees[0].monthly_fee_per_patient_cents / 100, '');\n        this.pactSafeGroupId = this.enterpriseCustomer.pactsafe_contract_group_id;\n        this.loadPactsafe();\n        return this.isLoading = false;\n      };\n      this.loadPactsafe = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var date;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log.log(\"Customer\", _this.enterpriseCustomer);\n              _context.next = 3;\n              return OfficeService.get(_this.enterpriseCustomer.id, _this.enterpriseCustomer.default_office_id);\n            case 3:\n              _this.office = _context.sent;\n              $log.log(\"Default office\", _this.office);\n              date = new Date();\n              _ps('create', env.pactsafe.site_access_id, {\n                disable_sending: true,\n                dynamic: true\n              });\n              return _context.abrupt(\"return\", _ps('load', _this.pactSafeGroupId, {\n                container_selector: 'agreements',\n                render_data: {\n                  signing_user_profile_id: _this.user.user_profile.id,\n                  name_first: _this.user.user_profile.name_first,\n                  name_last: _this.user.user_profile.name_last,\n                  email: _this.user.user_profile.email,\n                  auth0_user_id: _this.user.auth0_user_id,\n                  monthly_fee_per_patient: _this.monthlyFeePerPatient,\n                  organization_name: _this.enterpriseCustomer.name,\n                  todays_date: date.toLocaleDateString(),\n                  organization_state: _this.office.address_state,\n                  organization_address: _this.office.address_street,\n                  enterprise_customer_fee: _this.monthlyFeePerPatient,\n                  enterprise_customer_fee_minus3: _this.eCustomerFees[0].monthly_fee_per_patient_cents / 100 - 3,\n                  enterprise_customer_fee_minus8: _this.eCustomerFees[0].monthly_fee_per_patient_cents / 100 - 8,\n                  enterprise_customer_fee_minus10: _this.eCustomerFees[0].monthly_fee_per_patient_cents / 100 - 10,\n                  enterprise_customer_fee_times25: _this.eCustomerFees[0].monthly_fee_per_patient_cents / 100 * 25\n                },\n                event_callback: function event_callback() {\n                  $log.log('event_callback');\n                  _ps('set', 'signer_id', _this.user.user_profile.email);\n                  _ps(_this.pactSafeGroupId + ':send', 'visited', {\n                    disable_sending: false,\n                    event_callback: function event_callback(err) {\n                      if (err) {\n                        $log.log('pactsafe error while sending visited event', err);\n                        return NotificationsService.error(err);\n                      }\n                    }\n                  });\n                  return _ps.on('valid', function () {\n                    return _this.agreed();\n                  });\n                }\n              }));\n            case 8:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      this.agreed = function () {\n        return _ps(_this.pactSafeGroupId + ':send', 'agreed', {\n          disable_sending: false,\n          event_callback: function event_callback(err, event_type, context, payload) {\n            $rootScope.$digest();\n            // $log.log 'err', err, event_type, context, payload\n            if (err) {\n              $log.log('pactsafe error', err);\n              return NotificationsService.error(err);\n            } else {\n              _this.user.user_profile.setup_progress.is_complete = true;\n              SetupProgressService.put(_this.user.user_profile, _this.user.user_profile.setup_progress);\n              return $state.go('enterprise.dashboard');\n            }\n          }\n        });\n      };\n      this.completeSigningLater = function () {\n        $log.log(\"bypass_contract\", \"1\");\n        $cookies.put(\"bypass_contract\", '1');\n        $state.go('enterprise.dashboard');\n        return true;\n      };\n      this.$onDestroy = function () {\n        $log.log('removing _ps');\n        _ps.off();\n        return _ps.remove('s0');\n      };\n      this.back = function () {\n        if (this.prevState) {\n          return $state.go(this.prevState);\n        }\n      };\n    },\n    templateUrl: 'app/components/setup/enterprise-agreements/enterprise-agreements.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:complete\n   * @restrict E\n   * @param {string} nextState the next state string\n   * @description\n   * Final page in the user/device setup flow. Set the setup_progress is_complete flag to true here.\n   */\n  angular.module('setup').component('complete', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<',\n      invitation: '<',\n      nextState: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $translate, $filter, SetupProgressService, EnterpriseInvitationsService) {\n      this.$onInit = function () {\n        this.user.user_profile.setup_progress.is_complete = true;\n        SetupProgressService.put(this.user.user_profile, this.user.user_profile.setup_progress);\n        $log.log('enterpriseInvitation', this.invitation);\n        if (this.invitation[0]) {\n          return this.message = $filter('translate')('SETUP.COMPLETE.BODY.INVITE_COPY', {\n            practice_name: this.enterpriseCustomer.name\n          });\n        } else {\n          return this.message = $filter('translate')('SETUP.COMPLETE.BODY.COPY');\n        }\n      };\n    },\n    templateUrl: 'app/components/setup/complete/complete.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc component\n   * @name portal.component:five9ProxyRuntime\n   * @description\n   * Stable shell-level host for the local Five9 proxy runtime iframe.\n   */\n  angular.module('portal').component('five9ProxyRuntime', {\n    bindings: {\n      features: '<',\n      user: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($element, $log, $sce, $timeout, $scope, Five9Service, NotificationsService) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('five9ProxyRuntime');\n        this.state = Five9Service.getState();\n        this.trustedProxyUrl = null;\n        this.expanded = false;\n        this.hasLoadedIframe = false;\n        this.notifiedFailureKeys = {};\n        this.updateVisibility();\n        this.configureInboundContext();\n        Five9Service.subscribe('five9:stateChanged', $scope, function (event, state) {\n          _this.state = state;\n          return _this.notifyStateFailure(state);\n        });\n        Five9Service.subscribe('five9:openPanel', $scope, function (event, data) {\n          return _this.openPanel((data != null ? data.reason : void 0) || 'explicit');\n        });\n        Five9Service.subscribe('five9:callStarted', $scope, function () {\n          _this.state = Five9Service.getState();\n          _this.clearFailure('call');\n          _this.clearFailure('cav');\n          return _this.openPanel('callStarted');\n        });\n        Five9Service.subscribe('five9:callFinished', $scope, function () {\n          return _this.state = Five9Service.getState();\n        });\n        Five9Service.subscribe('five9:callFailed', $scope, function (event, data) {\n          _this.state = Five9Service.getState();\n          return _this.notifyFailure('call', (data != null ? data.interactionId : void 0) || (data != null ? data.error : void 0), (data != null ? data.error : void 0) || 'Five9 call could not be started');\n        });\n        Five9Service.subscribe('five9:cavApplied', $scope, function () {\n          return _this.clearFailure('cav');\n        });\n        Five9Service.subscribe('five9:cavFailed', $scope, function (event, data) {\n          return _this.notifyFailure('cav', (data != null ? data.interactionId : void 0) || (data != null ? data.error : void 0), (data != null ? data.error : void 0) || 'Five9 call metadata could not be attached');\n        });\n        Five9Service.subscribe('five9:smsNumberSuggested', $scope, function () {\n          return _this.clearFailure('sms');\n        });\n        return Five9Service.subscribe('five9:smsFailed', $scope, function (event, data) {\n          return _this.notifyFailure('sms', data != null ? data.error : void 0, (data != null ? data.error : void 0) || 'The patient number could not be supplied to Five9');\n        });\n      };\n      this.$onChanges = function () {\n        this.updateVisibility();\n        return this.configureInboundContext();\n      };\n      this.configureInboundContext = function () {\n        var contextKey, ref;\n        if (!(this.user && this.enterpriseCustomer)) {\n          return;\n        }\n        contextKey = [this.user.id, this.user.logged_in_office_id, (ref = this.user.user_profile) != null ? ref.id : void 0, this.enterpriseCustomer.id].join(':');\n        if (contextKey === this.inboundContextKey) {\n          return;\n        }\n        this.inboundContextKey = contextKey;\n        return Five9Service.configureInboundContext({\n          user: this.user,\n          enterpriseCustomer: this.enterpriseCustomer\n        });\n      };\n      this.isEnabled = function () {\n        var ref, ref1;\n        return !!((ref = this.features) != null ? (ref1 = ref.five9_patient_click_to_call_enabled) != null ? ref1.is_enabled : void 0 : void 0);\n      };\n      this.updateVisibility = function () {\n        var _this2 = this;\n        if (this.isEnabled() && Five9Service.shouldRenderProxy()) {\n          this.trustedProxyUrl = $sce.trustAsResourceUrl(Five9Service.getProxyPageUrl());\n          return $timeout(function () {\n            return _this2.attachIframeLoadHandler();\n          }, 0);\n        } else {\n          this.trustedProxyUrl = null;\n          return this.expanded = false;\n        }\n      };\n      this.attachIframeLoadHandler = function () {\n        var controller, iframe;\n        iframe = $element[0].querySelector('iframe');\n        if (!iframe) {\n          return;\n        }\n        controller = this;\n        return iframe.onload = function () {\n          return $scope.$evalAsync(function () {\n            controller.hasLoadedIframe = true;\n            return Five9Service.connectProxy(iframe).catch(function (error) {\n              return $log.error('Five9 proxy connection failed', error);\n            });\n          });\n        };\n      };\n      this.openPanel = function (reason) {\n        if (!this.trustedProxyUrl) {\n          return;\n        }\n        this.expanded = true;\n        return $timeout(function () {\n          var iframe, launcher;\n          if (reason === 'sms') {\n            iframe = $element[0].querySelector('.five9-floating-panel iframe');\n            if (iframe != null ? iframe.focus : void 0) {\n              return iframe.focus();\n            }\n          }\n          launcher = $element[0].querySelector('.five9-floating-launcher');\n          return launcher != null ? launcher.focus() : void 0;\n        }, 0);\n      };\n      this.minimizePanel = function () {\n        this.expanded = false;\n        return $timeout(function () {\n          var launcher;\n          launcher = $element[0].querySelector('.five9-floating-launcher');\n          return launcher != null ? launcher.focus() : void 0;\n        }, 0);\n      };\n      this.togglePanel = function () {\n        if (this.expanded) {\n          return this.minimizePanel();\n        } else {\n          return this.openPanel('launcher');\n        }\n      };\n      this.clearFailure = function (type) {\n        return delete this.notifiedFailureKeys[type];\n      };\n      this.notifyFailure = function (type, identity, message) {\n        var key;\n        key = \"\".concat(type, \":\").concat(identity || message);\n        if (this.notifiedFailureKeys[type] === key) {\n          return;\n        }\n        this.notifiedFailureKeys[type] = key;\n        return NotificationsService.error(message);\n      };\n      this.notifyStateFailure = function (state) {\n        var message;\n        // Only terminal failures produce user-facing errors. Auth/station/campaign/reconnect\n        // are expected transient states during login, navigation, refresh, and wrap-up.\n        if (!Five9Service.isTerminalFailureStatus(state != null ? state.status : void 0)) {\n          this.clearFailure('state');\n          return;\n        }\n        message = function () {\n          switch (state.status) {\n            case 'unsupported_runtime':\n              return state.error || 'The embedded Five9 client could not be loaded';\n            case 'failed':\n              return state.error || 'Five9 failed to initialize';\n            default:\n              return null;\n          }\n        }();\n        if (message) {\n          return this.notifyFailure('state', \"\".concat(state.status, \":\").concat(state.error || ''), message);\n        } else {\n          return this.clearFailure('state');\n        }\n      };\n      this.launcherLabel = function () {\n        var ref;\n        if (this.expanded) {\n          return 'Minimize Five9 panel';\n        }\n        switch ((ref = this.state) != null ? ref.status : void 0) {\n          case 'calling':\n          case 'call_requesting':\n            return 'Five9 call in progress';\n          case 'wrap_up':\n            return 'Five9 call wrap-up';\n          case 'authentication_required':\n            return 'Sign in to Five9';\n          case 'reconnecting':\n          case 'connecting':\n          case 'adapter_loading':\n            return 'Connecting to Five9';\n          default:\n            return 'Open Five9 panel';\n        }\n      };\n      this.launcherText = function () {\n        var ref;\n        if (this.expanded) {\n          return 'Minimize Five9';\n        }\n        switch ((ref = this.state) != null ? ref.status : void 0) {\n          case 'calling':\n          case 'call_requesting':\n            return 'On Call';\n          case 'wrap_up':\n            return 'Wrap Up';\n          case 'authentication_required':\n            return 'Sign In';\n          case 'reconnecting':\n          case 'connecting':\n          case 'adapter_loading':\n            return 'Connecting';\n          case 'failed':\n          case 'unsupported_runtime':\n            return 'Five9 Error';\n          default:\n            return 'Five9';\n        }\n      };\n      this.launcherClass = function () {\n        var ref, status;\n        status = (ref = this.state) != null ? ref.status : void 0;\n        return {\n          'is-expanded': this.expanded,\n          'is-ready': status === 'ready',\n          'is-calling': status === 'calling' || status === 'call_requesting',\n          'is-wrap-up': status === 'wrap_up',\n          'is-connecting': ['connecting', 'reconnecting', 'adapter_loading', 'proxy_loading'].indexOf(status) >= 0,\n          'is-auth-required': status === 'authentication_required',\n          'is-failed': status === 'failed' || status === 'unsupported_runtime'\n        };\n      };\n    },\n    templateUrl: 'app/components/portal/five9-proxy-runtime/five9-proxy-runtime.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:navbar\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {function} onToggleMobileNavigation toggles the state of the navigation on mobile breakpoint\n   * @description\n   * Displays the emergency contacts page\n   */\n  angular.module('portal').component('navbar', {\n    bindings: {\n      user: '=',\n      onToggleMobileNavigation: '<',\n      enterpriseCustomerId: '<',\n      enterpriseCustomer: '<',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, EEnrollmentsService, $state, AuthService) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var enrollments, error, queryString, ref, ref1;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('navbar');\n              $log.log('User object logged in', this.user);\n              this.enrollmentCount = 0;\n              this.showNotifications = this != null ? (ref = this.features) != null ? (ref1 = ref.notifications) != null ? ref1.is_enabled : void 0 : void 0 : void 0;\n              _context.prev = 4;\n              queryString = {\n                _page: 1,\n                _perPage: 1,\n                _liteData: true\n              };\n              _context.next = 8;\n              return EEnrollmentsService.getAllIncomplete(this.enterpriseCustomerId, queryString);\n            case 8:\n              enrollments = _context.sent;\n              $log.log('incomplete enrollments', enrollments);\n              return _context.abrupt(\"return\", this.enrollmentCount = parseInt(enrollments.headers('X-Total-Count')));\n            case 13:\n              _context.prev = 13;\n              _context.t0 = _context[\"catch\"](4);\n              error = _context.t0;\n              return _context.abrupt(\"return\", $log.log('error loading incompletes', error));\n            case 17:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[4, 13]]);\n      }));\n      this.reportingIsActive = function () {\n        return $state.current.name === 'enterprise.patients' || $state.current.name === 'enterprise.observation_report';\n      };\n      this.showClinicalMonitoringNav = function () {\n        return AuthService.hasClinicalMonitoringMembership();\n      };\n    },\n    templateUrl: 'app/components/portal/navbar/navbar.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc component\n   * @name portal.component:five9PostCallPrompt\n   * @description\n   * Shell host that shows the post-call RPM/CCM time prompt after Five9 call completion.\n   */\n  angular.module('portal').component('five9PostCallPrompt', {\n    controllerAs: 'vm',\n    controller: function controller($scope, Five9Service, Five9PostCallService) {\n      this.$onInit = function () {\n        return Five9Service.subscribe('five9:postCallCompleted', $scope, function (event, payload) {\n          return Five9PostCallService.showPrompt(payload);\n        });\n      };\n    },\n    template: ''\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * Shell-level prompt for resolving ambiguous or unknown inbound Five9 callers.\n   * ANI is discovery-only; selection always resolves to an authoritative patient profile id.\n   */\n  angular.module('portal').component('five9InboundResolution', {\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($scope, Five9Service, EUserProfilesService, ModalService, NotificationsService) {\n      var openInteractions;\n      openInteractions = {};\n      this.$onInit = function () {\n        var _this = this;\n        Five9Service.subscribe('five9:inboundResolutionRequired', $scope, function (event, payload) {\n          return _this.showResolutionPrompt(payload);\n        });\n        return Five9Service.subscribe('five9:inboundCallEnded', $scope, function (event, payload) {\n          var ref;\n          return (ref = openInteractions[payload != null ? payload.interactionId : void 0]) != null ? ref.dismiss('interaction ended') : void 0;\n        });\n      };\n      this.searchPatients = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(query) {\n          var response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (angular.isString(query) && query.trim().length >= 2) {\n                  _context.next = 2;\n                  break;\n                }\n                return _context.abrupt(\"return\", []);\n              case 2:\n                _context.next = 4;\n                return EUserProfilesService.searchCandidates(this.enterpriseCustomer.id, query.trim());\n              case 4:\n                response = _context.sent;\n                return _context.abrupt(\"return\", (response != null ? response.matches : void 0) || []);\n              case 6:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.showResolutionPrompt = function (payload) {\n        var host, modal;\n        if (!(payload != null ? payload.interactionId : void 0)) {\n          return;\n        }\n        if (openInteractions[payload.interactionId]) {\n          return;\n        }\n        if (!(this.user && this.enterpriseCustomer)) {\n          return;\n        }\n        host = this;\n        modal = ModalService.showModal({\n          templateUrl: 'app/components/portal/five9-inbound-resolution/five9-inbound-resolution.modal.html',\n          windowClass: 'five9-inbound-resolution-modal',\n          controller: function controller($scope, $uibModalInstance) {\n            return $scope.modal = {\n              lookupStatus: payload.lookupStatus,\n              maskedPhone: payload.maskedPhone,\n              candidates: angular.copy(payload.candidates || []),\n              selectedPatientId: null,\n              searchMode: false,\n              searchQuery: '',\n              searching: false,\n              searchError: null,\n              associateError: null,\n              associating: false,\n              searchSeq: 0,\n              beginSearch: function beginSearch() {\n                return $scope.modal.searchMode = true;\n              },\n              search: function () {\n                var _search = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n                  var candidates, error, requestId;\n                  return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        requestId = ++$scope.modal.searchSeq;\n                        $scope.modal.searchError = null;\n                        $scope.modal.searching = true;\n                        _context2.prev = 3;\n                        _context2.next = 6;\n                        return host.searchPatients($scope.modal.searchQuery);\n                      case 6:\n                        candidates = _context2.sent;\n                        if (!(requestId !== $scope.modal.searchSeq)) {\n                          _context2.next = 9;\n                          break;\n                        }\n                        return _context2.abrupt(\"return\");\n                      case 9:\n                        $scope.modal.candidates = candidates;\n                        $scope.modal.selectedPatientId = null;\n                        Five9Service.setInboundCandidates(payload.interactionId, $scope.modal.candidates);\n                        if ($scope.modal.candidates.length) {\n                          _context2.next = 14;\n                          break;\n                        }\n                        return _context2.abrupt(\"return\", $scope.modal.searchError = 'No eligible patients matched that search.');\n                      case 14:\n                        _context2.next = 22;\n                        break;\n                      case 16:\n                        _context2.prev = 16;\n                        _context2.t0 = _context2[\"catch\"](3);\n                        error = _context2.t0;\n                        if (!(requestId !== $scope.modal.searchSeq)) {\n                          _context2.next = 21;\n                          break;\n                        }\n                        return _context2.abrupt(\"return\");\n                      case 21:\n                        return _context2.abrupt(\"return\", $scope.modal.searchError = 'Patient search could not be completed.');\n                      case 22:\n                        _context2.prev = 22;\n                        if (requestId === $scope.modal.searchSeq) {\n                          $scope.modal.searching = false;\n                        }\n                        return _context2.finish(22);\n                      case 25:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2, null, [[3, 16, 22, 25]]);\n                }));\n                function search() {\n                  return _search.apply(this, arguments);\n                }\n                return search;\n              }(),\n              associate: function () {\n                var _associate = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n                  var error;\n                  return regeneratorRuntime.wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        if ($scope.modal.selectedPatientId) {\n                          _context3.next = 2;\n                          break;\n                        }\n                        return _context3.abrupt(\"return\");\n                      case 2:\n                        if (!$scope.modal.associating) {\n                          _context3.next = 4;\n                          break;\n                        }\n                        return _context3.abrupt(\"return\");\n                      case 4:\n                        $scope.modal.associating = true;\n                        $scope.modal.associateError = null;\n                        _context3.prev = 6;\n                        _context3.next = 9;\n                        return Five9Service.resolveInboundPatient(payload.interactionId, $scope.modal.selectedPatientId, 'manual');\n                      case 9:\n                        return _context3.abrupt(\"return\", $uibModalInstance.close($scope.modal.selectedPatientId));\n                      case 12:\n                        _context3.prev = 12;\n                        _context3.t0 = _context3[\"catch\"](6);\n                        error = _context3.t0;\n                        $scope.modal.associateError = (error != null ? error.message : void 0) || 'Patient metadata could not be attached to the active Five9 call';\n                        return _context3.abrupt(\"return\", NotificationsService.error($scope.modal.associateError));\n                      case 17:\n                        _context3.prev = 17;\n                        $scope.modal.associating = false;\n                        return _context3.finish(17);\n                      case 20:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3, null, [[6, 12, 17, 20]]);\n                }));\n                function associate() {\n                  return _associate.apply(this, arguments);\n                }\n                return associate;\n              }(),\n              dismiss: function dismiss() {\n                return $uibModalInstance.close(null);\n              }\n            };\n          }\n        }, {});\n        openInteractions[payload.interactionId] = modal;\n        return modal.result.catch(function () {\n          return null;\n        }).finally(function () {\n          return delete openInteractions[payload.interactionId];\n        });\n      };\n    },\n    template: ''\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:clinicalMonitoring\n   * @description\n   * Shell for the clinical monitoring manager experience.\n   */\n  var indexOf = [].indexOf;\n  angular.module('portal').component('clinicalMonitoring', {\n    bindings: {\n      features: '<',\n      user: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(AuthService, $timeout, $state, $stateParams) {\n      var ASSIGNMENTS_TAB, CLINICIANS_TAB, COVERAGE_TAB, MY_ASSIGNMENTS_TAB, VALID_TABS;\n      MY_ASSIGNMENTS_TAB = 'my-assignments';\n      ASSIGNMENTS_TAB = 'assignments';\n      COVERAGE_TAB = 'coverage';\n      CLINICIANS_TAB = 'clinicians';\n      VALID_TABS = [MY_ASSIGNMENTS_TAB, ASSIGNMENTS_TAB, COVERAGE_TAB, CLINICIANS_TAB];\n      this.normalizeTab = function (tab) {\n        if (indexOf.call(VALID_TABS, tab) >= 0) {\n          return tab;\n        } else {\n          return MY_ASSIGNMENTS_TAB;\n        }\n      };\n      this.$onInit = function () {\n        var _this = this;\n        this.activeTab = this.normalizeTab($stateParams.tab);\n        this.canEditClinicalMonitoring = AuthService.isClinicalMonitoringManager();\n        this.renderedTabs = {};\n        this.renderedTabs[this.activeTab] = true;\n        return this.preloadTabsPromise = $timeout(function () {\n          return _.each(VALID_TABS, function (tabKey) {\n            if (tabKey !== _this.activeTab) {\n              return _this.renderedTabs[tabKey] = true;\n            }\n          });\n        }, 0);\n      };\n      this.$onDestroy = function () {\n        if (this.preloadTabsPromise) {\n          return $timeout.cancel(this.preloadTabsPromise);\n        }\n      };\n      this.selectTab = function (tabKey) {\n        var targetState;\n        if (tabKey === this.activeTab) {\n          return;\n        }\n        this.activeTab = tabKey;\n        this.renderedTabs[tabKey] = true;\n        targetState = $state.current.name === 'portal.clinical-monitoring' ? '.' : 'portal.clinical-monitoring';\n        return $state.go(targetState, {\n          tab: tabKey,\n          page: $stateParams.page,\n          per_page: $stateParams.per_page,\n          sort_field: $stateParams.sort_field,\n          sort_dir: $stateParams.sort_dir,\n          query: $stateParams.query,\n          staff_page: $stateParams.staff_page,\n          staff_per_page: $stateParams.staff_per_page,\n          staff_sort_field: $stateParams.staff_sort_field,\n          staff_sort_dir: $stateParams.staff_sort_dir,\n          staff_query: $stateParams.staff_query\n        });\n      };\n      this.goToClinician = function (userId) {\n        if (!userId) {\n          return;\n        }\n        return $state.go('portal.clinical-monitoring-clinician', {\n          user_id: userId\n        });\n      };\n      this.getMyAssignmentsTabHeading = function () {\n        return 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.MY_ASSIGNMENTS';\n      };\n      this.getAssignmentsTabHeading = function () {\n        return 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ALL_ASSIGNMENTS';\n      };\n      this.getCliniciansTabHeading = function () {\n        return 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CLINICIANS';\n      };\n      this.getCoverageTabHeading = function () {\n        return 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.COVERAGE';\n      };\n      this.isMyAssignmentsTabActive = function () {\n        return this.activeTab === MY_ASSIGNMENTS_TAB;\n      };\n      this.shouldRenderMyAssignmentsTab = function () {\n        var ref;\n        return Boolean((ref = this.renderedTabs) != null ? ref[MY_ASSIGNMENTS_TAB] : void 0);\n      };\n      this.isAssignmentsTabActive = function () {\n        return this.activeTab === ASSIGNMENTS_TAB;\n      };\n      this.shouldRenderAssignmentsTab = function () {\n        var ref;\n        return Boolean((ref = this.renderedTabs) != null ? ref[ASSIGNMENTS_TAB] : void 0);\n      };\n      this.isCoverageTabActive = function () {\n        return this.activeTab === COVERAGE_TAB;\n      };\n      this.shouldRenderCoverageTab = function () {\n        var ref;\n        return Boolean((ref = this.renderedTabs) != null ? ref[COVERAGE_TAB] : void 0);\n      };\n      this.showCoverageTab = function () {\n        return true;\n      };\n      this.isCliniciansTabActive = function () {\n        return this.activeTab === CLINICIANS_TAB;\n      };\n      this.shouldRenderCliniciansTab = function () {\n        var ref;\n        return Boolean((ref = this.renderedTabs) != null ? ref[CLINICIANS_TAB] : void 0);\n      };\n    },\n    templateUrl: 'app/components/portal/clinical-monitoring/clinical-monitoring.html'\n  });\n  angular.module('portal').component('clinicalMonitoringMyAssignments', {\n    bindings: {\n      features: '<',\n      user: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $timeout, $state, moment, ClinicalMonitoringService, UserService, NotificationsService, OfficeLifecycleNormalizer) {\n      var ASSIGNMENT_CHANGED_EVENT, DAY_LABELS, LAST_ACTIVITY_FEATURE_KEY, TABLE_COLUMNS;\n      DAY_LABELS = {\n        monday: 'Monday',\n        tuesday: 'Tuesday',\n        wednesday: 'Wednesday',\n        thursday: 'Thursday',\n        friday: 'Friday',\n        saturday: 'Saturday',\n        sunday: 'Sunday'\n      };\n      TABLE_COLUMNS = [{\n        key: 'practice',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.PRACTICE_OFFICE'\n      }, {\n        key: 'assignments',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENTS',\n        sortable: false\n      }, {\n        key: 'rpm_patients',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.RPM_PATIENTS',\n        headerLines: ['RPM', 'PATIENTS'],\n        headerClass: 'clinical-monitoring-my-assignment-numeric-header'\n      }, {\n        key: 'ccm_patients',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CCM_PATIENTS',\n        headerLines: ['CCM', 'PATIENTS'],\n        headerClass: 'clinical-monitoring-my-assignment-numeric-header'\n      }, {\n        key: 'new_readings',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NEW_READINGS',\n        headerLines: ['NEW', 'READINGS'],\n        headerClass: 'clinical-monitoring-my-assignment-numeric-header'\n      }, {\n        key: 'btrs',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.UNDOCUMENTED_BTRS',\n        headerLines: ['NEW', 'BTRS'],\n        headerClass: 'clinical-monitoring-my-assignment-numeric-header'\n      }, {\n        key: 'new_ccm_patients',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NEW_CCM_PATIENTS',\n        headerLines: ['NEW CCM', 'PATIENTS'],\n        headerClass: 'clinical-monitoring-my-assignment-numeric-header'\n      }, {\n        key: 'last_activity',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.MY_LAST_ACTIVITY'\n      }];\n      ASSIGNMENT_CHANGED_EVENT = 'clinicalMonitoring:assignmentChanged';\n      LAST_ACTIVITY_FEATURE_KEY = 'enable_clinical_monitoring_last_activity_logging';\n      this.$onInit = function () {\n        var _this2 = this;\n        $log = $log.getInstance('clinicalMonitoringMyAssignments');\n        this.showLastActivity = this.isLastActivityEnabled();\n        this.columns = this.getVisibleColumns();\n        this.sortField = this.showLastActivity ? 'last_activity' : 'practice';\n        this.sortDir = this.showLastActivity ? 'DESC' : 'ASC';\n        this.expandedOfficeIds = {};\n        this.expandedLifecycleSections = {\n          active: false,\n          inactive: false\n        };\n        this.assignments = [];\n        this.isLoading = false;\n        this.showLoadingSpinner = false;\n        this.loadingSpinnerPromise = null;\n        this.selectedOfficeId = null;\n        this.isSwitchingOfficeId = null;\n        this.assignmentSwitchRequestId = 0;\n        this.isLoadingMetrics = false;\n        this.deregisterAssignmentChangedListener = $rootScope.$on(ASSIGNMENT_CHANGED_EVENT, function () {\n          return _this2.loadMyAssignments();\n        });\n        return this.loadMyAssignments();\n      };\n      this.startLoading = function () {\n        var _this3 = this;\n        this.isLoading = true;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        return this.loadingSpinnerPromise = $timeout(function () {\n          if (_this3.isLoading) {\n            return _this3.showLoadingSpinner = true;\n          }\n        }, 400);\n      };\n      this.stopLoading = function () {\n        this.isLoading = false;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        this.loadingSpinnerPromise = null;\n        return this.showLoadingSpinner = false;\n      };\n      this.$onDestroy = function () {\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        if (this.deregisterAssignmentChangedListener) {\n          return this.deregisterAssignmentChangedListener();\n        }\n      };\n      this.loadMyAssignments = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, ref, ref1, ref2, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.startLoading();\n              _context.prev = 1;\n              _context.next = 4;\n              return ClinicalMonitoringService.getMyAssignmentBaseRows();\n            case 4:\n              response = _context.sent;\n              this.assignments = this.normalizeAssignments(response);\n              return _context.abrupt(\"return\", this.loadMyAssignmentMetrics());\n            case 9:\n              _context.prev = 9;\n              _context.t0 = _context[\"catch\"](1);\n              error = _context.t0;\n              return _context.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 13:\n              _context.prev = 13;\n              this.stopLoading();\n              return _context.finish(13);\n            case 16:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1, 9, 13, 16]]);\n      }));\n      this.loadMyAssignmentMetrics = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error, officeIds, ref, ref1, ref2, response;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              officeIds = _.map(this.assignments || [], function (assignment) {\n                return assignment.office_id;\n              });\n              officeIds = _.compact(_.uniq(officeIds));\n              if (officeIds.length) {\n                _context2.next = 4;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 4:\n              this.isLoadingMetrics = true;\n              _context2.prev = 5;\n              _context2.next = 8;\n              return ClinicalMonitoringService.getMyAssignmentMetrics(officeIds);\n            case 8:\n              response = _context2.sent;\n              return _context2.abrupt(\"return\", this.mergeAssignmentMetrics(response));\n            case 12:\n              _context2.prev = 12;\n              _context2.t0 = _context2[\"catch\"](5);\n              error = _context2.t0;\n              $log.warn('Failed to load clinical monitoring assignment metrics');\n              return _context2.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 17:\n              _context2.prev = 17;\n              this.isLoadingMetrics = false;\n              return _context2.finish(17);\n            case 20:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this, [[5, 12, 17, 20]]);\n      }));\n      this.mergeAssignmentMetrics = function (response) {\n        var metricsByOfficeId, metricsRows, ref;\n        metricsRows = (response != null ? (ref = response.data) != null ? ref.data : void 0 : void 0) || (response != null ? response.data : void 0) || response || [];\n        metricsByOfficeId = _.keyBy(metricsRows, 'office_id');\n        return this.assignments = _.map(this.assignments || [], function (assignment) {\n          var metrics;\n          metrics = metricsByOfficeId[assignment.office_id];\n          if (!metrics) {\n            return assignment;\n          }\n          return angular.extend({}, assignment, {\n            billable_patient_count: metrics.billable_patient_count,\n            rpm_patient_count: metrics.rpm_patient_count,\n            ccm_patient_count: metrics.ccm_patient_count,\n            new_reading_patient_count: metrics.new_reading_patient_count,\n            undocumented_btr_patient_count: metrics.undocumented_btr_patient_count,\n            new_ccm_patient_count: metrics.new_ccm_patient_count\n          });\n        });\n      };\n      this.buildAssignmentSummaryItems = function (officeAssignment) {\n        var _this4 = this;\n        return _.map((officeAssignment != null ? officeAssignment.assignments : void 0) || [], function (assignment) {\n          return {\n            id: assignment.id,\n            label: _this4.formatAssignmentLabel(assignment),\n            daysText: _this4.getAssignmentDaysText(assignment)\n          };\n        });\n      };\n      this.buildOfficeDetails = function (officeAssignment) {\n        var _this5 = this;\n        var details;\n        details = [];\n        _.each((officeAssignment != null ? officeAssignment.assignments : void 0) || [], function (assignment) {\n          if (!_this5.hasDisplayValue(assignment != null ? assignment.note : void 0)) {\n            return;\n          }\n          return details.push({\n            id: \"assignment-note-\".concat(assignment.id),\n            label: _this5.formatAssignmentLabel(assignment),\n            value: assignment.note\n          });\n        });\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.special_notes : void 0)) {\n          details.push({\n            id: \"special-notes-\".concat(officeAssignment.office_id),\n            label: 'Office notes',\n            value: officeAssignment.special_notes\n          });\n        }\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.contact_method : void 0)) {\n          details.push({\n            id: \"contact-method-\".concat(officeAssignment.office_id),\n            label: 'Communication method',\n            value: officeAssignment.contact_method\n          });\n        }\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.ehr_name : void 0)) {\n          details.push({\n            id: \"ehr-name-\".concat(officeAssignment.office_id),\n            label: 'EHR',\n            value: officeAssignment.ehr_name\n          });\n        }\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.timezone : void 0)) {\n          details.push({\n            id: \"timezone-\".concat(officeAssignment.office_id),\n            label: 'Timezone',\n            value: officeAssignment.timezone\n          });\n        }\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.escalation_protocol_url : void 0)) {\n          details.push({\n            id: \"escalation-protocol-url-\".concat(officeAssignment.office_id),\n            label: null,\n            value: 'Escalation Protocol',\n            href: String(officeAssignment.escalation_protocol_url).trim()\n          });\n        }\n        return details;\n      };\n      this.normalizeAssignments = function (response) {\n        var _this6 = this;\n        var ref, rows;\n        rows = (response != null ? (ref = response.data) != null ? ref.data : void 0 : void 0) || (response != null ? response.data : void 0) || response || [];\n        return _.map(rows, function (row) {\n          var decorated;\n          decorated = OfficeLifecycleNormalizer.decorateOffice(row);\n          return angular.extend({}, decorated, {\n            assignmentSummaryItems: _this6.buildAssignmentSummaryItems(decorated),\n            officeDetails: _this6.buildOfficeDetails(decorated),\n            formattedLastActivityAt: _this6.formatLastActivityAt(decorated != null ? decorated.last_activity_at : void 0)\n          });\n        });\n      };\n      this.hasDisplayValue = function (value) {\n        return Boolean(String(value || '').trim());\n      };\n      this.isLastActivityEnabled = function () {\n        var ref, ref1;\n        return Boolean((ref = this.features) != null ? (ref1 = ref[LAST_ACTIVITY_FEATURE_KEY]) != null ? ref1.is_enabled : void 0 : void 0);\n      };\n      this.getVisibleColumns = function () {\n        if (this.showLastActivity) {\n          return TABLE_COLUMNS;\n        }\n        return _.filter(TABLE_COLUMNS, function (column) {\n          return column.key !== 'last_activity';\n        });\n      };\n      this.getAssignmentDaysText = function (assignment) {\n        var labels, ref;\n        if (!(assignment != null ? (ref = assignment.days_of_week) != null ? ref.length : void 0 : void 0)) {\n          return '';\n        }\n        labels = _.map(assignment.days_of_week, function (day) {\n          return DAY_LABELS[day] || day;\n        });\n        return \"(\".concat(labels.join(', '), \")\");\n      };\n      this.formatAssignmentLabel = function (assignment) {\n        return (assignment != null ? assignment.assignment_type_label : void 0) || (assignment != null ? assignment.assignment_type : void 0) || '';\n      };\n      this.formatLastActivityAt = function (value) {\n        var formattedValue;\n        if (!value) {\n          return 'Never accessed';\n        }\n        formattedValue = moment(value);\n        if (!formattedValue.isValid()) {\n          return 'Never accessed';\n        }\n        return formattedValue.format('MMM D, YYYY h:mm A');\n      };\n      this.selectAssignment = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(officeAssignment) {\n          var error, providerProfile, ref, ref1, ref2, ref3, requestId, userProfileId;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                if ((officeAssignment != null ? officeAssignment.office_id : void 0) && (officeAssignment != null ? officeAssignment.provider_office_id : void 0)) {\n                  _context3.next = 2;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 2:\n                if (!(this.isSwitchingOfficeId != null)) {\n                  _context3.next = 4;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 4:\n                providerProfile = _.find(officeAssignment.provider_profiles || [], {\n                  provider_office_id: officeAssignment.provider_office_id\n                }) || ((ref = officeAssignment.provider_profiles) != null ? ref[0] : void 0);\n                userProfileId = providerProfile != null ? providerProfile.user_profile_id : void 0;\n                if (userProfileId) {\n                  _context3.next = 8;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 8:\n                requestId = this.assignmentSwitchRequestId + 1;\n                this.assignmentSwitchRequestId = requestId;\n                this.selectedOfficeId = officeAssignment.office_id;\n                this.isSwitchingOfficeId = officeAssignment.office_id;\n                _context3.prev = 12;\n                _context3.next = 15;\n                return UserService.switchUserProfile(userProfileId);\n              case 15:\n                if (!(this.assignmentSwitchRequestId !== requestId)) {\n                  _context3.next = 17;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 17:\n                _context3.next = 19;\n                return UserService.switchOffice(this.user.id, officeAssignment.office_id);\n              case 19:\n                if (!(this.assignmentSwitchRequestId !== requestId)) {\n                  _context3.next = 21;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 21:\n                return _context3.abrupt(\"return\", $state.go('enterprise.patients'));\n              case 24:\n                _context3.prev = 24;\n                _context3.t0 = _context3[\"catch\"](12);\n                error = _context3.t0;\n                $log.error('Failed to switch clinical monitoring assignment office', error);\n                return _context3.abrupt(\"return\", NotificationsService.error((error != null ? (ref1 = error.data) != null ? ref1.errorMessage : void 0 : void 0) || (error != null ? (ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.message : void 0 : void 0 : void 0) || error));\n              case 29:\n                _context3.prev = 29;\n                if (this.assignmentSwitchRequestId === requestId) {\n                  this.isSwitchingOfficeId = null;\n                }\n                return _context3.finish(29);\n              case 32:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[12, 24, 29, 32]]);\n        }));\n        return function (_x) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.isSelected = function (officeAssignment) {\n        return this.selectedOfficeId === (officeAssignment != null ? officeAssignment.office_id : void 0);\n      };\n      this.isSwitching = function (officeAssignment) {\n        return this.isSwitchingOfficeId === (officeAssignment != null ? officeAssignment.office_id : void 0);\n      };\n      this.isColumnSortable = function (column) {\n        return (column != null ? column.sortable : void 0) !== false;\n      };\n      this.isSortSelected = function (columnKey) {\n        return this.sortField === columnKey;\n      };\n      this.getSortIcon = function (columnKey) {\n        if (this.isSortSelected(columnKey) && this.sortDir === 'ASC') {\n          return 'fa-chevron-up';\n        } else {\n          return 'fa-chevron-down';\n        }\n      };\n      this.setSort = function (columnKey) {\n        var column;\n        column = _.find(TABLE_COLUMNS, {\n          key: columnKey\n        });\n        if (!this.isColumnSortable(column)) {\n          return;\n        }\n        if (this.sortField === columnKey) {\n          return this.sortDir = this.sortDir === 'ASC' ? 'DESC' : 'ASC';\n        } else {\n          this.sortField = columnKey;\n          return this.sortDir = columnKey === 'last_activity' ? 'DESC' : 'ASC';\n        }\n      };\n      this.isMetricLoading = function (office, metricKey) {\n        return this.isLoadingMetrics && (office != null ? office[metricKey] : void 0) === null;\n      };\n      this.getMetricDisplayValue = function (office, metricKey) {\n        var value;\n        value = office != null ? office[metricKey] : void 0;\n        if (value !== null) {\n          return value;\n        } else {\n          return '—';\n        }\n      };\n      this.getSortValue = function (office, columnKey) {\n        switch (columnKey) {\n          case 'practice':\n            return \"\".concat(String((office != null ? office.enterprise_customer_name : void 0) || '').toLowerCase(), \"|\").concat(String((office != null ? office.office_name : void 0) || '').toLowerCase());\n          case 'rpm_patients':\n            if ((office != null ? office.rpm_patient_count : void 0) != null) {\n              return Number(office.rpm_patient_count);\n            } else {\n              return -1;\n            }\n            break;\n          case 'ccm_patients':\n            if ((office != null ? office.ccm_patient_count : void 0) != null) {\n              return Number(office.ccm_patient_count);\n            } else {\n              return -1;\n            }\n            break;\n          case 'new_readings':\n            if ((office != null ? office.new_reading_patient_count : void 0) != null) {\n              return Number(office.new_reading_patient_count);\n            } else {\n              return -1;\n            }\n            break;\n          case 'btrs':\n            if ((office != null ? office.undocumented_btr_patient_count : void 0) != null) {\n              return Number(office.undocumented_btr_patient_count);\n            } else {\n              return -1;\n            }\n            break;\n          case 'new_ccm_patients':\n            if ((office != null ? office.new_ccm_patient_count : void 0) != null) {\n              return Number(office.new_ccm_patient_count);\n            } else {\n              return -1;\n            }\n            break;\n          case 'last_activity':\n            return String((office != null ? office.last_activity_at : void 0) || '');\n          default:\n            return '';\n        }\n      };\n      this.sortedAssignments = function () {\n        var _this7 = this;\n        var sorted;\n        sorted = _.sortBy(this.assignments || [], function (office) {\n          return _this7.getSortValue(office, _this7.sortField);\n        });\n        if (this.sortDir === 'DESC') {\n          return sorted.reverse();\n        } else {\n          return sorted;\n        }\n      };\n      this.groupedSortedAssignments = function () {\n        return OfficeLifecycleNormalizer.groupOffices(this.sortedAssignments(), {\n          nameField: 'office_name'\n        });\n      };\n      this.toggleLifecycleSection = function (sectionName) {\n        return this.expandedLifecycleSections[sectionName] = !this.expandedLifecycleSections[sectionName];\n      };\n      this.isLifecycleSectionExpanded = function (sectionName) {\n        return Boolean(this.expandedLifecycleSections[sectionName]);\n      };\n      this.toggleDetails = function (officeAssignment) {\n        if (!(officeAssignment != null ? officeAssignment.office_id : void 0)) {\n          return;\n        }\n        return this.expandedOfficeIds[officeAssignment.office_id] = !this.expandedOfficeIds[officeAssignment.office_id];\n      };\n      this.isExpanded = function (officeAssignment) {\n        return Boolean(this.expandedOfficeIds[officeAssignment != null ? officeAssignment.office_id : void 0]);\n      };\n    },\n    templateUrl: 'app/components/portal/clinical-monitoring/clinical-monitoring-my-assignments.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:clinicalMonitoringCoverage\n   * @description\n   * Temporary coverage management for clinical monitoring managers.\n   */\n  var indexOf = [].indexOf;\n  angular.module('portal').component('clinicalMonitoringCoverage', {\n    bindings: {\n      user: '<',\n      canEditClinicalMonitoring: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $timeout, moment, ClinicalMonitoringService, ModalService, NotificationsService) {\n      var DATE_INPUT_FORMAT, PAST_COVERAGE_ERROR_MESSAGE, REASON_OPTIONS;\n      REASON_OPTIONS = [{\n        value: 'sick',\n        label: 'Sick'\n      }, {\n        value: 'vacation',\n        label: 'Vacation'\n      }, {\n        value: 'training',\n        label: 'Training'\n      }, {\n        value: 'leave',\n        label: 'Leave'\n      }, {\n        value: 'emergency',\n        label: 'Emergency'\n      }, {\n        value: 'other',\n        label: 'Other'\n      }];\n      DATE_INPUT_FORMAT = 'YYYY-MM-DD';\n      PAST_COVERAGE_ERROR_MESSAGE = 'Coverage cannot be created for a past date. Choose today or a future date.';\n      this.$onInit = function () {\n        $log = $log.getInstance('clinicalMonitoringCoverage');\n        this.reasonOptions = REASON_OPTIONS;\n        this.isLoading = false;\n        this.showLoadingSpinner = false;\n        this.loadingSpinnerPromise = null;\n        this.coverage = this.normalizeCoverage();\n        return this.refreshCoverage();\n      };\n      this.startLoading = function () {\n        var _this = this;\n        this.isLoading = true;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        return this.loadingSpinnerPromise = $timeout(function () {\n          if (_this.isLoading) {\n            return _this.showLoadingSpinner = true;\n          }\n        }, 400);\n      };\n      this.stopLoading = function () {\n        this.isLoading = false;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        this.loadingSpinnerPromise = null;\n        return this.showLoadingSpinner = false;\n      };\n      this.$onDestroy = function () {\n        if (this.loadingSpinnerPromise) {\n          return $timeout.cancel(this.loadingSpinnerPromise);\n        }\n      };\n      this.normalizeCoverage = function () {\n        var coverageRows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var ref, response;\n        response = (coverageRows != null ? (ref = coverageRows.data) != null ? ref.data : void 0 : void 0) || (coverageRows != null ? coverageRows.data : void 0) || coverageRows || {};\n        return {\n          active: response.active || [],\n          upcoming: response.upcoming || [],\n          recent: response.recent || []\n        };\n      };\n      this.refreshCoverage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.startLoading();\n              _context.prev = 1;\n              _context.next = 4;\n              return ClinicalMonitoringService.getCoverage();\n            case 4:\n              response = _context.sent;\n              return _context.abrupt(\"return\", this.coverage = this.normalizeCoverage(response));\n            case 6:\n              _context.prev = 6;\n              this.stopLoading();\n              return _context.finish(6);\n            case 9:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1,, 6, 9]]);\n      }));\n      this.getSectionRows = function (sectionKey) {\n        var ref;\n        return ((ref = this.coverage) != null ? ref[sectionKey] : void 0) || [];\n      };\n      this.getClinicianName = function (clinician) {\n        if (!clinician) {\n          return '—';\n        }\n        return _.trim(\"\".concat(clinician.name_first || '', \" \").concat(clinician.name_last || '')) || '—';\n      };\n      this.formatDate = function (dateStr) {\n        var m;\n        if (!dateStr) {\n          return '—';\n        }\n        m = moment(dateStr);\n        if (!m.isValid()) {\n          return '—';\n        }\n        return m.format('MMM D, YYYY');\n      };\n      this.formatCoverageWindow = function (row) {\n        var endMoment, startMoment;\n        if (!((row != null ? row.starts_at : void 0) && (row != null ? row.ends_at : void 0))) {\n          return '—';\n        }\n        startMoment = moment(row.starts_at);\n        endMoment = moment(row.ends_at);\n        if (!(startMoment.isValid() && endMoment.isValid())) {\n          return '—';\n        }\n        if (startMoment.isSame(endMoment, 'day')) {\n          return startMoment.format('MMM D, YYYY');\n        }\n        return \"\".concat(startMoment.format('MMM D, YYYY'), \" \\u2014 \").concat(endMoment.format('MMM D, YYYY'));\n      };\n      this.formatCoverageReason = function (reasonType) {\n        var option;\n        option = _.find(this.reasonOptions, {\n          value: reasonType\n        });\n        return (option != null ? option.label : void 0) || reasonType || '—';\n      };\n      this.getReasonClass = function (reasonType) {\n        switch (reasonType) {\n          case 'sick':\n            return 'reason-sick';\n          case 'vacation':\n            return 'reason-vacation';\n          case 'training':\n            return 'reason-training';\n          case 'emergency':\n            return 'reason-emergency';\n          default:\n            return 'reason-default';\n        }\n      };\n      this.parseCoverageDate = function (dateValue) {\n        var parsedDate;\n        parsedDate = moment(dateValue);\n        if (!parsedDate.isValid()) {\n          return null;\n        }\n        return parsedDate.startOf('day');\n      };\n      this.getTodayDateInputValue = function () {\n        return moment().startOf('day').format(DATE_INPUT_FORMAT);\n      };\n      this.isEligibleCoverageAssignee = function (assignment, userId) {\n        if (!(assignment && userId)) {\n          return false;\n        }\n        return _.some(assignment.eligibleUsers || [], {\n          user_id: userId\n        });\n      };\n      this.buildCoverageDraft = function () {\n        var _this2 = this;\n        var coverageRow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var draft, existingRow, initialEndMoment, initialStartMoment, normalizedEndMoment, normalizedStartMoment;\n        existingRow = angular.copy(coverageRow) || null;\n        initialStartMoment = moment((existingRow != null ? existingRow.starts_at : void 0) || moment().startOf('day'));\n        initialEndMoment = moment((existingRow != null ? existingRow.ends_at : void 0) || moment().startOf('day'));\n        normalizedStartMoment = initialStartMoment.clone().startOf('day');\n        normalizedEndMoment = initialEndMoment.clone().startOf('day');\n        draft = {\n          id: (existingRow != null ? existingRow.id : void 0) || null,\n          isEditing: !!(existingRow != null ? existingRow.id : void 0),\n          user_id: (existingRow != null ? existingRow.user_id : void 0) || null,\n          reason_type: (existingRow != null ? existingRow.reason_type : void 0) || 'sick',\n          starts_on: normalizedStartMoment.clone().startOf('day').toDate(),\n          ends_on: normalizedEndMoment.clone().startOf('day').toDate(),\n          starts_at: null,\n          ends_at: null,\n          note: (existingRow != null ? existingRow.note : void 0) || '',\n          lookupOptions: [],\n          selectedClinician: null,\n          affectedAssignments: [],\n          bulk_user_id: null,\n          bulkEligibleUsers: [],\n          isLookupLoading: false,\n          lastSearchQuery: null,\n          isLoadingAssignments: false,\n          assignmentsLoadError: null,\n          assignmentsLoadedOnce: false,\n          assignmentsRequestId: 0,\n          submitPromise: null,\n          minimumCoverageDate: this.getTodayDateInputValue()\n        };\n        draft.syncCoverageWindow = function () {\n          var endDate, endMoment, startDate, startMoment;\n          startDate = _this2.parseCoverageDate(draft.starts_on);\n          endDate = _this2.parseCoverageDate(draft.ends_on);\n          startMoment = startDate ? startDate.startOf('day') : null;\n          endMoment = endDate ? endDate.startOf('day') : null;\n          if (startMoment && (endMoment != null ? endMoment.isBefore(startMoment) : void 0)) {\n            endMoment = startMoment.clone();\n            draft.ends_on = endMoment.toDate();\n          }\n          draft.starts_at = (startMoment != null ? startMoment.format(DATE_INPUT_FORMAT) : void 0) || null;\n          return draft.ends_at = (endMoment != null ? endMoment.format(DATE_INPUT_FORMAT) : void 0) || null;\n        };\n        draft.hasValidCoverageWindow = function () {\n          var endMoment, startMoment;\n          if (!(draft.starts_at && draft.ends_at)) {\n            return false;\n          }\n          startMoment = moment(draft.starts_at, DATE_INPUT_FORMAT, true);\n          endMoment = moment(draft.ends_at, DATE_INPUT_FORMAT, true);\n          return startMoment.isValid() && endMoment.isValid() && !endMoment.isBefore(startMoment);\n        };\n        draft.hasPastCoverageStart = function () {\n          var startMoment;\n          if (!draft.starts_at) {\n            return false;\n          }\n          startMoment = moment(draft.starts_at, DATE_INPUT_FORMAT, true);\n          if (!startMoment.isValid()) {\n            return false;\n          }\n          return startMoment.isBefore(moment().startOf('day'));\n        };\n        draft.searchClinicians = /*#__PURE__*/function () {\n          var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(query) {\n            var normalizedQuery, results;\n            return regeneratorRuntime.wrap(function _callee2$(_context2) {\n              while (1) switch (_context2.prev = _context2.next) {\n                case 0:\n                  normalizedQuery = query || null;\n                  draft.lastSearchQuery = normalizedQuery;\n                  draft.isLookupLoading = true;\n                  _context2.prev = 3;\n                  _context2.next = 6;\n                  return ClinicalMonitoringService.getStaff({\n                    query: normalizedQuery,\n                    _page: 1,\n                    _perPage: 20,\n                    _sortField: 'clinician',\n                    _sortDir: 'ASC'\n                  }).then(function (response) {\n                    var ref;\n                    return (response != null ? (ref = response.data) != null ? ref.data : void 0 : void 0) || (response != null ? response.data : void 0) || [];\n                  });\n                case 6:\n                  results = _context2.sent;\n                  if (!(draft.lastSearchQuery !== normalizedQuery)) {\n                    _context2.next = 9;\n                    break;\n                  }\n                  return _context2.abrupt(\"return\");\n                case 9:\n                  return _context2.abrupt(\"return\", draft.lookupOptions = results);\n                case 10:\n                  _context2.prev = 10;\n                  if (draft.lastSearchQuery === normalizedQuery) {\n                    draft.isLookupLoading = false;\n                  }\n                  return _context2.finish(10);\n                case 13:\n                case \"end\":\n                  return _context2.stop();\n              }\n            }, _callee2, null, [[3,, 10, 13]]);\n          }));\n          return function (_x) {\n            return _ref2.apply(this, arguments);\n          };\n        }();\n        draft.loadAssignments = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n          var assignmentRows, assignmentsByOffice, error, existingOverridesByAssignmentId, officeDataById, officeIds, officeResponses, ref, ref1, ref2, ref3, ref4, requestId, selectedUserId;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                selectedUserId = (ref = draft.selectedClinician) != null ? ref.user_id : void 0;\n                if (selectedUserId) {\n                  _context3.next = 3;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 3:\n                requestId = draft.assignmentsRequestId + 1;\n                draft.assignmentsRequestId = requestId;\n                draft.isLoadingAssignments = true;\n                draft.assignmentsLoadError = null;\n                draft.assignmentsLoadedOnce = false;\n                _context3.prev = 8;\n                _context3.next = 11;\n                return ClinicalMonitoringService.getStaffMember(selectedUserId, {\n                  include_effective_coverage: false\n                });\n              case 11:\n                assignmentsByOffice = _context3.sent;\n                assignmentRows = (assignmentsByOffice != null ? assignmentsByOffice.assignment_rows : void 0) || [];\n                officeIds = _.uniq(_.map(assignmentRows, 'office_id')).filter(Boolean);\n                _context3.next = 16;\n                return Promise.all(_.map(officeIds, function (officeId) {\n                  return Promise.all([ClinicalMonitoringService.getOfficeAssignments(officeId), ClinicalMonitoringService.getEligibleUsersForOffice(officeId)]).then(function (_ref4) {\n                    var _ref5 = _slicedToArray(_ref4, 2),\n                      officeAssignments = _ref5[0],\n                      eligibleUsers = _ref5[1];\n                    return {\n                      officeAssignments: officeAssignments || [],\n                      eligibleUsers: eligibleUsers || [],\n                      officeId: officeId\n                    };\n                  });\n                }));\n              case 16:\n                officeResponses = _context3.sent;\n                if (!(draft.assignmentsRequestId !== requestId)) {\n                  _context3.next = 19;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 19:\n                if (!(((ref1 = draft.selectedClinician) != null ? ref1.user_id : void 0) !== selectedUserId)) {\n                  _context3.next = 21;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 21:\n                officeDataById = _.keyBy(officeResponses, 'officeId');\n                existingOverridesByAssignmentId = _.keyBy((existingRow != null ? existingRow.overrides : void 0) || [], 'clinical_monitoring_assignment_id');\n                draft.affectedAssignments = _.map(assignmentRows, function (assignmentRow) {\n                  var existingOverride, matchingAssignment, officeData, ref2;\n                  officeData = officeDataById[assignmentRow.office_id] || {\n                    officeAssignments: [],\n                    eligibleUsers: []\n                  };\n                  matchingAssignment = _.find(officeData.officeAssignments, {\n                    id: assignmentRow.assignment_id\n                  }) || {};\n                  existingOverride = existingOverridesByAssignmentId[assignmentRow.assignment_id] || null;\n                  return {\n                    id: (existingOverride != null ? existingOverride.id : void 0) || null,\n                    clinical_monitoring_assignment_id: assignmentRow.assignment_id,\n                    office_id: assignmentRow.office_id,\n                    office_name: assignmentRow.office_name,\n                    assignment_type: assignmentRow.assignment_type,\n                    assignment_type_label: assignmentRow.assignment_type_label,\n                    current_provider_name: _this2.getClinicianName(matchingAssignment.provider),\n                    user_id: (existingOverride != null ? (ref2 = existingOverride.provider) != null ? ref2.user_id : void 0 : void 0) || draft.bulk_user_id || null,\n                    provider_office_id: null,\n                    eligibleUsers: _.map(_.filter(officeData.eligibleUsers, function (candidate) {\n                      if ((candidate != null ? candidate.user_id : void 0) === selectedUserId) {\n                        return false;\n                      }\n                      if (assignmentRow.assignment_type !== 'btrs') {\n                        return true;\n                      }\n                      return (candidate != null ? candidate.is_licensed_for_office_state : void 0) === true;\n                    }), function (candidate) {\n                      return {\n                        user_id: candidate.user_id,\n                        label: _.trim(\"\".concat(candidate.name_first || '', \" \").concat(candidate.name_last || ''))\n                      };\n                    }),\n                    note: (existingOverride != null ? existingOverride.note : void 0) || ''\n                  };\n                });\n                _.each(draft.affectedAssignments, function (assignment) {\n                  if (!(!assignment.user_id || _this2.isEligibleCoverageAssignee(assignment, assignment.user_id))) {\n                    return assignment.user_id = null;\n                  }\n                });\n                draft.syncBulkEligibleUsers();\n                return _context3.abrupt(\"return\", draft.assignmentsLoadedOnce = true);\n              case 29:\n                _context3.prev = 29;\n                _context3.t0 = _context3[\"catch\"](8);\n                error = _context3.t0;\n                if (!(draft.assignmentsRequestId !== requestId)) {\n                  _context3.next = 34;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 34:\n                draft.affectedAssignments = [];\n                draft.bulkEligibleUsers = [];\n                draft.bulk_user_id = null;\n                draft.assignmentsLoadError = (error != null ? (ref2 = error.data) != null ? ref2.errorMessage : void 0 : void 0) || (error != null ? (ref3 = error.data) != null ? (ref4 = ref3.data) != null ? ref4.message : void 0 : void 0 : void 0) || 'Could not load affected assignments.';\n                return _context3.abrupt(\"return\", NotificationsService.error(draft.assignmentsLoadError));\n              case 39:\n                _context3.prev = 39;\n                if (draft.assignmentsRequestId === requestId) {\n                  draft.isLoadingAssignments = false;\n                }\n                return _context3.finish(39);\n              case 42:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, null, [[8, 29, 39, 42]]);\n        }));\n        draft.syncBulkEligibleUsers = function () {\n          var ref, sharedUserIds;\n          sharedUserIds = null;\n          _.each(draft.affectedAssignments, function (assignment) {\n            var eligibleUserIds;\n            eligibleUserIds = _.map(assignment.eligibleUsers || [], 'user_id');\n            return sharedUserIds = sharedUserIds != null ? _.intersection(sharedUserIds, eligibleUserIds) : eligibleUserIds;\n          });\n          draft.bulkEligibleUsers = _.filter(((ref = draft.affectedAssignments[0]) != null ? ref.eligibleUsers : void 0) || [], function (option) {\n            var ref1;\n            return ref1 = option.user_id, indexOf.call(sharedUserIds || [], ref1) >= 0;\n          });\n          if (!(!draft.bulk_user_id || _.some(draft.bulkEligibleUsers, {\n            user_id: draft.bulk_user_id\n          }))) {\n            return draft.bulk_user_id = null;\n          }\n        };\n        draft.applyBulkAssignee = function () {\n          var _this3 = this;\n          return _.each(draft.affectedAssignments, function (assignment) {\n            return assignment.user_id = _this3.isEligibleCoverageAssignee(assignment, draft.bulk_user_id) ? draft.bulk_user_id : null;\n          });\n        };\n        draft.getAssignmentsStateMessage = function () {\n          var ref;\n          if (draft.isLoadingAssignments) {\n            return 'Loading assignments for this clinician...';\n          }\n          if (draft.assignmentsLoadError) {\n            return draft.assignmentsLoadError;\n          }\n          if (((ref = draft.selectedClinician) != null ? ref.user_id : void 0) && draft.assignmentsLoadedOnce && !draft.affectedAssignments.length) {\n            return 'This clinician does not have any clinical monitoring assignments to cover.';\n          }\n          return null;\n        };\n        draft.canSubmit = function () {\n          var ref;\n          if (!((ref = draft.selectedClinician) != null ? ref.user_id : void 0)) {\n            return false;\n          }\n          if (draft.isLoadingAssignments) {\n            return false;\n          }\n          if (draft.assignmentsLoadError) {\n            return false;\n          }\n          if (!draft.affectedAssignments.length) {\n            return false;\n          }\n          if (!draft.hasValidCoverageWindow()) {\n            return false;\n          }\n          return true;\n        };\n        draft.submit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n          var error, invalidAssignment, payload, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                draft.syncCoverageWindow();\n                if (!(!draft.id && draft.hasPastCoverageStart())) {\n                  _context4.next = 4;\n                  break;\n                }\n                NotificationsService.error(PAST_COVERAGE_ERROR_MESSAGE);\n                return _context4.abrupt(\"return\", false);\n              case 4:\n                if (draft.canSubmit()) {\n                  _context4.next = 6;\n                  break;\n                }\n                return _context4.abrupt(\"return\", false);\n              case 6:\n                invalidAssignment = _.find(draft.affectedAssignments, function (assignment) {\n                  return !assignment.user_id || !_this2.isEligibleCoverageAssignee(assignment, assignment.user_id);\n                });\n                if (!invalidAssignment) {\n                  _context4.next = 10;\n                  break;\n                }\n                NotificationsService.error('Every affected assignment needs an eligible covering clinician.');\n                return _context4.abrupt(\"return\", false);\n              case 10:\n                payload = {\n                  id: draft.id,\n                  user_id: draft.selectedClinician.user_id,\n                  reason_type: draft.reason_type,\n                  starts_at: draft.starts_at,\n                  ends_at: draft.ends_at,\n                  note: draft.note || null,\n                  overrides: _.map(draft.affectedAssignments, function (assignment) {\n                    return {\n                      id: assignment.id,\n                      clinical_monitoring_assignment_id: assignment.clinical_monitoring_assignment_id,\n                      user_id: assignment.user_id,\n                      note: assignment.note || null\n                    };\n                  })\n                };\n                _context4.prev = 11;\n                draft.submitPromise = draft.id ? ClinicalMonitoringService.updateCoverage(payload) : ClinicalMonitoringService.createCoverage(payload);\n                _context4.next = 15;\n                return draft.submitPromise;\n              case 15:\n                NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.COVERAGE_SAVE_SUCCESS');\n                _context4.next = 18;\n                return _this2.refreshCoverage();\n              case 18:\n                return _context4.abrupt(\"return\", true);\n              case 21:\n                _context4.prev = 21;\n                _context4.t0 = _context4[\"catch\"](11);\n                error = _context4.t0;\n                NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error);\n                return _context4.abrupt(\"return\", false);\n              case 26:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, null, [[11, 21]]);\n        }));\n        draft.syncCoverageWindow();\n        return draft;\n      };\n      this.openCoverageModal = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        var coverageRow,\n          clinician,\n          error,\n          modalDefaults,\n          modalOptions,\n          modalPayload,\n          ref,\n          _args6 = arguments;\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              coverageRow = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : null;\n              if (this.canEditClinicalMonitoring) {\n                _context6.next = 3;\n                break;\n              }\n              return _context6.abrupt(\"return\");\n            case 3:\n              modalPayload = this.buildCoverageDraft(coverageRow);\n              if (coverageRow != null ? coverageRow.user_id : void 0) {\n                clinician = (ref = _.find(this.getSectionRows('active').concat(this.getSectionRows('upcoming')).concat(this.getSectionRows('recent')), {\n                  id: coverageRow.id\n                })) != null ? ref.unavailable_clinician : void 0;\n                modalPayload.selectedClinician = {\n                  user_id: coverageRow.user_id,\n                  display_name: this.getClinicianName(clinician)\n                };\n                modalPayload.loadAssignments();\n              }\n              modalDefaults = {\n                backdrop: 'static',\n                keyboard: true,\n                modalFade: true,\n                windowClass: 'clinical-monitoring-coverage-modal-window',\n                templateUrl: 'app/components/portal/clinical-monitoring/coverage-modal.html',\n                controller: function controller($scope, $uibModalInstance) {\n                  $scope.modalOptions = angular.extend({}, modalOptions);\n                  $scope.modalOptions.ok = /*#__PURE__*/function () {\n                    var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(payload) {\n                      var result;\n                      return regeneratorRuntime.wrap(function _callee5$(_context5) {\n                        while (1) switch (_context5.prev = _context5.next) {\n                          case 0:\n                            _context5.next = 2;\n                            return payload.submit();\n                          case 2:\n                            result = _context5.sent;\n                            if (!result) {\n                              _context5.next = 5;\n                              break;\n                            }\n                            return _context5.abrupt(\"return\", $uibModalInstance.close(result));\n                          case 5:\n                          case \"end\":\n                            return _context5.stop();\n                        }\n                      }, _callee5);\n                    }));\n                    return function (_x2) {\n                      return _ref8.apply(this, arguments);\n                    };\n                  }();\n                  $scope.modalOptions.close = function () {\n                    return $uibModalInstance.close(false);\n                  };\n                }\n              };\n              modalOptions = {\n                headerText: (coverageRow != null ? coverageRow.id : void 0) ? 'Edit Temporary Coverage' : 'Create Temporary Coverage',\n                closeButtonText: 'Cancel',\n                actionButtonText: 'Save Coverage',\n                payload: modalPayload\n              };\n              _context6.prev = 7;\n              _context6.next = 10;\n              return ModalService.showModal(modalDefaults, modalOptions).result;\n            case 10:\n              return _context6.abrupt(\"return\", _context6.sent);\n            case 13:\n              _context6.prev = 13;\n              _context6.t0 = _context6[\"catch\"](7);\n              error = _context6.t0;\n              return _context6.abrupt(\"return\", $log.log('Coverage modal dismissed'));\n            case 17:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this, [[7, 13]]);\n      }));\n      this.openCreateCoverageModal = function () {\n        return this.openCoverageModal();\n      };\n      this.openEditCoverageModal = function (row) {\n        return this.openCoverageModal(row);\n      };\n      this.cancelCoverage = /*#__PURE__*/function () {\n        var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(row) {\n          var error, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee7$(_context7) {\n            while (1) switch (_context7.prev = _context7.next) {\n              case 0:\n                if (this.canEditClinicalMonitoring && (row != null ? row.id : void 0)) {\n                  _context7.next = 2;\n                  break;\n                }\n                return _context7.abrupt(\"return\");\n              case 2:\n                _context7.prev = 2;\n                _context7.next = 5;\n                return ClinicalMonitoringService.cancelCoverage(row.id, {});\n              case 5:\n                NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.COVERAGE_CANCEL_SUCCESS');\n                _context7.next = 8;\n                return this.refreshCoverage();\n              case 8:\n                return _context7.abrupt(\"return\", _context7.sent);\n              case 11:\n                _context7.prev = 11;\n                _context7.t0 = _context7[\"catch\"](2);\n                error = _context7.t0;\n                return _context7.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n              case 15:\n              case \"end\":\n                return _context7.stop();\n            }\n          }, _callee7, this, [[2, 11]]);\n        }));\n        return function (_x3) {\n          return _ref9.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/portal/clinical-monitoring/clinical-monitoring-coverage.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:clinicalMonitoringClinicians\n   * @description\n   * Clinician list for the clinical monitoring manager experience.\n   */\n  angular.module('portal').component('clinicalMonitoringClinicians', {\n    bindings: {\n      user: '<',\n      canEditClinicalMonitoring: '<',\n      onOpenClinician: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $timeout, $state, $stateParams, ClinicalMonitoringService, ModalService, NotificationsService, StandardPagination, PER_PAGE) {\n      var _this4 = this;\n      var ASSIGNMENT_CHANGED_EVENT, ROLE_OPTIONS, TABLE_COLUMNS;\n      TABLE_COLUMNS = [{\n        key: 'clinician',\n        label: 'Clinician'\n      }, {\n        key: 'role',\n        label: 'Role'\n      }, {\n        key: 'total_assignments',\n        headerLines: ['Total', 'Assignments']\n      }, {\n        key: 'total_patients',\n        headerLines: ['Total', 'Patients']\n      }, {\n        key: 'communications',\n        label: 'CALLS/DOCS PATIENTS',\n        headerLines: ['CALLS/DOCS', 'PATIENTS']\n      }, {\n        key: 'btrs',\n        label: 'BTR PATIENTS',\n        headerLines: ['BTR', 'PATIENTS']\n      }];\n      ROLE_OPTIONS = [{\n        value: 'clinical_monitoring',\n        label: 'Clinical Monitoring'\n      }, {\n        value: 'clinical_monitoring_manager',\n        label: 'Clinical Monitoring Manager'\n      }];\n      ASSIGNMENT_CHANGED_EVENT = 'clinicalMonitoring:assignmentChanged';\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('clinicalMonitoringClinicians');\n        this.staffResponse = null;\n        this.staff = [];\n        this.columns = TABLE_COLUMNS;\n        this.roleOptions = ROLE_OPTIONS;\n        this.isLoading = false;\n        this.showLoadingSpinner = false;\n        this.loadingSpinnerPromise = null;\n        this.count = 0;\n        this.itemsPerPage = Number($stateParams.staff_per_page || PER_PAGE.DEFAULT);\n        this.pageNumber = Number($stateParams.staff_page || 1);\n        this.sortField = $stateParams.staff_sort_field || 'clinician';\n        this.sortDir = ($stateParams.staff_sort_dir || 'ASC').toUpperCase();\n        this.searchQuery = $stateParams.staff_query || '';\n        this.optionsForPagination = StandardPagination;\n        this.deregisterAssignmentChangedListener = $rootScope.$on(ASSIGNMENT_CHANGED_EVENT, function () {\n          return _this.refreshStaff();\n        });\n        return this.fetchStaff();\n      };\n      this.startLoading = function () {\n        var _this2 = this;\n        this.isLoading = true;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        return this.loadingSpinnerPromise = $timeout(function () {\n          if (_this2.isLoading) {\n            return _this2.showLoadingSpinner = true;\n          }\n        }, 400);\n      };\n      this.stopLoading = function () {\n        this.isLoading = false;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        this.loadingSpinnerPromise = null;\n        return this.showLoadingSpinner = false;\n      };\n      this.$onDestroy = function () {\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        if (this.deregisterAssignmentChangedListener) {\n          return this.deregisterAssignmentChangedListener();\n        }\n      };\n      this.getStaffRows = function (response) {\n        var ref;\n        return (response != null ? (ref = response.data) != null ? ref.data : void 0 : void 0) || (response != null ? response.data : void 0) || [];\n      };\n      this.getStaffQueryParams = function () {\n        return {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sortField: this.sortField,\n          _sortDir: this.sortDir,\n          query: this.searchQuery || null\n        };\n      };\n      this.fetchStaff = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, ref, ref1, ref2, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.startLoading();\n              _context.prev = 1;\n              _context.next = 4;\n              return ClinicalMonitoringService.getStaff(this.getStaffQueryParams());\n            case 4:\n              response = _context.sent;\n              this.staffResponse = response;\n              this.staff = this.getStaffRows(response);\n              return _context.abrupt(\"return\", this.count = Number((response != null ? typeof response.headers === \"function\" ? response.headers('X-Total-Count') : void 0 : void 0) || this.staff.length || 0));\n            case 10:\n              _context.prev = 10;\n              _context.t0 = _context[\"catch\"](1);\n              error = _context.t0;\n              $log.error('Failed to load clinical monitoring clinicians', error);\n              return _context.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 15:\n              _context.prev = 15;\n              this.stopLoading();\n              return _context.finish(15);\n            case 18:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1, 10, 15, 18]]);\n      }));\n      this.syncState = function () {\n        return $state.go('.', {\n          staff_page: this.pageNumber,\n          staff_per_page: this.itemsPerPage,\n          staff_sort_field: this.sortField,\n          staff_sort_dir: this.sortDir,\n          staff_query: this.searchQuery || null\n        }, {\n          notify: false,\n          location: 'replace'\n        });\n      };\n      this.refreshStaff = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              this.syncState();\n              _context2.next = 3;\n              return this.fetchStaff();\n            case 3:\n              return _context2.abrupt(\"return\", _context2.sent);\n            case 4:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.changePagination = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              this.pageNumber = 1;\n              _context3.next = 3;\n              return this.refreshStaff();\n            case 3:\n              return _context3.abrupt(\"return\", _context3.sent);\n            case 4:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.goToPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              _context4.next = 2;\n              return this.refreshStaff();\n            case 2:\n              return _context4.abrupt(\"return\", _context4.sent);\n            case 3:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this);\n      }));\n      this.isSortSelected = function (columnKey) {\n        return this.sortField === columnKey;\n      };\n      this.getSortIcon = function (columnKey) {\n        if (this.isSortSelected(columnKey) && this.sortDir === 'ASC') {\n          return 'fa-chevron-up';\n        } else {\n          return 'fa-chevron-down';\n        }\n      };\n      this.setSort = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(columnKey) {\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                if (this.sortField === columnKey) {\n                  this.sortDir = this.sortDir === 'ASC' ? 'DESC' : 'ASC';\n                } else {\n                  this.sortField = columnKey;\n                  this.sortDir = 'ASC';\n                }\n                this.pageNumber = 1;\n                _context5.next = 4;\n                return this.refreshStaff();\n              case 4:\n                return _context5.abrupt(\"return\", _context5.sent);\n              case 5:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        return function (_x) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.search = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              this.pageNumber = 1;\n              _context6.next = 3;\n              return this.refreshStaff();\n            case 3:\n              return _context6.abrupt(\"return\", _context6.sent);\n            case 4:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, this);\n      }));\n      this.clearSearch = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() {\n        return regeneratorRuntime.wrap(function _callee7$(_context7) {\n          while (1) switch (_context7.prev = _context7.next) {\n            case 0:\n              this.searchQuery = '';\n              this.pageNumber = 1;\n              _context7.next = 4;\n              return this.refreshStaff();\n            case 4:\n              return _context7.abrupt(\"return\", _context7.sent);\n            case 5:\n            case \"end\":\n              return _context7.stop();\n          }\n        }, _callee7, this);\n      }));\n      this.getCellValue = function (clinician, columnKey) {\n        switch (columnKey) {\n          case 'clinician':\n            return clinician.display_name;\n          case 'role':\n            return clinician.role_label;\n          case 'total_assignments':\n            return clinician.total_assignments;\n          case 'total_patients':\n            return clinician.total_patients;\n          case 'communications':\n            return clinician.communications_patients;\n          case 'btrs':\n            return clinician.btrs_patients;\n          default:\n            return '';\n        }\n      };\n      this.getDisplayValue = function (value) {\n        if (value === 0) {\n          return value;\n        }\n        return value || '—';\n      };\n      this.openClinician = function (clinician) {\n        if (!(clinician != null ? clinician.user_id : void 0)) {\n          return;\n        }\n        return this.onOpenClinician({\n          userId: clinician.user_id\n        });\n      };\n      this.buildAddClinicianPayload = function () {\n        var _this3 = this;\n        var payload;\n        payload = {\n          lookupOptions: [],\n          selectedClinician: null,\n          roleOptions: angular.copy(this.roleOptions),\n          role_type: 'clinical_monitoring',\n          isLookupLoading: false,\n          hasSearchedClinicians: false,\n          lastSearchQuery: null,\n          submitPromise: null\n        };\n        payload.searchClinicians = /*#__PURE__*/function () {\n          var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(query) {\n            var normalizedQuery, results;\n            return regeneratorRuntime.wrap(function _callee8$(_context8) {\n              while (1) switch (_context8.prev = _context8.next) {\n                case 0:\n                  normalizedQuery = query || null;\n                  payload.lastSearchQuery = normalizedQuery;\n                  payload.isLookupLoading = true;\n                  payload.hasSearchedClinicians = true;\n                  _context8.prev = 4;\n                  _context8.next = 7;\n                  return ClinicalMonitoringService.getEligibleStaffUsers({\n                    query: normalizedQuery\n                  });\n                case 7:\n                  results = _context8.sent;\n                  if (!(payload.lastSearchQuery !== normalizedQuery)) {\n                    _context8.next = 10;\n                    break;\n                  }\n                  return _context8.abrupt(\"return\");\n                case 10:\n                  return _context8.abrupt(\"return\", payload.lookupOptions = results);\n                case 11:\n                  _context8.prev = 11;\n                  if (payload.lastSearchQuery === normalizedQuery) {\n                    payload.isLookupLoading = false;\n                  }\n                  return _context8.finish(11);\n                case 14:\n                case \"end\":\n                  return _context8.stop();\n              }\n            }, _callee8, null, [[4,, 11, 14]]);\n          }));\n          return function (_x2) {\n            return _ref8.apply(this, arguments);\n          };\n        }();\n        payload.submit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9() {\n          var error, ref, ref1, ref2, ref3;\n          return regeneratorRuntime.wrap(function _callee9$(_context9) {\n            while (1) switch (_context9.prev = _context9.next) {\n              case 0:\n                if (((ref = payload.selectedClinician) != null ? ref.user_id : void 0) && payload.role_type) {\n                  _context9.next = 2;\n                  break;\n                }\n                return _context9.abrupt(\"return\", false);\n              case 2:\n                _context9.prev = 2;\n                payload.submitPromise = ClinicalMonitoringService.replaceUserMemberships(payload.selectedClinician.user_id, [{\n                  role_type: payload.role_type,\n                  is_active: true\n                }]);\n                _context9.next = 6;\n                return payload.submitPromise;\n              case 6:\n                NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.MEMBER_SAVE_SUCCESS');\n                _context9.next = 9;\n                return _this3.refreshStaff();\n              case 9:\n                return _context9.abrupt(\"return\", true);\n              case 12:\n                _context9.prev = 12;\n                _context9.t0 = _context9[\"catch\"](2);\n                error = _context9.t0;\n                NotificationsService.error((error != null ? (ref1 = error.data) != null ? ref1.errorMessage : void 0 : void 0) || (error != null ? (ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.message : void 0 : void 0 : void 0) || error);\n                return _context9.abrupt(\"return\", false);\n              case 17:\n              case \"end\":\n                return _context9.stop();\n            }\n          }, _callee9, null, [[2, 12]]);\n        }));\n        return payload;\n      };\n      this.openAddClinicianModal = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12() {\n        var error, modalDefaults, modalOptions, modalPayload;\n        return regeneratorRuntime.wrap(function _callee12$(_context12) {\n          while (1) switch (_context12.prev = _context12.next) {\n            case 0:\n              if (_this4.canEditClinicalMonitoring) {\n                _context12.next = 2;\n                break;\n              }\n              return _context12.abrupt(\"return\");\n            case 2:\n              modalPayload = _this4.buildAddClinicianPayload();\n              modalOptions = {\n                headerText: 'Add Clinician',\n                closeButtonText: 'Cancel',\n                actionButtonText: 'Add Clinician',\n                payload: modalPayload,\n                ok: function () {\n                  var _ok = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(payload) {\n                    var ref, result;\n                    return regeneratorRuntime.wrap(function _callee10$(_context10) {\n                      while (1) switch (_context10.prev = _context10.next) {\n                        case 0:\n                          if ((payload != null ? (ref = payload.selectedClinician) != null ? ref.user_id : void 0 : void 0) && (payload != null ? payload.role_type : void 0)) {\n                            _context10.next = 2;\n                            break;\n                          }\n                          return _context10.abrupt(\"return\");\n                        case 2:\n                          _context10.next = 4;\n                          return payload.submit();\n                        case 4:\n                          result = _context10.sent;\n                          return _context10.abrupt(\"return\", result);\n                        case 6:\n                        case \"end\":\n                          return _context10.stop();\n                      }\n                    }, _callee10);\n                  }));\n                  function ok(_x3) {\n                    return _ok.apply(this, arguments);\n                  }\n                  return ok;\n                }(),\n                close: function close() {\n                  return false;\n                }\n              };\n              modalDefaults = {\n                backdrop: 'static',\n                keyboard: true,\n                modalFade: true,\n                windowClass: 'clinical-monitoring-add-clinician-modal-window',\n                templateUrl: 'app/components/portal/clinical-monitoring/add-clinician.modal.html',\n                controller: function controller($scope, $uibModalInstance) {\n                  $scope.modalOptions = angular.extend({}, modalOptions);\n                  $scope.modalOptions.ok = /*#__PURE__*/function () {\n                    var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(payload) {\n                      var ref, result;\n                      return regeneratorRuntime.wrap(function _callee11$(_context11) {\n                        while (1) switch (_context11.prev = _context11.next) {\n                          case 0:\n                            if ((payload != null ? (ref = payload.selectedClinician) != null ? ref.user_id : void 0 : void 0) && (payload != null ? payload.role_type : void 0)) {\n                              _context11.next = 2;\n                              break;\n                            }\n                            return _context11.abrupt(\"return\");\n                          case 2:\n                            _context11.next = 4;\n                            return payload.submit();\n                          case 4:\n                            result = _context11.sent;\n                            if (!result) {\n                              _context11.next = 7;\n                              break;\n                            }\n                            return _context11.abrupt(\"return\", $uibModalInstance.close(result));\n                          case 7:\n                          case \"end\":\n                            return _context11.stop();\n                        }\n                      }, _callee11);\n                    }));\n                    return function (_x4) {\n                      return _ref11.apply(this, arguments);\n                    };\n                  }();\n                  $scope.modalOptions.close = function () {\n                    return $uibModalInstance.close(false);\n                  };\n                }\n              };\n              _context12.prev = 5;\n              _context12.next = 8;\n              return ModalService.showModal(modalDefaults, modalOptions).result;\n            case 8:\n              return _context12.abrupt(\"return\", _context12.sent);\n            case 11:\n              _context12.prev = 11;\n              _context12.t0 = _context12[\"catch\"](5);\n              error = _context12.t0;\n              return _context12.abrupt(\"return\", $log.log('Add clinician modal dismissed'));\n            case 15:\n            case \"end\":\n              return _context12.stop();\n          }\n        }, _callee12, null, [[5, 11]]);\n      }));\n    },\n    templateUrl: 'app/components/portal/clinical-monitoring/clinical-monitoring-clinicians.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:clinicalMonitoringClinician\n   * @description\n   * Clinician detail page for the clinical monitoring manager experience.\n   */\n  var indexOf = [].indexOf;\n  angular.module('portal').component('clinicalMonitoringClinician', {\n    bindings: {\n      user: '<',\n      clinician: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(AuthService, $log, $state, ClinicalMonitoringService, ModalService, NotificationsService) {\n      var _this = this;\n      var DAY_LABELS, ROLE_OPTIONS, STATE_OPTIONS;\n      ROLE_OPTIONS = [{\n        value: 'clinical_monitoring',\n        label: 'Clinical Monitoring'\n      }, {\n        value: 'clinical_monitoring_manager',\n        label: 'Clinical Monitoring Manager'\n      }];\n      STATE_OPTIONS = ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY'];\n      DAY_LABELS = {\n        monday: 'Monday',\n        tuesday: 'Tuesday',\n        wednesday: 'Wednesday',\n        thursday: 'Thursday',\n        friday: 'Friday',\n        saturday: 'Saturday',\n        sunday: 'Sunday'\n      };\n      this.$onInit = function () {\n        $log = $log.getInstance('clinicalMonitoringClinician');\n        this.roleOptions = ROLE_OPTIONS;\n        this.stateOptions = STATE_OPTIONS;\n        this.submitPromise = null;\n        this.canEditClinicalMonitoring = AuthService.isClinicalMonitoringManager();\n        return this.hydrateClinician(this.clinician);\n      };\n      this.$onChanges = function (changes) {\n        var ref;\n        if (changes != null ? (ref = changes.clinician) != null ? ref.currentValue : void 0 : void 0) {\n          return this.hydrateClinician(changes.clinician.currentValue);\n        }\n      };\n      this.hydrateClinician = function (clinician) {\n        var activeLicenses, i, len, ref, results, stateCode, userStateLicenses;\n        this.clinicianDetail = angular.copy(clinician) || {};\n        this.membershipPayload = {\n          role_type: this.clinicianDetail.role_type || 'clinical_monitoring'\n        };\n        this.editingRole = false;\n        userStateLicenses = angular.isArray(this.clinicianDetail.user_state_licenses) ? this.clinicianDetail.user_state_licenses : [];\n        activeLicenses = userStateLicenses.length ? userStateLicenses.filter(function (license) {\n          return license.is_active;\n        }).map(function (license) {\n          return license.state_code;\n        }) : this.clinicianDetail.licensed_states || [];\n        this.clinicianDetail.licensed_states = activeLicenses.sort();\n        this.licenseSelections = {};\n        ref = this.stateOptions;\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n          stateCode = ref[i];\n          results.push(this.licenseSelections[stateCode] = indexOf.call(activeLicenses, stateCode) >= 0);\n        }\n        return results;\n      };\n      this.refreshClinician = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var clinician;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return ClinicalMonitoringService.getStaffMember(this.clinicianDetail.user_id);\n            case 2:\n              clinician = _context.sent;\n              return _context.abrupt(\"return\", this.hydrateClinician(clinician));\n            case 4:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.getSelectedLicenses = function () {\n        return this.getSelectedLicensesFromSelections(this.licenseSelections);\n      };\n      this.getSelectedLicensesFromSelections = function () {\n        var licenseSelections = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var selected;\n        selected = [];\n        _.each(licenseSelections, function (isSelected, stateCode) {\n          if (isSelected) {\n            return selected.push({\n              state_code: stateCode,\n              is_active: true\n            });\n          }\n        });\n        return _.sortBy(selected, 'state_code');\n      };\n      this.startEditRole = function () {\n        if (!this.canEditClinicalMonitoring) {\n          return;\n        }\n        this.previousRole = this.membershipPayload.role_type;\n        return this.editingRole = true;\n      };\n      this.cancelEditRole = function () {\n        this.membershipPayload.role_type = this.previousRole;\n        return this.editingRole = false;\n      };\n      this.confirmEditRole = function () {\n        if (!this.canEditClinicalMonitoring) {\n          return;\n        }\n        this.editingRole = false;\n        return this.saveMembership();\n      };\n      this.getAbbreviatedLicenses = function () {\n        var licenses;\n        licenses = this.clinicianDetail.licensed_states || [];\n        if (licenses.length === 0) {\n          return '—';\n        }\n        return licenses.join(', ');\n      };\n      this.getAssignmentDaysLabel = function (assignment) {\n        var days, ref;\n        if (!(assignment != null ? (ref = assignment.days_of_week) != null ? ref.length : void 0 : void 0)) {\n          return 'M-F';\n        }\n        days = _.map(assignment.days_of_week, function (day) {\n          return DAY_LABELS[day] || day;\n        });\n        return days.join(', ');\n      };\n      this.openLicenseModal = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var code, error, i, len, modalDefaults, modalOptions, modalSelections, selectAllStates, stateOptions, vm;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              if (_this.canEditClinicalMonitoring) {\n                _context4.next = 2;\n                break;\n              }\n              return _context4.abrupt(\"return\");\n            case 2:\n              vm = _this;\n              stateOptions = _this.stateOptions;\n              modalSelections = {};\n              for (i = 0, len = stateOptions.length; i < len; i++) {\n                code = stateOptions[i];\n                modalSelections[code] = !!vm.licenseSelections[code];\n              }\n              selectAllStates = function selectAllStates() {\n                var j, len1, results;\n                results = [];\n                for (j = 0, len1 = stateOptions.length; j < len1; j++) {\n                  code = stateOptions[j];\n                  results.push(modalSelections[code] = true);\n                }\n                return results;\n              };\n              modalOptions = {\n                headerText: 'Edit Licensed States',\n                closeButtonText: 'Cancel',\n                actionButtonText: 'Save',\n                payload: {\n                  selections: modalSelections,\n                  stateOptions: stateOptions,\n                  selectAllStates: selectAllStates,\n                  submitPromise: null,\n                  saveLicenses: function () {\n                    var _saveLicenses = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n                      var j, len1, newSelections, wasSaved;\n                      return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                        while (1) switch (_context2.prev = _context2.next) {\n                          case 0:\n                            newSelections = {};\n                            for (j = 0, len1 = stateOptions.length; j < len1; j++) {\n                              code = stateOptions[j];\n                              newSelections[code] = !!modalSelections[code];\n                            }\n                            modalOptions.payload.submitPromise = vm.saveLicenses(newSelections);\n                            _context2.next = 5;\n                            return modalOptions.payload.submitPromise;\n                          case 5:\n                            wasSaved = _context2.sent;\n                            return _context2.abrupt(\"return\", wasSaved);\n                          case 7:\n                          case \"end\":\n                            return _context2.stop();\n                        }\n                      }, _callee2);\n                    }));\n                    function saveLicenses() {\n                      return _saveLicenses.apply(this, arguments);\n                    }\n                    return saveLicenses;\n                  }()\n                }\n              };\n              modalDefaults = {\n                backdrop: 'static',\n                keyboard: true,\n                modalFade: true,\n                templateUrl: 'app/components/portal/clinical-monitoring/licensed-states-edit.html',\n                controller: function controller($scope, $uibModalInstance) {\n                  $scope.modalOptions = angular.extend({}, modalOptions);\n                  $scope.modalOptions.ok = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n                    var result;\n                    return regeneratorRuntime.wrap(function _callee3$(_context3) {\n                      while (1) switch (_context3.prev = _context3.next) {\n                        case 0:\n                          _context3.next = 2;\n                          return $scope.modalOptions.payload.saveLicenses();\n                        case 2:\n                          result = _context3.sent;\n                          if (!result) {\n                            _context3.next = 5;\n                            break;\n                          }\n                          return _context3.abrupt(\"return\", $uibModalInstance.close(true));\n                        case 5:\n                        case \"end\":\n                          return _context3.stop();\n                      }\n                    }, _callee3);\n                  }));\n                  $scope.modalOptions.close = function () {\n                    return $uibModalInstance.close(false);\n                  };\n                }\n              };\n              _context4.prev = 9;\n              _context4.next = 12;\n              return ModalService.showModal(modalDefaults, modalOptions).result;\n            case 12:\n              return _context4.abrupt(\"return\", _context4.sent);\n            case 15:\n              _context4.prev = 15;\n              _context4.t0 = _context4[\"catch\"](9);\n              error = _context4.t0;\n              return _context4.abrupt(\"return\", $log.log('License modal dismissed'));\n            case 19:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, null, [[9, 15]]);\n      }));\n      this.saveMembership = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {\n        var error, memberships, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) switch (_context5.prev = _context5.next) {\n            case 0:\n              if (this.canEditClinicalMonitoring) {\n                _context5.next = 2;\n                break;\n              }\n              return _context5.abrupt(\"return\");\n            case 2:\n              memberships = [{\n                role_type: this.membershipPayload.role_type,\n                is_active: true\n              }];\n              _context5.prev = 3;\n              this.submitPromise = ClinicalMonitoringService.replaceUserMemberships(this.clinicianDetail.user_id, memberships);\n              _context5.next = 7;\n              return this.submitPromise;\n            case 7:\n              NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.MEMBER_SAVE_SUCCESS');\n              _context5.next = 10;\n              return this.refreshClinician();\n            case 10:\n              return _context5.abrupt(\"return\", _context5.sent);\n            case 13:\n              _context5.prev = 13;\n              _context5.t0 = _context5[\"catch\"](3);\n              error = _context5.t0;\n              return _context5.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 17:\n            case \"end\":\n              return _context5.stop();\n          }\n        }, _callee5, this, [[3, 13]]);\n      }));\n      this.openRemoveClinicianModal = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n        var error, modalDefaults, modalOptions, result;\n        return regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) switch (_context6.prev = _context6.next) {\n            case 0:\n              if (_this.canEditClinicalMonitoring) {\n                _context6.next = 2;\n                break;\n              }\n              return _context6.abrupt(\"return\");\n            case 2:\n              modalOptions = {\n                headerText: 'Remove clinician from clinical monitoring team',\n                closeButtonText: 'Cancel',\n                actionButtonText: 'Remove clinician',\n                payload: {\n                  clinicianName: _this.clinicianDetail.display_name,\n                  acknowledged: false\n                }\n              };\n              modalDefaults = {\n                backdrop: 'static',\n                keyboard: true,\n                modalFade: true,\n                templateUrl: 'app/components/portal/clinical-monitoring/remove-clinician-confirmation.html'\n              };\n              _context6.prev = 4;\n              _context6.next = 7;\n              return ModalService.showModal(modalDefaults, modalOptions).result;\n            case 7:\n              result = _context6.sent;\n              if (result != null ? result.acknowledged : void 0) {\n                _context6.next = 10;\n                break;\n              }\n              return _context6.abrupt(\"return\");\n            case 10:\n              _context6.next = 12;\n              return _this.removeClinician();\n            case 12:\n              return _context6.abrupt(\"return\", _context6.sent);\n            case 15:\n              _context6.prev = 15;\n              _context6.t0 = _context6[\"catch\"](4);\n              error = _context6.t0;\n              return _context6.abrupt(\"return\", $log.log('Remove clinician modal dismissed'));\n            case 19:\n            case \"end\":\n              return _context6.stop();\n          }\n        }, _callee6, null, [[4, 15]]);\n      }));\n      this.removeClinician = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7() {\n        var error, ref, ref1, ref2;\n        return regeneratorRuntime.wrap(function _callee7$(_context7) {\n          while (1) switch (_context7.prev = _context7.next) {\n            case 0:\n              if (this.canEditClinicalMonitoring) {\n                _context7.next = 2;\n                break;\n              }\n              return _context7.abrupt(\"return\");\n            case 2:\n              _context7.prev = 2;\n              this.submitPromise = ClinicalMonitoringService.removeStaffMember(this.clinicianDetail.user_id);\n              _context7.next = 6;\n              return this.submitPromise;\n            case 6:\n              NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.MEMBER_REMOVE_SUCCESS');\n              return _context7.abrupt(\"return\", $state.go('portal.clinical-monitoring', {\n                tab: 'clinicians'\n              }));\n            case 10:\n              _context7.prev = 10;\n              _context7.t0 = _context7[\"catch\"](2);\n              error = _context7.t0;\n              return _context7.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 14:\n            case \"end\":\n              return _context7.stop();\n          }\n        }, _callee7, this, [[2, 10]]);\n      }));\n      this.saveLicenses = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() {\n        var licenseSelections,\n          error,\n          ref,\n          ref1,\n          ref2,\n          selectedLicenses,\n          _args8 = arguments;\n        return regeneratorRuntime.wrap(function _callee8$(_context8) {\n          while (1) switch (_context8.prev = _context8.next) {\n            case 0:\n              licenseSelections = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : this.licenseSelections;\n              if (this.canEditClinicalMonitoring) {\n                _context8.next = 3;\n                break;\n              }\n              return _context8.abrupt(\"return\");\n            case 3:\n              selectedLicenses = this.getSelectedLicensesFromSelections(licenseSelections);\n              _context8.prev = 4;\n              this.submitPromise = ClinicalMonitoringService.replaceUserLicenses(this.clinicianDetail.user_id, selectedLicenses);\n              _context8.next = 8;\n              return this.submitPromise;\n            case 8:\n              this.licenseSelections = angular.copy(licenseSelections);\n              NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.LICENSE_SAVE_SUCCESS');\n              _context8.next = 12;\n              return this.refreshClinician();\n            case 12:\n              return _context8.abrupt(\"return\", true);\n            case 15:\n              _context8.prev = 15;\n              _context8.t0 = _context8[\"catch\"](4);\n              error = _context8.t0;\n              NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error);\n              return _context8.abrupt(\"return\", false);\n            case 20:\n            case \"end\":\n              return _context8.stop();\n          }\n        }, _callee8, this, [[4, 15]]);\n      }));\n      this.goBack = function () {\n        return $state.go('portal.clinical-monitoring', {\n          tab: 'clinicians'\n        });\n      };\n      this.getDisplayValue = function (value) {\n        if (value === 0) {\n          return value;\n        }\n        return value || '—';\n      };\n    },\n    templateUrl: 'app/components/portal/clinical-monitoring/clinical-monitoring-clinician.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:clinicalAssignments\n   * @description\n   * Manager UI for clinical monitoring assignments and licenses.\n   */\n  var indexOf = [].indexOf;\n  angular.module('portal').component('clinicalAssignments', {\n    bindings: {\n      user: '<',\n      canEditClinicalMonitoring: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $timeout, $state, $stateParams, ModalService, ClinicalMonitoringService, NotificationsService, StandardPagination, PER_PAGE) {\n      var ASSIGNMENT_CHANGED_EVENT, ASSIGNMENT_TYPES, DAYS_OF_WEEK, TABLE_COLUMNS, WEEKDAY_VALUES;\n      ASSIGNMENT_TYPES = [{\n        value: 'btrs',\n        label: 'BTRs'\n      }, {\n        value: 'calls_and_documentation',\n        label: 'Calls / Documentation'\n      }];\n      DAYS_OF_WEEK = [{\n        value: 'monday',\n        label: 'Monday'\n      }, {\n        value: 'tuesday',\n        label: 'Tuesday'\n      }, {\n        value: 'wednesday',\n        label: 'Wednesday'\n      }, {\n        value: 'thursday',\n        label: 'Thursday'\n      }, {\n        value: 'friday',\n        label: 'Friday'\n      }];\n      WEEKDAY_VALUES = _.map(DAYS_OF_WEEK, 'value');\n      ASSIGNMENT_CHANGED_EVENT = 'clinicalMonitoring:assignmentChanged';\n      TABLE_COLUMNS = [{\n        key: 'practice',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.PRACTICE_OFFICE',\n        translate: true\n      }, {\n        key: 'communications',\n        label: 'CALLS/DOCS ASSIGNMENTS'\n      }, {\n        key: 'btrs',\n        label: 'BTR ASSIGNMENTS'\n      }, {\n        key: 'rpm_patients',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.RPM_PATIENTS',\n        headerLines: ['RPM', 'PATIENTS'],\n        translate: true,\n        sortable: false\n      }, {\n        key: 'ccm_patients',\n        label: 'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CCM_PATIENTS',\n        headerLines: ['CCM', 'PATIENTS'],\n        translate: true,\n        sortable: false\n      }];\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('clinicalAssignments');\n        this.officesResponse = null;\n        this.offices = [];\n        this.columns = TABLE_COLUMNS;\n        this.assignmentTypeOptions = ASSIGNMENT_TYPES;\n        this.daysOfWeekOptions = DAYS_OF_WEEK;\n        this.submitPromise = null;\n        this.isLoading = false;\n        this.isLoadingMetrics = false;\n        this.showLoadingSpinner = false;\n        this.loadingSpinnerPromise = null;\n        this.latestOfficeRequestKey = null;\n        this.count = 0;\n        this.itemsPerPage = Number($stateParams.per_page || PER_PAGE.DEFAULT);\n        this.pageNumber = Number($stateParams.page || 1);\n        this.sortField = this.normalizeSortField($stateParams.sort_field);\n        this.sortDir = ($stateParams.sort_dir || 'ASC').toUpperCase();\n        this.searchQuery = $stateParams.query || '';\n        this.optionsForPagination = StandardPagination;\n        this.deregisterAssignmentChangedListener = $rootScope.$on(ASSIGNMENT_CHANGED_EVENT, function () {\n          return _this.refreshOfficeList();\n        });\n        return this.fetchOffices();\n      };\n      this.startLoading = function () {\n        var _this2 = this;\n        this.isLoading = true;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        return this.loadingSpinnerPromise = $timeout(function () {\n          if (_this2.isLoading) {\n            return _this2.showLoadingSpinner = true;\n          }\n        }, 400);\n      };\n      this.stopLoading = function () {\n        this.isLoading = false;\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        this.loadingSpinnerPromise = null;\n        return this.showLoadingSpinner = false;\n      };\n      this.$onDestroy = function () {\n        if (this.loadingSpinnerPromise) {\n          $timeout.cancel(this.loadingSpinnerPromise);\n        }\n        if (this.deregisterAssignmentChangedListener) {\n          return this.deregisterAssignmentChangedListener();\n        }\n      };\n      this.normalizeSortField = function (sortField) {\n        if (sortField === 'customer' || sortField === 'practice') {\n          return 'practice';\n        } else {\n          return sortField || 'practice';\n        }\n      };\n      this.getApiSortField = function () {\n        if (this.sortField === 'practice') {\n          return 'customer';\n        } else {\n          return this.sortField;\n        }\n      };\n      this.getOfficeRows = function (response) {\n        var ref;\n        return (response != null ? (ref = response.data) != null ? ref.data : void 0 : void 0) || (response != null ? response.data : void 0) || [];\n      };\n      this.clearOfficeMetrics = function (office) {\n        return angular.extend({}, office, {\n          billable_patient_count: null,\n          rpm_patient_count: null,\n          ccm_patient_count: null,\n          new_ccm_patient_count: null,\n          new_reading_patient_count: null,\n          undocumented_btr_patient_count: null\n        });\n      };\n      this.getOfficeId = function (office) {\n        return (office != null ? office.office_id : void 0) || (office != null ? office.id : void 0);\n      };\n      this.findOfficeRowIndex = function (officeId) {\n        var _this3 = this;\n        return _.findIndex(this.offices, function (office) {\n          return _this3.getOfficeId(office) === officeId;\n        });\n      };\n      this.getOfficeQueryParams = function () {\n        return {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sortField: this.getApiSortField(),\n          _sortDir: this.sortDir,\n          query: this.searchQuery || null,\n          include_counts: false\n        };\n      };\n      this.getOfficeRequestKey = function () {\n        return JSON.stringify(this.getOfficeQueryParams());\n      };\n      this.getOfficeMetricIds = function () {\n        var _this4 = this;\n        return _.map(this.offices || [], function (office) {\n          return _this4.getOfficeId(office);\n        }).filter(Boolean);\n      };\n      this.fetchOffices = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this5 = this;\n        var error, officeRequestKey, ref, ref1, ref2, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.startLoading();\n              officeRequestKey = this.getOfficeRequestKey();\n              this.latestOfficeRequestKey = officeRequestKey;\n              _context.prev = 3;\n              _context.next = 6;\n              return ClinicalMonitoringService.getOffices(this.getOfficeQueryParams());\n            case 6:\n              response = _context.sent;\n              if (!(this.latestOfficeRequestKey !== officeRequestKey)) {\n                _context.next = 9;\n                break;\n              }\n              return _context.abrupt(\"return\");\n            case 9:\n              this.officesResponse = response;\n              this.offices = _.map(this.getOfficeRows(response), function (office) {\n                return _this5.clearOfficeMetrics(office);\n              });\n              this.count = Number((response != null ? typeof response.headers === \"function\" ? response.headers('X-Total-Count') : void 0 : void 0) || this.offices.length || 0);\n              return _context.abrupt(\"return\", this.loadOfficeMetrics(officeRequestKey));\n            case 15:\n              _context.prev = 15;\n              _context.t0 = _context[\"catch\"](3);\n              error = _context.t0;\n              if (!(this.latestOfficeRequestKey === officeRequestKey)) {\n                _context.next = 21;\n                break;\n              }\n              $log.error('Failed to load clinical monitoring assignment offices', error);\n              return _context.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n            case 21:\n              _context.prev = 21;\n              if (this.latestOfficeRequestKey === officeRequestKey) {\n                this.stopLoading();\n              }\n              return _context.finish(21);\n            case 24:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[3, 15, 21, 24]]);\n      }));\n      this.loadOfficeMetrics = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(officeRequestKey) {\n          var error, officeIds, ref, ref1, ref2, response;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                officeIds = this.getOfficeMetricIds();\n                if (officeIds.length) {\n                  _context2.next = 4;\n                  break;\n                }\n                if (this.latestOfficeRequestKey === officeRequestKey) {\n                  this.isLoadingMetrics = false;\n                }\n                return _context2.abrupt(\"return\");\n              case 4:\n                this.isLoadingMetrics = true;\n                _context2.prev = 5;\n                _context2.next = 8;\n                return ClinicalMonitoringService.getOfficeMetrics(officeIds);\n              case 8:\n                response = _context2.sent;\n                if (!(this.latestOfficeRequestKey !== officeRequestKey)) {\n                  _context2.next = 11;\n                  break;\n                }\n                return _context2.abrupt(\"return\");\n              case 11:\n                return _context2.abrupt(\"return\", this.mergeOfficeMetrics(response));\n              case 14:\n                _context2.prev = 14;\n                _context2.t0 = _context2[\"catch\"](5);\n                error = _context2.t0;\n                if (!(this.latestOfficeRequestKey === officeRequestKey)) {\n                  _context2.next = 20;\n                  break;\n                }\n                $log.warn('Failed to load clinical monitoring office metrics');\n                return _context2.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n              case 20:\n                _context2.prev = 20;\n                if (this.latestOfficeRequestKey === officeRequestKey) {\n                  this.isLoadingMetrics = false;\n                }\n                return _context2.finish(20);\n              case 23:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[5, 14, 20, 23]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.mergeOfficeMetrics = function (response) {\n        var _this6 = this;\n        var metricRows, metricsByOfficeId, ref;\n        metricRows = (response != null ? (ref = response.data) != null ? ref.data : void 0 : void 0) || (response != null ? response.data : void 0) || response || [];\n        metricsByOfficeId = _.keyBy(metricRows, 'office_id');\n        return this.offices = _.map(this.offices || [], function (office) {\n          var metrics, officeId;\n          officeId = _this6.getOfficeId(office);\n          metrics = metricsByOfficeId[officeId];\n          if (!metrics) {\n            return office;\n          }\n          return angular.extend({}, office, {\n            billable_patient_count: metrics.billable_patient_count,\n            rpm_patient_count: metrics.rpm_patient_count,\n            ccm_patient_count: metrics.ccm_patient_count,\n            new_ccm_patient_count: metrics.new_ccm_patient_count,\n            new_reading_patient_count: metrics.new_reading_patient_count,\n            undocumented_btr_patient_count: metrics.undocumented_btr_patient_count\n          });\n        });\n      };\n      this.syncState = function () {\n        return $state.go('.', {\n          page: this.pageNumber,\n          per_page: this.itemsPerPage,\n          sort_field: this.normalizeSortField(this.sortField),\n          sort_dir: this.sortDir,\n          query: this.searchQuery || null\n        }, {\n          notify: false,\n          location: 'replace'\n        });\n      };\n      this.refreshOfficeList = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              this.syncState();\n              _context3.next = 3;\n              return this.fetchOffices();\n            case 3:\n              return _context3.abrupt(\"return\", _context3.sent);\n            case 4:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this);\n      }));\n      this.loadOfficeData = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(office) {\n          var eligibleUsers, officeAssignments, officeId, officeRequests, officeSetting, _yield$Promise$all, _yield$Promise$all2;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                officeId = this.getOfficeId(office);\n                if (officeId) {\n                  _context4.next = 3;\n                  break;\n                }\n                return _context4.abrupt(\"return\", null);\n              case 3:\n                officeRequests = [ClinicalMonitoringService.getOfficeAssignments(officeId), ClinicalMonitoringService.getOfficeSetting(officeId)];\n                if (this.canEditClinicalMonitoring) {\n                  officeRequests.push(ClinicalMonitoringService.getEligibleUsersForOffice(officeId));\n                } else {\n                  officeRequests.push(Promise.resolve([]));\n                }\n                _context4.next = 7;\n                return Promise.all(officeRequests);\n              case 7:\n                _yield$Promise$all = _context4.sent;\n                _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);\n                officeAssignments = _yield$Promise$all2[0];\n                officeSetting = _yield$Promise$all2[1];\n                eligibleUsers = _yield$Promise$all2[2];\n                return _context4.abrupt(\"return\", {\n                  office: angular.copy(office),\n                  officeAssignments: officeAssignments || [],\n                  officeSetting: officeSetting || {\n                    office_id: officeId\n                  },\n                  eligibleUsers: eligibleUsers || []\n                });\n              case 13:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this);\n        }));\n        return function (_x2) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n      this.getEligibleUserDisplayName = function (candidate) {\n        if (!candidate) {\n          return '';\n        }\n        return _.trim(\"\".concat(candidate.name_first || '', \" \").concat(candidate.name_last || ''));\n      };\n      this.getEligibleUserLabel = function (candidate) {\n        var btrPatients, callsDocsPatients, displayName;\n        if (!candidate) {\n          return '';\n        }\n        displayName = this.getEligibleUserDisplayName(candidate);\n        callsDocsPatients = Number(candidate.communications_patients) || 0;\n        btrPatients = Number(candidate.btrs_patients) || 0;\n        return \"\".concat(displayName, \" - Calls/Docs Patients: \").concat(callsDocsPatients, \" | BTR Patients: \").concat(btrPatients);\n      };\n      this.getAssignmentPatientSortValue = function (candidate, assignmentType) {\n        if (assignmentType === 'calls_and_documentation') {\n          return Number(candidate != null ? candidate.communications_patients : void 0) || 0;\n        }\n        return Number(candidate != null ? candidate.btrs_patients : void 0) || 0;\n      };\n      this.getAvailableUsersForAssignmentType = function (officePayload, assignmentType) {\n        var _this7 = this;\n        var candidates, filteredCandidates, normalizedAssignmentType, ref, shouldRestrictByLicense, sortedCandidates;\n        candidates = angular.copy(officePayload != null ? officePayload.eligibleUsers : void 0) || [];\n        normalizedAssignmentType = assignmentType || ((ref = this.assignmentTypeOptions[0]) != null ? ref.value : void 0);\n        shouldRestrictByLicense = normalizedAssignmentType === 'btrs';\n        filteredCandidates = _.filter(candidates, function (candidate) {\n          if (!shouldRestrictByLicense) {\n            return true;\n          }\n          return (candidate != null ? candidate.is_licensed_for_office_state : void 0) === true;\n        });\n        sortedCandidates = filteredCandidates.slice().sort(function (leftCandidate, rightCandidate) {\n          var leftCount, rightCount;\n          leftCount = _this7.getAssignmentPatientSortValue(leftCandidate, normalizedAssignmentType);\n          rightCount = _this7.getAssignmentPatientSortValue(rightCandidate, normalizedAssignmentType);\n          if (leftCount !== rightCount) {\n            return leftCount - rightCount;\n          }\n          return _this7.getEligibleUserDisplayName(leftCandidate).localeCompare(_this7.getEligibleUserDisplayName(rightCandidate));\n        });\n        return _.map(sortedCandidates, function (candidate) {\n          return {\n            user_id: candidate.user_id,\n            provider_office_id: candidate.provider_office_id || null,\n            label: _this7.getEligibleUserLabel(candidate)\n          };\n        });\n      };\n      this.syncProviderOfficeSelection = function (payload) {\n        var selectedOption;\n        if (!payload) {\n          return;\n        }\n        selectedOption = _.find(payload.availableUsers || [], {\n          user_id: payload.user_id\n        });\n        return payload.provider_office_id = (selectedOption != null ? selectedOption.provider_office_id : void 0) || null;\n      };\n      this.hasDuplicateAssignment = function (officePayload, payload) {\n        if (!(officePayload && (payload != null ? payload.user_id : void 0) && (payload != null ? payload.assignment_type : void 0))) {\n          return false;\n        }\n        return _.some(officePayload.officeAssignments || [], function (assignment) {\n          var ref;\n          return (assignment != null ? (ref = assignment.provider) != null ? ref.user_id : void 0 : void 0) === payload.user_id && (assignment != null ? assignment.assignment_type : void 0) === payload.assignment_type && (assignment != null ? assignment.id : void 0) !== payload.id;\n        });\n      };\n      this.updateDuplicateAssignmentError = function (officePayload, payload) {\n        if (!payload) {\n          return;\n        }\n        return payload.duplicateAssignmentError = this.hasDuplicateAssignment(officePayload, payload);\n      };\n      this.updateAvailableUsers = function (officePayload, payload) {\n        var selectedUserAvailable;\n        if (!payload) {\n          return;\n        }\n        payload.availableUsers = this.getAvailableUsersForAssignmentType(officePayload, payload.assignment_type);\n        selectedUserAvailable = _.some(payload.availableUsers, {\n          user_id: payload.user_id\n        });\n        if (!(!payload.user_id || selectedUserAvailable)) {\n          payload.user_id = null;\n        }\n        this.syncProviderOfficeSelection(payload);\n        return this.updateDuplicateAssignmentError(officePayload, payload);\n      };\n      this.buildAssignmentDraft = function (officePayload) {\n        var assignment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var allWeekdaysSelected, draft, ref, ref1;\n        draft = angular.copy(assignment) || {};\n        draft.office_id = this.getOfficeId(officePayload);\n        draft.user_id = ((ref = draft.provider) != null ? ref.user_id : void 0) || draft.user_id || null;\n        draft.provider_office_id = draft.provider_office_id || null;\n        draft.assignment_type = draft.assignment_type || ((ref1 = this.assignmentTypeOptions[0]) != null ? ref1.value : void 0);\n        draft.days_of_week = angular.copy(draft.days_of_week) || [];\n        draft.days_of_week = _.filter(draft.days_of_week, function (day) {\n          return indexOf.call(WEEKDAY_VALUES, day) >= 0;\n        });\n        allWeekdaysSelected = _.difference(WEEKDAY_VALUES, draft.days_of_week).length === 0 && draft.days_of_week.length === WEEKDAY_VALUES.length;\n        draft.daySelectionMode = draft.days_of_week.length && !allWeekdaysSelected ? 'custom' : 'all';\n        if (draft.daySelectionMode === 'all') {\n          draft.days_of_week = [];\n        }\n        draft.daySelectionError = false;\n        draft.duplicateAssignmentError = false;\n        draft.note = draft.note || '';\n        draft.assignmentTypeOptions = this.assignmentTypeOptions;\n        draft.daysOfWeekOptions = this.daysOfWeekOptions;\n        this.updateAvailableUsers(officePayload, draft);\n        return draft;\n      };\n      this.normalizeAssignmentPayload = function (payload) {\n        var assignment, selectedDays;\n        this.syncProviderOfficeSelection(payload);\n        assignment = {\n          id: payload.id,\n          office_id: payload.office_id,\n          user_id: payload.user_id,\n          provider_office_id: payload.provider_office_id,\n          assignment_type: payload.assignment_type,\n          note: payload.note || null\n        };\n        selectedDays = _.filter((payload != null ? payload.days_of_week : void 0) || [], function (day) {\n          return indexOf.call(WEEKDAY_VALUES, day) >= 0;\n        });\n        assignment.days_of_week = (payload != null ? payload.daySelectionMode : void 0) === 'custom' && selectedDays.length < WEEKDAY_VALUES.length ? selectedDays : null;\n        return assignment;\n      };\n      this.hydrateOfficePayload = function (targetPayload, officeData) {\n        var _this8 = this;\n        targetPayload.officeAssignments = angular.copy(officeData.officeAssignments);\n        targetPayload.officeSetting = angular.copy(officeData.officeSetting);\n        targetPayload.eligibleUsers = angular.copy(officeData.eligibleUsers);\n        targetPayload.newAssignmentPayload = this.buildAssignmentDraft(targetPayload);\n        targetPayload.editAssignmentPayloads = {};\n        _.each(targetPayload.officeAssignments, function (assignment) {\n          return targetPayload.editAssignmentPayloads[assignment.id] = _this8.buildAssignmentDraft(targetPayload, assignment);\n        });\n        return targetPayload;\n      };\n      this.refreshOfficePayload = /*#__PURE__*/function () {\n        var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(officePayload) {\n          var officeData, officeIndex;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return this.loadOfficeData(officePayload);\n              case 2:\n                officeData = _context5.sent;\n                if (officeData) {\n                  _context5.next = 5;\n                  break;\n                }\n                return _context5.abrupt(\"return\", officePayload);\n              case 5:\n                this.hydrateOfficePayload(officePayload, officeData);\n                officeIndex = this.findOfficeRowIndex(this.getOfficeId(officePayload));\n                if (officeIndex >= 0) {\n                  this.offices[officeIndex] = angular.copy(officeData.office);\n                }\n                return _context5.abrupt(\"return\", officePayload);\n              case 9:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        return function (_x3) {\n          return _ref5.apply(this, arguments);\n        };\n      }();\n      this.broadcastAssignmentChanged = function (officeId) {\n        var assignmentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        return $rootScope.$broadcast(ASSIGNMENT_CHANGED_EVENT, {\n          officeId: officeId,\n          assignmentId: assignmentId\n        });\n      };\n      this.saveAssignment = /*#__PURE__*/function () {\n        var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(officePayload, payload) {\n          var assignment, error, officeId, ref, ref1, ref2, ref3;\n          return regeneratorRuntime.wrap(function _callee6$(_context6) {\n            while (1) switch (_context6.prev = _context6.next) {\n              case 0:\n                if (this.canEditClinicalMonitoring) {\n                  _context6.next = 2;\n                  break;\n                }\n                return _context6.abrupt(\"return\");\n              case 2:\n                officeId = this.getOfficeId(officePayload);\n                if (officeId) {\n                  _context6.next = 5;\n                  break;\n                }\n                return _context6.abrupt(\"return\");\n              case 5:\n                this.updateDuplicateAssignmentError(officePayload, payload);\n                if (!(payload != null ? payload.duplicateAssignmentError : void 0)) {\n                  _context6.next = 8;\n                  break;\n                }\n                return _context6.abrupt(\"return\");\n              case 8:\n                if (!((payload != null ? payload.daySelectionMode : void 0) === 'custom' && !(payload != null ? (ref = payload.days_of_week) != null ? ref.length : void 0 : void 0))) {\n                  _context6.next = 11;\n                  break;\n                }\n                payload.daySelectionError = true;\n                return _context6.abrupt(\"return\");\n              case 11:\n                payload.daySelectionError = false;\n                assignment = this.normalizeAssignmentPayload(payload);\n                _context6.prev = 13;\n                if (assignment.id) {\n                  this.submitPromise = ClinicalMonitoringService.updateOfficeAssignment(officeId, assignment);\n                } else {\n                  this.submitPromise = ClinicalMonitoringService.createOfficeAssignment(officeId, assignment);\n                }\n                officePayload.submitPromise = this.submitPromise;\n                _context6.next = 18;\n                return this.submitPromise;\n              case 18:\n                _context6.next = 20;\n                return this.refreshOfficePayload(officePayload);\n              case 20:\n                if (!assignment.id) {\n                  this.prepareNewAssignmentDraft(officePayload);\n                }\n                this.broadcastAssignmentChanged(officeId, assignment.id);\n                return _context6.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENT_SAVE_SUCCESS'));\n              case 25:\n                _context6.prev = 25;\n                _context6.t0 = _context6[\"catch\"](13);\n                error = _context6.t0;\n                return _context6.abrupt(\"return\", NotificationsService.error((error != null ? (ref1 = error.data) != null ? ref1.errorMessage : void 0 : void 0) || (error != null ? (ref2 = error.data) != null ? (ref3 = ref2.data) != null ? ref3.message : void 0 : void 0 : void 0) || error));\n              case 29:\n                _context6.prev = 29;\n                officePayload.submitPromise = null;\n                return _context6.finish(29);\n              case 32:\n              case \"end\":\n                return _context6.stop();\n            }\n          }, _callee6, this, [[13, 25, 29, 32]]);\n        }));\n        return function (_x4, _x5) {\n          return _ref6.apply(this, arguments);\n        };\n      }();\n      this.deleteAssignment = /*#__PURE__*/function () {\n        var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(officePayload, assignment) {\n          var error, officeId, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee7$(_context7) {\n            while (1) switch (_context7.prev = _context7.next) {\n              case 0:\n                if (this.canEditClinicalMonitoring) {\n                  _context7.next = 2;\n                  break;\n                }\n                return _context7.abrupt(\"return\");\n              case 2:\n                officeId = this.getOfficeId(officePayload);\n                if (officeId && (assignment != null ? assignment.id : void 0)) {\n                  _context7.next = 5;\n                  break;\n                }\n                return _context7.abrupt(\"return\");\n              case 5:\n                _context7.prev = 5;\n                this.submitPromise = ClinicalMonitoringService.deleteOfficeAssignment(officeId, assignment.id);\n                _context7.next = 9;\n                return this.submitPromise;\n              case 9:\n                _context7.next = 11;\n                return this.refreshOfficePayload(officePayload);\n              case 11:\n                this.broadcastAssignmentChanged(officeId, assignment.id);\n                return _context7.abrupt(\"return\", NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENT_DELETE_SUCCESS'));\n              case 15:\n                _context7.prev = 15;\n                _context7.t0 = _context7[\"catch\"](5);\n                error = _context7.t0;\n                return _context7.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n              case 19:\n              case \"end\":\n                return _context7.stop();\n            }\n          }, _callee7, this, [[5, 15]]);\n        }));\n        return function (_x6, _x7) {\n          return _ref7.apply(this, arguments);\n        };\n      }();\n      this.saveOfficeSetting = /*#__PURE__*/function () {\n        var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(officePayload) {\n          var error, officeId, ref, ref1, ref2;\n          return regeneratorRuntime.wrap(function _callee8$(_context8) {\n            while (1) switch (_context8.prev = _context8.next) {\n              case 0:\n                if (this.canEditClinicalMonitoring) {\n                  _context8.next = 2;\n                  break;\n                }\n                return _context8.abrupt(\"return\", false);\n              case 2:\n                officeId = this.getOfficeId(officePayload);\n                if (officeId) {\n                  _context8.next = 5;\n                  break;\n                }\n                return _context8.abrupt(\"return\", false);\n              case 5:\n                _context8.prev = 5;\n                officePayload.submitPromise = ClinicalMonitoringService.saveOfficeSetting(officeId, officePayload.officeSetting);\n                this.submitPromise = officePayload.submitPromise;\n                _context8.next = 10;\n                return officePayload.submitPromise;\n              case 10:\n                NotificationsService.success('PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.SAVE_SUCCESS');\n                return _context8.abrupt(\"return\", true);\n              case 14:\n                _context8.prev = 14;\n                _context8.t0 = _context8[\"catch\"](5);\n                error = _context8.t0;\n                NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error);\n                return _context8.abrupt(\"return\", false);\n              case 19:\n              case \"end\":\n                return _context8.stop();\n            }\n          }, _callee8, this, [[5, 14]]);\n        }));\n        return function (_x8) {\n          return _ref8.apply(this, arguments);\n        };\n      }();\n      this.prepareNewAssignmentDraft = function (officePayload) {\n        return officePayload.newAssignmentPayload = this.buildAssignmentDraft(officePayload);\n      };\n      this.prepareEditAssignmentDraft = function (officePayload, assignment) {\n        if (!(assignment != null ? assignment.id : void 0)) {\n          return;\n        }\n        return officePayload.editAssignmentPayloads[assignment.id] = this.buildAssignmentDraft(officePayload, assignment);\n      };\n      this.isDaySelected = function (payload, dayValue) {\n        return indexOf.call((payload != null ? payload.days_of_week : void 0) || [], dayValue) >= 0;\n      };\n      this.getAssignmentDayMode = function (payload) {\n        if (!payload) {\n          return 'all';\n        }\n        payload.daySelectionMode = payload.daySelectionMode === 'custom' ? 'custom' : 'all';\n        if (payload.daySelectionMode !== 'custom') {\n          payload.days_of_week = [];\n        }\n        return payload.daySelectionMode;\n      };\n      this.toggleAssignmentDay = function (payload, dayValue) {\n        var existingIndex;\n        payload.days_of_week = angular.copy(payload != null ? payload.days_of_week : void 0) || [];\n        existingIndex = payload.days_of_week.indexOf(dayValue);\n        if (existingIndex >= 0) {\n          payload.days_of_week.splice(existingIndex, 1);\n        } else {\n          payload.days_of_week.push(dayValue);\n        }\n        if (payload.days_of_week.length) {\n          return payload.daySelectionError = false;\n        }\n      };\n      this.setAssignmentDayMode = function (payload, mode) {\n        payload.daySelectionMode = mode === 'custom' ? 'custom' : 'all';\n        payload.daySelectionError = false;\n        return payload.days_of_week = [];\n      };\n      this.setAssignmentType = function (officePayload, payload, assignmentType) {\n        var ref;\n        if (!payload) {\n          return;\n        }\n        payload.assignment_type = assignmentType || ((ref = this.assignmentTypeOptions[0]) != null ? ref.value : void 0);\n        return this.updateAvailableUsers(officePayload, payload);\n      };\n      this.setAssignmentUser = function (officePayload, payload, userId) {\n        if (!payload) {\n          return;\n        }\n        payload.user_id = userId || null;\n        this.syncProviderOfficeSelection(payload);\n        return this.updateDuplicateAssignmentError(officePayload, payload);\n      };\n      this.getAssignmentDaysText = function (assignment) {\n        var ref;\n        if (!(assignment != null ? (ref = assignment.days_of_week) != null ? ref.length : void 0 : void 0)) {\n          return '';\n        }\n        if (_.difference(WEEKDAY_VALUES, assignment.days_of_week).length === 0 && assignment.days_of_week.length === WEEKDAY_VALUES.length) {\n          return '';\n        }\n        return \"(\".concat(assignment.days_of_week.join(', '), \")\");\n      };\n      this.buildOfficeModalPayload = function (officeData) {\n        var _this9 = this;\n        var officePayload;\n        officePayload = angular.copy(officeData.office);\n        this.hydrateOfficePayload(officePayload, officeData);\n        officePayload.submitPromise = null;\n        officePayload.handlers = {\n          prepareNewAssignmentDraft: function prepareNewAssignmentDraft(payload) {\n            return _this9.prepareNewAssignmentDraft(payload);\n          },\n          prepareEditAssignmentDraft: function prepareEditAssignmentDraft(payload, assignment) {\n            return _this9.prepareEditAssignmentDraft(payload, assignment);\n          },\n          isDaySelected: function isDaySelected(payload, dayValue) {\n            return _this9.isDaySelected(payload, dayValue);\n          },\n          getAssignmentDayMode: function getAssignmentDayMode(payload) {\n            return _this9.getAssignmentDayMode(payload);\n          },\n          toggleAssignmentDay: function toggleAssignmentDay(payload, dayValue) {\n            return _this9.toggleAssignmentDay(payload, dayValue);\n          },\n          setAssignmentDayMode: function setAssignmentDayMode(payload, mode) {\n            return _this9.setAssignmentDayMode(payload, mode);\n          },\n          setAssignmentType: function setAssignmentType(payload, assignmentPayload, assignmentType) {\n            return _this9.setAssignmentType(payload, assignmentPayload, assignmentType);\n          },\n          setAssignmentUser: function setAssignmentUser(payload, assignmentPayload, userId) {\n            return _this9.setAssignmentUser(payload, assignmentPayload, userId);\n          },\n          saveAssignment: function saveAssignment(payload, assignmentPayload) {\n            return _this9.saveAssignment(payload, assignmentPayload);\n          },\n          deleteAssignment: function deleteAssignment(payload, assignment) {\n            return _this9.deleteAssignment(payload, assignment);\n          },\n          saveOfficeSetting: function () {\n            var _saveOfficeSetting = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(payload, resolveModal) {\n              var wasSaved;\n              return regeneratorRuntime.wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    _context9.next = 2;\n                    return _this9.saveOfficeSetting(payload);\n                  case 2:\n                    wasSaved = _context9.sent;\n                    if (wasSaved && _.isFunction(resolveModal)) {\n                      resolveModal(true);\n                    }\n                    return _context9.abrupt(\"return\", wasSaved);\n                  case 5:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n            function saveOfficeSetting(_x9, _x10) {\n              return _saveOfficeSetting.apply(this, arguments);\n            }\n            return saveOfficeSetting;\n          }(),\n          getAssignmentDaysText: function getAssignmentDaysText(assignment) {\n            return _this9.getAssignmentDaysText(assignment);\n          }\n        };\n        return officePayload;\n      };\n      this.getOfficeModalHeaderText = function (office, sectionLabel) {\n        return _.compact([office != null ? office.enterprise_customer_name : void 0, office != null ? office.office_name : void 0, sectionLabel]).join(' - ');\n      };\n      this.openAssignmentsModal = /*#__PURE__*/function () {\n        var _ref9 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(office) {\n          var modalDefaults, modalOptions, officeData, officePayload, result;\n          return regeneratorRuntime.wrap(function _callee10$(_context10) {\n            while (1) switch (_context10.prev = _context10.next) {\n              case 0:\n                _context10.next = 2;\n                return this.loadOfficeData(office);\n              case 2:\n                officeData = _context10.sent;\n                if (officeData) {\n                  _context10.next = 5;\n                  break;\n                }\n                return _context10.abrupt(\"return\");\n              case 5:\n                officePayload = this.buildOfficeModalPayload(officeData);\n                officePayload.canEditClinicalMonitoring = this.canEditClinicalMonitoring;\n                modalDefaults = {\n                  backdrop: 'static',\n                  keyboard: true,\n                  modalFade: true,\n                  windowClass: 'clinical-assignment-office-modal',\n                  templateUrl: 'app/components/portal/clinical-assignments/edit-assignment.modal.html'\n                };\n                modalOptions = {\n                  headerText: this.getOfficeModalHeaderText(office, 'Assignments'),\n                  closeButtonText: 'Cancel',\n                  actionButtonText: 'Close',\n                  payload: officePayload\n                };\n                _context10.next = 11;\n                return ModalService.showModal(modalDefaults, modalOptions).result;\n              case 11:\n                result = _context10.sent;\n                if (!result) {\n                  _context10.next = 16;\n                  break;\n                }\n                _context10.next = 15;\n                return this.refreshOfficeList();\n              case 15:\n                return _context10.abrupt(\"return\", _context10.sent);\n              case 16:\n              case \"end\":\n                return _context10.stop();\n            }\n          }, _callee10, this);\n        }));\n        return function (_x11) {\n          return _ref9.apply(this, arguments);\n        };\n      }();\n      this.openConfigurationModal = /*#__PURE__*/function () {\n        var _ref10 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(office) {\n          var error, modalDefaults, modalOptions, officeData, officePayload, ref, ref1, ref2, result;\n          return regeneratorRuntime.wrap(function _callee11$(_context11) {\n            while (1) switch (_context11.prev = _context11.next) {\n              case 0:\n                _context11.next = 2;\n                return this.loadOfficeData(office);\n              case 2:\n                officeData = _context11.sent;\n                if (officeData) {\n                  _context11.next = 5;\n                  break;\n                }\n                return _context11.abrupt(\"return\");\n              case 5:\n                officePayload = this.buildOfficeModalPayload(officeData);\n                officePayload.canEditClinicalMonitoring = this.canEditClinicalMonitoring;\n                modalDefaults = {\n                  backdrop: 'static',\n                  keyboard: true,\n                  modalFade: true,\n                  windowClass: 'clinical-assignment-office-modal',\n                  templateUrl: 'app/components/portal/clinical-assignments/edit-configuration.modal.html'\n                };\n                modalOptions = {\n                  headerText: this.getOfficeModalHeaderText(office, 'Configuration'),\n                  closeButtonText: 'Cancel',\n                  actionButtonText: this.canEditClinicalMonitoring ? 'Save' : 'Close',\n                  payload: officePayload\n                };\n                _context11.next = 11;\n                return ModalService.showModal(modalDefaults, modalOptions).result;\n              case 11:\n                result = _context11.sent;\n                if (result) {\n                  _context11.next = 14;\n                  break;\n                }\n                return _context11.abrupt(\"return\");\n              case 14:\n                _context11.prev = 14;\n                _context11.next = 17;\n                return this.refreshOfficeList();\n              case 17:\n                return _context11.abrupt(\"return\", _context11.sent);\n              case 20:\n                _context11.prev = 20;\n                _context11.t0 = _context11[\"catch\"](14);\n                error = _context11.t0;\n                return _context11.abrupt(\"return\", NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.message : void 0 : void 0 : void 0) || error));\n              case 24:\n              case \"end\":\n                return _context11.stop();\n            }\n          }, _callee11, this, [[14, 20]]);\n        }));\n        return function (_x12) {\n          return _ref10.apply(this, arguments);\n        };\n      }();\n      this.isSortSelected = function (columnKey) {\n        return this.sortField === columnKey;\n      };\n      this.getSortIcon = function (columnKey) {\n        if (this.isSortSelected(columnKey) && this.sortDir === 'ASC') {\n          return 'fa-chevron-up';\n        } else {\n          return 'fa-chevron-down';\n        }\n      };\n      this.isColumnSortable = function (column) {\n        return (column != null ? column.sortable : void 0) !== false;\n      };\n      this.setSort = /*#__PURE__*/function () {\n        var _ref11 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(columnKey) {\n          return regeneratorRuntime.wrap(function _callee12$(_context12) {\n            while (1) switch (_context12.prev = _context12.next) {\n              case 0:\n                if (this.sortField === columnKey) {\n                  this.sortDir = this.sortDir === 'ASC' ? 'DESC' : 'ASC';\n                } else {\n                  this.sortField = columnKey;\n                  this.sortDir = 'ASC';\n                }\n                this.pageNumber = 1;\n                _context12.next = 4;\n                return this.refreshOfficeList();\n              case 4:\n                return _context12.abrupt(\"return\", _context12.sent);\n              case 5:\n              case \"end\":\n                return _context12.stop();\n            }\n          }, _callee12, this);\n        }));\n        return function (_x13) {\n          return _ref11.apply(this, arguments);\n        };\n      }();\n      this.changePagination = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13() {\n        return regeneratorRuntime.wrap(function _callee13$(_context13) {\n          while (1) switch (_context13.prev = _context13.next) {\n            case 0:\n              this.pageNumber = 1;\n              _context13.next = 3;\n              return this.refreshOfficeList();\n            case 3:\n              return _context13.abrupt(\"return\", _context13.sent);\n            case 4:\n            case \"end\":\n              return _context13.stop();\n          }\n        }, _callee13, this);\n      }));\n      this.goToPage = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14() {\n        return regeneratorRuntime.wrap(function _callee14$(_context14) {\n          while (1) switch (_context14.prev = _context14.next) {\n            case 0:\n              _context14.next = 2;\n              return this.refreshOfficeList();\n            case 2:\n              return _context14.abrupt(\"return\", _context14.sent);\n            case 3:\n            case \"end\":\n              return _context14.stop();\n          }\n        }, _callee14, this);\n      }));\n      this.search = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15() {\n        return regeneratorRuntime.wrap(function _callee15$(_context15) {\n          while (1) switch (_context15.prev = _context15.next) {\n            case 0:\n              this.pageNumber = 1;\n              _context15.next = 3;\n              return this.refreshOfficeList();\n            case 3:\n              return _context15.abrupt(\"return\", _context15.sent);\n            case 4:\n            case \"end\":\n              return _context15.stop();\n          }\n        }, _callee15, this);\n      }));\n      this.clearSearch = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16() {\n        return regeneratorRuntime.wrap(function _callee16$(_context16) {\n          while (1) switch (_context16.prev = _context16.next) {\n            case 0:\n              this.searchQuery = '';\n              _context16.next = 3;\n              return this.search();\n            case 3:\n              return _context16.abrupt(\"return\", _context16.sent);\n            case 4:\n            case \"end\":\n              return _context16.stop();\n          }\n        }, _callee16, this);\n      }));\n      this.getCellValue = function (office, columnKey) {\n        switch (columnKey) {\n          case 'practice':\n            return office.enterprise_customer_name;\n          case 'communications':\n            return office.communications_names;\n          case 'btrs':\n            return office.btrs_names;\n          case 'rpm_patients':\n            return office.rpm_patient_count;\n          case 'ccm_patients':\n            return office.ccm_patient_count;\n          default:\n            return '';\n        }\n      };\n      this.getDisplayValue = function (value) {\n        if (value === 0) {\n          return value;\n        }\n        return value || '—';\n      };\n    },\n    templateUrl: 'app/components/portal/clinical-assignments/clinical-assignments.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name accountSettings.directive:accountSettings\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} eUserProfile this enterprise userProfile\n   * @param {object} enterpriseCustomer the practice\n   * @param {object} enterpriseInvites providers invited to the practice\n   * @param {object} providers the providers for this practice\n   * @description\n   * Abstract parent component for account settings section of portal\n   */\n  angular.module('accountSettings').component('accountSettings', {\n    bindings: {\n      user: '<',\n      eUserProfile: '<',\n      enterpriseCustomer: '<',\n      enterpriseInvites: '<',\n      providers: '<',\n      practiceRoles: '<',\n      features: '<',\n      careManagerRole: '<',\n      groupList: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, EnterpriseInvitationsService, NotificationsService, $stateParams) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('accountSettings');\n        $log.log('account-settings component loaded');\n        $log.log('this.eUserProfile', this.eUserProfile);\n        $log.log('enterpriseInvites', this.enterpriseInvites);\n        $log.log('providers', this.providers);\n        this.addDeviceEdit = false;\n        this.notificationSettingsEdit = false;\n        this.authenticationInfoEdit = false;\n        this.eOfficeEdit = false;\n        this.activeTab = $stateParams.account_settings_page || 'contact';\n        return this.deregisterListener = $rootScope.$on('enterprise_invitations_get_all', function (event, payload) {\n          $log.log('enterprise_invitations_get_all');\n          return _this.getAllEnterpriseInvitations();\n        });\n      };\n      this.getAllEnterpriseInvitations = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              _context.next = 3;\n              return EnterpriseInvitationsService.getAll(this.enterpriseCustomer.id);\n            case 3:\n              this.enterpriseInvites = _context.sent;\n              return _context.abrupt(\"return\", $log.log('enterpriseInvites', this.enterpriseInvites));\n            case 7:\n              _context.prev = 7;\n              _context.t0 = _context[\"catch\"](0);\n              error = _context.t0;\n              $log.log('error', error);\n              return _context.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.message));\n            case 12:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[0, 7]]);\n      }));\n      this.$onDestroy = function () {\n        return this.deregisterListener();\n      };\n    },\n    templateUrl: 'app/components/portal/account-settings/account-settings.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('claims', []);\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name claims.directive:claimsList\n   * @restrict E\n   * @param {array} claims the claims list\n   * @param {string} enterpriseCustomerId the uuid of the enterprise customer whose claims are loaded\n   * @description\n   * Displays a claims list\n   */\n  var indexOf = [].indexOf;\n  angular.module('claims').component('claimsList', {\n    bindings: {\n      claims: '<',\n      currentReportingPeriod: '<',\n      enterpriseCustomer: '<',\n      biller: '<',\n      user: '=',\n      ccmEnabled: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(env, $log, $state, $stateParams, $uibModal, $filter, $window, PER_PAGE, NotificationsService, EInsuranceClaimsService, EUserProfilesService, CptFeeService, uuid4, AuthService, FeaturesService, IntercomService, OfficeService, EhrIntegrationService, ModalService) {\n      var _this4 = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var dateRange, endDate, now, provider_offices, ref, startDate;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.isExportCollapsed = true;\n              this.assignClaimObservationReportLinkId();\n              this.enterpriseCustomerId = this.enterpriseCustomer.id;\n              this.ehrSubmitTooltipText = $filter('translate')(((ref = this.enterpriseCustomer.ehr_type) != null ? ref.charge_id_text : void 0) || 'PORTAL.ENTERPRISE.CLAIMS.DEFAULT_EHR_SUBMIT_TOOLTIP_TEXT');\n              this.isInternalUser = AuthService.isInternal();\n              $log = $log.getInstance('claimsList');\n              $log.log('claimsList component loaded');\n              $log.log('this.claims', this.claims);\n              _context.next = 10;\n              return FeaturesService.getAll(this.enterpriseCustomer.id);\n            case 10:\n              this.features = _context.sent;\n              $log.log('$state', $state);\n              this.isDaysOfReadingsCollapsed = true;\n              this.linkToObservationReport = AuthService.isProvider();\n              this.isBillerRoute = false;\n              if ($state.current.name.includes('biller.')) {\n                this.isBillerRoute = true;\n              }\n              $log.log('this.isBillerRoute', this.isBillerRoute);\n              this.showSpinner = false;\n              this.count = this.claims.headers('X-Total-Count');\n              this.itemsPerPage = PER_PAGE.CLAIMS;\n              this.pageNumber = $stateParams.page || 1;\n              this.optionsForPagination = [{\n                label: '10',\n                value: 10\n              }, {\n                label: '25',\n                value: 25\n              }, {\n                label: '50',\n                value: 50\n              }, {\n                label: '100',\n                value: 100\n              }];\n              //Date filter\n              now = luxon.DateTime.local();\n              startDate = now.startOf('month').minus({\n                months: 1\n              });\n              endDate = now.endOf('month');\n              this.initDatePicker(startDate, endDate);\n              // Date picker, date filter and query string initialized with same data\n              dateRange = {\n                'during': startDate,\n                'and': endDate\n              };\n              this.queryString = {\n                date_of_service: dateRange,\n                _page: this.pageNumber,\n                _perPage: this.itemsPerPage\n              };\n              //  Primary physician filter\n              _context.next = 30;\n              return EUserProfilesService.getAllAdmins(this.enterpriseCustomerId).then(function (admins) {\n                return admins;\n              }).catch(function (error) {\n                return $log.log('error', error);\n              });\n            case 30:\n              this.admins = _context.sent;\n              _context.next = 33;\n              return OfficeService.getAll(this.user.user_profile.enterprise_customer_id);\n            case 33:\n              provider_offices = _context.sent;\n              this.optionsForOffice = _.map(provider_offices, function (o) {\n                return {\n                  label: \"\".concat(o.name),\n                  value: o.id\n                };\n              });\n              this.optionsForOffice.splice(0, 0, {\n                label: 'All',\n                value: null\n              });\n              this.optionsForPhysicians = _.map(this.admins, function (doc) {\n                return {\n                  label: \"\".concat(doc.name_first, \" \").concat(doc.name_last),\n                  value: doc.id\n                };\n              });\n              this.optionsForPhysicians.splice(0, 0, {\n                label: 'All',\n                value: null\n              });\n              // CPT Fees filter\n              // http://dotansimha.github.io/angularjs-dropdown-multiselect/docs/#/main\n              this.optionsForCpt = [{\n                label: '99457',\n                value: 'REPORT' //report\n              }, {\n                label: '99458',\n                value: 'REPORT_EXTENDED' //report extended\n              }, {\n                label: '99454',\n                value: 'SERVICE' //service\n              }, {\n                label: '99453',\n                value: 'SETUP' //setup\n              }, {\n                label: '99470',\n                value: 'INITIAL_REPORT' //initial report\n              }, {\n                label: '99445',\n                value: 'SERVICE_LOW_DOR' //service low dor\n              }];\n              if (this.ccmEnabled) {\n                this.optionsForCpt.push({\n                  label: '99490',\n                  value: 'CCM'\n                }, {\n                  label: '99439',\n                  value: 'CCM_EXTENDED'\n                });\n              }\n              this.cptCodesModel = _toConsumableArray(this.optionsForCpt);\n              // Status filter\n              this.optionsForStatus = [{\n                label: 'All',\n                value: null\n              }, {\n                label: 'Yes',\n                value: '{\"gt\":\"1980-01-01\"}'\n              }, {\n                label: 'Yes - automatically',\n                value: {\n                  submitted_at: '{\"gt\":\"1980-01-01\"}',\n                  ehr_charge_id: '{\"not\":\"null\"}'\n                }\n              }, {\n                label: 'No',\n                value: '{\"eq\":\"null\"}'\n              }];\n              // Issue filter FUTURE FEATURE\n              this.optionsForIssue = [{\n                label: 'All Issues',\n                value: null\n              }, {\n                label: 'Issue',\n                value: 'Y'\n              }, {\n                label: 'No Issue',\n                value: 'N'\n              }, {\n                label: 'Resolved',\n                value: 'R'\n              }];\n              // Office fees lookup\n              if (!this.isBillerRoute) {\n                _context.next = 49;\n                break;\n              }\n              _context.next = 46;\n              return CptFeeService.billerGet(this.biller.id, this.user.logged_in_office_id).then(function (fees) {\n                return fees;\n              }).catch(function (error) {\n                return $log.log('error', error);\n              });\n            case 46:\n              this.cpt_fees = _context.sent;\n              _context.next = 52;\n              break;\n            case 49:\n              _context.next = 51;\n              return CptFeeService.get(this.enterpriseCustomerId, this.user.logged_in_office_id).then(function (fees) {\n                return fees;\n              }).catch(function (error) {\n                return $log.log('error', error);\n              });\n            case 51:\n              this.cpt_fees = _context.sent;\n            case 52:\n              // Placeholders for models\n              this.patient_name = null;\n              this.date_of_service = null;\n              this.claim_type = null;\n              this.physician = null;\n              this.submitted = null;\n              this.office = null;\n              if (this.optionsForOffice.length === 2) {\n                // filter down to a single office if user is limited\n                this.office = this.optionsForOffice[1].value;\n              }\n            case 59:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.getDorMetric = function (date_of_service, metrics) {\n        var i, j, k, l, len, len1, metric, minus_a_day;\n        for (j = 0, len = metrics.length; j < len; j++) {\n          metric = metrics[j];\n          if (metric.metric_date === date_of_service) {\n            return metric.metric_value;\n          }\n        }\n        // Look back 5 days for a metric if we can't find one\n        for (i = k = 0; k < 5; i = ++k) {\n          minus_a_day = luxon.DateTime.fromString(date_of_service, 'yyyy-MM-dd').minus({\n            days: 1\n          });\n          date_of_service = minus_a_day.toFormat(\"yyyy-MM-dd\");\n          $log.log(\"minus date_of_service\", date_of_service);\n          for (l = 0, len1 = metrics.length; l < len1; l++) {\n            metric = metrics[l];\n            if (metric.metric_date === date_of_service) {\n              return metric.metric_value;\n            }\n          }\n        }\n        return -1;\n      };\n      this.download = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(useFilters) {\n          var cacheBuster, enrollments, error, filters;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.showSpinner = true;\n                cacheBuster = uuid4.generate();\n                if (useFilters) {\n                  filters = Object.assign({}, this.queryString);\n                  delete filters['_perPage'];\n                  delete filters['_page'];\n                  filters = Object.assign(filters, {\n                    _cacheBuster: cacheBuster,\n                    _packageForDownload: true\n                  });\n                  if (this.dorLow) {\n                    filters = Object.assign(filters, {\n                      _dor_low: this.dorLow\n                    });\n                  }\n                  if (this.dorHigh) {\n                    filters = Object.assign(filters, {\n                      _dor_high: this.dorHigh\n                    });\n                  }\n                } else {\n                  filters = {\n                    _cacheBuster: cacheBuster,\n                    _packageForDownload: true\n                  };\n                  // Put date range back in.  At minimum we need that\n                  filters = Object.assign(filters, {\n                    date_of_service: this.queryString.date_of_service\n                  });\n                }\n                _context2.prev = 3;\n                IntercomService.trackEvent(env.intercom.events.charge_csv_downloaded);\n                _context2.next = 7;\n                return EInsuranceClaimsService.getAll(this.enterpriseCustomerId, filters);\n              case 7:\n                enrollments = _context2.sent;\n                if (enrollments.data.data.url) {\n                  $window.location.href = enrollments.data.data.url;\n                } else {\n                  NotificationsService.error('No data');\n                }\n                _context2.next = 16;\n                break;\n              case 11:\n                _context2.prev = 11;\n                _context2.t0 = _context2[\"catch\"](3);\n                error = _context2.t0;\n                NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n                $log.log('error', error);\n              case 16:\n                this.isExportCollapsed = true;\n                return _context2.abrupt(\"return\", this.showSpinner = false);\n              case 18:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[3, 11]]);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.goToPage = function () {\n        var _this = this;\n        var newQueryString;\n        $log.log('goToPage', this.pageNumber);\n        newQueryString = {\n          _page: this.pageNumber,\n          _perPage: this.itemsPerPage,\n          _sortDir: 'desc',\n          _sortField: 'created_at'\n        };\n        // Maintain query string with all filters when navigating between pages.\n        this.queryString = Object.assign(this.queryString, newQueryString);\n        this.showSpinner = true;\n        return EInsuranceClaimsService.getAll(this.enterpriseCustomerId, this.queryString).then(function (claims) {\n          $state.go('.', {\n            page: _this.pageNumber\n          });\n          _this.claims = claims;\n          _this.assignClaimObservationReportLinkId();\n          $log.log('Claims', claims);\n          _this.count = claims.headers('X-Total-Count');\n          return _this.showSpinner = false;\n        }).catch(function (error) {\n          $log.log('error', error);\n          NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n          return this.showSpinner = false;\n        });\n      };\n      this.setClaimSubmittedDate = function (claim, shouldSubmit) {\n        var claimUpdate;\n        if (shouldSubmit) {\n          claim.submitted_at = new Date();\n        } else {\n          claim.submitted_at = null;\n        }\n        if (this.isBillerRoute) {\n          claimUpdate = EInsuranceClaimsService.billerPut(claim);\n        } else {\n          claimUpdate = EInsuranceClaimsService.put(claim);\n        }\n        return claimUpdate.then(function () {\n          return NotificationsService.success('Claim successfully updated.');\n        }).catch(function (error) {\n          $log.log('error', error);\n          claim.submitted_at = null;\n          return NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n        });\n      };\n      // Pairing uses deactivation_logs (deactivated_at on one row, reactivated_at on a later row).\n      // Eligible deactivations: either strictly before the charge period starts, or during\n      // [periodStart, periodEnd] (e.g. May 7 deactivate / May 8 reactivate during an Apr–May cycle).\n      // Then take the latest eligible deactivation and the earliest matching reactivation after it\n      // (same ordering rules as enterprise billing deactivation_periods SQL).\n      this._luxonFromUnknown = function (v) {\n        if (v == null) {\n          return null;\n        }\n        if (_.isDate(v)) {\n          return luxon.DateTime.fromJSDate(v);\n        } else {\n          return luxon.DateTime.fromISO(v.toString());\n        }\n      };\n      this._isoDateOnly = function (v) {\n        var dt;\n        dt = this._luxonFromUnknown(v);\n        if (dt != null ? dt.isValid : void 0) {\n          return dt.toISODate();\n        } else {\n          return null;\n        }\n      };\n      this.deactivationLogsForClaim = function (claim) {\n        var profile, ref, ref1;\n        profile = claim.patient_user_profile;\n        if (!profile) {\n          return [];\n        }\n        return (ref = (ref1 = profile.deactivation_logs) != null ? ref1 : profile.deactivationLogs) != null ? ref : [];\n      };\n      this._completedPeriod = function (claim) {\n        var ref;\n        return (ref = claim.patient_subscription_completed_period) != null ? ref : claim.patientSubscriptionCompletedPeriod;\n      };\n      this._reportingPeriod = function (claim) {\n        var ref;\n        return (ref = claim.reporting_period) != null ? ref : claim.reportingPeriod;\n      };\n      this.chargePeriodStartIsoDate = function (claim) {\n        var pscp, rp;\n        pscp = this._completedPeriod(claim);\n        if (pscp != null ? pscp.period_started_at : void 0) {\n          return this._luxonFromUnknown(pscp.period_started_at).startOf('day').toISODate();\n        }\n        rp = this._reportingPeriod(claim);\n        if ((rp != null ? rp.cycle_year : void 0) != null && (rp != null ? rp.cycle_month : void 0) != null) {\n          return luxon.DateTime.fromObject({\n            year: rp.cycle_year,\n            month: rp.cycle_month,\n            day: 1\n          }, {\n            zone: 'utc'\n          }).toISODate();\n        }\n        if (claim.date_of_service) {\n          return this._isoDateOnly(claim.date_of_service);\n        }\n        return null;\n      };\n      this.chargePeriodEndIsoDate = function (claim) {\n        var pscp, rp;\n        pscp = this._completedPeriod(claim);\n        if (pscp != null ? pscp.period_ended_at : void 0) {\n          return this._luxonFromUnknown(pscp.period_ended_at).startOf('day').toISODate();\n        }\n        rp = this._reportingPeriod(claim);\n        if ((rp != null ? rp.cycle_year : void 0) != null && (rp != null ? rp.cycle_month : void 0) != null) {\n          return luxon.DateTime.fromObject({\n            year: rp.cycle_year,\n            month: rp.cycle_month,\n            day: 1\n          }, {\n            zone: 'utc'\n          }).endOf('month').startOf('day').toISODate();\n        }\n        if (claim.date_of_service) {\n          return this._isoDateOnly(claim.date_of_service);\n        }\n        return null;\n      };\n      this.deactivationReactivationPairForClaim = function (claim) {\n        var _this2 = this;\n        var d, dCreatedMs, dDeact, deactivationRows, eligibleDeactivations, logs, matching, periodEnd, periodStart, r, reactivationRows;\n        periodStart = this.chargePeriodStartIsoDate(claim);\n        periodEnd = this.chargePeriodEndIsoDate(claim);\n        if (!(periodStart && periodEnd)) {\n          return null;\n        }\n        logs = this.deactivationLogsForClaim(claim);\n        if (_.isEmpty(logs)) {\n          return null;\n        }\n        deactivationRows = _.filter(logs, function (log) {\n          return log.deactivated_at != null;\n        });\n        reactivationRows = _.filter(logs, function (log) {\n          return log.reactivated_at != null;\n        });\n        if (_.isEmpty(deactivationRows) || _.isEmpty(reactivationRows)) {\n          return null;\n        }\n        eligibleDeactivations = _.filter(deactivationRows, function (d) {\n          var dDay, duringPeriod, priorToPeriod;\n          dDay = _this2._isoDateOnly(d.deactivated_at);\n          if (!dDay) {\n            return false;\n          }\n          if (dDay > periodEnd) {\n            return false;\n          }\n          priorToPeriod = dDay < periodStart;\n          duringPeriod = dDay >= periodStart && dDay <= periodEnd;\n          return priorToPeriod || duringPeriod;\n        });\n        if (_.isEmpty(eligibleDeactivations)) {\n          return null;\n        }\n        d = _.maxBy(eligibleDeactivations, function (row) {\n          return _this2._luxonFromUnknown(row.deactivated_at).toMillis();\n        });\n        dDeact = this._isoDateOnly(d.deactivated_at);\n        dCreatedMs = this._luxonFromUnknown(d.created_at).toMillis();\n        matching = _.filter(reactivationRows, function (r) {\n          var rCreatedMs, rDeact;\n          rDeact = _this2._isoDateOnly(r.reactivated_at);\n          rCreatedMs = _this2._luxonFromUnknown(r.created_at).toMillis();\n          return rDeact >= dDeact && rCreatedMs > dCreatedMs;\n        });\n        if (_.isEmpty(matching)) {\n          return null;\n        }\n        r = _.minBy(matching, function (row) {\n          return _this2._luxonFromUnknown(row.reactivated_at).toMillis();\n        });\n        return {\n          deactivatedAt: d.deactivated_at,\n          reactivatedAt: r.reactivated_at\n        };\n      };\n      this.deactivationReactivationTranslateParams = function (claim) {\n        var pair;\n        pair = this.deactivationReactivationPairForClaim(claim);\n        if (!pair) {\n          return null;\n        }\n        return {\n          deactivatedDate: $filter('date')(pair.deactivatedAt, 'MM/dd/yyyy', 'UTC/GMT'),\n          reactivatedDate: $filter('date')(pair.reactivatedAt, 'MM/dd/yyyy', 'UTC/GMT')\n        };\n      };\n      this.showDeactivationReactivationPair = function (claim) {\n        return this.deactivationReactivationTranslateParams(claim) != null;\n      };\n      this.deactivatedFilter = function (claim) {\n        if (claim.patient_user_profile.deactivated_at) {\n          return \"<span class=deactivated>\" + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.DEACTIVATED') + \" \" + $filter('date')(claim.patient_user_profile.deactivated_at, \"MM/dd/yyyy\") + \"</span></p>\";\n        }\n        return \"\";\n      };\n      this.claimFilter = function (claim) {\n        return _.map(claim.diagnosis.codes, 'code').join(', ');\n      };\n      this.medicareFilter = function (claim) {\n        var ref, ref1, ref2;\n        if ((ref = claim.patient_user_profile.ee) != null ? (ref1 = ref.i1) != null ? ref1.policy_num : void 0 : void 0) {\n          return '<p><b>' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.MEDICARE') + '</b>&nbsp;' + ((ref2 = claim.patient_user_profile.ee.i1) != null ? ref2.policy_num : void 0) + '<br/></p>';\n        }\n      };\n      this.medicareAdvantageFilter = function (claim) {\n        var div, first, ref, ref1, ref10, ref11, ref12, ref13, ref14, ref15, ref16, ref17, ref18, ref19, ref2, ref20, ref3, ref4, ref5, ref6, ref7, ref8, ref9, second, third;\n        first = (ref = claim.patient_user_profile.ee) != null ? ref.i1 : void 0;\n        if ((first != null ? first.medicare_advantage_provider_id : void 0) && (first != null ? first.individual_num : void 0) && (first != null ? first.group_num : void 0)) {\n          div = '<p><b>' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.MEDICARE_ADVANTAGE') + '</b><br/>';\n          if (first != null ? (ref1 = first.medicare_advantage_provider) != null ? ref1.name : void 0 : void 0) {\n            div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.INSURER') + ' ' + (first != null ? (ref2 = first.medicare_advantage_provider.name) != null ? ref2.replace(/'/g, '`') : void 0 : void 0) + '<br/>';\n          }\n          div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.INDIVIDUAL_NUMBER') + ' ' + (first != null ? first.individual_num : void 0) + '<br/>';\n          div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.GROUP_NUMBER') + ' ' + (first != null ? first.group_num : void 0) + '<br/>';\n          div = div + '</p>';\n          second = (ref3 = claim.patient_user_profile.ee) != null ? ref3.i2 : void 0;\n          if (second && ((second != null ? second.insurer_name : void 0) || (second != null ? second.group_num : void 0) || (second != null ? second.policy_num : void 0))) {\n            div += '<p><b>' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.SECONDARY') + '</b><br/>';\n            if (second != null ? (ref4 = second.insurer_type) != null ? ref4.name : void 0 : void 0) {\n              div = div + second.insurer_type.name.replace(/'/g, '`') + '<br/>';\n            }\n            if (second != null ? second.insurer_name : void 0) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.NAME') + ' ' + (second != null ? (ref5 = second.insurer_name) != null ? ref5.replace(/'/g, '`') : void 0 : void 0) + '<br/>';\n            }\n            if (second != null ? second.secondary_policy_num : void 0) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICY_NUM') + '&nbsp;' + (second != null ? second.policy_num : void 0) + '<br/>';\n            }\n            if (second != null ? (ref6 = second.medicare_advantage_provider) != null ? ref6.name : void 0 : void 0) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.INSURER') + ' ' + (second != null ? (ref7 = second.medicare_advantage_provider) != null ? (ref8 = ref7.name) != null ? ref8.replace(/'/g, '`') : void 0 : void 0 : void 0) + '<br/>';\n            }\n            div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.INDIVIDUAL_NUMBER') + ' ' + (second != null ? second.individual_num : void 0) + '<br/>';\n            div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.GROUP_NUMBER') + ' ' + (second != null ? second.group_num : void 0) + '</p>';\n            div = div + '<p>' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICY_HOLDER') + '<br/>';\n            if (second != null ? second.secondary_policy_holder_is_patient : void 0) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.SELF');\n            } else {\n              if (second != null ? (ref9 = second.patient_to_policyholder_relationship) != null ? ref9.name : void 0 : void 0) {\n                div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_RELATIONSHIP') + (second != null ? second.patient_to_policyholder_relationship.name : void 0) + '<br/>';\n              }\n              div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_NAME') + (second != null ? (ref10 = second.policyholder_name_first) != null ? ref10.replace(/'/g, '`') : void 0 : void 0) + ' ' + (second != null ? (ref11 = second.policyholder_name_last) != null ? ref11.replace(/'/g, '`') : void 0 : void 0) + '<br/>';\n              if (second != null ? second.policyholder_date_of_birth : void 0) {\n                div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_DOB') + $filter('date')(second != null ? second.policyholder_date_of_birth : void 0, 'mediumDate', 'UTC/GMT') + '<br/>';\n              }\n              if (second != null ? second.policyholder_sex : void 0) {\n                div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_SEX') + (second != null ? second.policyholder_sex : void 0) + '<br/>';\n              }\n            }\n            div = div + '</p>';\n          }\n          third = (ref12 = claim.patient_user_profile) != null ? (ref13 = ref12.ee) != null ? ref13.i3 : void 0 : void 0;\n          if (third && ((third != null ? third.insurer_name : void 0) || (third != null ? third.group_num : void 0) || (third != null ? third.policy_num : void 0))) {\n            div += '<p><b>' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.TERTIARY') + '</b><br/>';\n            if (third != null ? (ref14 = third.insurer_type) != null ? ref14.name : void 0 : void 0) {\n              div = div + ((ref15 = third.insurer_type.name) != null ? ref15.replace(/'/g, '`') : void 0) + '<br/>';\n            }\n            if (third.insurer_name) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.NAME') + ' ' + (third != null ? third.insurer_name.replace(/'/g, '`') : void 0) + '<br/>';\n            }\n            if (third.policy_num) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICY_NUM') + '&nbsp;' + (third != null ? third.policy_num : void 0) + '<br/>';\n            }\n            if (third != null ? (ref16 = third.medicare_advantage_provider) != null ? ref16.name : void 0 : void 0) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.INSURER') + ' ' + ((ref17 = third.medicare_advantage_provider.name) != null ? ref17.replace(/'/g, '`') : void 0) + '<br/>';\n            }\n            div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.INDIVIDUAL_NUMBER') + ' ' + (third != null ? third.individual_num : void 0) + '<br/>';\n            div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.GROUP_NUMBER') + ' ' + (third != null ? third.group_num : void 0) + '</p>';\n            div = div + '<p>' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICY_HOLDER') + '<br/>';\n            if (third != null ? third.policy_holder_is_patient : void 0) {\n              div = div + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.SELF');\n            } else {\n              if (third != null ? (ref18 = third.patient_to_policyholder_relationship) != null ? ref18.name : void 0 : void 0) {\n                div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_RELATIONSHIP') + third.patient_to_policyholder_relationship.name + '<br/>';\n              }\n              div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_NAME') + (third != null ? (ref19 = third.policyholder_name_first) != null ? ref19.replace(/'/g, '`') : void 0 : void 0) + ' ' + (third != null ? (ref20 = third.policyholder_name_last) != null ? ref20.replace(/'/g, '`') : void 0 : void 0) + '<br/>';\n              if (third != null ? third.policyholder_date_of_birth : void 0) {\n                div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_DOB') + $filter('date')(third != null ? third.policyholder_date_of_birth : void 0, 'mediumDate', 'UTC/GMT') + '<br/>';\n              }\n              if (third != null ? third.policyholder_sex : void 0) {\n                div = div + ' -' + $filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.POLICYHOLDER_SEX') + (third != null ? third.policyholder_sex : void 0) + '<br/>';\n              }\n            }\n            div = div + '</p>';\n          }\n          return div;\n        }\n      };\n      this.cptCode = function (services) {\n        return services.codes[0].code;\n      };\n      this.cptFee = function (services) {\n        if (services.codes[0].code && this.cpt_fees) {\n          return '$' + _.find(this.cpt_fees, {\n            code: services.codes[0].code\n          }).non_facility_price_cents / 100;\n        }\n      };\n      this.isFlagged = function (claim) {\n        if (claim.flag_date === null) {\n          return 'unflagged';\n        } else {\n          return 'flagged';\n        }\n      };\n      this.copyClaimToClipboard = function (claim) {\n        var selBox, val;\n        val = \"\".concat(claim.patient_name, \" ( \").concat(claim.patient_user_profile.gender, \" )\\n\").concat($filter('translate')('PORTAL.ENTERPRISE.CLAIMS.COPY_CLAIM.DOB'), \" \").concat(claim.patient_user_profile.date_of_birth, \"\\n\").concat($filter('translate')('PORTAL.ENTERPRISE.CLAIMS.COPY_CLAIM.CPT'), \" \").concat(this.cptCode(claim.services), \"\\n\").concat($filter('translate')('PORTAL.ENTERPRISE.CLAIMS.COPY_CLAIM.DATE_OF_SERVICE'), \" \").concat(claim.date_of_service);\n        selBox = document.createElement('textarea');\n        selBox.style.position = 'fixed';\n        selBox.style.left = '0';\n        selBox.style.top = '0';\n        selBox.style.opacity = '0';\n        selBox.value = val;\n        document.body.appendChild(selBox);\n        selBox.focus();\n        selBox.select();\n        document.execCommand('copy');\n        return document.body.removeChild(selBox);\n      };\n      this.initDatePicker = function (startDate, endDate) {\n        var _this3 = this;\n        /*\n         * wrapper docs: https://github.com/fragaria/angular-daterangepicker\n         * docs: http://www.daterangepicker.com/\n        Internally the daterangepicker plugin converts all objects to moment.js objects.\n        As we are going to remove moment.js as a project dependency, we're using luxon and\n        adding the isValid method to fool the plugin into thinking the objects we pass in to\n        startDate and endDate are moment objects. After they're passed in, they're automatically\n        converted to moment.js objects and it can be assumed they are that type when referencing\n        them in datePicker event callback functions.\n         */\n        var jsEndDate, jsStartDate;\n        $log.log('initDatePicker - start', startDate);\n        $log.log('initDatePicker - end', endDate);\n        jsStartDate = startDate.toJSDate();\n        jsEndDate = endDate.toJSDate();\n        jsStartDate.isValid = function () {\n          return true;\n        };\n        jsEndDate.isValid = function () {\n          return true;\n        };\n        return this.datePicker = {\n          date: {\n            startDate: jsStartDate,\n            endDate: jsEndDate\n          },\n          minDate: '1/1/2019',\n          maxDate: jsEndDate,\n          picker: null,\n          options: {\n            pickerClasses: 'custom-display',\n            // angular-daterangepicker extra\n            buttonClasses: 'btn',\n            applyButtonClasses: 'btn-primary',\n            cancelButtonClasses: 'btn-danger',\n            locale: {\n              applyLabel: 'Save',\n              cancelLabel: 'Cancel',\n              customRangeLabel: 'Custom range',\n              separator: ' - ',\n              format: \"YYYY-MM-DD\" // will give you 2017-01-06\n            },\n            // format: \"D-MMM-YY\", # will give you 6-Jan-17\n            // format: \"D-MMMM-YY\", # will give you 6-January-17\n            ranges: {\n              'Current Month': [luxon.DateTime.local().startOf('month').toJSDate(), luxon.DateTime.local().endOf('month').toJSDate()],\n              'Last Month': [luxon.DateTime.local().startOf('month').minus({\n                months: 1\n              }).toJSDate(), luxon.DateTime.local().endOf('month').minus({\n                months: 1\n              }).plus({\n                days: 1\n              }).toJSDate()],\n              'Last 7 Days': [luxon.DateTime.local().minus({\n                days: 7\n              }).toJSDate(), luxon.DateTime.local().toJSDate()],\n              'Last 30 Days': [luxon.DateTime.local().minus({\n                days: 29\n              }).toJSDate(), luxon.DateTime.local().toJSDate()]\n            },\n            eventHandlers: {\n              'apply.daterangepicker': function applyDaterangepicker(event, picker) {\n                var payload;\n                $log.log('applying date range', event, picker, _this3.datePicker.date);\n                payload = {\n                  model: {\n                    'during': _this3.datePicker.date.startDate.local().format('YYYY-MM-DD'),\n                    'and': _this3.datePicker.date.endDate.local().format('YYYY-MM-DD')\n                  }\n                };\n                //moment(this.datePicker.date.endDate).subtract(1, 'd')\n                return _this3.onChange('date_of_service', payload);\n              }\n            }\n          }\n        };\n      };\n      this.cptChange = function () {\n        $log.log(\"cptOptions\", _this4.cptCodesModel);\n        if (_this4.cptCodesModel && _this4.cptCodesModel.length > 0 && _this4.cptCodesModel.length !== 6) {\n          Object.assign(_this4.queryString, {\n            'claim_type': {\n              \"in\": _.map(_this4.cptCodesModel, 'value')\n            }\n          });\n        } else {\n          delete _this4.queryString['claim_type'];\n        }\n        return EInsuranceClaimsService.getAll(_this4.enterpriseCustomerId, _this4.queryString).then(function (claims) {\n          $state.go('.', {\n            page: _this4.pageNumber\n          });\n          _this4.claims = claims;\n          _this4.assignClaimObservationReportLinkId();\n          _this4.count = claims.headers('X-Total-Count');\n          return _this4.showSpinner = false;\n        }).catch(function (error) {\n          var ref, ref1, ref2;\n          $log.log('error', error);\n          if ((error != null ? error.xhrStatus : void 0) !== 'abort') {\n            NotificationsService.error((error != null ? (ref = error.data) != null ? ref.errorMessage : void 0 : void 0) || (error != null ? (ref1 = error.data) != null ? (ref2 = ref1.data) != null ? ref2.errorMessage : void 0 : void 0 : void 0));\n          }\n          return _this4.showSpinner = false;\n        });\n      };\n      this.getDorTooltop = function (userProfile, metricValue) {\n        return \"<div class=wrap>\".concat(metricValue, \" \").concat($filter('translate')('PORTAL.ENTERPRISE.CLAIMS.DAYSOFREADINGS.POPOVERCOPY'));\n      };\n      this.dorRange = function () {\n        var highToShow, lowToShow;\n        if (!this.dorLow) {\n          lowToShow = 0;\n        } else {\n          lowToShow = this.dorLow;\n        }\n        if (!this.dorHigh) {\n          highToShow = 31; // Max days in a month\n        } else {\n          highToShow = this.dorHigh;\n        }\n        return lowToShow.toString() + \"-\" + highToShow.toString();\n      };\n      this.onChange = function (property, payload) {\n        var _this5 = this;\n        var dateRange, formatString, key, newQueryString, ref, ref1, val;\n        if (payload) {\n          this.pageNumber = 1;\n          this.showSpinner = true;\n          $log.log('payload', payload, property);\n          // Remove filter property if it exists in the query string and if payload value is falsy\n          if (this.queryString[property] && (payload.model === null || payload.model === '')) {\n            delete this.queryString[property];\n            if (this.queryString.ehr_charge_id) {\n              delete this.queryString.ehr_charge_id;\n            }\n            if (this.queryString.ehr_charge_id) {\n              delete this.queryString.dor_limits;\n            }\n          }\n          newQueryString = {\n            _page: this.pageNumber,\n            _perPage: this.itemsPerPage\n          };\n          // as per comment above datepicker uses moment.js internally and this works for any callbacks,\n          // but this does not always work when referencing the object directly, so we need to check the type and choose the appropriate format\n          // note that the JS Date and moment formats both create dates like 2022-08-30\n          formatString = this.datePicker.date.startDate instanceof Date ? 'Y-m-d' : 'YYYY-MM-DD';\n          dateRange = {\n            model: {\n              'during': this.datePicker.date.startDate.format(formatString),\n              'and': this.datePicker.date.endDate.format(formatString)\n            }\n          };\n          newQueryString.date_of_service = dateRange.model;\n          // Assign new filter property.\n          // RPM time filter can have a valid value of 0, so make 0 a truthy value in this case and pass through.\n          if (payload.model !== null && payload.model !== '') {\n            $log.log('payload.model', payload.model);\n            // Check if we are doing and AMD submitted filter (uses two different properties)\n            if (_typeof(payload.model) === 'object' && indexOf.call(Object.keys(payload.model), 'ehr_charge_id') >= 0) {\n              $log.log('Setting up AMD submitted filter.');\n              ref = payload.model;\n              for (key in ref) {\n                val = ref[key];\n                if (key !== '$$hashKey') {\n                  newQueryString[key] = val;\n                }\n              }\n            } else {\n              newQueryString[property] = payload.model;\n            }\n          }\n          if (this.cptCodesModel && this.cptCodesModel.length > 0 && this.cptCodesModel.length !== 6) {\n            Object.assign(this.queryString, {\n              'claim_type': {\n                \"in\": _.map(this.cptCodesModel, 'value')\n              }\n            });\n          }\n          if (property === 'dor_limits' || property === 'dorLow' || property === 'dorHigh') {\n            delete newQueryString.dor_limits;\n            delete newQueryString.dorHigh;\n            delete newQueryString.dorLow;\n            if (payload.model !== '') {\n              if (property === 'dorLow') {\n                this.dorLow = payload.model;\n              }\n              if (property === 'dorHigh') {\n                this.dorHigh = payload.model;\n              }\n              if (this.dorLow || this.dorHigh) {\n                newQueryString._dor_low = this.dorLow;\n                newQueryString._dor_high = this.dorHigh;\n              }\n            } else {\n              if (property === 'dorHigh') {\n                delete this.queryString._dor_high;\n                this.dorHigh = void 0;\n              }\n              if (property === 'dorLow') {\n                if (!this.dorHigh) {\n                  delete this.queryString._dor_low;\n                  this.dorLow = void 0;\n                } else {\n                  this.dorLow = 0;\n                }\n              }\n            }\n          }\n          if (property === 'submitted_at' && (payload != null ? payload.model : void 0) && indexOf.call(Object.keys(payload != null ? payload.model : void 0), 'ehr_charge_id') < 0) {\n            if ((ref1 = this.queryString) != null) {\n              delete ref1.ehr_charge_id;\n            }\n          }\n          $log.log('newQueryString: ', newQueryString);\n          $log.log('this.queryString: ', this.queryString);\n          // Allows for multiple filters at once.\n          this.queryString = Object.assign(this.queryString, newQueryString);\n          return EInsuranceClaimsService.getAll(this.enterpriseCustomerId, this.queryString).then(function (claims) {\n            $state.go('.', {\n              page: _this5.pageNumber\n            });\n            _this5.claims = claims;\n            _this5.assignClaimObservationReportLinkId();\n            _this5.count = claims.headers('X-Total-Count');\n            return _this5.showSpinner = false;\n          }).catch(function (error) {\n            var ref2, ref3, ref4;\n            $log.log('error', error);\n            if ((error != null ? error.xhrStatus : void 0) !== 'abort') {\n              NotificationsService.error((error != null ? (ref2 = error.data) != null ? ref2.errorMessage : void 0 : void 0) || (error != null ? (ref3 = error.data) != null ? (ref4 = ref3.data) != null ? ref4.errorMessage : void 0 : void 0 : void 0));\n            }\n            return _this5.showSpinner = false;\n          });\n        }\n      };\n      this.setApprovalStatus = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(claim, value) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                claim.is_approved = value;\n                claim.needs_review = false;\n                _context3.prev = 2;\n                if (!this.isBillerRoute) {\n                  _context3.next = 8;\n                  break;\n                }\n                _context3.next = 6;\n                return EInsuranceClaimsService.billerPut(claim);\n              case 6:\n                _context3.next = 10;\n                break;\n              case 8:\n                _context3.next = 10;\n                return EInsuranceClaimsService.put(claim);\n              case 10:\n                return _context3.abrupt(\"return\", NotificationsService.success('Claim successfully updated.'));\n              case 13:\n                _context3.prev = 13;\n                _context3.t0 = _context3[\"catch\"](2);\n                error = _context3.t0;\n                $log.log('error', error);\n                claim.is_approved = null;\n                claim.needs_review = true;\n                return _context3.abrupt(\"return\", NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage));\n              case 20:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[2, 13]]);\n        }));\n        return function (_x2, _x3) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.assignClaimObservationReportLinkId = function () {\n        var claim, claimEnd, claimStart, cycle_month, cycle_year, firstCode, j, len, ref, ref1, ref2, ref3, ref4, report, reportEnd, reportStart, results, wantedService;\n        ref = this.claims.data.data;\n        results = [];\n        for (j = 0, len = ref.length; j < len; j++) {\n          claim = ref[j];\n          if (claim.observation_report_timesheet) {\n            claim.observation_report_link_id = claim.observation_report_timesheet.obs_report.id;\n            results.push(claim.observation_report_service = claim.observation_report_timesheet.obs_report.service.name);\n          } else {\n            if (claim.patient_subscription_completed_period) {\n              claimStart = luxon.DateTime.fromISO(claim.patient_subscription_completed_period.period_started_at);\n              claimEnd = luxon.DateTime.fromISO(claim.patient_subscription_completed_period.period_ended_at);\n              firstCode = (ref1 = (ref2 = claim.services) != null ? (ref3 = ref2.codes) != null ? (ref4 = ref3[0]) != null ? ref4.code : void 0 : void 0 : void 0) != null ? ref1 : \"\";\n              wantedService = function () {\n                switch (firstCode) {\n                  case \"99453\":\n                  case \"99454\":\n                  case \"99457\":\n                  case \"99458\":\n                  case \"99470\":\n                  case \"99445\":\n                    return \"RPM\";\n                  default:\n                    return \"CCM\";\n                }\n              }();\n              if (claim.patient_user_profile) {\n                results.push(function () {\n                  var k, len1, ref5, ref6, ref7, results1;\n                  ref6 = (ref5 = claim.patient_user_profile) != null ? ref5.patient_reports : void 0;\n                  results1 = [];\n                  for (k = 0, len1 = ref6.length; k < len1; k++) {\n                    report = ref6[k];\n                    if (!(((ref7 = report.service) != null ? ref7.name : void 0) != null && report.service.name === wantedService)) {\n                      // Ensures we are only processing exact report that matches the claim type\n                      continue;\n                    }\n                    if (report.reporting_period) {\n                      var _report$reporting_per = report.reporting_period;\n                      cycle_month = _report$reporting_per.cycle_month;\n                      cycle_year = _report$reporting_per.cycle_year;\n                      if (claimEnd.year === cycle_year && claimEnd.month === cycle_month) {\n                        claim.observation_report_link_id = report.id;\n                        claim.observation_report_service = report.service.name;\n                        // found the correct report, so we break to prevent overrides by wrong claim types and links\n                        // the next report might just be the wrong service.name so we want to avoid overriding the values already set\n                        break;\n                      } else {\n                        results1.push(void 0);\n                      }\n                    } else if (report.period_started_at && report.period_ended_at != null) {\n                      reportStart = luxon.DateTime.fromISO(report.period_started_at);\n                      reportEnd = luxon.DateTime.fromISO(report.period_ended_at);\n                      if (claimStart != null && reportStart.hasSame(claimStart, \"day\") && reportEnd.hasSame(claimEnd, \"day\")) {\n                        claim.observation_report_link_id = report.id;\n                        claim.observation_report_service = report.service.name;\n                        break;\n                      } else {\n                        results1.push(void 0);\n                      }\n                    } else {\n                      results1.push(void 0);\n                    }\n                  }\n                  return results1;\n                }());\n              } else {\n                results.push(void 0);\n              }\n            } else {\n              results.push(void 0);\n            }\n          }\n        }\n        return results;\n      };\n      this.alignmentFilter = function (claim) {\n        var ee, ref;\n        ee = (ref = claim.patient_user_profile) != null ? ref.ee : void 0;\n        if (ee && ee.align_dos) {\n          if (ee.alignment_start_date) {\n            return \"<p>This patient was brought into alignment on \".concat($filter('date')(ee.alignment_start_date, 'shortDate'), \" </p><hr/>\");\n          }\n          if (!ee.alignment_start_date) {\n            return \"<p>This patient was brought into alignment on \".concat($filter('date')(claim.patient_user_profile.created_at, 'shortDate'), \" </p><hr/>\");\n          }\n        }\n        return \"\";\n      };\n      this.getPatientTooltip = function (claim) {\n        return \"<p> <b>\".concat(claim.patient_name, \"</b><br/> \").concat($filter('uppercase')(claim.patient_user_profile.gender), \", \").concat($filter('date')(claim.patient_user_profile.date_of_birth, 'shortDate'), \", \").concat(this.claimFilter(claim), \" <br/> \").concat($filter('translate')('PORTAL.ENTERPRISE.CLAIMS.POPOVER.RPM_START_DATE'), \": \").concat($filter('date')(claim.patient_user_profile.created_at, 'shortDate'), \" <br/> \").concat(this.deactivatedFilter(claim), \" <hr/> \").concat(this.alignmentFilter(claim), \" <p class=phone> <i class=map-pin></i> \").concat(claim.patient_address_street, \" \").concat(claim.patient_address_city, \", \").concat(claim.patient_address_state, \" \").concat(claim.patient_address_zipcode, \"<br/> </p> <p class=phone> <i class=phone></i> \").concat($filter('bcTelephone')(claim.patient_user_profile.phone_1_number, 'format'), \" <br/> \").concat(this.medicareFilter(claim) || '', \" \").concat(this.medicareAdvantageFilter(claim) || '');\n      };\n      this.showEllkayStatusModal = /*#__PURE__*/function () {\n        var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(claim) {\n          var bodyText, chargeStatus, ellkayRequest, headerText, isSuccess, modalDefaults, modalOptions, ref, response, result, syncedAt;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                _context4.next = 2;\n                return EhrIntegrationService.getEllkayChargeStatus([claim.id]);\n              case 2:\n                response = _context4.sent;\n                isSuccess = (response != null ? response.errorCount : void 0) === 0 && (response != null ? response.successCount : void 0) > 0;\n                if (isSuccess) {\n                  headerText = 'EHR Sync Status';\n                  bodyText = \"<div style='color: #28a745; font-weight: bold; text-align: center; padding: 20px; font-size: 16px;'>Successfully Synced to Practice EHR</div> <div style='text-align: center; padding: 10px 20px; font-size: 14px;'>GetChargeStatus Ellkay call indicates this charge successfully made it the final leg of the trip and was successfully accepted by the destination EHR.</div>\";\n                } else {\n                  headerText = 'EHR Sync Status: Error';\n                  // Extract the first result for display\n                  result = response != null ? (ref = response.results) != null ? ref[0] : void 0 : void 0;\n                  if (result) {\n                    ellkayRequest = result.sendChargeEllkayRequest || 'N/A';\n                    chargeStatus = result.sendChargeEllkayResponse || 'N/A';\n                    syncedAt = result.syncedAt || 'N/A';\n                    bodyText = \"<div style='padding: 20px; font-family: Arial, sans-serif;'> <div style='margin-bottom: 15px;'> <strong style='color: #dc3545;'>Ellkay Charge Status:</strong><br/> <pre style='background: #f5f5f5; padding: 10px; border-radius: 4px; margin-top: 5px; white-space: pre-wrap; font-family: monospace;'>\".concat(JSON.stringify(chargeStatus, null, 2), \"</pre> </div> <div style='margin-bottom: 15px;'> <strong>Ellkay Request:</strong><br/> <pre style='background: #f5f5f5; padding: 10px; border-radius: 4px; margin-top: 5px; white-space: pre-wrap; font-family: monospace;'>\").concat(JSON.stringify(ellkayRequest, null, 2), \"</pre> </div> <div> <strong>Date Synced:</strong> \").concat(syncedAt, \" </div> </div>\");\n                  } else {\n                    bodyText = \"<pre style='white-space: pre-wrap; font-family: monospace; background: #f5f5f5; padding: 10px; border-radius: 4px;'>\".concat(JSON.stringify(response, null, 2), \"</pre>\");\n                  }\n                }\n                modalOptions = {\n                  headerText: headerText,\n                  bodyText: bodyText,\n                  closeButtonText: 'Close',\n                  actionButtonText: 'OK'\n                };\n                // Use a custom template that hides the action button\n                modalDefaults = {\n                  templateUrl: 'app/components/claims/claims-list/ellkay-status-modal.html'\n                };\n                return _context4.abrupt(\"return\", ModalService.showModal(modalDefaults, modalOptions));\n              case 8:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4);\n        }));\n        return function (_x4) {\n          return _ref4.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/components/claims/claims-list/claims-list.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name claims.directive:claim\n   * @restrict E\n   * @param {array} claims the practice claims\n   * @description\n   * Displays enterprise claims\n   */\n  angular.module('claims').component('claim', {\n    bindings: {\n      claim: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, EInsuranceClaimsService, NotificationsService) {\n      $log = $log.getInstance('claim');\n      $log.log('claim component loaded');\n      this.$onInit = function () {\n        $log.log('this.claim', this.claim);\n        this.isBillerRoute = false;\n        if ($state.current.name.includes('biller.')) {\n          this.isBillerRoute = true;\n        }\n        $log.log('this.isBillerRoute', this.isBillerRoute);\n      };\n      this.setClaimSubmittedDate = function (shouldSubmit) {\n        var claimUpdate;\n        this.claim.submitted_at = null;\n        if (shouldSubmit) {\n          this.claim.submitted_at = new Date();\n        }\n        if (this.isBillerRoute) {\n          claimUpdate = EInsuranceClaimsService.billerPut(this.claim);\n        } else {\n          claimUpdate = EInsuranceClaimsService.put(this.claim);\n        }\n        return claimUpdate.then(function () {\n          return NotificationsService.success('Claim successfully updated.');\n        }).catch(function (error) {\n          $log.log('error', error);\n          this.claim.submitted_at = null;\n          return NotificationsService.error(error.data.errorMessage || error.data.data.errorMessage);\n        });\n      };\n    },\n    templateUrl: 'app/components/claims/claim/claim.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('account', []);\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('account').component('redoxLaunch', {\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, $timeout, AuthService, PatientChartNavigationService, RedoxLaunchService, ReportingPeriodService, UserService, NotificationsService) {\n      'ngInject';\n\n      var _this = this;\n      var PATIENT_REPORTING_TARGET_STATE, PATIENT_REPORT_UNAVAILABLE_STATUS, destroyed, resolveTarget, safetyTimer, targetTransition;\n      destroyed = false;\n      safetyTimer = null;\n      targetTransition = null;\n      PATIENT_REPORTING_TARGET_STATE = 'redox.patient-reporting-launch';\n      PATIENT_REPORT_UNAVAILABLE_STATUS = 'patient_report_unavailable';\n      resolveTarget = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(session, user) {\n          var currentReportingPeriod, patientUserProfileId, report, targetParams, targetState;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                targetState = session.targetState || 'enterprise.dashboard';\n                targetParams = session.targetParams || {};\n                if (!(targetState !== PATIENT_REPORTING_TARGET_STATE)) {\n                  _context.next = 4;\n                  break;\n                }\n                return _context.abrupt(\"return\", {\n                  state: targetState,\n                  params: targetParams\n                });\n              case 4:\n                patientUserProfileId = targetParams.user_profile_id;\n                if (patientUserProfileId) {\n                  _context.next = 7;\n                  break;\n                }\n                return _context.abrupt(\"return\", {\n                  state: 'enterprise.dashboard',\n                  params: {\n                    redox_launch_status: PATIENT_REPORT_UNAVAILABLE_STATUS\n                  }\n                });\n              case 7:\n                _context.next = 9;\n                return ReportingPeriodService.getCurrentReportingPeriodForLocalTime();\n              case 9:\n                currentReportingPeriod = _context.sent;\n                _context.next = 12;\n                return PatientChartNavigationService.getCurrentObservationReport(user.user_profile.enterprise_customer_id, patientUserProfileId, currentReportingPeriod.id, 'RPM');\n              case 12:\n                report = _context.sent;\n                if (!(report != null ? report.id : void 0)) {\n                  _context.next = 15;\n                  break;\n                }\n                return _context.abrupt(\"return\", {\n                  state: 'enterprise.observation_report',\n                  params: {\n                    user_profile_id: patientUserProfileId,\n                    observation_report_id: report.id\n                  }\n                });\n              case 15:\n                console.log('Redox launch patient report unavailable; showing dashboard.');\n                return _context.abrupt(\"return\", {\n                  state: 'enterprise.dashboard',\n                  params: {\n                    redox_launch_status: PATIENT_REPORT_UNAVAILABLE_STATUS\n                  }\n                });\n              case 17:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        return function resolveTarget(_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var code, error, profileData, ref, session, target, timedOut, transitionError, user;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log = $log.getInstance('redoxLaunch');\n              _this.isError = false;\n              _this.errorMessage = null;\n              code = $stateParams.code;\n              if (code) {\n                _context2.next = 7;\n                break;\n              }\n              _this.showError('Missing launch code. Please launch 100Plus from your EHR again.');\n              return _context2.abrupt(\"return\");\n            case 7:\n              // Keep the callback from hanging if the one-time launch code exchange or\n              // profile bootstrap stalls. The backend code has its own short TTL.\n              timedOut = false;\n              safetyTimer = $timeout(function () {\n                if (destroyed) {\n                  return;\n                }\n                timedOut = true;\n                if (targetTransition != null ? targetTransition.transition : void 0) {\n                  targetTransition.transition.abort();\n                }\n                return _this.showError('Launch took too long. Please launch 100Plus from your EHR again.');\n              }, 10000);\n              AuthService.resetSession();\n              _context2.prev = 10;\n              _context2.next = 13;\n              return RedoxLaunchService.exchange(code);\n            case 13:\n              session = _context2.sent;\n              if (!(timedOut || destroyed)) {\n                _context2.next = 16;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 16:\n              // Store the Auth0 session exactly like the normal portal login path so\n              // existing JWT auth, roles, and downstream API calls keep working.\n              AuthService.authenticateStoredTokens(session, {\n                redoxLaunch: true\n              });\n              _context2.next = 19;\n              return AuthService.getProfileDataPromise(session.access_token);\n            case 19:\n              profileData = _context2.sent;\n              if (!(timedOut || destroyed)) {\n                _context2.next = 22;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 22:\n              AuthService.storeProfileData(profileData);\n              _context2.next = 25;\n              return UserService.get(session.currentUserId);\n            case 25:\n              user = _context2.sent;\n              if (!(timedOut || destroyed)) {\n                _context2.next = 28;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 28:\n              // If Redox launched without a resolvable patient, keep the provider in\n              // the portal and show the dashboard instead of failing the whole SSO.\n              if (((ref = session.targetParams) != null ? ref.redox_launch_status : void 0) === 'patient_context_unresolved') {\n                console.log('Redox launch patient context unresolved; showing dashboard.');\n              }\n              _context2.next = 31;\n              return resolveTarget(session, user);\n            case 31:\n              target = _context2.sent;\n              if (!(timedOut || destroyed)) {\n                _context2.next = 34;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 34:\n              $timeout.cancel(safetyTimer);\n              targetTransition = $state.transitionTo(target.state, target.params);\n              if (timedOut || destroyed) {\n                targetTransition.transition.abort();\n              }\n              _context2.prev = 37;\n              _context2.next = 40;\n              return targetTransition;\n            case 40:\n              _context2.next = 47;\n              break;\n            case 42:\n              _context2.prev = 42;\n              _context2.t0 = _context2[\"catch\"](37);\n              transitionError = _context2.t0;\n              // The user is already authenticated here. Let route-level API errors\n              // surface normally instead of clearing the freshly exchanged session.\n              $log.warn('Redox launch target transition failed', {\n                status: transitionError != null ? transitionError.status : void 0,\n                type: transitionError != null ? transitionError.type : void 0\n              });\n              return _context2.abrupt(\"return\");\n            case 47:\n              if (timedOut || destroyed) {}\n              _context2.next = 58;\n              break;\n            case 50:\n              _context2.prev = 50;\n              _context2.t1 = _context2[\"catch\"](10);\n              error = _context2.t1;\n              $timeout.cancel(safetyTimer);\n              if (!(timedOut || destroyed)) {\n                _context2.next = 56;\n                break;\n              }\n              return _context2.abrupt(\"return\");\n            case 56:\n              $log.warn('Redox launch failed', {\n                status: error != null ? error.status : void 0\n              });\n              return _context2.abrupt(\"return\", _this.showError('Unable to complete launch. Please launch 100Plus from your EHR again.'));\n            case 58:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, null, [[10, 50], [37, 42]]);\n      }));\n      this.showError = function (message) {\n        if (destroyed) {\n          return;\n        }\n        AuthService.resetSession();\n        this.isError = true;\n        this.errorMessage = message;\n        return NotificationsService.error(message);\n      };\n      this.$onDestroy = function () {\n        destroyed = true;\n        if (safetyTimer) {\n          return $timeout.cancel(safetyTimer);\n        }\n      };\n    },\n    templateUrl: 'app/components/callbacks/redox-launch/redox-launch.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name account.directive:authzero\n   * @restrict E\n   * @description\n   * Captures auth0's redirect after a login. In the router we are checking for redirects to the root '/' and redirecting here.\n    Based on the auth0LocalScope in localStorage we're redirecting the user (signup vs login) and then clearing auth0LocalScope.\n    We also support the masquerading use case and the error case where there is an interrupted registration and we still need to create\n    a user in our db to match the existing auth0 user.\n   */\n  angular.module('account').component('authzero', {\n    bindings: {\n      awsToken: '<',\n      profile: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($timeout, AUTH0_REDIRECT_SCOPE, $state, $stateParams, $log, Auth0Store, UserService, AuthService, NotificationsService, EnterpriseSetupWizardService, EnterpriseInvitationSetupWizardService, EnterpriseSSOWizardService, ECustomersService, EBillersService) {\n      var _this = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var auth0LocalScope, customer, error, isBillerFlag, safetyTimer;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('authzero');\n              $log.log('$stateParams', $stateParams, 'awsToken', _this.awsToken, 'this.profile', _this.profile);\n              _this.enterpriseInvitationRegistrationState = 'setup-enterprise.registration';\n              _this.enterpriseCustomerRegistrationState = 'setup-enterprise.dr-registration';\n              _this.enterpriseSSORegistrationState = 'setup-enterprise.complete';\n              // AUTH0 CALLBACK WORKAROUND\n              // In the router we are checking for redirects to the root '/' and redirecting here\n              // ---\n              // Auth0's callbackURL does not work (bug) for paths including a '#' (SPA's).\n              // By default Auth0 redirects to the root '/' of our application. To get around\n              // this we set the auth0LocalScope node in localStorage before login and signup (AuthService)\n              // and then check that localStorage option here to see how to proceed. After that we remove the\n              // localStorage node below.\n              safetyTimer = $timeout(function () {\n                $log.error('Authzero: callback took too long; logging out.');\n                NotificationsService.error('Took too long. Please log in again.');\n                AuthService.logout();\n                return $state.go('account.login');\n              }, 10000);\n              _context.prev = 6;\n              auth0LocalScope = Auth0Store.get('auth0LocalScope');\n              _context.t0 = auth0LocalScope;\n              _context.next = _context.t0 === AUTH0_REDIRECT_SCOPE.LOGIN ? 11 : _context.t0 === AUTH0_REDIRECT_SCOPE.SIGNUP ? 18 : _context.t0 === AUTH0_REDIRECT_SCOPE.ENTERPRISE_SIGNUP ? 20 : 27;\n              break;\n            case 11:\n              isBillerFlag = AuthService.isBiller();\n              // The isBiller function has the possibility to return undefined rather then true or false.\n              // This will cause the this.fetchUserAndLogin function to be called instead which that will create a user and user profile\n              // for billers and thus giving billers the patient role onCreate of the user profile as described in JIRA PP-1083\n              if (!(typeof isBillerFlag === 'undefined')) {\n                _context.next = 16;\n                break;\n              }\n              $log.log('Error: Could not determine if the biller role exists for the current user. Auth0 profile possibly undefined.');\n              NotificationsService.error('ACCOUNT.LOGIN.TOASTS.TRY_AGAIN');\n              return _context.abrupt(\"return\");\n            case 16:\n              if (isBillerFlag) {\n                _this.fetchBillerAndLogin();\n              } else {\n                _this.fetchUserAndLogin();\n              }\n              return _context.abrupt(\"break\", 28);\n            case 18:\n              // This is currently being used for staff account invitations\n              _this.buildUserAndSave();\n              return _context.abrupt(\"break\", 28);\n            case 20:\n              _context.next = 22;\n              return ECustomersService.post({\n                name: null\n              });\n            case 22:\n              customer = _context.sent;\n              _this.profile.user_metadata.is_enterprise_admin = \"true\";\n              _this.profile.user_metadata.enterprise_customer_id = customer.id;\n              _this.buildUserAndSave();\n              return _context.abrupt(\"break\", 28);\n            case 27:\n              // masquerade: in this case no auth0LocalScope is set, so we're masquerading as a user\n              _this.fetchUserAndLogin();\n            case 28:\n              return _context.abrupt(\"return\", $timeout.cancel(safetyTimer));\n            case 31:\n              _context.prev = 31;\n              _context.t1 = _context[\"catch\"](6);\n              error = _context.t1;\n              $log.error('Authzero: error in $onInit', error);\n              $timeout.cancel(safetyTimer);\n              NotificationsService.error('Failed to finish login. Please log in again.');\n              AuthService.logout();\n              return _context.abrupt(\"return\", $state.go('account.login'));\n            case 39:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, null, [[6, 31]]);\n      }));\n      /**\n       * @ngdoc function\n       * @name authzero.fetchBillerAndLogin\n       * @methodOf account.directive:authzero\n       * @description\n       * Fetch enterprise_biller record from Auth0 profile and log in the user.\n       */\n      this.fetchBillerAndLogin = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var biller;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log('this.fetchBillerAndLogin');\n              _context2.next = 3;\n              return EBillersService.getBillerFromAuth0Id(encodeURIComponent(this.profile.sub));\n            case 3:\n              biller = _context2.sent;\n              AuthService.setCurrentUserId(biller.id);\n              return _context2.abrupt(\"return\", $state.go('biller.claims'));\n            case 6:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      /**\n       * @ngdoc function\n       * @name authzero.fetchUserAndLogin\n       * @methodOf account.directive:authzero\n       * @description\n       * Fetch user record from Auth0 profile and log in the user. If a corresponding user doesn't exist in our db, then create one.\n       */\n      this.fetchUserAndLogin = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var error, user;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              _context3.prev = 0;\n              $log.log('this.fetchUserAndLogin');\n              _context3.next = 4;\n              return UserService.getUserFromAuth0Id(encodeURIComponent(this.profile.sub));\n            case 4:\n              user = _context3.sent;\n              if (!_.isEmpty(user)) {\n                _context3.next = 9;\n                break;\n              }\n              return _context3.abrupt(\"return\", this.buildUserAndSave());\n            case 9:\n              AuthService.setCurrentUserId(user.id);\n              return _context3.abrupt(\"return\", AuthService.goToAfterLoginState(user));\n            case 11:\n              _context3.next = 20;\n              break;\n            case 13:\n              _context3.prev = 13;\n              _context3.t0 = _context3[\"catch\"](0);\n              error = _context3.t0;\n              $log.error('fetchUserAndLogin error', error);\n              NotificationsService.error('ACCOUNT.LOGIN.TOASTS.TRY_AGAIN');\n              AuthService.logout();\n              return _context3.abrupt(\"return\", $state.target('account.login'));\n            case 20:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[0, 13]]);\n      }));\n      /**\n       * @ngdoc function\n       * @name authzero.buildUserAndSave\n       * @methodOf account.directive:authzero\n       * @description\n       * Fired from registration flow. Build a user and a user_profile using info from the Auth0 profile. Save those\n       * records, set the current user_id in localStorage, and redirect to the next state. (optionally) Create a user_profile\n       * record for the wearer.\n       */\n      this.buildUserAndSave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n        var error, newUser, user;\n        return regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) switch (_context4.prev = _context4.next) {\n            case 0:\n              // after successful Auth0 signup, build a user record and nested user_profile record from the auth0 profile data.\n              // store in our database\n              newUser = UserService.new();\n              newUser.auth0_user_id = this.profile.sub;\n              if (_.isEmpty(this.profile.user_metadata.enterprise_invitation_id)) {\n                newUser.enterprise_invitation_id = null;\n              } else {\n                newUser.enterprise_invitation_id = this.profile.user_metadata.enterprise_invitation_id; // if user signed up w/ enterprise_invitation link enterprise_invitation_id will be defined\n              }\n              newUser.user_profile.email = this.profile.email;\n              newUser.user_profile.name_first = this.profile.user_metadata.name_first;\n              newUser.user_profile.name_last = this.profile.user_metadata.name_last;\n              newUser.user_profile.npi = this.profile.user_metadata.npi;\n              newUser.user_profile.signature_session_id = this.profile.user_metadata.signature_session_id;\n              newUser.user_profile.is_enterprise_customer_registration = this.profile.user_metadata.is_enterprise_customer_registration;\n              newUser.user_profile.enterprise_customer_id = this.profile.user_metadata.enterprise_customer_id;\n              newUser.user_profile.is_enterprise_admin = this.profile.user_metadata.is_enterprise_admin;\n              newUser.user_profile.phone_1_number = this.profile.user_metadata.phone_1_number;\n              if (this.profile.user_metadata.practice_role_id) {\n                newUser.user_profile.user_profile_practice_roles.push({\n                  practice_role_id: this.profile.user_metadata.practice_role_id\n                });\n              }\n              $log.log('newUser', newUser);\n              _context4.prev = 14;\n              _context4.next = 17;\n              return newUser.save();\n            case 17:\n              user = _context4.sent;\n              AuthService.setCurrentUserId(user.id);\n              $log.log('this.profile.user_metadata', this.profile.user_metadata);\n              return _context4.abrupt(\"return\", this.redirectToNextState(user));\n            case 23:\n              _context4.prev = 23;\n              _context4.t0 = _context4[\"catch\"](14);\n              error = _context4.t0;\n              NotificationsService.error('SETUP.REGISTRATION.TOASTS.ERROR');\n              throw new Error(error);\n            case 28:\n            case \"end\":\n              return _context4.stop();\n          }\n        }, _callee4, this, [[14, 23]]);\n      }));\n      /**\n       * @ngdoc function\n       * @name authzero.redirectToNextState\n       * @methodOf account.directive:authzero\n       * @param {object} user the user signing up\n       * @description\n       * Depending on provider with or without enterprise_invitation sign up context - redirect to the correct state\n       */\n      this.redirectToNextState = function (user) {\n        var isEnterpriseAdminWithInvitation, isEnterpriseCustomer;\n        NotificationsService.success('SETUP.REGISTRATION.TOASTS.SUCCESS');\n        $log.log('this.profile', this.profile);\n        $log.log('this.profile.user_metadata.enterprise_customer_id', this.profile.user_metadata.enterprise_customer_id);\n        $log.log('this.profile.user_metadata.signature_session_id', this.profile.user_metadata.signature_session_id);\n        isEnterpriseCustomer = this.profile.user_metadata.is_enterprise_customer_registration != null;\n        isEnterpriseAdminWithInvitation = this.profile.user_metadata.enterprise_invitation_id != null;\n        if (isEnterpriseCustomer) {\n          // admin who registered practice\n          $log.log('EnterpriseSetupWizardService', EnterpriseSetupWizardService.getState(this.enterpriseCustomerRegistrationState).nextState);\n          return $state.go(EnterpriseSetupWizardService.getState(this.enterpriseCustomerRegistrationState).nextState);\n        } else if (isEnterpriseAdminWithInvitation) {\n          // admin invited to practice\n          $log.log('EnterpriseInvitationSetupWizardService', EnterpriseInvitationSetupWizardService.getState(this.enterpriseInvitationRegistrationState).nextState);\n          return $state.go(EnterpriseInvitationSetupWizardService.getState(this.enterpriseInvitationRegistrationState).nextState);\n        } else if (this.profile[\"https://ibeat.com/sso\"]) {\n          $log.log('EnterpriseSSOWizardService', EnterpriseSSOWizardService.getState(this.enterpriseSSORegistrationState).nextState);\n          return $state.go(EnterpriseSSOWizardService.getState(this.enterpriseSSORegistrationState).nextState);\n        } else {\n          throw new Error('Error navigating to next step!');\n        }\n      };\n      this.$onDestroy = function () {\n        return Auth0Store.remove('auth0LocalScope');\n      };\n    },\n    templateUrl: 'app/components/callbacks/authzero/authzero.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('biller', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('biller').component('currentBiller', {\n    'ngInject': 'ngInject',\n    bindings: {\n      biller: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, AuthService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('currentBiller');\n        $log.log('this.biller', this.biller);\n        if (this.biller.name_first && this.biller.name_last) {\n          return this.name = this.biller.name_first + ' ' + this.biller.name_last;\n        } else if (this.biller.name) {\n          return this.name = this.biller.name;\n        } else {\n          return this.name = '';\n        }\n      };\n      this.logout = function () {\n        return AuthService.logout();\n      };\n    },\n    templateUrl: 'app/components/biller/current-biller/current-biller.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name biller.directive:billerNavbar\n   * @restrict E\n   * @param {object} biller logged in biller\n   * @param {function} onToggleMobileNavigation toggles the state of the navigation on mobile breakpoint\n   * @description\n   * Displays biller navigation\n   */\n  angular.module('biller').component('billerNavbar', {\n    bindings: {\n      biller: '<',\n      onToggleMobileNavigation: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('billerNavbar');\n      };\n    },\n    templateUrl: 'app/components/biller/biller-navbar/biller-navbar.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name biller.directive:billerDashboard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomers the enterprise companies\n   * @description\n   * Displays enterprise biller dashboard\n   */\n  angular.module('biller').component('billerDashboard', {\n    bindings: {\n      user: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('billerDashboard');\n        return $log.log('billerDashboard component loaded');\n      };\n    },\n    templateUrl: 'app/components/biller/biller-dashboard/biller-dashboard.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('admin', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name admin.directive:adminToolbar\n   * @restrict E\n   * @param {object} user logged in user\n   * @description\n   * Displays administrator tools\n   */\n  angular.module('admin').component('adminToolbar', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, AdminService, AuthService) {\n      $log = $log.getInstance('adminToolbar');\n      $log.log('adminToolbar component loaded');\n      this.$onInit = function () {\n        this.roles = AuthService.getRBACRoles();\n        this.rolesString = this.roles.join(', ');\n        this.canMasquerade = AuthService.canMasquerade();\n        $log.log('canMasquerade', this.canMasquerade);\n        this.isMasquerading = AdminService.isMasquerading();\n        this.masqueradingAsUser = AdminService.getMasqueradingUser();\n      };\n      this.stopMasquerading = function () {\n        AdminService.stopMasquerading();\n        this.isMasquerading = AdminService.isMasquerading();\n        return $state.go('enterprise.dashboard', {}, {\n          reload: true\n        });\n      };\n    },\n    templateUrl: 'app/components/admin/admin-toolbar/admin-toolbar.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name admin.directive:adminNavbar\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {function} onToggleMobileNavigation toggles the state of the navigation on mobile breakpoint\n   * @description\n   * Displays admin navigation\n   */\n  angular.module('admin').component('adminNavbar', {\n    bindings: {\n      user: '=',\n      onToggleMobileNavigation: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('adminNavbar');\n      };\n    },\n    templateUrl: 'app/components/admin/admin-navbar/admin-navbar.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name admin.directive:adminDashboard\n   * @restrict E\n   * @param {object} user logged in user\n   * @param {object} enterpriseCustomers the enterprise companies\n   * @description\n   * Displays enterprise admin dashboard\n   */\n  angular.module('admin').component('adminDashboard', {\n    bindings: {\n      user: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, $timeout, env, ECustomersService, EUserProfilesService, EEnrollmentsService, AdminService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('adminDashboard');\n        $log.log('adminDashboard component loaded');\n        this.isLoadingAdminUserProfiles = false;\n        this.search = '';\n        this.providerSearch = '';\n        this.providerTypeahead = '';\n        this.filteredAdmins = [];\n        this.recentPractices = this.loadRecentPractices();\n      };\n      // Local storage methods for recent practices\n      this.getRecentPracticesKey = function () {\n        // Include environment name in the localStorage key to prevent cross-environment contamination\n        return \"recentMasqueradedPractices_\".concat(env.name);\n      };\n      this.saveRecentPractice = function (practice) {\n        var error, practiceWithTimestamp;\n        try {\n          // Create the practice object with timestamp\n          practiceWithTimestamp = {\n            id: practice.id,\n            name: practice.name,\n            offices: practice.offices,\n            created_at: practice.created_at,\n            lastAccessed: new Date().toISOString()\n          };\n          if (!this.recentPractices) {\n            this.recentPractices = [];\n          }\n          // Remove existing practice with same ID if it exists\n          this.recentPractices = this.recentPractices.filter(function (p) {\n            return p.id !== practice.id;\n          });\n          // Add new practice to beginning of array\n          this.recentPractices.unshift(practiceWithTimestamp);\n          // Keep only last 5\n          this.recentPractices = this.recentPractices.slice(0, 5);\n          // Update localStorage with the current state\n          return localStorage.setItem(this.getRecentPracticesKey(), JSON.stringify(this.recentPractices));\n        } catch (error1) {\n          error = error1;\n          return $log.error('Error saving recent practice', error);\n        }\n      };\n      this.loadRecentPractices = function () {\n        var error, stored;\n        try {\n          stored = localStorage.getItem(this.getRecentPracticesKey());\n          if (stored) {\n            return JSON.parse(stored);\n          } else {\n            return [];\n          }\n        } catch (error1) {\n          error = error1;\n          $log.error('Error loading recent practices', error);\n          return [];\n        }\n      };\n      this.clearRecentPractices = function () {\n        var error;\n        try {\n          localStorage.removeItem(this.getRecentPracticesKey());\n          return this.recentPractices = [];\n        } catch (error1) {\n          error = error1;\n          return $log.error('Error clearing recent practices', error);\n        }\n      };\n      this.loadCustomers = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(params) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('loadCustomers params', params);\n                _context.prev = 1;\n                _context.next = 4;\n                return ECustomersService.search(params, {\n                  include: \"office\"\n                });\n              case 4:\n                return _context.abrupt(\"return\", _context.sent);\n              case 7:\n                _context.prev = 7;\n                _context.t0 = _context[\"catch\"](1);\n                error = _context.t0;\n                $log.error('loadCustomers error', error);\n                return _context.abrupt(\"return\", NotificationsService.error('loading customers failed'));\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, null, [[1, 7]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.loadAdminUserProfiles = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(selectedEnterpriseCustomerId) {\n          var admins, error;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                this.isLoadingAdminUserProfiles = true;\n                _context2.prev = 1;\n                _context2.next = 4;\n                return EUserProfilesService.getAllAdmins(selectedEnterpriseCustomerId);\n              case 4:\n                admins = _context2.sent;\n                this.isLoadingAdminUserProfiles = false;\n                return _context2.abrupt(\"return\", this.admins = _.sortBy(admins, ['name_first', 'name_last', 'email']));\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](1);\n                error = _context2.t0;\n                $log.log('error', error);\n                return _context2.abrupt(\"return\", this.isLoadingAdminUserProfiles = false);\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[1, 9]]);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onSelect = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n          var enrollments;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                this.selectedEnterpriseCustomer = payload.item;\n                $state.go('.', {\n                  query: this.selectedEnterpriseCustomer.name\n                });\n                // Save to recent practices immediately when practice is selected\n                this.saveRecentPractice(this.selectedEnterpriseCustomer);\n                this.loadAdminUserProfiles(this.selectedEnterpriseCustomer.id);\n                $log.log('this.selectedEnterpriseCustomer', this.selectedEnterpriseCustomer);\n                _context3.next = 7;\n                return EEnrollmentsService.getAll(this.selectedEnterpriseCustomer.id);\n              case 7:\n                enrollments = _context3.sent;\n                $log.log('enrollments', enrollments);\n                return _context3.abrupt(\"return\", this.enrollments = enrollments);\n              case 10:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x3) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.selectAdminUserProfile = function (adminUserProfile) {\n        var ref, user;\n        if (!adminUserProfile) {\n          $log.error('selectAdminUserProfile: adminUserProfile is undefined');\n          return;\n        }\n        user = adminUserProfile.user;\n        if (!user) {\n          $log.error('selectAdminUserProfile: user is undefined for adminUserProfile', adminUserProfile);\n          return;\n        }\n        if (!((ref = this.selectedEnterpriseCustomer) != null ? ref.id : void 0)) {\n          $log.error('selectAdminUserProfile: selectedEnterpriseCustomer is undefined or missing id');\n          return;\n        }\n        delete adminUserProfile.user; // remove JSON circular structure\n        user.user_profile = adminUserProfile;\n        // Ensure the masqueraded user has the correct enterprise_customer_id\n        user.user_profile.enterprise_customer_id = this.selectedEnterpriseCustomer.id;\n        $log.log('Set enterprise_customer_id for masqueraded user:', this.selectedEnterpriseCustomer.id);\n        AdminService.setMasqueradingEnterpriseCustomer(this.selectedEnterpriseCustomer); // this must come first\n        AdminService.setMasqueradingUser(user);\n        return $state.go('enterprise.dashboard');\n      };\n      this.loadPracticeFromRecent = function (practice) {\n        var _this = this;\n        practice.isLoadingAdminUserProfiles = true;\n        this.selectedEnterpriseCustomer = practice;\n        // Update the search bar to match the selected practice name\n        this.search = practice.name;\n        $state.go('.', {\n          query: practice.name\n        });\n        this.loadAdminUserProfiles(practice.id);\n        $log.log('Loading practice from recent', practice);\n        this.saveRecentPractice(practice);\n        // Load enrollments using promises instead of async/await\n        return EEnrollmentsService.getAll(practice.id).then(function (enrollments) {\n          $log.log('enrollments', enrollments);\n          return _this.enrollments = enrollments;\n        }).catch(function (error) {\n          $log.error('Error loading practice from recent', error);\n          // Only remove from recent list if it's a practice-specific error\n          if (error.status === 404 || error.status === 403) {\n            return _this.removeFromRecentPractices(practice.id);\n          }\n        }).finally(function () {\n          return practice.isLoadingAdminUserProfiles = false;\n        });\n      };\n      this.removeFromRecentPractices = function (practiceId) {\n        var error, recentPractices;\n        try {\n          recentPractices = this.loadRecentPractices();\n          recentPractices = recentPractices.filter(function (p) {\n            return p.id !== practiceId;\n          });\n          localStorage.setItem(this.getRecentPracticesKey(), JSON.stringify(recentPractices));\n          return this.recentPractices = recentPractices;\n        } catch (error1) {\n          error = error1;\n          return $log.error('Error removing practice from recent', error);\n        }\n      };\n      this.updatePractice = function () {\n        var customer, error;\n        try {\n          this.submitPromise = ECustomersService.put({\n            id: this.selectedEnterpriseCustomer.id,\n            name: this.selectedEnterpriseCustomer.name.trim()\n          });\n          customer = this.submitPromise;\n          $log.log('customer', customer);\n          return NotificationsService.success('Practice successfully updated.');\n        } catch (error1) {\n          error = error1;\n          $log.log('updatePractice error', error);\n          return NotificationsService.error('Error updating practice.');\n        }\n      };\n      // Provider search filter\n      this.onProviderSearchChange = function () {};\n      // Provider table filter for typeahead (returns a closure)\n      // Filtering is handled in the view, but this can be used for side effects if needed\n      this.makeProviderTableFilter = function () {\n        var providerTypeahead;\n        providerTypeahead = this.providerTypeahead || '';\n        return function (admin) {\n          var term;\n          if (!(providerTypeahead && providerTypeahead.trim() !== '')) {\n            return true;\n          }\n          term = providerTypeahead.toLowerCase();\n          return admin.name_first && admin.name_first.toLowerCase().indexOf(term) >= 0 || admin.name_last && admin.name_last.toLowerCase().indexOf(term) >= 0 || admin.email && admin.email.toLowerCase().indexOf(term) >= 0;\n        };\n      };\n      // Provider typeahead source\n      this.getProviderTypeahead = function (query) {\n        var term;\n        if (!(this.admins && this.admins.length > 0)) {\n          return [];\n        }\n        term = query ? query.toLowerCase() : '';\n        return this.admins.filter(function (admin) {\n          return admin.name_first && admin.name_first.toLowerCase().indexOf(term) >= 0 || admin.name_last && admin.name_last.toLowerCase().indexOf(term) >= 0 || admin.email && admin.email.toLowerCase().indexOf(term) >= 0;\n        }).map(function (admin) {\n          admin.nameDisplay = \"\".concat(admin.name_first, \" \").concat(admin.name_last, \" (\").concat(admin.email, \")\");\n          return admin;\n        });\n      };\n      // Provider typeahead select handler\n      this.onProviderTypeaheadSelect = function (_ref4) {\n        var item = _ref4.item,\n          model = _ref4.model,\n          label = _ref4.label;\n        if (item) {\n          this.selectAdminUserProfile(item);\n          return this.providerTypeahead = '';\n        }\n      };\n      // Check if admin has access to multiple offices\n      this.hasMultipleOffices = function (admin) {\n        if (!admin.provider_offices) {\n          return false;\n        }\n        return admin.provider_offices.length > 1;\n      };\n    },\n    templateUrl: 'app/components/admin/admin-dashboard/admin-dashboard.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name account.directive:updatePassword\n   * @restrict E\n   * @description\n   * Page for user to update their password. Redirects the user to the dashboard and logs them in after successful password change.\n   */\n  angular.module('account').component('updatePassword', {\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $stateParams, REGEX, AccountService, AuthService, NotificationsService) {\n      this.$onInit = function () {\n        $log.log('$stateParams.password_reset_token', $stateParams.password_reset_token);\n        this.passwordRegex = REGEX.PASSWORD;\n        return this.credentials = {};\n      };\n      this.updatePassword = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.prev = 0;\n              this.submitPromise = AccountService.updatePassword(this.credentials, $stateParams.password_reset_token);\n              _context.next = 4;\n              return this.submitPromise;\n            case 4:\n              response = _context.sent;\n              NotificationsService.success('ACCOUNT.UPDATE_PASSWORD.TOASTS.SUCCESS');\n              this.credentials.email = response.email;\n              AuthService.login(this.credentials);\n              _context.next = 14;\n              break;\n            case 10:\n              _context.prev = 10;\n              _context.t0 = _context[\"catch\"](0);\n              error = _context.t0;\n              NotificationsService.error('ACCOUNT.UPDATE_PASSWORD.TOASTS.ERROR');\n            case 14:\n              return _context.abrupt(\"return\", this.submitPromise);\n            case 15:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[0, 10]]);\n      }));\n    },\n    templateUrl: 'app/components/account/update-password/update-password.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name account.directive:practiceSelect\n   */\n  angular.module('account').component('practiceSelect', {\n    bindings: {\n      user: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, ECustomersService, NotificationsService, UserProfilesService, $state, AuthService, AdminService) {\n      this.search = '';\n      this.practice = null;\n      this.newProvider = null;\n      this.showAddPractice = false; // we are removing the ability to self add logins AuthService.isAdmin() && AuthService.isInternal() && !AdminService.isMasquerading()\n      this.loadCustomers = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(params) {\n          var error;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('loadCustomers params', params);\n                _context.prev = 1;\n                _context.next = 4;\n                return ECustomersService.search(params, {\n                  include: \"office\"\n                });\n              case 4:\n                return _context.abrupt(\"return\", _context.sent);\n              case 7:\n                _context.prev = 7;\n                _context.t0 = _context[\"catch\"](1);\n                error = _context.t0;\n                $log.error('loadCustomers error', error);\n                return _context.abrupt(\"return\", NotificationsService.error('loading customers failed'));\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, null, [[1, 7]]);\n        }));\n        return function (_x) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.onPracticeSelect = function (item) {\n        var practiceShortName, profile, ref;\n        $log.log('practiceSelected', item);\n        this.practice = item.practice;\n        profile = _.chain((ref = this.user) != null ? ref.user_profiles : void 0).sortBy('created_at').first().value();\n        practiceShortName = this.practice.name.replace(/[^A-Z0-9]+/ig, \"_\");\n        return this.newProvider = {\n          user_id: this.user.id,\n          enterprise_customer_id: this.practice.id,\n          name_first: (profile != null ? profile.name_first : void 0) || '',\n          name_last: (profile != null ? profile.name_last : void 0) || '',\n          phone_1_number: profile != null ? profile.phone_1_number : void 0,\n          is_enterprise_admin: true,\n          email: (profile.email || 'email@100plus.com').replace('@', \"+\".concat(practiceShortName, \"@\")),\n          office_ids: []\n        };\n      };\n      this.onOfficeSelected = function (officeId) {\n        var idx;\n        idx = this.newProvider.office_ids.indexOf(officeId);\n        if (idx === -1) {\n          return this.newProvider.office_ids.push(officeId);\n        } else {\n          return this.newProvider.office_ids.splice(idx, 1);\n        }\n      };\n      this.onEdit = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(profile) {\n          var isDelete,\n            practices,\n            _args2 = arguments;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                isDelete = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : false;\n                $log.log('onEdit', profile, isDelete);\n                if (!isDelete) {\n                  _context2.next = 10;\n                  break;\n                }\n                if (!confirm('Are you sure you want to delete this user profile login?')) {\n                  _context2.next = 8;\n                  break;\n                }\n                // don't actually delete the profile this would cause data issues just remove the link to the user\n                profile.user_id = '';\n                _context2.next = 7;\n                return UserProfilesService.adminPut(profile);\n              case 7:\n                return _context2.abrupt(\"return\", $state.go('account.practice-select', {}, {\n                  reload: true\n                }));\n              case 8:\n                _context2.next = 16;\n                break;\n              case 10:\n                profile.office_ids = _.map(profile.provider_offices, 'id');\n                this.newProvider = profile;\n                _context2.next = 14;\n                return ECustomersService.search(profile.enterprise_customer.name, {\n                  include: \"office\"\n                });\n              case 14:\n                practices = _context2.sent;\n                return _context2.abrupt(\"return\", this.practice = _.find(practices, {\n                  id: profile.enterprise_customer_id\n                }));\n              case 16:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x2) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n      this.onSave = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n        var error, ref;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              $log.log('save', this.newProvider);\n              _context3.prev = 1;\n              if (!this.newProvider.id) {\n                _context3.next = 8;\n                break;\n              }\n              _context3.next = 5;\n              return UserProfilesService.adminPut(this.newProvider);\n            case 5:\n              NotificationsService.success('Updated the provider for this practice');\n              _context3.next = 11;\n              break;\n            case 8:\n              _context3.next = 10;\n              return UserProfilesService.adminPost(this.newProvider);\n            case 10:\n              NotificationsService.success('Created a new provider for this practice');\n            case 11:\n              $state.go('account.practice-select', {}, {\n                reload: true\n              });\n              _context3.next = 19;\n              break;\n            case 14:\n              _context3.prev = 14;\n              _context3.t0 = _context3[\"catch\"](1);\n              error = _context3.t0;\n              NotificationsService.error(\"Failed to \".concat((ref = this.newProvider.id) != null ? ref : {\n                'create': 'update'\n              }, \" provider\"));\n              if (error.data.errorMessage === 'Validation error') {\n                NotificationsService.error('Provider email already exists');\n              }\n            case 19:\n              return _context3.abrupt(\"return\", this.clear());\n            case 20:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, this, [[1, 14]]);\n      }));\n      this.clear = function () {\n        this.newProvider = null;\n        this.practice = null;\n        return this.search = '';\n      };\n    },\n    templateUrl: 'app/components/account/practice-select/practice-select.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name account.directive:login\n   * @restrict E\n   * @description\n   * Main login page for portal.\n   */\n  angular.module('account').component('login', {\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller(env, toastr, $state, $stateParams, $translate, $log, REGEX, AuthService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance(\"login\");\n        return AuthService.login();\n      };\n    },\n    templateUrl: 'app/components/account/login/login.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name account.directive:forgotPassword\n   * @restrict E\n   * @description\n   * Contains form to request password reset email.\n   */\n  angular.module('account').component('forgotPassword', {\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($log, AccountService, NotificationsService, REGEX) {\n      this.$onInit = function () {\n        $log = $log.getInstance('forgotPassword');\n        this.passwordForm = null;\n        this.emailRegex = REGEX.EMAIL;\n        return this.credentials = {};\n      };\n      this.requestPasswordResetEmail = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log.log('this.credentials.email', this.credentials.email);\n              _context.prev = 1;\n              this.submitPromise = AccountService.requestPasswordResetEmail(this.credentials);\n              _context.next = 5;\n              return this.submitPromise;\n            case 5:\n              response = _context.sent;\n              this.credentials = {};\n              this.resetForm();\n              NotificationsService.success('ACCOUNT.FORGOT_PASSWORD.TOASTS.SUCCESS');\n              _context.next = 15;\n              break;\n            case 11:\n              _context.prev = 11;\n              _context.t0 = _context[\"catch\"](1);\n              error = _context.t0;\n              NotificationsService.error('ACCOUNT.FORGOT_PASSWORD.TOASTS.ERROR');\n            case 15:\n              return _context.abrupt(\"return\", this.submitPromise);\n            case 16:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[1, 11]]);\n      }));\n      this.resetForm = function () {\n        this.passwordForm.$setPristine();\n        return this.passwordForm.$setUntouched();\n      };\n    },\n    templateUrl: 'app/components/account/forgot-password/forgot-password.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:unsavedForm\n   * @restrict A\n   * @element form\n   * @param {object} unsavedFormModel the model of the form this directive is placed on\n   * @description\n   * Tracks the incoming form model and sets form.$unsaved boolean on that form\n   */\n  angular.module('global').directive('unsavedForm', function ($log) {\n    'ngInject';\n\n    return {\n      restrict: 'A',\n      require: 'form',\n      scope: {\n        unsavedFormModel: '='\n      },\n      link: function link(scope, element, attrs, formController) {\n        scope.initialModelState = angular.copy(scope.unsavedFormModel);\n        scope.$watch('unsavedFormModel', function (newValue, oldValue) {\n          if (!angular.equals(JSON.stringify(scope.unsavedFormModel).replace(/null/i, \"\\\"\\\"\"), JSON.stringify(scope.initialModelState).replace(/null/i, \"\\\"\\\"\"))) {\n            return formController.$unsaved = true;\n          } else {\n            return formController.$unsaved = false;\n          }\n        }, true); // deep watch\n\n        // return form model to previous state\n        // set formController.$unsaved to false\n        formController.$resetUnsaved = function () {\n          scope.unsavedFormModel = scope.initialModelState;\n          return formController.$unsaved = false;\n        };\n      },\n      template: ''\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:unsavedDataModal\n   * @restrict A\n   * @element form\n   * @param {object} form the form to you want to track\n   * @description\n   * Used in conjunction with the unsavedForm directive. If you try and navigate away from the current page the 'form' is on.\n    You will be presented with a modal that prevents the transition until the user confirms or denies.\n   */\n  angular.module('global').component('unsavedDataModal', {\n    bindings: {\n      form: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $transitions, ModalService, $state, $translate) {\n      var _this = this;\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var actionButtonText, bodyTxt, closeButtonText, headerTxt, translations;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              // translations\n              headerTxt = 'MODALS.UNSAVED_DATA_MODAL.HEADER_TXT';\n              bodyTxt = 'MODALS.UNSAVED_DATA_MODAL.BODY_TXT';\n              closeButtonText = 'MODALS.UNSAVED_DATA_MODAL.CLOSE_BTN_TXT';\n              actionButtonText = 'MODALS.UNSAVED_DATA_MODAL.ACTION_BTN_TXT';\n              _context.next = 6;\n              return $translate([headerTxt, bodyTxt, closeButtonText, actionButtonText]);\n            case 6:\n              translations = _context.sent;\n              this.headerTxt = translations[headerTxt];\n              this.bodyTxt = translations[bodyTxt];\n              this.closeButtonText = translations[closeButtonText];\n              return _context.abrupt(\"return\", this.actionButtonText = translations[actionButtonText]);\n            case 11:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.cleanUpBinding = $transitions.onStart({\n        to: '**'\n      }, /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(trans) {\n          var modalOptions, result;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                if (!(trans.to().name !== trans.from().name && _this.form.$unsaved)) {\n                  _context2.next = 13;\n                  break;\n                }\n                modalOptions = {\n                  headerText: _this.headerTxt,\n                  bodyText: _this.bodyTxt,\n                  closeButtonText: _this.closeButtonText,\n                  actionButtonText: _this.actionButtonText\n                };\n                _context2.next = 4;\n                return ModalService.showModal({}, modalOptions).result;\n              case 4:\n                result = _context2.sent;\n                if (!(result === false)) {\n                  _context2.next = 10;\n                  break;\n                }\n                // https://github.com/angular-ui/ui-router/issues/2893\n                _this.cleanUpBinding();\n                return _context2.abrupt(\"return\", true);\n              case 10:\n                return _context2.abrupt(\"return\", false);\n              case 11:\n                _context2.next = 14;\n                break;\n              case 13:\n                return _context2.abrupt(\"return\", true);\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2);\n        }));\n        return function (_x) {\n          return _ref2.apply(this, arguments);\n        };\n      }());\n    },\n    template: ''\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * Shared transcription notification entry: nav bar + practice-select dock.\n   * Uses NotificationQueueStateService (user-scoped) + NotificationLiveClientService.\n   */\n  var CALL_SUMMARY_NOT_AVAILABLE, _updateTranscriptionNotificationsBodyScrollLock, bodyScrollLockCount;\n  bodyScrollLockCount = 0;\n  CALL_SUMMARY_NOT_AVAILABLE = 'Call summary not available. Refer to the full call transcription for call details.';\n  _updateTranscriptionNotificationsBodyScrollLock = function _updateTranscriptionNotificationsBodyScrollLock() {\n    var body;\n    body = angular.element(document.body);\n    if (bodyScrollLockCount > 0) {\n      return body.addClass('transcription-notifications-popover-open');\n    } else {\n      return body.removeClass('transcription-notifications-popover-open');\n    }\n  };\n  angular.module('global').component('transcriptionNotifications', {\n    bindings: {\n      user: '=',\n      enterpriseCustomerId: '<',\n      variant: '@'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $scope, $uibModal, $translate, $q, NotificationQueueStateService, UserNotificationsApiService, NotificationLiveClientService, EUserProfilesService, EUserProfileFilterService, PatientObservationReportNavService) {\n      var _this2 = this;\n      this.$onInit = function () {\n        var _this = this;\n        var ref;\n        $log = $log.getInstance('transcriptionNotifications');\n        this.variant = this.variant || 'navbar';\n        this.pendingTranscriptionCount = 0;\n        this.totalTranscriptionCount = 0;\n        this.popoverItems = [];\n        this.popoverFilter = 'unread';\n        this.notificationsPopoverOpen = false;\n        this.patientCache = {};\n        this._ecPatientCcmFallbackKeys = {};\n        this.anchorId = this.variant === 'dock' ? 'practice-select-transcription-queue' : 'navbar-transcription-queue';\n        this.popoverPlacement = this.variant === 'dock' ? 'top-left' : 'right';\n        this._lastPopoverOpenForBodyScroll = false;\n        this.markingAllRead = false;\n        this._bodyScrollLockWatch = $scope.$watch(function () {\n          return _this.notificationsPopoverOpen;\n        }, function (open) {\n          if (open === _this._lastPopoverOpenForBodyScroll) {\n            return;\n          }\n          if (open) {\n            bodyScrollLockCount++;\n          } else if (_this._lastPopoverOpenForBodyScroll) {\n            bodyScrollLockCount = Math.max(0, bodyScrollLockCount - 1);\n          }\n          _this._lastPopoverOpenForBodyScroll = open;\n          return _updateTranscriptionNotificationsBodyScrollLock();\n        });\n        this.syncPendingFromState = function () {\n          _this.totalTranscriptionCount = NotificationQueueStateService.getCallTranscriptionCount();\n          _this.pendingTranscriptionCount = NotificationQueueStateService.getPendingCount();\n          return _this._syncPopoverItemsFromState();\n        };\n        if ((ref = this.user) != null ? ref.id : void 0) {\n          NotificationQueueStateService.load(this.user.id).then(this.syncPendingFromState).catch(function () {\n            return _this.syncPendingFromState();\n          });\n          NotificationLiveClientService.connect(this.user.id);\n        }\n        return this._nqOff = $rootScope.$on('notificationQueue:changed', this.syncPendingFromState);\n      };\n      this._syncPopoverItemsFromState = function () {\n        var all;\n        all = NotificationQueueStateService.getAllCallTranscriptionsSorted();\n        _this2.popoverItems = function () {\n          switch (this.popoverFilter) {\n            case 'read':\n              return _.filter(all, function (n) {\n                return n.is_read;\n              });\n            case 'all':\n              return all.slice();\n            default:\n              return _.filter(all, function (n) {\n                return !n.is_read;\n              });\n          }\n        }.call(_this2);\n        return _this2._refreshPatientReportDestinations();\n      };\n      this.setPopoverFilter = function (filter) {\n        if (this.popoverFilter === filter) {\n          return;\n        }\n        this.popoverFilter = filter;\n        this._syncPopoverItemsFromState();\n        return this._prefetchPatientsForPopover();\n      };\n      this.markAllUnreadRead = function ($event) {\n        var _this3 = this;\n        var puts, ref, unread, userId;\n        if ($event != null) {\n          if (typeof $event.stopPropagation === \"function\") {\n            $event.stopPropagation();\n          }\n        }\n        userId = (ref = this.user) != null ? ref.id : void 0;\n        if (!userId) {\n          return;\n        }\n        unread = NotificationQueueStateService.getPendingCallTranscriptions();\n        if (!unread.length) {\n          return;\n        }\n        this.markingAllRead = true;\n        puts = _.map(unread, function (n) {\n          var contents;\n          contents = n.contents ? angular.copy(n.contents) : {};\n          return UserNotificationsApiService.updateNotification(userId, n.id, {\n            contents: contents,\n            is_read: true\n          });\n        });\n        return $q.all(puts).then(function (updatedList) {\n          _.each(updatedList, function (saved) {\n            return NotificationQueueStateService.applySavedNotification(saved);\n          });\n          return _this3.syncPendingFromState();\n        }).catch(function (err) {\n          return $log.warn('mark all transcription notifications read failed', err);\n        }).finally(function () {\n          return _this3.markingAllRead = false;\n        });\n      };\n      this.popoverEmptyKey = function () {\n        switch (this.popoverFilter) {\n          case 'read':\n            return 'NOTIFICATIONS.TRANSCRIPTION_QUEUE.EMPTY_READ';\n          case 'all':\n            return 'NOTIFICATIONS.TRANSCRIPTION_QUEUE.EMPTY_ALL';\n          default:\n            return 'NOTIFICATIONS.TRANSCRIPTION_QUEUE.EMPTY';\n        }\n      };\n      this.toggleNotificationsPopover = function () {\n        this.notificationsPopoverOpen = !this.notificationsPopoverOpen;\n        if (this.notificationsPopoverOpen) {\n          this.syncPendingFromState();\n          return this._prefetchPatientsForPopover();\n        }\n      };\n      this.closePopover = function (clearFilter) {\n        if (clearFilter) {\n          EUserProfileFilterService.clearState();\n        }\n        return this.notificationsPopoverOpen = false;\n      };\n      this._prefetchPatientsForPopover = function () {\n        var ids;\n        ids = _.uniq(_.compact(_.map(_this2.popoverItems, function (i) {\n          var ref;\n          return (ref = i.contents) != null ? ref.patient_user_profile_id : void 0;\n        })));\n        if (!(ids.length && _this2.enterpriseCustomerId)) {\n          return;\n        }\n        return $q.all(_.map(ids, function (pid) {\n          return EUserProfilesService.get(_this2.enterpriseCustomerId, pid).then(function (res) {\n            return _this2.patientCache[pid] = (res != null ? res.user_profile : void 0) || res;\n          });\n        })).then(function () {\n          return _this2._refreshPatientReportDestinations();\n        }).catch(function () {\n          return null;\n        });\n      };\n      this.itemTitle = function (item) {\n        var ref, summary;\n        summary = (ref = item.contents) != null ? ref.call_summary : void 0;\n        if (summary === null || summary === '') {\n          return CALL_SUMMARY_NOT_AVAILABLE;\n        } else if (summary) {\n          return summary.substring(0, 45) + (summary.length > 45 ? '...' : '');\n        } else {\n          return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_QUEUE.UNTITLED');\n        }\n      };\n      this.formatWhen = function (iso) {\n        var providerTimestamp, providerTimezone, ref, ref1, timestamp;\n        if (!iso) {\n          return '';\n        }\n        timestamp = luxon.DateTime.fromISO(String(iso), {\n          setZone: true\n        });\n        if (!timestamp.isValid) {\n          return '';\n        }\n        providerTimezone = ((ref = this.user) != null ? (ref1 = ref.user_profile) != null ? ref1.timezone : void 0 : void 0) || luxon.DateTime.local().zoneName;\n        providerTimestamp = timestamp.setZone(providerTimezone);\n        if (!providerTimestamp.isValid) {\n          providerTimestamp = timestamp.setZone(luxon.DateTime.local().zoneName);\n        }\n        timestamp = providerTimestamp;\n        return timestamp.toFormat('MMM d, yyyy h:mm:ss a');\n      };\n      this.durationMinutes = function (item) {\n        var ms, ref;\n        ms = (ref = item.contents) != null ? ref.duration_ms : void 0;\n        if (!ms) {\n          return null;\n        }\n        return Math.max(1, Math.round(ms / 60000));\n      };\n      this.patientLabel = function (item) {\n        var p, pid, ref;\n        pid = (ref = item.contents) != null ? ref.patient_user_profile_id : void 0;\n        p = this.patientCache[pid];\n        if ((p != null ? p.name_first : void 0) || (p != null ? p.name_last : void 0)) {\n          return [p.name_first, p.name_last].join(' ').trim();\n        } else if (pid) {\n          return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_QUEUE.PATIENT_FALLBACK');\n        } else {\n          return null;\n        }\n      };\n      this.getObservationReportId = function (item) {\n        var cached, eid, key, pid, ref, ref1, ref2, ref3, reportId;\n        eid = (ref = item.contents) != null ? ref.enterprise_customer_id : void 0;\n        pid = (ref1 = item.contents) != null ? ref1.patient_user_profile_id : void 0;\n        if (!(eid && pid)) {\n          return null;\n        }\n        key = \"\".concat(eid, \":\").concat(pid);\n        cached = _this2.patientCache[key];\n        if (_this2._ecPatientInflight == null) {\n          _this2._ecPatientInflight = {};\n        }\n        if (cached) {\n          reportId = (ref2 = cached.patient_reports) != null ? (ref3 = ref2[0]) != null ? ref3.id : void 0 : void 0;\n          if (reportId) {\n            return reportId;\n          }\n          // Fallback for CCM-only patients: the default fetch returns an empty\n          // patient_reports array. Re-fetch with services=CCM and overwrite the\n          // cache so subsequent reads pick up the CCM report.\n          // Track attempts on the controller, not on `cached`, because the CCM\n          // response overwrites the cache and would drop a flag on the old object\n          // and retrigger this branch forever.\n          if (!_this2._ecPatientCcmFallbackKeys[key]) {\n            _this2._ecPatientCcmFallbackKeys[key] = true;\n            _this2._ecPatientInflight[key] = EUserProfilesService.get(eid, pid, {\n              services: 'CCM'\n            }).then(function (res) {\n              _this2.patientCache[key] = (res != null ? res.user_profile : void 0) || res;\n              return _this2._refreshPatientReportDestinations();\n            });\n          }\n          return null;\n        }\n        if (!_this2._ecPatientInflight[key]) {\n          _this2._ecPatientInflight[key] = EUserProfilesService.get(eid, pid).then(function (res) {\n            _this2.patientCache[key] = (res != null ? res.user_profile : void 0) || res;\n            return _this2._refreshPatientReportDestinations();\n          });\n        }\n        return null;\n      };\n      this.resolveObservationReportId = function (item) {\n        var eid, firstLookup, key, pid, ref, ref1, ref2, reportId;\n        reportId = _this2.getObservationReportId(item);\n        if (reportId) {\n          return $q.when(reportId);\n        }\n        eid = (ref = item.contents) != null ? ref.enterprise_customer_id : void 0;\n        pid = (ref1 = item.contents) != null ? ref1.patient_user_profile_id : void 0;\n        if (!(eid && pid)) {\n          return $q.when(null);\n        }\n        key = \"\".concat(eid, \":\").concat(pid);\n        firstLookup = (ref2 = _this2._ecPatientInflight) != null ? ref2[key] : void 0;\n        if (!firstLookup) {\n          return $q.when(null);\n        }\n        return firstLookup.then(function () {\n          var fallbackLookup, ref3;\n          reportId = _this2.getObservationReportId(item);\n          if (reportId) {\n            return reportId;\n          }\n          fallbackLookup = (ref3 = _this2._ecPatientInflight) != null ? ref3[key] : void 0;\n          if (!(fallbackLookup && fallbackLookup !== firstLookup)) {\n            return null;\n          }\n          return fallbackLookup.then(function () {\n            return _this2.getObservationReportId(item);\n          });\n        }).catch(function () {\n          return null;\n        });\n      };\n      /**\n       * Resolve the navigation destination for every popover item once and cache the\n       * result on the item. The template then reads `item._patientReportDestination`\n       * directly, which avoids calling a returning-new-object function inside ng-if\n       * (which previously caused digest loops and inconsistent rendering).\n       */\n      this._refreshPatientReportDestinations = function () {\n        return _.each(_this2.popoverItems, function (item) {\n          var observationReportId;\n          observationReportId = _this2.getObservationReportId(item);\n          return item._patientReportDestination = PatientObservationReportNavService.resolveDestination(item != null ? item.contents : void 0, observationReportId, _this2.user);\n        });\n      };\n      this.navigateToPatientReport = function (item, $event) {\n        var destination;\n        if ($event != null) {\n          if (typeof $event.stopPropagation === \"function\") {\n            $event.stopPropagation();\n          }\n        }\n        destination = item != null ? item._patientReportDestination : void 0;\n        if (!destination) {\n          return;\n        }\n        _this2.notificationsPopoverOpen = false;\n        return PatientObservationReportNavService.navigate(destination).catch(function () {\n          return null;\n        });\n      };\n      this.openEditorFromRow = function (notification, $event) {\n        if (($event != null ? $event.target : void 0) != null && angular.element($event.target).closest('a').length) {\n          return;\n        }\n        return this.openEditor(notification);\n      };\n      this.onPopoverRowKeydown = function ($event, notification) {\n        var key;\n        if (!$event) {\n          return;\n        }\n        key = $event.key;\n        if (!(key === 'Enter' || key === ' ')) {\n          return;\n        }\n        $event.preventDefault();\n        return this.openEditor(notification);\n      };\n      this.popoverRowAriaLabel = function (item) {\n        var title;\n        title = this.itemTitle(item);\n        return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_QUEUE.OPEN_ROW_ARIA', {\n          title: title\n        });\n      };\n      this.openEditor = function (notification) {\n        var _this4 = this;\n        var userId;\n        this.closePopover();\n        userId = this.user.id;\n        if (!(userId && (notification != null ? notification.id : void 0))) {\n          return;\n        }\n        return $uibModal.open({\n          templateUrl: 'app/components/portal/enterprise/e-transcription-queue/transcription-edit-modal.html',\n          backdrop: 'static',\n          size: 'lg',\n          controller: 'TranscriptionEditModalCtrl',\n          controllerAs: 'modal',\n          resolve: {\n            modalNotification: function modalNotification() {\n              return angular.copy(notification);\n            },\n            modalUserId: function modalUserId() {\n              return userId;\n            },\n            modalPatientLabel: function modalPatientLabel() {\n              return _this4.patientLabel(notification);\n            },\n            modalObservationReportId: function modalObservationReportId() {\n              return _this4.resolveObservationReportId(notification);\n            },\n            modalPortalUser: function modalPortalUser() {\n              return angular.copy(_this4.user);\n            }\n          }\n        });\n      };\n      this.$onDestroy = function () {\n        if (typeof this._bodyScrollLockWatch === \"function\") {\n          this._bodyScrollLockWatch();\n        }\n        if (this.notificationsPopoverOpen) {\n          bodyScrollLockCount = Math.max(0, bodyScrollLockCount - 1);\n          _updateTranscriptionNotificationsBodyScrollLock();\n        }\n        if (typeof this._nqOff === \"function\") {\n          this._nqOff();\n        }\n        return NotificationLiveClientService.disconnect();\n      };\n    },\n    templateUrl: 'app/global/transcription-notifications/transcription-notifications.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:tableSort\n   * @restrict E\n   * @param {array} sortOptions possible sort options, objects that include a value and label\n   * @param {object} sortSelection currently selected sort field and direction\n   * @param {function} sortCallback callback to change sort for the relevant table\n   * @description\n   * Table header sort directive\n   */\n  angular.module('global').component('tableSort', {\n    bindings: {\n      sortOptions: '<',\n      sortSelection: '<?',\n      sortCallback: '&',\n      fieldIsSelected: '&?',\n      ascSortSelected: '&?',\n      tooltipClass: '<?'\n    },\n    controllerAs: 'vm',\n    transclude: true,\n    controller: function controller($log, $translate) {\n      this.$onInit = function () {\n        $log = $log.getInstance('tableSort');\n        $log.log('component loaded');\n        this.menuIsOpen = false;\n        if (!this.sortSelection) {\n          return this.sortSelection = {};\n        }\n      };\n      this.isChecked = function (s) {\n        return !s.separator && (s.isChecked || s.sortField === this.sortSelection.field && s.sortDir === this.sortSelection.dir);\n      };\n      this.fieldIsSelected = function (field) {\n        return this.sortOptions[0].sortField === field;\n      };\n      this.ascSortSelected = function () {\n        return this.isChecked(this.sortOptions[0]);\n      };\n      this.setSort = function (field, dir) {\n        $log.log(field);\n        $log.log(dir);\n        this.menuIsOpen = false;\n        if (this.sortCallback) {\n          return this.sortCallback({\n            field: field,\n            dir: dir\n          });\n        }\n      };\n    },\n    templateUrl: 'app/global/table-sort/table-sort.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:tableLister\n   * @restrict E\n   * @param {array} list sort options, objects that include a value and label\n   * @param {object} options\n   * @param {string} options.entityName used for display on buttons and alerts (ex: 'Goal', 'User', etc)\n   * @param {array} options.properties ordered list of properties used to configure the columns displayed\n   *  {\n          label: Name of the property to display ex: 'Creation date',\n          value: Property path from the entity ex 'created_at',\n          type: Property value type ex 'text', 'number', 'date', 'select'\n          required: Optional boolean if this property is required when adding/editing\n          options: Optional additional options for inputs ex array-options for select input [{label: 'On', value: 'ON'}, {label: 'Off', value: 'OFF'}]\n      }\n   * @param {object} options.defaultRow default values used when adding an entity\n   * @param {function} getPageCallback(pageNumber, perPage) called to fetch the specified page of entities\n   * @param {function} onSaveCallback(entity) called when creating a new entity or updating an existing\n   * @param {function} onDeleteCallback(entity) called when deleting a row\n   * @description\n   * Table list that displays passed in properties sort directive\n   */\n  angular.module('global').component('tableLister', {\n    bindings: {\n      options: '<',\n      isCompact: '<?',\n      getPageCallback: '&',\n      onSaveCallback: '&',\n      onDeleteCallback: '&'\n    },\n    controllerAs: 'vm',\n    transclude: true,\n    controller: function controller($log, $filter, NotificationsService, StandardPagination) {\n      this.$onInit = function () {\n        $log = $log.getInstance('tableLister');\n        $log.log('table lister component loaded');\n        this.tempRow = this.options.defaultRow;\n        this.addingRow = false;\n        this.editingRow = null;\n        this.perPage = 10;\n        this.pageNumber = 1;\n        this.addRowForm = {};\n        this.getPage();\n        return this.optionsForPagination = StandardPagination;\n      };\n      this.datePickerOptions = {\n        singleDatePicker: true\n      };\n      this.truncateField = function (field) {\n        var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 30;\n        if ((field != null ? field.length : void 0) > length) {\n          return field.substring(0, length) + '...';\n        } else {\n          return field;\n        }\n      };\n      this.getPage = _.debounce( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var response;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log.log('getPageCalled');\n              $log.log('perPage', this.perPage);\n              $log.log('pageNumber', this.pageNumber);\n              this.isLoading = true;\n              this.cancel();\n              _context.next = 7;\n              return this.getPageCallback({\n                perPage: this.perPage,\n                pageNumber: this.pageNumber\n              });\n            case 7:\n              response = _context.sent;\n              this.list = response.data;\n              this.count = Number(response.count || 0);\n              return _context.abrupt(\"return\", this.isLoading = false);\n            case 11:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      })));\n      this.getDisplay = function (row, property) {\n        var ref;\n        if (property.filter) {\n          return $filter(property.filter)(row[property.value]);\n        } else if (property.options) {\n          return (ref = _.find(property.options, {\n            value: row[property.value]\n          })) != null ? ref.label : void 0;\n        } else {\n          return row[property.value];\n        }\n      };\n      this.addRow = function () {\n        var newRow;\n        this.addingRow = true;\n        newRow = angular.copy(this.options.defaultRow);\n        newRow.isOpen = true; // Set the isOpen property to true for the new row\n        this.list.push(newRow);\n        return this.edit(this.list.length - 1);\n      };\n      this.cancel = function () {\n        this.tempRow = this.options.defaultRow;\n        if (this.addingRow) {\n          //remove row we were adding\n          this.list.splice(this.editingRow, 1);\n        }\n        this.addingRow = false;\n        return this.editingRow = null;\n      };\n      this.save = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var error, ref, ref1, resp;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              this.isLoading = true;\n              _context2.prev = 1;\n              _context2.next = 4;\n              return this.onSaveCallback({\n                row: this.tempRow\n              });\n            case 4:\n              resp = _context2.sent;\n              NotificationsService.success($filter('translate')('PORTAL.ENTERPRISE.CCM.TOASTS.SUCCESS', {\n                entityName: this.options.entityName\n              }));\n              _context2.next = 12;\n              break;\n            case 8:\n              _context2.prev = 8;\n              _context2.t0 = _context2[\"catch\"](1);\n              error = _context2.t0;\n              NotificationsService.error($filter('translate')('PORTAL.ENTERPRISE.CCM.TOASTS.ERROR', {\n                entityName: this.options.entityName,\n                error: error != null ? (ref = error.data) != null ? (ref1 = ref.data) != null ? ref1.message : void 0 : void 0 : void 0\n              }));\n            case 12:\n              if (this.addingRow) {\n                this.getPage();\n              } else {\n                this.list[this.editingRow] = resp || this.list[this.editingRow];\n              }\n              this.tempRow = this.options.defaultRow;\n              this.addingRow = false;\n              this.editingRow = null;\n              return _context2.abrupt(\"return\", this.isLoading = false);\n            case 17:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this, [[1, 8]]);\n      }));\n      this.edit = function (idx) {\n        var i, len, p, ref, ref1;\n        this.tempRow = angular.copy(this.list[idx]);\n        ref = this.options.properties;\n        for (i = 0, len = ref.length; i < len; i++) {\n          p = ref[i];\n          if (p.type === 'date') {\n            // parse string to JS Date and add stubbed isValid method to prevent datepicker issues\n            this.tempRow[p.value] = Date.parse(this.tempRow[p.value]);\n            if ((ref1 = this.tempRow[p.value]) != null) {\n              ref1.isValid = function () {\n                return true;\n              };\n            }\n          }\n        }\n        return this.editingRow = idx;\n      };\n      this.delete = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(idx) {\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                this.isLoading = true;\n                _context3.next = 3;\n                return this.onDeleteCallback({\n                  row: this.list[idx]\n                });\n              case 3:\n                this.getPage();\n                return _context3.abrupt(\"return\", this.isLoading = false);\n              case 5:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        return function (_x) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n    },\n    templateUrl: 'app/global/table-lister/table-lister.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /*\n   * @ngdoc directive\n   * @name global.directive:statusFilter\n   * @restrict E\n   * @description\n   * A toggle for the service options\n   */\n  angular.module('global').component('statusFilter', {\n    bindings: {\n      onChange: '&',\n      isCcm: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, EUserProfileFilterService, PatientStatuses) {\n      this.$onInit = function () {\n        var _this = this;\n        var pendingSetup, persistedStatus, ref;\n        $log = $log.getInstance('statusFilter');\n        $log.log('component loaded');\n        $log.log('this.selected', this.selectedOption);\n        pendingSetup = this.isCcm ? {\n          label: 'Pending Care Plan',\n          value: PatientStatuses.PENDING_CARE_PLAN\n        } : {\n          label: 'Pending Setup',\n          value: PatientStatuses.PENDING_SETUP,\n          children: [{\n            label: 'Pending Setup - Comments Added',\n            value: PatientStatuses.NOTES_ADDED\n          }, {\n            label: 'Pending Setup - No Comments Added',\n            value: PatientStatuses.NO_NOTES_ADDED\n          }]\n        };\n        this.activeStatusOptions = [{\n          label: 'Active + Pending',\n          value: PatientStatuses.ACTIVE,\n          children: this.isCcm ? [{\n            label: 'Active',\n            value: PatientStatuses.CARE_PLAN_APPROVED\n          }, pendingSetup, {\n            label: 'Pending Care Plan Approval',\n            value: PatientStatuses.PENDING_CARE_PLAN_APPROVAL\n          }] : [{\n            label: 'Active',\n            value: PatientStatuses.SETUP_COMPLETE\n          }, pendingSetup]\n        }, {\n          label: 'Not Active',\n          value: PatientStatuses.NOT_ACTIVE,\n          children: [{\n            label: 'Paused',\n            value: PatientStatuses.PAUSED,\n            children: [{\n              label: 'Hospitalized',\n              value: PatientStatuses.HOSPITALIZED\n            }, {\n              label: 'Traveling',\n              value: PatientStatuses.TRAVELING\n            }]\n          }, {\n            label: 'Deactivated',\n            value: \"{ \\\"lte\\\": \\\"\".concat(luxon.DateTime.local().endOf('day'), \"\\\" }\")\n          }]\n        }, {\n          label: 'Demo',\n          value: PatientStatuses.DEMO\n        }];\n        this.flattenedActiveStatusOptions = EUserProfileFilterService.flattenOptions(this.activeStatusOptions);\n        $log.log('flattended', this.flattenedActiveStatusOptions);\n        if (EUserProfileFilterService.hasFilters()) {\n          persistedStatus = _.find(this.flattenedActiveStatusOptions, {\n            value: (ref = EUserProfileFilterService.getFilter()) != null ? ref['$user_profile.deactivated_at$'] : void 0\n          });\n          // ui-select repeats `option.value as option`, so the model holds the value.\n          // Assigning the option object leaves the dropdown showing its placeholder.\n          this.activeStatus = persistedStatus != null ? persistedStatus.value : void 0;\n        }\n        if (!this.activeStatus) {\n          this.activeStatus = this.activeStatusOptions[0].value;\n        }\n        // Clear all filters lives in the patient list card, which drops the status out of\n        // the query but cannot reach this component's ng-model. Without this listener the\n        // list reloads as Active + Pending while the dropdown still shows the cleared status.\n        return this.filtersClearedListener = $rootScope.$on('patientReporting:filtersCleared', function () {\n          return _this.activeStatus = _this.activeStatusOptions[0].value;\n        });\n      };\n      this.$onDestroy = function () {\n        return typeof this.filtersClearedListener === \"function\" ? this.filtersClearedListener() : void 0;\n      };\n      /*\n        parses the selected value, creates a payload object based on its properties, and calls onChange with the new payload.\n      */\n      this.onCustomChange = function (param, selectedItem) {\n        var e, newPayload, parsedValue, valueToUse;\n        valueToUse = '';\n        try {\n          parsedValue = selectedItem.model.value ? JSON.parse(selectedItem.model.value) : null;\n          if (parsedValue != null && parsedValue.lte != null) {\n            valueToUse = {\n              \"lte\": parsedValue.lte\n            };\n          } else {\n            valueToUse = selectedItem.model.value;\n          }\n        } catch (error) {\n          e = error;\n          valueToUse = selectedItem.model.value;\n        }\n        // Now we're sending an object that has the same format as the expected payload\n        newPayload = {\n          model: valueToUse\n        };\n        // we call the bound function by passing in a dictionary\n        // the keys are used to map to the parameters of the bound function\n        return this.onChange({\n          property: param,\n          payload: newPayload\n        });\n      };\n    },\n    templateUrl: 'app/global/status-filter/status-filter.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:sourceDetails\n   * @restrict E\n   * @param {object} source the stripe source (card, bank)\n   * @description\n   * Display the currently selected default source for the subscription or user\n   */\n  angular.module('global').component('sourceDetails', {\n    'ngInject': 'ngInject',\n    bindings: {\n      source: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        return $log = $log.getInstance('sourceDetails');\n      };\n    },\n    template: \"<div class=\\\"source-details\\\">\\n  <span ng-if=\\\"vm.source.type === 'card'\\\">{{vm.source.card.brand}} **** **** **** {{vm.source.card.last4}}</span>\\n  <span ng-if=\\\"vm.source.object === 'card'\\\">{{vm.source.brand}} **** **** **** {{vm.source.last4}}</span>\\n  <span ng-if=\\\"vm.source.object === 'bank_account'\\\"><span class=\\\"bank-name\\\">{{vm.source.bank_name + ' -'}}</span> Account number *****{{vm.source.last4}}</span>\\n  <span ng-if=\\\"!vm.source.object\\\"></span>\\n</div>\"\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:signatureRequiredModal\n   * @restrict E\n   * @param {string} headerTrans translation string (index.config.translate.coffee) for the modal header\n   * @param {string} bodyTrans translation string (index.config.translate.coffee) for the modal body\n   * @param {string} bodyTrans2 second translation string (index.config.translate.coffee) for the modal body\n   * @param {string=} closeBtnTrans translation string (index.config.translate.coffee) for the modal close button text\n   * @param {string} actionBtnTrans translation string (index.config.translate.coffee) for the modal action button text\n   * @param {string} signLaterBtnTrans translation string (index.config.translate.coffee) for the modal sign later button text\n   * @param {function=} actionCallback callback function to fire if a user clicks the actionBtn\n   * @param {function=} signLaterCallback callback function to fire if a user clicks the sign later btn\n   * @param {function=} closeCallback callback function to fire if a user clicks the closeBtn\n   * @param {object=} customPayload pass custom object to modal\n   * @param {string=} templateUrl path to a custom template\n   * @param {expression=} shortCircuitIf if true, don't show modal, just process as if this directive wasn't there\n   * @description\n   * Surround some HTML with this directive to show a modal confirmation dialog before performing the actionCallback. This directive uses transclusion.\n   */\n  angular.module('global').component('signatureRequiredModal', {\n    bindings: {\n      headerTrans: '@',\n      bodyTrans: '@',\n      bodyTrans2: '@?',\n      closeBtnTrans: '@?',\n      actionBtnTrans: '@',\n      actionCallback: '&?',\n      closeCallback: '&?',\n      customPayload: '<?',\n      templateUrl: '@?',\n      shortCircuitIf: '<?',\n      signLaterBtnTrans: '@',\n      signLaterCallback: '&?',\n      showCloseButton: '<?'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $element, ModalService, $state, $translate, $timeout) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('signatureRequiredModal');\n        this.timeout = null;\n        this.elementToBind = $element;\n        this.eventType = 'click';\n        this.translate();\n        return this.timeout = $timeout(function () {\n          return _this.onDomLoaded();\n        }, 0);\n      };\n      this.onDomLoaded = function () {\n        var _this2 = this;\n        if (this.elementToBind.find('form').length > 0) {\n          this.eventType = 'submit';\n          this.elementToBind = $element.find('form')[0];\n        }\n        if (this.actionCallback || this.closeCallback) {\n          return angular.element(this.elementToBind).bind(this.eventType, /*#__PURE__*/function () {\n            var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(event) {\n              var error, modalDefaults, modalOptions, result;\n              return regeneratorRuntime.wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    if (!_this2.shortCircuitIf) {\n                      _context.next = 4;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", _this2.actionCallback());\n                  case 4:\n                    // prevent navigation\n                    event.preventDefault();\n                    event.stopPropagation();\n                    modalOptions = {\n                      headerText: _this2.headerTxt,\n                      bodyText: _this2.bodyTxt,\n                      bodyText2: _this2.bodyTxt2,\n                      closeButtonText: _this2.closeButtonText,\n                      actionButtonText: _this2.actionButtonText,\n                      signLaterButtonText: _this2.signLaterButtonText,\n                      payload: _this2.customPayload\n                    };\n                    modalDefaults = {\n                      backdrop: true,\n                      keyboard: true,\n                      modalFade: true,\n                      templateUrl: 'app/global/signature-required-modal/signature-required-modal.html'\n                    };\n                    _context.prev = 8;\n                    _context.next = 11;\n                    return ModalService.showModal(modalDefaults, modalOptions).result;\n                  case 11:\n                    result = _context.sent;\n                    $log.log('RESULT', result);\n                    // sign later button clicked\n                    if (!(result === 'sign-later')) {\n                      _context.next = 18;\n                      break;\n                    }\n                    if (!_this2.signLaterCallback) {\n                      _context.next = 16;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", _this2.signLaterCallback());\n                  case 16:\n                    _context.next = 25;\n                    break;\n                  case 18:\n                    if (!(result === true)) {\n                      _context.next = 23;\n                      break;\n                    }\n                    if (!_this2.actionCallback) {\n                      _context.next = 21;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", _this2.actionCallback());\n                  case 21:\n                    _context.next = 25;\n                    break;\n                  case 23:\n                    if (!_this2.closeCallback) {\n                      _context.next = 25;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", _this2.closeCallback());\n                  case 25:\n                    _context.next = 31;\n                    break;\n                  case 27:\n                    _context.prev = 27;\n                    _context.t0 = _context[\"catch\"](8);\n                    error = _context.t0;\n                    return _context.abrupt(\"return\", $log.log('error', error));\n                  case 31:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee, null, [[8, 27]]);\n            }));\n            return function (_x) {\n              return _ref.apply(this, arguments);\n            };\n          }());\n        }\n      };\n      // recalculate translations when translation bindings change\n      this.translate = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var translations;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              if (!(this.headerTrans || this.bodyTrans || this.actionBtnTrans || this.closeBtnTrans || this.signLaterBtnTrans)) {\n                _context2.next = 10;\n                break;\n              }\n              _context2.next = 3;\n              return $translate([this.headerTrans, this.bodyTrans, this.bodyTrans2, this.closeBtnTrans, this.actionBtnTrans, this.signLaterBtnTrans]);\n            case 3:\n              translations = _context2.sent;\n              this.headerTxt = translations[this.headerTrans];\n              this.bodyTxt = translations[this.bodyTrans];\n              this.bodyTxt2 = translations[this.bodyTrans2];\n              this.closeButtonText = translations[this.closeBtnTrans];\n              this.actionButtonText = translations[this.actionBtnTrans];\n              return _context2.abrupt(\"return\", this.signLaterButtonText = translations[this.signLaterBtnTrans]);\n            case 10:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.$onChanges = function (changes) {\n        return this.translate();\n      };\n      this.$onDestroy = function () {\n        $timeout.cancel(this.timeout);\n        return angular.element(this.elementToBind).unbind(this.eventType);\n      };\n    },\n    template: '<ng-transclude></ng-transclude>'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /*\n   * @ngdoc directive\n   * @name global.directive:serviceOptions\n   * @restrict E\n   * @description\n   * A toggle for the service options\n   */\n  angular.module('global').component('serviceOptions', {\n    bindings: {\n      selectedOption: '@',\n      ccmEnabled: '<',\n      user: '=',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, SalesforceService, NotificationsService, ESelectedPatientServiceService, PATIENT_SERVICES) {\n      this.$onInit = function () {\n        $log = $log.getInstance('serviceOptions');\n        $log.log('component loaded');\n        $log.log('this.selected', this.selectedOption);\n        return ESelectedPatientServiceService.selectPatientService(this.selectedOption === 'physiologic' ? PATIENT_SERVICES.RPM : PATIENT_SERVICES.CCM);\n      };\n      this.handleCCMToggle = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, newLead;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (this.ccmEnabled) {\n                _context.next = 26;\n                break;\n              }\n              // If ccm feat flag = false, create a Salesforce lead and show a toast.\n              newLead = SalesforceService.buildNewLead();\n              // Populate the newLead object\n              newLead.lead_source = \"Other\";\n              // Add additional fields as needed, perhaps based on other properties or methods.\n              newLead.company = this.enterpriseCustomer.name;\n              newLead.name_last = this.user.user_profile.name_last;\n              newLead.name_first = this.user.user_profile.name_first;\n              newLead.email = this.user.user_profile.email;\n              newLead.phone = this.user.user_profile.phone_1_number;\n              _context.prev = 8;\n              _context.next = 11;\n              return SalesforceService.createNewLead(newLead);\n            case 11:\n              NotificationsService.success(\"PORTAL.ENTERPRISE.CCM.TOASTS.UPSELL.SUCCESS\");\n              return _context.abrupt(\"return\", $log.log('created new Salesforce lead', newLead));\n            case 15:\n              _context.prev = 15;\n              _context.t0 = _context[\"catch\"](8);\n              error = _context.t0;\n              if (!(error.data.data.errorMessage.name === 'DUPLICATES_DETECTED')) {\n                _context.next = 22;\n                break;\n              }\n              return _context.abrupt(\"return\", NotificationsService.warn(\"PORTAL.ENTERPRISE.CCM.TOASTS.UPSELL.WARN\"));\n            case 22:\n              NotificationsService.error(\"PORTAL.ENTERPRISE.CCM.TOASTS.UPSELL.ERROR\");\n              return _context.abrupt(\"return\", $log.log('error', error));\n            case 24:\n              _context.next = 27;\n              break;\n            case 26:\n              return _context.abrupt(\"return\", this.selectedOption = 'care');\n            case 27:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[8, 15]]);\n      }));\n    },\n    templateUrl: 'app/global/service-options/service-options.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:provider-practices\n   * @restrict E\n   * @param {function} practices - name and id or practices to change to\n   * List of practices a provider has access to\n   * @example\n    <pre>\n     <provider-practice\n             practices=\"vm.current_user.user_profile.provider_practices\"\n            >\n      </provider-practice>\n    </pre>\n   */\n  angular.module('global').component('providerPractices', {\n    transclude: true,\n    bindings: {\n      provider: '<',\n      onEdit: '&'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $state, $translate, UserService, AuthService, AdminService, ClinicalMonitoringService, $stateParams, EUserProfilesService, UserProfilesService, OfficeLifecycleNormalizer) {\n      var DAY_LABELS;\n      $log = $log.getInstance('providerPractices');\n      $log.log('component loaded');\n      DAY_LABELS = {\n        monday: 'Monday',\n        tuesday: 'Tuesday',\n        wednesday: 'Wednesday',\n        thursday: 'Thursday',\n        friday: 'Friday',\n        saturday: 'Saturday',\n        sunday: 'Sunday'\n      };\n      this.expandedProfileId = null;\n      this.showEditButtons = false; // we are removing the ability to self add or edit AuthService.isAdmin() && AuthService.isInternal()\n      this.displayProfiles = [];\n      this.assignmentOfficesById = {};\n      this.assignmentOrgsById = {};\n      this.showAssignedOnly = false;\n      this.didLoadAssignments = false;\n      this.practiceSwitchRequestId = 0;\n      this.isPracticeSwitching = false;\n      this.expandedOfficeSections = {};\n      this.officeSectionKey = function (profileId, sectionName) {\n        return \"\".concat(profileId, \":\").concat(sectionName);\n      };\n      this.isOfficeSectionExpanded = function (profileId, sectionName) {\n        return Boolean(this.expandedOfficeSections[this.officeSectionKey(profileId, sectionName)]);\n      };\n      this.toggleOfficeSection = function (profileId, sectionName) {\n        var key;\n        key = this.officeSectionKey(profileId, sectionName);\n        return this.expandedOfficeSections[key] = !this.expandedOfficeSections[key];\n      };\n      this.officeSectionCount = function (profile, sectionName) {\n        var ref, ref1;\n        return (profile != null ? (ref = profile.officeLifecycleGroups) != null ? (ref1 = ref[sectionName]) != null ? ref1.length : void 0 : void 0 : void 0) || 0;\n      };\n      this.sortByAssignmentThenName = function (items, isAssignedFn, nameFn) {\n        return _.sortBy(items, [function (item) {\n          if (isAssignedFn(item)) {\n            return 0;\n          } else {\n            return 1;\n          }\n        }, function (item) {\n          return String(nameFn(item) || '').toLowerCase();\n        }]);\n      };\n      this.hasClinicalMonitoringMembership = function () {\n        var ref;\n        return _.some(((ref = this.provider) != null ? ref.clinical_monitoring_memberships : void 0) || [], function (membership) {\n          return (membership != null ? membership.is_active : void 0) !== false;\n        });\n      };\n      this.canViewAssignedOnlyToggle = function () {\n        return AuthService.isClinicalMonitoring();\n      };\n      this.shouldShowAssignedOnlyToggle = function () {\n        return this.canViewAssignedOnlyToggle() && this.hasClinicalMonitoringMembership();\n      };\n      this.loadClinicalMonitoringAssignments = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var _this = this;\n        var error, officeAssignments;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              this.assignmentOfficesById = {};\n              this.assignmentOrgsById = {};\n              this.didLoadAssignments = false;\n              if (this.shouldShowAssignedOnlyToggle()) {\n                _context.next = 5;\n                break;\n              }\n              return _context.abrupt(\"return\");\n            case 5:\n              _context.prev = 5;\n              _context.next = 8;\n              return ClinicalMonitoringService.getMyAssignments();\n            case 8:\n              officeAssignments = _context.sent;\n              _.each(officeAssignments || [], function (officeAssignment) {\n                var assignments;\n                assignments = officeAssignment.assignments || [];\n                if (!assignments.length) {\n                  return;\n                }\n                _this.assignmentOfficesById[officeAssignment.office_id] = officeAssignment;\n                if (officeAssignment.enterprise_customer_id) {\n                  return _this.assignmentOrgsById[officeAssignment.enterprise_customer_id] = true;\n                }\n              });\n              return _context.abrupt(\"return\", this.didLoadAssignments = true);\n            case 13:\n              _context.prev = 13;\n              _context.t0 = _context[\"catch\"](5);\n              error = _context.t0;\n              return _context.abrupt(\"return\", $log.warn('Failed to load clinical monitoring assignments for practice selector', error));\n            case 17:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[5, 13]]);\n      }));\n      this.getAssignmentDaysText = function (assignment) {\n        var days, ref;\n        if (!(assignment != null ? (ref = assignment.days_of_week) != null ? ref.length : void 0 : void 0)) {\n          return '';\n        }\n        days = _.map(assignment.days_of_week, function (day) {\n          return DAY_LABELS[day] || day;\n        });\n        return \"(\".concat(days.join(', '), \")\");\n      };\n      this.hasDisplayValue = function (value) {\n        return Boolean(String(value || '').trim());\n      };\n      this.toTitleCase = function (value) {\n        return _.map(String(value || '').split(/[_\\s]+/), function (word) {\n          var lowerWord;\n          lowerWord = word.toLowerCase();\n          if (!lowerWord) {\n            return '';\n          }\n          return \"\".concat(lowerWord.charAt(0).toUpperCase()).concat(lowerWord.slice(1));\n        }).join(' ');\n      };\n      this.formatContactMethod = function (contactMethod) {\n        var normalizedValue;\n        normalizedValue = String(contactMethod || '').trim().toLowerCase();\n        if (!normalizedValue) {\n          return '';\n        }\n        switch (normalizedValue) {\n          case 'dialer':\n            return 'Dialer';\n          case 'manual':\n            return 'Manual';\n          default:\n            return this.toTitleCase(normalizedValue);\n        }\n      };\n      this.getAssignmentLabel = function (assignment) {\n        var assignmentLabel;\n        assignmentLabel = assignment.assignment_type_label || assignment.assignment_type;\n        return \"Assigned to \".concat(assignmentLabel);\n      };\n      this.buildOfficeAssignmentDetails = function (assignment) {\n        return {\n          id: assignment.id,\n          label: this.getAssignmentLabel(assignment),\n          daysText: this.getAssignmentDaysText(assignment)\n        };\n      };\n      this.buildOfficeAssignmentDetailBullets = function (officeAssignment) {\n        var _this2 = this;\n        var assignmentTypes, assignments, detailBullets;\n        assignments = (officeAssignment != null ? officeAssignment.assignments : void 0) || [];\n        detailBullets = [];\n        assignmentTypes = _.uniq(_.map(assignments, function (assignment) {\n          return assignment.assignment_type;\n        }));\n        _.each(assignments, function (assignment) {\n          if (!_this2.hasDisplayValue(assignment.note)) {\n            return;\n          }\n          return detailBullets.push({\n            id: \"assignment-note-\".concat(assignment.id),\n            value: String(assignment.note).trim()\n          });\n        });\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.special_notes : void 0)) {\n          detailBullets.push({\n            id: \"office-note-\".concat(officeAssignment.office_id),\n            value: String(officeAssignment.special_notes).trim()\n          });\n        }\n        if (_.includes(assignmentTypes, 'calls_and_documentation') && this.hasDisplayValue(officeAssignment != null ? officeAssignment.contact_method : void 0)) {\n          detailBullets.push({\n            id: \"contact-method-\".concat(officeAssignment.office_id),\n            label: 'Communication method',\n            value: this.formatContactMethod(officeAssignment.contact_method)\n          });\n        }\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.timezone : void 0)) {\n          detailBullets.push({\n            id: \"timezone-\".concat(officeAssignment.office_id),\n            label: 'Timezone',\n            value: String(officeAssignment.timezone).trim()\n          });\n        }\n        if (this.hasDisplayValue(officeAssignment != null ? officeAssignment.escalation_protocol_url : void 0)) {\n          detailBullets.push({\n            id: \"escalation-protocol-url-\".concat(officeAssignment.office_id),\n            label: null,\n            value: 'Escalation Protocol',\n            href: String(officeAssignment.escalation_protocol_url).trim()\n          });\n        }\n        return detailBullets;\n      };\n      this.practiceLifecycleOptions = function (profile) {\n        var ref;\n        return {\n          practiceDeactivatedAt: (profile != null ? (ref = profile.enterprise_customer) != null ? ref.deactivated_at : void 0 : void 0) || null,\n          practice: (profile != null ? profile.enterprise_customer : void 0) || null\n        };\n      };\n      this.buildDisplayOffice = function (office, profile) {\n        var _this3 = this;\n        var displayOffice, officeAssignment, officeAssignments;\n        officeAssignment = this.assignmentOfficesById[office.id];\n        officeAssignments = (officeAssignment != null ? officeAssignment.assignments : void 0) || [];\n        displayOffice = angular.extend({}, office, {\n          hasClinicalMonitoringAssignment: officeAssignments.length > 0,\n          clinicalMonitoringAssignments: _.map(officeAssignments, function (assignment) {\n            return _this3.buildOfficeAssignmentDetails(assignment);\n          }),\n          clinicalMonitoringAssignmentDetails: this.buildOfficeAssignmentDetailBullets(officeAssignment)\n        });\n        return OfficeLifecycleNormalizer.decorateOffice(displayOffice, this.practiceLifecycleOptions(profile));\n      };\n      this.buildDisplayProfile = function (profile) {\n        var _this4 = this;\n        var lifecycleOptions, officeLifecycleGroups, sortedProviderOffices;\n        lifecycleOptions = this.practiceLifecycleOptions(profile);\n        sortedProviderOffices = this.sortByAssignmentThenName(_.map(profile.provider_offices || [], function (office) {\n          return _this4.buildDisplayOffice(office, profile);\n        }), function (office) {\n          return office.hasClinicalMonitoringAssignment;\n        }, function (office) {\n          return office.name;\n        });\n        officeLifecycleGroups = OfficeLifecycleNormalizer.groupOffices(sortedProviderOffices, lifecycleOptions);\n        return angular.extend({}, profile, {\n          hasClinicalMonitoringAssignmentInOrg: Boolean(this.assignmentOrgsById[profile.enterprise_customer_id]),\n          sortedProviderOffices: sortedProviderOffices,\n          officeLifecycleGroups: officeLifecycleGroups\n        });\n      };\n      this.filterProfileByAssignments = function (profile) {\n        var assignedOffices, officeLifecycleGroups;\n        if (!(this.showAssignedOnly && this.shouldShowAssignedOnlyToggle() && this.didLoadAssignments)) {\n          return profile;\n        }\n        assignedOffices = _.filter(profile.sortedProviderOffices || [], function (office) {\n          return office.hasClinicalMonitoringAssignment;\n        });\n        if (!assignedOffices.length) {\n          return null;\n        }\n        officeLifecycleGroups = OfficeLifecycleNormalizer.groupOffices(assignedOffices, this.practiceLifecycleOptions(profile));\n        return angular.extend({}, profile, {\n          sortedProviderOffices: assignedOffices,\n          officeLifecycleGroups: officeLifecycleGroups,\n          hasClinicalMonitoringAssignmentInOrg: true\n        });\n      };\n      this.rebuildDisplayProfiles = function () {\n        var _this5 = this;\n        var currentExpandedProfileId, filteredProfiles, profiles, ref;\n        currentExpandedProfileId = this.expandedProfileId;\n        profiles = _.map(((ref = this.provider) != null ? ref.user_profiles : void 0) || [], function (profile) {\n          return _this5.buildDisplayProfile(profile);\n        });\n        filteredProfiles = _.compact(_.map(profiles, function (profile) {\n          return _this5.filterProfileByAssignments(profile);\n        }));\n        this.displayProfiles = this.sortByAssignmentThenName(filteredProfiles, function (profile) {\n          return profile.hasClinicalMonitoringAssignmentInOrg;\n        }, function (profile) {\n          var ref1;\n          return (ref1 = profile.enterprise_customer) != null ? ref1.name : void 0;\n        });\n        if (currentExpandedProfileId && _.some(this.displayProfiles, {\n          id: currentExpandedProfileId\n        })) {\n          return this.expandedProfileId = currentExpandedProfileId;\n        } else {\n          return this.expandedProfileId = null;\n        }\n      };\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var ePatient, officeId, p, providerId, ref;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log('Practices', this.provider);\n              this.showAssignedOnly = false;\n              _.chain(this.provider.user_profiles).thru(function (arr) {\n                var e, t;\n                e = _.minBy(arr, function (p) {\n                  return p != null ? p.created_at : void 0;\n                });\n                t = e != null ? +new Date(e.created_at) : null;\n                return _.each(arr, function (p) {\n                  var ref;\n                  return p.isOriginal = t != null && +new Date((ref = p != null ? p.created_at : void 0) != null ? ref : 0) === t;\n                });\n              }).value();\n              _context2.next = 5;\n              return this.loadClinicalMonitoringAssignments();\n            case 5:\n              this.rebuildDisplayProfiles();\n              if (!($stateParams.enterprise_customer_id && $stateParams.patient_user_profile_id)) {\n                _context2.next = 22;\n                break;\n              }\n              _context2.next = 9;\n              return UserProfilesService.adminGet($stateParams.patient_user_profile_id);\n            case 9:\n              p = _context2.sent;\n              _context2.next = 12;\n              return EUserProfilesService.get($stateParams.enterprise_customer_id, $stateParams.patient_user_profile_id);\n            case 12:\n              ePatient = _context2.sent;\n              if (!((ePatient != null ? (ref = ePatient.patient_reports) != null ? ref.length : void 0 : void 0) < 1)) {\n                _context2.next = 17;\n                break;\n              }\n              _context2.next = 16;\n              return EUserProfilesService.get($stateParams.enterprise_customer_id, $stateParams.patient_user_profile_id, {\n                services: 'CCM'\n              });\n            case 16:\n              ePatient = _context2.sent;\n            case 17:\n              officeId = _.chain(p.providers).filter(function (provider) {\n                return provider.provider_patient_authorization.is_primary;\n              }).map('default_office_id').first().value();\n              providerId = _.chain(p.providers).filter(function (provider) {\n                return provider.provider_patient_authorization.is_primary;\n              }).map('id').first().value();\n              $log.log('admin patient', p);\n              $log.log('ePatient', ePatient);\n              return _context2.abrupt(\"return\", this.changePractice(providerId, officeId, ePatient));\n            case 22:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n      this.onShowAssignedOnlyChange = function () {\n        return this.rebuildDisplayProfiles();\n      };\n      this.changePractice = /*#__PURE__*/function () {\n        var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(userProfileId, officeId) {\n          var patient,\n            masqUser,\n            requestId,\n            selectedProfile,\n            _args3 = arguments;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                patient = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : null;\n                if (!this.isPracticeSwitching) {\n                  _context3.next = 3;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 3:\n                requestId = this.practiceSwitchRequestId + 1;\n                this.practiceSwitchRequestId = requestId;\n                this.isPracticeSwitching = true;\n                $log.log('Switching profile->', userProfileId);\n                $log.log('Switching office->', officeId);\n                // If masquerading, update the masquerading user's profile to match the selected practice\n                if (AdminService.isMasquerading()) {\n                  selectedProfile = _.find(this.provider.user_profiles, {\n                    id: userProfileId\n                  });\n                  if (selectedProfile) {\n                    masqUser = AdminService.getMasqueradingUser();\n                    if (masqUser) {\n                      // Update the masquerading user's user_profile to the selected one\n                      masqUser.user_profile = selectedProfile;\n                      AdminService.setMasqueradingUser(masqUser);\n                      // Also update the enterprise customer if it exists\n                      if (selectedProfile.enterprise_customer) {\n                        AdminService.setMasqueradingEnterpriseCustomer(selectedProfile.enterprise_customer);\n                        $log.log('Updated masquerading to profile:', selectedProfile.id, 'enterprise customer:', selectedProfile.enterprise_customer.name);\n                      }\n                    }\n                  }\n                }\n                _context3.prev = 9;\n                _context3.next = 12;\n                return UserService.switchUserProfile(userProfileId);\n              case 12:\n                if (!(this.practiceSwitchRequestId !== requestId)) {\n                  _context3.next = 14;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 14:\n                _context3.next = 16;\n                return UserService.switchOffice(this.provider.id, officeId);\n              case 16:\n                if (!(this.practiceSwitchRequestId !== requestId)) {\n                  _context3.next = 18;\n                  break;\n                }\n                return _context3.abrupt(\"return\");\n              case 18:\n                if (!patient) {\n                  _context3.next = 22;\n                  break;\n                }\n                return _context3.abrupt(\"return\", $state.go('enterprise.observation_report', {\n                  user_profile_id: patient.id,\n                  observation_report_id: patient.patient_reports[0].id\n                }));\n              case 22:\n                return _context3.abrupt(\"return\", $state.go('enterprise.dashboard'));\n              case 23:\n                _context3.prev = 23;\n                if (this.practiceSwitchRequestId === requestId) {\n                  this.isPracticeSwitching = false;\n                }\n                return _context3.finish(23);\n              case 26:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this, [[9,, 23, 26]]);\n        }));\n        return function (_x, _x2) {\n          return _ref3.apply(this, arguments);\n        };\n      }();\n      this.onOfficeCardKeydown = function ($event, userProfileId, officeId) {\n        var ref;\n        if ((ref = $event != null ? $event.which : void 0) !== 13 && ref !== 32) {\n          return;\n        }\n        $event.preventDefault();\n        return this.changePractice(userProfileId, officeId);\n      };\n      this.expandPanel = function (profileId) {\n        if (this.expandedProfileId === profileId) {\n          return this.expandedProfileId = null;\n        } else {\n          return this.expandedProfileId = profileId;\n        }\n      };\n    },\n    templateUrl: 'app/global/provider-practices/provider-practices.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:phoneTypeModal\n   * @restrict E\n   * @param {object} phoneType 'w', 'h', or 'm'\n   * @param {object} phoneNumber non-twilio formatted 10 digit phone number\n   * @description\n   * Shows the user a modal if the phone type doesn't match the Twilio carrier type returned (landline, mobile, voip).\n   * Shows a notification if the user enters an invalid number.\n   * @example\n    <pre>\n      <phone-type-modal\n                  phone-type=\"vm.contact.phone_1_type\"\n                  phone-number=\"vm.contact.phone_1_number\"></phone-type-modal>\n    </pre>\n   */\n  angular.module('global').component('phoneTypeModal', {\n    bindings: {\n      phoneType: '=',\n      phoneNumber: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $translate, TwilioService, ModalService, NotificationsService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('phoneTypeModal');\n        $log.log('component loaded');\n        return $log.log('this.phoneType', this.phoneType);\n      };\n      this.$onChanges = function (changes) {\n        var ref, ref1, ref2;\n        $log.log('changes', changes);\n        if (((ref = this.phoneNumber) != null ? ref.length : void 0) === 10) {\n          if (!_.isUndefined((ref1 = changes.phoneNumber) != null ? ref1.currentValue : void 0) || !_.isUndefined((ref2 = changes.phoneType) != null ? ref2.currentValue : void 0)) {\n            if (this.phoneNumber) {\n              return this.onPhoneChange(this.phoneNumber, this.phoneType);\n            }\n          }\n        }\n      };\n      this.onPhoneChange = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(phoneNumber, phoneType) {\n          var carrierPhoneType, contactPhoneType, error, errorMessage, errorStatus, phoneInfo, ref;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('phoneNumber', phoneNumber);\n                if (_.isEmpty(phoneNumber)) {\n                  _context.next = 24;\n                  break;\n                }\n                _context.prev = 2;\n                _context.next = 5;\n                return TwilioService.getPhoneInfo(phoneNumber);\n              case 5:\n                phoneInfo = _context.sent;\n                $log.log('phoneInfo', phoneInfo);\n                carrierPhoneType = (ref = phoneInfo.carrier) != null ? ref.type : void 0;\n                contactPhoneType = phoneType;\n                $log.log('carrierPhoneType', carrierPhoneType);\n                $log.log('contactPhoneType', contactPhoneType);\n                // automatically set phone type based on carrier type\n                // exempt \"work\" because it could be mobile or landline phone\n                if (_.isEmpty(contactPhoneType) || contactPhoneType !== 'w') {\n                  this.phoneType = carrierPhoneType === 'mobile' ? 'm' : 'h';\n                }\n                // warn if phone number doesn't match contact phone type\n                if (contactPhoneType === 'm' && carrierPhoneType !== 'mobile') {\n                  $log.log('phone type ' + contactPhoneType + ' doesnt match', carrierPhoneType);\n                  this.showPhoneTypeWarningModal(contactPhoneType, carrierPhoneType);\n                } else if (contactPhoneType === 'h' && carrierPhoneType !== 'landline') {\n                  $log.log('phone type ' + contactPhoneType + ' doesnt match', carrierPhoneType);\n                  this.showPhoneTypeWarningModal(contactPhoneType, carrierPhoneType);\n                }\n                // coerce mobile phone type to home if we can't verify it's actually a mobile phone\n                if (contactPhoneType === 'm' && carrierPhoneType !== 'mobile') {\n                  $log.log('carrier line type is ' + carrierPhoneType + ' but phone type is set to mobile, coercing to home');\n                  this.phoneType = 'h';\n                }\n                _context.next = 24;\n                break;\n              case 16:\n                _context.prev = 16;\n                _context.t0 = _context[\"catch\"](2);\n                error = _context.t0;\n                $log.log('this.onPhoneChange', error);\n                errorStatus = _.get(error, 'status');\n                errorMessage = _.get(error, 'data.data.message');\n                if (errorStatus === 400) {\n                  errorMessage = 'GLOBAL.ERRORS.INVALID_PHONE';\n                }\n                NotificationsService.error(errorMessage);\n              case 24:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[2, 16]]);\n        }));\n        return function (_x, _x2) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.showPhoneTypeWarningModal = /*#__PURE__*/function () {\n        var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(contactPhoneType, carrierPhoneType) {\n          var contactPhoneTypeFullText, modalDefaults, modalOptions, translationData, translations;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                contactPhoneTypeFullText = 'home';\n                if (contactPhoneType === 'w') {\n                  contactPhoneTypeFullText = 'work';\n                } else if (contactPhoneType === 'm') {\n                  contactPhoneTypeFullText = 'mobile';\n                }\n                translationData = {\n                  contactPhoneType: contactPhoneTypeFullText,\n                  carrierPhoneType: carrierPhoneType\n                };\n                this.headerTrans = 'GLOBAL.MODALS.PHONE_TYPE.HEADER';\n                this.bodyTrans = 'GLOBAL.MODALS.PHONE_TYPE.COPY';\n                this.body2Trans = 'GLOBAL.MODALS.PHONE_TYPE.COPY2';\n                this.actionBtnTrans = 'GLOBAL.MODALS.PHONE_TYPE.BUTTONS.ACTION';\n                _context2.next = 9;\n                return $translate([this.headerTrans, this.bodyTrans, this.body2Trans, this.actionBtnTrans], translationData);\n              case 9:\n                translations = _context2.sent;\n                this.headerTxt = translations[this.headerTrans];\n                this.bodyTxt = translations[this.bodyTrans];\n                this.body2Txt = translations[this.body2Trans];\n                this.actionBtnTxt = translations[this.actionBtnTrans];\n                modalOptions = {\n                  headerText: this.headerTxt,\n                  bodyText: this.bodyTxt,\n                  bodyText2: this.body2Txt,\n                  closeButtonText: null,\n                  actionButtonText: this.actionBtnTxt\n                };\n                modalDefaults = {};\n                return _context2.abrupt(\"return\", ModalService.showModal(modalDefaults, modalOptions));\n              case 17:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        return function (_x3, _x4) {\n          return _ref2.apply(this, arguments);\n        };\n      }();\n    },\n    template: ''\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:patientAgreementPickerModal\n   * @restrict E\n   * @description\n   * Surround some HTML with this directive to show a modal confirmation dialog before performing the button callbacks. This directive uses transclusion.\n   */\n  angular.module('global').component('patientAgreementPickerModal', {\n    bindings: {\n      inPersonMethod: '@',\n      physicianAttestationMethod: '@',\n      inPersonCallback: '&',\n      physicianAttestationCallback: '&',\n      closeBtnTrans: '@?',\n      closeCallback: '&?',\n      customPayload: '<?',\n      shortCircuitIf: '<?'\n    },\n    controllerAs: 'vm',\n    transclude: true,\n    controller: function controller($log, $rootScope, $element, ModalService, $state, $translate, $timeout, InPersonAgreementTypes) {\n      var _this2 = this;\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('patientAgreementPickerModal');\n        this.timeout = null;\n        this.elementToBind = $element;\n        this.eventType = 'click';\n        this.translate();\n        return this.timeout = $timeout(function () {\n          return _this.onDomLoaded();\n        }, 0);\n      };\n      this.onDomLoaded = function () {\n        if (_this2.elementToBind.find('form').length > 0) {\n          _this2.eventType = 'submit';\n          _this2.elementToBind = $element.find('form')[0];\n        }\n        if (_this2.inPersonCallback || _this2.closeCallback) {\n          return angular.element(_this2.elementToBind).bind(_this2.eventType, function (event) {\n            var modalDefaults, modalOptions;\n            if (!!_this2.shortCircuitIf) {\n              return _this2.actionCallback();\n            } else {\n              // prevent navigation\n              event.preventDefault();\n              event.stopPropagation();\n              modalOptions = {\n                headerTxt: _this2.headerTxt,\n                buttonTxt: _this2.buttonTxt,\n                buttonResult: _this2.buttonResult,\n                secondaryButtonTxt: _this2.secondaryButtonTxt,\n                secondaryButtonResult: _this2.secondaryButtonResult,\n                payload: _this2.customPayload\n              };\n              modalDefaults = {\n                backdrop: true,\n                keyboard: true,\n                modalFade: true,\n                templateUrl: 'app/global/patient-agreement-picker-modal/patient-agreement-picker-modal.html'\n              };\n              return ModalService.showModal(modalDefaults, modalOptions).result.then(function (result) {\n                $log.log('RESULT: ', result);\n                switch (result) {\n                  case InPersonAgreementTypes.PATIENT:\n                    if (_this2.inPersonCallback) {\n                      return _this2.inPersonCallback();\n                    }\n                    break;\n                  case InPersonAgreementTypes.PHYSICIAN_ATTESTATION:\n                    if (_this2.physicianAttestationCallback) {\n                      return _this2.physicianAttestationCallback();\n                    }\n                    break;\n                  default:\n                    if (_this2.closeCallback) {\n                      return _this2.closeCallback();\n                    }\n                }\n              }, function (error) {\n                return $log.log('error', error);\n              });\n            }\n          });\n        }\n      };\n      // recalculate translations when translation bindings change\n      this.translate = function () {\n        var _this3 = this;\n        var bottomButtonTrans, headerTrans, topButtonTrans;\n        if (this.inPersonMethod && this.physicianAttestationMethod) {\n          headerTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.AGREEMENTS_LAUNCHER.MULTIPLE_AGREEMENTS_HEADER';\n          topButtonTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.AGREEMENTS_LAUNCHER.BUTTONS.PHYSICIAN_ATTESTATION_BUTTON';\n          this.buttonResult = InPersonAgreementTypes.PHYSICIAN_ATTESTATION;\n          bottomButtonTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.AGREEMENTS_LAUNCHER.BUTTONS.PATIENT_AGREEMENT_BUTTON';\n          this.secondaryButtonResult = InPersonAgreementTypes.PATIENT;\n          // translations\n          $translate([headerTrans, topButtonTrans, bottomButtonTrans]).then(function (translations) {\n            _this3.headerTxt = translations[headerTrans];\n            _this3.buttonTxt = translations[topButtonTrans];\n            return _this3.secondaryButtonTxt = translations[bottomButtonTrans];\n          });\n          return;\n        }\n        if (!this.inPersonMethod && this.physicianAttestationMethod) {\n          headerTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.HEADER';\n          topButtonTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.AGREEMENTS_LAUNCHER.BUTTONS.PHYSICIAN_ATTESTATION_BUTTON';\n          this.buttonResult = InPersonAgreementTypes.PHYSICIAN_ATTESTATION;\n          $translate([headerTrans, topButtonTrans, bottomButtonTrans]).then(function (translations) {\n            _this3.headerTxt = translations[headerTrans];\n            return _this3.buttonTxt = translations[topButtonTrans];\n          });\n          return;\n        }\n        if (this.inPersonMethod && !this.physicianAttestationMethod) {\n          headerTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.HEADER';\n          topButtonTrans = 'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.AGREEMENTS_LAUNCHER.BUTTONS.PATIENT_AGREEMENT_BUTTON';\n          this.buttonResult = InPersonAgreementTypes.PATIENT;\n          $translate([headerTrans, topButtonTrans, bottomButtonTrans]).then(function (translations) {\n            _this3.headerTxt = translations[headerTrans];\n            return _this3.buttonTxt = translations[topButtonTrans];\n          });\n        }\n      };\n      this.$onChanges = function (changes) {\n        return this.translate();\n      };\n      this.$onDestroy = function () {\n        $timeout.cancel(this.timeout);\n        return angular.element(this.elementToBind).unbind(this.eventType);\n      };\n    },\n    template: '<ng-transclude></ng-transclude>'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:notificationModal\n   * @restrict E\n   * @param {string} headerTrans translation string (index.config.translate.coffee) for the modal header\n   * @param {string} bodyTrans translation string (index.config.translate.coffee) for the modal body\n   * @param {string} closeBtnTrans translation string (index.config.translate.coffee) for the modal close button text\n   * @param {string} actionBtnTrans translation string (index.config.translate.coffee) for the modal action button text\n   * @param {function=} actionCallback callback function to fire if a user clicks the actionBtn\n   * @param {function=} closeCallback callback function to fire if a user clicks the closeBtn\n   * @description\n   * Show a modal confirmation on page load.\n   */\n  angular.module('global').component('notificationModal', {\n    bindings: {\n      headerTrans: '@',\n      bodyTrans: '@',\n      closeBtnTrans: '@',\n      actionBtnTrans: '@',\n      actionCallback: '&?',\n      closeCallback: '&?'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $element, ModalService, $state, $translate) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var error, modalOptions, result, translations;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return $translate([this.headerTrans, this.bodyTrans, this.closeBtnTrans, this.actionBtnTrans]);\n            case 2:\n              translations = _context.sent;\n              this.headerTxt = translations[this.headerTrans];\n              this.bodyTxt = translations[this.bodyTrans];\n              this.closeButtonText = translations[this.closeBtnTrans];\n              this.actionButtonText = translations[this.actionBtnTrans];\n              modalOptions = {\n                headerText: this.headerTxt,\n                bodyText: this.bodyTxt,\n                closeButtonText: this.closeButtonText,\n                actionButtonText: this.actionButtonText\n              };\n              _context.prev = 8;\n              _context.next = 11;\n              return ModalService.showModal({}, modalOptions).result;\n            case 11:\n              result = _context.sent;\n              if (!(result === true)) {\n                _context.next = 17;\n                break;\n              }\n              if (!this.actionCallback) {\n                _context.next = 15;\n                break;\n              }\n              return _context.abrupt(\"return\", this.actionCallback());\n            case 15:\n              _context.next = 19;\n              break;\n            case 17:\n              if (!this.closeCallback) {\n                _context.next = 19;\n                break;\n              }\n              return _context.abrupt(\"return\", this.closeCallback());\n            case 19:\n              _context.next = 25;\n              break;\n            case 21:\n              _context.prev = 21;\n              _context.t0 = _context[\"catch\"](8);\n              error = _context.t0;\n              return _context.abrupt(\"return\", $log.log('error', error));\n            case 25:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[8, 21]]);\n      }));\n    },\n    template: ''\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('multiSelect', {\n    bindings: {\n      extraSettings: '=',\n      options: '=',\n      selectedModel: '=',\n      events: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $translate) {\n      this.$onInit = function () {\n        var events;\n        $log = $log.getInstance('multiSelect');\n        $log.log('component Loaded');\n        if (!events) {\n          return events = {};\n        }\n      };\n    },\n    templateUrl: 'app/global/multi-select/multi-select.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:intercom\n   * @restrict E\n   * @param {object} enterpriseCustomer the practice object\n   * @description\n   * Detects the environment and boots intercom\n    https://www.intercom.com/\n   */\n  angular.module('global').component('intercom', {\n    bindings: {\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, IntercomService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('intercom');\n        $log.log('this.enterpriseCustomer', this.enterpriseCustomer);\n        // logged in enterprise admin\n        return IntercomService.boot(this.enterpriseCustomer);\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:infoVertical\n   * @restrict E\n   * @description\n   * Display a phone, address or other info stacked in the portal\n   * @example\n    <pre>\n      <info-vertical header=\"Phone\" text=\"vm.patientUserProfile.enterprise_enrollment.phone_1_number\">\n      </info-vertical>\n    </pre>\n   */\n  angular.module('global').component('infoVertical', {\n    'ngInject': 'ngInject',\n    transclude: true,\n    bindings: {\n      header: '<',\n      text: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $transclude) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('infoVertical');\n        $log.log('infoVertical component loaded');\n        this.transcludePresent = false;\n        // determine if transcluded content exists\n        return $transclude(function (clone) {\n          if (clone.length) {\n            return _this.transcludePresent = true;\n          }\n        });\n      };\n    },\n    templateUrl: 'app/global/info-vertical/info-vertical.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('global').component('highchartsDashboard', {\n    'ngInject': 'ngInject',\n    transclude: true,\n    bindings: {\n      config: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, uuid4, $scope) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('highchartsDashboard');\n        $log.log('highchartsDashboard directive loaded');\n        $log.log('config', this.config);\n        // generate an id so we can draw multiple dashboards on the dom\n        this.graphId = uuid4.generate();\n        // create dashboard inside the await to make sure the container id is up to date\n        return $scope.$watch(function () {\n          return _this.config;\n        }, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('this.config', _this.config);\n                if (!_this.config) {\n                  _context.next = 9;\n                  break;\n                }\n                if (!_this.dashboard) {\n                  _context.next = 5;\n                  break;\n                }\n                _context.next = 5;\n                return _this.dashboard.destroy();\n              case 5:\n                _context.next = 7;\n                return Dashboards.board(\"highcharts-container-\".concat(_this.graphId), _this.config, true);\n              case 7:\n                _this.dashboard = _context.sent;\n                return _context.abrupt(\"return\", $log.log('highchartsDashboard finished rendering'));\n              case 9:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        })));\n      };\n      // example of how we may want to do live edits (ex add points to components when calls are finished)\n      //      this.dashboard.reflow()\n      this.addPoint = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              $log.log(this.dashboard);\n              // find the relevant connector (vma in this case)\n              this.dashboard.dataPool.connectors.vmaData.options.data.push([1713966400000, 3, 1, null]);\n              // find the specific chart ex: Highcharts.charts.find((c) => c.blah.blah == 'fooo')\n              // or just redraw ever chart\n              _context2.next = 4;\n              return Highcharts.charts[1].redraw();\n            case 4:\n              return _context2.abrupt(\"return\", _context2.sent);\n            case 5:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2, this);\n      }));\n    },\n    templateUrl: 'app/global/highcharts/highcharts-dashboard.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('formFooter', {\n    'ngInject': 'ngInject',\n    transclude: true,\n    bindings: {\n      numBtns: '@',\n      addCssClass: '@'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      return this.$onInit = function () {\n        return $log = $log.getInstance('formFooter');\n      };\n    },\n    templateUrl: 'app/global/form-footer/form-footer.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('replace', function () {\n    'ngInject';\n\n    return function (input, from, to) {\n      var regex;\n      if (!input) {\n        return;\n      }\n      regex = new RegExp(from, 'g');\n      return input.replace(regex, to);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('isSinceYesterday', function () {\n    'ngInject';\n\n    return function (timestamp) {\n      return moment().subtract(1, 'days') < moment(timestamp);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('shipmentInfo', function ($filter) {\n    'ngInject';\n\n    var getDeviceTypeName;\n    getDeviceTypeName = function getDeviceTypeName(deviceTypeId, deviceTypes, shipment) {\n      var deviceType, ref;\n      deviceType = _.find(deviceTypes.data.data, {\n        id: deviceTypeId\n      });\n      if (deviceType && deviceType.description) {\n        return deviceType.description;\n      } else {\n        if (shipment != null ? (ref = shipment.device_type) != null ? ref.description : void 0 : void 0) {\n          return shipment.device_type.description;\n        }\n      }\n      return 'Unknown Device';\n    };\n    return function (shipments, deviceTypes) {\n      var info;\n      info = \"\";\n      _.each(shipments, function (shipment) {\n        // Add extra new line between different shipment info lines of text\n        if (info.length > 0) {\n          info += \"\\n\";\n        }\n        if (shipment.tracking_number) {\n          return info += \"\".concat(getDeviceTypeName(shipment.device_type_id, deviceTypes, shipment), \" \").concat(shipment.carrier, \"\\n \").concat(shipment.tracking_number, \"\\n\");\n        } else {\n          return info += \"\".concat(getDeviceTypeName(shipment.device_type_id, deviceTypes, shipment), \" awaiting shipment\\n\");\n        }\n      });\n      return info;\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('pulseReadingDisplay', function (DeviceReadingThresholds) {\n    'ngInject';\n\n    return function (reading, device_type) {\n      try {\n        //FIXME: bit of a dirty hotfix since the latest device reading values were stored as JSON strings\n        reading.values = JSON.parse(reading.values);\n      } catch (error) {}\n      if (device_type.category === 'BP_CUFF') {\n        return \"\".concat(reading.values.pulse, \" bpm\");\n      }\n      if (device_type.category === 'PULSE_OXIMETER') {\n        return \"\".concat(reading.values.pulse_bpm, \" bpm\");\n      }\n      return '';\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('providerName', function () {\n    'ngInject';\n\n    var INTERNAL_EMAIL_DOMAINS, isEmployee, isInternalDomainEmail;\n    INTERNAL_EMAIL_DOMAINS = ['100plus.com', 'connectamerica.com', 'lifeline.com', 'medicalert.com', 'anelto.com'];\n    isInternalDomainEmail = function isInternalDomainEmail(email) {\n      var lower;\n      if (!email) {\n        return false;\n      }\n      lower = email.toLowerCase();\n      if (lower.indexOf('noemail') === 0) {\n        return false;\n      }\n      if (lower.endsWith('noprovideremail@100plus.com')) {\n        return false;\n      }\n      return INTERNAL_EMAIL_DOMAINS.some(function (domain) {\n        return lower.endsWith(domain);\n      });\n    };\n    isEmployee = function isEmployee(provider) {\n      return isInternalDomainEmail(provider != null ? provider.email : void 0) || (provider != null ? provider.is_internal : void 0);\n    };\n    return function (provider) {\n      var showEmployeeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (!showEmployeeNames && isEmployee(provider)) {\n        return \"100Plus Staff\";\n      } else {\n        if (provider) {\n          return \"\".concat(provider.name_first, \"  \").concat(provider.name_last);\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('availableAt', function ($filter) {\n    'ngInject';\n\n    return function (availableAt, returnShortValue) {\n      if (!availableAt) {\n        if (returnShortValue) {\n          return '(Pre-order)';\n        } else {\n          return 'Available for pre-order';\n        }\n      } else if (moment(availableAt).isBefore(moment())) {\n        if (returnShortValue) {\n          return '';\n        } else {\n          return 'Available now';\n        }\n      } else if (moment(availableAt).isAfter(moment())) {\n        if (returnShortValue) {\n          //        return '(Available ' + $filter('date')(availableAt, 'MM/dd/yyyy') + ')'\n          return '(Coming Soon)';\n        } else {\n          return 'Available on ' + $filter('date')(availableAt, 'longDate');\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('phonetype', function () {\n    'ngInject';\n\n    return function (phoneType) {\n      if (phoneType === 'm') {\n        return 'Mobile';\n      }\n      if (phoneType === 'h') {\n        return 'Home';\n      }\n      if (phoneType === 'w') {\n        return 'Work';\n      } else {\n        return 'Not specified';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('phoneNumber', function ($filter, $log) {\n    'ngInject';\n\n    return function (phoneNumber) {\n      var phone, value;\n      if (!phoneNumber) {\n        return '';\n      }\n      value = phoneNumber.toString().trim().replace(/^\\+/, '');\n      if (value.match(/[^0-9]/)) {\n        return value;\n      }\n      phone = null;\n      phone = function () {\n        switch (value.length) {\n          case 10:\n            return {\n              country: 1,\n              area: value.slice(0, 3),\n              number: value.slice(3)\n            };\n          case 11:\n            return {\n              country: value[0],\n              area: value.slice(1, 4),\n              number: value.slice(4)\n            };\n          case 12:\n            return {\n              country: value.slice(0, 3),\n              area: value.slice(3, 5),\n              number: value.slice(5)\n            };\n        }\n      }();\n      if (!phone) {\n        return phone;\n      }\n      if (phone.country === 1) {\n        phone.country = '';\n      }\n      phone.exchange = phone.number.slice(0, 3);\n      phone.number = phone.number.slice(3);\n      return phone.area + '-' + phone.exchange + '-' + phone.number;\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('patientTimezoneWarning', function ($filter) {\n    'ngInject';\n\n    return function (patientUserProfile, graphTimeZone, graphViewName) {\n      var patientTimeZone;\n      if (graphViewName === 'patient_rpm_data') {\n        patientTimeZone = patientUserProfile.timezone;\n        if (patientTimeZone && graphTimeZone !== patientTimeZone) {\n          return $filter('translate')('PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.TIMEZONE_INFO', {\n            graphTimeZone: graphTimeZone,\n            patientTimeZone: patientTimeZone\n          });\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('patientName', function () {\n    'ngInject';\n\n    return function (userProfile) {\n      return \"\".concat(userProfile.name_first, \" \").concat(userProfile.name_last);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('observationReportUiSref', function (PATIENT_SERVICES) {\n    'ngInject';\n\n    return function (observationReport) {\n      if (observationReport.service.name === PATIENT_SERVICES.CCM) {\n        return 'enterprise.ccm_observation_report.goals({user_profile_id: observationReport.patient_user_profile_id, observation_report_id: observationReport.id})';\n      } else {\n        return 'enterprise.observation_report({user_profile_id: observationReport.patient_user_profile_id, observation_report_id: observationReport.id})';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('humanizeAvaAlertTimestamp', function ($filter) {\n    'ngInject';\n\n    return function (timestamp) {\n      var ava_date, ava_date_formatted, date_format, days_diff, months_diff, now, weeks_diff;\n      // some useful values to compare ava timestamp with\n      now = luxon.DateTime.local();\n      date_format = 'yyyy-LL-dd';\n      // convert given timestamp to useful values\n      ava_date = luxon.DateTime.fromISO(timestamp);\n      ava_date_formatted = ava_date.toFormat(date_format);\n      // if timestamp matches today\n      if (ava_date_formatted === now.toFormat(date_format)) {\n        return $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.TODAY');\n        // if timestamp matches yesterday\n      } else if (ava_date_formatted === now.minus({\n        days: 1\n      }).toFormat(date_format)) {\n        return $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.YESTERDAY');\n        // if alert within the last 7 days\n      } else if (Math.abs(ava_date.diffNow('days').days) <= 7) {\n        days_diff = now.diff(ava_date, ['days']);\n        return Math.round(days_diff.days) + $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.DAYS_AGO');\n        // if alert within the last 4 weeks\n      } else if (Math.abs(ava_date.diffNow('days').days) <= 28) {\n        weeks_diff = now.diff(ava_date, ['weeks']);\n        if (parseInt(weeks_diff.weeks) === 1) {\n          return $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.ONE_WEEK_AGO');\n        } else {\n          return Math.round(weeks_diff.weeks) + $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.WEEKS_AGO');\n        }\n      } else {\n        // else just return in number of months\n        months_diff = now.diff(ava_date, ['months']);\n        if (parseInt(months_diff.months) === 1) {\n          return $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.ONE_MONTH_AGO');\n        } else {\n          return Math.round(months_diff.months) + $filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_TIME_FRAMES.MONTHS_AGO');\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('isUnread', function () {\n    'ngInject';\n\n    return function (userProfile) {\n      var latestDeviceReadings, latestReviewed;\n      latestReviewed = _.get(userProfile, 'rpm_last_reviewed_at');\n      latestDeviceReadings = userProfile != null ? userProfile.latest_device_readings : void 0;\n      if (_.isEmpty(latestDeviceReadings)) {\n        latestDeviceReadings = _.flatMap(userProfile != null ? userProfile.devices : void 0, function (device) {\n          return device.latest_device_readings || [];\n        });\n      }\n      return !_.isEmpty(latestDeviceReadings) && (!latestReviewed || _.some(latestDeviceReadings, function (reading) {\n        return reading.reading_taken_ts > latestReviewed;\n      }));\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('isUnreadChfAlert', function () {\n    'ngInject';\n\n    return function (userProfile) {\n      var latestDeviceReadings, latestReviewed;\n      latestReviewed = _.get(userProfile, 'rpm_last_reviewed_at');\n      latestDeviceReadings = userProfile != null ? userProfile.latest_device_readings : void 0;\n      if (_.isEmpty(latestDeviceReadings)) {\n        latestDeviceReadings = _.flatMap(userProfile != null ? userProfile.devices : void 0, function (device) {\n          return device.latest_device_readings || [];\n        });\n      }\n      return _.some(latestDeviceReadings, function (reading) {\n        var ref;\n        return ((ref = reading.device_type) != null ? ref.category : void 0) === 'AMBIENT_CHF' && reading.last_beyond_threshold_reading_ts && (!latestReviewed || reading.last_beyond_threshold_reading_ts > latestReviewed);\n      });\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('isPastDate', function () {\n    'ngInject';\n\n    return function (timestamp) {\n      return timestamp && moment(timestamp).isBefore();\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('humanizeTimestamp', function () {\n    'ngInject';\n\n    return function (timestamp, exactDays) {\n      var dateTime, daysAgo, now;\n      if (timestamp) {\n        now = luxon.DateTime.local();\n        dateTime = luxon.DateTime.fromISO(timestamp);\n        // only display exact days if the timestamp is at least one day\n        if (exactDays) {\n          daysAgo = now.diff(dateTime, \"days\").days;\n          if (daysAgo > 1) {\n            if (dateTime < now) {\n              return \"\".concat(daysAgo.toFixed(), \" day\").concat(daysAgo !== 1 ? 's' : '', \" ago\");\n            }\n          }\n        }\n        if (dateTime < now) {\n          return dateTime.toRelative();\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('htmlToPlaintext', function () {\n    'ngInject';\n\n    return function (text) {\n      if (text) {\n        return String(text).replace(/<[^>]+>/gm, ' ');\n      } else {\n        return '';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('gender', function () {\n    'ngInject';\n\n    return function (gender) {\n      if (!gender) {\n        return 'Not specified';\n      }\n      if (gender.toLowerCase() === 'm') {\n        return 'Male';\n      } else if (gender.toLowerCase() === 'f') {\n        return 'Female';\n      } else if (gender.toLowerCase() === 'n') {\n        return 'Non-binary';\n      } else if (gender.toLowerCase() === 'p') {\n        return 'Prefer not to state';\n      } else if (gender.toLowerCase() === 'o') {\n        return 'Other';\n      } else {\n        return 'Not specified';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('formattedDateStringFromReportingPeriod', function () {\n    'ngInject';\n\n    return function (reportingPeriod) {\n      var date;\n      date = luxon.DateTime.local(reportingPeriod.cycle_year, reportingPeriod.cycle_month, 1);\n      return \"\".concat(date.monthLong, \" \").concat(date.year);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('feetAndInches', function () {\n    'ngInject';\n\n    return function (totalInches) {\n      var feet, inches;\n      if (totalInches === void 0 || totalInches === null) {\n        return '';\n      } else {\n        feet = Math.floor(totalInches / 12);\n        inches = totalInches % 12;\n        return String(feet + '\\' ' + inches + '\"');\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n(function () {\n  angular.module('filters').filter('duration', function () {\n    'ngInject';\n\n    return function (number, period, format) {\n      return luxon.Duration.fromObject(_defineProperty({}, \"\".concat(period), number)).toFormat(format);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('dobToAge', function () {\n    'ngInject';\n\n    return function (birthday) {\n      var ageDate, ageDifMs, bday;\n      // birthday is a date\n      bday = new Date(birthday);\n      ageDifMs = Date.now() - bday.getTime();\n      ageDate = new Date(ageDifMs);\n      // miliseconds from epoch\n      return Math.abs(ageDate.getUTCFullYear() - 1970);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('deviceTypeAbbreviation', function () {\n    'ngInject';\n\n    return function (device_type) {\n      switch (device_type.category) {\n        case 'BP_CUFF':\n          return \"BP\";\n        case 'GLUCOMETER':\n          return \"BG\";\n        case 'SCALE':\n          return \"W\";\n        case 'PULSE_OXIMETER':\n          return \"SpO2\";\n        case 'THERMOMETER':\n          return \"T\";\n        case 'AMBIENT_CHF':\n          return \"CHF\";\n        default:\n          return '';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('deviceReadingDisplay', function (DeviceReadingThresholds, $filter) {\n    'ngInject';\n\n    return function (reading, device_type) {\n      var allEntries, entry, entryDate, error, formatValue, getDateFromTimestamp, getDayKey, getEntries, getLatestValueForDay, i, latestEntryDate, leftValue, len, rightValue, tare, targetDayKey, unit, value, weight;\n      try {\n        //FIXME: bit of a dirty hotfix since the latest device reading values were stored as JSON strings\n        reading.values = JSON.parse(reading.values);\n      } catch (error1) {}\n      if (device_type.category === 'BP_CUFF') {\n        // We display in mg/dl.  Smartmeter devices come in as mg/dl\n        // Bodytrace devices come in as mmol and need to be converted\n        if (reading.values.systolic > 7500) {\n          return \"\".concat(Math.round(reading.values.systolic * DeviceReadingThresholds.BP_CUFF.CONVERSION) | {\n            number: 0\n          }, \" / \").concat(Math.round(reading.values.diastolic * DeviceReadingThresholds.BP_CUFF.CONVERSION) | {\n            number: 0\n          }, \" mmhg\");\n        } else {\n          return \"\".concat(Math.round(reading.values.systolic) | {\n            number: 0\n          }, \" / \").concat(Math.round(reading.values.diastolic) | {\n            number: 0\n          }, \" mmhg\");\n        }\n      }\n      if (device_type.category === 'GLUCOMETER') {\n        return \"\".concat(reading.values.reading, \" mg/dL\");\n      }\n      if (device_type.category === 'AMBIENT_CHF') {\n        try {\n          getEntries = function getEntries(description) {\n            return $filter('filter')(reading.values, {\n              description: description\n            });\n          };\n          getDateFromTimestamp = function getDateFromTimestamp(timestamp) {\n            var date;\n            if (timestamp == null) {\n              return null;\n            }\n            if (typeof timestamp === 'string') {\n              if (timestamp.match(/^\\d+$/)) {\n                timestamp = parseInt(timestamp, 10);\n              } else {\n                date = new Date(timestamp);\n                if (isNaN(date.getTime())) {\n                  return null;\n                } else {\n                  return date;\n                }\n              }\n            }\n            if (typeof timestamp === 'number') {\n              date = timestamp < 1000000000000 ? new Date(timestamp * 1000) : new Date(timestamp);\n              if (isNaN(date.getTime())) {\n                return null;\n              } else {\n                return date;\n              }\n            }\n            date = new Date(timestamp);\n            if (isNaN(date.getTime())) {\n              return null;\n            } else {\n              return date;\n            }\n          };\n          getDayKey = function getDayKey(date) {\n            return \"\".concat(date.getFullYear(), \"-\").concat(date.getMonth(), \"-\").concat(date.getDate());\n          };\n          allEntries = getEntries('left_volume').concat(getEntries('right_volume'));\n          latestEntryDate = null;\n          for (i = 0, len = allEntries.length; i < len; i++) {\n            entry = allEntries[i];\n            entryDate = getDateFromTimestamp(entry != null ? entry.timestamp : void 0);\n            if (entryDate == null) {\n              continue;\n            }\n            if (latestEntryDate == null || entryDate > latestEntryDate) {\n              latestEntryDate = entryDate;\n            }\n          }\n          targetDayKey = latestEntryDate != null ? getDayKey(latestEntryDate) : null;\n          getLatestValueForDay = function getLatestValueForDay(description, dayKey) {\n            var j, latest, latestDate, len1, matches;\n            if (dayKey == null) {\n              return null;\n            }\n            matches = getEntries(description);\n            latest = null;\n            latestDate = null;\n            for (j = 0, len1 = matches.length; j < len1; j++) {\n              entry = matches[j];\n              entryDate = getDateFromTimestamp(entry != null ? entry.timestamp : void 0);\n              if (entryDate == null) {\n                continue;\n              }\n              if (getDayKey(entryDate) !== dayKey) {\n                continue;\n              }\n              if (latestDate == null || entryDate > latestDate) {\n                latest = entry;\n                latestDate = entryDate;\n              }\n            }\n            return latest != null ? latest.value : void 0;\n          };\n          leftValue = getLatestValueForDay('left_volume', targetDayKey);\n          rightValue = getLatestValueForDay('right_volume', targetDayKey);\n          formatValue = function formatValue(value) {\n            var num;\n            num = parseFloat(value);\n            if (isNaN(num)) {\n              return '-';\n            }\n            return Math.round(num).toString();\n          };\n          return \"R:\".concat(formatValue(rightValue), \" / L:\").concat(formatValue(leftValue), \" ml\");\n        } catch (error1) {\n          error = error1;\n          return '';\n        }\n      }\n      if (device_type.category === 'SCALE') {\n        tare = 0;\n        if (reading.values.tare) {\n          tare = -1 * reading.values.tare;\n        }\n        weight = reading.values.weight - tare;\n        unit = function () {\n          switch (false) {\n            // use standard, explicit unit when available\n            case reading.values.measurementUnit == null:\n              return reading.values.measurementUnit;\n            case !(!reading.values.unit && !reading.values.tare):\n              return \"lbs\";\n            // impilo\n            case reading.values.unit !== \"lbs\":\n              return \"lbs\";\n            // impilo\n            case reading.values.unit !== \"KILOS\":\n              return \"kg\";\n            // iglucose\n            case reading.values.unit !== 1:\n              return \"g\";\n            // bodytrace\n            default:\n              throw new Error(\"Cannot determine unit for \".concat(reading.id));\n          }\n        }();\n        value = function () {\n          switch (unit) {\n            case \"lbs\":\n              return weight;\n            case \"kg\":\n              return weight * DeviceReadingThresholds.SCALE.KILOS_TO_POUNDS;\n            case \"g\":\n              return weight * DeviceReadingThresholds.SCALE.CONVERSION;\n            default:\n              throw new Error(\"Cannot convert reading \".concat(reading.id, \": unexpected unit \").concat(unit));\n          }\n        }();\n        return \"\".concat(Math.round(value), \" lbs\");\n      }\n      if (device_type.category === 'PULSE_OXIMETER') {\n        return \"\".concat(reading.values.spo2, \"%\");\n      }\n      return '';\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('deviceReadingClass', function (DeviceReadingThresholds) {\n    'ngInject';\n\n    var checkThresholds;\n    checkThresholds = function checkThresholds(reading, device_type) {\n      var diastolic, i, j, k, l, len, len1, len2, len3, len4, m, ref, ref1, ref2, ref3, ref4, spo2, systolic, threshold;\n      if (device_type.category === 'GLUCOMETER') {\n        reading = reading.values.reading;\n        ref = DeviceReadingThresholds.GLUCOMETER.HIGH_BG;\n        for (i = 0, len = ref.length; i < len; i++) {\n          threshold = ref[i];\n          if (reading >= threshold.value) {\n            return threshold.level;\n          }\n        }\n        ref1 = DeviceReadingThresholds.GLUCOMETER.LOW_BG;\n        for (j = 0, len1 = ref1.length; j < len1; j++) {\n          threshold = ref1[j];\n          if (reading <= threshold.value) {\n            return threshold.level;\n          }\n        }\n      } else if (device_type.category === 'BP_CUFF') {\n        var _reading$values = reading.values;\n        systolic = _reading$values.systolic;\n        diastolic = _reading$values.diastolic;\n        systolic *= DeviceReadingThresholds.BP_CUFF.CONVERSION;\n        diastolic *= DeviceReadingThresholds.BP_CUFF.CONVERSION;\n        ref2 = DeviceReadingThresholds.BP_CUFF.SYSTOLIC;\n        for (k = 0, len2 = ref2.length; k < len2; k++) {\n          threshold = ref2[k];\n          if (systolic >= threshold.value) {\n            return threshold.level;\n          }\n        }\n        ref3 = DeviceReadingThresholds.BP_CUFF.DIASTOLIC;\n        for (l = 0, len3 = ref3.length; l < len3; l++) {\n          threshold = ref3[l];\n          if (diastolic >= threshold.value) {\n            return threshold.level;\n          }\n        }\n      } else if (device_type.category === 'PULSE_OXIMETER') {\n        spo2 = reading.values.spo2;\n        ref4 = DeviceReadingThresholds.PULSE_OXIMETER.LOW_OX;\n        for (m = 0, len4 = ref4.length; m < len4; m++) {\n          threshold = ref4[m];\n          if (spo2 <= threshold.value) {\n            return threshold.level;\n          }\n        }\n      }\n      return null;\n    };\n    return function (reading, device_type, adaAdhColors) {\n      var classString, thresholdLevel;\n      thresholdLevel = checkThresholds(reading, device_type);\n      classString = \"\";\n      // Old ada colors were here, if you want to bring them back\n      if (reading.reading_taken_ts === reading.last_beyond_threshold_reading_ts) {\n        classString = \"btr\";\n      } else {\n        classString = \"non-btr\";\n      }\n      return classString;\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('convertWeight', function () {\n    'ngInject';\n\n    return function (inputWeight, toMeasure) {\n      if (inputWeight === void 0 || inputWeight === null) {\n        return 0;\n      } else {\n        if (toMeasure === 'pounds') {\n          return inputWeight * 2.20462262185;\n        }\n        if (toMeasure === 'kilos') {\n          return inputWeight * 0.45359237;\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('claimTypeToCptCode', function () {\n    'ngInject';\n\n    return function (claimType) {\n      switch (_.trim(claimType.toUpperCase())) {\n        case 'INITIAL_REPORT':\n          return '99470';\n        case 'REPORT':\n          return '99457';\n        case 'REPORT_EXTENDED':\n          return '99458';\n        case 'SERVICE':\n          return '99454';\n        case 'SERVICE_LOW_DOR':\n          return '99445';\n        case 'SETUP':\n          return '99453';\n        case 'CCM':\n          return '99490';\n        case 'CCM_EXTENDED':\n          return '99439';\n        default:\n          return 'Unknown';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('ccmPatientUiSref', function () {\n    'ngInject';\n\n    return function (userProfile) {\n      var ref;\n      if (userProfile != null ? (ref = userProfile.care_plan) != null ? ref.completed_at : void 0 : void 0) {\n        // or check ? < luxon.DateTime.local()\n        //FIXME empty array of patient reports may throw error\n        return 'enterprise.ccm_observation_report.goals({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})';\n      } else {\n        return 'enterprise.care_plan.goals({user_profile_id: userProfile.id})';\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('capitalize', function () {\n    'ngInject';\n\n    return function (string) {\n      if ((string != null ? string.length : void 0) > 1) {\n        return string[0].toUpperCase() + string.substr(1);\n      } else {\n        return string != null ? string.toUpperCase() : void 0;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('beyondThresholdTooltip', function ($filter) {\n    'ngInject';\n\n    return function (reading, tzToDisplayIn) {\n      var formattedDate, tooltipText;\n      if (tzToDisplayIn == null) {\n        tzToDisplayIn = moment.tz.guess();\n      }\n      tooltipText = 'PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.PRIOR_READING_BEYOND_THRESHOLD';\n      if (reading.reading_taken_ts === reading.last_beyond_threshold_reading_ts) {\n        tooltipText = 'PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.CURRENT_READING_BEYOND_THRESHOLD';\n      }\n      formattedDate = moment(reading.last_beyond_threshold_reading_ts).tz(tzToDisplayIn).format(\"MM/DD/YY hh:mm A z\");\n      return $filter('translate')(tooltipText, {\n        formattedDate: formattedDate\n      });\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('alertThresholdAuditLogMetric', function (AlertThresholdAuditLogHelper) {\n    'ngInject';\n\n    var getChangeFromDefault, getFieldName;\n    getChangeFromDefault = AlertThresholdAuditLogHelper.getChangeFromDefault;\n    getFieldName = AlertThresholdAuditLogHelper.getFieldName;\n    return function (log) {\n      var changedFields, key, metrics;\n      if (log.action === 'C' || log.action === 'D') {\n        changedFields = getChangeFromDefault(log);\n      } else {\n        changedFields = log.changed_fields;\n      }\n      // we can have multiple metrics changed at the same time and we don't want to display duplicates\n      metrics = new Set();\n      for (key in changedFields) {\n        metrics.add(getFieldName(key));\n      }\n      return Array.from(metrics).join(', ');\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('alertThresholdAuditLogChange', function (AlertThresholdAuditLogHelper) {\n    'ngInject';\n\n    var getChangeFromDefault, getChangeString, getFieldName, getUnits;\n    // helper function to deal with all the nuanced formatting for each individual property change\n    getFieldName = AlertThresholdAuditLogHelper.getFieldName;\n    getUnits = AlertThresholdAuditLogHelper.getUnits;\n    getChangeFromDefault = AlertThresholdAuditLogHelper.getChangeFromDefault;\n    getChangeString = function getChangeString(property, value) {\n      var field;\n      field = getFieldName(property);\n      if (property.endsWith('enabled')) {\n        // formatting for enabling and disabling alerts\n        return \"\".concat(value ? 'enabled' : 'disabled', \" \").concat(property.includes('blood_pressure_lower') ? 'low ' : '').concat(field, \" alerts\").trim();\n      } else if (property.startsWith('weight')) {\n        // special formatting for weight changes\n        return \"\".concat(field, \" \").concat(property.includes('increase') ? 'increase' : 'decrease', \" \").concat(property.endsWith('days') ? 'period' : 'threshold', \" \").concat(value ? 'changed to' : 'removed', \" \").concat(value || '').concat(value ? getUnits(property, value !== 1) : '').trim();\n      } else {\n        // formatting for everything else, note the first line only applies to BP\n        return \"\".concat(property.startsWith('systolic') ? 'systolic' : property.startsWith('diastolic') ? 'diastolic' : '', \" \").concat(property.includes('high') ? 'upper' : property.includes('low') ? 'lower' : '', \" \").concat(field, \" threshold changed to \").concat(value).concat(getUnits(property, value !== 1)).trim();\n      }\n    };\n    return function (log) {\n      var changedFields, changes, key, value;\n      if (log.action === 'C' || log.action === 'D') {\n        changedFields = getChangeFromDefault(log);\n      } else {\n        changedFields = log.changed_fields;\n      }\n      // multiple changes can be captured in one log\n      changes = [];\n      for (key in changedFields) {\n        value = changedFields[key];\n        changes.push(getChangeString(key, value));\n      }\n      return changes.join(', ');\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('filters').filter('address', function () {\n    'ngInject';\n\n    var trunc;\n    trunc = function trunc(value, maxLength) {\n      if (!value) {\n        return '';\n      }\n      maxLength = parseInt(maxLength, 10);\n      if (isNaN(maxLength) || value.length <= maxLength) {\n        return value;\n      }\n      return value.substring(0, maxLength) + '...';\n    };\n    return function (address) {\n      var long_addres;\n      if (address) {\n        long_addres = \"\".concat(address.address_street, \" \").concat(address.address_city).concat(address.address_city ? ',' : void 0, \" \").concat(address.address_state, \" \").concat(address.address_zipcode);\n      }\n      return trunc(long_addres, 24);\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:fieldModelState\n   * @element input\n   * @requires ngModel\n   * @restrict A\n   * @description\n   * Add 'ibeat-empty' and 'ibeat-not-empty' css classes to inputs depending on the ng-model.\n   * ng-not-empty is not working on pages where the form data is pre-filled from a javascript object, this fixes that and\n   * provides us working classes to base our float label css off of.\n   */\n  angular.module('global').directive('fieldModelState', function () {\n    'ngInject';\n\n    return {\n      restrict: 'A',\n      require: 'ngModel',\n      scope: {\n        ngModel: '='\n      },\n      link: function link(scope, element, attrs, ngModel) {\n        scope.$watch('ngModel', function (n, o) {\n          if (!n) {\n            element.addClass('ibeat-empty');\n            return element.removeClass('ibeat-not-empty');\n          } else {\n            element.addClass('ibeat-not-empty');\n            return element.removeClass('ibeat-empty');\n          }\n        });\n      },\n      template: ''\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:exportBtn\n   * @restrict E\n   * @param {function} allItemsHandler callback downloading all\n   * @param {function} filteredItemsHandler callback downloading filtered\n   * @param {string} allItemsText translation string (index.config.translate.coffee) for all download\n   * @param {string=} filteredItemsText translation string (index.config.translate.coffee) for filtered download\n   * @param {function} collapseHandler callback / tracking var to collapse display\n   * @description\n   * Button for exporting things\n   * @example\n    <pre>\n     <export-btn\n              all-items-handler=\"vm.download(false)\"\n              filtered-items-handler=\"vm.download(true)\"\n              all-items-text=\"PORTAL.ENTERPRISE.CLAIMS.FILTERS.ALL_CLAIMS\"\n              filtered-items-text=\"PORTAL.ENTERPRISE.CLAIMS.FILTERS.FILTERED_CLAIMS\"\n              collapse-handler=\"vm.isExportCollapsed\"\n            >\n      </export-btn>\n    </pre>\n   */\n  angular.module('global').component('exportBtn', {\n    bindings: {\n      allItemsHandler: '&',\n      filteredItemsHandler: '&',\n      allItemsText: '@',\n      filteredItemsText: '@',\n      collapseHandler: '=',\n      isDisabled: '<?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $translate) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var translations;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('exportBtn');\n              $log.log('component loaded');\n              // translations\n              _context.next = 4;\n              return $translate([this.allItemsText, this.filteredItemsText]);\n            case 4:\n              translations = _context.sent;\n              this.allItemsText = translations[this.allItemsText];\n              return _context.abrupt(\"return\", this.filteredItemsText = translations[this.filteredItemsText]);\n            case 7:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    },\n    templateUrl: 'app/global/export-btn/export-btn.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('global').component('duplicatePhoneModal', {\n    bindings: {\n      phoneType: '<',\n      phoneNumber: '<',\n      enterpriseCustomerId: '<',\n      enrollmentId: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $translate, EEnrollmentsService, ModalService) {\n      this.$onInit = function () {\n        $log = $log.getInstance('duplicatePhoneModal');\n        return $log.log('duplicatePhoneModal Loaded');\n      };\n      this.$onChanges = function (changes) {\n        var ref;\n        $log.log('duplicatePhoneModal changes', changes);\n        $log.log('phoneNumber', this.phoneNumber, this.phoneType);\n        if (((ref = this.phoneNumber) != null ? ref.length : void 0) === 10 && this.phoneType === 'm') {\n          return this.checkForDuplicateNumber(this.phoneNumber, this.phoneType, this.enrollmentId);\n        }\n      };\n      this.checkForDuplicateNumber = /*#__PURE__*/function () {\n        var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(phoneNumber, phoneType, enrollmentId) {\n          var duplicateCheckResults, e;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                $log.log('phoneNumber', phoneNumber, phoneType);\n                _context.prev = 1;\n                _context.next = 4;\n                return EEnrollmentsService.checkForDuplicatePhoneNumber(phoneNumber, enrollmentId);\n              case 4:\n                duplicateCheckResults = _context.sent;\n                if (duplicateCheckResults.isPhoneUnique) {\n                  _context.next = 7;\n                  break;\n                }\n                return _context.abrupt(\"return\", this.showDuplicateNumberWarningModal());\n              case 7:\n                _context.next = 13;\n                break;\n              case 9:\n                _context.prev = 9;\n                _context.t0 = _context[\"catch\"](1);\n                e = _context.t0;\n                // Purposefully catching the error and not displaying it.\n                return _context.abrupt(\"return\", $log.log(e));\n              case 13:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[1, 9]]);\n        }));\n        return function (_x, _x2, _x3) {\n          return _ref.apply(this, arguments);\n        };\n      }();\n      this.showDuplicateNumberWarningModal = function () {\n        var actionBtnTrans, bodyTrans, headerTrans;\n        headerTrans = 'GLOBAL.MODALS.DUPLICATE_PHONE.HEADER';\n        bodyTrans = 'GLOBAL.MODALS.DUPLICATE_PHONE.COPY';\n        actionBtnTrans = 'GLOBAL.MODALS.DUPLICATE_PHONE.BUTTONS.ACTION';\n        return $translate([headerTrans, bodyTrans, actionBtnTrans]).then(function (translations) {\n          var actionBtnTxt, bodyTxt, headerTxt, modalDefaults, modalOptions;\n          headerTxt = translations[headerTrans];\n          bodyTxt = translations[bodyTrans];\n          actionBtnTxt = translations[actionBtnTrans];\n          modalOptions = {\n            headerText: headerTxt,\n            bodyText: bodyTxt,\n            bodyText2: null,\n            closeButtonText: null,\n            actionButtonText: actionBtnTxt\n          };\n          modalDefaults = {};\n          return ModalService.showModal(modalDefaults, modalOptions);\n        });\n      };\n    },\n    template: ''\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('enterprise').component('diagnosisCodes', {\n    'ngInject': 'ngInject',\n    bindings: {\n      codes: '<',\n      limit: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(DiagnosisCodeDisplayService, $log) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('diagnosisCodes');\n              _context.next = 3;\n              return DiagnosisCodeDisplayService.cleanDiagnosisCodeDescriptions(this.codes);\n            case 3:\n              return _context.abrupt(\"return\", $log.log(this.codes));\n            case 4:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n      this.getMoreDiagnosisCodesTooltip = function (codes) {\n        return _.map(codes.slice(this.limit - 1), function (c) {\n          return '<span class=\"cpt-code-wrapper\"></span><span class=\"cpt-code-badge\">' + c.code + '</span></span>: ' + c.description;\n        }).join('<br>');\n      };\n    },\n    templateUrl: 'app/global/diagnosis/diagnosis-codes.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('customInputs', {\n    bindings: {\n      inputProperties: '<',\n      tempRow: '=',\n      addRowForm: '=',\n      datePickerOptions: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller() {\n      'ngInject';\n    },\n    templateUrl: 'app/global/custom-inputs/custom-inputs.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('currentUser', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller(AuthService, $log) {\n      this.$onInit = function () {\n        var loggedInOffice, ref, ref1, ref10, ref11, ref12, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n        $log = $log.getInstance('currentUser');\n        this.profileImage = this.user.user_profile.getProfileImageUrl();\n        this.showPracticeSelect = ((ref = this.user.current_account) != null ? (ref1 = ref.provider_offices) != null ? ref1.length : void 0 : void 0) > 1 || ((ref2 = this.user) != null ? (ref3 = ref2.user_profiles) != null ? ref3.length : void 0 : void 0) > 1;\n        if (((ref4 = this.user.current_account) != null ? (ref5 = ref4.provider_offices) != null ? ref5.length : void 0 : void 0) > 1) {\n          loggedInOffice = _.find(this.user.current_account.provider_offices, {\n            id: this.user.logged_in_office_id\n          });\n          this.officeName = (loggedInOffice != null ? loggedInOffice.name : void 0) || (loggedInOffice != null ? loggedInOffice.address_street : void 0);\n        } else if (((ref6 = this.user.user_profile) != null ? (ref7 = ref6.provider_offices) != null ? ref7.length : void 0 : void 0) > 1) {\n          // Handle masqueraded user structure where provider_offices might be on user_profile\n          loggedInOffice = _.find(this.user.user_profile.provider_offices, {\n            id: this.user.logged_in_office_id\n          });\n          this.officeName = (loggedInOffice != null ? loggedInOffice.name : void 0) || (loggedInOffice != null ? loggedInOffice.address_street : void 0);\n        } else {\n          this.officeName = ((ref8 = this.user.logged_in_office) != null ? ref8.name : void 0) || ((ref9 = this.user.logged_in_office) != null ? ref9.address_street : void 0);\n        }\n        return this.enterpriseName = ((ref10 = this.enterpriseCustomer) != null ? ref10.name : void 0) || ((ref11 = this.user.user_profile) != null ? (ref12 = ref11.enterprise_customer) != null ? ref12.name : void 0 : void 0);\n      };\n      this.logout = function () {\n        return AuthService.logout();\n      };\n    },\n    templateUrl: 'app/global/current-user/current-user.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('global').component('creditCardImage', {\n    'ngInject': 'ngInject',\n    bindings: {\n      brand: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller() {\n      this.$onInit = function () {\n        return this.imageClass = this.brand.replace(' ', '-').toLowerCase();\n      };\n    },\n    template: \"<div class=\\\"credit-card-image\\\" ng-class=\\\"vm.imageClass\\\"></div>\"\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:breakpoints\n   * @element body\n   * @restrict A\n   * @description\n   * Use the enquire package to fire events based on the current breakpoint.\n   */\n  angular.module('global').component('breakpoints', {\n    bindings: {},\n    controllerAs: 'vm',\n    controller: function controller($rootScope, $log) {\n      this.$onInit = function () {\n        var _this = this;\n        var i, results;\n        $log = $log.getInstance('breakpoints');\n        this.breakpoints = {\n          $mq_mobile: 'screen and (max-width: 767px)',\n          $mq_tablet: 'screen and (min-width: 768px) and (max-width: 991px)',\n          $mq_desktop: 'screen and (min-width: 992px)'\n        };\n        this.keys = Object.keys(this.breakpoints);\n        i = 0;\n        results = [];\n        while (i < this.keys.length) {\n          (function (i) {\n            enquire.register(_this.breakpoints[_this.keys[i]], {\n              match: function match() {\n                //            $log.log('matching in directive', this.keys[i])\n                $rootScope.$broadcast('match', _this.keys[i]);\n              },\n              unmatch: function unmatch() {\n                //            $log.log('un-matching in directive', this.keys[i])\n                $rootScope.$broadcast('unmatch', _this.keys[i]);\n              },\n              setup: function setup() {\n                //            $log.log('setup in directive', this.keys[i])\n                $rootScope.$broadcast('setup', _this.keys[i]);\n              },\n              deferSetup: true,\n              destroy: function destroy() {\n                //            $log.log('destroy in directive', this.keys[i])\n                $rootScope.$broadcast('destroy', _this.keys[i]);\n              }\n            });\n          })(i);\n          results.push(i++);\n        }\n        return results;\n      };\n      this.$onDestroy = function () {\n        var _this2 = this;\n        var i;\n        i = 0;\n        while (i < this.keys.length) {\n          (function (i) {\n            enquire.unregister(_this2.breakpoints[_this2.keys[i]]);\n          })(i);\n          i++;\n        }\n      };\n    }\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:authorize\n   * @restrict A\n   * @param {array[string]} comma (',') roles for which to authorize the element prefixed with 'role:' e.g. role:role-1, role:role-2\n   * @description remove or disable any element if required roles are not granted to the user\n   * Checks if the element is accessible with required roles\n   */\n  angular.module('global').directive('authorize', function ($log, AuthService) {\n    return {\n      restrict: 'A',\n      link: function link(scope, element, attrs) {\n        var authDisabled, requiredAccess;\n        requiredAccess = _.map(attrs.authorize.split(','), function (ra) {\n          return ra.trim();\n        });\n        authDisabled = attrs.authDisabled || false;\n        if (AuthService.isAuthorized(requiredAccess)) {\n          return;\n        }\n        if (!authDisabled) {\n          element.remove();\n        }\n        return element.attr(\"disabled\", \"disabled\");\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:areYouSureModal\n   * @restrict E\n   * @param {string} headerTrans translation string (index.config.translate.coffee) for the modal header\n   * @param {string} bodyTrans translation string (index.config.translate.coffee) for the modal body\n   * @param {string} bodyTrans2 second translation string (index.config.translate.coffee) for the modal body\n   * @param {string=} closeBtnTrans translation string (index.config.translate.coffee) for the modal close button text\n   * @param {string} actionBtnTrans translation string (index.config.translate.coffee) for the modal action button text\n   * @param {function=} actionCallback callback function to fire if a user clicks the actionBtn\n   * @param {function=} closeCallback callback function to fire if a user clicks the closeBtn\n   * @param {object=} customPayload pass custom object to modal\n   * @param {string=} templateUrl path to a custom template\n   * @param {expression=} shortCircuitIf if true, don't show modal, just process as if this directive wasn't there\n   * @description\n   * Surround some HTML with this directive to show a modal confirmation dialog before performing the actionCallback. This directive uses transclusion.\n   */\n  angular.module('global').component('areYouSureModal', {\n    bindings: {\n      headerTrans: '@',\n      bodyTrans: '@',\n      bodyTrans2: '@?',\n      closeBtnTrans: '@?',\n      actionBtnTrans: '@',\n      actionCallback: '&?',\n      closeCallback: '&?',\n      customPayload: '<?',\n      templateUrl: '@?',\n      shortCircuitIf: '<?',\n      hideCancel: '<?',\n      extraClass: '@?',\n      windowClass: '@?',\n      backdrop: '@?',\n      forceShortCircuitOnActionCallback: '@'\n    },\n    transclude: true,\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $element, ModalService, $state, $translate, $timeout) {\n      var _this3 = this;\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('areYouSureModal');\n        this.timeout = null;\n        this.elementToBind = $element;\n        this.eventType = 'click';\n        this.translate();\n        return this.timeout = $timeout(function () {\n          return _this.onDomLoaded();\n        }, 0);\n      };\n      this.onDomLoaded = function () {\n        var _this2 = this;\n        if (this.elementToBind.find('form').length > 0) {\n          this.eventType = 'submit';\n          this.elementToBind = $element.find('form')[0];\n        }\n        //      $log.log 'this.elementToBind', this.elementToBind\n        //      $log.log 'this.eventType', this.eventType\n        // Custom templateUrl modals may handle save/close inside the template (no actionCallback).\n        if (this.actionCallback || this.closeCallback || this.templateUrl) {\n          return angular.element(this.elementToBind).bind(this.eventType, /*#__PURE__*/function () {\n            var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(event) {\n              var error, modalDefaults, modalOptions, result;\n              return regeneratorRuntime.wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    if (!_this2.shortCircuitIf) {\n                      _context.next = 4;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", _this2.actionCallback());\n                  case 4:\n                    // prevent navigation\n                    event.preventDefault();\n                    event.stopPropagation();\n                    modalOptions = {\n                      headerText: _this2.headerTxt,\n                      bodyText: _this2.bodyTxt,\n                      bodyText2: _this2.bodyTxt2,\n                      closeButtonText: _this2.closeButtonText,\n                      actionButtonText: _this2.actionButtonText,\n                      payload: _this2.customPayload,\n                      hideCancel: _this2.hideCancel,\n                      extraClass: _this2.extraClass\n                    };\n                    modalDefaults = {};\n                    if (_this2.templateUrl) {\n                      modalDefaults = {\n                        backdrop: _this2.backdrop || true,\n                        keyboard: true,\n                        modalFade: true,\n                        templateUrl: _this2.templateUrl\n                      };\n                      if (_this2.windowClass) {\n                        modalDefaults.windowClass = _this2.windowClass;\n                      }\n                    }\n                    _context.prev = 9;\n                    _context.next = 12;\n                    return ModalService.showModal(modalDefaults, modalOptions).result;\n                  case 12:\n                    result = _context.sent;\n                    if (!(result === true || result && _typeof(result) === 'object')) {\n                      _context.next = 18;\n                      break;\n                    }\n                    if (_this2.forceShortCircuitOnActionCallback === true) {\n                      _this2.shortCircuitIf = true;\n                    }\n                    return _context.abrupt(\"return\", $timeout(function () {\n                      if (_this2.actionCallback) {\n                        // Pass result to actionCallback if it's an object, otherwise call without args\n                        if (result && _typeof(result) === 'object') {\n                          return _this2.actionCallback({\n                            payload: result\n                          });\n                        } else {\n                          return _this2.actionCallback();\n                        }\n                      }\n                    }));\n                  case 18:\n                    if (!_this2.closeCallback) {\n                      _context.next = 20;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", _this2.closeCallback());\n                  case 20:\n                    _context.next = 26;\n                    break;\n                  case 22:\n                    _context.prev = 22;\n                    _context.t0 = _context[\"catch\"](9);\n                    error = _context.t0;\n                    return _context.abrupt(\"return\", $log.log('error', error));\n                  case 26:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee, null, [[9, 22]]);\n            }));\n            return function (_x) {\n              return _ref.apply(this, arguments);\n            };\n          }());\n        }\n      };\n      // recalculate translations when translation bindings change\n      this.translate = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n        var translations;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              if (!(_this3.headerTrans || _this3.bodyTrans || _this3.actionBtnTrans || _this3.closeBtnTrans)) {\n                _context2.next = 9;\n                break;\n              }\n              _context2.next = 3;\n              return $translate([_this3.headerTrans, _this3.bodyTrans, _this3.bodyTrans2, _this3.closeBtnTrans, _this3.actionBtnTrans]);\n            case 3:\n              translations = _context2.sent;\n              _this3.headerTxt = translations[_this3.headerTrans];\n              _this3.bodyTxt = translations[_this3.bodyTrans];\n              _this3.bodyTxt2 = translations[_this3.bodyTrans2];\n              _this3.closeButtonText = translations[_this3.closeBtnTrans];\n              return _context2.abrupt(\"return\", _this3.actionButtonText = translations[_this3.actionBtnTrans]);\n            case 9:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2);\n      }));\n      this.$onChanges = function (changes) {\n        return this.translate();\n      };\n      this.$onDestroy = function () {\n        $timeout.cancel(this.timeout);\n        return angular.element(this.elementToBind).unbind(this.eventType);\n      };\n    },\n    template: '<ng-transclude></ng-transclude>'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:addressDisplay\n   * @restrict E\n   * @param {function} address an address object\n   * @param {array} addressTypes home types (apartment, townhouse, etc)\n   * @param {object} countries array of countries\n   * @description\n   * Display an address in the portal\n   * @example\n    <pre>\n      <address-display address=\"vm.address\" countries=\"vm.countries\" address-types=\"vm.addressTypes\"></address-display>\n    </pre>\n   */\n  angular.module('global').component('addressDisplay', {\n    bindings: {\n      address: '<',\n      addressTypes: '<',\n      countries: '<',\n      showAddressLabel: '@?'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $translate) {\n      this.$onInit = function () {\n        $log = $log.getInstance('addressDisplay');\n        return $log.log('addressDisplay component loaded');\n      };\n      this.getAddressTypeName = function () {\n        var address;\n        address = _.find(this.addressTypes, {\n          id: this.address.address_type_id\n        });\n        return address != null ? address.name : void 0;\n      };\n      this.getCountryName = function () {\n        var country;\n        country = _.find(this.countries, {\n          value: this.address.country_id\n        });\n        return country != null ? country.label : void 0;\n      };\n    },\n    templateUrl: 'app/global/address-display/address-display.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name global.directive:addTextAtCursor\n   * @restrict E\n   * @description\n   * directive listens for $broadcast \"add\" and payload, adds text to textAngular editor.\n   * ex: $rootScope.$broadcast('add', 'this text.')\n   * @example\n    <pre>\n      <textarea add-text-at-cursor></textarea>\n    </pre>\n   */\n  angular.module('global').directive('addTextAtCursor', function ($log, $window, $rootScope, textAngularManager) {\n    return {\n      link: function link(scope, element, attrs) {\n        var focusListener, getCursorPosition, insertTextAtPosition, listener;\n        listener = $rootScope.$on('add', function (e, val) {\n          var editorScope, range;\n          editorScope = textAngularManager.retrieveEditor('observationReportEditor').scope; // get instance of editor\n          editorScope.displayElements.text[0].focus(); // focus instance\n          range = getCursorPosition();\n          return insertTextAtPosition(val, range, editorScope);\n        });\n        focusListener = $rootScope.$on('focus', function (e, val) {\n          var d, editorScope, i, len, p, range, ref, sel;\n          editorScope = textAngularManager.retrieveEditor('observationReportEditor').scope; // get instance of editor\n          ref = editorScope.displayElements.text[0].getElementsByTagName('div');\n          for (i = 0, len = ref.length; i < len; i++) {\n            d = ref[i];\n            d.classList.remove('active-section'); // remove border styling from every section\n          }\n          editorScope.displayElements.text[0].focus();\n          editorScope.displayElements.text[0].getElementsByClassName(val)[0].classList.add('active-section'); // add styling to selected step\n          p = editorScope.displayElements.text[0].getElementsByClassName(val)[0].getElementsByTagName('p')[0];\n          if (p) {\n            range = rangy.createRange();\n            range.selectNodeContents(p);\n            range.collapse(false);\n            sel = rangy.getSelection();\n            return sel.setSingleRange(range);\n          }\n        });\n        getCursorPosition = function getCursorPosition() {\n          var sel;\n          sel = $window.getSelection();\n          $log.log('sel.rangeCount', sel.rangeCount);\n          if (sel.getRangeAt && sel.rangeCount) {\n            return sel.getRangeAt(0);\n          }\n        };\n        insertTextAtPosition = function insertTextAtPosition(text, range, editorScope) {\n          var textNode;\n          textNode = document.createTextNode(text + ' ');\n          range.insertNode(textNode);\n          return range.collapse(false); // move cursor to end of selection where text was just entered\n        };\n        scope.$on('$destroy', function () {\n          listener();\n          return focusListener();\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name setup.directive:setup\n   * @restrict E\n   * @param {boolean} isUserSetupComplete has the setup flow been completed\n   * @description\n   * Abstract state for the setup flow. Controls adding css classes to control panel animation by querying the WizardServices\n   * (depending on whether the setup-invitation flow or regular setup flow is initiated).\n   */\n  angular.module('setup').component('setup', {\n    bindings: {\n      isUserSetupComplete: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $rootScope, $element, $state, $transitions, EnterpriseSetupWizardService, IB_PHONE, IB_SALES_EMAIL, StateNames) {\n      this.$onInit = function () {\n        var _this = this;\n        var $accountElement, wizardStateNames;\n        this.ibPhone = IB_PHONE;\n        this.ibSalesEmail = IB_SALES_EMAIL;\n        // get the setup flow state navigation info objects (and names) from the current service depending on our current flow\n        if ($state.$current.name.indexOf('setup-enterprise.') !== -1) {\n          wizardStateNames = EnterpriseSetupWizardService.getStateNames();\n          if ($state.$current.name === StateNames.PRACTICE_REGISTRATION) {\n            this.shouldShowPatientBanner = true;\n          } else {\n            this.shouldShowPatientBanner = false;\n          }\n        }\n        $accountElement = $element.find('#setup');\n        return $transitions.onBefore({}, function (trans) {\n          // calculate the breadcrumb percentage complete\n          _this.percentageComplete = wizardStateNames.indexOf(trans.to().name) / wizardStateNames.length * 100;\n          // determine if we need to apply/remove a backward class to the container div for animations\n          if (wizardStateNames.indexOf(trans.to().name) < wizardStateNames.indexOf(trans.from().name)) {\n            return $accountElement.addClass('backward');\n          } else {\n            return $accountElement.removeClass('backward');\n          }\n        });\n      };\n    },\n    templateUrl: 'app/components/setup/setup.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name portal.directive:portal\n   * @restrict E\n   * @param {user} user the current user\n   * @description\n   * Abstract state for the portal. Sets up listeners for site breakpoints.\n   */\n  angular.module('portal').component('portal', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '=',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $element, $rootScope) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('portal');\n        this.deregisterSetup = null;\n        this.deregisterMatch = null;\n        this.isMobileBreakpoint = false;\n        this.deregisterSetup = $rootScope.$on('setup', function (event, payload) {\n          // $log.log 'event', event, payload\n          return _this.toggleMobileHeader(payload);\n        });\n        return this.deregisterMatch = $rootScope.$on('match', function (event, payload) {\n          // $log.log 'event', event, payload\n          return _this.toggleMobileHeader(payload);\n        });\n      };\n      this.toggleMobileHeader = function (breakpoint) {\n        if (breakpoint === '$mq_mobile' || breakpoint === '$mq_tablet') {\n          return this.isMobileBreakpoint = true;\n        } else {\n          return this.isMobileBreakpoint = false;\n        }\n      };\n      this.toggleMobileNavigation = function () {\n        return this.isMobileNavigationOpen = !this.isMobileNavigationOpen;\n      };\n      this.$onDestroy = function () {\n        this.deregisterMatch();\n        return this.deregisterSetup();\n      };\n    },\n    templateUrl: 'app/components/portal/portal.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('directives', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  'use strict';\n\n  angular.module('directives').component('links', {\n    'ngInject': 'ngInject',\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      return $log = $log.getInstance('links');\n    },\n    templateUrl: 'app/components/links/links.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('directives').component('footerBar', {\n    'ngInject': 'ngInject',\n    bindings: {\n      user: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      return $log = $log.getInstance('footerBar');\n    },\n    templateUrl: 'app/components/footer/footer.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name claims.directive:claims\n   * @restrict E\n   * @param {array} claims the enterprise biller claims\n   * @description\n   * Displays enterprise biller claims\n   */\n  angular.module('claims').component('claims', {\n    bindings: {\n      claims: '<',\n      enterpriseCustomer: '<',\n      biller: '<',\n      user: '=',\n      features: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log) {\n      this.$onInit = function () {\n        $log = $log.getInstance('claims');\n        $log.log('claims component loaded');\n        $log.log('vm.enterpriseCustomer', this.enterpriseCustomer);\n        $log.log('vm.user', this.user);\n      };\n    },\n    templateUrl: 'app/components/claims/claims.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc directive\n   */\n  // The account module is free from layout, which is why we use it\n  angular.module('account').component('chart', {\n    bindings: {\n      user: '=',\n      enterpriseCustomer: '=',\n      patientUserProfile: '<',\n      deviceTypes: '<',\n      printConfig: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $element, $rootScope, GraphDataService, ObservationReportService, $location) {\n      this.$onInit = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n        var base, data, endDate, error, graph, i, j, len, len1, name, ref, ref1, results, startDate;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              $log = $log.getInstance('chart');\n              $log.log('chart patientUserProfile', this.patientUserProfile);\n              $log.log('chart deviceTypes', this.deviceTypes);\n              this.graphsToShow = ObservationReportService.getGraphTypesForDevices(this.deviceTypes.data.data, this.patientUserProfile.devices);\n              $log.log('graphsToShow', this.graphsToShow);\n              startDate = $location.search().startDate;\n              endDate = $location.search().endDate;\n              this.graphDateRange = {\n                startDate: startDate,\n                endDate: endDate\n              };\n              $log.log('this.graphDateRange', this.graphDateRange);\n              this.rpmGraphDateRange = {\n                startDate: startDate,\n                endDate: endDate\n              };\n              this.graphsToShow = _toConsumableArray(this.graphsToShow);\n              ref = this.graphsToShow;\n              for (i = 0, len = ref.length; i < len; i++) {\n                graph = ref[i];\n                graph.config = null;\n              }\n              _context.next = 15;\n              return GraphDataService.getData(this.patientUserProfile.id, {\n                start_date: startDate,\n                end_date: endDate,\n                tz: this.user.user_profile.timezone\n              });\n            case 15:\n              data = _context.sent;\n              ref1 = this.graphsToShow;\n              results = [];\n              for (j = 0, len1 = ref1.length; j < len1; j++) {\n                graph = ref1[j];\n                try {\n                  graph.config = typeof (base = this.printConfig)[name = graph.type] === \"function\" ? base[name](data.readings, data.meta) : void 0;\n                  results.push($log.info('graph readings', data.meta));\n                } catch (error1) {\n                  error = error1;\n                  $log.info('error in ', graph.type);\n                  results.push($log.info(error));\n                }\n              }\n              return _context.abrupt(\"return\", results);\n            case 20:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    },\n    templateUrl: 'app/components/chart/chart.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name biller.directive:biller\n   * @restrict E\n   * @param {object} biller the current biller\n   * @param {object} enterpriseCustomer the current customer\n   * @description\n   * Abstract state for the biller. Sets up listeners for site breakpoints.\n   */\n  angular.module('biller').component('biller', {\n    bindings: {\n      biller: '<',\n      enterpriseCustomer: '<'\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $element, $rootScope) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('biller');\n        this.deregisterSetup = null;\n        this.deregisterMatch = null;\n        this.isMobileBreakpoint = false;\n        this.deregisterSetup = $rootScope.$on('setup', function (event, payload) {\n          // $log.log 'event', event, payload\n          return _this.toggleMobileHeader(payload);\n        });\n        return this.deregisterMatch = $rootScope.$on('match', function (event, payload) {\n          // $log.log 'event', event, payload\n          return _this.toggleMobileHeader(payload);\n        });\n      };\n      this.toggleMobileHeader = function (breakpoint) {\n        if (breakpoint === '$mq_mobile' || breakpoint === '$mq_tablet') {\n          return this.isMobileBreakpoint = true;\n        } else {\n          return this.isMobileBreakpoint = false;\n        }\n      };\n      this.toggleMobileNavigation = function () {\n        return this.isMobileNavigationOpen = !this.isMobileNavigationOpen;\n      };\n      this.$onDestroy = function () {\n        this.deregisterMatch();\n        return this.deregisterSetup();\n      };\n    },\n    templateUrl: 'app/components/biller/biller.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name admin.directive:admin\n   * @restrict E\n   * @param {user} user the current user\n   * @description\n   * Abstract state for the admin. Sets up listeners for site breakpoints.\n   */\n  angular.module('admin').component('admin', {\n    bindings: {\n      user: '='\n    },\n    controllerAs: 'vm',\n    controller: function controller($log, $element, $rootScope) {\n      this.$onInit = function () {\n        var _this = this;\n        $log = $log.getInstance('admin');\n        this.deregisterSetup = null;\n        this.deregisterMatch = null;\n        this.isMobileBreakpoint = false;\n        this.deregisterSetup = $rootScope.$on('setup', function (event, payload) {\n          // $log.log 'event', event, payload\n          return _this.toggleMobileHeader(payload);\n        });\n        return this.deregisterMatch = $rootScope.$on('match', function (event, payload) {\n          // $log.log 'event', event, payload\n          return _this.toggleMobileHeader(payload);\n        });\n      };\n      this.toggleMobileHeader = function (breakpoint) {\n        $log.log('breakpoint', breakpoint);\n        if (breakpoint === '$mq_mobile' || breakpoint === '$mq_tablet') {\n          return this.isMobileBreakpoint = true;\n        } else {\n          return this.isMobileBreakpoint = false;\n        }\n      };\n      this.toggleMobileNavigation = function () {\n        return this.isMobileNavigationOpen = !this.isMobileNavigationOpen;\n      };\n      this.$onDestroy = function () {\n        this.deregisterMatch();\n        return this.deregisterSetup();\n      };\n    },\n    templateUrl: 'app/components/admin/admin.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc directive\n   * @name account.directive:account\n   * @restrict E\n   * @description\n   * Abstract component for account section\n   */\n  angular.module('directives').component('account', {\n    bindings: {},\n    controller: function controller($log, $rootScope, $element, $transitions) {},\n    templateUrl: 'app/components/account/account.html'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services', []);\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:UserService\n   * @description\n   * For RESTful interaction w/ our User apis.\n   */\n  angular.module('services').factory('UserService', function (env, $log, $state, $q, DataStoreService, Restangular, UserModel, UserProfileModel, AuthService, Auth0Store, AdminService) {\n    'ngInject';\n\n    var restangular, usersService;\n    $log = $log.getInstance('UsersService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        var loggedInOfficeEnterpriseCustomerId, masqCustomer, masqUser, matchingProfile, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, storedProfile, targetEnterpriseCustomerId, userProfileId;\n        // we set the user_profile to the id chosen by the user\n        if (((ref = data.data) != null ? ref.user_profiles : void 0) && ((ref1 = data.data) != null ? (ref2 = ref1.user_profiles) != null ? ref2[0] : void 0 : void 0)) {\n          userProfileId = Auth0Store.get('userProfileId');\n          masqUser = AdminService.getMasqueradingUser();\n          masqCustomer = AdminService.getMasqueradingEnterpriseCustomer();\n\n          // If we have a logged_in_office, ensure the profile matches its enterprise_customer_id\n          loggedInOfficeEnterpriseCustomerId = (ref3 = data.data.logged_in_office) != null ? ref3.enterprise_customer_id : void 0;\n\n          // First, check if stored userProfileId exists and matches a profile\n          storedProfile = userProfileId ? _.find(data.data.user_profiles, {\n            id: userProfileId\n          }) : null;\n\n          // If stored profile exists but doesn't match the office's enterprise_customer_id, find the correct one\n          if (storedProfile && loggedInOfficeEnterpriseCustomerId && storedProfile.enterprise_customer_id !== loggedInOfficeEnterpriseCustomerId) {\n            matchingProfile = _.find(data.data.user_profiles, {\n              enterprise_customer_id: loggedInOfficeEnterpriseCustomerId\n            });\n            if (matchingProfile != null ? matchingProfile.id : void 0) {\n              userProfileId = matchingProfile.id;\n              Auth0Store.set('userProfileId', userProfileId);\n              storedProfile = matchingProfile;\n            }\n          }\n\n          // If no stored profile or it doesn't exist in the returned profiles, use masquerade logic or office matching\n          if (!storedProfile) {\n            if (loggedInOfficeEnterpriseCustomerId) {\n              // Match profile to the office's enterprise_customer_id\n              matchingProfile = _.find(data.data.user_profiles, {\n                enterprise_customer_id: loggedInOfficeEnterpriseCustomerId\n              });\n              if (matchingProfile != null ? matchingProfile.id : void 0) {\n                userProfileId = matchingProfile.id;\n                Auth0Store.set('userProfileId', userProfileId);\n              }\n            } else if (masqUser != null ? (ref4 = masqUser.user_profile) != null ? ref4.id : void 0 : void 0) {\n              // Use masquerade user_profile id if available\n              userProfileId = masqUser.user_profile.id;\n              Auth0Store.set('userProfileId', userProfileId);\n            } else if ((masqUser != null ? (ref5 = masqUser.user_profile) != null ? ref5.enterprise_customer_id : void 0 : void 0) || (masqCustomer != null ? masqCustomer.id : void 0)) {\n              // Match profile to masquerade enterprise_customer_id\n              targetEnterpriseCustomerId = (masqUser != null ? (ref6 = masqUser.user_profile) != null ? ref6.enterprise_customer_id : void 0 : void 0) || (masqCustomer != null ? masqCustomer.id : void 0);\n              matchingProfile = _.find(data.data.user_profiles, {\n                enterprise_customer_id: targetEnterpriseCustomerId\n              });\n              if (matchingProfile != null ? matchingProfile.id : void 0) {\n                userProfileId = matchingProfile.id;\n                Auth0Store.set('userProfileId', userProfileId);\n              }\n            }\n          }\n\n          // Final fallback to first profile\n          if (!userProfileId) {\n            userProfileId = data.data.user_profiles[0].id;\n            Auth0Store.set('userProfileId', userProfileId);\n          }\n\n          // Set the selected profile\n          data.data.user_profile = _.find(data.data.user_profiles, {\n            id: userProfileId\n          });\n          if (!data.data.user_profile) {\n            data.data.user_profile = data.data.user_profiles[0];\n            Auth0Store.set('userProfileId', data.data.user_profiles[0].id);\n          }\n          data.data.current_account = data.data.user_profile;\n        }\n        // extend user_profiles with UserProfileModel\n        if ((ref7 = data.data) != null ? ref7.user_profile : void 0) {\n          data.data.user_profile = angular.extend(data.data.user_profile, UserProfileModel);\n          if (data.data.current_account) {\n            data.data.current_account = angular.extend(data.data.current_account, UserProfileModel);\n          }\n          _.each(data.data.authorized_accounts, function (account) {\n            return account = angular.extend(account, UserProfileModel);\n          });\n        } else {\n          return data.data;\n        }\n        // add the user to the DataStore\n        if (operation === 'get' && url.indexOf('customer') === -1) {\n          // extend user w/ UserModel\n          angular.extend(data.data, UserModel);\n          DataStoreService.setUser(data.data);\n        }\n        if (data.data.current_account) {\n          data.data.current_account = angular.extend(data.data.current_account, UserProfileModel);\n        }\n        return data.data;\n      });\n    });\n    usersService = restangular.all('users');\n    return {\n      new: function _new() {\n        var newUser;\n        newUser = {\n          auth0_user_id: '',\n          user_profile: {\n            user_profile_practice_roles: []\n          }\n        };\n        return angular.extend(restangular.restangularizeElement(null, newUser, 'users'), UserProfileModel);\n      },\n      get: function get(userId) {\n        return usersService.get(userId, {\n          view: 'portal_bootstrap'\n        });\n      },\n      getUserFromAuth0Id: function getUserFromAuth0Id(auth0UserId) {\n        return usersService.customGET('auth0/' + auth0UserId, {});\n      },\n      switchOffice: function switchOffice(userId, officeID) {\n        var body;\n        body = {\n          office_id: officeID\n        };\n        return usersService.one('', userId).one('switch_provider_office').customPUT(body);\n      },\n      switchUserProfile: function switchUserProfile(userProfileId) {\n        return Auth0Store.set('userProfileId', userProfileId);\n      },\n      put: function put(user) {\n        return usersService.one('', user.id).customPUT(user);\n      },\n      isSetupComplete: function isSetupComplete(userId) {\n        var deferred;\n        deferred = $q.defer();\n        // used by setup flow\n        // if a user is logged in and hasn't finished the flow ex: user.is_setup_complete let them in\n        // if a user isn't logged in let them into the setup flow\n        if (userId && AuthService.isLoggedIn()) {\n          usersService.get(userId).then(function (user) {\n            var ref, ref1;\n            if ((ref = user.user_profile) != null ? (ref1 = ref.setup_progress) != null ? ref1.is_complete : void 0 : void 0) {\n              deferred.reject('User already setup account');\n              if (user.user_profile.is_enterprise_admin === true) {\n                return $state.go('enterprise.enrollments');\n              } else {\n                return $state.go('portal.dashboard');\n              }\n            } else {\n              return deferred.resolve();\n            }\n          }, function (error) {\n            return deferred.reject(error);\n          });\n        } else {\n          deferred.resolve();\n        }\n        return deferred.promise;\n      },\n      isEnterpriseAdmin: function isEnterpriseAdmin(user) {\n        var deferred;\n        deferred = $q.defer();\n        if (user.user_profile.is_enterprise_admin === true) {\n          deferred.resolve();\n        } else {\n          deferred.reject('User must be enterprise admin');\n          $state.go('account.login');\n        }\n        return deferred.promise;\n      },\n      /**\n       * @ngdoc function\n       * @name UserService.hasMultipleEnterpriseCustomers\n       * @param {Object} user - User object with authorized_accounts array\n       * @returns {boolean} true if authorized_accounts has more than one unique enterprise_customer_id\n       */\n      hasMultipleEnterpriseCustomers: function hasMultipleEnterpriseCustomers(user) {\n        var accounts, enterpriseIds;\n        accounts = (user != null ? user.authorized_accounts : void 0) || [];\n        enterpriseIds = _.chain(accounts).map(function (account) {\n          return account != null ? account.enterprise_customer_id : void 0;\n        }).filter(function (id) {\n          return id != null;\n        }).uniq().value();\n        return enterpriseIds.length > 1;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:UserProfilesService\n   * @description\n   * For RESTful interaction w/ our UserProfile apis.\n   */\n  angular.module('services').factory('UserProfilesService', function (env, $log, $state, $q, $filter, Restangular, CacheFactory, UserProfileModel, $window) {\n    'ngInject';\n\n    var adminUserProfilesService, restangular, userProfilesCache, userProfilesService;\n    $log = $log.getInstance('UserProfilesService');\n    userProfilesCache = CacheFactory('userProfilesCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      //    Configurer.defaultHttpFields.cache = userProfilesCache\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        $log.log('data, operation, what, url, response, deferred', data, operation, what, url, response, deferred);\n        if (what === 'user_profile') {\n          data.data = angular.extend(data.data, UserProfileModel);\n        }\n        if (operation === 'get' && what === 'deactivation_log') {\n          if (response.headers('X-Total-Count')) {\n            $log.log('x-count', response);\n            return response;\n          }\n        }\n        return data.data;\n      });\n    });\n    userProfilesService = restangular.all('user_profiles');\n    adminUserProfilesService = restangular.one('admin').all('user_profiles');\n    return {\n      new: function _new() {\n        var newUserProfile;\n        newUserProfile = {\n          email: null,\n          first_name: null,\n          last_name: null,\n          is_wearer: false\n        };\n        return angular.extend(restangular.restangularizeElement(null, newUserProfile, 'user_profiles'), UserProfileModel);\n      },\n      get: function get(userProfileId) {\n        return userProfilesService.get(userProfileId);\n      },\n      post: function post(userProfile) {\n        return userProfilesService.customPOST(userProfile);\n      },\n      put: function put(userProfile) {\n        return userProfilesService.one('', userProfile.id).customPUT(userProfile);\n      },\n      delete: function _delete(userProfileId) {\n        return userProfilesService.one('', userProfileId).remove();\n      },\n      adminGet: function adminGet(userProfileId) {\n        return adminUserProfilesService.get(userProfileId);\n      },\n      adminPost: function adminPost(userProfile) {\n        return adminUserProfilesService.customPOST(userProfile);\n      },\n      adminPut: function adminPut(userProfile) {\n        return adminUserProfilesService.one('', userProfile.id).customPUT(userProfile);\n      },\n      adminDelete: function adminDelete(userProfileId) {\n        return adminUserProfilesService.one('', userProfileId).remove();\n      },\n      getCustomer: function getCustomer(userId) {\n        return userProfilesService.one('', userId).one('billing').one('customer').get();\n      },\n      confirmUniqueEmail: function confirmUniqueEmail(email) {\n        return restangular.one('confirm_unique_email').customPOST({\n          email: email\n        });\n      },\n      phoneLabels: [{\n        label: 'mobile',\n        value: 'm'\n      }, {\n        label: 'home',\n        value: 'h'\n      }, {\n        label: 'work',\n        value: 'w'\n      }],\n      getMonthsArray: function getMonthsArray() {\n        return [{\n          value: 0,\n          label: 'January'\n        }, {\n          value: 1,\n          label: 'February'\n        }, {\n          value: 2,\n          label: 'March'\n        }, {\n          value: 3,\n          label: 'April'\n        }, {\n          value: 4,\n          label: 'May'\n        }, {\n          value: 5,\n          label: 'June'\n        }, {\n          value: 6,\n          label: 'July'\n        }, {\n          value: 7,\n          label: 'August'\n        }, {\n          value: 8,\n          label: 'September'\n        }, {\n          value: 9,\n          label: 'October'\n        }, {\n          value: 10,\n          label: 'November'\n        }, {\n          value: 11,\n          label: 'December'\n        }];\n      },\n      getDaysArray: function getDaysArray() {\n        var dayNum, daysArray, i;\n        daysArray = [];\n        for (dayNum = i = 1; i <= 31; dayNum = ++i) {\n          daysArray.push({\n            label: String(dayNum),\n            value: dayNum\n          });\n        }\n        return daysArray;\n      },\n      getYearsArray: function getYearsArray() {\n        var i, now, ref, yearNum, yearsArray;\n        now = new Date();\n        yearsArray = [];\n        for (yearNum = i = 1900, ref = now.getFullYear(); 1900 <= ref ? i <= ref : i >= ref; yearNum = 1900 <= ref ? ++i : --i) {\n          yearsArray.push({\n            label: String(yearNum),\n            value: yearNum\n          });\n        }\n        return yearsArray;\n      },\n      getUserProfileDobOrLoadDefault: function getUserProfileDobOrLoadDefault(userProfile) {\n        var dob;\n        if (userProfile.date_of_birth) {\n          dob = moment(userProfile.date_of_birth);\n          return {\n            month: dob.get('month'),\n            day: dob.get('date'),\n            year: dob.get('year')\n          };\n        } else {\n          return {\n            month: null,\n            day: null,\n            year: 1950\n          };\n        }\n      },\n      heightOptionsArray: _.map(function () {\n        var results = [];\n        for (var i = 36; i <= 96; i++) {\n          results.push(i);\n        }\n        return results;\n      }.apply(this), function (totalInches) {\n        return {\n          label: $filter('feetAndInches')(totalInches),\n          value: parseInt(totalInches)\n        };\n      }),\n      getDeactivationLogs: function getDeactivationLogs(userProfileId, filters) {\n        return userProfilesService.one('', userProfileId).one('deactivation_log').get(filters);\n      },\n      getDeactivationMetaDataSignedUrl: function getDeactivationMetaDataSignedUrl(patientUserProfile, file) {\n        var userProfileId;\n        if (_.isEmpty(file)) {\n          throw new Error('getDeactivationMetaDataSignedUrl: file missing');\n        }\n        userProfileId = patientUserProfile.id;\n        return userProfilesService.one('', userProfileId).one('deactivation_reason_metadata').post('signed_url', file);\n      },\n      createDeactivationRequest: function createDeactivationRequest(user, patientUserProfile, reasonId) {\n        var metadatum = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n        var deactivationMetadatum, deactivationRequestedBy, requestBody, userProfileId;\n        if (!reasonId) {\n          throw new Error('createDeactivationRequest: reasonId missing');\n        }\n        deactivationRequestedBy = user.user_profile.id;\n        userProfileId = patientUserProfile.id;\n        deactivationMetadatum = _.extend({\n          user_profile_id: userProfileId,\n          deactivation_reason_id: reasonId\n        }, metadatum);\n        requestBody = {\n          user_profile_id: userProfileId,\n          deactivation_reason_id: reasonId,\n          deactivation_requested_by: deactivationRequestedBy,\n          deactivation_reason_metadatum: deactivationMetadatum\n        };\n        return userProfilesService.one('', userProfileId).post('deactivation_request', requestBody);\n      },\n      getActivePatientSubscription: function getActivePatientSubscription(userProfileId) {\n        return userProfilesService.one('', userProfileId).one('patient_subscription').get();\n      },\n      reactivatePatient: function reactivatePatient(user, patientUserProfile) {\n        var reactivationRequestedBy, requestBody, userProfileId;\n        userProfileId = patientUserProfile.id;\n        reactivationRequestedBy = user.user_profile.id;\n        requestBody = {\n          user_profile_id: userProfileId,\n          reactivation_requested_by: reactivationRequestedBy,\n          reactivation_date: luxon.DateTime.local().toISODate()\n        };\n        return userProfilesService.one('', userProfileId).post('reactivation_request', requestBody);\n      },\n      getPactsafeEula: function () {\n        var _getPactsafeEula = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(userProfileId) {\n          var eula;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return userProfilesService.one('', userProfileId).one('pactsafe_eula').get();\n              case 2:\n                eula = _context.sent;\n                return _context.abrupt(\"return\", $window.location.href = eula.url);\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function getPactsafeEula(_x) {\n          return _getPactsafeEula.apply(this, arguments);\n        }\n        return getPactsafeEula;\n      }(),\n      updateEnterpriseChart: function updateEnterpriseChart(enterpriseChart) {\n        return userProfilesService.one('', enterpriseChart.user_profile_id).one('enterprise_charts', enterpriseChart.id).customPUT(enterpriseChart);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * REST client for /users/:userId/notifications (Provider Portal transcription queue).\n   * Kept separate from NotificationsService (toastr). Future: streaming can call refresh hooks here.\n   */\n  angular.module('services').factory('UserNotificationsApiService', function (env, $log, Restangular) {\n    'ngInject';\n\n    var restangular;\n    $log = $log.getInstance('UserNotificationsApiService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if ((data != null ? data.data : void 0) !== void 0) {\n          return data.data;\n        }\n        return data;\n      });\n    });\n    return {\n      // Returns array of notification objects (see API { data: [...] })\n      getAllForUser: function getAllForUser(userId, query) {\n        var q;\n        q = angular.extend({\n          _perPage: 500,\n          _page: 1\n        }, query || {});\n        return restangular.one('users', userId).customGET('notifications', q);\n      },\n      updateNotification: function updateNotification(userId, notificationId, body) {\n        return restangular.one('users', userId).one('notifications', notificationId).customPUT(body);\n      },\n      postToPatientChart: function postToPatientChart(userId, notificationId, body) {\n        return restangular.one('users', userId).one('notifications', notificationId).customPOST(body, 'patient_chart');\n      },\n      // Context for opening enterprise.observation_report (profile/office switch on client if needed).\n      getPatientObservationReportContext: function getPatientObservationReportContext(userId, patientUserProfileId) {\n        return restangular.one('users', userId).customGET(\"notifications/patient_observation_report/\".concat(patientUserProfileId));\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:TwilioService\n   * @description\n   * For RESTful interaction w/ our Twilio controller routes and Twilio Voice SDK\n   */\n  angular.module('services').factory('TwilioService', function ($log, env, Restangular, $rootScope, NotificationsService, TwilioVoiceEvents, CallLogService, AUDIO_CALL_CONSTANTS) {\n    'ngInject';\n\n    var calling_number, connection, device, restangular, twilioService;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    twilioService = restangular.all('twilio');\n    calling_number = null;\n    connection = null;\n    device = null;\n    return {\n      getPhoneInfo: function getPhoneInfo(phoneNumber) {\n        return twilioService.one('validate', '').one('phone_number', phoneNumber).get();\n      },\n      token: function token() {\n        return twilioService.one('token').get();\n      },\n      videoToken: function videoToken(patientUserProfileId, providerUserProfileId) {\n        return twilioService.one('video_token').customPOST({\n          patientUserProfileId: patientUserProfileId,\n          providerUserProfileId: providerUserProfileId\n        });\n      },\n      setup: function () {\n        var _setup = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var _this = this;\n          var data, err;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                _context.next = 3;\n                return this.token();\n              case 3:\n                data = _context.sent;\n                device = new Twilio.Device(data.token, {\n                  enableRingingState: true,\n                  enableImprovedSignalingErrorPrecision: true\n                });\n                device.on('error', function (error) {\n                  return _this.onError(error);\n                });\n                device.on('unregistered', function () {\n                  return _this.onCancel('device:unregistered');\n                });\n                device.on('tokenWillExpire', function () {\n                  return _this.onRefreshToken();\n                });\n                return _context.abrupt(\"return\", calling_number = data.calling_number);\n              case 11:\n                _context.prev = 11;\n                _context.t0 = _context[\"catch\"](0);\n                err = _context.t0;\n                return _context.abrupt(\"return\", $log.log('twilioservice:setup', err));\n              case 15:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[0, 11]]);\n        }));\n        function setup() {\n          return _setup.apply(this, arguments);\n        }\n        return setup;\n      }(),\n      makeCall: function makeCall(numberToCall, startCallEventData) {\n        var _this2 = this;\n        var err, patient, provider;\n        $log.log('twilioservice:makecall:start-event-data', startCallEventData);\n        if (connection) {\n          $log.log('twilioservice:makecall', 'Already on call, will not make call.');\n          return;\n        }\n        try {\n          patient = startCallEventData.patient;\n          provider = startCallEventData.provider;\n          if (device) {\n            device.connect({\n              params: {\n                user_profile_id: patient.profile_id,\n                provider_user_profile_id: provider.profile_id,\n                to_phone_number: numberToCall,\n                to_phone_type: patient.phone_type,\n                service_id: patient.service_id\n              }\n            }).then(function (call) {\n              connection = call;\n              call.on('accept', function () {\n                return _this2.onConnect(connection);\n              });\n              call.on('disconnect', function () {\n                return _this2.onCancel('call:disconnect', connection);\n              });\n              return call.on('error', function (error) {\n                return _this2.onError(error);\n              });\n            });\n            $log.log('twilioservice:makecall', 'making call');\n            return this.notifyEvent(TwilioVoiceEvents.AUDIO_CALL_START, {\n              number: numberToCall,\n              data: startCallEventData,\n              calling_number: calling_number\n            });\n          }\n        } catch (error1) {\n          err = error1;\n          $log.log('twilioservice:make-call', 'error call');\n          connection = null;\n          $log.log('twilioservice:makecall', err);\n          NotificationsService.error(\"Call Could not be placed\");\n          return this.notifyEvent(TwilioVoiceEvents.AUDIO_CALL_END, {\n            number: numberToCall\n          });\n        }\n      },\n      onCancel: function onCancel(event, args) {\n        $log.log('twilioservice:on-cancel', event);\n        if (connection) {\n          connection = null;\n          return this.notifyEvent(TwilioVoiceEvents.AUDIO_CALL_END, {});\n        }\n      },\n      onConnect: function onConnect(activeConnection) {\n        $log.log('twilioservice:on-connect', 'connect');\n        connection = activeConnection;\n        return this.notifyEvent(TwilioVoiceEvents.AUDIO_CALL_CONNECTED, {\n          connection: connection\n        });\n      },\n      hangup: function hangup() {\n        var err;\n        if (connection) {\n          try {\n            connection.disconnect();\n            return connection = null;\n          } catch (error1) {\n            err = error1;\n            return $log.log(err);\n          }\n        }\n      },\n      toggleMute: function toggleMute(mute) {\n        $log.log('twilio-service:toggleMute', {\n          mute: mute\n        });\n        if (connection) {\n          connection.mute(mute);\n          return this.notifyEvent(TwilioVoiceEvents.AUDIO_CALL_TOGGLE_MUTE, {\n            mute: mute\n          });\n        }\n      },\n      isOnCall: function isOnCall() {\n        return connection !== null;\n      },\n      onMute: function onMute(mute) {\n        return $log.log('twilio-service:onMute:', {\n          mute: mute\n        });\n      },\n      onError: function onError(error) {\n        connection = null;\n        $log.error('twilioservice:make-call:error', error);\n        $log.error('twilioservice:make-call:error', this);\n        return this.notifyEvent(TwilioVoiceEvents.AUDIO_CALL_END);\n      },\n      onRefreshToken: function () {\n        var _onRefreshToken = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n          var data, err;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                _context2.next = 3;\n                return this.token();\n              case 3:\n                data = _context2.sent;\n                if (!device) {\n                  _context2.next = 6;\n                  break;\n                }\n                return _context2.abrupt(\"return\", device.updateToken(data.token));\n              case 6:\n                _context2.next = 12;\n                break;\n              case 8:\n                _context2.prev = 8;\n                _context2.t0 = _context2[\"catch\"](0);\n                err = _context2.t0;\n                return _context2.abrupt(\"return\", $log.log('twilioservice:refreshToken', err));\n              case 12:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[0, 8]]);\n        }));\n        function onRefreshToken() {\n          return _onRefreshToken.apply(this, arguments);\n        }\n        return onRefreshToken;\n      }(),\n      destroy: function destroy() {\n        var err;\n        if (device) {\n          try {\n            device.destroy();\n            device = null;\n            return connection = null;\n          } catch (error1) {\n            err = error1;\n            return $log.log('twilioservice:destroy', err);\n          }\n        }\n      },\n      notifyEvent: function notifyEvent(event, data) {\n        $log.log('twilio-service:notify-event', {\n          event: event,\n          data: data\n        });\n        return $rootScope.$emit(event, data);\n      },\n      subscribe: function subscribe(event, scope, callback) {\n        var handler;\n        handler = $rootScope.$on(event, callback);\n        return scope.$on('$destroy', handler);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:TranslationHelperService\n   * @description\n   * Helper methods for complex translation scenarios\n   */\n  angular.module('services').factory('TranslationHelperService', function ($log, $q, $translate) {\n    'ngInject';\n\n    return {\n      /**\n       * @ngdoc function\n       * @name TranslationHelperService.determineCopyBasedOnContext\n       * @methodOf services.factory:TranslationHelperService\n       * @description\n       * the user is either filling out the form for themselves (they're the wearer) or for someone else (they're the caretaker).\n       * based on the localStorage value we set at pre-registration this is where we determine the copy to translate and show\n       * to the user\n       * @param {boolean} isSelfContext is the current person filling out the form the wearer or a caregiver (someone besides the device wearer)\n       * @param {array} translationKeys the keys that identify the strings to translate in this order [headerKey, headerCareKey, copyKey, copyCareKey]\n       * @param {object=} translationData variables that should be inserted into the translated strings\n       * @returns {object} copy translated copy based on context\n       */\n      determineCopyBasedOnContext: function determineCopyBasedOnContext(isSelfContext, translationKeys, translationData) {\n        var copy, deferred;\n        copy = {\n          header: null,\n          text: null\n        };\n        deferred = $q.defer();\n        $translate(translationKeys, translationData).then(function (translations) {\n          if (isSelfContext) {\n            copy.header = translations[translationKeys[0]];\n            copy.text = translations[translationKeys[2]];\n            copy.text2 = translations[translationKeys[4]];\n            copy.text3 = translations[translationKeys[6]];\n          } else {\n            copy.header = translations[translationKeys[1]];\n            copy.text = translations[translationKeys[3]];\n            copy.text2 = translations[translationKeys[5]];\n            copy.text3 = translations[translationKeys[7]];\n          }\n          return deferred.resolve(copy);\n        });\n        return deferred.promise;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:TOSDeliveryMethodsService\n   * @description\n   * Service for TOS Delivery Methods\n   * @example\n  <pre>\n    vm.tosDeliveryMethods = TOSDeliveryMethodsService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('TOSDeliveryMethodsService', function ($log, env, Restangular, CacheFactory, AuthService) {\n    'ngInject';\n\n    var restangular, tosDeliveryMethodsCache, tosDeliveryMethodsService;\n    $log = $log.getInstance('TOSDeliveryMethodsService');\n    tosDeliveryMethodsCache = CacheFactory('TOSDeliveryMethodsCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = tosDeliveryMethodsCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    tosDeliveryMethodsService = restangular.all('tos_delivery_methods');\n    return {\n      /**\n       * @ngdoc function\n       * @name TOSDeliveryMethodsService.getAll\n       * @methodOf services.factory:TOSDeliveryMethodsService\n       * @description\n       * Gets all available TOS delivery methods\n       * @returns {array} Available TOS delivery methods\n       */\n      getAll: function getAll() {\n        return tosDeliveryMethodsService.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:StatesService\n   * @description\n   * Contains US state short code and long names for ng-options.\n   */\n  angular.module('services').factory('StatesService', function ($log) {\n    'ngInject';\n\n    return {\n      /**\n       * @ngdoc param\n       * @name StatesService.states\n       * @propertyOf services.factory:StatesService\n       * @description\n       * contains US state names and codes\n       * @returns {array} objects w/ US state name and code. formatted for use in ng-options.\n       */\n      states: [{\n        label: \"Alabama\",\n        value: \"AL\"\n      }, {\n        label: \"Alaska\",\n        value: \"AK\"\n      }, {\n        label: \"American Samoa\",\n        value: \"AS\"\n      }, {\n        label: \"Arizona\",\n        value: \"AZ\"\n      }, {\n        label: \"Arkansas\",\n        value: \"AR\"\n      }, {\n        label: \"California\",\n        value: \"CA\"\n      }, {\n        label: \"Colorado\",\n        value: \"CO\"\n      }, {\n        label: \"Connecticut\",\n        value: \"CT\"\n      }, {\n        label: \"Delaware\",\n        value: \"DE\"\n      }, {\n        label: \"District Of Columbia\",\n        value: \"DC\"\n      }, {\n        label: \"Federated States Of Micronesia\",\n        value: \"FM\"\n      }, {\n        label: \"Florida\",\n        value: \"FL\"\n      }, {\n        label: \"Georgia\",\n        value: \"GA\"\n      }, {\n        label: \"Guam\",\n        value: \"GU\"\n      }, {\n        label: \"Hawaii\",\n        value: \"HI\"\n      }, {\n        label: \"Idaho\",\n        value: \"ID\"\n      }, {\n        label: \"Illinois\",\n        value: \"IL\"\n      }, {\n        label: \"Indiana\",\n        value: \"IN\"\n      }, {\n        label: \"Iowa\",\n        value: \"IA\"\n      }, {\n        label: \"Kansas\",\n        value: \"KS\"\n      }, {\n        label: \"Kentucky\",\n        value: \"KY\"\n      }, {\n        label: \"Louisiana\",\n        value: \"LA\"\n      }, {\n        label: \"Maine\",\n        value: \"ME\"\n      }, {\n        label: \"Marshall Islands\",\n        value: \"MH\"\n      }, {\n        label: \"Maryland\",\n        value: \"MD\"\n      }, {\n        label: \"Massachusetts\",\n        value: \"MA\"\n      }, {\n        label: \"Michigan\",\n        value: \"MI\"\n      }, {\n        label: \"Minnesota\",\n        value: \"MN\"\n      }, {\n        label: \"Mississippi\",\n        value: \"MS\"\n      }, {\n        label: \"Missouri\",\n        value: \"MO\"\n      }, {\n        label: \"Montana\",\n        value: \"MT\"\n      }, {\n        label: \"Nebraska\",\n        value: \"NE\"\n      }, {\n        label: \"Nevada\",\n        value: \"NV\"\n      }, {\n        label: \"New Hampshire\",\n        value: \"NH\"\n      }, {\n        label: \"New Jersey\",\n        value: \"NJ\"\n      }, {\n        label: \"New Mexico\",\n        value: \"NM\"\n      }, {\n        label: \"New York\",\n        value: \"NY\"\n      }, {\n        label: \"North Carolina\",\n        value: \"NC\"\n      }, {\n        label: \"North Dakota\",\n        value: \"ND\"\n      }, {\n        label: \"Northern Mariana Islands\",\n        value: \"MP\"\n      }, {\n        label: \"Ohio\",\n        value: \"OH\"\n      }, {\n        label: \"Oklahoma\",\n        value: \"OK\"\n      }, {\n        label: \"Oregon\",\n        value: \"OR\"\n      }, {\n        label: \"Palau\",\n        value: \"PW\"\n      }, {\n        label: \"Pennsylvania\",\n        value: \"PA\"\n      }, {\n        label: \"Puerto Rico\",\n        value: \"PR\"\n      }, {\n        label: \"Rhode Island\",\n        value: \"RI\"\n      }, {\n        label: \"South Carolina\",\n        value: \"SC\"\n      }, {\n        label: \"South Dakota\",\n        value: \"SD\"\n      }, {\n        label: \"Tennessee\",\n        value: \"TN\"\n      }, {\n        label: \"Texas\",\n        value: \"TX\"\n      }, {\n        label: \"Utah\",\n        value: \"UT\"\n      }, {\n        label: \"Vermont\",\n        value: \"VT\"\n      }, {\n        label: \"Virgin Islands\",\n        value: \"VI\"\n      }, {\n        label: \"Virginia\",\n        value: \"VA\"\n      }, {\n        label: \"Washington\",\n        value: \"WA\"\n      }, {\n        label: \"West Virginia\",\n        value: \"WV\"\n      }, {\n        label: \"Wisconsin\",\n        value: \"WI\"\n      }, {\n        label: \"Wyoming\",\n        value: \"WY\"\n      }]\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('ShipmentsService', function ($log, env, Restangular) {\n    'ngInject';\n\n    var restangular, shipmentsService;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    shipmentsService = restangular.all('');\n    return {\n      get: function get(enterprise_enrollment_id, shipment_id) {\n        return shipmentsService.one('enterprise_enrollments', enterprise_enrollment_id).one('shipments', shipment_id).get();\n      },\n      post: function post(shipment) {\n        return shipmentsService.one('enterprise_enrollments', shipment.enterprise_enrollment_id).customPOST(shipment, 'shipments');\n      },\n      put: function put(shipment) {\n        return shipmentsService.one('enterprise_enrollments', shipment.enterprise_enrollment_id).one('shipments', shipment.id).customPUT(shipment);\n      },\n      delete: function _delete(shipment) {\n        return shipmentsService.one('enterprise_enrollments', shipment.enterprise_enrollment_id).one('shipments', shipment.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('setup').factory('SetupProgressService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var restangular, setupProgressCache, setupProgressService;\n    $log = $log.getInstance('SetupProgressService');\n    setupProgressCache = CacheFactory('setupProgressCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = setupProgressCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    setupProgressService = restangular.all('');\n    return {\n      new: function _new(userProfileId) {\n        return {\n          user_profile_id: userProfileId,\n          is_complete: false,\n          current_state: null\n        };\n      },\n      get: function get(userProfileId) {\n        return setupProgressService.one('user_profiles', userProfileId).one('setup_progresses').get();\n      },\n      put: function put(userProfile, setupProgress) {\n        var setupProService;\n        setupProService = Restangular.withConfig(function (Configurer) {\n          Configurer.setBaseUrl(env.services.baseUrl);\n          Configurer.defaultHttpFields.cache = setupProgressCache;\n          return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n            return data.data;\n          });\n        });\n        return setupProService.one('user_profiles', userProfile.id).one('setup_progresses', setupProgress.id).customPUT(setupProgress);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:SalesforceService\n   * @description\n   * For RESTful interaction w/ our Salesforce apis.\n   */\n  angular.module('services').factory('SalesforceService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var restangular, salesforceService;\n    $log = $log.getInstance('SalesforceService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    salesforceService = restangular.all('');\n    return {\n      buildNewLead: function buildNewLead() {\n        return {\n          name_first: null,\n          name_last: null,\n          email: null,\n          phone: null,\n          company: null\n        };\n      },\n      createNewLead: function createNewLead(newSalesforceLead) {\n        return salesforceService.one('enterprise_customer_leads').post('', newSalesforceLead);\n      },\n      createSupportRequest: function createSupportRequest(payload) {\n        return salesforceService.one('enterprise_customer_support').post('', payload);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ReportingPeriodService\n   * @description\n   * For RESTful interaction w/ our ReportingPeriod apis.\n   */\n  angular.module('services').factory('ReportingPeriodService', function ($log, env, $q, Restangular, CacheFactory) {\n    'ngInject';\n\n    var reportingPeriodCache, reportingPeriodService, restangular;\n    $log = $log.getInstance('ReportingPeriodService');\n    reportingPeriodCache = CacheFactory('reportingPeriodCache', {\n      maxAge: 15 * 60 * 1000,\n      // Items added to this cache expire after 15 minutes.\n      cacheFlushInterval: 15 * 60 * 1000,\n      // This cache will clear itself every 15 minutes.\n      deleteOnExpire: 'aggressive',\n      // Items will be deleted from this cache right when they expire.\n      storageMode: 'localStorage'\n    });\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = reportingPeriodCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    reportingPeriodService = restangular.all('reporting_periods');\n    return {\n      getAll: function getAll() {\n        return reportingPeriodService.getList(filters);\n      },\n      /*\n      For the browser's local datetime, return the correct reporting period\n      This method ensures we can filter observation reports by the current period\n      */\n      getCurrentReportingPeriodForLocalTime: function () {\n        var _getCurrentReportingPeriodForLocalTime = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var currentReportingPeriod, filters, localTimeReportingPeriod, now, thisMonth, thisYear;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                now = moment();\n                thisMonth = now.month() + 1;\n                thisYear = now.year();\n                filters = {\n                  cycle_month: thisMonth,\n                  cycle_year: thisYear\n                };\n                localTimeReportingPeriod = null;\n                _context.next = 7;\n                return reportingPeriodService.getList(filters);\n              case 7:\n                currentReportingPeriod = _context.sent;\n                $log.log('currentReportingPeriod', currentReportingPeriod);\n                // confirm correct reporting period loads\n                if (!(currentReportingPeriod.length === 1)) {\n                  _context.next = 14;\n                  break;\n                }\n                localTimeReportingPeriod = currentReportingPeriod[0];\n                $log.log('localTimeReportingPeriod', localTimeReportingPeriod);\n                _context.next = 15;\n                break;\n              case 14:\n                throw new Error('multiple reporting period should not be returned');\n              case 15:\n                if (!(localTimeReportingPeriod.cycle_month !== thisMonth || localTimeReportingPeriod.cycle_year !== thisYear)) {\n                  _context.next = 17;\n                  break;\n                }\n                throw new Error('reporting period doesnt match local date time');\n              case 17:\n                return _context.abrupt(\"return\", localTimeReportingPeriod);\n              case 18:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function getCurrentReportingPeriodForLocalTime() {\n          return _getCurrentReportingPeriodForLocalTime.apply(this, arguments);\n        }\n        return getCurrentReportingPeriodForLocalTime;\n      }(),\n      get: function get(reportingPeriodId) {\n        return reportingPeriodService.get(reportingPeriodId);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:RelationshipsService\n   * @description\n   * For RESTful interaction w/ our Relationship apis.\n   */\n  angular.module('services').factory('RelationshipsService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var relationshipsCache, relationshipsService, restangular;\n    $log = $log.getInstance('RelationshipsService');\n    relationshipsCache = CacheFactory('relationshipsCache', {\n      maxAge: 14400 * 60 * 1000,\n      // Items added to this cache expire after 10 days.\n      cacheFlushInterval: 14400 * 60 * 1000,\n      // This cache will clear itself every 10 days.\n      deleteOnExpire: 'aggressive',\n      // Items will be deleted from this cache right when they expire.\n      storageMode: 'localStorage'\n    });\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = relationshipsCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    relationshipsService = restangular.all('relationships');\n    return {\n      getAll: function getAll(params) {\n        return relationshipsService.getList(params);\n      },\n      getRelationshipToPatient: function () {\n        var _getRelationshipToPatient = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var relationships;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this.getAll({\n                  name: {\n                    in: ['Healthcare Provider', 'Other']\n                  }\n                });\n              case 2:\n                relationships = _context.sent;\n                return _context.abrupt(\"return\", _.map(relationships, function (relationship) {\n                  return {\n                    label: relationship.name,\n                    value: relationship\n                  };\n                }));\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function getRelationshipToPatient() {\n          return _getRelationshipToPatient.apply(this, arguments);\n        }\n        return getRelationshipToPatient;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('RedoxLaunchService', function ($log, env, Restangular) {\n    'ngInject';\n\n    var redoxLaunchService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    redoxLaunchService = restangular.all('redox').one('sso').one('app-launch');\n    return {\n      exchange: function exchange(code) {\n        return redoxLaunchService.one('exchange').customPOST({\n          code: code\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('ReadingsShareService', function ($log, env, Restangular) {\n    'ngInject';\n\n    var readingsShareService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    readingsShareService = restangular.all('');\n    return {\n      getAll: function getAll(user_profile_id) {\n        return readingsShareService.one('user_profiles', user_profile_id).one('readings_shares').get();\n      },\n      post: function post(user_profile_id, payload) {\n        return readingsShareService.one('user_profiles', user_profile_id).customPOST(payload, 'readings_shares');\n      },\n      download: function download(user_profile_id, payload) {\n        return readingsShareService.one('user_profiles', user_profile_id).customPOST(payload, 'ccm_download');\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('ProviderPatientAuthorizationsService', function ($log, env, Restangular) {\n    'ngInject';\n\n    var providerPatientAuthorizationsService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    providerPatientAuthorizationsService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(patientUserProfileId) {\n        return providerPatientAuthorizationsService.one('', patientUserProfileId).one('provider_patient_authorizations').getList();\n      },\n      updatePrimaryProvider: function updatePrimaryProvider(patientUserProfileId, providerPatientAuthorizationId) {\n        return providerPatientAuthorizationsService.one('', patientUserProfileId).one('provider_patient_authorizations', providerPatientAuthorizationId).put();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PracticeSpecialtyService\n   * @description\n   * Service for practice specialties\n   * @example\n  <pre>\n    this.practiceSpecialties = PracticeSpecialtyService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('PracticeSpecialtyService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var practiceSpecialtyCache, practiceSpecialtyService, restangular;\n    practiceSpecialtyCache = CacheFactory('PracticeSpecialtyServiceCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = practiceSpecialtyCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    practiceSpecialtyService = restangular.all('practice_specialties');\n    return {\n      /**\n       * @ngdoc function\n       * @name PracticeSpecialtyService.getAll\n       * @methodOf services.factory:PracticeSpecialtyService\n       * @description\n       * Gets all practice specialties\n       * @returns {array} Practice specialties\n       */\n      getAll: function getAll() {\n        return practiceSpecialtyService.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PracticeRolesService\n   * @description\n   * Service for practice roles\n   * @example\n  <pre>\n    this.practiceRoles = PracticeRolesService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('PracticeRolesService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var practiceRolesCache, practiceRolesService, restangular;\n    practiceRolesCache = CacheFactory('PracticeRolesServiceCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = practiceRolesCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    practiceRolesService = restangular.all('practice_roles');\n    return {\n      /**\n       * @ngdoc function\n       * @name PracticeRolesService.getAll\n       * @methodOf services.factory:PracticeRolesService\n       * @description\n       * Gets all practice roles\n       * @returns {array} Practice roles\n       */\n      getAll: function getAll() {\n        return practiceRolesService.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PatientServicesService\n   * @description\n   * Service for patient services\n   * @example\n  <pre>\n    this.practiceRoles = PatientServicesService.getAll(enterpriseCustomerId)\n  </pre>\n   */\n  angular.module('services').factory('PatientServicesService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var patientServices, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    patientServices = restangular.all('enterprise_customers');\n    return {\n      getAll: function getAll(enterpriseCustomerId) {\n        return patientServices.one('', enterpriseCustomerId).one('patient_services').get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PatientServicesService\n   * @description\n   * Service for patient services\n   * @example\n  <pre>\n    this.practiceRoles = PatientServicesService.getAll(enterpriseCustomerId)\n  </pre>\n   */\n  angular.module('services').factory('PatientServiceLogsService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var patientServiceLogs, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    patientServiceLogs = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId) {\n        return patientServiceLogs.one('', userProfileId).one('patient_service_logs').get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * Single source of truth for navigating from transcription-notification UI to\n   * a patient's observation report detail page.\n   *\n   * Two call sites share this helper:\n   * - `src/app/global/transcription-notifications` (popover link)\n   * - `src/app/components/portal/enterprise/e-transcription-queue` (edit modal link)\n   *\n   * `resolveDestination` selects one authorized provider profile and office for the\n   * notification's enterprise. `navigate` applies that context through UserService\n   * before opening the report, while remaining inside the portal shell.\n   */\n  angular.module('services').factory('PatientObservationReportNavService', function ($log, $state, $q, $translate, EUserProfileFilterService, UserService, NotificationsService) {\n    'ngInject';\n\n    var navigate, profileOfficeIds, resolveDestination, targetOfficeId;\n    $log = $log.getInstance('PatientObservationReportNavService');\n    profileOfficeIds = function profileOfficeIds(profile) {\n      return _.compact(_.map((profile != null ? profile.provider_offices : void 0) || [], 'id'));\n    };\n    targetOfficeId = function targetOfficeId(profile, user) {\n      var currentOfficeId, officeIds;\n      officeIds = profileOfficeIds(profile);\n      currentOfficeId = user != null ? user.logged_in_office_id : void 0;\n      if (officeIds.indexOf(currentOfficeId) >= 0) {\n        return currentOfficeId;\n      }\n      if ((profile != null ? profile.default_office_id : void 0) && officeIds.indexOf(profile.default_office_id) >= 0) {\n        return profile.default_office_id;\n      }\n      if (officeIds.length === 1) {\n        return officeIds[0];\n      }\n      return null;\n    };\n    resolveDestination = function resolveDestination(contents, observationReportId, user) {\n      var notificationEnterpriseCustomerId, officeId, patientUserProfileId, ref, ref1, ref2, requiresPracticeSwitch, targetProfile, targetProfiles;\n      if (!observationReportId) {\n        return null;\n      }\n      patientUserProfileId = contents != null ? contents.patient_user_profile_id : void 0;\n      if (!patientUserProfileId) {\n        return null;\n      }\n      notificationEnterpriseCustomerId = contents != null ? contents.enterprise_customer_id : void 0;\n      if (!notificationEnterpriseCustomerId) {\n        return null;\n      }\n      targetProfiles = _.filter((user != null ? user.user_profiles : void 0) || [], function (profile) {\n        return (profile != null ? profile.enterprise_customer_id : void 0) === notificationEnterpriseCustomerId;\n      });\n      if (targetProfiles.length !== 1) {\n        // Never guess when access was removed or the target practice is ambiguous.\n        return null;\n      }\n      targetProfile = targetProfiles[0];\n      if (!((user != null ? user.id : void 0) && (targetProfile != null ? targetProfile.id : void 0))) {\n        return null;\n      }\n      officeId = targetOfficeId(targetProfile, user);\n      if (!officeId) {\n        return null;\n      }\n      requiresPracticeSwitch = (user != null ? (ref = user.user_profile) != null ? ref.id : void 0 : void 0) !== targetProfile.id || (user != null ? (ref1 = user.user_profile) != null ? ref1.enterprise_customer_id : void 0 : void 0) !== notificationEnterpriseCustomerId || (user != null ? user.logged_in_office_id : void 0) !== officeId;\n      return {\n        state: 'enterprise.observation_report',\n        params: {\n          user_profile_id: patientUserProfileId,\n          observation_report_id: observationReportId\n        },\n        // Patient/report route params are dynamic, so a scoped reload is required\n        // when navigating from an already-mounted patient chart. A practice switch\n        // additionally refreshes the enterprise-level user/customer resolves.\n        options: {\n          reload: requiresPracticeSwitch ? 'enterprise' : 'enterprise.observation_report'\n        },\n        userId: user != null ? user.id : void 0,\n        currentProfileId: user != null ? (ref2 = user.user_profile) != null ? ref2.id : void 0 : void 0,\n        targetProfileId: targetProfile.id,\n        targetEnterpriseCustomerId: notificationEnterpriseCustomerId,\n        targetOfficeId: officeId,\n        requiresPracticeSwitch: requiresPracticeSwitch\n      };\n    };\n    navigate = /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(destination) {\n        var error, messageKey, officeSwitched, profileSwitched;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (destination) {\n                _context.next = 2;\n                break;\n              }\n              return _context.abrupt(\"return\", $q.reject(new Error('An authorized patient practice could not be resolved')));\n            case 2:\n              profileSwitched = false;\n              officeSwitched = false;\n              _context.prev = 4;\n              if (!destination.requiresPracticeSwitch) {\n                _context.next = 14;\n                break;\n              }\n              _context.next = 8;\n              return UserService.switchUserProfile(destination.targetProfileId);\n            case 8:\n              profileSwitched = true;\n              _context.next = 11;\n              return UserService.switchOffice(destination.userId, destination.targetOfficeId);\n            case 11:\n              officeSwitched = true;\n              // Refresh the authoritative user/DataStore context before route resolves run.\n              _context.next = 14;\n              return UserService.get(destination.userId);\n            case 14:\n              EUserProfileFilterService.clearState();\n              _context.next = 17;\n              return $state.go(destination.state, destination.params, destination.options || {});\n            case 17:\n              return _context.abrupt(\"return\", _context.sent);\n            case 20:\n              _context.prev = 20;\n              _context.t0 = _context[\"catch\"](4);\n              error = _context.t0;\n              if (profileSwitched && !officeSwitched && destination.currentProfileId) {\n                UserService.switchUserProfile(destination.currentProfileId);\n              }\n              $log.warn('Patient notification navigation failed', {\n                status: error != null ? error.status : void 0\n              });\n              messageKey = (error != null ? error.status : void 0) === 403 ? 'NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_FORBIDDEN' : 'NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_ERROR';\n              NotificationsService.error($translate.instant(messageKey));\n              return _context.abrupt(\"return\", $q.reject(error));\n            case 28:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, null, [[4, 20]]);\n      }));\n      return function navigate(_x) {\n        return _ref.apply(this, arguments);\n      };\n    }();\n    return {\n      resolveDestination: resolveDestination,\n      navigate: navigate\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PatientInsuranceFormService\n   * @description\n   * Shared insurance form initialization and save preparation for enrollment flows.\n   */\n  angular.module('services').factory('PatientInsuranceFormService', function (EEnrollmentsService) {\n    'ngInject';\n\n    var SECONDARY_REQUIRED_FIELDS, applyMedicareAdvantageProviderName, blankInsurer, ensureInsurerObjects, hasSecondaryInsuranceData, isFieldPopulated, isPrimaryInsuranceValid, isSecondaryInsuranceValid, prepareEnrollmentInsuranceForSave, resolveInsuranceType;\n    blankInsurer = function blankInsurer() {\n      return {\n        individual_num: '',\n        insurer_type_id: null,\n        group_num: '',\n        insurer_name: '',\n        medicare_advantage_provider_id: null,\n        notes: '',\n        patient_to_policyholder_relationship_id: null,\n        policy_holder_is_patient: true,\n        policy_num: '',\n        policyholder_date_of_birth: null,\n        policyholder_name_first: '',\n        policyholder_name_last: '',\n        policyholder_sex: ''\n      };\n    };\n    ensureInsurerObjects = function ensureInsurerObjects(enrollment) {\n      if (enrollment.primary_insurer == null) {\n        enrollment.primary_insurer = {};\n      }\n      if (enrollment.secondary_insurer == null) {\n        enrollment.secondary_insurer = {\n          policy_holder_is_patient: true\n        };\n      }\n      if (enrollment.tertiary_insurer == null) {\n        enrollment.tertiary_insurer = {\n          policy_holder_is_patient: true\n        };\n      }\n      return enrollment;\n    };\n    resolveInsuranceType = function resolveInsuranceType(enrollment) {\n      var primary;\n      primary = enrollment != null ? enrollment.primary_insurer : void 0;\n      if (primary != null ? primary.policy_num : void 0) {\n        return 'medicare';\n      } else if ((primary != null ? primary.medicare_advantage_provider_name : void 0) || (primary != null ? primary.medicare_advantage_provider_id : void 0) || (primary != null ? primary.individual_num : void 0) || (primary != null ? primary.group_num : void 0)) {\n        return 'other';\n      } else {\n        return null;\n      }\n    };\n    SECONDARY_REQUIRED_FIELDS = ['insurer_type_id', 'insurer_name', 'group_num', 'individual_num'];\n    isFieldPopulated = function isFieldPopulated(value) {\n      if (value === null || value === void 0) {\n        return false;\n      }\n      if (_.isString(value)) {\n        return !_.isEmpty(value.trim());\n      }\n      return true;\n    };\n    hasSecondaryInsuranceData = function hasSecondaryInsuranceData(insurer) {\n      var optionalFields;\n      if (!insurer) {\n        return false;\n      }\n      if (insurer.policy_holder_is_patient === false) {\n        return true;\n      }\n      optionalFields = ['notes', 'patient_to_policyholder_relationship_id', 'policyholder_date_of_birth', 'policyholder_name_first', 'policyholder_name_last', 'policyholder_sex', 'policy_num', 'medicare_advantage_provider_id'];\n      return _.some(optionalFields, function (field) {\n        return isFieldPopulated(insurer[field]);\n      }) || _.some(SECONDARY_REQUIRED_FIELDS, function (field) {\n        return isFieldPopulated(insurer[field]);\n      });\n    };\n    isSecondaryInsuranceValid = function isSecondaryInsuranceValid(insurer) {\n      if (!hasSecondaryInsuranceData(insurer)) {\n        return true;\n      }\n      return _.every(SECONDARY_REQUIRED_FIELDS, function (field) {\n        return isFieldPopulated(insurer[field]);\n      });\n    };\n    isPrimaryInsuranceValid = function isPrimaryInsuranceValid(enrollment, insuranceType) {\n      var primary;\n      if (!insuranceType) {\n        return false;\n      }\n      primary = enrollment != null ? enrollment.primary_insurer : void 0;\n      if (insuranceType === 'medicare') {\n        return !_.isEmpty(primary != null ? primary.policy_num : void 0);\n      } else if (insuranceType === 'other') {\n        return !_.isEmpty(primary != null ? primary.individual_num : void 0);\n      } else {\n        return false;\n      }\n    };\n    applyMedicareAdvantageProviderName = function applyMedicareAdvantageProviderName(enrollment, medAdvantageProviders) {\n      var provider, providerId, ref;\n      providerId = enrollment != null ? (ref = enrollment.primary_insurer) != null ? ref.medicare_advantage_provider_id : void 0 : void 0;\n      if (providerId && (medAdvantageProviders != null ? medAdvantageProviders.length : void 0)) {\n        provider = _.find(medAdvantageProviders, {\n          id: providerId\n        });\n        if (provider) {\n          enrollment.primary_insurer.medicare_advantage_provider_name = provider.name;\n        }\n      }\n      return enrollment;\n    };\n    prepareEnrollmentInsuranceForSave = function prepareEnrollmentInsuranceForSave(enrollment, insuranceType, medAdvantageProviderOptions, showSecondaryInsurance, showTertiaryInsurance) {\n      var idMatch, providerName;\n      if (insuranceType === 'medicare') {\n        enrollment.primary_insurer.medicare_advantage_provider_name = null;\n        enrollment.primary_insurer.group_num = null;\n        enrollment.group_number_unavailable = null;\n        enrollment.primary_insurer.individual_num = null;\n        enrollment.primary_insurer.medicare_advantage_provider_id = null;\n      } else if (insuranceType === 'other') {\n        enrollment.primary_insurer.policy_num = null;\n        providerName = _.get(enrollment, 'primary_insurer.medicare_advantage_provider_name', 'None');\n        idMatch = providerName && providerName !== 'None' ? _.find(medAdvantageProviderOptions, {\n          label: providerName\n        }) : null;\n        enrollment.primary_insurer.medicare_advantage_provider_id = idMatch ? idMatch.value : null;\n      }\n      if (!showSecondaryInsurance && !EEnrollmentsService.toggleShowInsurer(enrollment.secondary_insurer)) {\n        enrollment.secondary_insurer = _.clone(blankInsurer());\n      }\n      if (!showTertiaryInsurance && !EEnrollmentsService.toggleShowInsurer(enrollment.tertiary_insurer)) {\n        enrollment.tertiary_insurer = _.clone(blankInsurer());\n      }\n      if (enrollment.primary_insurer) {\n        enrollment.primary_insurer.rank = 'PRIMARY';\n      }\n      if (enrollment.secondary_insurer) {\n        enrollment.secondary_insurer.rank = 'SECONDARY';\n      }\n      if (enrollment.tertiary_insurer) {\n        enrollment.tertiary_insurer.rank = 'TERTIARY';\n      }\n      return enrollment;\n    };\n    return {\n      blankInsurer: blankInsurer,\n      ensureInsurerObjects: ensureInsurerObjects,\n      resolveInsuranceType: resolveInsuranceType,\n      hasSecondaryInsuranceData: hasSecondaryInsuranceData,\n      isSecondaryInsuranceValid: isSecondaryInsuranceValid,\n      isPrimaryInsuranceValid: isPrimaryInsuranceValid,\n      applyMedicareAdvantageProviderName: applyMedicareAdvantageProviderName,\n      prepareEnrollmentInsuranceForSave: prepareEnrollmentInsuranceForSave\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PatientChartPresenceService\n   * @description\n   * Heartbeat + poll client for binary Active Viewer presence on Provider Portal charts.\n   * Presence principal is JWT-only on the API; _masquerading_user is auth scope only.\n   */\n  angular.module('services').factory('PatientChartPresenceService', function (env, $log, $interval, $rootScope, $document, Restangular, AdminService, uuid4) {\n    'ngInject';\n\n    var HEARTBEAT_MS, POLL_MS, REQUEST_TIMEOUT_MS, attachVisibility, authScopeParams, clearTimers, compensateLateHeartbeat, detachVisibility, forceStop, leaveSession, onVisibilityChange, pollOthers, presenceResource, restangular, sendHeartbeat, sendLeaveRequest, setOthersActive, startTimers, state;\n    $log = $log.getInstance('PatientChartPresenceService');\n    HEARTBEAT_MS = 15 * 1000;\n    POLL_MS = 10 * 1000;\n    REQUEST_TIMEOUT_MS = 15 * 1000;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    state = {\n      active: false,\n      patientUserProfileId: null,\n      tabSessionId: null,\n      sessionGeneration: 0,\n      // Bumped only on start/stop — not on hide/show. Lets deferred $applyAsync\n      // visibility callbacks detect that the chart lifecycle moved on.\n      lifecycleToken: 0,\n      othersActive: false,\n      onChange: null,\n      heartbeatPromise: null,\n      pollPromise: null,\n      pollInFlight: false,\n      ownerToken: null,\n      // tabSessionId -> in-flight leave Promise. Settled entries (ok or failed) are\n      // removed so hide/show rotations cannot grow the map without bound.\n      leavePromises: {},\n      visibilityHandler: null\n    };\n    authScopeParams = function authScopeParams() {\n      var extra = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var masqUser, params;\n      params = angular.extend({}, extra);\n      masqUser = AdminService.getMasqueradingUser();\n      if (masqUser != null ? masqUser.auth0_user_id : void 0) {\n        params._masquerading_user = masqUser.auth0_user_id;\n      }\n      return params;\n    };\n    presenceResource = function presenceResource(patientUserProfileId) {\n      return restangular.one('user_profiles', patientUserProfileId).one('chart_presence').withHttpConfig({\n        timeout: REQUEST_TIMEOUT_MS\n      });\n    };\n    setOthersActive = function setOthersActive(value) {\n      var next;\n      next = !!value;\n      if (state.othersActive === next) {\n        return;\n      }\n      state.othersActive = next;\n      if (state.onChange) {\n        return state.onChange(next);\n      }\n    };\n    clearTimers = function clearTimers() {\n      if (state.heartbeatPromise) {\n        $interval.cancel(state.heartbeatPromise);\n        state.heartbeatPromise = null;\n      }\n      if (state.pollPromise) {\n        $interval.cancel(state.pollPromise);\n        state.pollPromise = null;\n      }\n      return state.pollInFlight = false;\n    };\n    sendLeaveRequest = function sendLeaveRequest(patientUserProfileId, tabSessionId) {\n      var promise;\n      promise = presenceResource(patientUserProfileId).remove(authScopeParams({\n        tab_session_id: tabSessionId\n      })).then(function () {\n        // Drop settled successes so hide/show rotations cannot grow the map.\n        if (state.leavePromises[tabSessionId] === promise) {\n          delete state.leavePromises[tabSessionId];\n        }\n        return {\n          ok: true\n        };\n      }).catch(function (err) {\n        // Drop failed entries so force retries can send again. Resolve (do not\n        // rethrow) so fire-and-forget hide/stop callers never see an unhandled\n        // rejection; force paths inspect `{ failed: true }` instead.\n        if (state.leavePromises[tabSessionId] === promise) {\n          delete state.leavePromises[tabSessionId];\n        }\n        $log.warn('chart presence leave failed', err != null ? err.status : void 0);\n        return {\n          failed: true\n        };\n      });\n      state.leavePromises[tabSessionId] = promise;\n      return promise;\n    };\n    // Best-effort leave. force=true retries after a failed leave for this tab\n    // (e.g. hide leave failed/pending, then show/stop must still DELETE).\n    leaveSession = function leaveSession(patientUserProfileId, tabSessionId) {\n      var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var existing;\n      if (!(patientUserProfileId && tabSessionId)) {\n        return;\n      }\n      existing = state.leavePromises[tabSessionId];\n      if (existing != null) {\n        if (force) {\n          // Pending leave: only send again if it failed. Settled successes are\n          // already pruned from the map, so a later force becomes a fresh send.\n          existing.then(function (result) {\n            if (!(result != null ? result.failed : void 0)) {\n              return;\n            }\n            if (state.leavePromises[tabSessionId] != null) {\n              return;\n            }\n            return sendLeaveRequest(patientUserProfileId, tabSessionId);\n          });\n        }\n        return;\n      }\n      return sendLeaveRequest(patientUserProfileId, tabSessionId);\n    };\n    // Undo a heartbeat that completed after leave/hide decided this generation is done.\n    compensateLateHeartbeat = function compensateLateHeartbeat(patientUserProfileId, tabSessionId) {\n      if (!(patientUserProfileId && tabSessionId)) {\n        return;\n      }\n      return presenceResource(patientUserProfileId).remove(authScopeParams({\n        tab_session_id: tabSessionId\n      })).catch(function (err) {\n        return $log.warn('chart presence late-heartbeat compensate failed', err != null ? err.status : void 0);\n      });\n    };\n    sendHeartbeat = function sendHeartbeat() {\n      var generation, patientUserProfileId, tabSessionId;\n      if (!(state.active && state.patientUserProfileId && state.tabSessionId)) {\n        return;\n      }\n      generation = state.sessionGeneration;\n      patientUserProfileId = state.patientUserProfileId;\n      tabSessionId = state.tabSessionId;\n      return presenceResource(patientUserProfileId).customPUT({\n        tab_session_id: tabSessionId\n      }, '', authScopeParams()).then(function () {\n        // Generation mismatch means hide/stop already left (or is leaving) this session.\n        // A late PUT can resurrect the row — compensate with DELETE so leave wins.\n        if (state.active && state.sessionGeneration === generation) {\n          return;\n        }\n        return compensateLateHeartbeat(patientUserProfileId, tabSessionId);\n      }).catch(function (err) {\n        if (!(state.active && state.sessionGeneration === generation)) {\n          return;\n        }\n        return $log.warn('chart presence heartbeat failed', err != null ? err.status : void 0);\n      });\n    };\n    pollOthers = function pollOthers() {\n      var generation, patientUserProfileId;\n      if (!(state.active && state.patientUserProfileId)) {\n        return;\n      }\n      if (state.pollInFlight) {\n        return;\n      }\n      generation = state.sessionGeneration;\n      patientUserProfileId = state.patientUserProfileId;\n      state.pollInFlight = true;\n      return presenceResource(patientUserProfileId).get(authScopeParams()).then(function (result) {\n        if (!(state.active && state.sessionGeneration === generation)) {\n          return;\n        }\n        if ($document[0].hidden) {\n          return;\n        }\n        return setOthersActive(result != null ? result.others_active : void 0);\n      }).catch(function (err) {\n        if (!(state.active && state.sessionGeneration === generation)) {\n          return;\n        }\n        setOthersActive(false);\n        return $log.warn('chart presence poll failed', err != null ? err.status : void 0);\n      }).finally(function () {\n        if (state.sessionGeneration === generation) {\n          return state.pollInFlight = false;\n        }\n      });\n    };\n    startTimers = function startTimers() {\n      clearTimers();\n      sendHeartbeat();\n      pollOthers();\n      state.heartbeatPromise = $interval(sendHeartbeat, HEARTBEAT_MS);\n      return state.pollPromise = $interval(pollOthers, POLL_MS);\n    };\n    onVisibilityChange = function onVisibilityChange() {\n      var apply, hiddenAtEvent, lifecycleAtEvent;\n      if (!state.active) {\n        return;\n      }\n      // Capture visibility at event time. $applyAsync defers apply() to the next\n      // digest and coalesces callbacks, so re-reading $document[0].hidden inside\n      // apply() would let a rapid hide->show collapse into two \"visible\" runs and\n      // skip the hide-phase leave entirely. Snapshot here so each transition keeps\n      // its own hidden value.\n      hiddenAtEvent = $document[0].hidden;\n      // sessionGeneration cannot gate this callback: valid hide/show bumps it.\n      // lifecycleToken only changes on start/stop, so a deferred apply cannot\n      // leave/restart a chart that was swapped in after this event was queued.\n      lifecycleAtEvent = state.lifecycleToken;\n      apply = function apply() {\n        var previousTabSessionId;\n        if (!(state.active && state.lifecycleToken === lifecycleAtEvent)) {\n          return;\n        }\n        if (hiddenAtEvent) {\n          // Invalidate in-flight poll/heartbeat callbacks before leave.\n          state.sessionGeneration += 1;\n          clearTimers();\n          leaveSession(state.patientUserProfileId, state.tabSessionId);\n          return setOthersActive(false);\n        } else {\n          // Foreground restore. Force-leave the previous tab session so a hide-phase\n          // leave that is still pending (or already failed) is retried if needed,\n          // then mint a new tab session so a delayed DELETE from the hidden phase\n          // cannot clear the restored foreground presence row.\n          previousTabSessionId = state.tabSessionId;\n          state.sessionGeneration += 1;\n          clearTimers();\n          leaveSession(state.patientUserProfileId, previousTabSessionId, true);\n          state.tabSessionId = uuid4.generate();\n          setOthersActive(false);\n          return startTimers();\n        }\n      };\n      return $rootScope.$applyAsync(apply);\n    };\n    attachVisibility = function attachVisibility() {\n      if (!state.visibilityHandler) {\n        state.visibilityHandler = onVisibilityChange;\n        return $document[0].addEventListener('visibilitychange', state.visibilityHandler);\n      }\n    };\n    detachVisibility = function detachVisibility() {\n      if (state.visibilityHandler) {\n        $document[0].removeEventListener('visibilitychange', state.visibilityHandler);\n        return state.visibilityHandler = null;\n      }\n    };\n    // Unconditional teardown used by start() when switching patients, and by stop()\n    // after ownership is verified.\n    forceStop = function forceStop() {\n      var sendLeaveRequest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      var patientId, tabSessionId, wasActive;\n      wasActive = state.active;\n      patientId = state.patientUserProfileId;\n      tabSessionId = state.tabSessionId;\n      clearTimers();\n      detachVisibility();\n      state.sessionGeneration += 1;\n      state.lifecycleToken += 1;\n      if (sendLeaveRequest && wasActive) {\n        // force=true so a failed/pending hide leave for this session is retried.\n        leaveSession(patientId, tabSessionId, true);\n      }\n      state.active = false;\n      state.patientUserProfileId = null;\n      state.tabSessionId = null;\n      state.ownerToken = null;\n      state.othersActive = false;\n      state.onChange = null;\n      return state.leavePromises = {};\n    };\n    return {\n      /**\n       * Start presence for a patient chart. Safe to call again to switch patients.\n       * Returns an owner token that must be passed to stop(); stale owners are ignored.\n       * @param {string} patientUserProfileId\n       * @param {function} [onChange] callback(othersActive:boolean)\n       * @returns {string|null} ownerToken\n       */\n      start: function start(patientUserProfileId, onChange) {\n        if (!patientUserProfileId) {\n          return null;\n        }\n        if (state.active && state.patientUserProfileId === patientUserProfileId) {\n          // Transfer ownership to the latest chart owner (e.g. RPM→CCM overlap).\n          state.ownerToken = uuid4.generate();\n          state.onChange = onChange || state.onChange;\n          if (state.onChange) {\n            state.onChange(state.othersActive);\n          }\n          return state.ownerToken;\n        }\n        // Leave the previous chart when switching patients within the same service instance.\n        if (state.active) {\n          forceStop();\n        }\n        state.active = true;\n        state.patientUserProfileId = patientUserProfileId;\n        state.tabSessionId = uuid4.generate();\n        state.ownerToken = uuid4.generate();\n        state.sessionGeneration += 1;\n        state.lifecycleToken += 1;\n        state.leavePromises = {};\n        state.othersActive = false;\n        state.onChange = onChange || null;\n        attachVisibility();\n        if ($document[0].hidden) {\n          setOthersActive(false);\n        } else {\n          startTimers();\n        }\n        return state.ownerToken;\n      },\n      /**\n       * Stop presence for the current chart session.\n       * @param {string} ownerToken token returned from start()\n       * @param {boolean} [sendLeaveRequest=true]\n       */\n      stop: function stop(ownerToken) {\n        var sendLeaveRequest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n        if (!(ownerToken != null && state.ownerToken != null && ownerToken === state.ownerToken)) {\n          return;\n        }\n        return forceStop(sendLeaveRequest);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('services').factory('PatientChartNavigationService', function ($state, ObservationReportService, EUserProfileFilterService, CarePlanService) {\n    'ngInject';\n\n    var getCurrentObservationReport, goToNextPatientProfile;\n    getCurrentObservationReport = function getCurrentObservationReport(enterpriseCustomerId, patientUserProfileId, currentReportingPeriodId) {\n      var serviceName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'RPM';\n      return ObservationReportService.getAll(enterpriseCustomerId, {\n        patient_user_profile_id: patientUserProfileId,\n        '$service.name$': serviceName,\n        _sortField: 'created_at',\n        _sortDir: 'DESC'\n      }).then(function (rpmReports) {\n        return _.find(rpmReports, {\n          reporting_period_id: currentReportingPeriodId\n        });\n      });\n    };\n    goToNextPatientProfile = /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(nextProfile, currentReportingPeriodId, user) {\n        var currentObservationPromise, destination, filter, observation_report_id, ref, ref1, report, serviceName;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              filter = EUserProfileFilterService.getFilter();\n              // PP-7359: Guard against empty patient_reports — if the patient list did not return\n              // observation reports (e.g. due to query issues), fall back to fetching the correct\n              // observation report from the API before navigating.\n              observation_report_id = (ref = nextProfile.patient_reports) != null ? (ref1 = ref[0]) != null ? ref1.id : void 0 : void 0;\n              if (observation_report_id) {\n                _context.next = 8;\n                break;\n              }\n              serviceName = (filter != null ? filter.services : void 0) === 'CCM' ? 'CCM' : 'RPM';\n              _context.next = 6;\n              return getCurrentObservationReport(user.user_profile.enterprise_customer_id, nextProfile.id, currentReportingPeriodId, serviceName);\n            case 6:\n              report = _context.sent;\n              observation_report_id = report != null ? report.id : void 0;\n            case 8:\n              destination = 'enterprise.observation_report';\n              currentObservationPromise = Promise.resolve(destination);\n              if ((filter != null ? filter.services : void 0) === 'CCM') {\n                currentObservationPromise = CarePlanService.get(nextProfile.id).then(function (carePlan) {\n                  destination = (carePlan != null ? carePlan.completed_at : void 0) ? 'enterprise.ccm_observation_report.goals' : 'enterprise.care_plan.goals';\n                  return destination;\n                });\n              }\n              return _context.abrupt(\"return\", currentObservationPromise.then(function (destination) {\n                return $state.go(destination, {\n                  user_profile_id: nextProfile.id,\n                  observation_report_id: observation_report_id\n                }, {\n                  reload: true\n                });\n              }));\n            case 12:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function goToNextPatientProfile(_x, _x2, _x3) {\n        return _ref.apply(this, arguments);\n      };\n    }();\n    return {\n      getCurrentObservationReport: getCurrentObservationReport,\n      goToNextPatientProfile: goToNextPatientProfile\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PactsafeService\n   * @description\n   * Contains e-signature and Pactsafe related code for obtaining consent from users\n   */\n  angular.module('services').factory('PactsafeService', function (env, $log, Restangular, $state, $uibModal, $q, AuthService, ECustomersService, CacheFactory, $cookies) {\n    'ngInject';\n\n    var pactsafeCache, pactsafeService, practicesToSkip, restangular;\n    $log = $log.getInstance('PactsafeService');\n    pactsafeCache = CacheFactory('pactsafeCache', {\n      maxAge: 5 * 60 * 1000,\n      // Items added to this cache expire after 5 minutes.\n      cacheFlushInterval: 5 * 60 * 1000,\n      // This cache will clear itself every 5 minutes.\n      deleteOnExpire: 'aggressive' // Items will be deleted from this cache right when they expire.\n    });\n    // /enterprise_customers/{enterprise_customer_id}/enterprise_enrollments/{enterprise_enrollment_id}/create_pactsafe_request\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = pactsafeCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    practicesToSkip = ['2abfcc80-eea6-4d03-8ca0-0946d62f9ca1'];\n    pactsafeService = restangular.all('');\n    return {\n      latest: function () {\n        var _latest = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId, body, current_account) {\n          var customer, hasbypassed, queryString;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return ECustomersService.get(enterpriseCustomerId);\n              case 2:\n                customer = _context.sent;\n                if (!(customer != null ? customer.pactsafe_contract_id : void 0)) {\n                  _context.next = 5;\n                  break;\n                }\n                return _context.abrupt(\"return\", {\n                  skip_based_on_external_contract: true\n                });\n              case 5:\n                if (!(practicesToSkip.includes(enterpriseCustomerId) || (current_account != null ? current_account.received_enterprise_invite : void 0) != null)) {\n                  _context.next = 7;\n                  break;\n                }\n                return _context.abrupt(\"return\", {\n                  skip_based_on_invite_status: true\n                });\n              case 7:\n                hasbypassed = $cookies.get('bypass_contract');\n                if (!(hasbypassed === \"1\")) {\n                  _context.next = 10;\n                  break;\n                }\n                return _context.abrupt(\"return\", {\n                  skip_based_on_bypass: true\n                });\n              case 10:\n                queryString = {\n                  sig: encodeURI(body.signer_id),\n                  sid: body.site_access_id,\n                  gkey: body.group_key\n                };\n                return _context.abrupt(\"return\", Restangular.oneUrl('latest', 'https://pactsafe.io/latest').get(queryString));\n              case 12:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function latest(_x, _x2, _x3) {\n          return _latest.apply(this, arguments);\n        }\n        return latest;\n      }(),\n      createRequest: function createRequest(enterpriseCustomerId, enterpriseEnrollmentId, pactsafeRequestOptions) {\n        return pactsafeService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_enrollments', enterpriseEnrollmentId).customPOST(pactsafeRequestOptions, 'create_pactsafe_request');\n      },\n      getRequest: function getRequest(enterpriseCustomerId, enterpriseEnrollmentId) {\n        return pactsafeService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_enrollments', enterpriseEnrollmentId).customGET('get_pactsafe_request');\n      },\n      pactsafeEulaDeliveryOptions: [{\n        label: \"In person, right now\",\n        value: \"IN_PERSON\"\n      }],\n      pactsafeEulaDeliveryOptionsNotPresent: [{\n        label: \"Email patient a link\",\n        value: \"EMAIL\"\n      }],\n      pactsafeEulaDeliveryOptionsSnailMail: [{\n        label: \"Mail the patient a EULA\",\n        value: \"MAIL\"\n      }],\n      /**\n       * @ngdoc function\n       * @name PactsafeService.loadPactsafeJS\n       * @methodOf services.factory:PactsafeService\n       * @description\n       * loads the ps.min.js script file into the head of our website\n       */\n      loadPactsafeJS: function loadPactsafeJS() {\n        return System.import('https://ps-vault.s3.amazonaws.com/ps.min.js').then(function (data) {\n          return window._ps = data;\n        });\n      },\n      // enable pactsafe and init with our access_id\n      // create the site in the component, so we can remove it $onDestroy and load it again in the case of a navigation change and back again\n      // _ps 'create', env.pactsafe.site_access_id, {disable_sending: true, dynamic: true}\n      /**\n       * @ngdoc function\n       * @name PactsafeService.loadSmartPactJS\n       * @methodOf services.factory:PactsafeService\n       * @description\n       * loads the pactsafe-embed.js script file into the head of our website (for smartpact e-signatures)\n       */\n      loadSmartPactJS: function loadSmartPactJS() {\n        return System.import('//vault.pactsafe.io/pactsafe-embed.js').then(function (data) {\n          return window.PactSafeEmbedded = data;\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name PactsafeService.showSmartPact\n       * @methodOf services.factory:PactsafeService\n       * @param {object} signatureOptions the options for the open method\n       * @description\n       * displays a Pactsafe Smartpact embedded in a container DOM element via an iframe. loadSmartPactJS() must be called first.\n       * docs: https://developer.pactsafe.com/page/embedding-the-pactsafe-signing-experience#section-snippet-breakdown\n       * @returns {object} EmbeddedSignature Pactsafe object\n       * @example\n      <pre>\n        PactsafeService.loadSmartPactJS().then ->\n          PactsafeService.showSmartPact()\n      </pre>\n       */\n      showSmartPact: function showSmartPact(signatureOptions) {\n        var EmbeddedSignature, defaultSignatureOptions;\n        // PARAMETERS:\n        // ---------------------\n        // url                        String. The url to open in the child frame\n        // redirect_url               String. Where to go after the signature is completed\n        // allow_cancel               Boolean. Whether a cancel button should be displayed (default = true)\n        // message_listener           Function. A listener for X-window messages coming from the child frame\n        // debug                      Boolean. When true, debugging statements will be written to the console (default = false)\n        // skip_domain_verification   Boolean. When true, domain verification step will be skipped if and only if the Signature Request was created with test_mode=1 (default = false)\n        // container                  DOM element that will contain the iframe on the page (default = document.body)\n        // height                     Integer. Height of the iFrame (only applicable when a container is specified)\n        // from_top                   Integer. Number of pixels to offset the iFrame from the top of the container (default = 30)\n        // from_left                  Integer. Number of pixels to offset the iFrame from the left and right of the container (default = 60)\n        // frame_width_ratio          Decimal. Percentage width of the iFrame relative to the container (default = 0.9)\n        // timeout_ms                 Integer. The number of milliseconds to wait for a response from the iframe. If no response after that time the iframe will be closed. 15000 milliseconds is recommended.\n        defaultSignatureOptions = {\n          // signing URL is generated by calling:\n          // GET => /v1.1/requests/{request_id}/url?signer_id={signer_id}\n          url: env.pactsafe.patient_esig_url,\n          // redirect_url: \"\"\n          // container: \"\"\n          allow_cancel: true,\n          debug: true,\n          from_left: 0,\n          from_top: 0,\n          message_listener: function message_listener(data) {\n            $log.log(data);\n          }\n        };\n        // signer_identity_confirmed, request_signed, finished\n        // Do something after user cancels, saves, etc...\n        EmbeddedSignature = new PactSafeEmbedded(env.pactsafe.esig_client_id);\n        EmbeddedSignature.open(signatureOptions || defaultSignatureOptions);\n        return EmbeddedSignature;\n      },\n      showRedirectModal: function showRedirectModal() {\n        return $uibModal.open({\n          templateUrl: 'app/global/signature-required-modal/signature-required-modal.html',\n          controller: function controller($scope, $translate, $uibModalInstance) {\n            return $scope.modalOptions = {\n              headerText: \"\",\n              bodyText: $translate.instant('PORTAL.ENTERPRISE.AGREEMENTS.BODY.DISMISSED_COPY_TEXT'),\n              actionButtonText: $translate.instant('PORTAL.ENTERPRISE.AGREEMENTS.BODY.OK'),\n              ok: function ok() {\n                return $uibModalInstance.close();\n              },\n              showCloseButton: false\n            };\n          },\n          backdrop: 'static',\n          keyboard: false\n        }).result;\n      },\n      shouldRedirectProviderToSignAgreements: function shouldRedirectProviderToSignAgreements(user, enterpriseCustomer) {\n        var hasbypassed, self;\n        self = this;\n        if (enterpriseCustomer != null ? enterpriseCustomer.pactsafe_contract_id : void 0) {\n          return {\n            skip_based_on_external_contract: true\n          };\n        }\n        if (practicesToSkip.includes(enterpriseCustomer.id)) {\n          return {\n            skip_based_on_invite_status: true\n          };\n        }\n        hasbypassed = $cookies.get('bypass_contract');\n        if (hasbypassed === \"1\") {\n          return {\n            skip_based_on_bypass: true\n          };\n        }\n        return this.latest(enterpriseCustomer.id, {\n          group_key: enterpriseCustomer.pactsafe_contract_group_id,\n          signer_id: user.user_profile.email,\n          site_access_id: env.pactsafe.site_access_id\n        }).then(function (contractStates) {\n          var latestSignedContractState, shouldRedirectToSignAgreements;\n          // redirect user to sign agreements\n          latestSignedContractState = Restangular.stripRestangular(contractStates);\n          shouldRedirectToSignAgreements = _.values(latestSignedContractState).includes(false);\n          if (AuthService.isAdmin() || AuthService.isAccountManager()) {\n            return $q.when(true);\n          } else if (shouldRedirectToSignAgreements && enterpriseCustomer.id !== 'ac9df775-3b06-4cc9-91db-5b357bd61ce6') {\n            return self.showRedirectModal().then(function () {\n              return $state.go('enterprise.dashboard');\n            });\n          } else {\n            return $q.when(true);\n          }\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:OfficeService\n   * @description\n   * For RESTful interaction w/ our Office apis.\n   */\n  angular.module('services').factory('OfficeService', function (env, $log, $state, $q, $filter, Restangular, AdminService) {\n    'ngInject';\n\n    var officesService, restangular;\n    $log = $log.getInstance('OfficeService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    officesService = restangular.all('');\n    return {\n      new: function _new() {\n        return {\n          enterprise_customer_id: null,\n          is_primary: null,\n          phone_1_number: null,\n          phone_1_type: 'w',\n          phone_2_number: null,\n          phone_2_type: null,\n          fax_number: null,\n          address_street: null,\n          address_street2: null,\n          address_city: null,\n          address_state: null,\n          address_zipcode: null,\n          address_floor: null,\n          other: null\n        };\n      },\n      getAll: function getAll(enterpriseCustomerId) {\n        var filters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        return officesService.one('enterprise_customers', enterpriseCustomerId).one('offices').get(filters);\n      },\n      get: function get(enterpriseCustomerId, officeId) {\n        return officesService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).get();\n      },\n      post: function post(enterpriseCustomerId, office) {\n        $log.log('enterpriseCustomerId', enterpriseCustomerId, 'office', office);\n        return officesService.one('enterprise_customers', enterpriseCustomerId).one('offices').customPOST(office);\n      },\n      put: function put(enterpriseCustomerId, office) {\n        return officesService.one('enterprise_customers', enterpriseCustomerId).one('offices', office.id).customPUT(office);\n      },\n      // Deprecated: normal office lifecycle uses admin deactivate/reactivate.\n      // Provider-facing office DELETE is not routed and this method has no in-app callers.\n      delete: function _delete(enterpriseCustomerId, officeId) {\n        return officesService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).remove();\n      },\n      loggedInOffice: function loggedInOffice(enterpriseCustomerId) {\n        return officesService.one('enterprise_customers', enterpriseCustomerId).one('logged_in_office').get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('OfficeLifecycleNormalizer', function () {\n    var decorateOffice, displayName, groupOffices, isInactive, officeSpecificReasonId, practiceDeactivatedAt, sortGroup;\n    practiceDeactivatedAt = function practiceDeactivatedAt(office) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var practice, ref;\n      if (options.practiceDeactivatedAt != null) {\n        return options.practiceDeactivatedAt;\n      }\n      practice = options.practice || (office != null ? office.enterprise_customer : void 0) || (office != null ? office.practice : void 0);\n      return (practice != null ? practice.deactivated_at : void 0) || (office != null ? office.practice_deactivated_at : void 0) || (office != null ? office.enterprise_customer_deactivated_at : void 0) || (office != null ? (ref = office.enterprise_customer) != null ? ref.deactivated_at : void 0 : void 0) || null;\n    };\n    isInactive = function isInactive(office) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return Boolean((office != null ? office.deactivated_at : void 0) || practiceDeactivatedAt(office, options));\n    };\n    // Prefer office-specific reason only when the office itself is deactivated.\n    // Practice-only inactivity should not surface an office reason.\n    officeSpecificReasonId = function officeSpecificReasonId(office) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!(office != null ? office.deactivated_at : void 0)) {\n        return null;\n      }\n      return office.deactivation_reason_id || null;\n    };\n    displayName = function displayName(office) {\n      var nameField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'name';\n      return String((office != null ? office[nameField] : void 0) || (office != null ? office.office_name : void 0) || (office != null ? office.name : void 0) || '').toLowerCase();\n    };\n    sortGroup = function sortGroup(offices, nameField) {\n      return _.sortBy(offices, [function (office) {\n        return displayName(office, nameField);\n      }, function (office) {\n        return String((office != null ? office.id : void 0) || (office != null ? office.office_id : void 0) || '');\n      }]);\n    };\n    decorateOffice = function decorateOffice(office) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var inactive;\n      inactive = isInactive(office, options);\n      return angular.extend({}, office, {\n        isInactiveOffice: inactive,\n        effective_inactive: inactive,\n        officeSpecificDeactivationReasonId: officeSpecificReasonId(office, options)\n      });\n    };\n    groupOffices = function groupOffices(offices) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var decorated, groups, nameField;\n      nameField = options.nameField || 'name';\n      decorated = _.map(offices || [], function (office) {\n        return decorateOffice(office, options);\n      });\n      groups = _.groupBy(decorated, function (office) {\n        if (office.isInactiveOffice) {\n          return 'inactive';\n        } else {\n          return 'active';\n        }\n      });\n      return {\n        active: sortGroup(groups.active || [], nameField),\n        inactive: sortGroup(groups.inactive || [], nameField)\n      };\n    };\n    return {\n      isInactive: isInactive,\n      decorateOffice: decorateOffice,\n      groupOffices: groupOffices,\n      officeSpecificReasonId: officeSpecificReasonId\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('NotificationsService', function (toastr, $translate) {\n    'ngInject';\n\n    return {\n      success: function success(translationKey, translationOptions, options) {\n        return $translate([translationKey], translationOptions).then(function (translations) {\n          return toastr.success(translations[translationKey], options);\n        });\n      },\n      error: function error(translationKey, translationOptions) {\n        return $translate([translationKey], translationOptions).then(function (translations) {\n          return toastr.error(translations[translationKey]);\n        });\n      },\n      warn: function warn(translationKey, translationOptions) {\n        return $translate([translationKey], translationOptions).then(function (translations) {\n          return toastr.warning(translations[translationKey]);\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * Shared notification queue state for nav badge + transcription queue page.\n   * Phase 1: populated on load + manual refresh. Next phase: append from SSE / reconcile.\n   */\n  angular.module('services').factory('NotificationQueueStateService', function ($log, $q, $rootScope, UserNotificationsApiService) {\n    'ngInject';\n\n    var broadcast, state;\n    $log = $log.getInstance('NotificationQueueStateService');\n    state = {\n      notifications: [],\n      loading: false,\n      error: null,\n      lastLoadedAt: null\n    };\n    broadcast = function broadcast() {\n      return $rootScope.$broadcast('notificationQueue:changed');\n    };\n    return {\n      notifications: state.notifications,\n      load: function load(userId) {\n        if (!userId) {\n          return $q.reject('missing userId');\n        }\n        state.loading = true;\n        state.error = null;\n        return UserNotificationsApiService.getAllForUser(userId).then(function (list) {\n          var arr;\n          state.notifications.length = 0;\n          arr = angular.isArray(list) ? list : [];\n          angular.forEach(arr, function (n) {\n            return state.notifications.push(n);\n          });\n          state.lastLoadedAt = Date.now();\n          broadcast();\n          return state.notifications;\n        }).catch(function (err) {\n          state.error = err;\n          $log.warn('notification queue load failed', err);\n          state.notifications.length = 0;\n          broadcast();\n          throw err;\n        }).finally(function () {\n          return state.loading = false;\n        });\n      },\n      // Extension point for streaming: merge server truth or append one notification.\n      refresh: function refresh(userId) {\n        return this.load(userId);\n      },\n      reconcileFromServerList: function reconcileFromServerList(list) {\n        state.notifications.length = 0;\n        angular.forEach(list || [], function (n) {\n          return state.notifications.push(n);\n        });\n        state.lastLoadedAt = Date.now();\n        return broadcast();\n      },\n      // Pending = call_transcription notifications not yet completed (is_read false).\n      getPendingCallTranscriptions: function getPendingCallTranscriptions() {\n        return _.chain(state.notifications).filter(function (n) {\n          return n.type === 'call_transcription' && !n.is_read;\n        }).sortBy(function (n) {\n          return new Date(n.created_at).getTime();\n        }).value();\n      },\n      getTotalCount: function getTotalCount() {\n        return state.notifications.length;\n      },\n      getPendingCount: function getPendingCount() {\n        return this.getPendingCallTranscriptions().length;\n      },\n      // All call_transcription rows (read or unread) — visibility for queue entry / badge host.\n      getCallTranscriptionCount: function getCallTranscriptionCount() {\n        return _.filter(state.notifications, function (n) {\n          return n.type === 'call_transcription';\n        }).length;\n      },\n      // Popover / inbox: all transcription notifications, oldest first (queue order).\n      getAllCallTranscriptionsSorted: function getAllCallTranscriptionsSorted() {\n        return _.chain(state.notifications).filter(function (n) {\n          return n.type === 'call_transcription';\n        }).sortBy(function (n) {\n          return new Date(n.created_at).getTime();\n        }).value();\n      },\n      applySavedNotification: function applySavedNotification(saved) {\n        var idx;\n        idx = _.findIndex(state.notifications, {\n          id: saved.id\n        });\n        if (idx >= 0) {\n          state.notifications[idx] = angular.extend({}, saved);\n        } else {\n          state.notifications.push(angular.extend({}, saved));\n        }\n        return broadcast();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * Navigate from notification UI to enterprise.observation_report for a patient (RPM).\n   * Uses GET .../notifications/patient_observation_report/:patientUserProfileId to resolve\n   * practice + office + report id, then switches profile/office via UserService when needed.\n   */\n  angular.module('services').factory('NotificationPatientReportNavService', function ($log, $q, $state, $translate, UserService, UserNotificationsApiService, NotificationsService) {\n    'ngInject';\n\n    var applyContextAndNavigate, goObservationReport;\n    $log = $log.getInstance('NotificationPatientReportNavService');\n    goObservationReport = function goObservationReport(patientUserProfileId, observationReportId) {\n      return $state.go('enterprise.observation_report', {\n        user_profile_id: patientUserProfileId,\n        observation_report_id: observationReportId\n      });\n    };\n    applyContextAndNavigate = function applyContextAndNavigate(portalUserId, patientUserProfileId, ctx) {\n      return UserService.get(portalUserId).then(function (user) {\n        var chain, ref, ref1, sameEnterprise, sameOffice, sameProfile;\n        sameProfile = ((ref = user.user_profile) != null ? ref.id : void 0) === ctx.provider_user_profile_id;\n        sameEnterprise = ((ref1 = user.user_profile) != null ? ref1.enterprise_customer_id : void 0) === ctx.enterprise_customer_id;\n        sameOffice = user.logged_in_office_id === ctx.office_id;\n        if (sameProfile && sameEnterprise && sameOffice) {\n          goObservationReport(patientUserProfileId, ctx.observation_report_id);\n          return null;\n        }\n        chain = $q.resolve();\n        if (!sameProfile || !sameEnterprise) {\n          chain = chain.then(function () {\n            return UserService.switchUserProfile(ctx.provider_user_profile_id);\n          });\n          chain = chain.then(function () {\n            return UserService.switchOffice(portalUserId, ctx.office_id);\n          });\n        } else if (!sameOffice) {\n          chain = chain.then(function () {\n            return UserService.switchOffice(portalUserId, ctx.office_id);\n          });\n        }\n        return chain.then(function () {\n          return UserService.get(portalUserId);\n        }).then(function () {\n          return goObservationReport(patientUserProfileId, ctx.observation_report_id);\n        });\n      });\n    };\n    return {\n      navigateToPatientObservationReport: function navigateToPatientObservationReport(portalUserId, patientUserProfileId) {\n        if (!patientUserProfileId) {\n          NotificationsService.error($translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_NO_PATIENT'));\n          return $q.reject('no_patient');\n        }\n        return UserNotificationsApiService.getPatientObservationReportContext(portalUserId, patientUserProfileId).then(function (ctx) {\n          return applyContextAndNavigate(portalUserId, patientUserProfileId, ctx);\n        }).catch(function (err) {\n          var msg;\n          $log.warn('navigateToPatientObservationReport failed', err);\n          if (err === 'no_patient') {\n            return $q.reject(err);\n          }\n          msg = function () {\n            switch (err != null ? err.status : void 0) {\n              case 403:\n                return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_FORBIDDEN');\n              case 404:\n                return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_NOT_FOUND');\n              case 400:\n                return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_BAD_REQUEST');\n              default:\n                return $translate.instant('NOTIFICATIONS.TRANSCRIPTION_MODAL.NAV_ERROR');\n            }\n          }();\n          NotificationsService.error(msg);\n          return $q.reject(err);\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * Transport-agnostic live notifications for the Provider Portal.\n   * - Configured WebSocket URL (env.notificationLive.webSocketUrl) → API Gateway WebSocket + ?jwt=\n   * - Otherwise → SSE GET /users/:id/notifications/stream (local dev).\n   * Message contract: { type: 'notification_created', notification: { ... } } (same payload shape as REST).\n   */\n  angular.module('services').factory('NotificationLiveClientService', function ($log, $rootScope, env, Auth0Store, NotificationQueueStateService) {\n    'ngInject';\n\n    var MAX_RECONNECT_DELAY_MS, RECONNECT_DELAY_MS, activeName, activeTransport, applyEnvelope, createSseTransport, createWebSocketTransport, pickTransportName;\n    $log = $log.getInstance('NotificationLiveClientService');\n    RECONNECT_DELAY_MS = 3000;\n    MAX_RECONNECT_DELAY_MS = 30000;\n    applyEnvelope = function applyEnvelope(payload) {\n      var deliveryStartedAt, n, ref, ref1, ref2, ref3, uiReceivedAt;\n      if ((payload != null ? payload.type : void 0) !== 'notification_created') {\n        return;\n      }\n      n = payload.notification;\n      if (n != null ? n.id : void 0) {\n        if (n.type === 'call_transcription') {\n          uiReceivedAt = new Date();\n          deliveryStartedAt = ((ref = n.contents) != null ? ref.transcription_processed_at : void 0) || n.created_at;\n          $log.log('call transcription notification received', {\n            notificationId: n.id,\n            taskId: (ref1 = n.contents) != null ? ref1.task_id : void 0,\n            transcriptionReceivedAt: (ref2 = n.contents) != null ? ref2.transcription_received_at : void 0,\n            transcriptionProcessedAt: (ref3 = n.contents) != null ? ref3.transcription_processed_at : void 0,\n            notificationCreatedAt: n.created_at,\n            uiReceivedAt: uiReceivedAt.toISOString(),\n            deliveryLatencyMs: deliveryStartedAt ? uiReceivedAt.getTime() - new Date(deliveryStartedAt).getTime() : null\n          });\n        }\n        return $rootScope.$applyAsync(function () {\n          return NotificationQueueStateService.applySavedNotification(n);\n        });\n      }\n    };\n    createWebSocketTransport = function createWebSocketTransport() {\n      var clearTimers, currentReconnectDelay, currentUserId, disconnectRequested, openSocket, reconnectTimeoutId, scheduleReconnect, ws;\n      ws = null;\n      reconnectTimeoutId = null;\n      disconnectRequested = false;\n      currentReconnectDelay = RECONNECT_DELAY_MS;\n      currentUserId = null;\n      clearTimers = function clearTimers() {\n        if (reconnectTimeoutId) {\n          clearTimeout(reconnectTimeoutId);\n          return reconnectTimeoutId = null;\n        }\n      };\n      scheduleReconnect = function scheduleReconnect() {\n        var delay;\n        if (disconnectRequested || reconnectTimeoutId || !currentUserId) {\n          return;\n        }\n        delay = Math.min(currentReconnectDelay, MAX_RECONNECT_DELAY_MS);\n        $log.log('notification live WebSocket reconnect in', delay, 'ms');\n        return reconnectTimeoutId = setTimeout(function () {\n          reconnectTimeoutId = null;\n          currentReconnectDelay = Math.min(currentReconnectDelay * 2, MAX_RECONNECT_DELAY_MS);\n          return openSocket(currentUserId);\n        }, delay);\n      };\n      openSocket = function openSocket(userId) {\n        var base, err, ref, scheme, token, url, urlBase;\n        if (!userId) {\n          return;\n        }\n        token = Auth0Store != null ? typeof Auth0Store.get === \"function\" ? Auth0Store.get('access_token') : void 0 : void 0;\n        if (!token) {\n          $log.log('notification live WebSocket: no token');\n          return;\n        }\n        base = (((ref = env.notificationLive) != null ? ref.webSocketUrl : void 0) || '').replace(/\\/$/, '');\n        if (!base) {\n          $log.warn('notification live WebSocket: webSocketUrl missing');\n          return;\n        }\n        scheme = base.indexOf('wss://') === 0 || base.indexOf('ws://') === 0 ? '' : 'wss://';\n        urlBase = scheme ? scheme + base : base;\n        url = urlBase + '?jwt=' + encodeURIComponent(token);\n        try {\n          ws = new WebSocket(url);\n        } catch (error) {\n          err = error;\n          $log.warn('notification live WebSocket: construct failed', err);\n          scheduleReconnect();\n          return;\n        }\n        ws.onopen = function () {\n          currentReconnectDelay = RECONNECT_DELAY_MS;\n          return $log.log('notification live WebSocket open');\n        };\n        ws.onmessage = function (ev) {\n          var payload;\n          try {\n            payload = JSON.parse(ev.data);\n            return applyEnvelope(payload);\n          } catch (error) {\n            err = error;\n            return $log.warn('notification live WebSocket: bad message', err);\n          }\n        };\n        ws.onerror = function (err) {\n          return $log.warn('notification live WebSocket error', err);\n        };\n        return ws.onclose = function () {\n          ws = null;\n          if (disconnectRequested) {\n            return;\n          }\n          return scheduleReconnect();\n        };\n      };\n      return {\n        connect: function connect(userId) {\n          disconnectRequested = false;\n          currentUserId = userId;\n          currentReconnectDelay = RECONNECT_DELAY_MS;\n          clearTimers();\n          return openSocket(userId);\n        },\n        disconnect: function disconnect() {\n          disconnectRequested = true;\n          clearTimers();\n          if (ws) {\n            try {\n              ws.close();\n            } catch (error) {\n              null;\n            }\n            ws = null;\n          }\n          return currentUserId = null;\n        }\n      };\n    };\n    createSseTransport = function createSseTransport() {\n      var abortController, buildStreamUrl, clearReconnect, currentReconnectDelay, currentUserId, disconnectRequested, doFetch, parseSSEMessage, readStream, reconnectTimeoutId, scheduleReconnect;\n      abortController = null;\n      disconnectRequested = false;\n      reconnectTimeoutId = null;\n      currentReconnectDelay = RECONNECT_DELAY_MS;\n      currentUserId = null;\n      buildStreamUrl = function buildStreamUrl(userId) {\n        var base, ref;\n        base = (((ref = env.services) != null ? ref.baseUrl : void 0) || '').replace(/\\/$/, '');\n        return \"\".concat(base, \"/users/\").concat(userId, \"/notifications/stream\");\n      };\n      parseSSEMessage = function parseSSEMessage(text) {\n        var data, event, i, len, line, raw, ref;\n        if (!(text != null ? text.trim() : void 0)) {\n          return null;\n        }\n        event = null;\n        data = null;\n        ref = text.split(/\\r?\\n/);\n        for (i = 0, len = ref.length; i < len; i++) {\n          line = ref[i];\n          if (line.indexOf('event: ') === 0) {\n            event = line.slice(7).trim();\n          } else if (line.indexOf('data: ') === 0) {\n            raw = line.slice(6);\n            try {\n              if (raw) {\n                data = JSON.parse(raw);\n              }\n            } catch (error) {\n              data = raw;\n            }\n          }\n        }\n        if (event || data) {\n          return {\n            event: event,\n            data: data\n          };\n        } else {\n          return null;\n        }\n      };\n      clearReconnect = function clearReconnect() {\n        if (reconnectTimeoutId) {\n          clearTimeout(reconnectTimeoutId);\n          return reconnectTimeoutId = null;\n        }\n      };\n      scheduleReconnect = function scheduleReconnect() {\n        var delay;\n        if (disconnectRequested || reconnectTimeoutId || !currentUserId) {\n          return;\n        }\n        delay = Math.min(currentReconnectDelay, MAX_RECONNECT_DELAY_MS);\n        $log.log('notification live SSE reconnect in', delay, 'ms');\n        return reconnectTimeoutId = setTimeout(function () {\n          reconnectTimeoutId = null;\n          currentReconnectDelay = Math.min(currentReconnectDelay * 2, MAX_RECONNECT_DELAY_MS);\n          return doFetch(currentUserId);\n        }, delay);\n      };\n      readStream = function readStream(response) {\n        var buffer, decoder, _processChunk, reader;\n        reader = response.body.getReader();\n        decoder = new TextDecoder();\n        buffer = '';\n        _processChunk = function processChunk() {\n          return reader.read().then(function (_ref) {\n            var value = _ref.value,\n              done = _ref.done;\n            var block, envelope, i, len, msg, notification, parts, ref;\n            if (done) {\n              if (!disconnectRequested) {\n                scheduleReconnect();\n              }\n              return;\n            }\n            buffer += decoder.decode(value, {\n              stream: true\n            });\n            parts = buffer.split(/\\n\\n/);\n            buffer = parts.pop() || '';\n            for (i = 0, len = parts.length; i < len; i++) {\n              block = parts[i];\n              msg = parseSSEMessage(block);\n              if (!msg) {\n                continue;\n              }\n              if (msg.event === 'notification' && msg.data) {\n                notification = ((ref = msg.data) != null ? ref.data : void 0) || msg.data;\n                if (notification != null ? notification.id : void 0) {\n                  envelope = {\n                    type: 'notification_created',\n                    notification: notification\n                  };\n                  applyEnvelope(envelope);\n                }\n              }\n              if (msg.event === 'ready') {\n                $log.log('notification live SSE ready', msg.data);\n              }\n            }\n            return _processChunk();\n          });\n        };\n        return _processChunk().catch(function (err) {\n          if (disconnectRequested) {\n            return;\n          }\n          $log.warn('notification live SSE read error', err);\n          return scheduleReconnect();\n        });\n      };\n      doFetch = function doFetch(userId) {\n        var token, url;\n        if (!userId) {\n          return;\n        }\n        token = Auth0Store != null ? typeof Auth0Store.get === \"function\" ? Auth0Store.get('access_token') : void 0 : void 0;\n        if (!token) {\n          $log.log('notification live SSE: no token');\n          return;\n        }\n        url = buildStreamUrl(userId);\n        abortController = new AbortController();\n        return fetch(url, {\n          method: 'GET',\n          headers: {\n            JWT: token\n          },\n          signal: abortController.signal\n        }).then(function (response) {\n          if (response.status === 503) {\n            $log.log('notification live SSE unavailable (503)');\n            return;\n          }\n          if (!response.ok) {\n            $log.warn('notification live SSE HTTP error', response.status);\n            scheduleReconnect();\n            return;\n          }\n          return readStream(response);\n        }).catch(function (err) {\n          if (disconnectRequested || (err != null ? err.name : void 0) === 'AbortError') {\n            return;\n          }\n          $log.warn('notification live SSE connect failed', err);\n          return scheduleReconnect();\n        });\n      };\n      return {\n        connect: function connect(userId) {\n          disconnectRequested = false;\n          currentUserId = userId;\n          currentReconnectDelay = RECONNECT_DELAY_MS;\n          clearReconnect();\n          return doFetch(userId);\n        },\n        disconnect: function disconnect() {\n          disconnectRequested = true;\n          clearReconnect();\n          if (abortController) {\n            try {\n              abortController.abort();\n            } catch (error) {\n              null;\n            }\n            abortController = null;\n          }\n          return currentUserId = null;\n        }\n      };\n    };\n    pickTransportName = function pickTransportName() {\n      var cfg, mode, wsUrl;\n      cfg = env.notificationLive || {};\n      mode = cfg.transport || 'auto';\n      wsUrl = cfg.webSocketUrl;\n      if (mode === 'sse') {\n        return 'sse';\n      }\n      if (mode === 'websocket') {\n        if (wsUrl != null ? wsUrl.length : void 0) {\n          return 'websocket';\n        } else {\n          return 'sse';\n        }\n      }\n      // auto\n      if (wsUrl != null ? wsUrl.length : void 0) {\n        return 'websocket';\n      } else {\n        return 'sse';\n      }\n    };\n    activeTransport = null;\n    activeName = null;\n    return {\n      connect: function connect(userId) {\n        var name;\n        if (!userId) {\n          return;\n        }\n        name = pickTransportName();\n        if (activeTransport && activeName !== name) {\n          activeTransport.disconnect();\n          activeTransport = null;\n        }\n        if (!activeTransport) {\n          activeTransport = name === 'websocket' ? createWebSocketTransport() : createSseTransport();\n          activeName = name;\n        }\n        return activeTransport.connect(userId);\n      },\n      disconnect: function disconnect() {\n        if (activeTransport != null) {\n          if (typeof activeTransport.disconnect === \"function\") {\n            activeTransport.disconnect();\n          }\n        }\n        activeTransport = null;\n        return activeName = null;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:PatientServicesService\n   * @description\n   * Service for patient services\n   * @example\n  <pre>\n    this.practiceRoles = PatientServicesService.getAll(enterpriseCustomerId)\n  </pre>\n   */\n  angular.module('services').factory('ModelPatientServicesService', function (env, Restangular, $log) {\n    'ngInject';\n\n    var modelPatientServices, restangular;\n    $log = $log.getInstance('ModelPatientServicesService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    modelPatientServices = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId) {\n        return modelPatientServices.one('', userProfileId).one('model_patient_services').get();\n      },\n      get: function get(userProfileId, modelPatientServiceId) {\n        return modelPatientServices.one('', userProfileId).one('model_patient_services', modelPatientServiceId).get();\n      },\n      post: function post(userProfileId, modelPatientService) {\n        $log.log('userProfileId', userProfileId, 'modelPatientService', modelPatientService);\n        return modelPatientServices.one('', userProfileId).one('model_patient_services').customPOST(modelPatientService);\n      },\n      put: function put(userProfileId, modelPatientService) {\n        $log.log('userProfileId', userProfileId, 'modelPatientService', modelPatientService);\n        return modelPatientServices.one('', userProfileId).one('model_patient_services', modelPatientService.id).customPUT(modelPatientService);\n      },\n      delete: function _delete(userProfileId, modelPatientServiceId) {\n        return modelPatientServices.one('', userProfileId).one('model_patient_services', modelPatientServiceId).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('directives').service('ModalService', function ($uibModal, $timeout, $log) {\n    var modalDefaults, modalOptions, timer;\n    $log = $log.getInstance('ModalService');\n    modalDefaults = {\n      backdrop: true,\n      keyboard: true,\n      modalFade: true,\n      templateUrl: 'app/services/modal.service.template.html'\n    };\n    modalOptions = {\n      closeButtonText: 'Close',\n      actionButtonText: 'OK',\n      headerText: 'Proceed?',\n      bodyText: 'Perform this action?'\n    };\n    timer = null;\n    this.showModal = function (customModalDefaults, customModalOptions) {\n      if (!customModalDefaults) {\n        customModalDefaults = {};\n      }\n      // http://www.w3schools.com/bootstrap/bootstrap_ref_js_modal.asp\n      return this.show(customModalDefaults, customModalOptions);\n    };\n    this.show = function (customModalDefaults, customModalOptions) {\n      var openFn, tempModalDefaults, tempModalOptions;\n      //Create temp objects to work with since we're in a singleton service\n      tempModalDefaults = {};\n      tempModalOptions = {};\n      //Map angular-ui modal custom defaults to modal defaults defined in service\n      angular.extend(tempModalDefaults, modalDefaults, customModalDefaults);\n      //Map modal.html $scope custom properties to defaults defined in service\n      angular.extend(tempModalOptions, modalOptions, customModalOptions);\n      if (!tempModalDefaults.controller) {\n        tempModalDefaults.controller = function ($scope, $uibModalInstance) {\n          $scope.modalOptions = tempModalOptions;\n          $scope.modalOptions.ok = function (result) {\n            return $uibModalInstance.close(result);\n          };\n          $scope.modalOptions.close = function (result) {\n            return $uibModalInstance.close(false);\n          };\n        };\n      }\n      openFn = $uibModal.open(tempModalDefaults);\n      // focus the first input field if there's a form\n      // NOTE: opened fires before DOM is ready :(\n      openFn.opened.then(function (response) {\n        // wait until the template is rendered\n        return timer = $timeout(function () {\n          var firstInput;\n          firstInput = $('.modal-wrapper form').find('input[type=text],select').filter(':visible:first');\n          // $log.log 'firstInput', firstInput\n          if (firstInput.length > 0) {\n            return firstInput.focus();\n          }\n        }, 150);\n      });\n      // handle the backdrop click error\n      openFn.result.then(function (result) {\n        return $log.log('result', result);\n      }, function (error) {\n        // http://stackoverflow.com/questions/42416570/how-to-handle-possibly-unhandled-rejection-backdrop-click-in-a-general-way\n        if (error !== 'backdrop click') {\n          return $log.log(error);\n        }\n      });\n      return openFn;\n    };\n    // call this from modal components to return to parent state after modal closes\n    this.goToParentAfterClose = function ($scope, $state, optionalRedirectStateName) {\n      var cleanupBinding;\n      cleanupBinding = $scope.$on('modal.closing', function (event, reason, closed) {\n        $timeout.cancel(timer);\n        return $state.go(optionalRedirectStateName || $state.$current.parent.name);\n      });\n      // clean up $on binding\n      return $scope.$on('$destroy', function () {\n        return cleanupBinding();\n      });\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:MedicareAdvantageService\n   * @description\n   * Service for Medicare Advantage\n   * @example\n  <pre>\n    vm.medAdvantageProviders = MedicareAdvantageService.getProviderOptions()\n  </pre>\n   */\n  angular.module('services').factory('MedicareAdvantageService', function ($log, env, Restangular, CacheFactory, AuthService) {\n    'ngInject';\n\n    var medAdvProvidersCache, medAdvProvidersService, restangular;\n    $log = $log.getInstance('MedicareAdvantageService');\n    medAdvProvidersCache = CacheFactory('medAdvProvidersCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = medAdvProvidersCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    medAdvProvidersService = restangular.all('medicare_advantage_providers');\n    return {\n      /**\n       * @ngdoc function\n       * @name MedicareAdvantageService.getProviderOptions\n       * @methodOf services.factory:MedicareAdvantageService\n       * @description\n       * Creates an array of Medicare Advantage providers.\n       * Based off the Medicare Advantage providers stored in the database.\n       * @returns {array} Medicare Advantage provider options\n       */\n      getAll: function getAll() {\n        return medAdvProvidersService.getList();\n      },\n      /**\n       * @ngdoc function\n       * @name MedicareAdvantageService.search\n       * @methodOf services.factory:MedicareAdvantageService\n       * @description\n       * finds medicare advantage via search string\n       * @param {string} query search string\n       * @returns {array} all results from search string\n       */\n      search: function search(query) {\n        return medAdvProvidersService.customGET('search', {\n          query: query,\n          limit: 20\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:LookerService\n   * @description\n   * For RESTful interaction w/ our User apis.\n   */\n  angular.module('services').factory('LookerService', function (env, $log, $state, $q, DataStoreService, Restangular, CacheFactory, UserModel, UserProfileModel, AuthService) {\n    'ngInject';\n\n    var authLookerService, lookerService, restangular;\n    $log = $log.getInstance('LookerService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    lookerService = restangular.all('users');\n    authLookerService = restangular.all('enterprise_customers');\n    return {\n      getLookerGraphUrl: function getLookerGraphUrl(userId, lookId, filters) {\n        return lookerService.one('', userId).one('looks', lookId).get(filters);\n      },\n      initateChartRPMPdf: function initateChartRPMPdf(enterpriseCustomerId, userProfile, filters) {\n        return authLookerService.one('', enterpriseCustomerId).one('pdfchart', userProfile).one('initiate_rpm_chart_pdf').get(filters);\n      },\n      statusChartRPMPdf: function statusChartRPMPdf(enterpriseCustomerId, userProfile, token, taskid) {\n        return authLookerService.one('', enterpriseCustomerId).one('pdfchart', userProfile).one('', token).one('', taskid).one('check_rpm_chart_pdf').get();\n      },\n      downloadChartRPMPdf: function downloadChartRPMPdf(enterpriseCustomerId, userProfile, token, taskid, filters) {\n        return authLookerService.one('', enterpriseCustomerId).one('pdfchart', userProfile).one('', token).one('', taskid).one('download_rpm_chart_pdf').get(filters);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:LastReadingConfigService\n   * @description\n   * Configure Last Reading Pickers\n   * Vars:\n   */\n  angular.module('services').factory('LastReadingConfigService', function ($log, $window) {\n    'ngInject';\n\n    $log = $log.getInstance('LastReadingConfigService');\n    return {\n      startDate: luxon.DateTime.local(),\n      endDate: luxon.DateTime.local().startOf('month'),\n      filterOptions: [{\n        label: 'All readings',\n        value: null\n      }, {\n        label: 'Today',\n        value: {\n          gte: luxon.DateTime.local().startOf('day').toJSDate()\n        }\n      }, {\n        label: 'Yesterday',\n        value: {\n          'during': luxon.DateTime.local().minus({\n            days: 1\n          }).startOf('day').toJSDate(),\n          'and': luxon.DateTime.local().startOf('day').toJSDate()\n        }\n      }, {\n        label: 'Last 7 Days',\n        value: {\n          gte: luxon.DateTime.local().minus({\n            days: 7\n          }).startOf('day').toJSDate()\n        }\n      }, {\n        label: 'Last 30 Days',\n        value: {\n          gte: luxon.DateTime.local().minus({\n            days: 30\n          }).startOf('day').toJSDate()\n        }\n      }],\n      setupOptions: function setupOptions() {\n        return {\n          linkedCalendars: false,\n          alwaysShowCalendars: true,\n          //autoApply: true,\n          showDropdowns: true,\n          pickerClasses: 'custom-display wide-ranges last-reading',\n          // angular-daterangepicker extra\n          buttonClasses: 'btn',\n          applyButtonClasses: 'btn-primary',\n          cancelButtonClasses: 'btn-danger',\n          minYear: 1900,\n          maxYear: parseInt(moment().format('YYYY'), 10) + 1,\n          locale: {\n            applyLabel: 'Save',\n            cancelLabel: 'Clear (show all patients)',\n            customRangeLabel: 'Custom range',\n            separator: ' - ',\n            //format: \"YYYY-MM-DD\", # will give you 2017-01-06\n            format: \"M/DD/YY\" // will give you 6-Jan-17\n          },\n          // format: \"D-MMMM-YY\", # will give you 6-January-17\n          ranges: {\n            'Today': [luxon.DateTime.local().toJSDate()],\n            'Yesterday': [luxon.DateTime.local().minus({\n              days: 1\n            }).toJSDate(), luxon.DateTime.local().minus({\n              days: 1\n            }).toJSDate()],\n            'This week': [luxon.DateTime.local().minus({\n              days: 7\n            }).toJSDate(), luxon.DateTime.local().toJSDate()],\n            'Last week': [luxon.DateTime.local().minus({\n              days: 14\n            }).toJSDate(), luxon.DateTime.local().minus({\n              days: 7\n            }).toJSDate()],\n            'This month': [luxon.DateTime.local().minus({\n              months: 1\n            }).toJSDate(), luxon.DateTime.local().toJSDate()],\n            'Last month': [luxon.DateTime.local().minus({\n              months: 2\n            }).toJSDate(), luxon.DateTime.local().minus({\n              months: 1\n            }).toJSDate()],\n            'This year': [luxon.DateTime.local().startOf('year').toJSDate(), luxon.DateTime.local().toJSDate()],\n            'Last year': [luxon.DateTime.local().minus({\n              year: 1\n            }).startOf('year').toJSDate(), luxon.DateTime.local().minus({\n              year: 1\n            }).endOf('year').toJSDate()]\n          }\n        };\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:LanguagesService\n   * @description\n   * For RESTful interaction w/ our Language apis.\n   */\n  angular.module('services').factory('LanguagesService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var languagesCache, languagesService, restangular;\n    $log = $log.getInstance('LanguagesService');\n    languagesCache = CacheFactory('languagesCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = languagesCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    languagesService = restangular.all('languages');\n    return {\n      getAll: function getAll(params) {\n        return languagesService.getList(params);\n      },\n      getOnlySupportedLanguages: function () {\n        var _getOnlySupportedLanguages = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var languages;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this.getAll({\n                  is_supported: true,\n                  _sortField: 'name',\n                  _sortDir: 'asc'\n                });\n              case 2:\n                languages = _context.sent;\n                return _context.abrupt(\"return\", _.map(languages, function (language) {\n                  return {\n                    label: language.name,\n                    value: language.id\n                  };\n                }));\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function getOnlySupportedLanguages() {\n          return _getOnlySupportedLanguages.apply(this, arguments);\n        }\n        return getOnlySupportedLanguages;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('IntercomService', function (env, $log, $window, $transitions, DataStoreService) {\n    'ngInject';\n\n    $log = $log.getInstance('IntercomService');\n    return {\n      boot: function boot() {\n        var practice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var dateTime, intercomSettings, ref, timestamp, user;\n        user = DataStoreService.getStore().user;\n        $log.log('user', user);\n        // logged out user\n        intercomSettings = {\n          app_id: env.intercom.workspace_id,\n          source_app: 'provider_portal',\n          hide_default_launcher: true\n        };\n        // logged in w/ no user_profile data yet\n        if (user) {\n          // pass logged in user data to intercom\n          $log.log('user', user);\n          dateTime = new Date(user.created_at).getTime();\n          timestamp = Math.floor(dateTime / 1000);\n          intercomSettings = Object.assign({}, intercomSettings, {\n            user_type: 'practitioner',\n            user_id: user.id,\n            user_hash: user.intercom_verification_hash,\n            created_at: timestamp\n          });\n          if (user.user_profile) {\n            intercomSettings = Object.assign({}, intercomSettings, {\n              email: user.user_profile.email,\n              name: user.user_profile.getFullName(),\n              phone: user.user_profile.phone_1_number,\n              company: {\n                id: (practice != null ? practice.id : void 0) || '',\n                name: (practice != null ? practice.name : void 0) || ''\n              }\n            });\n            if (!user.user_profile.is_enterprise_admin) {\n              intercomSettings = Object.assign({}, intercomSettings, {\n                user_type: 'patient'\n              });\n            }\n          }\n        }\n        // boot/update Intercom.io\n        $window.intercomSettings = intercomSettings;\n        $log.log('$window.intercomSettings', $window.intercomSettings);\n        if ((ref = $window.Intercom) != null ? ref.booted : void 0) {\n          return $window.Intercom('update', $window.intercomSettings);\n        } else {\n          return $window.Intercom('boot', $window.intercomSettings);\n        }\n      },\n      trackEvent: function trackEvent(event) {\n        var metadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var ref;\n        if ((ref = $window.Intercom) != null ? ref.booted : void 0) {\n          $log.log('posting intercom event', event);\n          return $window.Intercom('trackEvent', event, metadata);\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:Icd10Service\n   * @description\n   * For RESTful interaction w/ our Icd10 apis.\n   */\n  angular.module('services').factory('Icd10Service', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var icd10Cache, icd10Service, restangular;\n    icd10Cache = CacheFactory('icd10Cache', {\n      maxAge: 14400 * 60 * 1000,\n      // Items added to this cache expire after 10 days.\n      cacheFlushInterval: 14400 * 60 * 1000,\n      // This cache will clear itself every 10 days.\n      deleteOnExpire: 'aggressive',\n      // Items will be deleted from this cache right when they expire.\n      storageMode: 'localStorage'\n    });\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = icd10Cache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    icd10Service = restangular.all('icd10s');\n    return {\n      /**\n       * @ngdoc function\n       * @name Icd10Service.search\n       * @methodOf services.factory:Icd10Service\n       * @description\n       * finds icd10s via search string\n       * @param {string} query search string\n       * @returns {array} all results from search string\n       */\n      search: function search(query, limit) {\n        return icd10Service.customGET('search', {\n          query: query,\n          limit: limit || 8\n        });\n      },\n      get: function get(code) {\n        return icd10Service.customGET('', {\n          code: code\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:GroupService\n   * @description\n   * For RESTful interaction w/ our Groups apis.\n   */\n  angular.module('services').factory('GroupService', function (env, $log, $state, $q, $filter, Restangular, GroupRoles) {\n    'ngInject';\n\n    var groupService, restangular;\n    $log = $log.getInstance('GroupService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'get') {\n          if (response.headers('X-Total-Count')) {\n            return response;\n          } else {\n            return data.data;\n          }\n        } else {\n          return data.data;\n        }\n      });\n    });\n    groupService = restangular.all('');\n    return {\n      create: function create(enterpriseCustomerId, officeId, group) {\n        return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('').post('groups', group);\n      },\n      delete: function _delete(enterpriseCustomerId, officeId, groupId) {\n        return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('groups', groupId).remove();\n      },\n      update: function update(enterpriseCustomerId, officeId, group) {\n        return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('groups', group.id).customPUT(group);\n      },\n      getAll: function getAll(enterpriseCustomerId, officeId, filters) {\n        return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('groups').get(filters);\n      },\n      removeMemberships: function removeMemberships(enterpriseCustomerId, officeId, groupId, groupMemberships, filters) {\n        return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('groups', groupId).post('remove_memberships', groupMemberships);\n      },\n      addMemberships: function addMemberships(enterpriseCustomerId, officeId, groupId, groupMemberships, filters) {\n        return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('groups', groupId).post('add_memberships', groupMemberships);\n      },\n      getPagedGroupList: function () {\n        var _getPagedGroupList = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId, officeId, pageNumber, itemsPerPage, user) {\n          var groupList, response;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return groupService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('groups').get({\n                  _page: pageNumber,\n                  _perPage: itemsPerPage,\n                  _sortDir: 'asc',\n                  _sortField: 'name'\n                });\n              case 2:\n                response = _context.sent;\n                groupList = {\n                  count: response.headers('X-Total-Count'),\n                  data: response.data.data\n                };\n                _.forEach(groupList.data, function (g) {\n                  g.original_name = g.name;\n                  g.careManagers = [];\n                  _.forEach(g.group_memberships, function (gm) {\n                    if (gm.group_role.role === GroupRoles.CARE_MANAGER) {\n                      g.careManagers.push(gm.user_profile.name_first + ' ' + gm.user_profile.name_last);\n                      if (gm.user_profile.id === user.user_profile.id) {\n                        return g.currentUserIsCareManager = true;\n                      }\n                    }\n                  });\n                  return g.careManagers.sort();\n                });\n                return _context.abrupt(\"return\", groupList);\n              case 6:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function getPagedGroupList(_x, _x2, _x3, _x4, _x5) {\n          return _getPagedGroupList.apply(this, arguments);\n        }\n        return getPagedGroupList;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:GroupRoleService\n   * @description\n   * For RESTful interaction w/ our Group role apis.\n   */\n  angular.module('services').factory('GroupRoleService', function (env, $log, $state, $q, $filter, Restangular, GroupRoles) {\n    'ngInject';\n\n    var groupRoleService, restangular;\n    $log = $log.getInstance('GroupRoleService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    groupRoleService = restangular.all('');\n    return {\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        // groupRoleService.one('enterprise_customers', enterpriseCustomerId).one('groups').get(filters)\n        return groupRoleService.one('group_roles').get(filters);\n      },\n      getCareManagerRole: function () {\n        var _getCareManagerRole = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId) {\n          var result;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return groupRoleService.one('group_roles?role=' + GroupRoles.CARE_MANAGER).get();\n              case 2:\n                result = _context.sent;\n                return _context.abrupt(\"return\", result[0]);\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function getCareManagerRole(_x) {\n          return _getCareManagerRole.apply(this, arguments);\n        }\n        return getCareManagerRole;\n      }(),\n      getMemberRole: function () {\n        var _getMemberRole = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(enterpriseCustomerId) {\n          var result;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return groupRoleService.one('group_roles?role=' + GroupRoles.MEMBER).get();\n              case 2:\n                result = _context2.sent;\n                return _context2.abrupt(\"return\", result[0]);\n              case 4:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2);\n        }));\n        function getMemberRole(_x2) {\n          return _getMemberRole.apply(this, arguments);\n        }\n        return getMemberRole;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('services').factory('GraphDataService', function (env, $log, Restangular) {\n    var graphDataService, restangular;\n    $log = $log.getInstance('GraphDataService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.graph.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data;\n      });\n    });\n    graphDataService = restangular.all('api/v1/chart/');\n    return {\n      getConfig: function () {\n        var _getConfig = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.t0 = Function;\n                _context.next = 3;\n                return graphDataService.one('jsconfig').withHttpConfig({\n                  cache: true\n                }).get();\n              case 3:\n                _context.t1 = _context.sent;\n                _context.t2 = new _context.t0(_context.t1);\n                return _context.abrupt(\"return\", (0, _context.t2)());\n              case 6:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function getConfig() {\n          return _getConfig.apply(this, arguments);\n        }\n        return getConfig;\n      }(),\n      getPrintConfig: function () {\n        var _getPrintConfig = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.t0 = Function;\n                _context2.next = 3;\n                return graphDataService.one('printconfig').withHttpConfig({\n                  cache: true\n                }).get();\n              case 3:\n                _context2.t1 = _context2.sent;\n                _context2.t2 = new _context2.t0(_context2.t1);\n                return _context2.abrupt(\"return\", (0, _context2.t2)());\n              case 6:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2);\n        }));\n        function getPrintConfig() {\n          return _getPrintConfig.apply(this, arguments);\n        }\n        return getPrintConfig;\n      }(),\n      getData: function getData(userProfileId, filters) {\n        return graphDataService.one('all', userProfileId).get(filters);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:GlobalConfigurationsService\n   * @description\n   * Service for global configurations\n   * @example\n  <pre>\n    this.configuration = GlobalConfigurationsService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('GlobalConfigurationsService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var globalConfigurations, restangular;\n    $log = $log.getInstance('GlobalConfigurationsService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        $log.log('data, operation, what, url, response, deferred', data, operation, what, url, response, deferred);\n        return data.data;\n      });\n    });\n    globalConfigurations = restangular.all('global_configurations');\n    return {\n      getAll: function getAll() {\n        return globalConfigurations.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:GeolocationService\n   * @description\n   * Looks up the client lat/lng via the built in browser location service\n   * @example\n  <pre>\n    GeolocationService().then(function(position){\n      console.log(position);\n    });\n  </pre>\n   */\n  angular.module('services').factory('GeolocationService', function ($q, $window) {\n    return function () {\n      var deferred;\n      deferred = $q.defer();\n      if (!$window.navigator) {\n        deferred.reject(new Error('Geolocation is not supported'));\n      } else {\n        $window.navigator.geolocation.getCurrentPosition(function (position) {\n          deferred.resolve({\n            lat: position.coords.latitude,\n            lng: position.coords.longitude\n          });\n        }, deferred.reject);\n      }\n      return deferred.promise;\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:GendersService\n   * @description\n   * Returns an array of genders\n   * @example\n  <pre>\n    vm.genders = GendersService.getGenders\n  </pre>\n   */\n  angular.module('services').factory('GendersService', function ($log) {\n    'ngInject';\n\n    return {\n      getGenders: [{\n        label: 'Male',\n        value: 'm'\n      }, {\n        label: 'Female',\n        value: 'f'\n      }, {\n        label: 'Non-binary',\n        value: 'n'\n      }, {\n        label: 'Prefer not to state',\n        value: 'p'\n      }, {\n        label: 'Other',\n        value: 'o'\n      }]\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:Five9Service\n   * @description\n   * Frontend-only boundary around the Five9 CRM SDK click-to-call MVP.\n   */\n  angular.module('services').factory('Five9Service', function ($log, $q, $rootScope, $window, env, FakeFive9Service, EUserProfilesService, CallLogService) {\n    'ngInject';\n\n    var ACTIVE_CALL_STATUSES, DEFAULT_CAV_MAX_LENGTH, INBOUND_CALL_TYPE, INBOUND_CAV_STATUS, INBOUND_LOOKUP_STATUS, METADATA_VERSION, OPTIONAL_METADATA_FIELDS, PROXY_NAMESPACE, PROXY_REQUEST_TIMEOUT_MS, PROXY_VERSION, REQUIRED_METADATA_FIELDS, RUNTIME_CAPABILITY_TIMEOUT_MS, SDK_LOAD_TIMEOUT_MS, SDK_SCRIPT_ATTRIBUTE, SMS_COUNTRY_CALLING_CODE, TRANSIENT_STATUSES, activeCallRequestId, activeInteractionId, addServiceName, applyPendingCav, applyRuntimeProbeResult, attachInboundCav, beginInboundLookup, bindPendingPatientCall, buildInboundPatientCallContext, buildPatientCallContext, _buildPatientCavPayload, buildPatientCrmObject, _buildPatientMetadata, callStateFor, compactMetadata, configuredMappings, crmApi, detectExtensionGlobal, detectRuntime, discoverCampaign, dispositionIsNotPatientContact, dispositionResult, emitInboundPostCallIfNeeded, emitPostCallIfNeeded, ensureProxyListener, eventsRegistered, exactOrigin, findExistingSdkScript, five9MillisToSecs, getCampaignOverride, getConfiguredSdkUrl, getCrmSdk, getProxyOrigin, _getProxyPageUrl, handleProxyEvent, handleProxyMessage, inboundCallContext, inboundRuntimeContext, initializeProxy, initialized, interactionApi, interactionDiagnostic, interactionStates, isInboundCallData, loadSdk, loadSdkWithScriptTag, loadingPromise, logCallLifecycle, logDiagnostic, makeRequestId, markInboundCavApplied, markRuntimeCallConnected, markRuntimeCallEnded, markRuntimeCallFailed, markRuntimeCallStarted, markRuntimeDispositionFinished, maskedPhone, maxLengths, messageListener, metadataToCavList, normalizeCallData, normalizeTimestamp, notify, notifyInboundResolutionRequired, patientProfileFromCandidate, patientServiceNames, pendingCall, pendingPatientCallContext, pendingRequests, persistCallLogAtEnd, phoneDigits, postProxyMessage, probeSdkRuntimeCapability, promptedPostCallKeys, proxyConfig, proxyConnected, proxyMessage, proxyOrigin, proxyWindow, rawConnectedDurationSecs, registerInteractionEvents, rejectPendingRequest, rememberFive9MessageOrigin, removeMessageDiagnostics, _resolveInboundPatient, resolvePendingRequest, respondToInboundSearch, respondToInboundSearchRequests, runtimeCapabilityCall, safeDiagnosticsEnabled, safeInteractionId, sendProxyRequest, _setInboundCandidates, setupMessageDiagnostics, state, toSmsDestination, updateCallLogAfterDisposition, updateFromProxyState, updateState, validateAllowedOrigins, validateCavLengths, validateCavMappings, validatePhoneNumber;\n    $log = $log.getInstance('Five9Service');\n    crmApi = null;\n    interactionApi = null;\n    loadingPromise = null;\n    eventsRegistered = false;\n    initialized = false;\n    pendingCall = null;\n    // Provider Portal call state is retained per Five9 interaction so late/repeated\n    // callbacks cannot mutate another call.\n    pendingPatientCallContext = null;\n    interactionStates = {};\n    activeInteractionId = null;\n    // Inbound identity is discovered from ANI but becomes authoritative only after\n    // an eligible patient user_profile id is returned or explicitly selected.\n    inboundRuntimeContext = null;\n    inboundCallContext = null;\n    promptedPostCallKeys = {};\n    messageListener = null;\n    proxyWindow = null;\n    proxyOrigin = null;\n    proxyConnected = false;\n    activeCallRequestId = null;\n    pendingRequests = {};\n    // Transient statuses must not surface as user-facing failures.\n    TRANSIENT_STATUSES = ['disabled', 'proxy_loading', 'connecting', 'reconnecting', 'adapter_loading', 'sdk_loading', 'sdk_loaded', 'extension_detecting', 'extension_detected', 'authentication_required', 'station_required', 'campaign_required', 'call_requesting', 'calling', 'wrap_up', 'ready'];\n    ACTIVE_CALL_STATUSES = ['call_requesting', 'calling', 'wrap_up'];\n    state = {\n      status: 'disabled',\n      proxyConnected: false,\n      proxyHandshakeComplete: false,\n      sdkLoaded: false,\n      crmApiCreated: false,\n      interactionApiCreated: false,\n      extensionGlobalDetected: false,\n      extensionId: null,\n      extensionVersion: null,\n      observedFive9MessageOrigins: [],\n      runtimeUnavailableReason: null,\n      runtimeConnected: false,\n      agentSessionReady: false,\n      ready: false,\n      clickToDialEnabled: false,\n      error: null\n    };\n    METADATA_VERSION = '1';\n    REQUIRED_METADATA_FIELDS = ['metadataVersion', 'patientUserProfileId', 'enterpriseId', 'initiatingUserId'];\n    OPTIONAL_METADATA_FIELDS = ['officeId', 'initiatingUserProfileId'];\n    SDK_SCRIPT_ATTRIBUTE = 'data-five9-crm-sdk';\n    SDK_LOAD_TIMEOUT_MS = 15000;\n    RUNTIME_CAPABILITY_TIMEOUT_MS = 3000;\n    PROXY_REQUEST_TIMEOUT_MS = 20000;\n    PROXY_NAMESPACE = 'provider-portal-five9';\n    PROXY_VERSION = 1;\n    DEFAULT_CAV_MAX_LENGTH = 255;\n    SMS_COUNTRY_CALLING_CODE = '1';\n    INBOUND_CALL_TYPE = 'INBOUND';\n    INBOUND_LOOKUP_STATUS = {\n      LOOKING_UP: 'looking_up',\n      UNIQUE_MATCH: 'unique_match',\n      MULTIPLE_MATCHES: 'multiple_matches',\n      NO_MATCH: 'no_match',\n      LOOKUP_FAILED: 'lookup_failed',\n      RESOLVED: 'resolved'\n    };\n    INBOUND_CAV_STATUS = {\n      UNRESOLVED: 'unresolved',\n      APPLYING: 'cav_applying',\n      APPLIED: 'cav_applied',\n      FAILED: 'cav_failed'\n    };\n    notify = function notify(event) {\n      var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return $rootScope.$emit(event, data);\n    };\n    safeDiagnosticsEnabled = function safeDiagnosticsEnabled() {\n      var ref;\n      return env.name !== 'prod' && ((ref = env.five9) != null ? ref.diagnosticsEnabled : void 0);\n    };\n    logDiagnostic = function logDiagnostic(message) {\n      var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!safeDiagnosticsEnabled()) {\n        return;\n      }\n      return $log.info(message, data);\n    };\n    logCallLifecycle = function logCallLifecycle(stage, context) {\n      var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      if (!(context != null ? context.interactionId : void 0)) {\n        return;\n      }\n      return $log.info('Five9 call lifecycle', angular.extend({\n        stage: stage,\n        interactionId: context.interactionId,\n        direction: context.direction || 'outbound',\n        eventAt: new Date().toISOString()\n      }, data));\n    };\n    updateState = function updateState(status) {\n      var changes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      angular.extend(state, changes);\n      if (status) {\n        state.status = status;\n      }\n      if (Object.prototype.hasOwnProperty.call(changes, 'ready')) {\n        state.ready = changes.ready;\n      } else {\n        state.ready = state.runtimeConnected && state.agentSessionReady && state.clickToDialEnabled;\n      }\n      notify('five9:stateChanged', angular.copy(state));\n      logDiagnostic('Five9 state changed', angular.copy(state));\n      return state;\n    };\n    normalizeCallData = function normalizeCallData() {\n      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callData, callLogData, ref;\n      callData = params.callData || params.call_data || params;\n      callLogData = params.callLogData || params.call_log_data || {};\n      return {\n        interactionId: callData.interactionId || callData.interaction_id || callData.callId || callData.call_id,\n        interactionSubType: callData.interactionSubType || callData.interaction_sub_type,\n        callState: callData.callState || callData.call_state,\n        startTime: callData.startTime || callData.start_time,\n        campaignId: callData.campaignId || callData.campaign_id,\n        dispositionName: callLogData.dispositionName || ((ref = callLogData.disposition) != null ? ref.name : void 0) || params.dispositionName,\n        duration: callLogData.duration != null ? callLogData.duration : params.duration,\n        talkTime: callLogData.talkTime != null ? callLogData.talkTime : params.talkTime,\n        callType: callData.callType || callData.call_type,\n        ani: callData.ani,\n        rawStatus: params.status\n      };\n    };\n    addServiceName = function addServiceName(names, name) {\n      var trimmed;\n      if (!(angular.isString(name) && name.trim())) {\n        return;\n      }\n      trimmed = name.trim();\n      if (!(names.indexOf(trimmed) >= 0)) {\n        return names.push(trimmed);\n      }\n    };\n    // Prompt eligibility used nested model_patient_services names. Production getOne\n    // can return that array empty while still including the current report service.\n    patientServiceNames = function patientServiceNames(patientUserProfile) {\n      var names;\n      names = [];\n      _.each((patientUserProfile != null ? patientUserProfile.model_patient_services : void 0) || [], function (modelPatientService) {\n        var ref;\n        return addServiceName(names, modelPatientService != null ? (ref = modelPatientService.patient_service) != null ? ref.name : void 0 : void 0);\n      });\n      _.each((patientUserProfile != null ? patientUserProfile.patient_reports : void 0) || [], function (report) {\n        var ref;\n        return addServiceName(names, report != null ? (ref = report.service) != null ? ref.name : void 0 : void 0);\n      });\n      return names;\n    };\n    buildPatientCallContext = function buildPatientCallContext(phoneNumber, context, metadata) {\n      var patientUserProfile;\n      patientUserProfile = angular.copy(context.patientUserProfile);\n      return {\n        id: 'five9-call-' + Date.now() + '-' + Math.floor(Math.random() * 1000000),\n        phoneNumber: phoneNumber,\n        patientUserProfile: patientUserProfile,\n        user: angular.copy(context.user),\n        enterpriseCustomer: angular.copy(context.enterpriseCustomer),\n        metadata: angular.copy(metadata),\n        patientUserProfileId: metadata.patientUserProfileId,\n        enterpriseId: metadata.enterpriseId,\n        officeId: metadata.officeId,\n        services: patientServiceNames(patientUserProfile),\n        requestedAt: Date.now(),\n        startedAt: null,\n        connectedAt: null,\n        endedAt: null,\n        durationSecs: 0,\n        interactionId: null,\n        started: false,\n        connected: false,\n        ended: false,\n        dispositionCompleted: false,\n        spokeWithPatient: false,\n        callLogPromise: null,\n        callLogId: null,\n        callLogUpdatePromise: null\n      };\n    };\n    patientProfileFromCandidate = function patientProfileFromCandidate(candidate) {\n      return {\n        id: candidate.id,\n        enterprise_customer_id: candidate.enterprise_customer_id,\n        name_first: candidate.first_name,\n        name_last: candidate.last_name,\n        model_patient_services: _.map(candidate.services || [], function (name) {\n          return {\n            patient_service: {\n              name: name\n            }\n          };\n        })\n      };\n    };\n    buildInboundPatientCallContext = function buildInboundPatientCallContext(callContext, patientUserProfile, metadata) {\n      return angular.extend(buildPatientCallContext(null, {\n        patientUserProfile: patientUserProfile,\n        user: inboundRuntimeContext.user,\n        enterpriseCustomer: inboundRuntimeContext.enterpriseCustomer\n      }, metadata), {\n        id: \"five9-inbound-\".concat(callContext.interactionId),\n        startedAt: callContext.startedAt,\n        interactionId: callContext.interactionId,\n        started: true,\n        connected: callContext.connected,\n        connectedAt: callContext.connectedAt,\n        direction: 'inbound'\n      });\n    };\n    isInboundCallData = function isInboundCallData() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      return callData.callType === INBOUND_CALL_TYPE;\n    };\n    maskedPhone = function maskedPhone(phone) {\n      var digits;\n      digits = String(phone || '').replace(/\\D/g, '');\n      if (!digits.length) {\n        return '****';\n      }\n      return \"***\".concat(digits.slice(-4));\n    };\n    respondToInboundSearch = function respondToInboundSearch(requestId) {\n      var crmObjects = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var ref;\n      if (!(requestId && !((ref = env.five9) != null ? ref.useFakeSdk : void 0))) {\n        return;\n      }\n      return postProxyMessage('FIVE9_PROXY_INBOUND_SEARCH_RESULT', {\n        crmObjects: angular.copy(crmObjects)\n      }, requestId);\n    };\n    respondToInboundSearchRequests = function respondToInboundSearchRequests(context) {\n      var crmObjects = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var requestIds;\n      requestIds = context.searchRequestIds || [];\n      context.searchRequestIds = [];\n      return _.each(requestIds, function (requestId) {\n        return respondToInboundSearch(requestId, crmObjects);\n      });\n    };\n    notifyInboundResolutionRequired = function notifyInboundResolutionRequired(context) {\n      if (context.prompted) {\n        return;\n      }\n      context.prompted = true;\n      return notify('five9:inboundResolutionRequired', {\n        interactionId: context.interactionId,\n        lookupStatus: context.lookupStatus,\n        candidates: angular.copy(context.candidates),\n        maskedPhone: context.maskedPhone\n      });\n    };\n    markInboundCavApplied = function markInboundCavApplied(interactionId, metadata, resolutionMethod) {\n      var context;\n      context = inboundCallContext;\n      if ((context != null ? context.interactionId : void 0) !== interactionId) {\n        return;\n      }\n      if (context.cavStatus === INBOUND_CAV_STATUS.APPLIED) {\n        return;\n      }\n      context.cavStatus = INBOUND_CAV_STATUS.APPLIED;\n      context.lookupStatus = INBOUND_LOOKUP_STATUS.RESOLVED;\n      context.resolutionMethod = resolutionMethod || context.resolutionMethod;\n      return notify('five9:cavApplied', {\n        interactionId: interactionId,\n        metadata: angular.copy(metadata),\n        metadataKeys: Object.keys(metadata || {}),\n        direction: 'inbound'\n      });\n    };\n    attachInboundCav = function attachInboundCav(context, cavPayload, resolutionMethod) {\n      var ref, requestPromise;\n      if (!context.active) {\n        return $q.reject(new Error('The Five9 interaction ended before patient metadata could be attached'));\n      }\n      if (context.cavStatus === INBOUND_CAV_STATUS.APPLIED) {\n        return $q.when();\n      }\n      if (context.cavStatus === INBOUND_CAV_STATUS.APPLYING) {\n        return context.attachPromise;\n      }\n      context.cavStatus = INBOUND_CAV_STATUS.APPLYING;\n      requestPromise = ((ref = env.five9) != null ? ref.useFakeSdk : void 0) ? $q.when(interactionApi.setCav({\n        interactionId: context.interactionId,\n        cavList: angular.copy(cavPayload.cavList)\n      })) : sendProxyRequest('FIVE9_PROXY_ATTACH_INBOUND_CAV', {\n        interactionId: context.interactionId,\n        cavList: angular.copy(cavPayload.cavList),\n        metadataKeys: Object.keys(cavPayload.metadata),\n        resolutionMethod: resolutionMethod\n      }, PROXY_REQUEST_TIMEOUT_MS);\n      context.attachPromise = requestPromise.then(function () {\n        return markInboundCavApplied(context.interactionId, cavPayload.metadata, resolutionMethod);\n      }).catch(function (error) {\n        context.cavStatus = INBOUND_CAV_STATUS.FAILED;\n        notify('five9:cavFailed', {\n          interactionId: context.interactionId,\n          error: (error != null ? error.message : void 0) || 'Five9 CAV metadata could not be attached',\n          direction: 'inbound'\n        });\n        return $q.reject(error);\n      }).finally(function () {\n        return context.attachPromise = null;\n      });\n      return context.attachPromise;\n    };\n    _resolveInboundPatient = /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(interactionId, patientUserProfileId) {\n        var resolutionMethod,\n          candidate,\n          cavPayload,\n          context,\n          patientUserProfile,\n          ref,\n          _args = arguments;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              resolutionMethod = _args.length > 2 && _args[2] !== undefined ? _args[2] : 'manual';\n              context = inboundCallContext;\n              if (!((context != null ? context.interactionId : void 0) !== interactionId)) {\n                _context.next = 4;\n                break;\n              }\n              return _context.abrupt(\"return\", $q.reject(new Error('The inbound Five9 interaction is no longer active')));\n            case 4:\n              if (context.active) {\n                _context.next = 6;\n                break;\n              }\n              return _context.abrupt(\"return\", $q.reject(new Error('The Five9 interaction ended before patient resolution completed')));\n            case 6:\n              if ((inboundRuntimeContext != null ? (ref = inboundRuntimeContext.enterpriseCustomer) != null ? ref.id : void 0 : void 0) && (inboundRuntimeContext != null ? inboundRuntimeContext.user : void 0)) {\n                _context.next = 8;\n                break;\n              }\n              return _context.abrupt(\"return\", $q.reject(new Error('Provider Portal user context is unavailable for inbound resolution')));\n            case 8:\n              candidate = _.find(context.candidates, {\n                id: patientUserProfileId\n              });\n              if (candidate) {\n                _context.next = 11;\n                break;\n              }\n              throw new Error('The selected patient is not eligible for this inbound interaction');\n            case 11:\n              patientUserProfile = patientProfileFromCandidate(candidate);\n              if (context.active) {\n                _context.next = 14;\n                break;\n              }\n              throw new Error('The Five9 interaction ended before patient resolution completed');\n            case 14:\n              cavPayload = _buildPatientCavPayload(patientUserProfile, inboundRuntimeContext.user, inboundRuntimeContext.enterpriseCustomer);\n              context.resolvedPatientUserProfileId = patientUserProfile.id;\n              context.resolutionMethod = resolutionMethod;\n              context.patientCallContext = buildInboundPatientCallContext(context, patientUserProfile, cavPayload.metadata);\n              _context.next = 20;\n              return attachInboundCav(context, cavPayload, resolutionMethod);\n            case 20:\n              return _context.abrupt(\"return\", cavPayload.crmObject);\n            case 21:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function resolveInboundPatient(_x, _x2) {\n        return _ref.apply(this, arguments);\n      };\n    }();\n    _setInboundCandidates = function setInboundCandidates(interactionId, candidates) {\n      var context;\n      context = inboundCallContext;\n      if (!((context != null ? context.interactionId : void 0) === interactionId && context.active)) {\n        return false;\n      }\n      context.candidates = angular.copy(candidates || []);\n      return true;\n    };\n    beginInboundLookup = function beginInboundLookup(callData) {\n      var searchRequestId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var context, ref;\n      if (!(isInboundCallData(callData) && callData.interactionId && callData.ani)) {\n        respondToInboundSearch(searchRequestId, []);\n        return $q.when([]);\n      }\n      if (!((inboundRuntimeContext != null ? (ref = inboundRuntimeContext.enterpriseCustomer) != null ? ref.id : void 0 : void 0) && (inboundRuntimeContext != null ? inboundRuntimeContext.user : void 0))) {\n        respondToInboundSearch(searchRequestId, []);\n        return $q.when([]);\n      }\n      if ((inboundCallContext != null ? inboundCallContext.interactionId : void 0) === callData.interactionId) {\n        if (searchRequestId && inboundCallContext.searchRequestIds.indexOf(searchRequestId) < 0) {\n          inboundCallContext.searchRequestIds.push(searchRequestId);\n        }\n        if (inboundCallContext.crmObject) {\n          respondToInboundSearchRequests(inboundCallContext, [inboundCallContext.crmObject]);\n        } else if ([INBOUND_LOOKUP_STATUS.MULTIPLE_MATCHES, INBOUND_LOOKUP_STATUS.NO_MATCH, INBOUND_LOOKUP_STATUS.LOOKUP_FAILED].indexOf(inboundCallContext.lookupStatus) >= 0 || inboundCallContext.cavStatus === INBOUND_CAV_STATUS.FAILED) {\n          respondToInboundSearchRequests(inboundCallContext, []);\n        }\n        return inboundCallContext.lookupPromise || $q.when([]);\n      }\n      inboundCallContext = {\n        interactionId: callData.interactionId,\n        maskedPhone: maskedPhone(callData.ani),\n        lookupStatus: INBOUND_LOOKUP_STATUS.LOOKING_UP,\n        candidates: [],\n        resolvedPatientUserProfileId: null,\n        cavStatus: INBOUND_CAV_STATUS.UNRESOLVED,\n        active: true,\n        startedAt: Date.now(),\n        connected: false,\n        prompted: false,\n        searchRequestIds: searchRequestId ? [searchRequestId] : [],\n        lookupPromise: null,\n        attachPromise: null,\n        patientCallContext: null,\n        crmObject: null\n      };\n      context = inboundCallContext;\n      context.lookupPromise = EUserProfilesService.lookupByPhone(inboundRuntimeContext.enterpriseCustomer.id, callData.ani).then(function (response) {\n        var matches;\n        if (!(context.active && inboundCallContext === context)) {\n          return [];\n        }\n        matches = (response != null ? response.matches : void 0) || [];\n        context.candidates = angular.copy(matches);\n        if (matches.length === 1) {\n          context.lookupStatus = INBOUND_LOOKUP_STATUS.UNIQUE_MATCH;\n          context.crmObject = buildPatientCrmObject(patientProfileFromCandidate(matches[0]));\n          respondToInboundSearchRequests(context, [context.crmObject]);\n          return _resolveInboundPatient(context.interactionId, matches[0].id, 'auto').then(function (crmObject) {\n            if (!context.active) {\n              return [];\n            }\n            context.crmObject = crmObject;\n            return [crmObject];\n          });\n        }\n        context.lookupStatus = matches.length ? INBOUND_LOOKUP_STATUS.MULTIPLE_MATCHES : INBOUND_LOOKUP_STATUS.NO_MATCH;\n        respondToInboundSearchRequests(context, []);\n        notifyInboundResolutionRequired(context);\n        return [];\n      }).catch(function (error) {\n        if (context.active && inboundCallContext === context) {\n          context.lookupStatus = INBOUND_LOOKUP_STATUS.LOOKUP_FAILED;\n          context.cavStatus = INBOUND_CAV_STATUS.FAILED;\n          respondToInboundSearchRequests(context, []);\n          notify('five9:inboundResolutionFailed', {\n            interactionId: context.interactionId,\n            error: (error != null ? error.message : void 0) || 'Patient lookup failed'\n          });\n          notifyInboundResolutionRequired(context);\n        }\n        return [];\n      }).finally(function () {\n        if (inboundCallContext === context) {\n          return context.lookupPromise = null;\n        }\n      });\n      return context.lookupPromise;\n    };\n    emitInboundPostCallIfNeeded = function emitInboundPostCallIfNeeded() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var context, promptKey;\n      context = inboundCallContext;\n      if ((context != null ? context.interactionId : void 0) !== callData.interactionId) {\n        return;\n      }\n      context.active = false;\n      notify('five9:inboundCallEnded', {\n        interactionId: context.interactionId\n      });\n      inboundCallContext = null;\n      if (context.cavStatus !== INBOUND_CAV_STATUS.APPLIED) {\n        return;\n      }\n      if (!(context.connected && context.patientCallContext)) {\n        return;\n      }\n      promptKey = \"\".concat(context.patientCallContext.id, \":\").concat(context.interactionId);\n      if (promptedPostCallKeys[promptKey]) {\n        return;\n      }\n      promptedPostCallKeys[promptKey] = true;\n      return notify('five9:postCallCompleted', {\n        interactionId: context.interactionId,\n        promptKey: promptKey,\n        context: angular.copy(_.omit(context.patientCallContext, ['callLogPromise', 'callLogUpdatePromise']))\n      });\n    };\n    normalizeTimestamp = function normalizeTimestamp(value, fallback) {\n      var numeric;\n      numeric = Number(value);\n      if (!(isFinite(numeric) && numeric > 0)) {\n        return fallback;\n      }\n      if (numeric < 100000000000) {\n        return numeric * 1000;\n      } else {\n        return numeric;\n      }\n    };\n    // Five9 callLogData timing fields (talkTime, duration, handleTime, wrapTime)\n    // are milliseconds. Provider Portal duration/time logic uses whole seconds,\n    // and call_logs.duration_ms rejects fractional values.\n    five9MillisToSecs = function five9MillisToSecs(value) {\n      var numeric;\n      numeric = Number(value);\n      if (!(isFinite(numeric) && numeric >= 0)) {\n        return null;\n      }\n      return Math.floor(numeric / 1000);\n    };\n    callStateFor = function callStateFor() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (callData.interactionId) {\n        return interactionStates[String(callData.interactionId)];\n      }\n    };\n    bindPendingPatientCall = function bindPendingPatientCall() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var context, interactionId, key;\n      interactionId = callData.interactionId;\n      if (!interactionId) {\n        return null;\n      }\n      key = String(interactionId);\n      if (interactionStates[key]) {\n        return interactionStates[key];\n      }\n      if (!pendingPatientCallContext) {\n        return null;\n      }\n      context = pendingPatientCallContext;\n      pendingPatientCallContext = null;\n      context.interactionId = key;\n      context.startedAt = normalizeTimestamp(callData.startTime, Date.now());\n      interactionStates[key] = context;\n      activeInteractionId = key;\n      logDiagnostic('Five9 interaction discovered', {\n        interactionId: key\n      });\n      interactionDiagnostic('Five9 campaign selected', context, {\n        campaignId: context.campaignId || null,\n        campaignMatchSource: context.campaignMatchSource || null\n      });\n      return context;\n    };\n    interactionDiagnostic = function interactionDiagnostic(message, context) {\n      var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      if (!(context != null ? context.interactionId : void 0)) {\n        return;\n      }\n      return logDiagnostic(message, angular.extend({\n        interactionId: context.interactionId\n      }, data));\n    };\n    phoneDigits = function phoneDigits(phoneNumber) {\n      var digits;\n      digits = String(phoneNumber || '').replace(/\\D/g, '');\n      if (digits.length > 10) {\n        return digits.slice(-10);\n      } else {\n        return digits;\n      }\n    };\n    rawConnectedDurationSecs = function rawConnectedDurationSecs(context, endedAt) {\n      if (!(context.connected && context.connectedAt)) {\n        return 0;\n      }\n      return Math.max(1, Math.floor((endedAt - context.connectedAt) / 1000));\n    };\n    persistCallLogAtEnd = function persistCallLogAtEnd(context) {\n      var callLog, ref, ref1, ref2;\n      if (context.callLogPromise) {\n        return context.callLogPromise;\n      }\n      callLog = {\n        call_type: 'manual-audio',\n        start_time: new Date(context.startedAt || context.requestedAt),\n        end_time: new Date(context.endedAt),\n        duration_ms: context.durationSecs,\n        response: null,\n        provider_user_profile_id: ((ref = context.user) != null ? (ref1 = ref.user_profile) != null ? ref1.id : void 0 : void 0) || ((ref2 = context.user) != null ? ref2.id : void 0),\n        user_profile_id: context.patientUserProfileId,\n        to_phone_number: phoneDigits(context.phoneNumber),\n        to_phone_type: null,\n        five9_interaction_id: context.interactionId\n      };\n      context.callLogPromise = $q.when(CallLogService.create(callLog)).then(function (persistedCallLog) {\n        var ref3;\n        context.callLogId = (persistedCallLog != null ? persistedCallLog.id : void 0) || (persistedCallLog != null ? (ref3 = persistedCallLog.data) != null ? ref3.id : void 0 : void 0);\n        interactionDiagnostic('Five9 call log persisted', context, {\n          callLogId: context.callLogId || null\n        });\n        return persistedCallLog;\n      }).catch(function (error) {\n        context.callLogPromise = null;\n        interactionDiagnostic('Five9 call log persistence failed', context, {\n          errorCode: (error != null ? error.status : void 0) || (error != null ? error.code : void 0) || 'unknown'\n        });\n        return null;\n      });\n      return context.callLogPromise;\n    };\n    dispositionIsNotPatientContact = function dispositionIsNotPatientContact(dispositionName) {\n      var normalized;\n      normalized = String(dispositionName || '').toLowerCase();\n      return /(no[\\s_-]*(answer|contact)|not[\\s_-]*(reached|contacted|available)|did[\\s_-]*not[\\s_-]*reach|unreachable|voice[\\s_-]*mail|\\bvm\\b|left[\\s_-]*(a[\\s_-]*)?message|answering[\\s_-]*(machine|service)|busy|reject|fail|wrong[\\s_-]*(number|party)|invalid[\\s_-]*number|unable[\\s_-]*to[\\s_-]*reach|abandon|cancel|dnc|do[\\s_-]*not[\\s_-]*call)/.test(normalized);\n    };\n    dispositionResult = function dispositionResult(context, callData) {\n      var authoritativeDuration, callDurationSecs, connectedEvidence, durationSecs, notPatientContact, spokeWithPatient, talkTimeSecs;\n      talkTimeSecs = five9MillisToSecs(callData.talkTime);\n      callDurationSecs = five9MillisToSecs(callData.duration);\n      authoritativeDuration = talkTimeSecs !== null && talkTimeSecs > 0 ? talkTimeSecs : callDurationSecs;\n      durationSecs = authoritativeDuration !== null ? authoritativeDuration : context.durationSecs;\n      notPatientContact = dispositionIsNotPatientContact(callData.dispositionName);\n      connectedEvidence = context.connected || talkTimeSecs !== null && talkTimeSecs > 0;\n      spokeWithPatient = connectedEvidence && !notPatientContact;\n      if (spokeWithPatient) {\n        durationSecs = Math.max(1, durationSecs);\n      }\n      return {\n        durationSecs: durationSecs,\n        connected: connectedEvidence,\n        spokeWithPatient: spokeWithPatient,\n        response: spokeWithPatient ? 'Spoke with patient' : callData.dispositionName || 'no answer'\n      };\n    };\n    updateCallLogAfterDisposition = function updateCallLogAfterDisposition(context, result) {\n      context.callLogUpdatePromise = $q.when(context.callLogPromise || persistCallLogAtEnd(context)).then(function (persistedCallLog) {\n        if (!(context.callLogId || persistedCallLog)) {\n          return persistCallLogAtEnd(context);\n        }\n        return persistedCallLog;\n      }).then(function () {\n        if (!context.callLogId) {\n          return null;\n        }\n        return CallLogService.update(context.patientUserProfileId, context.callLogId, {\n          duration_ms: result.durationSecs,\n          response: result.response\n        });\n      }).then(function (updatedCallLog) {\n        interactionDiagnostic('Five9 call log updated', context, {\n          spokeWithPatient: result.spokeWithPatient,\n          durationSecs: result.durationSecs\n        });\n        return updatedCallLog;\n      }).catch(function (error) {\n        interactionDiagnostic('Five9 call log update failed', context, {\n          errorCode: (error != null ? error.status : void 0) || (error != null ? error.code : void 0) || 'unknown'\n        });\n        return null;\n      });\n      return context.callLogUpdatePromise;\n    };\n    emitPostCallIfNeeded = function emitPostCallIfNeeded(context) {\n      var promptKey;\n      if (!((context != null ? context.dispositionCompleted : void 0) && context.started && context.connected)) {\n        return;\n      }\n      promptKey = \"\".concat(context.id, \":\").concat(context.interactionId);\n      if (promptedPostCallKeys[promptKey]) {\n        return;\n      }\n      promptedPostCallKeys[promptKey] = true;\n      interactionDiagnostic('Five9 RPM/CCM prompt shown', context, {\n        durationSecs: context.durationSecs\n      });\n      return notify('five9:postCallCompleted', {\n        interactionId: context.interactionId,\n        promptKey: promptKey,\n        context: angular.copy(_.omit(context, ['callLogPromise', 'callLogUpdatePromise']))\n      });\n    };\n    markRuntimeCallStarted = function markRuntimeCallStarted() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var context;\n      if (!isInboundCallData(callData)) {\n        context = bindPendingPatientCall(callData);\n        if (context) {\n          context.started = true;\n          if (context.startedAt == null) {\n            context.startedAt = normalizeTimestamp(callData.startTime, Date.now());\n          }\n          interactionDiagnostic('Five9 call started', context);\n          logCallLifecycle('started', context, {\n            sdkStartTime: callData.startTime || null,\n            startedAt: new Date(context.startedAt).toISOString()\n          });\n        }\n      }\n      updateState('calling', {\n        ready: false,\n        error: null\n      });\n      notify('five9:callStarted', callData);\n      return beginInboundLookup(callData);\n    };\n    markRuntimeCallConnected = function markRuntimeCallConnected() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var base, context;\n      context = callStateFor(callData);\n      if (context && !context.connected) {\n        context.started = true;\n        context.connected = true;\n        context.connectedAt = Date.now();\n        interactionDiagnostic('Five9 call connected', context);\n        logCallLifecycle('connected', context, {\n          connectedAt: new Date(context.connectedAt).toISOString()\n        });\n      }\n      if ((inboundCallContext != null ? inboundCallContext.interactionId : void 0) === callData.interactionId) {\n        inboundCallContext.connected = true;\n        if (inboundCallContext.connectedAt == null) {\n          inboundCallContext.connectedAt = Date.now();\n        }\n        if (inboundCallContext.patientCallContext) {\n          inboundCallContext.patientCallContext.connected = true;\n          if ((base = inboundCallContext.patientCallContext).connectedAt == null) {\n            base.connectedAt = inboundCallContext.connectedAt;\n          }\n        }\n      }\n      return notify('five9:callConnected', callData);\n    };\n    markRuntimeCallEnded = function markRuntimeCallEnded() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var base, context, inbound;\n      context = callStateFor(callData);\n      if (context && !context.ended) {\n        context.ended = true;\n        context.endedAt = Date.now();\n        context.durationSecs = rawConnectedDurationSecs(context, context.endedAt);\n        interactionDiagnostic('Five9 call ended', context, {\n          connected: context.connected,\n          durationSecs: context.durationSecs\n        });\n        logCallLifecycle('ended', context, {\n          endedAt: new Date(context.endedAt).toISOString(),\n          connected: context.connected,\n          durationSecs: context.durationSecs\n        });\n        persistCallLogAtEnd(context);\n      }\n      inbound = inboundCallContext;\n      if ((inbound != null ? inbound.interactionId : void 0) === callData.interactionId && inbound.patientCallContext) {\n        if ((base = inbound.patientCallContext).connectedAt == null) {\n          base.connectedAt = inbound.connectedAt;\n        }\n        inbound.patientCallContext.endedAt = Date.now();\n        inbound.patientCallContext.durationSecs = rawConnectedDurationSecs(inbound.patientCallContext, inbound.patientCallContext.endedAt);\n      }\n      emitInboundPostCallIfNeeded(callData);\n      if (!state.ready) {\n        updateState('wrap_up', {\n          ready: false,\n          clickToDialEnabled: false,\n          error: null\n        });\n      }\n      return notify('five9:callFinished', callData);\n    };\n    markRuntimeDispositionFinished = function markRuntimeDispositionFinished() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var context, result;\n      context = callStateFor(callData);\n      if (!context) {\n        return;\n      }\n      if (!context.ended) {\n        markRuntimeCallEnded(callData);\n      }\n      if (context.dispositionCompleted) {\n        return;\n      }\n      context.dispositionCompleted = true;\n      result = dispositionResult(context, callData);\n      context.durationSecs = result.durationSecs;\n      context.connected = result.connected;\n      context.spokeWithPatient = result.spokeWithPatient;\n      context.dispositionName = callData.dispositionName || null;\n      interactionDiagnostic('Five9 disposition received', context, {\n        spokeWithPatient: result.spokeWithPatient,\n        durationSecs: result.durationSecs\n      });\n      logCallLifecycle('disposition_completed', context, {\n        dispositionName: context.dispositionName,\n        connected: result.connected,\n        durationSecs: result.durationSecs\n      });\n      updateCallLogAfterDisposition(context, result);\n      emitPostCallIfNeeded(context);\n      emitInboundPostCallIfNeeded(callData);\n      if (activeInteractionId === context.interactionId) {\n        activeInteractionId = null;\n        return updateState('ready', {\n          ready: true,\n          agentSessionReady: true,\n          clickToDialEnabled: true,\n          error: null\n        });\n      }\n    };\n    markRuntimeCallFailed = function markRuntimeCallFailed() {\n      var callData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var context;\n      context = callStateFor(callData) || bindPendingPatientCall(callData);\n      if (context && !context.ended) {\n        context.started = true;\n        if (context.startedAt == null) {\n          context.startedAt = Date.now();\n        }\n        markRuntimeCallEnded(callData);\n      }\n      updateState('ready', {\n        ready: true,\n        agentSessionReady: true,\n        clickToDialEnabled: true\n      });\n      notify('five9:callFailed', callData);\n      if ((inboundCallContext != null ? inboundCallContext.interactionId : void 0) === callData.interactionId) {\n        inboundCallContext.active = false;\n        notify('five9:inboundCallEnded', {\n          interactionId: inboundCallContext.interactionId\n        });\n        return inboundCallContext = null;\n      }\n    };\n    applyPendingCav = function applyPendingCav(interactionId) {\n      var cavList, metadata, result;\n      if (!pendingCall) {\n        return;\n      }\n      if (!interactionId) {\n        notify('five9:cavFailed', {\n          error: 'Five9 interaction ID was not provided'\n        });\n        return;\n      }\n      metadata = angular.copy(pendingCall.metadata);\n      cavList = angular.copy(pendingCall.cavList);\n      result = interactionApi.setCav({\n        interactionId: interactionId,\n        cavList: cavList\n      });\n      return $q.when(result).then(function () {\n        return notify('five9:cavApplied', {\n          interactionId: interactionId,\n          metadata: metadata\n        });\n      }).catch(function (error) {\n        var message;\n        message = (error != null ? error.message : void 0) || 'Five9 CAV metadata could not be attached';\n        return notify('five9:cavFailed', {\n          error: message\n        });\n      }).finally(function () {\n        return pendingCall = null;\n      });\n    };\n    registerInteractionEvents = function registerInteractionEvents() {\n      if (eventsRegistered) {\n        return;\n      }\n      if (!(interactionApi != null ? interactionApi.subscribe : void 0)) {\n        return;\n      }\n      eventsRegistered = true;\n      return interactionApi.subscribe({\n        callStarted: function callStarted(params) {\n          var data;\n          data = normalizeCallData(params);\n          markRuntimeCallStarted(data);\n          if (!isInboundCallData(data)) {\n            return applyPendingCav(data.interactionId);\n          }\n        },\n        callAccepted: function callAccepted(params) {\n          var data;\n          data = normalizeCallData(params);\n          if (['TALKING', 'ON_HOLD'].indexOf(data.callState) >= 0) {\n            return markRuntimeCallConnected(data);\n          }\n        },\n        callConnected: function callConnected(params) {\n          return markRuntimeCallConnected(normalizeCallData(params));\n        },\n        callEnded: function callEnded(params) {\n          return markRuntimeCallEnded(normalizeCallData(params));\n        },\n        callFinished: function callFinished(params) {\n          return markRuntimeDispositionFinished(normalizeCallData(params));\n        },\n        callRejected: function callRejected(params) {\n          return markRuntimeCallFailed(normalizeCallData(params));\n        },\n        callFailed: function callFailed(params) {\n          return markRuntimeCallFailed(normalizeCallData(params));\n        }\n      });\n    };\n    getCrmSdk = function getCrmSdk() {\n      var ref;\n      return (ref = $window.Five9) != null ? ref.CrmSdk : void 0;\n    };\n    rememberFive9MessageOrigin = function rememberFive9MessageOrigin(origin) {\n      if (!angular.isString(origin)) {\n        return;\n      }\n      if (!/five9/i.test(origin)) {\n        return;\n      }\n      if (state.observedFive9MessageOrigins.indexOf(origin) >= 0) {\n        return;\n      }\n      state.observedFive9MessageOrigins.push(origin);\n      return logDiagnostic('Five9 postMessage origin observed', {\n        origin: origin\n      });\n    };\n    setupMessageDiagnostics = function setupMessageDiagnostics() {\n      if (messageListener) {\n        return;\n      }\n      messageListener = function messageListener(event) {\n        return rememberFive9MessageOrigin(event.origin);\n      };\n      return $window.addEventListener('message', messageListener);\n    };\n    removeMessageDiagnostics = function removeMessageDiagnostics() {\n      if (!messageListener) {\n        return;\n      }\n      $window.removeEventListener('message', messageListener);\n      return messageListener = null;\n    };\n    getConfiguredSdkUrl = function getConfiguredSdkUrl() {\n      var ref, sdkUrl;\n      sdkUrl = (ref = env.five9) != null ? ref.sdkUrl : void 0;\n      if (!angular.isString(sdkUrl)) {\n        return null;\n      }\n      return sdkUrl.trim();\n    };\n    _getProxyPageUrl = function getProxyPageUrl() {\n      var ref;\n      return ((ref = env.five9) != null ? ref.proxyPageUrl : void 0) || '/five9/five9-proxy.ea201d1c.html';\n    };\n    getProxyOrigin = function getProxyOrigin() {\n      var url;\n      url = new $window.URL(_getProxyPageUrl(), $window.location.origin);\n      return url.origin;\n    };\n    makeRequestId = function makeRequestId() {\n      return 'five9-' + Date.now() + '-' + Math.floor(Math.random() * 1000000);\n    };\n    proxyMessage = function proxyMessage(type, requestId) {\n      var payload = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      return {\n        namespace: PROXY_NAMESPACE,\n        version: PROXY_VERSION,\n        type: type,\n        requestId: requestId || null,\n        payload: payload\n      };\n    };\n    exactOrigin = function exactOrigin(origin) {\n      var error, parsed;\n      try {\n        parsed = new $window.URL(origin);\n        return parsed.origin === origin && parsed.pathname === '/' && !parsed.search && !parsed.hash;\n      } catch (error1) {\n        error = error1;\n        return false;\n      }\n    };\n    proxyConfig = function proxyConfig() {\n      var adapterUrl, allowedFive9Origins, providerPortalOrigin, ref, ref1, ref2, ref3, ref4, ref5, ref6, validateAllowedOriginsList;\n      adapterUrl = (ref = env.five9) != null ? ref.adapterUrl : void 0;\n      if (!adapterUrl) {\n        throw new Error('Five9 adapterUrl is required for real proxy runtime');\n      }\n      providerPortalOrigin = ((ref1 = env.five9) != null ? ref1.providerPortalOrigin : void 0) || $window.location.origin;\n      if (!exactOrigin(providerPortalOrigin)) {\n        throw new Error('Five9 providerPortalOrigin must be an exact origin');\n      }\n      allowedFive9Origins = ((ref2 = env.five9) != null ? ref2.allowedFive9Origins : void 0) || ((ref3 = env.five9) != null ? ref3.allowedOrigins : void 0) || [];\n      validateAllowedOriginsList = function validateAllowedOriginsList(origins, label) {\n        if (!angular.isArray(origins)) {\n          throw new Error(\"\".concat(label, \" must be an array of exact origins\"));\n        }\n        return _.each(origins, function (origin) {\n          if (!(angular.isString(origin) && origin.trim() === origin && origin !== '*' && exactOrigin(origin))) {\n            throw new Error(\"\".concat(label, \" contains invalid origin \").concat(origin));\n          }\n        });\n      };\n      validateAllowedOriginsList(allowedFive9Origins, 'five9.allowedFive9Origins');\n      return {\n        sdkUrl: getConfiguredSdkUrl(),\n        adapterUrl: adapterUrl,\n        providerPortalOrigin: providerPortalOrigin,\n        allowedFive9Origins: allowedFive9Origins,\n        diagnosticsEnabled: !!((ref4 = env.five9) != null ? ref4.diagnosticsEnabled : void 0),\n        showAdapterForDiagnostics: ((ref5 = env.five9) != null ? ref5.showAdapterForDiagnostics : void 0) !== false,\n        runtimeConfig: ((ref6 = env.five9) != null ? ref6.runtimeConfig : void 0) || {}\n      };\n    };\n    postProxyMessage = function postProxyMessage(type) {\n      var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var requestId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n      if (!(proxyWindow && proxyOrigin)) {\n        throw new Error('Five9 proxy iframe is not connected');\n      }\n      return proxyWindow.postMessage(proxyMessage(type, requestId, payload), proxyOrigin);\n    };\n    resolvePendingRequest = function resolvePendingRequest(requestId, value) {\n      var pending;\n      pending = pendingRequests[requestId];\n      if (!pending) {\n        return;\n      }\n      $window.clearTimeout(pending.timeoutId);\n      delete pendingRequests[requestId];\n      return pending.deferred.resolve(value);\n    };\n    rejectPendingRequest = function rejectPendingRequest(requestId, error) {\n      var pending;\n      pending = pendingRequests[requestId];\n      if (!pending) {\n        return;\n      }\n      $window.clearTimeout(pending.timeoutId);\n      delete pendingRequests[requestId];\n      if (activeCallRequestId === requestId) {\n        activeCallRequestId = null;\n      }\n      return pending.deferred.reject(error);\n    };\n    sendProxyRequest = function sendProxyRequest(type) {\n      var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var timeoutMs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PROXY_REQUEST_TIMEOUT_MS;\n      var deferred, error, requestId, timeoutId;\n      deferred = $q.defer();\n      requestId = makeRequestId();\n      timeoutId = $window.setTimeout(function () {\n        return rejectPendingRequest(requestId, new Error(\"Five9 proxy request timed out: \".concat(type)));\n      }, timeoutMs);\n      pendingRequests[requestId] = {\n        deferred: deferred,\n        timeoutId: timeoutId,\n        type: type\n      };\n      try {\n        postProxyMessage(type, payload, requestId);\n        logDiagnostic('Five9 proxy request posted', {\n          type: type,\n          requestId: requestId,\n          metadataKeys: payload.metadataKeys || []\n        });\n      } catch (error1) {\n        error = error1;\n        rejectPendingRequest(requestId, error);\n      }\n      return deferred.promise;\n    };\n    validateAllowedOrigins = function validateAllowedOrigins() {\n      var origins, ref;\n      origins = ((ref = env.five9) != null ? ref.allowedOrigins : void 0) || [];\n      if (!angular.isArray(origins)) {\n        throw new Error('env.five9.allowedOrigins must be an array of exact browser origins');\n      }\n      _.each(origins, function (origin) {\n        var error, parsed;\n        if (!(angular.isString(origin) && origin.trim() === origin && origin !== '*')) {\n          throw new Error('env.five9.allowedOrigins contains an invalid origin');\n        }\n        try {\n          parsed = new $window.URL(origin);\n        } catch (error1) {\n          error = error1;\n          throw new Error(\"Five9 allowed origin is malformed: \".concat(origin));\n        }\n        if (!(parsed.origin === origin && parsed.pathname === '/' && !parsed.search && !parsed.hash)) {\n          throw new Error(\"Five9 allowed origin must be exact: \".concat(origin));\n        }\n      });\n      return origins;\n    };\n    findExistingSdkScript = function findExistingSdkScript(sdkUrl) {\n      var ref, scripts;\n      scripts = ((ref = $window.document) != null ? ref.getElementsByTagName('script') : void 0) || [];\n      return _.find(scripts, function (script) {\n        return script.getAttribute(SDK_SCRIPT_ATTRIBUTE) === 'true' || script.src === sdkUrl;\n      });\n    };\n    loadSdkWithScriptTag = function loadSdkWithScriptTag(sdkUrl) {\n      var cleanup, crmSdk, deferred, didCreateScript, onError, onLoad, ref, reject, resolveIfReady, script, timeoutId;\n      crmSdk = getCrmSdk();\n      if (crmSdk) {\n        return $q.when(crmSdk);\n      }\n      if (!((ref = $window.document) != null ? ref.head : void 0)) {\n        return $q.reject(new Error('Document head is not available for Five9 SDK loading'));\n      }\n      deferred = $q.defer();\n      script = findExistingSdkScript(sdkUrl);\n      didCreateScript = false;\n      timeoutId = null;\n      cleanup = function cleanup() {\n        if (timeoutId) {\n          $window.clearTimeout(timeoutId);\n        }\n        if (script != null ? script.removeEventListener : void 0) {\n          script.removeEventListener('load', onLoad);\n          return script.removeEventListener('error', onError);\n        }\n      };\n      reject = function reject(message) {\n        cleanup();\n        return deferred.reject(new Error(message));\n      };\n      resolveIfReady = function resolveIfReady() {\n        crmSdk = getCrmSdk();\n        if (!(crmSdk != null ? crmSdk.interactionApi : void 0)) {\n          reject('Five9 SDK script loaded but window.Five9.CrmSdk was not available');\n          return;\n        }\n        cleanup();\n        return deferred.resolve(crmSdk);\n      };\n      onLoad = function onLoad() {\n        script.setAttribute('data-five9-loaded', 'true');\n        return resolveIfReady();\n      };\n      onError = function onError() {\n        return reject(\"Five9 SDK script failed to load from \".concat(sdkUrl));\n      };\n      if ((script != null ? script.getAttribute('data-five9-loaded') : void 0) === 'true') {\n        resolveIfReady();\n        return deferred.promise;\n      }\n      if (!script) {\n        script = $window.document.createElement('script');\n        script.async = true;\n        script.src = sdkUrl;\n        script.setAttribute(SDK_SCRIPT_ATTRIBUTE, 'true');\n        didCreateScript = true;\n      }\n      script.addEventListener('load', onLoad);\n      script.addEventListener('error', onError);\n      timeoutId = $window.setTimeout(function () {\n        return reject(\"Timed out waiting for Five9 SDK script from \".concat(sdkUrl));\n      }, SDK_LOAD_TIMEOUT_MS);\n      if (didCreateScript) {\n        $window.document.head.appendChild(script);\n      }\n      return deferred.promise;\n    };\n    loadSdk = function loadSdk() {\n      var fakeSdk, ref, sdkUrl;\n      validateAllowedOrigins();\n      if ((ref = env.five9) != null ? ref.useFakeSdk : void 0) {\n        fakeSdk = FakeFive9Service.install($window);\n        crmApi = fakeSdk.crmApi;\n        interactionApi = fakeSdk.interactionApi;\n        return $q.when(interactionApi);\n      }\n      sdkUrl = getConfiguredSdkUrl();\n      if (!sdkUrl) {\n        return $q.reject(new Error('Five9 SDK URL is not configured'));\n      }\n      return loadSdkWithScriptTag(sdkUrl).then(function (crmSdk) {\n        crmApi = typeof crmSdk.crmApi === \"function\" ? crmSdk.crmApi() : void 0;\n        interactionApi = crmSdk.interactionApi();\n        return interactionApi;\n      });\n    };\n    detectExtensionGlobal = function detectExtensionGlobal() {\n      var detected, runtime, softphone;\n      softphone = $window.f9softphone;\n      runtime = softphone != null ? softphone.runtime : void 0;\n      detected = !!softphone;\n      updateState(null, {\n        extensionGlobalDetected: detected,\n        extensionId: (runtime != null ? runtime.id : void 0) || null,\n        extensionVersion: (runtime != null ? runtime.version : void 0) || null\n      });\n      return detected;\n    };\n    runtimeCapabilityCall = function runtimeCapabilityCall(name, callback) {\n      var deferred, done, timeoutId;\n      deferred = $q.defer();\n      done = false;\n      timeoutId = $window.setTimeout(function () {\n        if (done) {\n          return;\n        }\n        done = true;\n        return deferred.resolve({\n          method: name,\n          outcome: 'timeout'\n        });\n      }, RUNTIME_CAPABILITY_TIMEOUT_MS);\n      $q.when().then(callback).then(function (value) {\n        if (done) {\n          return;\n        }\n        done = true;\n        $window.clearTimeout(timeoutId);\n        return deferred.resolve({\n          method: name,\n          outcome: 'resolved',\n          valueType: _typeof(value)\n        });\n      }, function (error) {\n        if (done) {\n          return;\n        }\n        done = true;\n        $window.clearTimeout(timeoutId);\n        return deferred.resolve({\n          method: name,\n          outcome: 'rejected',\n          error: (error != null ? error.message : void 0) || String(error)\n        });\n      });\n      return deferred.promise;\n    };\n    probeSdkRuntimeCapability = function probeSdkRuntimeCapability() {\n      var probes;\n      if (!interactionApi) {\n        return $q.when([]);\n      }\n      probes = [];\n      if (interactionApi.isMasterPage) {\n        probes.push(runtimeCapabilityCall('isMasterPage', function () {\n          return interactionApi.isMasterPage();\n        }));\n      }\n      if (interactionApi.getMetadata) {\n        probes.push(runtimeCapabilityCall('getMetadata', function () {\n          return interactionApi.getMetadata();\n        }));\n      }\n      if (!probes.length) {\n        return $q.when([]);\n      }\n      return $q.all(probes);\n    };\n    applyRuntimeProbeResult = function applyRuntimeProbeResult(probeResults) {\n      var fakeState, resolvedProbe;\n      resolvedProbe = _.find(probeResults, function (result) {\n        return result.outcome === 'resolved';\n      });\n      logDiagnostic('Five9 runtime capability probe completed', {\n        results: probeResults,\n        extensionGlobalDetected: state.extensionGlobalDetected,\n        observedFive9MessageOrigins: state.observedFive9MessageOrigins\n      });\n      fakeState = interactionApi != null ? typeof interactionApi.getRuntimeState === \"function\" ? interactionApi.getRuntimeState() : void 0 : void 0;\n      if (fakeState) {\n        if (fakeState.extensionDetected && fakeState.agentSessionReady && fakeState.clickToDialReady) {\n          return updateState('ready', {\n            runtimeConnected: true,\n            agentSessionReady: true,\n            clickToDialEnabled: true,\n            runtimeUnavailableReason: null,\n            error: null\n          });\n        }\n        if (fakeState.extensionDetected && !fakeState.agentSessionReady) {\n          return updateState('authentication_required', {\n            runtimeConnected: true,\n            agentSessionReady: false,\n            clickToDialEnabled: false,\n            runtimeUnavailableReason: null\n          });\n        }\n        return updateState('unsupported_runtime', {\n          runtimeConnected: false,\n          agentSessionReady: false,\n          clickToDialEnabled: false,\n          runtimeUnavailableReason: 'Fake Five9 extension runtime is not detected'\n        });\n      }\n      if (resolvedProbe) {\n        return updateState('ready', {\n          runtimeConnected: true,\n          agentSessionReady: true,\n          clickToDialEnabled: true,\n          runtimeUnavailableReason: null,\n          error: null\n        });\n      }\n      return updateState('unsupported_runtime', {\n        runtimeConnected: false,\n        agentSessionReady: false,\n        clickToDialEnabled: false,\n        runtimeUnavailableReason: 'No supported page-visible Five9 Softphone or adapter runtime was detected'\n      });\n    };\n    detectRuntime = function detectRuntime() {\n      updateState('extension_detecting');\n      detectExtensionGlobal();\n      if (interactionApi != null ? interactionApi.getRuntimeState : void 0) {\n        return $q.when(applyRuntimeProbeResult([]));\n      }\n      return probeSdkRuntimeCapability().then(function (probeResults) {\n        return applyRuntimeProbeResult(probeResults);\n      });\n    };\n    updateFromProxyState = function updateFromProxyState(proxyState) {\n      var changes;\n      if (!proxyState) {\n        return;\n      }\n      changes = {\n        proxyConnected: proxyConnected,\n        proxyHandshakeComplete: state.proxyHandshakeComplete,\n        sdkLoaded: !!proxyState.sdkLoaded,\n        runtimeConnected: !!proxyState.adapterLoaded,\n        agentSessionReady: !!proxyState.ready,\n        clickToDialEnabled: !!proxyState.clickToDialEnabled || !!proxyState.ready,\n        ready: !!proxyState.ready,\n        error: proxyState.error || null\n      };\n      return updateState(proxyState.status, changes);\n    };\n    safeInteractionId = function safeInteractionId(interactionId) {\n      if (!interactionId) {\n        return null;\n      }\n      return String(interactionId);\n    };\n    handleProxyEvent = function handleProxyEvent(data) {\n      var acceptedCallData, payload, pending, ref, ref1;\n      payload = data.payload || {};\n      switch (data.type) {\n        case 'FIVE9_PROXY_STATE_CHANGED':\n          updateFromProxyState(payload.state);\n          pending = pendingRequests[data.requestId];\n          if ((pending != null ? pending.type : void 0) === 'FIVE9_PROXY_INITIALIZE' && ((ref = payload.state) != null ? ref.adapterLoaded : void 0)) {\n            state.proxyHandshakeComplete = true;\n            return resolvePendingRequest(data.requestId, payload);\n          }\n          break;\n        case 'FIVE9_PROXY_READY':\n          state.proxyHandshakeComplete = true;\n          updateFromProxyState(payload.state || {\n            status: 'ready',\n            ready: true,\n            adapterLoaded: true,\n            sdkLoaded: true\n          });\n          if (data.requestId) {\n            return resolvePendingRequest(data.requestId, payload);\n          }\n          break;\n        case 'FIVE9_PROXY_CALL_REQUEST_ACCEPTED':\n          activeCallRequestId = data.requestId;\n          return updateState('call_requesting', {\n            ready: false,\n            error: null\n          });\n        case 'FIVE9_PROXY_AUTH_REQUIRED':\n          // Ignore auth-required noise while a call/wrap-up is in progress.\n          if (ACTIVE_CALL_STATUSES.indexOf(state.status) >= 0) {\n            return updateState('wrap_up', {\n              ready: false,\n              clickToDialEnabled: false,\n              error: null\n            });\n          } else {\n            return updateState('authentication_required', {\n              ready: false,\n              agentSessionReady: false,\n              clickToDialEnabled: false,\n              error: null\n            });\n          }\n          break;\n        case 'FIVE9_PROXY_STATION_REQUIRED':\n          return updateState('station_required', {\n            ready: false,\n            agentSessionReady: false,\n            clickToDialEnabled: false,\n            error: null\n          });\n        case 'FIVE9_PROXY_CAMPAIGN_REQUIRED':\n          return updateState('campaign_required', {\n            ready: false,\n            agentSessionReady: false,\n            clickToDialEnabled: false,\n            error: null\n          });\n        case 'FIVE9_PROXY_WRAP_UP':\n          return updateState('wrap_up', {\n            ready: false,\n            clickToDialEnabled: false,\n            error: null\n          });\n        case 'FIVE9_PROXY_CALL_STARTED':\n          payload.interactionId = safeInteractionId(payload.interactionId);\n          return markRuntimeCallStarted(normalizeCallData(payload));\n        case 'FIVE9_PROXY_CALL_ACCEPTED':\n          payload.interactionId = safeInteractionId(payload.interactionId);\n          acceptedCallData = normalizeCallData(payload);\n          if (['TALKING', 'ON_HOLD'].indexOf(acceptedCallData.callState) >= 0) {\n            return markRuntimeCallConnected(acceptedCallData);\n          }\n          break;\n        case 'FIVE9_PROXY_CALL_CONNECTED':\n          payload.interactionId = safeInteractionId(payload.interactionId);\n          return markRuntimeCallConnected(normalizeCallData(payload));\n        case 'FIVE9_PROXY_CAV_APPLIED':\n          if ((inboundCallContext != null ? inboundCallContext.interactionId : void 0) === safeInteractionId(payload.interactionId)) {\n            markInboundCavApplied(safeInteractionId(payload.interactionId), (ref1 = inboundCallContext.patientCallContext) != null ? ref1.metadata : void 0, payload.resolutionMethod);\n          }\n          if ((inboundCallContext != null ? inboundCallContext.interactionId : void 0) !== safeInteractionId(payload.interactionId)) {\n            notify('five9:cavApplied', {\n              interactionId: safeInteractionId(payload.interactionId),\n              metadataKeys: payload.metadataKeys || []\n            });\n          }\n          if (activeCallRequestId === data.requestId) {\n            activeCallRequestId = null;\n          }\n          if (data.requestId) {\n            return resolvePendingRequest(data.requestId, payload);\n          }\n          break;\n        case 'FIVE9_PROXY_CAV_FAILED':\n          if ((inboundCallContext != null ? inboundCallContext.interactionId : void 0) === safeInteractionId(payload.interactionId)) {\n            inboundCallContext.cavStatus = INBOUND_CAV_STATUS.FAILED;\n          }\n          notify('five9:cavFailed', {\n            error: payload.message || 'Five9 CAV metadata could not be attached'\n          });\n          if (activeCallRequestId === data.requestId) {\n            activeCallRequestId = null;\n          }\n          if (state.agentSessionReady && state.clickToDialEnabled) {\n            updateState('ready', {\n              ready: true,\n              error: payload.message\n            });\n          }\n          if (data.requestId) {\n            return rejectPendingRequest(data.requestId, new Error(payload.message || 'Five9 CAV metadata could not be attached'));\n          }\n          break;\n        case 'FIVE9_PROXY_SMS_READY':\n          notify('five9:smsNumberSuggested');\n          if (data.requestId) {\n            return resolvePendingRequest(data.requestId, payload);\n          }\n          break;\n        case 'FIVE9_PROXY_CAMPAIGN_DISCOVERED':\n          if (data.requestId) {\n            return resolvePendingRequest(data.requestId, payload);\n          }\n          break;\n        case 'FIVE9_PROXY_CALL_ENDED':\n          activeCallRequestId = null;\n          payload.interactionId = safeInteractionId(payload.interactionId);\n          return markRuntimeCallEnded(normalizeCallData(payload));\n        case 'FIVE9_PROXY_DISPOSITION_FINISHED':\n          payload.interactionId = safeInteractionId(payload.interactionId);\n          return markRuntimeDispositionFinished(normalizeCallData(payload));\n        case 'FIVE9_PROXY_CALL_FAILED':\n          activeCallRequestId = null;\n          markRuntimeCallFailed({\n            interactionId: safeInteractionId(payload.interactionId),\n            error: payload.message\n          });\n          if (data.requestId) {\n            return rejectPendingRequest(data.requestId, new Error(payload.message || 'Five9 call failed'));\n          }\n          break;\n        case 'FIVE9_PROXY_INBOUND_LOOKUP_REQUEST':\n          return beginInboundLookup({\n            interactionId: safeInteractionId(payload.interactionId),\n            interactionSubType: payload.interactionSubType,\n            callType: payload.callType,\n            ani: payload.ani\n          }, data.requestId);\n        case 'FIVE9_PROXY_ERROR':\n          if (activeCallRequestId === data.requestId) {\n            activeCallRequestId = null;\n          }\n          // Request-level errors should not demote a healthy authenticated session to failed,\n          // and must not toast during wrap-up / active call transitions.\n          if (ACTIVE_CALL_STATUSES.indexOf(state.status) >= 0) {\n            updateState(state.status, {\n              error: payload.message\n            });\n          } else if (state.agentSessionReady || state.clickToDialEnabled || state.ready) {\n            updateState('ready', {\n              ready: true,\n              error: payload.message\n            });\n          } else {\n            updateState('failed', {\n              ready: false,\n              error: payload.message\n            });\n            notify('five9:error', angular.copy(state));\n          }\n          if (data.requestId) {\n            return rejectPendingRequest(data.requestId, new Error(payload.message || 'Five9 proxy error'));\n          }\n      }\n    };\n    handleProxyMessage = function handleProxyMessage(event) {\n      var data;\n      if (!(proxyWindow && event.source === proxyWindow)) {\n        return;\n      }\n      if (event.origin !== proxyOrigin) {\n        return;\n      }\n      data = event.data || {};\n      if (!(data.namespace === PROXY_NAMESPACE && data.version === PROXY_VERSION && data.type)) {\n        return;\n      }\n      return $rootScope.$evalAsync(function () {\n        return handleProxyEvent(data);\n      });\n    };\n    ensureProxyListener = function ensureProxyListener() {\n      if (messageListener) {\n        return;\n      }\n      messageListener = handleProxyMessage;\n      return $window.addEventListener('message', messageListener);\n    };\n    initializeProxy = function initializeProxy() {\n      var error;\n      try {\n        updateState('adapter_loading', {\n          proxyConnected: true,\n          error: null\n        });\n        return sendProxyRequest('FIVE9_PROXY_INITIALIZE', {\n          config: proxyConfig()\n        }, 30000).finally(function () {\n          return loadingPromise = null;\n        });\n      } catch (error1) {\n        error = error1;\n        loadingPromise = null;\n        updateState('failed', {\n          ready: false,\n          error: error.message\n        });\n        return $q.reject(error);\n      }\n    };\n    getCampaignOverride = function getCampaignOverride() {\n      var clickToDial, overrideName, ref;\n      clickToDial = ((ref = env.five9) != null ? ref.clickToDial : void 0) || {};\n      overrideName = clickToDial.preselectedCampaignName;\n      if (!(angular.isString(overrideName) && overrideName.trim())) {\n        return null;\n      }\n      return overrideName.trim();\n    };\n    discoverCampaign = function discoverCampaign() {\n      var payload, ref;\n      payload = {\n        overrideName: getCampaignOverride()\n      };\n      if ((ref = env.five9) != null ? ref.useFakeSdk : void 0) {\n        if (!(interactionApi != null ? interactionApi.discoverCampaign : void 0)) {\n          return $q.reject(new Error('Fake Five9 runtime cannot discover nurse campaigns'));\n        }\n        return $q.when(interactionApi.discoverCampaign(payload));\n      }\n      return sendProxyRequest('FIVE9_PROXY_DISCOVER_CAMPAIGN', payload);\n    };\n    configuredMappings = function configuredMappings() {\n      var ref;\n      return ((ref = env.five9) != null ? ref.cavMappings : void 0) || {};\n    };\n    maxLengths = function maxLengths() {\n      var ref;\n      return ((ref = env.five9) != null ? ref.cavMaxLengths : void 0) || {};\n    };\n    validateCavMappings = function validateCavMappings(metadata) {\n      var mappings;\n      mappings = configuredMappings();\n      return _.each(Object.keys(metadata), function (key) {\n        if (!mappings[key]) {\n          throw new Error(\"Five9 CAV mapping is missing for \".concat(key));\n        }\n      });\n    };\n    validateCavLengths = function validateCavLengths(metadata) {\n      var lengths;\n      lengths = maxLengths();\n      return _.each(metadata, function (value, key) {\n        var maxLength;\n        maxLength = lengths[key] || DEFAULT_CAV_MAX_LENGTH;\n        if (String(value).length > maxLength) {\n          throw new Error(\"Five9 CAV value for \".concat(key, \" exceeds \").concat(maxLength, \" characters\"));\n        }\n      });\n    };\n    metadataToCavList = function metadataToCavList(metadata) {\n      var mappings;\n      validateCavMappings(metadata);\n      validateCavLengths(metadata);\n      mappings = configuredMappings();\n      return _.map(metadata, function (value, key) {\n        return {\n          id: mappings[key],\n          value: String(value)\n        };\n      });\n    };\n    compactMetadata = function compactMetadata(metadata) {\n      var result;\n      result = {};\n      _.each(metadata, function (value, key) {\n        if (value === null || value === void 0 || value === '') {\n          return;\n        }\n        return result[key] = String(value);\n      });\n      return result;\n    };\n    _buildPatientMetadata = function buildPatientMetadata(patientUserProfile, user, enterpriseCustomer) {\n      var metadata, patientServices, ref, ref1, ref2;\n      patientServices = patientServiceNames(patientUserProfile).join(',');\n      metadata = compactMetadata({\n        metadataVersion: METADATA_VERSION,\n        patientUserProfileId: patientUserProfile != null ? patientUserProfile.id : void 0,\n        enterpriseId: (patientUserProfile != null ? patientUserProfile.enterprise_customer_id : void 0) || (enterpriseCustomer != null ? enterpriseCustomer.id : void 0) || (user != null ? (ref = user.user_profile) != null ? ref.enterprise_customer_id : void 0 : void 0),\n        officeId: (user != null ? user.logged_in_office_id : void 0) || (user != null ? (ref1 = user.user_profile) != null ? ref1.logged_in_office_id : void 0 : void 0),\n        initiatingUserId: user != null ? user.id : void 0,\n        initiatingUserProfileId: user != null ? (ref2 = user.user_profile) != null ? ref2.id : void 0 : void 0,\n        patientServices: patientServices\n      });\n      _.each(REQUIRED_METADATA_FIELDS, function (fieldName) {\n        if (!metadata[fieldName]) {\n          throw new Error(\"Five9 metadata is missing \".concat(fieldName));\n        }\n      });\n      return metadata;\n    };\n    buildPatientCrmObject = function buildPatientCrmObject(patientUserProfile) {\n      if (!(patientUserProfile != null ? patientUserProfile.id : void 0)) {\n        throw new Error('Five9 patient CRM object requires a patient user profile id');\n      }\n      return {\n        id: patientUserProfile.id,\n        type: 'ProviderPortalPatient',\n        label: 'Provider Portal Patient',\n        name: patientUserProfile.id,\n        isWho: true,\n        isWhat: false\n      };\n    };\n    _buildPatientCavPayload = function buildPatientCavPayload(patientUserProfile, user, enterpriseCustomer) {\n      var metadata;\n      metadata = _buildPatientMetadata(patientUserProfile, user, enterpriseCustomer);\n      return {\n        metadata: metadata,\n        cavList: metadataToCavList(metadata),\n        crmObject: buildPatientCrmObject(patientUserProfile)\n      };\n    };\n    validatePhoneNumber = function validatePhoneNumber(phoneNumber) {\n      var digits;\n      digits = String(phoneNumber || '').replace(/\\D/g, '');\n      if (!(digits.length >= 7)) {\n        throw new Error('A valid destination phone number is required');\n      }\n      return phoneNumber;\n    };\n    // Five9 click-to-SMS only recognizes E.164 destinations; click-to-dial accepts\n    // national format, so the call path intentionally keeps the stored number.\n    toSmsDestination = function toSmsDestination(phoneNumber) {\n      var digits, raw;\n      raw = String(phoneNumber || '').trim();\n      digits = raw.replace(/\\D/g, '');\n      if (raw.charAt(0) === '+') {\n        if (digits.length >= 10) {\n          return \"+\".concat(digits);\n        }\n      } else if (digits.length === 10) {\n        return \"+\".concat(SMS_COUNTRY_CALLING_CODE).concat(digits);\n      } else if (digits.length === 11 && digits.charAt(0) === SMS_COUNTRY_CALLING_CODE) {\n        return \"+\".concat(digits);\n      }\n      throw new Error('Five9 SMS requires a valid 10-digit mobile number');\n    };\n    return {\n      isTransientStatus: function isTransientStatus(status) {\n        return TRANSIENT_STATUSES.indexOf(status) >= 0;\n      },\n      isTerminalFailureStatus: function isTerminalFailureStatus(status) {\n        return status === 'failed' || status === 'unsupported_runtime';\n      },\n      initialize: function initialize() {\n        var ref;\n        if (!((ref = env.five9) != null ? ref.useFakeSdk : void 0)) {\n          if (!proxyConnected) {\n            return $q.when(state);\n          }\n          if (state.ready) {\n            return $q.when(state);\n          }\n          // Authenticated/connecting/call states are healthy; do not re-init or stomp status.\n          if (ACTIVE_CALL_STATUSES.indexOf(state.status) >= 0) {\n            return $q.when(state);\n          }\n          if (['authentication_required', 'station_required', 'campaign_required', 'adapter_loading', 'connecting', 'reconnecting'].indexOf(state.status) >= 0) {\n            return loadingPromise || $q.when(state);\n          }\n          if (loadingPromise) {\n            return loadingPromise;\n          }\n          updateState('connecting', {\n            error: null\n          });\n          loadingPromise = initializeProxy();\n          return loadingPromise;\n        }\n        if (loadingPromise) {\n          return loadingPromise;\n        }\n        updateState('sdk_loading');\n        setupMessageDiagnostics();\n        loadingPromise = loadSdk().then(function (api) {\n          interactionApi = api;\n          initialized = true;\n          updateState('sdk_loaded', {\n            sdkLoaded: true,\n            crmApiCreated: !!crmApi,\n            interactionApiCreated: !!interactionApi,\n            runtimeConnected: false,\n            agentSessionReady: false,\n            clickToDialEnabled: false,\n            runtimeUnavailableReason: null,\n            error: null\n          });\n          registerInteractionEvents();\n          notify('five9:sdkLoaded', angular.copy(state));\n          return detectRuntime();\n        }).catch(function (error) {\n          initialized = false;\n          updateState('failed', {\n            sdkLoaded: false,\n            crmApiCreated: false,\n            interactionApiCreated: false,\n            runtimeConnected: false,\n            agentSessionReady: false,\n            clickToDialEnabled: false,\n            error: error.message\n          });\n          notify('five9:error', angular.copy(state));\n          return $q.reject(error);\n        }).finally(function () {\n          return loadingPromise = null;\n        });\n        return loadingPromise;\n      },\n      getState: function getState() {\n        return angular.copy(state);\n      },\n      getPatientCallContext: function getPatientCallContext() {\n        var context;\n        context = activeInteractionId ? interactionStates[activeInteractionId] : pendingPatientCallContext;\n        return angular.copy(_.omit(context, ['callLogPromise', 'callLogUpdatePromise']));\n      },\n      getInboundCallContext: function getInboundCallContext() {\n        return angular.copy(inboundCallContext);\n      },\n      configureInboundContext: function configureInboundContext() {\n        var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        return inboundRuntimeContext = {\n          user: angular.copy(context.user),\n          enterpriseCustomer: angular.copy(context.enterpriseCustomer)\n        };\n      },\n      resolveInboundPatient: function resolveInboundPatient(interactionId, patientUserProfileId) {\n        var resolutionMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'manual';\n        return _resolveInboundPatient(interactionId, patientUserProfileId, resolutionMethod);\n      },\n      setInboundCandidates: function setInboundCandidates(interactionId, candidates) {\n        return _setInboundCandidates(interactionId, candidates);\n      },\n      clearPatientCallContext: function clearPatientCallContext() {\n        pendingPatientCallContext = null;\n        interactionStates = {};\n        return activeInteractionId = null;\n      },\n      isReady: function isReady() {\n        var ref;\n        if ((ref = env.five9) != null ? ref.useFakeSdk : void 0) {\n          return initialized && state.ready && !!interactionApi;\n        } else {\n          return proxyConnected && state.ready;\n        }\n      },\n      isSmsEnabled: function isSmsEnabled() {\n        var ref, ref1;\n        return ((ref = env.five9) != null ? (ref1 = ref.runtimeConfig) != null ? ref1.clickToSms : void 0 : void 0) === true;\n      },\n      isAllowedOrigin: function isAllowedOrigin(origin) {\n        return validateAllowedOrigins().indexOf(origin) >= 0;\n      },\n      buildPatientMetadata: function buildPatientMetadata(patientUserProfile, user, enterpriseCustomer) {\n        return _buildPatientMetadata(patientUserProfile, user, enterpriseCustomer);\n      },\n      buildPatientCavPayload: function buildPatientCavPayload(patientUserProfile, user, enterpriseCustomer) {\n        return _buildPatientCavPayload(patientUserProfile, user, enterpriseCustomer);\n      },\n      openPanel: function openPanel() {\n        var reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'explicit';\n        return notify('five9:openPanel', {\n          reason: reason\n        });\n      },\n      suggestPatientSmsNumber: function suggestPatientSmsNumber(phoneNumber) {\n        var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var crmObject, destination, error, ref, result;\n        if (!this.isSmsEnabled()) {\n          return $q.reject(new Error('Five9 SMS is not enabled'));\n        }\n        if (!this.isReady()) {\n          return $q.reject(new Error(\"Five9 runtime is not ready: \".concat(state.status)));\n        }\n        try {\n          destination = toSmsDestination(phoneNumber);\n          crmObject = angular.copy(context.crmObject);\n          if ((ref = env.five9) != null ? ref.useFakeSdk : void 0) {\n            if (!(crmApi != null ? crmApi.suggestedNumbers : void 0)) {\n              throw new Error('Five9 CRM SDK does not support patient number suggestions');\n            }\n            result = crmApi.suggestedNumbers({\n              suggestedNumbers: [{\n                clickToDialNumber: destination,\n                crmObject: crmObject\n              }]\n            });\n            notify('five9:smsNumberSuggested');\n            return $q.when(result);\n          }\n          return sendProxyRequest('FIVE9_PROXY_PREPARE_SMS', {\n            destination: destination,\n            crmObject: crmObject\n          }).catch(function (error) {\n            notify('five9:smsFailed', {\n              error: error.message\n            });\n            return $q.reject(error);\n          });\n        } catch (error1) {\n          error = error1;\n          notify('five9:smsFailed', {\n            error: error.message\n          });\n          return $q.reject(error);\n        }\n      },\n      startPatientCall: function () {\n        var _startPatientCall = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(phoneNumber) {\n          var context,\n            campaign,\n            campaignConfig,\n            cavList,\n            cavPayload,\n            click2DialData,\n            crmObject,\n            error,\n            metadata,\n            ref,\n            _args2 = arguments;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                context = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};\n                if (this.isReady()) {\n                  _context2.next = 3;\n                  break;\n                }\n                return _context2.abrupt(\"return\", $q.reject(new Error(\"Five9 runtime is not ready: \".concat(state.status))));\n              case 3:\n                if (!(activeCallRequestId || ACTIVE_CALL_STATUSES.indexOf(state.status) >= 0)) {\n                  _context2.next = 5;\n                  break;\n                }\n                return _context2.abrupt(\"return\", $q.reject(new Error('Complete the existing Five9 call before starting another call')));\n              case 5:\n                _context2.prev = 5;\n                validatePhoneNumber(phoneNumber);\n                cavPayload = _buildPatientCavPayload(context.patientUserProfile, context.user, context.enterpriseCustomer);\n                metadata = cavPayload.metadata;\n                cavList = cavPayload.cavList;\n                crmObject = angular.copy(context.crmObject);\n                _context2.next = 13;\n                return discoverCampaign();\n              case 13:\n                campaign = _context2.sent;\n                if (campaign != null ? campaign.campaignName : void 0) {\n                  _context2.next = 16;\n                  break;\n                }\n                throw new Error('Five9 nurse campaign discovery returned no campaign');\n              case 16:\n                campaignConfig = {\n                  preselectedCampaignName: campaign.campaignName\n                };\n                click2DialData = angular.extend({\n                  clickToDialNumber: phoneNumber,\n                  crmObject: crmObject\n                }, campaignConfig);\n                pendingPatientCallContext = buildPatientCallContext(phoneNumber, context, metadata);\n                pendingPatientCallContext.campaignId = campaign.campaignId || null;\n                pendingPatientCallContext.campaignName = campaign.campaignName;\n                pendingPatientCallContext.campaignMatchSource = campaign.matchSource || null;\n                updateState('calling', {\n                  ready: false,\n                  error: null\n                });\n                logDiagnostic('Five9 click-to-dial invoked', {\n                  metadataKeys: Object.keys(metadata),\n                  campaignMode: 'discoveredPreselectedCampaign',\n                  campaignId: campaign.campaignId || null,\n                  campaignMatchSource: campaign.matchSource || null\n                });\n                if (!((ref = env.five9) != null ? ref.useFakeSdk : void 0)) {\n                  _context2.next = 28;\n                  break;\n                }\n                pendingCall = {\n                  metadata: angular.copy(metadata),\n                  cavList: angular.copy(cavList)\n                };\n                interactionApi.click2dial({\n                  click2DialData: click2DialData\n                });\n                return _context2.abrupt(\"return\", $q.when({\n                  click2DialData: click2DialData,\n                  metadata: metadata,\n                  cavList: cavList,\n                  patientCallContext: angular.copy(pendingPatientCallContext)\n                }));\n              case 28:\n                return _context2.abrupt(\"return\", sendProxyRequest('FIVE9_PROXY_START_CALL', {\n                  destination: phoneNumber,\n                  crmObject: crmObject,\n                  campaign: campaignConfig,\n                  cavList: cavList,\n                  metadataKeys: Object.keys(metadata)\n                }, 60000));\n              case 31:\n                _context2.prev = 31;\n                _context2.t0 = _context2[\"catch\"](5);\n                error = _context2.t0;\n                pendingCall = null;\n                pendingPatientCallContext = null;\n                return _context2.abrupt(\"return\", $q.reject(error));\n              case 37:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this, [[5, 31]]);\n        }));\n        function startPatientCall(_x3) {\n          return _startPatientCall.apply(this, arguments);\n        }\n        return startPatientCall;\n      }(),\n      // Test/helper: simulate a softphone-originated call with no Provider Portal patient context.\n      simulateDirectSoftphoneCall: function simulateDirectSoftphoneCall() {\n        var interactionId, ref;\n        if (!(((ref = env.five9) != null ? ref.useFakeSdk : void 0) && interactionApi)) {\n          return;\n        }\n        pendingPatientCallContext = null;\n        interactionId = 'fake-direct-' + Date.now();\n        markRuntimeCallStarted({\n          interactionId: interactionId\n        });\n        markRuntimeCallEnded({\n          interactionId: interactionId\n        });\n        updateState('ready', {\n          ready: true,\n          agentSessionReady: true,\n          clickToDialEnabled: true,\n          error: null\n        });\n        return interactionId;\n      },\n      subscribe: function subscribe(event, scope, callback) {\n        var handler;\n        handler = $rootScope.$on(event, callback);\n        return scope.$on('$destroy', handler);\n      },\n      destroy: function destroy() {\n        crmApi = null;\n        interactionApi = null;\n        loadingPromise = null;\n        eventsRegistered = false;\n        initialized = false;\n        pendingCall = null;\n        pendingPatientCallContext = null;\n        interactionStates = {};\n        activeInteractionId = null;\n        inboundRuntimeContext = null;\n        inboundCallContext = null;\n        promptedPostCallKeys = {};\n        activeCallRequestId = null;\n        proxyWindow = null;\n        proxyOrigin = null;\n        proxyConnected = false;\n        _.each(pendingRequests, function (pending, requestId) {\n          return $window.clearTimeout(pending.timeoutId);\n        });\n        pendingRequests = {};\n        state.sdkLoaded = false;\n        state.runtimeConnected = false;\n        state.agentSessionReady = false;\n        state.ready = false;\n        state.clickToDialEnabled = false;\n        state.proxyConnected = false;\n        state.proxyHandshakeComplete = false;\n        state.crmApiCreated = false;\n        state.interactionApiCreated = false;\n        state.extensionGlobalDetected = false;\n        state.extensionId = null;\n        state.extensionVersion = null;\n        state.observedFive9MessageOrigins = [];\n        state.runtimeUnavailableReason = null;\n        state.status = 'disabled';\n        return removeMessageDiagnostics();\n      },\n      advanceFakeState: function advanceFakeState(nextState) {\n        var ref;\n        if (!(((ref = env.five9) != null ? ref.useFakeSdk : void 0) && (interactionApi != null ? interactionApi.advanceState : void 0))) {\n          return;\n        }\n        interactionApi.advanceState(nextState);\n        return detectRuntime();\n      },\n      getProxyPageUrl: function getProxyPageUrl() {\n        return _getProxyPageUrl();\n      },\n      shouldRenderProxy: function shouldRenderProxy() {\n        var ref;\n        return !((ref = env.five9) != null ? ref.useFakeSdk : void 0);\n      },\n      connectProxy: function connectProxy(iframe) {\n        var reconnectStatus, wasReady;\n        if (!(iframe != null ? iframe.contentWindow : void 0)) {\n          return $q.reject(new Error('Five9 proxy iframe is not available'));\n        }\n        // Refresh/reconnect path: replace the iframe window and re-handshake without treating\n        // the transition as a terminal failure.\n        wasReady = state.ready;\n        proxyWindow = iframe.contentWindow;\n        proxyOrigin = getProxyOrigin();\n        proxyConnected = true;\n        state.proxyConnected = true;\n        ensureProxyListener();\n        if (loadingPromise) {\n          return loadingPromise;\n        }\n        reconnectStatus = wasReady ? 'reconnecting' : 'connecting';\n        updateState(reconnectStatus, {\n          error: null\n        });\n        loadingPromise = initializeProxy();\n        return loadingPromise;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:Five9PostCallService\n   * @description\n   * Lightweight post-call RPM/CCM time prompt after Provider Portal-initiated Five9 calls.\n   * Designed to later accept richer transcription summaries without depending on them now.\n   */\n  angular.module('services').factory('Five9PostCallService', function ($log, $q, $rootScope, $translate, ModalService, TimesheetService, NotificationsService, PatientChartNavigationService, PatientServicesService, ReportingPeriodService) {\n    'ngInject';\n\n    var allocationDurationMinutesForContext, allocationForMinutes, billableDurationSecsForContext, callTimeTextForDuration, findServiceByName, logTimeForService, patientDisplayName, promptOpen, serviceOptionsForContext, showPrompt;\n    $log = $log.getInstance('Five9PostCallService');\n    promptOpen = false;\n    patientDisplayName = function patientDisplayName(patientUserProfile) {\n      var first, last, name;\n      first = (patientUserProfile != null ? patientUserProfile.name_first : void 0) || '';\n      last = (patientUserProfile != null ? patientUserProfile.name_last : void 0) || '';\n      name = (first + ' ' + last).trim();\n      return name || 'this patient';\n    };\n    serviceOptionsForContext = function serviceOptionsForContext(context) {\n      var options, services;\n      services = (context != null ? context.services : void 0) || [];\n      options = [];\n      if (services.indexOf('RPM') >= 0) {\n        options.push('RPM');\n      }\n      if (services.indexOf('CCM') >= 0) {\n        options.push('CCM');\n      }\n      return options;\n    };\n    findServiceByName = /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseId, serviceName) {\n        var patientServices;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              _context.next = 2;\n              return PatientServicesService.getAll(enterpriseId);\n            case 2:\n              patientServices = _context.sent;\n              return _context.abrupt(\"return\", patientServices.find(function (service) {\n                return service.name === serviceName;\n              }));\n            case 4:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function findServiceByName(_x, _x2) {\n        return _ref.apply(this, arguments);\n      };\n    }();\n    callTimeTextForDuration = function callTimeTextForDuration(durationSecs) {\n      var duration;\n      duration = luxon.Duration.fromObject({\n        seconds: durationSecs\n      }).shiftTo('minutes', 'seconds').set({\n        seconds: Math.floor(durationSecs % 60)\n      });\n      return duration.toHuman();\n    };\n    billableDurationSecsForContext = function billableDurationSecsForContext(context) {\n      var durationSecs;\n      durationSecs = Math.max(0, Math.floor(Number(context != null ? context.durationSecs : void 0) || 0));\n      if (context != null ? context.connected : void 0) {\n        return Math.max(60, durationSecs);\n      } else {\n        return durationSecs;\n      }\n    };\n    allocationDurationMinutesForContext = function allocationDurationMinutesForContext(context) {\n      var durationSecs;\n      durationSecs = billableDurationSecsForContext(context);\n      if (!durationSecs) {\n        return 0;\n      }\n      return Math.max(1, Math.round(durationSecs / 60));\n    };\n    allocationForMinutes = function allocationForMinutes(totalMinutes, rpmMinutes, ccmMinutes) {\n      var values;\n      if (rpmMinutes === null || rpmMinutes === void 0 || rpmMinutes === '') {\n        return null;\n      }\n      if (ccmMinutes === null || ccmMinutes === void 0 || ccmMinutes === '') {\n        return null;\n      }\n      totalMinutes = Number(totalMinutes);\n      rpmMinutes = Number(rpmMinutes);\n      ccmMinutes = Number(ccmMinutes);\n      values = [totalMinutes, rpmMinutes, ccmMinutes];\n      if (!values.every(function (value) {\n        return Number.isInteger(value);\n      })) {\n        return null;\n      }\n      if (!(totalMinutes > 0)) {\n        return null;\n      }\n      if (rpmMinutes < 0 || ccmMinutes < 0) {\n        return null;\n      }\n      if (rpmMinutes > totalMinutes || ccmMinutes > totalMinutes) {\n        return null;\n      }\n      if (rpmMinutes + ccmMinutes !== totalMinutes) {\n        return null;\n      }\n      return {\n        RPM: rpmMinutes * 60,\n        CCM: ccmMinutes * 60\n      };\n    };\n    logTimeForService = /*#__PURE__*/function () {\n      var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(context, serviceName) {\n        var durationSecs,\n          callTimeText,\n          enterpriseId,\n          observationReport,\n          patient,\n          ref,\n          ref1,\n          reportPeriodText,\n          reportingPeriod,\n          service,\n          timesheet,\n          user,\n          _args2 = arguments;\n        return regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) switch (_context2.prev = _context2.next) {\n            case 0:\n              durationSecs = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : null;\n              patient = context.patientUserProfile;\n              user = context.user;\n              enterpriseId = context.enterpriseId || (patient != null ? patient.enterprise_customer_id : void 0) || (user != null ? (ref = user.user_profile) != null ? ref.enterprise_customer_id : void 0 : void 0);\n              _context2.next = 6;\n              return ReportingPeriodService.getCurrentReportingPeriodForLocalTime();\n            case 6:\n              reportingPeriod = _context2.sent;\n              _context2.next = 9;\n              return PatientChartNavigationService.getCurrentObservationReport(enterpriseId, patient.id, reportingPeriod.id, serviceName);\n            case 9:\n              observationReport = _context2.sent;\n              if (observationReport != null ? observationReport.id : void 0) {\n                _context2.next = 12;\n                break;\n              }\n              throw new Error(\"No current \".concat(serviceName, \" observation report was found for time logging\"));\n            case 12:\n              _context2.next = 14;\n              return findServiceByName(enterpriseId, serviceName);\n            case 14:\n              service = _context2.sent;\n              if (service != null ? service.id : void 0) {\n                _context2.next = 17;\n                break;\n              }\n              throw new Error(\"\".concat(serviceName, \" service was not found\"));\n            case 17:\n              if (durationSecs == null) {\n                durationSecs = billableDurationSecsForContext(context);\n              }\n              reportPeriodText = luxon.DateTime.local().toFormat('MMMM yyyy');\n              callTimeText = callTimeTextForDuration(durationSecs);\n              timesheet = {\n                observation_report_id: observationReport.id,\n                submitted_by_user_profile_id: user != null ? (ref1 = user.user_profile) != null ? ref1.id : void 0 : void 0,\n                duration_secs: durationSecs\n              };\n              _context2.next = 23;\n              return TimesheetService.post(timesheet);\n            case 23:\n              NotificationsService.success('AUDIO_CALL.TIME_MODAL.SUCCESSFUL_NOTIFICATION', {\n                call_time: callTimeText,\n                reportPeriodText: reportPeriodText,\n                service: serviceName\n              });\n              return _context2.abrupt(\"return\", $rootScope.$broadcast('observationReport:reload', {\n                observationReportId: observationReport.id,\n                patientUserProfileId: patient.id\n              }));\n            case 25:\n            case \"end\":\n              return _context2.stop();\n          }\n        }, _callee2);\n      }));\n      return function logTimeForService(_x3, _x4) {\n        return _ref2.apply(this, arguments);\n      };\n    }();\n    showPrompt = /*#__PURE__*/function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(payload) {\n        var allocation, callTimeText, error, modalResult, options, patientName, ref, totalMinutes, translationKeys, translations;\n        return regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) switch (_context3.prev = _context3.next) {\n            case 0:\n              if (payload != null ? (ref = payload.context) != null ? ref.patientUserProfile : void 0 : void 0) {\n                _context3.next = 2;\n                break;\n              }\n              return _context3.abrupt(\"return\", $q.when(null));\n            case 2:\n              if (payload.context.connected) {\n                _context3.next = 4;\n                break;\n              }\n              return _context3.abrupt(\"return\", $q.when(null));\n            case 4:\n              if (!promptOpen) {\n                _context3.next = 6;\n                break;\n              }\n              return _context3.abrupt(\"return\", $q.when(null));\n            case 6:\n              options = serviceOptionsForContext(payload.context);\n              if (options.length) {\n                _context3.next = 9;\n                break;\n              }\n              return _context3.abrupt(\"return\", $q.when(null));\n            case 9:\n              promptOpen = true;\n              patientName = patientDisplayName(payload.context.patientUserProfile);\n              callTimeText = callTimeTextForDuration(billableDurationSecsForContext(payload.context));\n              translationKeys = ['FIVE9.POST_CALL.HEADER', 'FIVE9.POST_CALL.BODY', 'FIVE9.POST_CALL.NOT_NOW', 'FIVE9.POST_CALL.ADD_RPM', 'FIVE9.POST_CALL.ADD_CCM', 'FIVE9.POST_CALL.ALLOCATION_BODY', 'FIVE9.POST_CALL.RPM_MINUTES', 'FIVE9.POST_CALL.CCM_MINUTES', 'FIVE9.POST_CALL.LOG_TIME'];\n              _context3.prev = 13;\n              _context3.next = 16;\n              return $translate(translationKeys, {\n                patient_name: patientName,\n                call_time: callTimeText,\n                call_minutes: allocationDurationMinutesForContext(payload.context)\n              });\n            case 16:\n              translations = _context3.sent;\n              _context3.next = 19;\n              return ModalService.showModal({\n                templateUrl: 'app/components/portal/five9-post-call-prompt/five9-post-call-prompt.modal.html',\n                windowClass: 'five9-post-call-modal',\n                controller: function controller($scope, $uibModalInstance) {\n                  var showAllocation, totalMinutes;\n                  showAllocation = options.length === 2;\n                  totalMinutes = allocationDurationMinutesForContext(payload.context);\n                  return $scope.modal = {\n                    headerText: translations['FIVE9.POST_CALL.HEADER'],\n                    bodyText: translations['FIVE9.POST_CALL.BODY'],\n                    allocationBodyText: translations['FIVE9.POST_CALL.ALLOCATION_BODY'],\n                    notNowText: translations['FIVE9.POST_CALL.NOT_NOW'],\n                    addRpmText: translations['FIVE9.POST_CALL.ADD_RPM'],\n                    addCcmText: translations['FIVE9.POST_CALL.ADD_CCM'],\n                    rpmMinutesText: translations['FIVE9.POST_CALL.RPM_MINUTES'],\n                    ccmMinutesText: translations['FIVE9.POST_CALL.CCM_MINUTES'],\n                    logTimeText: translations['FIVE9.POST_CALL.LOG_TIME'],\n                    showRpm: options.indexOf('RPM') >= 0,\n                    showCcm: options.indexOf('CCM') >= 0,\n                    showAllocation: showAllocation,\n                    totalMinutes: totalMinutes,\n                    minuteOptions: function () {\n                      var results = [];\n                      for (var i = 0; 0 <= totalMinutes ? i <= totalMinutes : i >= totalMinutes; 0 <= totalMinutes ? i++ : i--) {\n                        results.push(i);\n                      }\n                      return results;\n                    }.apply(this),\n                    rpmMinutes: null,\n                    ccmMinutes: null,\n                    patientName: patientName,\n                    choose: function choose(serviceName) {\n                      return $uibModalInstance.close(serviceName);\n                    },\n                    updateAllocation: function updateAllocation(serviceName) {\n                      var ccmMinutes, rpmMinutes;\n                      if (serviceName === 'RPM') {\n                        rpmMinutes = Number($scope.modal.rpmMinutes);\n                        if (Number.isInteger(rpmMinutes) && rpmMinutes >= 0 && rpmMinutes <= totalMinutes) {\n                          return $scope.modal.ccmMinutes = totalMinutes - rpmMinutes;\n                        }\n                      } else if (serviceName === 'CCM') {\n                        ccmMinutes = Number($scope.modal.ccmMinutes);\n                        if (Number.isInteger(ccmMinutes) && ccmMinutes >= 0 && ccmMinutes <= totalMinutes) {\n                          return $scope.modal.rpmMinutes = totalMinutes - ccmMinutes;\n                        }\n                      }\n                    },\n                    canSubmitAllocation: function canSubmitAllocation() {\n                      return !!allocationForMinutes(totalMinutes, $scope.modal.rpmMinutes, $scope.modal.ccmMinutes);\n                    },\n                    submitAllocation: function submitAllocation() {\n                      if (!$scope.modal.canSubmitAllocation()) {\n                        return;\n                      }\n                      return $uibModalInstance.close({\n                        rpmMinutes: Number($scope.modal.rpmMinutes),\n                        ccmMinutes: Number($scope.modal.ccmMinutes)\n                      });\n                    },\n                    dismiss: function dismiss() {\n                      return $uibModalInstance.close(null);\n                    }\n                  };\n                }\n              }, {}).result;\n            case 19:\n              modalResult = _context3.sent;\n              if (modalResult) {\n                _context3.next = 22;\n                break;\n              }\n              return _context3.abrupt(\"return\", null);\n            case 22:\n              if (!(options.length === 2)) {\n                _context3.next = 35;\n                break;\n              }\n              totalMinutes = allocationDurationMinutesForContext(payload.context);\n              allocation = allocationForMinutes(totalMinutes, modalResult.rpmMinutes, modalResult.ccmMinutes);\n              if (allocation) {\n                _context3.next = 27;\n                break;\n              }\n              throw new Error('RPM and CCM allocation must equal the logged call duration');\n            case 27:\n              if (!(allocation.RPM > 0)) {\n                _context3.next = 30;\n                break;\n              }\n              _context3.next = 30;\n              return logTimeForService(payload.context, 'RPM', allocation.RPM);\n            case 30:\n              if (!(allocation.CCM > 0)) {\n                _context3.next = 33;\n                break;\n              }\n              _context3.next = 33;\n              return logTimeForService(payload.context, 'CCM', allocation.CCM);\n            case 33:\n              _context3.next = 39;\n              break;\n            case 35:\n              if (!(modalResult !== options[0])) {\n                _context3.next = 37;\n                break;\n              }\n              return _context3.abrupt(\"return\", null);\n            case 37:\n              _context3.next = 39;\n              return logTimeForService(payload.context, modalResult);\n            case 39:\n              return _context3.abrupt(\"return\", modalResult);\n            case 42:\n              _context3.prev = 42;\n              _context3.t0 = _context3[\"catch\"](13);\n              error = _context3.t0;\n              if (error && error !== 'backdrop click' && error !== 'escape key press') {\n                $log.error('Five9 post-call prompt failed', (error != null ? error.message : void 0) || error);\n                NotificationsService.error('AUDIO_CALL.TIME_MODAL.ERROR_NOTIFICATION');\n              }\n              return _context3.abrupt(\"return\", null);\n            case 47:\n              _context3.prev = 47;\n              promptOpen = false;\n              return _context3.finish(47);\n            case 50:\n            case \"end\":\n              return _context3.stop();\n          }\n        }, _callee3, null, [[13, 42, 47, 50]]);\n      }));\n      return function showPrompt(_x5) {\n        return _ref3.apply(this, arguments);\n      };\n    }();\n    return {\n      callTimeTextForDuration: callTimeTextForDuration,\n      allocationDurationMinutesForContext: allocationDurationMinutesForContext,\n      allocationForMinutes: allocationForMinutes,\n      serviceOptionsForContext: serviceOptionsForContext,\n      showPrompt: showPrompt,\n      isPromptOpen: function isPromptOpen() {\n        return promptOpen;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('FilesService', function (env, $log, Restangular) {\n    'ngInject';\n\n    var filesService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    filesService = restangular.all('');\n    return {\n      getSignedUrlForProfileImage: function getSignedUrlForProfileImage(userProfile, file) {\n        return filesService.one('user_profiles', userProfile.id).customPOST(file, 'files/get-signed-url-for-profile-image');\n      },\n      pruneProfileImages: function pruneProfileImages(userProfile) {\n        return filesService.one('user_profiles', userProfile.id).customGET('files/prune-profile-images');\n      },\n      getSignedUrlForFileUpload: function getSignedUrlForFileUpload(customer, file) {\n        return filesService.one('enterprise_customers', customer.id).customPOST(file, 'files/get-signed-url-for-file-upload');\n      },\n      createUploadRecord: function createUploadRecord(customer, uploadRecord) {\n        return filesService.one('enterprise_customers', customer.id).customPOST(uploadRecord, 'enterprise_uploads');\n      },\n      deleteUploadRecord: function deleteUploadRecord(customerId, uploadRecordId) {\n        return filesService.one('enterprise_customers', customerId).one('enterprise_uploads', uploadRecordId).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:FeaturesService\n   * @description\n   * For RESTful interaction w/ our Feature apis.\n   */\n  angular.module('services').factory('FeaturesService', function (env, $log, $state, $q, $filter, Restangular) {\n    'ngInject';\n\n    var featureService, restangular;\n    $log = $log.getInstance('FeaturesService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    featureService = restangular.all('');\n    return {\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        return featureService.one('enterprise_customers', enterpriseCustomerId).one('features').get(filters);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:FakeFive9Service\n   * @description\n   * Lightweight fake Five9 CRM SDK for local and automated tests.\n   */\n  angular.module('services').factory('FakeFive9Service', function ($timeout) {\n    'ngInject';\n\n    return {\n      install: function install($window) {\n        var fakeCrmApi, fakeInteractionApi, fakeState, interactionCallbacks;\n        interactionCallbacks = {};\n        fakeState = {\n          sdkLoaded: true,\n          extensionDetected: false,\n          runtimeConnected: false,\n          agentSessionReady: false,\n          clickToDialReady: false,\n          failNextClickToDial: false,\n          failNextSetCav: false,\n          campaigns: [{\n            id: 'fake-nurse-campaign',\n            name: '100Plus_Rep Test'\n          }, {\n            id: 'fake-operations-campaign',\n            name: 'Operations Main'\n          }]\n        };\n        fakeInteractionApi = {\n          subscribe: function subscribe(apiEvents) {\n            return interactionCallbacks = angular.extend(interactionCallbacks, apiEvents || {});\n          },\n          advanceState: function advanceState(nextState) {\n            return angular.extend(fakeState, nextState || {});\n          },\n          getRuntimeState: function getRuntimeState() {\n            return angular.copy(fakeState);\n          },\n          isMasterPage: function isMasterPage() {\n            if (fakeState.extensionDetected && fakeState.agentSessionReady) {\n              return Promise.resolve(true);\n            } else {\n              return new Promise(function () {});\n            }\n          },\n          getMetadata: function getMetadata() {\n            if (fakeState.extensionDetected && fakeState.agentSessionReady) {\n              return Promise.resolve({\n                extensionVersion: 'fake'\n              });\n            } else {\n              return new Promise(function () {});\n            }\n          },\n          discoverCampaign: function discoverCampaign() {\n            var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n            var campaigns, configuredMatches, exactMatches, matches, shortestLength, shortestMatches;\n            campaigns = fakeState.campaigns || [];\n            exactMatches = function exactMatches(expectedName) {\n              return campaigns.filter(function (campaign) {\n                return campaign.name === expectedName;\n              });\n            };\n            if (params.overrideName) {\n              configuredMatches = exactMatches(params.overrideName);\n              if (configuredMatches.length !== 1) {\n                throw new Error(\"Five9 configured campaign was not available to the current agent; found \".concat(configuredMatches.length, \" exact matches\"));\n              }\n              return {\n                campaignId: configuredMatches[0].id,\n                campaignName: configuredMatches[0].name,\n                matchSource: 'configuration_override'\n              };\n            }\n            matches = campaigns.filter(function (campaign) {\n              return String(campaign.name || '').indexOf('100Plus_Rep') === 0;\n            });\n            if (!matches.length) {\n              throw new Error('Five9 nurse campaign match failed: no available campaigns start with 100Plus_Rep');\n            }\n            if (matches.length === 1) {\n              return {\n                campaignId: matches[0].id,\n                campaignName: matches[0].name,\n                matchSource: 'unique_prefix_match'\n              };\n            }\n            shortestLength = Math.min.apply(null, matches.map(function (campaign) {\n              return String(campaign.name).length;\n            }));\n            shortestMatches = matches.filter(function (campaign) {\n              return String(campaign.name).length === shortestLength;\n            });\n            if (shortestMatches.length !== 1) {\n              throw new Error(\"Five9 nurse campaign match failed: shortest campaign name was not unique; found \".concat(shortestMatches.length, \" shortest matches among \").concat(matches.length, \" available nurse campaigns\"));\n            }\n            return {\n              campaignId: shortestMatches[0].id,\n              campaignName: shortestMatches[0].name,\n              matchSource: 'unique_shortest_prefix_match'\n            };\n          },\n          click2dial: function click2dial(params) {\n            var interactionId;\n            if (fakeState.failNextClickToDial) {\n              fakeState.failNextClickToDial = false;\n              throw new Error('Fake Five9 click-to-dial failed');\n            }\n            if (!(fakeState.extensionDetected && fakeState.agentSessionReady && fakeState.clickToDialReady)) {\n              throw new Error('Fake Five9 runtime is not ready');\n            }\n            interactionId = 'fake-five9-' + Date.now();\n            $timeout(function () {\n              return typeof interactionCallbacks.callStarted === \"function\" ? interactionCallbacks.callStarted({\n                callData: {\n                  interactionId: interactionId,\n                  interactionSubType: 'Call'\n                },\n                click2DialData: params != null ? params.click2DialData : void 0\n              }) : void 0;\n            }, 10);\n            $timeout(function () {\n              return typeof interactionCallbacks.callAccepted === \"function\" ? interactionCallbacks.callAccepted({\n                callData: {\n                  interactionId: interactionId,\n                  interactionSubType: 'Call',\n                  callState: 'RINGING_ON_OTHER_SIDE'\n                }\n              }) : void 0;\n            }, 25);\n            $timeout(function () {\n              return typeof interactionCallbacks.callConnected === \"function\" ? interactionCallbacks.callConnected({\n                callData: {\n                  interactionId: interactionId,\n                  interactionSubType: 'Call',\n                  callState: 'TALKING'\n                }\n              }) : void 0;\n            }, 30);\n            $timeout(function () {\n              return typeof interactionCallbacks.callEnded === \"function\" ? interactionCallbacks.callEnded({\n                callData: {\n                  interactionId: interactionId,\n                  interactionSubType: 'Call'\n                }\n              }) : void 0;\n            }, 40);\n            return $timeout(function () {\n              return typeof interactionCallbacks.callFinished === \"function\" ? interactionCallbacks.callFinished({\n                callData: {\n                  interactionId: interactionId,\n                  interactionSubType: 'Call'\n                },\n                callLogData: {\n                  dispositionName: 'Completed',\n                  duration: 1000,\n                  talkTime: 1000\n                }\n              }) : void 0;\n            }, 50);\n          },\n          setCav: function setCav(params) {\n            if (fakeState.failNextSetCav) {\n              fakeState.failNextSetCav = false;\n              return Promise.reject(new Error('Fake Five9 CAV application failed'));\n            }\n            fakeInteractionApi.lastCavParams = params;\n            return Promise.resolve(params);\n          }\n        };\n        fakeCrmApi = {\n          click2dial: function click2dial(params) {\n            return fakeInteractionApi.click2dial(params);\n          },\n          suggestedNumbers: function suggestedNumbers(params) {\n            return params;\n          }\n        };\n        if ($window.Five9 == null) {\n          $window.Five9 = {};\n        }\n        if ($window.f9softphone == null) {\n          $window.f9softphone = {\n            runtime: {\n              id: 'fake-five9-softphone-extension',\n              version: 'test'\n            }\n          };\n        }\n        $window.Five9.CrmSdk = {\n          crmApi: function crmApi() {\n            return fakeCrmApi;\n          },\n          interactionApi: function interactionApi() {\n            return fakeInteractionApi;\n          }\n        };\n        return {\n          crmApi: fakeCrmApi,\n          interactionApi: fakeInteractionApi\n        };\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EnterpriseSSOWizardService\n   * @description\n   * Contains state info reflecting the name and navigation for the enterprise setup setup flow.\n   * This factory is used by the breadcrumb, setup animations, and the enterprise setup flow.\n   * All state information passed into 'setup' router resolves originates here.\n   */\n  angular.module('services').factory('EnterpriseSSOWizardService', function ($log, $state) {\n    'ngInject';\n\n    /**\n     * @ngdoc param\n     * @name EnterpriseSSOWizardService.enterpriseSSOStates\n     * @propertyOf services.factory:EnterpriseSSOWizardService\n     * @description\n     * all wizard state names and navigation info must be entered in this array in order\n     * next/prev/skip states loaded in the router\n     * @returns {array} objects w/ state name and next, prev, skip state strings\n     */\n    var enterpriseSSOStates;\n    enterpriseSSOStates = [{\n      name: 'setup-enterprise.registration',\n      nextState: 'setup-enterprise.complete',\n      prevState: null,\n      skipState: 'account.login'\n    }, {\n      name: 'setup-enterprise.complete',\n      nextState: 'enterprise.dashboard',\n      prevState: null,\n      skipState: null\n    }];\n    return {\n      /**\n       * @ngdoc function\n       * @name EnterpriseSSOWizardService.getStates\n       * @methodOf services.factory:EnterpriseSSOWizardService\n       * @description\n       * retrieves states in enterpriseSSOStates array\n       * @returns {array} all states in onboarding flow\n       */\n      getStates: function getStates() {\n        return enterpriseSSOStates;\n      },\n      /**\n       * @ngdoc function\n       * @name EnterpriseSSOWizardService.getState\n       * @methodOf services.factory:EnterpriseSSOWizardService\n       * @param {string} stateName the state name of the navigation info to retrieve\n       * @description\n       * retrieves a state info object from enterpriseSSOStates array\n       * @returns {object} state information for navigation\n       */\n      getState: function getState(stateName) {\n        return _.find(enterpriseSSOStates, {\n          name: stateName\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name EnterpriseSSOWizardService.getStateNames\n       * @methodOf services.factory:EnterpriseSSOWizardService\n       * @description\n       * retrieves a list of all state names in setup flow\n       * @returns {array} all state names in setup flow\n       */\n      getStateNames: function getStateNames() {\n        return _.map(enterpriseSSOStates, function (state) {\n          return state.name;\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EnterpriseSetupWizardService\n   * @description\n   * Contains state info reflecting the name and navigation for the enterprise setup setup flow.\n   * This factory is used by the breadcrumb, setup animations, and the enterprise setup flow.\n   * All state information passed into 'setup' router resolves originates here.\n   */\n  angular.module('services').factory('EnterpriseSetupWizardService', function ($log, $state) {\n    'ngInject';\n\n    /**\n     * @ngdoc param\n     * @name EnterpriseSetupWizardService.enterpriseSetupStates\n     * @propertyOf services.factory:EnterpriseSetupWizardService\n     * @description\n     * all wizard state names and navigation info must be entered in this array in order\n     * next/prev/skip states loaded in the router\n     * @returns {array} objects w/ state name and next, prev, skip state strings\n     */\n    var enterpriseSetupStates;\n    enterpriseSetupStates = [{\n      name: 'setup-enterprise.dr-registration',\n      nextState: 'setup-enterprise.choose-devices',\n      prevState: 'setup-enterprise.welcome',\n      skipState: 'account.login'\n    }, {\n      name: 'setup-enterprise.choose-devices',\n      nextState: 'setup-enterprise.practice',\n      prevState: 'setup-enterprise.dr-registration',\n      skipState: null\n    }, {\n      name: 'setup-enterprise.practice',\n      nextState: 'setup-enterprise.agreements',\n      prevState: 'setup-enterprise.choose-devices',\n      skipState: null\n    }, {\n      name: 'setup-enterprise.agreements',\n      nextState: 'enterprise.dashboard',\n      prevState: 'setup-enterprise.practice',\n      skipState: null\n    }, {\n      name: 'setup-enterprise.learn-revenue',\n      nextState: 'setup-enterprise.offering',\n      prevState: 'setup-enterprise.practice',\n      skipState: null\n    }, {\n      name: 'setup-enterprise.offering',\n      nextState: 'setup-enterprise.biller',\n      prevState: null,\n      skipState: null\n    }, {\n      name: 'setup-enterprise.biller',\n      nextState: 'setup-enterprise.payment-method',\n      prevState: 'setup-enterprise.learn-revenue',\n      skipState: 'setup-enterprise.payment-method'\n    }, {\n      name: 'setup-enterprise.payment-method',\n      nextState: 'setup-enterprise.credit-card',\n      prevState: 'setup-enterprise.biller',\n      skipState: 'setup-enterprise.bank-account'\n    }, {\n      name: 'setup-enterprise.bank-account',\n      nextState: 'setup-enterprise.complete',\n      prevState: 'setup-enterprise.payment-method',\n      skipState: 'setup-enterprise.credit-card'\n    }, {\n      name: 'setup-enterprise.credit-card',\n      nextState: 'setup-enterprise.complete',\n      prevState: 'setup-enterprise.payment-method',\n      skipState: 'setup-enterprise.complete'\n    }, {\n      name: 'setup-enterprise.complete',\n      nextState: 'enterprise.dashboard',\n      prevState: null,\n      skipState: null\n    }];\n    return {\n      /**\n       * @ngdoc function\n       * @name EnterpriseSetupWizardService.getStates\n       * @methodOf services.factory:EnterpriseSetupWizardService\n       * @description\n       * retrieves states in enterpriseSetupStates array\n       * @returns {array} all states in onboarding flow\n       */\n      getStates: function getStates() {\n        return enterpriseSetupStates;\n      },\n      /**\n       * @ngdoc function\n       * @name EnterpriseSetupWizardService.getState\n       * @methodOf services.factory:EnterpriseSetupWizardService\n       * @param {string} stateName the state name of the navigation info to retrieve\n       * @description\n       * retrieves a state info object from enterpriseSetupStates array\n       * @returns {object} state information for navigation\n       */\n      getState: function getState(stateName) {\n        return _.find(enterpriseSetupStates, {\n          name: stateName\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name EnterpriseSetupWizardService.getStateNames\n       * @methodOf services.factory:EnterpriseSetupWizardService\n       * @description\n       * retrieves a list of all state names in setup flow\n       * @returns {array} all state names in setup flow\n       */\n      getStateNames: function getStateNames() {\n        return _.map(enterpriseSetupStates, function (state) {\n          return state.name;\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EnterpriseInvitationSetupWizardService\n   * @description\n   * Contains state info reflecting the name and navigation for the enterprise setup setup flow.\n   * This factory is used by the breadcrumb, setup animations, and the enterprise setup flow.\n   * All state information passed into 'setup' router resolves originates here.\n   */\n  angular.module('services').factory('EnterpriseInvitationSetupWizardService', function ($log, $state) {\n    'ngInject';\n\n    /**\n     * @ngdoc param\n     * @name EnterpriseInvitationSetupWizardService.enterpriseInvitationSetupStates\n     * @propertyOf services.factory:EnterpriseInvitationSetupWizardService\n     * @description\n     * all wizard state names and navigation info must be entered in this array in order\n     * next/prev/skip states loaded in the router\n     * @returns {array} objects w/ state name and next, prev, skip state strings\n     */\n    var enterpriseInvitationSetupStates;\n    enterpriseInvitationSetupStates = [{\n      name: 'setup-enterprise.registration',\n      nextState: 'setup-enterprise.complete',\n      prevState: null,\n      skipState: 'account.login'\n    }, {\n      name: 'setup-enterprise.complete',\n      nextState: 'enterprise.dashboard',\n      prevState: null,\n      skipState: null\n    }];\n    return {\n      /**\n       * @ngdoc function\n       * @name EnterpriseInvitationSetupWizardService.getStates\n       * @methodOf services.factory:EnterpriseInvitationSetupWizardService\n       * @description\n       * retrieves states in enterpriseInvitationSetupStates array\n       * @returns {array} all states in onboarding flow\n       */\n      getStates: function getStates() {\n        return enterpriseInvitationSetupStates;\n      },\n      /**\n       * @ngdoc function\n       * @name EnterpriseInvitationSetupWizardService.getState\n       * @methodOf services.factory:EnterpriseInvitationSetupWizardService\n       * @param {string} stateName the state name of the navigation info to retrieve\n       * @description\n       * retrieves a state info object from enterpriseInvitationSetupStates array\n       * @returns {object} state information for navigation\n       */\n      getState: function getState(stateName) {\n        return _.find(enterpriseInvitationSetupStates, {\n          name: stateName\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name EnterpriseInvitationSetupWizardService.getStateNames\n       * @methodOf services.factory:EnterpriseInvitationSetupWizardService\n       * @description\n       * retrieves a list of all state names in setup flow\n       * @returns {array} all state names in setup flow\n       */\n      getStateNames: function getStateNames() {\n        return _.map(enterpriseInvitationSetupStates, function (state) {\n          return state.name;\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('EhrTypesService', function ($log, env, Restangular, CacheFactory, EhrTypeCredentialFieldOrders) {\n    'ngInject';\n\n    var ehrTypesService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    ehrTypesService = restangular.all('ehr_types');\n    return {\n      search: function search(query) {\n        return ehrTypesService.customGET('search', {\n          query: query,\n          limit: 20\n        });\n      },\n      getCredentialFields: function getCredentialFields(ehrTypeId) {\n        return ehrTypesService.one('', ehrTypeId).one('ehr_type_credential_fields').get();\n      },\n      orderFields: function orderFields(fields, ehrType) {\n        var order, sortedFields;\n        if (!_.isEmpty(EhrTypeCredentialFieldOrders[ehrType])) {\n          order = EhrTypeCredentialFieldOrders[ehrType];\n          sortedFields = _.sortBy(fields, function (field) {\n            return _.indexOf(order, field.ehr_credential_field_type.field_name);\n          });\n          return sortedFields;\n        }\n        return fields;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('EhrIntegrationService', function ($log, env, Restangular, CacheFactory, EhrTypeCredentialFieldOrders) {\n    'ngInject';\n\n    var ehrIntegrationService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    ehrIntegrationService = restangular.all('ehr');\n    return {\n      storeCredentials: function storeCredentials(body) {\n        return ehrIntegrationService.one('credentials').one('store').customPOST(body);\n      },\n      getIntegrationStatus: function getIntegrationStatus(enterpriseCustomerId) {\n        return ehrIntegrationService.one('enterprise_customers', enterpriseCustomerId).one('integration_status').get();\n      },\n      storeOfficeCredentials: function storeOfficeCredentials(body) {\n        return ehrIntegrationService.one('office_credentials').one('store').customPOST(body);\n      },\n      getIntegrationStatusForOffice: function getIntegrationStatusForOffice(enterpriseCustomerId, officeId) {\n        return ehrIntegrationService.one('enterprise_customers', enterpriseCustomerId).one('office_integration_status', officeId).get();\n      },\n      getEllkayChargeStatus: function getEllkayChargeStatus(consumerClaimIds) {\n        var customRestangular;\n        // Create a new Restangular instance without the response interceptor becasue we want to return it all, not data.data\n        customRestangular = Restangular.withConfig(function (Configurer) {\n          return Configurer.setBaseUrl(env.services.baseUrl);\n        });\n        return customRestangular.all('ehr').one('ellkay').one('get-charge-status').customPOST({\n          consumerClaimIds: consumerClaimIds\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EUserProfileService\n   * @description\n   * For RESTful interaction w/ our User (enterprise wearers) apis.\n   */\n  angular.module('services').factory('EUserProfilesService', function (env, $log, $state, $q, DataStoreService, Restangular, CacheFactory, UserModel, UserProfileModel, EUserProfileFilterService, AdminService, $rootScope) {\n    'ngInject';\n\n    var eUserProfilesService, masqueradingParams, previousGetAllRequest, restangular, ret, sortedIdsRequest;\n    $log = $log.getInstance('EUserProfilesService');\n    //  eUseProfilesCache = CacheFactory('eUseProfilesCache', {\n    //    maxAge: 30 * 60 * 1000, # Items added to this cache expire after 30 minutes.\n    //    cacheFlushInterval: 30 * 60 * 1000, # This cache will clear itself every 30 minutes.\n    //    deleteOnExpire: 'aggressive', # Items will be deleted from this cache right when they expire.\n    //    storageMode: 'memory' # IMPORTANT\n    //  })\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      //    Configurer.defaultHttpFields.cache = eUseProfilesCache\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        var ref;\n        $log.log('data, operation, what, url, response, deferred', data, operation, what, url, response, deferred);\n        // Invalidate the cache when a 'put', 'post' and 'delete' is performed to update the cached version.\n        //      if (operation == 'put' || operation == 'post' || operation == 'delete')\n        //        $log.log \"clearing cache on #{operation} request\"\n        //        @clearServiceCache()\n        if (operation === 'get') {\n          if (response.headers('X-Real-Count')) {\n            // update total count in FilterService\n            EUserProfileFilterService.setCount(response.headers('X-Real-Count'));\n            $log.log('x-count', response);\n            return response;\n          }\n        }\n        // extend user_profiles with UserProfileModel\n        if ((ref = data.data) != null ? ref.user_profile : void 0) {\n          data.data.user_profile = angular.extend(data.data.user_profile, UserProfileModel);\n          if (data.data.current_account) {\n            data.data.current_account = angular.extend(data.data.current_account, UserProfileModel);\n          }\n          _.each(data.data.authorized_accounts, function (account) {\n            return account = angular.extend(account, UserProfileModel);\n          });\n        } else {\n          return data.data;\n        }\n        if (data.data.current_account) {\n          data.data.current_account = angular.extend(data.data.current_account, UserProfileModel);\n          // normalize current_account.device user profile reminders\n          data.data.current_account.normalizeMedicationReminderAlarmCronCommands();\n          data.data.current_account.normalizeMoodReminderCronCommand();\n        }\n        return data.data;\n      });\n    });\n    eUserProfilesService = restangular.all('enterprise_customers');\n    // used to cancel any previous inflight requests to get all and sorted ids\n    previousGetAllRequest = $q.defer();\n    // we await this request before getting the next/prev patient for navigation links\n    sortedIdsRequest = $q.defer();\n    if (EUserProfileFilterService.hasIds()) {\n      // in the case of a page refresh the sorted ids will be available\n      sortedIdsRequest.resolve();\n    }\n    masqueradingParams = function masqueradingParams() {\n      var masqueradingUser;\n      masqueradingUser = AdminService.getMasqueradingUser();\n      if (masqueradingUser) {\n        return {\n          _masquerading_user: masqueradingUser.auth0_user_id\n        };\n      } else {\n        return {};\n      }\n    };\n    ret = {\n      get: function get(enterpriseCustomerId, userProfileId, filters) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', userProfileId).get(filters);\n      },\n      lookupByPhone: function lookupByPhone(enterpriseCustomerId, phone) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles').one('lookup_by_phone').get(angular.extend({\n          phone: phone\n        }, masqueradingParams()));\n      },\n      searchCandidates: function searchCandidates(enterpriseCustomerId, query) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles').one('five9_candidates').post({\n          query: query\n        }, masqueradingParams());\n      },\n      getNext: function () {\n        var _getNext = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId, patientUserProfileId) {\n          var filters, id, masqUser;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return sortedIdsRequest.promise;\n              case 2:\n                filters = EUserProfileFilterService.getFilter();\n                masqUser = AdminService.getMasqueradingUser();\n                if (masqUser) {\n                  filters._masquerading_user = masqUser.auth0_user_id;\n                }\n                id = EUserProfileFilterService.getNextId(enterpriseCustomerId, patientUserProfileId, true);\n                return _context.abrupt(\"return\", eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', id).get(filters));\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function getNext(_x, _x2) {\n          return _getNext.apply(this, arguments);\n        }\n        return getNext;\n      }(),\n      getPrev: function () {\n        var _getPrev = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(enterpriseCustomerId, patientUserProfileId) {\n          var filters, id, masqUser;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return sortedIdsRequest.promise;\n              case 2:\n                filters = EUserProfileFilterService.getFilter();\n                masqUser = AdminService.getMasqueradingUser();\n                if (masqUser) {\n                  filters._masquerading_user = masqUser.auth0_user_id;\n                }\n                id = EUserProfileFilterService.getNextId(enterpriseCustomerId, patientUserProfileId, false);\n                return _context2.abrupt(\"return\", eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', id).get(filters));\n              case 7:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2);\n        }));\n        function getPrev(_x3, _x4) {\n          return _getPrev.apply(this, arguments);\n        }\n        return getPrev;\n      }(),\n      getWatchData: function getWatchData(enterpriseCustomerId, userProfileId, filters) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', userProfileId).one('watch_data').get(filters);\n      },\n      updateSortedPatientIds: function () {\n        var _updateSortedPatientIds = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(enterpriseCustomerId) {\n          var append,\n            filter,\n            sortedIds,\n            _args3 = arguments;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                append = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : null;\n                sortedIdsRequest = $q.defer();\n                filter = angular.copy(EUserProfileFilterService.getFilter());\n                filter.idsOnly = true;\n                _context3.next = 6;\n                return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles').get(filter);\n              case 6:\n                sortedIds = _context3.sent;\n                EUserProfileFilterService.setSortedIds(sortedIds.data.data, append);\n                return _context3.abrupt(\"return\", sortedIdsRequest.resolve());\n              case 9:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3);\n        }));\n        function updateSortedPatientIds(_x5) {\n          return _updateSortedPatientIds.apply(this, arguments);\n        }\n        return updateSortedPatientIds;\n      }(),\n      // SetFilter set to true only when the filter to be persisted in localstorage\n      getAllPatients: function getAllPatients(enterpriseCustomerId, filters, setFilter) {\n        var masqUser;\n        if (!setFilter) {\n          setFilter = false;\n        }\n        masqUser = AdminService.getMasqueradingUser();\n        if (!filters) {\n          filters = EUserProfileFilterService.getFilter();\n        } else {\n          EUserProfileFilterService.setFilter(filters);\n        }\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        if (_.isArray(filters._sort)) {\n          filters._sort = _.map(filters._sort, function (s) {\n            return JSON.stringify(s);\n          }).join('|');\n        }\n        // Do not await this function!\n        // We update the list of sorted patient ids using the latest filter\n        if ((filters != null ? filters._packageForDownload : void 0) !== true && setFilter) {\n          this.updateSortedPatientIds(enterpriseCustomerId);\n        }\n        previousGetAllRequest.resolve();\n        previousGetAllRequest = $q.defer();\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles').withHttpConfig({\n          timeout: previousGetAllRequest.promise\n        }).get(filters);\n      },\n      getDeactivatedPatients: function getDeactivatedPatients(enterpriseCustomerId, filters) {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        return eUserProfilesService.one('', enterpriseCustomerId).one('deactivated_profiles').get(filters);\n      },\n      getPatientDashboard: function getPatientDashboard(enterpriseCustomerId, providerProfileId, filters) {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', providerProfileId).one('patient_dashboard').get(filters);\n      },\n      getDeactivationDashboard: function getDeactivationDashboard(enterpriseCustomerId, providerProfileId, filters) {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', providerProfileId).one('deactivation_dashboard').get(filters);\n      },\n      getAllAdmins: function getAllAdmins(enterpriseCustomerId, queryString) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profile_admins').customGETLIST('', queryString);\n      },\n      getAllAdminsScopedByOffice: function getAllAdminsScopedByOffice(enterpriseCustomerId, queryString) {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          if (!queryString) {\n            queryString = {};\n          }\n          queryString._masquerading_user = masqUser.auth0_user_id;\n        }\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profile_admins_scoped').customGETLIST('', queryString);\n      },\n      getDiagnosisCodes: function getDiagnosisCodes(userProfile) {\n        var ref, ref1, ref2, values;\n        if (!(userProfile != null ? (ref = userProfile.enterprise_chart) != null ? ref.id : void 0 : void 0)) {\n          throw new Error('getDiagnosisCodes: userProfile.enterprise_chart missing');\n        } else if (((ref1 = userProfile.enterprise_chart) != null ? (ref2 = ref1.diagnosis) != null ? ref2.codes : void 0 : void 0) != null) {\n          values = _.map(userProfile.enterprise_chart.diagnosis.codes, function (code) {\n            return code.code;\n          });\n          return values.join(', ');\n        } else {\n          return 'Diagnosis missing';\n        }\n      },\n      put: function put(enterpriseCustomerId, userProfile) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', userProfile.id).customPUT(userProfile);\n      },\n      // Send only the changed fields to the existing PUT endpoint.\n      // The backend (Sequelize Model.update) already supports partial updates —\n      // only columns present in the payload are SET; omitted columns are untouched.\n      patch: function patch(enterpriseCustomerId, userProfileId, changedFields) {\n        return eUserProfilesService.one('', enterpriseCustomerId).one('user_profiles', userProfileId).customPUT(changedFields);\n      },\n      updateTimezone: function () {\n        var _updateTimezone = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(userProfile) {\n          var currentTimezone;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                currentTimezone = moment.tz.guess();\n                if (!((userProfile != null ? userProfile.timezone : void 0) !== currentTimezone && !AdminService.isMasquerading())) {\n                  _context4.next = 7;\n                  break;\n                }\n                $log.log('updating userProfile.timezone', currentTimezone);\n                userProfile.timezone = currentTimezone;\n                _context4.next = 6;\n                return this.patch(userProfile.enterprise_customer_id, userProfile.id, {\n                  timezone: currentTimezone\n                });\n              case 6:\n                return _context4.abrupt(\"return\", _context4.sent);\n              case 7:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this);\n        }));\n        function updateTimezone(_x6) {\n          return _updateTimezone.apply(this, arguments);\n        }\n        return updateTimezone;\n      }()\n    };\n    $rootScope.$on('update_sorted_patient_ids', function (event, enterpriseCustomerId, nextPage) {\n      var filter;\n      sortedIdsRequest = $q.defer();\n      filter = EUserProfileFilterService.getFilter();\n      filter._page += nextPage != null ? nextPage : {\n        1: -1\n      };\n      EUserProfileFilterService.setFilter(filter);\n      return ret.updateSortedPatientIds(enterpriseCustomerId, nextPage);\n    });\n    return ret;\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EUserProfileFilterService\n   * @description\n   * Service for managing and manipulating the filter and paging used with EUserProfileService\n   * local storage used to manage state of filter and current patient\n   * helper functions getPagingString, getFilterString\n   */\n  angular.module('services').factory('EUserProfileFilterService', function ($log, Auth0Store, AdminService, $rootScope) {\n    'ngInject';\n\n    var count, filter, ids, index, state, stateKey;\n    $log = $log.getInstance('EUserProfileFilterService');\n    stateKey = 'E_USER_PROFILE_FILTER_STATE';\n    state = Auth0Store.get(stateKey);\n    $log.log('state loaded', state);\n    filter = state ? state.filter : {};\n    index = state ? state.index : 0;\n    count = state ? state.count : 0;\n    ids = state ? state.ids : [];\n    return {\n      // Since we are allowing the user to add RPM time while paging through a list of patients sorted by total RPM time\n      // this can lead to a jarring experience where the list changes as you traverse it!\n      // So we are going to retrieve the list of patient ids in the order they are currently\n      // and we use those ids to navigate to Next/Prev patient\n      /*\n      flattens hierarchical data while preserving depth information. It removes children,\n      adds a 'level' property, and recursively combines flattened child items.\n      */\n      flattenOptions: function flattenOptions(data) {\n        var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n        var flatData, _flatten;\n        _flatten = function flatten(data, level) {\n          var flatData;\n          flatData = [];\n          angular.forEach(data, function (item) {\n            var childItems, newItem;\n            newItem = angular.copy(item);\n            delete newItem.children; // Remove children before pushing to flatData\n            newItem.level = level;\n            flatData.push(newItem);\n            if (angular.isArray(item.children)) {\n              childItems = _flatten(item.children, level + 1);\n              return flatData = flatData.concat(childItems);\n            }\n          });\n          return flatData;\n        };\n        flatData = _flatten(data, level);\n        return flatData;\n      },\n      updateState: function updateState() {\n        var updateIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n        var ref;\n        Auth0Store.set(stateKey, {\n          filter: filter,\n          index: index,\n          count: count,\n          ids: updateIds ? ids : (ref = Auth0Store.get(stateKey)) != null ? ref.ids : void 0\n        });\n        return $log.log('updateState', Auth0Store.get(stateKey));\n      },\n      setFilter: function setFilter(f) {\n        $log.log('setFilter', f);\n        filter = f;\n        return this.updateState();\n      },\n      getFilter: function getFilter() {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filter._masquerading_user = masqUser.auth0_user_id;\n        }\n        $log.log('getFilter', filter);\n        return filter;\n      },\n      setSortedIds: function setSortedIds(i) {\n        var appendToEnd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        $log.log('setSortedIds', i.length);\n        if (appendToEnd === !null) {\n          // we union here to explicitly get unique ids in case the next page of sorted ids has changed since the initial call\n          ids = appendToEnd ? _.union(ids, i) : _.union(i, ids);\n        } else {\n          ids = i;\n        }\n        return this.updateState(true);\n      },\n      setCount: function setCount(c) {\n        $log.log('setCount', c);\n        count = parseInt(c);\n        return this.updateState();\n      },\n      getCount: function getCount() {\n        return count;\n      },\n      setIndex: function setIndex(i, isPagedIndex) {\n        // if `isPagedIndex` is true account for list view paging when setting the index\n        if (isPagedIndex && filter._page && filter._perPage) {\n          index = (filter._page - 1) * filter._perPage + i;\n        } else {\n          index = i;\n        }\n        return this.updateState();\n      },\n      getIndex: function getIndex() {\n        return index;\n      },\n      hasNext: function hasNext() {\n        return index < count - 1 && ids;\n      },\n      hasPrev: function hasPrev() {\n        return index && count && ids;\n      },\n      hasIds: function hasIds() {\n        return !_.isEmpty(ids);\n      },\n      getNextId: function getNextId(enterpriseCustomerId, currentId, isNext) {\n        var buffer, currentIndex, nextIndex;\n        // fetch the next page of sorted ids early?\n        buffer = 3;\n        currentIndex = ids.indexOf(currentId);\n        if (currentIndex < 0) {\n          // this should not happen so we will just return\n          $log.error(\"currentId \".concat(currentId, \" not found in the sorted ids\"));\n          $log.log('current state', Auth0Store.get(stateKey));\n          return;\n        }\n        nextIndex = currentIndex + (isNext ? 1 : -1);\n        if (isNext && nextIndex >= ids.length - buffer && count > ids.length) {\n          $rootScope.$broadcast('update_sorted_patient_ids', enterpriseCustomerId, isNext);\n        }\n        if (!isNext && nextIndex > 0 && nextIndex <= buffer) {\n          $rootScope.$broadcast('update_sorted_patient_ids', enterpriseCustomerId, isNext);\n        }\n        if (0 <= nextIndex && nextIndex < ids.length) {\n          return ids[nextIndex];\n        }\n      },\n      getPagingString: function getPagingString() {\n        if (count) {\n          return \"\".concat(index + 1, \" of \").concat(count, \" patients\");\n        }\n      },\n      clearState: function clearState() {\n        $log.log('clearState');\n        filter = {};\n        index = 0;\n        count = 0;\n        ids = [];\n        return Auth0Store.remove(stateKey);\n      },\n      hasFilters: function hasFilters() {\n        var filterWithoutNulls, filterWithoutProperties, propertiesToOmit;\n        propertiesToOmit = ['_page', '_perPage', '_sort', '_sortDir', '_sortField', 'provider_user_profile_id', '_cacheBuster', '_packageForDownload', '$patient_reports.reporting_period_id$', 'services', '_service'];\n        filterWithoutProperties = _.omit(filter, propertiesToOmit);\n        // Omit null values from the filter object\n        filterWithoutNulls = _.omitBy(filterWithoutProperties, _.isNull);\n        return !_.isEmpty(filterWithoutNulls);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ETemplateService\n   * @description\n   * For RESTful interaction w/ our templates notes in CCM and RPM\n   */\n  angular.module('enterprise').service('ETemplateService', function (env, $log, $state, Restangular, ECustomersService) {\n    'ngInject';\n\n    $log = $log.getInstance('ETemplateService');\n    return {\n      // Update Component Item\n      onUpdateComponentItem: function () {\n        var _onUpdateComponentItem = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomer, updatedTemplateComponentData) {\n          var error, updatedECustomer;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.prev = 0;\n                $log.log('ETemplateService:updatedTemplateComponentData', updatedTemplateComponentData);\n                enterpriseCustomer.observation_report_template = updatedTemplateComponentData.model;\n                _context.next = 5;\n                return ECustomersService.put(enterpriseCustomer);\n              case 5:\n                updatedECustomer = _context.sent;\n                return _context.abrupt(\"return\", enterpriseCustomer = updatedECustomer[1][0]);\n              case 9:\n                _context.prev = 9;\n                _context.t0 = _context[\"catch\"](0);\n                error = _context.t0;\n                $log.error('Error in onUpdateComponentItem:', error);\n                throw error;\n              case 14:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, null, [[0, 9]]);\n        }));\n        function onUpdateComponentItem(_x, _x2) {\n          return _onUpdateComponentItem.apply(this, arguments);\n        }\n        return onUpdateComponentItem;\n      }(),\n      // Create Component Item\n      onCreateComponentItem: function () {\n        var _onCreateComponentItem = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(enterpriseCustomer, payload) {\n          var error, updatedECustomer;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.prev = 0;\n                $log.log('ETemplateService:onCreateComponentItem payload', payload);\n                enterpriseCustomer.observation_report_template[payload.model.itemKey.toLowerCase()].items.push(payload.model.newComponentItem);\n                _context2.next = 5;\n                return ECustomersService.put(enterpriseCustomer);\n              case 5:\n                updatedECustomer = _context2.sent;\n                return _context2.abrupt(\"return\", enterpriseCustomer = updatedECustomer[1][0]);\n              case 9:\n                _context2.prev = 9;\n                _context2.t0 = _context2[\"catch\"](0);\n                error = _context2.t0;\n                $log.error('Error in onCreateComponentItem:', error);\n                throw error;\n              case 14:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, null, [[0, 9]]);\n        }));\n        function onCreateComponentItem(_x3, _x4) {\n          return _onCreateComponentItem.apply(this, arguments);\n        }\n        return onCreateComponentItem;\n      }(),\n      // Delete Component Item\n      onDeleteComponentItem: function () {\n        var _onDeleteComponentItem = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(enterpriseCustomer, payload) {\n          var error, updatedECustomer;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                _context3.prev = 0;\n                $log.log('ETemplateService:onDeleteComponentItem payload', payload);\n                enterpriseCustomer.observation_report_template[payload.model.itemKey.toLowerCase()].items.splice(payload.model.nestedItemIndex, 1);\n                _context3.next = 5;\n                return ECustomersService.put(enterpriseCustomer);\n              case 5:\n                updatedECustomer = _context3.sent;\n                return _context3.abrupt(\"return\", enterpriseCustomer = updatedECustomer[1][0]);\n              case 9:\n                _context3.prev = 9;\n                _context3.t0 = _context3[\"catch\"](0);\n                error = _context3.t0;\n                $log.error('Error in onDeleteComponentItem:', error);\n                throw error;\n              case 14:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, null, [[0, 9]]);\n        }));\n        function onDeleteComponentItem(_x5, _x6) {\n          return _onDeleteComponentItem.apply(this, arguments);\n        }\n        return onDeleteComponentItem;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ESelectedPatientServiceService\n   * @description\n   * Service for managing the currently selected patient service for the portal\n   */\n  angular.module('services').factory('ESelectedPatientServiceService', function ($log, PATIENT_SERVICES, PatientServicesService) {\n    'ngInject';\n\n    var availablePatientServices, selectedPatientService, selectedPatientServiceName;\n    $log = $log.getInstance('ESelectedPatientServiceService');\n    availablePatientServices = {};\n    selectedPatientServiceName = '';\n    selectedPatientService = null;\n    return {\n      updatePatientService: function () {\n        var _updatePatientService = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId) {\n          var allPatientServices;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return PatientServicesService.getAll(enterpriseCustomerId);\n              case 2:\n                allPatientServices = _context.sent;\n                availablePatientServices = _.reduce(allPatientServices, function (res, s) {\n                  res[s.name] = s;\n                  return res;\n                }, {});\n                // Default patient service - RPM\n                this.selectPatientService(PATIENT_SERVICES.RPM);\n                $log.log('ESelectedPatientServiceService.availablePatientServices', availablePatientServices);\n                return _context.abrupt(\"return\", this.currentSelectedService());\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function updatePatientService(_x) {\n          return _updatePatientService.apply(this, arguments);\n        }\n        return updatePatientService;\n      }(),\n      currentSelectedService: function currentSelectedService() {\n        return selectedPatientService;\n      },\n      selectPatientService: function selectPatientService(serviceName) {\n        selectedPatientServiceName = serviceName;\n        selectedPatientService = availablePatientServices[serviceName];\n        return $log.log('ESelectedPatientServiceService.selectedPatientService', selectedPatientService);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EnterpriseRolesService\n   * @description\n   * For RESTful interaction w/ our RBAC Roles\n   */\n  angular.module('services').factory('EnterpriseRolesService', function (env, $log, $state, Restangular, CacheFactory) {\n    'ngInject';\n\n    var restangular, rolesService;\n    $log = $log.getInstance('EnterpriseRolesService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      //    Configurer.defaultHttpFields.cache = deviceTypeCache\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    rolesService = restangular.all('roles');\n    return {\n      getAll: function getAll() {\n        return rolesService.get('');\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('EProviderAlertSubscriptionsService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var eProviderAlertSubscriptionsService, restangular;\n    $log = $log.getInstance('EProviderAlertSubscriptionsService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data) {\n        return data.data;\n      });\n    });\n    eProviderAlertSubscriptionsService = restangular.all('');\n    return {\n      getAll: function getAll(enterpriseCustomerId) {\n        return eProviderAlertSubscriptionsService.one('enterprise_customers', enterpriseCustomerId).one('provider_alert_subscription').get();\n      },\n      post: function post(enterpriseCustomerId, providerAlertSubscription) {\n        return eProviderAlertSubscriptionsService.one('enterprise_customers', enterpriseCustomerId).one('provider_alert_subscription').customPOST(providerAlertSubscription);\n      },\n      get: function get(enterpriseCustomerId, providerAlertSubscriptionId) {\n        return eProviderAlertSubscriptionsService.one('enterprise_customers', enterpriseCustomerId).one('provider_alert_subscription', providerAlertSubscriptionId).get();\n      },\n      put: function put(enterpriseCustomerId, providerAlertSubscription) {\n        return eProviderAlertSubscriptionsService.one('enterprise_customers', enterpriseCustomerId).one('provider_alert_subscription', providerAlertSubscription.id).customPUT(providerAlertSubscription);\n      },\n      delete: function _delete(enterpriseCustomerId, providerAlertSubscriptionId) {\n        return eProviderAlertSubscriptionsService.one('enterprise_customers', enterpriseCustomerId).one('provider_alert_subscription', providerAlertSubscriptionId).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ObservationReportService\n   * @description\n   * For RESTful interaction w/ our ObservationReport apis.\n   */\n  angular.module('services').factory('EPhysicianLookupService', function (env, $log, $state, $q, $filter, Restangular) {\n    'ngInject';\n\n    var ePhysicianLookupService, restangular;\n    $log = $log.getInstance('EPhysicianLookupService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    ePhysicianLookupService = restangular.all('enterprise_customers');\n    return {\n      get: function get(enterpriseCustomerId, userProfileId, npi) {\n        return ePhysicianLookupService.one('', enterpriseCustomerId).one('user_profiles', userProfileId).one('physician_lookups').get({\n          physician_npi: npi\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EPatientToPolicyholderRelationService\n   * @description\n   * Service for patient to policyholder relationship types\n   * @example\n  <pre>\n    this.ptprTypes = EPatientToPolicyholderRelationService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('EPatientToPolicyholderRelationService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var ptprTypeService, ptprTypesCache, restangular;\n    ptprTypesCache = CacheFactory('EPatientToPolicyholderRelationServiceCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = ptprTypesCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    ptprTypeService = restangular.all('patient_to_policyholder_relationships');\n    return {\n      /**\n       * @ngdoc function\n       * @name EPatientToPolicyholderRelationService.getAll\n       * @methodOf services.factory:EPatientToPolicyholderRelationService\n       * @description\n       * Gets all patient to policyholder relationship types\n       * @returns {array} Patient to policyholder relationship types\n       */\n      getAll: function getAll() {\n        return ptprTypeService.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EPatientSubscriptionHelperService\n   * @description\n   * Helper methods for checking dates and date periods against a patient's active subscription\n   */\n  angular.module('services').factory('EPatientSubscriptionHelperService', function ($log, $q, $translate) {\n    'ngInject';\n\n    var MAX_DAYS, TOTAL_BILLING_PERIOD_DAYS;\n    $log = $log.getInstance('EPatientSubscriptionHelperService');\n    // If the patient is traveling, hospitalized, or in rehab for less than 15 days\n    // in a billing cycle, they do NOT need to be deactivated\n    // Patients must have access to their medical devices for at least 16 days in the\n    // 30 day billing cycle in order to meet billing requirements\n    MAX_DAYS = 15;\n    // Total number of days in a billing period\n    TOTAL_BILLING_PERIOD_DAYS = 30;\n    return {\n      /**\n       * All the functions assume the params are Moment dates (coming from daterangepicker)\n       * That is why this function converts the incoming dates to DateTime\n       */\n      convertMomentDateRange: function convertMomentDateRange(jsStartDate, jsEndDate) {\n        var endDate, startDate;\n        startDate = luxon.DateTime.fromJSDate(jsStartDate.toDate());\n        endDate = luxon.DateTime.fromJSDate(jsEndDate.toDate());\n        return {\n          startDate: startDate,\n          endDate: endDate\n        };\n      },\n      convertSubscriptionPeriod: function convertSubscriptionPeriod(patientSubscription) {\n        var currentPeriodEnd, currentPeriodStart;\n        currentPeriodStart = _.get(patientSubscription, 'current_period_started_at');\n        currentPeriodEnd = _.get(patientSubscription, 'current_period_ended_at');\n        return {\n          currentPeriodStart: luxon.DateTime.fromISO(currentPeriodStart),\n          currentPeriodEnd: luxon.DateTime.fromISO(currentPeriodEnd)\n        };\n      },\n      getDatepickerRangeInDays: function getDatepickerRangeInDays(jsStartDate, jsEndDate) {\n        var endDate, startDate;\n        if (!jsStartDate || !jsEndDate) {\n          return 0;\n        }\n        var _this$convertMomentDa = this.convertMomentDateRange(jsStartDate, jsEndDate);\n        startDate = _this$convertMomentDa.startDate;\n        endDate = _this$convertMomentDa.endDate;\n        return luxon.Interval.fromDateTimes(startDate, endDate).count('days');\n      },\n      isValidTimePeriod: function isValidTimePeriod(jsStartDate, jsEndDate) {\n        var numberOfDays;\n        numberOfDays = this.getDatepickerRangeInDays(jsStartDate, jsEndDate);\n        // Must be for more than 15 days\n        return numberOfDays > MAX_DAYS;\n      },\n      getNextBillingPeriod: function getNextBillingPeriod(currentPeriodEnd) {\n        var nextPeriodEnd, nextPeriodStart;\n        nextPeriodStart = currentPeriodEnd.plus({\n          days: 1\n        });\n        nextPeriodEnd = nextPeriodStart.plus({\n          days: 29\n        });\n        return {\n          nextPeriodStart: nextPeriodStart,\n          nextPeriodEnd: nextPeriodEnd\n        };\n      },\n      /**\n       * Get current billing period + every billing period 6 months out\n       */\n      getBillingPeriods: function getBillingPeriods(patientSubscription) {\n        var billingPeriod, billingPeriods, currentPeriodEnd, currentPeriodStart, months, nextPeriodEnd, nextPeriodStart;\n        if (_.isEmpty(patientSubscription)) {\n          return [];\n        }\n        var _this$convertSubscrip = this.convertSubscriptionPeriod(patientSubscription);\n        currentPeriodStart = _this$convertSubscrip.currentPeriodStart;\n        currentPeriodEnd = _this$convertSubscrip.currentPeriodEnd;\n        billingPeriods = [{\n          startDate: currentPeriodStart.toFormat('M/d/yyyy'),\n          endDate: currentPeriodEnd.toFormat('M/d/yyyy'),\n          dtStartDate: currentPeriodStart,\n          dtEndDate: currentPeriodEnd\n        }];\n        months = 1;\n        while (months <= 6) {\n          var _this$getNextBillingP = this.getNextBillingPeriod(currentPeriodEnd);\n          nextPeriodStart = _this$getNextBillingP.nextPeriodStart;\n          nextPeriodEnd = _this$getNextBillingP.nextPeriodEnd;\n          billingPeriod = {\n            startDate: nextPeriodStart.toFormat('M/d/yyyy'),\n            endDate: nextPeriodEnd.toFormat('M/d/yyyy'),\n            dtStartDate: nextPeriodStart,\n            dtEndDate: nextPeriodEnd\n          };\n          billingPeriods.push(billingPeriod);\n          months++;\n          currentPeriodEnd = nextPeriodEnd;\n        }\n        $log.log('billingPeriods', billingPeriods);\n        return billingPeriods;\n      },\n      canPauseInvoicing: function canPauseInvoicing(billingPeriods, jsStartDate, jsEndDate) {\n        var allowPause, billingPeriodOne, billingPeriodTwo, dateRange, numberOfDaysInBillingPeriodOne, numberOfDaysInBillingPeriodTwo, pauseEndDate, pausePeriod, pausePeriodBillingCycles, pausePeriodNumberOfDays, pauseStartDate;\n        dateRange = this.convertMomentDateRange(jsStartDate, jsEndDate);\n        pauseStartDate = luxon.DateTime.fromISO(dateRange.startDate);\n        pauseEndDate = luxon.DateTime.fromISO(dateRange.endDate);\n        pausePeriod = luxon.Interval.fromDateTimes(pauseStartDate, pauseEndDate);\n        pausePeriodNumberOfDays = pausePeriod.count('days');\n        // Patient does not need to be paused/deactivated if less than 15 days\n        if (pausePeriodNumberOfDays < MAX_DAYS) {\n          return false;\n        }\n        // If pause period is 30 days, the most it can span is 15 days in a billing period and 15 days\n        // in the following billing period, which means the patient will never be active in the majority\n        // of the days (16) within any billing period, so we should allow them to pause (deactivate)\n        if (pausePeriodNumberOfDays >= TOTAL_BILLING_PERIOD_DAYS) {\n          return true;\n        }\n        pausePeriodBillingCycles = [];\n        _.forEach(billingPeriods, function (billingPeriod) {\n          var billingInterval, dtEndDate, dtStartDate, overlaps;\n          dtStartDate = billingPeriod.dtStartDate;\n          dtEndDate = billingPeriod.dtEndDate;\n          billingInterval = luxon.Interval.fromDateTimes(dtStartDate, dtEndDate);\n          overlaps = pausePeriod.overlaps(billingInterval);\n          if (overlaps) {\n            return pausePeriodBillingCycles.push(billingPeriod);\n          }\n        });\n        // the pause period only landed in one billing cycle, and since we already know\n        // it is more than max days (15) then we will allow pausing\n        if (pausePeriodBillingCycles.length === 1) {\n          return true;\n        }\n        billingPeriodOne = pausePeriodBillingCycles[0];\n        billingPeriodTwo = pausePeriodBillingCycles[1];\n        numberOfDaysInBillingPeriodOne = luxon.Interval.fromDateTimes(pauseStartDate, billingPeriodOne.dtEndDate).count('days');\n        numberOfDaysInBillingPeriodTwo = luxon.Interval.fromDateTimes(billingPeriodTwo.dtStartDate, pauseEndDate).count('days');\n        allowPause = numberOfDaysInBillingPeriodOne > MAX_DAYS && numberOfDaysInBillingPeriodTwo > MAX_DAYS;\n        return allowPause;\n      },\n      filterBillingPeriodsByPausedPeriod: function filterBillingPeriodsByPausedPeriod(billingPeriods, jsStartDate, jsEndDate) {\n        var endDate, pausePeriod, periodsToShow, startDate;\n        var _this$convertMomentDa2 = this.convertMomentDateRange(jsStartDate, jsEndDate);\n        startDate = _this$convertMomentDa2.startDate;\n        endDate = _this$convertMomentDa2.endDate;\n        pausePeriod = luxon.Interval.fromDateTimes(startDate, endDate);\n        periodsToShow = [];\n        _.forEach(billingPeriods, function (billingPeriod) {\n          var billingInterval, dtEndDate, dtStartDate, overlaps;\n          dtStartDate = billingPeriod.dtStartDate;\n          dtEndDate = billingPeriod.dtEndDate;\n          billingInterval = luxon.Interval.fromDateTimes(dtStartDate, dtEndDate);\n          overlaps = pausePeriod.overlaps(billingInterval);\n          if (startDate > dtStartDate) {\n            periodsToShow.push(billingPeriod);\n          }\n          if (overlaps && endDate < dtEndDate) {\n            return periodsToShow.push(billingPeriod);\n          }\n        });\n        return periodsToShow;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ObservationReportService\n   * @description\n   * For RESTful interaction w/ our ObservationReport apis.\n   */\n  var indexOf = [].indexOf;\n  angular.module('services').factory('ObservationReportService', function (env, $log, $state, $q, $filter, Restangular, CacheFactory, NotificationsService, $rootScope, $window, LookerService, uuid4, GraphsToShow, IntercomService, ALLOWED_ROLES_BY, ReadingsShareService, GraphDataService) {\n    'ngInject';\n\n    var observationReportsService, restangular;\n    $log = $log.getInstance('ObservationReportService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    observationReportsService = restangular.all('enterprise_customers');\n    return {\n      /*\n      to bind to a variable in a service, connect the SERVICE to a variable in the controller\n      and reference the node in the ui. the variable in the service can mutate and the ui will\n      use two-way binding to track it\n       controller: this.observationReportService = ObservationReportService\n      view: vm.observationReportService.myVar\n      service: myVar: null\n      */\n      lookerDownloadStatus: '',\n      intervalIds: {},\n      pdfStatus: {},\n      pdfData: {},\n      new: function _new() {\n        var newObservationReport;\n        return newObservationReport = {\n          period_started_at: null,\n          period_ended_at: null,\n          patient_user_profile_id: null,\n          user_profile_id: null,\n          enterprise_customer_id: null,\n          details: null\n        };\n      },\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        var now, thisMonth, thisYear;\n        now = moment();\n        thisMonth = now.month() + 1; // moment.js = 0 based month\n        thisYear = now.year();\n        filters.current_cycle_month = thisMonth;\n        filters.current_cycle_year = thisYear;\n        return observationReportsService.one('', enterpriseCustomerId).one('observation_reports').get(filters);\n      },\n      get: function get(enterpriseCustomerId, observationReportId) {\n        return observationReportsService.one('', enterpriseCustomerId).one('observation_reports', observationReportId).get();\n      },\n      post: function post(enterpriseCustomerId, observationReport) {\n        return observationReportsService.one('', enterpriseCustomerId).one('observation_reports').customPOST(observationReport);\n      },\n      put: function put(enterpriseCustomerId, observationReport) {\n        return observationReportsService.one('', enterpriseCustomerId).one('observation_reports', observationReport.id).customPUT(observationReport);\n      },\n      postObservationReportNotes: function postObservationReportNotes(enterpriseCustomerId, observationReportId, notes) {\n        return observationReportsService.one('', enterpriseCustomerId).one('observation_reports', observationReportId).one('notes').customPOST({\n          notes: notes\n        });\n      },\n      getWithStateParams: function () {\n        var _getWithStateParams = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId, stateParams) {\n          var reports;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                if (!stateParams.observation_report_id) {\n                  _context.next = 4;\n                  break;\n                }\n                return _context.abrupt(\"return\", this.get(enterpriseCustomerId, stateParams.observation_report_id));\n              case 4:\n                if (!(stateParams.reporting_period_id && stateParams.user_profile_id)) {\n                  _context.next = 9;\n                  break;\n                }\n                _context.next = 7;\n                return observationReportsService.one('', enterpriseCustomerId).one('observation_reports').get({\n                  patient_user_profile_id: stateParams.user_profile_id,\n                  reporting_period_id: stateParams.reporting_period_id,\n                  '_limit': 1\n                });\n              case 7:\n                reports = _context.sent;\n                return _context.abrupt(\"return\", reports[0]);\n              case 9:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function getWithStateParams(_x, _x2) {\n          return _getWithStateParams.apply(this, arguments);\n        }\n        return getWithStateParams;\n      }(),\n      //  delete: (userProfileId) ->\n      //    observationReportsService.one('', userProfileId).remove()\n      getGraphTypesForDevices: function getGraphTypesForDevices(deviceTypes, profileDevices) {\n        var graphsToShow;\n        $log.log('getGraphTypesForDevices: profileDevices', profileDevices);\n        $log.log('getGraphTypesForDevices: deviceTypes', deviceTypes);\n        // angular.copy must be here to prevent updating the CONSTANT and re-referencing it\n        graphsToShow = angular.copy(GraphsToShow);\n        graphsToShow.forEach(function (graph) {\n          var device, deviceType;\n          $log.log('---graph', graph);\n          device = null;\n          deviceType = null;\n          if (graph.type === 'ADHERENCE' || graph.type === 'STEPS' || graph.type === 'HEART_RATE') {\n            device = _.find(profileDevices, {\n              legacy_device_type: 'PERS_WATCH'\n            });\n          } else {\n            if (graph.type === 'BLOOD_PRESSURE') {\n              deviceType = _.find(deviceTypes, {\n                category: 'BP_CUFF'\n              });\n            } else if (graph.type === 'WEIGHT') {\n              deviceType = _.find(deviceTypes, {\n                category: 'SCALE'\n              });\n            } else if (graph.type === 'AMBIENT_CHF') {\n              deviceType = _.find(deviceTypes, {\n                category: 'AMBIENT_CHF'\n              });\n            } else {\n              deviceType = _.find(deviceTypes, {\n                category: graph.type\n              });\n            }\n            $log.log('---graph.type', graph.type);\n            profileDevices.forEach(function (item) {\n              var deviceToFind, ref;\n              deviceToFind = (ref = item.device_type) != null ? ref.category : void 0;\n              if (deviceToFind === (deviceType != null ? deviceType.category : void 0)) {\n                return device = item;\n              }\n            });\n          }\n          $log.log('---device', device);\n          if (device != null ? device.serial : void 0) {\n            return graph.serial = device.serial;\n          }\n        });\n        $log.log('graphsToShow', graphsToShow);\n        return graphsToShow;\n      },\n      reactivationModalBody: function reactivationModalBody() {\n        return \"<b>\".concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.MODAL.BODY'), \"</b>\\n<ul><li>\").concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.MODAL.POINT_1'), \"</li>\\n<li>\").concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.MODAL.POINT_2'), \"</li>\\n<li>\").concat($filter('translate')('PORTAL.ENTERPRISE.PATIENT_REPORTING.MODAL.POINT_3'), \"</li></ul>\");\n      },\n      downloadPDF: function () {\n        var _downloadPDF = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(token, id, filters, enterpriseCustomerId, patientUserProfileId) {\n          var pdfFinal;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                _context2.next = 2;\n                return LookerService.downloadChartRPMPdf(enterpriseCustomerId, patientUserProfileId, token, id, filters);\n              case 2:\n                pdfFinal = _context2.sent;\n                $log.log('chartPdfFinal', pdfFinal);\n                this.lookerDownloadStatus = '';\n                return _context2.abrupt(\"return\", $window.location.href = pdfFinal.url);\n              case 6:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2, this);\n        }));\n        function downloadPDF(_x3, _x4, _x5, _x6, _x7) {\n          return _downloadPDF.apply(this, arguments);\n        }\n        return downloadPDF;\n      }(),\n      // Helper function to turn byte string into a byte array\n      base64ToArrayBuffer: function base64ToArrayBuffer(data) {\n        var ascii, binaryLen, binaryString, bytes, i;\n        binaryString = window.atob(data);\n        binaryLen = binaryString.length;\n        bytes = new Uint8Array(binaryLen);\n        i = 0;\n        while (i < binaryLen) {\n          ascii = binaryString.charCodeAt(i);\n          bytes[i] = ascii;\n          i++;\n        }\n        return bytes;\n      },\n      downloadCCMPDF: function () {\n        var _downloadCCMPDF = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(patientUserProfile, reportingPeriod, isInitialCarePlan) {\n          var aDom, blob, cycle_month, cycle_year, endDate, fileAsByteArray, fileData, fileName, isIE, link, payload, startDate, url;\n          return regeneratorRuntime.wrap(function _callee3$(_context3) {\n            while (1) switch (_context3.prev = _context3.next) {\n              case 0:\n                // Set up a request\n                payload = {};\n                payload.patient_user_profile_id = patientUserProfile.id;\n                if (isInitialCarePlan) {\n                  payload.isInitialCarePlan = true;\n                }\n                // We should have a reporting period, and thus start/end dates, but if none are sent the report will\n                // default to the last 30 days\n                if (reportingPeriod) {\n                  cycle_month = reportingPeriod.cycle_month;\n                  cycle_year = reportingPeriod.cycle_year;\n                  startDate = luxon.DateTime.local(cycle_year, cycle_month, 1).toFormat('yyyy-MM-dd');\n                  endDate = luxon.DateTime.local(cycle_year, cycle_month, 1).plus({\n                    months: 1\n                  }).toFormat('yyyy-MM-dd');\n                  payload.start_date = startDate;\n                  payload.end_date = endDate;\n                }\n                $log.log(\"downloading...\", payload);\n                _context3.next = 7;\n                return ReadingsShareService.download(patientUserProfile.id, payload);\n              case 7:\n                fileData = _context3.sent;\n                fileName = patientUserProfile.name_first + \"_\" + patientUserProfile.name_last + \"_ccm-care-plan.pdf\";\n                $log.log(\"CCM Share Result\", fileData);\n                // Format Data properly\n                fileAsByteArray = this.base64ToArrayBuffer(fileData.encoded_file);\n                blob = new Blob([fileAsByteArray], {\n                  type: \"application/pdf\"\n                });\n                // Send to downloads\n                isIE = false || !!document.documentMode;\n                if (!isIE) {\n                  _context3.next = 17;\n                  break;\n                }\n                return _context3.abrupt(\"return\", window.navigator.msSaveBlob(blob, fileName));\n              case 17:\n                url = window.URL || window.webkitURL;\n                link = url.createObjectURL(blob);\n                // also open in browser\n                window.open(link, '_blank');\n                aDom = document.createElement('a');\n                aDom.setAttribute('style', 'display:none');\n                aDom.setAttribute('href', link);\n                aDom.setAttribute('download', fileName);\n                document.body.appendChild(aDom);\n                aDom.click();\n                URL.revokeObjectURL(link);\n                return _context3.abrupt(\"return\", document.body.removeChild(aDom));\n              case 28:\n              case \"end\":\n                return _context3.stop();\n            }\n          }, _callee3, this);\n        }));\n        function downloadCCMPDF(_x8, _x9, _x10) {\n          return _downloadCCMPDF.apply(this, arguments);\n        }\n        return downloadCCMPDF;\n      }(),\n      getGraphServicePDF: function () {\n        var _getGraphServicePDF = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(patientUserProfile, filters) {\n          var aDom, blob, datepart, fileAsByteArray, fileData, fileName, isIE, link, payload, url;\n          return regeneratorRuntime.wrap(function _callee4$(_context4) {\n            while (1) switch (_context4.prev = _context4.next) {\n              case 0:\n                // Set up a request\n                payload = {};\n                filters.return_pdf = true;\n                payload.patient_user_profile_id = patientUserProfile.id;\n                $log.log(\"downloading...\", filters);\n                _context4.next = 6;\n                return GraphDataService.getData(patientUserProfile.id, filters);\n              case 6:\n                fileData = _context4.sent;\n                datepart = filters.start_date.replace(/\\//g, '') + \"-\" + filters.end_date.replace(/\\//g, '');\n                fileName = patientUserProfile.name_first + \"_\" + patientUserProfile.name_last + \"_\" + datepart + \"_obs_report.pdf\";\n                $log.log(\"GraphData Get PDF\", fileData);\n                // Format Data properly\n                fileAsByteArray = this.base64ToArrayBuffer(fileData.message.encoded_file);\n                blob = new Blob([fileAsByteArray], {\n                  type: \"application/pdf\"\n                });\n                // Send to downloads\n                isIE = false || !!document.documentMode;\n                if (!isIE) {\n                  _context4.next = 17;\n                  break;\n                }\n                return _context4.abrupt(\"return\", window.navigator.msSaveBlob(blob, fileName));\n              case 17:\n                url = window.URL || window.webkitURL;\n                link = url.createObjectURL(blob);\n                // also open in browser\n                window.open(link, '_blank');\n                aDom = document.createElement('a');\n                aDom.setAttribute('style', 'display:none');\n                aDom.setAttribute('href', link);\n                aDom.setAttribute('download', fileName);\n                document.body.appendChild(aDom);\n                aDom.click();\n                URL.revokeObjectURL(link);\n                return _context4.abrupt(\"return\", document.body.removeChild(aDom));\n              case 28:\n              case \"end\":\n                return _context4.stop();\n            }\n          }, _callee4, this);\n        }));\n        function getGraphServicePDF(_x11, _x12) {\n          return _getGraphServicePDF.apply(this, arguments);\n        }\n        return getGraphServicePDF;\n      }(),\n      downloadPatientCsv: function () {\n        var _downloadPatientCsv = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(token, id, enterpriseCustomerId) {\n          var pdfFinal;\n          return regeneratorRuntime.wrap(function _callee5$(_context5) {\n            while (1) switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return LookerService.downloadPatientCsv(enterpriseCustomerId, token, id);\n              case 2:\n                pdfFinal = _context5.sent;\n                $log.log('patientPdfFinal', pdfFinal);\n                this.lookerDownloadStatus = '';\n                return _context5.abrupt(\"return\", $window.location.href = pdfFinal.url);\n              case 6:\n              case \"end\":\n                return _context5.stop();\n            }\n          }, _callee5, this);\n        }));\n        function downloadPatientCsv(_x13, _x14, _x15) {\n          return _downloadPatientCsv.apply(this, arguments);\n        }\n        return downloadPatientCsv;\n      }(),\n      getPDF: function getPDF(reportingPeriod, enterpriseCustomerId, patientUserProfile) {\n        var timezone = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : moment.tz.guess();\n        var cacheBuster, cycle_month, cycle_year, endDate, filters, startDate;\n        cacheBuster = uuid4.generate();\n        cycle_month = reportingPeriod.cycle_month;\n        cycle_year = reportingPeriod.cycle_year;\n        startDate = luxon.DateTime.local(cycle_year, cycle_month, 1).toFormat('yyyy/LL/dd');\n        endDate = luxon.DateTime.local(cycle_year, cycle_month, 1).plus({\n          months: 1\n        }).toFormat('yyyy/LL/dd');\n        filters = _.extend({\n          _cacheBuster: cacheBuster\n        }, {\n          start_date: startDate\n        }, {\n          end_date: endDate\n        }, {\n          user_timezone: timezone\n        });\n        return this.getGraphServicePDF(patientUserProfile, filters);\n      },\n      clearPdfRequestValues: function clearPdfRequestValues(reqId) {\n        $log.log('clearing request values', reqId);\n        clearInterval(this.intervalIds[reqId]);\n        this.intervalIds[reqId] = null;\n        this.pdfStatus[reqId] = null;\n        this.pdfData[reqId] = null;\n      },\n      copyLinkToClipboard: function copyLinkToClipboard(stateName, params) {\n        var link;\n        link = $state.href(stateName, params, {\n          absolute: true\n        });\n        return this.copyTextToClipboard(link, 'PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.LINK_COPIED');\n      },\n      copyTextToClipboard: function copyTextToClipboard(text) {\n        var successMessageKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'PORTAL.ENTERPRISE.OBSERVATION_REPORT.TOASTS.LINK_COPIED';\n        var selBox;\n        selBox = document.createElement('textarea');\n        selBox.style.position = 'fixed';\n        selBox.style.left = '0';\n        selBox.style.top = '0';\n        selBox.style.opacity = '0';\n        selBox.value = text;\n        document.body.appendChild(selBox);\n        selBox.focus();\n        selBox.select();\n        document.execCommand('copy');\n        document.body.removeChild(selBox);\n        return NotificationsService.success(successMessageKey);\n      },\n      buildOptionsForProviderPatientAuthorizations: function buildOptionsForProviderPatientAuthorizations(providerPatientAuthorizations) {\n        var provider, providerOptions;\n        // Guard clause to check if providerPatientAuthorizations is valid and not empty\n        if (providerPatientAuthorizations == null || providerPatientAuthorizations.length === 0) {\n          return [];\n        }\n        // Filter out deactivated providers\n        providerPatientAuthorizations = _.filter(providerPatientAuthorizations, function (pa) {\n          return _.isNil(pa.provider.deactivated_at);\n        });\n        providerOptions = function () {\n          var j, len, ref, ref1, results;\n          results = [];\n          for (j = 0, len = providerPatientAuthorizations.length; j < len; j++) {\n            provider = providerPatientAuthorizations[j];\n            if ((ref = (ref1 = provider.provider.practice_roles[0]) != null ? ref1.key_name : void 0, indexOf.call(ALLOWED_ROLES_BY.KEY_NAME, ref) >= 0) || provider.is_primary) {\n              results.push({\n                label: \"\".concat(provider.provider.name_first, \", \").concat(provider.provider.name_last),\n                value: provider.id\n              });\n            }\n          }\n          return results;\n        }();\n        return providerOptions;\n      },\n      //TODO: The res.url is not correct, should download signedUrl except that will download a base64 encoded PDF.  This must be decoded before returning to user.\n      downloadEhrSyncedReport: function () {\n        var _downloadEhrSyncedReport = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(enterpriseCustomerId, observationReportId) {\n          var res;\n          return regeneratorRuntime.wrap(function _callee6$(_context6) {\n            while (1) switch (_context6.prev = _context6.next) {\n              case 0:\n                IntercomService.trackEvent(env.intercom.events.observation_report_downloaded);\n                _context6.next = 3;\n                return observationReportsService.one('', enterpriseCustomerId).one('observation_reports', observationReportId).one('ehr_synced_report').get();\n              case 3:\n                res = _context6.sent;\n                $log.log('observation report download response', res);\n                $window.open(res.url, '_blank');\n              case 6:\n              case \"end\":\n                return _context6.stop();\n            }\n          }, _callee6);\n        }));\n        function downloadEhrSyncedReport(_x16, _x17) {\n          return _downloadEhrSyncedReport.apply(this, arguments);\n        }\n        return downloadEhrSyncedReport;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:TimesheetService\n   * @description\n   * For RESTful interaction w/ our ObservationReport timesheet apis.\n   */\n  angular.module('services').factory('TimesheetService', function (env, $log, $state, $q, $filter, Restangular, CacheFactory, EUserProfilesService) {\n    'ngInject';\n\n    var restangular, timesheetsCache, timesheetsService;\n    $log = $log.getInstance('TimesheetService');\n    timesheetsCache = CacheFactory('timesheetsCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      //    Configurer.defaultHttpFields.cache = timesheetsCache\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        //      if (operation == 'put' || operation == 'post' || operation == 'delete')\n        //        $log.log \"clearing cache on #{operation} request\"\n        //        timesheetsCache.removeAll()\n        return data.data;\n      });\n    });\n    timesheetsService = restangular.all('observation_reports');\n    return {\n      new: function _new() {\n        return {\n          date_of_service: null\n        };\n      },\n      getAll: function getAll(observationReportId, filters) {\n        return timesheetsService.one('', observationReportId).one('observation_report_timesheets').get(filters);\n      },\n      post: function post(timesheet) {\n        return timesheetsService.one('', timesheet.observation_report_id).one('observation_report_timesheets').customPOST(timesheet);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ObservationReportReloadHelper\n   * @description\n   * Helper service that provides shared reloadObservationReportData methods\n   * that can be mixed into observation report controllers\n   */\n  angular.module('services').factory('ObservationReportReloadHelper', function ($log, $q, ObservationReportService, TimesheetService, GraphDataService) {\n    'ngInject';\n\n    $log = $log.getInstance('ObservationReportReloadHelper');\n    return {\n      /*\n       * Returns methods that can be mixed into observation report controllers\n       * Usage: angular.extend(this, ObservationReportReloadHelper.getMethods())\n       */\n      getMethods: function getMethods() {\n        return {\n          reloadObservationReportData: function reloadObservationReportData() {\n            var _this = this;\n            $log.log('reloading observationReport data');\n            // Reload timesheets and observationReport in parallel, then reload graphConfig\n            // after observationReport is updated (since graphConfig depends on it)\n            return $q.all([this.reloadTimesheets(), this.reloadObservationReport()]).then(function () {\n              return _this.reloadGraphConfig();\n            });\n          },\n          reloadTimesheets: function () {\n            var _reloadTimesheets = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n              var error, timesheets;\n              return regeneratorRuntime.wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.prev = 0;\n                    _context.next = 3;\n                    return TimesheetService.getAll(this.observationReport.id, {\n                      _sortDir: 'ASC'\n                    });\n                  case 3:\n                    timesheets = _context.sent;\n                    this.timesheets = timesheets;\n                    return _context.abrupt(\"return\", $log.log('timesheets reloaded', timesheets));\n                  case 8:\n                    _context.prev = 8;\n                    _context.t0 = _context[\"catch\"](0);\n                    error = _context.t0;\n                    return _context.abrupt(\"return\", $log.error('error reloading timesheets', error));\n                  case 12:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee, this, [[0, 8]]);\n            }));\n            function reloadTimesheets() {\n              return _reloadTimesheets.apply(this, arguments);\n            }\n            return reloadTimesheets;\n          }(),\n          reloadObservationReport: function () {\n            var _reloadObservationReport = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n              var enterpriseCustomerId, error, observationReport, ref, ref1, ref2;\n              return regeneratorRuntime.wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.prev = 0;\n                    enterpriseCustomerId = ((ref = this.enterpriseCustomer) != null ? ref.id : void 0) || ((ref1 = this.user) != null ? (ref2 = ref1.user_profile) != null ? ref2.enterprise_customer_id : void 0 : void 0);\n                    _context2.next = 4;\n                    return ObservationReportService.get(enterpriseCustomerId, this.observationReport.id);\n                  case 4:\n                    observationReport = _context2.sent;\n                    this.observationReport = observationReport;\n                    return _context2.abrupt(\"return\", $log.log('observationReport reloaded', observationReport));\n                  case 9:\n                    _context2.prev = 9;\n                    _context2.t0 = _context2[\"catch\"](0);\n                    error = _context2.t0;\n                    return _context2.abrupt(\"return\", $log.error('error reloading observationReport', error));\n                  case 13:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2, this, [[0, 9]]);\n            }));\n            function reloadObservationReport() {\n              return _reloadObservationReport.apply(this, arguments);\n            }\n            return reloadObservationReport;\n          }(),\n          reloadGraphConfig: function () {\n            var _reloadGraphConfig = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n              var base, cycle_month, cycle_year, data, dateFormat, endDate, error, now, startDate, _this$observationRepo;\n              return regeneratorRuntime.wrap(function _callee3$(_context3) {\n                while (1) switch (_context3.prev = _context3.next) {\n                  case 0:\n                    _context3.prev = 0;\n                    // Recalculate date range\n                    startDate = null;\n                    endDate = null;\n                    now = luxon.DateTime.local();\n                    if (this.observationReport.reporting_period_id) {\n                      _this$observationRepo = this.observationReport.reporting_period;\n                      cycle_month = _this$observationRepo.cycle_month;\n                      cycle_year = _this$observationRepo.cycle_year;\n                      if (cycle_month === now.month && cycle_year === now.year) {\n                        startDate = now.minus({\n                          months: 1\n                        });\n                        endDate = now;\n                      } else {\n                        startDate = luxon.DateTime.local(cycle_year, cycle_month, 1);\n                        endDate = luxon.DateTime.local(cycle_year, cycle_month, 1).endOf('month');\n                      }\n                    } else if (this.observationReport.period_started_at) {\n                      startDate = luxon.DateTime.fromJSDate(this.observationReport.period_started_at);\n                      endDate = luxon.DateTime.fromJSDate(this.observationReport.period_ended_at);\n                    }\n                    if (!(startDate && endDate)) {\n                      _context3.next = 13;\n                      break;\n                    }\n                    dateFormat = 'yyyy/MM/dd';\n                    _context3.next = 9;\n                    return GraphDataService.getData(this.patientUserProfile.id, {\n                      start_date: startDate.toFormat(dateFormat),\n                      end_date: endDate.plus({\n                        days: 1\n                      }).toFormat(dateFormat),\n                      tz: this.user.user_profile.timezone\n                    });\n                  case 9:\n                    data = _context3.sent;\n                    this.graphConfig = this.graphConfig;\n                    this.callLogGraph = typeof (base = this.graphConfig)['CALL_LOGS'] === \"function\" ? base['CALL_LOGS'](data.readings, data.meta) : void 0;\n                    return _context3.abrupt(\"return\", $log.log('graphConfig reloaded'));\n                  case 13:\n                    _context3.next = 19;\n                    break;\n                  case 15:\n                    _context3.prev = 15;\n                    _context3.t0 = _context3[\"catch\"](0);\n                    error = _context3.t0;\n                    return _context3.abrupt(\"return\", $log.error('error reloading graphConfig', error));\n                  case 19:\n                  case \"end\":\n                    return _context3.stop();\n                }\n              }, _callee3, this, [[0, 15]]);\n            }));\n            function reloadGraphConfig() {\n              return _reloadGraphConfig.apply(this, arguments);\n            }\n            return reloadGraphConfig;\n          }()\n        };\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EnterpriseInvitationsService\n   * @description\n   * For RESTful interaction w/ our enterprise invitation apis.\n   */\n  angular.module('services').factory('EnterpriseInvitationsService', function ($log, env, Restangular, AdminService) {\n    'ngInject';\n\n    var invitationsService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    invitationsService = restangular.all('');\n    return {\n      new: function _new() {\n        return {\n          enterprise_customer_id: null,\n          name_last: null,\n          name_first: null,\n          email: null,\n          enterprise_invitation_practice_roles: [{}],\n          enterprise_roles: []\n        };\n      },\n      getViaHash: function getViaHash(invitationHash, code) {\n        return invitationsService.one('enterprise_invitations/hash', invitationHash).one('', code).get();\n      },\n      //  linkDevice: (userId, invitationHash, code) ->\n      //    invitationsService.one('users', userId).one('enterprise_invitations', invitationHash).one('', code).one('link_device').get()\n      get: function get(enterpriseCustomerId, invitationId) {\n        return invitationsService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_invitations', invitationId).get();\n      },\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        return invitationsService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_invitations').get(filters);\n      },\n      post: function post(enterpriseCustomerId, invitation) {\n        return invitationsService.one('enterprise_customers', enterpriseCustomerId).customPOST(invitation, 'enterprise_invitations');\n      },\n      put: function put(enterpriseCustomerId, invitation) {\n        return invitationsService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_invitations', invitation.id).customPUT(invitation);\n      },\n      delete: function _delete(enterpriseCustomerId, invitationId) {\n        return invitationsService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_invitations', invitationId).remove();\n      },\n      resend: function resend(enterpriseCustomerId, invitationId) {\n        return invitationsService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_invitations', invitationId).post('resend');\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EInsurerTypeService\n   * @description\n   * Service for insurer types\n   * @example\n  <pre>\n    this.insurerTypes = EInsurerTypeService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('EInsurerTypeService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var insurerTypeService, insurerTypesCache, restangular;\n    insurerTypesCache = CacheFactory('EInsurerTypeServiceCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = insurerTypesCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    insurerTypeService = restangular.all('insurer_types');\n    return {\n      /**\n       * @ngdoc function\n       * @name EInsurerTypeService.getAll\n       * @methodOf services.factory:EInsurerTypeService\n       * @description\n       * Gets all insurer types\n       * @returns {array} Insurer types\n       */\n      getAll: function getAll() {\n        return insurerTypeService.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EInsuranceClaim\n   * @description\n   * For RESTful interaction w/ our Enterprise Customer apis.\n   */\n  angular.module('claims').factory('EInsuranceClaimsService', function (env, $log, $q, Restangular, CacheFactory, AdminService) {\n    'ngInject';\n\n    var previousGetAllRequest, restangular;\n    $log = $log.getInstance('EInsuranceClaimsService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'get') {\n          if (response.headers('X-Total-Count')) {\n            return response;\n          } else {\n            return data.data;\n          }\n        } else {\n          return data.data;\n        }\n      });\n    });\n    // used to cancel any previous inflight requests to get all claims\n    previousGetAllRequest = $q.defer();\n    return {\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        var masqUser;\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        previousGetAllRequest.resolve();\n        previousGetAllRequest = $q.defer();\n        return restangular.one('enterprise_customers', enterpriseCustomerId).one('enterprise_insurance_claims').withHttpConfig({\n          timeout: previousGetAllRequest.promise\n        }).get(filters);\n      },\n      get: function get(enterpriseCustomerId, claimId, filters) {\n        return restangular.one('enterprise_customers', enterpriseCustomerId).one('enterprise_insurance_claims', claimId).get(filters);\n      },\n      put: function put(claim) {\n        return restangular.one('enterprise_customers', claim.enterprise_customer_id).one('enterprise_insurance_claims', claim.id).customPUT(claim);\n      },\n      // biller has different routes for permissions checking\n      billerGetOne: function billerGetOne(enterpriseBillerId, claimId, filters) {\n        return restangular.one('enterprise_billers', enterpriseBillerId).one('enterprise_insurance_claims', claimId).get(filters);\n      },\n      billerPut: function billerPut(claim) {\n        return restangular.one('enterprise_billers', claim.enterprise_biller_id).one('enterprise_insurance_claims', claim.id).customPUT(claim);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EEnrollmentService\n   * @description\n   * For RESTful interaction w/ our Enterprise Enrollment apis.\n   */\n  var indexOf = [].indexOf;\n  angular.module('services').factory('EEnrollmentsService', function (env, $log, $state, $q, $filter, Restangular, AdminService, MAX_PHONE_NUMBERS_COUNT, NotificationsService, ALLOWED_ROLES_BY) {\n    'ngInject';\n\n    var enterpriseEnrollmentsService, restangular;\n    $log = $log.getInstance('EEnrollmentsService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'get') {\n          if (response.headers('X-Total-Count')) {\n            return response;\n          } else {\n            return data.data;\n          }\n        } else {\n          return data.data;\n        }\n      });\n      return Configurer.addRequestInterceptor(function (data, operation, what, url) {\n        var keysToRemove;\n        if (operation === 'put') {\n          keysToRemove = ['pactsafe_request']; // Dont remove: mitigate WAF triggering an XSS body rule\n          _.each(keysToRemove, function (key) {\n            return delete data[key];\n          });\n          return data;\n        } else {\n          return data;\n        }\n      });\n    });\n    enterpriseEnrollmentsService = restangular.all('enterprise_customers');\n    return {\n      new: function _new() {\n        return {\n          diagnosis: {\n            codes: []\n          },\n          name_first: null,\n          name_last: null,\n          email: null,\n          address: {\n            address_name: null,\n            address_street: null,\n            address_city: null,\n            address_state: null,\n            address_zipcode: null,\n            address_floor: null,\n            country_id: null,\n            is_primary: true\n          },\n          contacts: [{\n            name_first: null,\n            name_last: null,\n            phone_1_number: null,\n            phone_1_type: null,\n            email: null,\n            relationship_id: null\n          }],\n          primary_insurer: {},\n          secondary_insurer: {},\n          tertiary_insurer: {},\n          phone_1_number: null,\n          phone_1_type: null,\n          date_of_birth: null,\n          gender: null,\n          wrist_size: null,\n          enterprise_customer_id: null,\n          enterprise_admin_id: null,\n          enrolled_user_profile_id: null,\n          model_patient_services: [],\n          pactsafe_request_delivery_method: 'IN_PERSON',\n          // or 'SMS', 'EMAIL'\n          pactsafe_request_redirect_path: '/#/enterprise/enrollments',\n          shipments: [],\n          enrollment_tos_delivery_methods: [],\n          patient_groups: []\n        };\n      },\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        var masqUser;\n        if (!filters) {\n          filters = {};\n        }\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments').get(filters);\n      },\n      getAllIncomplete: function getAllIncomplete(enterpriseCustomerId, filters) {\n        var masqUser;\n        if (!filters) {\n          filters = {};\n        }\n        masqUser = AdminService.getMasqueradingUser();\n        if (masqUser) {\n          $log.log('FILTER');\n          filters._masquerading_user = masqUser.auth0_user_id;\n        }\n        filters._incomplete = true;\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments').get(filters);\n      },\n      get: function get(enterpriseCustomerId, enterpriseEnrollmentId) {\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments', enterpriseEnrollmentId).get();\n      },\n      post: function post(enterpriseCustomerId, enterpriseEnrollment) {\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments').customPOST(enterpriseEnrollment);\n      },\n      put: function put(enterpriseCustomerId, enterpriseEnrollment) {\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments', enterpriseEnrollment.id).customPUT(enterpriseEnrollment);\n      },\n      delete: function _delete(enterpriseCustomerId, enterpriseEnrollmentId) {\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments', enterpriseEnrollmentId).remove();\n      },\n      createEvaluationEnrollment: function createEvaluationEnrollment(enterpriseCustomerId, deviceTypes) {\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('evaluation_enrollments').customPOST({\n          device_types: deviceTypes\n        });\n      },\n      provisionNewPatientAccount: function provisionNewPatientAccount(enterpriseCustomerId, enterpriseEnrollmentId, deviceSerial) {\n        return enterpriseEnrollmentsService.one('', enterpriseCustomerId).one('enterprise_enrollments', enterpriseEnrollmentId).one('provision_new_patient_account').customPOST({\n          device_serial: deviceSerial\n        });\n      },\n      getNumGlucoseTestsPerDay: [{\n        label: '1',\n        value: 1\n      }, {\n        label: '2',\n        value: 2\n      }, {\n        label: '3',\n        value: 3\n      }, {\n        label: '4',\n        value: 4\n      }, {\n        label: '5',\n        value: 5\n      }, {\n        label: '6',\n        value: 6\n      }, {\n        label: '7',\n        value: 7\n      }, {\n        label: '8+',\n        value: 8\n      }],\n      convertIDToLabel: function convertIDToLabel(insurer, options) {\n        if (insurer) {\n          if (insurer.medicare_advantage_provider_id) {\n            return _.find(options, {\n              value: insurer.medicare_advantage_provider_id\n            }).label;\n          }\n        }\n      },\n      toggleShowInsurer: function toggleShowInsurer(insurer) {\n        if (insurer) {\n          if (insurer.insurer_type_id || insurer.group_num || insurer.policy_num || insurer.individual_num) {\n            return true;\n          }\n        }\n      },\n      getExistingAdditionalPhoneNumberInputs: function getExistingAdditionalPhoneNumberInputs(enterpriseEnrollment) {\n        var additionalPhoneNumber, count, i, ref;\n        // If its a new enrollment there will be no existing additional phone numbers\n        if (_.isUndefined(enterpriseEnrollment) || !enterpriseEnrollment.id) {\n          return 0;\n        }\n        count = 0;\n        for (additionalPhoneNumber = i = 2, ref = MAX_PHONE_NUMBERS_COUNT; 2 <= ref ? i <= ref : i >= ref; additionalPhoneNumber = 2 <= ref ? ++i : --i) {\n          if (enterpriseEnrollment[\"phone_\".concat(additionalPhoneNumber, \"_type\")] || enterpriseEnrollment[\"phone_\".concat(additionalPhoneNumber, \"_number\")]) {\n            count += 1;\n          }\n        }\n        return count;\n      },\n      getDescriptionWithAvailability: function getDescriptionWithAvailability(item) {\n        var availableAt;\n        // $log.log 'item.description', item.description\n        availableAt = $filter('availableAt')(item.available_at, true);\n        return item.description + ' ' + availableAt;\n      },\n      checkPatientUnder18: function checkPatientUnder18(dateString, warnMsg, successMsg) {\n        var patientUnder18;\n        //    Check if user is under 18. Luxon is checking the difference between today's date and date of birth\n        patientUnder18 = Math.abs(luxon.DateTime.fromFormat(dateString, 'yyyy-MM-dd').diffNow('years').values.years) < 18;\n        $log.log('Is patient under 18', patientUnder18);\n        if (patientUnder18) {\n          return NotificationsService.warn(warnMsg);\n        }\n      },\n      // ISO date-only values like '1970-01-01' parse as UTC midnight (Unix epoch).\n      // Do not treat timestamp 0 as invalid — that rejects a real date of birth.\n      isInvalidBirthdate: function isInvalidBirthdate(dateOfBirth) {\n        var time;\n        if (!dateOfBirth) {\n          return true;\n        }\n        time = new Date(dateOfBirth).getTime();\n        return isNaN(time) || time > Date.now();\n      },\n      checkForDuplicatePhoneNumber: function checkForDuplicatePhoneNumber(phoneNumber, enrollmentId) {\n        var baseUrl, queryParams;\n        queryParams = {};\n        if (enrollmentId) {\n          queryParams.enrollment_id = enrollmentId;\n        }\n        baseUrl = restangular.all('');\n        return baseUrl.one('enterprise_enrollments').one('phone_unique_check', phoneNumber).get(queryParams);\n      },\n      // Only grab providers that are in the allowed roles list.\n      generateProviderOptions: function generateProviderOptions(providers, enrollment) {\n        var enterpriseAdminIdExists, provider, providerOptions;\n        enterpriseAdminIdExists = (enrollment != null ? enrollment.enterprise_admin_id : void 0) != null;\n        providerOptions = function () {\n          var i, len, ref, ref1, ref2, results;\n          results = [];\n          for (i = 0, len = providers.length; i < len; i++) {\n            provider = providers[i];\n            if ((ref = (ref1 = provider.user_profile_practice_roles[0]) != null ? (ref2 = ref1.practice_role) != null ? ref2.key_name : void 0 : void 0, indexOf.call(ALLOWED_ROLES_BY.KEY_NAME, ref) >= 0) || enterpriseAdminIdExists && provider.id === enrollment.enterprise_admin_id) {\n              results.push({\n                label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n                value: provider.id\n              });\n            }\n          }\n          return results;\n        }();\n        return providerOptions;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('EEnrollmentTOSDeliveryMethodsService', function ($log, env, Restangular) {\n    'ngInject';\n\n    var enrollmentTOSDeliveryMethodsService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    enrollmentTOSDeliveryMethodsService = restangular.all('');\n    return {\n      post: function post(enrollmentTosDeliveryMethod) {\n        return enrollmentTOSDeliveryMethodsService.one('enterprise_enrollments', enrollmentTosDeliveryMethod.enterprise_enrollment_id).customPOST(enrollmentTosDeliveryMethod, 'enrollment_tos_delivery_methods');\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EEnrollmentStatusesService\n   * @description\n   * Service for enrollment statuses\n   * @example\n  <pre>\n    this.enrollmentStatuses = EEnrollmentStatusesService.getAll()\n  </pre>\n   */\n  angular.module('services').factory('EEnrollmentStatusesService', function (env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var enrollmentStatusesCache, enrollmentStatusesService, restangular;\n    enrollmentStatusesCache = CacheFactory('EEnrollmentStatusesCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = enrollmentStatusesCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    enrollmentStatusesService = restangular.all('enrollment_statuses');\n    return {\n      /**\n       * @ngdoc function\n       * @name EEnrollmentStatusesService.getAll\n       * @methodOf services.factory:EEnrollmentStatusesService\n       * @description\n       * Gets all enrollment statuses\n       * @returns {array} Enrollment statuses\n       */\n      getAll: function getAll() {\n        return enrollmentStatusesService.getList();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EDeactivationReasonsService\n   * @description\n   * For RESTful interaction w/ our Deactivation Reasons apis.\n   */\n  var indexOf = [].indexOf;\n  angular.module('services').factory('EDeactivationReasonsService', function (env, $log, uuid4, Restangular, CacheFactory) {\n    'ngInject';\n\n    var activeReasons, eDeactivationReasonsCached, eDeactivationReasonsService, initialState, restangular, state;\n    $log = $log.getInstance('EDeactivationReasonsService');\n    // These are the reasons we are currently supporting in the UI\n    activeReasons = ['HOSPITALIZED_REHAB', 'HOSPICE__NURSING_HOME', 'COPAY_DEDUCTIBLE', 'CLAIM_DENIAL', 'CHANGED_MIND', 'CLAIMS_NEVER_SIGNED_UP', 'DECEASED', 'LEFT_PRACTICE', 'DEVICE_ISSUE', 'ADHERENCE', 'PAUSE_INVOICING_TRAVELING', 'OTHER'];\n    initialState = {\n      reason: '',\n      notes: '',\n      fileUnavailable: false,\n      file: null,\n      fileUploadedDate: null,\n      startDate: null,\n      endDate: null,\n      billingPeriods: [],\n      unknown: false,\n      deactivatingPatient: null\n    };\n    state = _.cloneDeep(initialState);\n    eDeactivationReasonsCached = CacheFactory('EDeactivationReasonsCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = eDeactivationReasonsCached;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        var filteredData;\n        if (operation === 'getList') {\n          filteredData = _.filter(data.data, function (item) {\n            var keyName;\n            keyName = _.get(item, 'key_name');\n            return _.includes(activeReasons, keyName);\n          });\n          return filteredData;\n        } else {\n          return data.data;\n        }\n      });\n    });\n    eDeactivationReasonsService = restangular.all('deactivation_reasons');\n    return {\n      getAll: function getAll() {\n        return eDeactivationReasonsService.getList();\n      },\n      getReasonsBySection: function getReasonsBySection() {\n        return {\n          // Health Change\n          HEALTH: [\n          // Hospitalized or in rehabilitation\n          'HOSPITALIZED_REHAB',\n          // Moved to hospice care or nursing home\n          'HOSPICE__NURSING_HOME'],\n          // Insurance issue or change\n          INSURANCE: [\n          // Does not want to pay co-pay or deductible\n          'COPAY_DEDUCTIBLE',\n          // Claim denial for RPM CPT Codes\n          'CLAIM_DENIAL'],\n          // Other\n          OTHER: [\n          // Deceased\n          'DECEASED',\n          // No longer at practice\n          'LEFT_PRACTICE',\n          // Medical or other issue with device(s)\n          'DEVICE_ISSUE',\n          // Not using devices regularly\n          'ADHERENCE',\n          // Traveling without access to devices\n          'PAUSE_INVOICING_TRAVELING',\n          // Other (please explain)\n          'OTHER'],\n          // Does not want to participate\n          PARTICIPATION: [\n          // Changed their mind\n          'CHANGED_MIND',\n          // Claims they never signed up for program\n          'CLAIMS_NEVER_SIGNED_UP']\n        };\n      },\n      getReasonsMappedByKeyName: function getReasonsMappedByKeyName(reasons) {\n        var formMap;\n        $log.log('reasons', reasons);\n        formMap = {};\n        _.forEach(reasons, function (reason) {\n          return formMap[reason.key_name] = reason.id;\n        });\n        return formMap;\n      },\n      getRequestTypeByReason: function getRequestTypeByReason(reason) {\n        var reasons;\n        reasons = {\n          'HOSPITALIZED_REHAB': 'HEALTH',\n          'HOSPICE__NURSING_HOME': 'HEALTH',\n          'COPAY_DEDUCTIBLE': 'INSURANCE',\n          'CLAIM_DENIAL': 'INSURANCE',\n          'CHANGED_MIND': 'PARTICIPATION',\n          'CLAIMS_NEVER_SIGNED_UP': 'PARTICIPATION',\n          'DECEASED': 'OTHER',\n          'LEFT_PRACTICE': 'OTHER',\n          'DEVICE_ISSUE': 'OTHER',\n          'ADHERENCE': 'OTHER',\n          'PAUSE_INVOICING_TRAVELING': 'OTHER',\n          'OTHER': 'OTHER'\n        };\n        return _.get(reasons, reason, 'OTHER');\n      },\n      formatDate: function formatDate(date) {\n        return luxon.DateTime.fromISO(date).toFormat('MM/dd/yyyy');\n      },\n      parseReasonDescription: function parseReasonDescription(request) {\n        var rawDescription;\n        rawDescription = _.get(request, 'deactivation_reason.description', '');\n        return _.replace(rawDescription, 'Pause invoicing/billing - ', '');\n      },\n      getTempDeactivationReasonDescription: function getTempDeactivationReasonDescription(deactivationRequest, reactivationRequest) {\n        var endDate, formattedEndDate, formattedStartDate, parsedDescription, startDate;\n        if (_.isEmpty(deactivationRequest) || _.isEmpty(reactivationRequest)) {\n          return '';\n        }\n        parsedDescription = this.parseReasonDescription(deactivationRequest);\n        if (_.isEmpty(parsedDescription)) {\n          return '';\n        }\n        startDate = _.get(deactivationRequest, 'deactivation_request.deactivation_date');\n        endDate = _.get(reactivationRequest, 'reactivation_request.reactivation_date');\n        if (_.isEmpty(startDate) || _.isEmpty(endDate)) {\n          return parsedDescription;\n        }\n        formattedStartDate = this.formatDate(startDate);\n        formattedEndDate = this.formatDate(endDate);\n        return \"\".concat(parsedDescription, \": \").concat(formattedStartDate, \" - \").concat(formattedEndDate);\n      },\n      isImmediateDeactivationRequest: function isImmediateDeactivationRequest(reason) {\n        var immediateDeactivationReasons;\n        immediateDeactivationReasons = ['CHANGED_MIND', 'CLAIMS_NEVER_SIGNED_UP', 'OTHER'];\n        return indexOf.call(immediateDeactivationReasons, reason) >= 0;\n      },\n      getNextStateByReason: function getNextStateByReason(reason) {\n        var additionalInfoReasons, baseState, deactivationCompleteReasons;\n        additionalInfoReasons = ['HOSPICE__NURSING_HOME', 'DECEASED', 'LEFT_PRACTICE'];\n        deactivationCompleteReasons = ['CHANGED_MIND', 'CLAIMS_NEVER_SIGNED_UP', 'OTHER'];\n        baseState = 'enterprise.observation_report.patient_deactivation';\n        if (indexOf.call(additionalInfoReasons, reason) >= 0) {\n          return \"\".concat(baseState, \"_additional_info\");\n        }\n        if (indexOf.call(deactivationCompleteReasons, reason) >= 0) {\n          return \"\".concat(baseState, \"_complete\");\n        }\n        if (reason === 'PAUSE_INVOICING_TRAVELING' || reason === 'HOSPITALIZED_REHAB') {\n          return \"\".concat(baseState, \"_temporary\");\n        }\n        if (reason === 'COPAY_DEDUCTIBLE' || reason === 'CLAIM_DENIAL') {\n          return \"\".concat(baseState, \"_insurance_change\");\n        }\n        if (reason === 'DEVICE_ISSUE') {\n          return \"\".concat(baseState, \"_device_issue\");\n        }\n        if (reason === 'ADHERENCE') {\n          return \"\".concat(baseState, \"_adherence\");\n        }\n        return null;\n      },\n      isRequestProcessed: function isRequestProcessed(reason) {\n        var autoProcessedReasons;\n        autoProcessedReasons = ['HOSPITALIZED_REHAB', 'HOSPICE__NURSING_HOME', 'DECEASED', 'LEFT_PRACTICE', 'ADHERENCE', 'PAUSE_INVOICING_TRAVELING'];\n        return indexOf.call(autoProcessedReasons, reason) >= 0;\n      },\n      isRequestReviewing: function isRequestReviewing(reason) {\n        var requiredReviewReasons;\n        requiredReviewReasons = ['COPAY_DEDUCTIBLE', 'CLAIM_DENIAL', 'DEVICE_ISSUE', 'CHANGED_MIND', 'CLAIMS_NEVER_SIGNED_UP', 'OTHER'];\n        return indexOf.call(requiredReviewReasons, reason) >= 0;\n      },\n      getFileUploadNameByReason: function getFileUploadNameByReason(fileName, reason) {\n        var prefix;\n        prefix = function () {\n          switch (reason) {\n            case 'COPAY_DEDUCTIBLE':\n              return 'copay_deductible_uploads';\n            case 'CLAIM_DENIAL':\n              return 'claim_denial_uploads';\n            default:\n              return null;\n          }\n        }();\n        if (!prefix) {\n          throw new Error('invalid reason to upload file for');\n        }\n        return prefix + '/' + uuid4.generate() + '.' + fileName.split('.').pop();\n      },\n      getInsuranceReasonMetadata: function getInsuranceReasonMetadata(reason, url) {\n        var notes;\n        notes = state.notes;\n        if (reason === 'COPAY_DEDUCTIBLE') {\n          return {\n            unpayable_deductible_file_url: url,\n            notes: notes\n          };\n        } else if (reason === 'CLAIM_DENIAL') {\n          return {\n            claim_denial_file_url: url,\n            notes: notes\n          };\n        } else {\n          throw new Error('invalid reason for insurance related deactivation metadata');\n        }\n      },\n      getLeftPracticeMetadata: function getLeftPracticeMetadata(reason, name, unknown) {\n        var notes;\n        notes = state.notes;\n        if (unknown) {\n          return {\n            is_known: false,\n            notes: notes\n          };\n        }\n        if (reason === 'LEFT_PRACTICE') {\n          return {\n            name_of_new_practice: name,\n            notes: notes\n          };\n        } else {\n          throw new Error('invalid reason for new practice related deactivation metadata');\n        }\n      },\n      getEventDateMetadata: function getEventDateMetadata(reason, date, unknown) {\n        var notes;\n        notes = state.notes;\n        if (unknown) {\n          return {\n            is_known: false,\n            notes: notes\n          };\n        }\n        if (reason === 'HOSPICE__NURSING_HOME') {\n          return {\n            date_moved_to_hospice_nursing: date,\n            notes: notes\n          };\n        } else if (reason === 'DECEASED') {\n          return {\n            date_of_death: date,\n            notes: notes\n          };\n        } else {\n          throw new Error('invalid reason for additional information related deactivation metadata');\n        }\n      },\n      getPausePeriodMetadata: function getPausePeriodMetadata(reason, startDate, endDate) {\n        var notes;\n        notes = state.notes;\n        if (reason === 'PAUSE_INVOICING_TRAVELING') {\n          return {\n            travel_start_date: startDate,\n            travel_end_date: endDate,\n            notes: notes\n          };\n        } else if (reason === 'HOSPITALIZED_REHAB') {\n          return {\n            hospitalization_rehab_start_date: startDate,\n            hospitalization_rehab_end_date: endDate,\n            notes: notes\n          };\n        } else {\n          throw new Error('invalid reason for pause period related deactivation metadata');\n        }\n      },\n      getMinDateByDeactivationReason: function getMinDateByDeactivationReason(reason, patientUserProfile) {\n        var createdAt, minDate;\n        minDate = {};\n        createdAt = _.get(patientUserProfile, 'created_at');\n        // Cannot be a date in the past\n        if (reason === 'PAUSE_INVOICING_TRAVELING' || _.isEmpty(createdAt)) {\n          minDate = luxon.DateTime.local().toJSDate();\n        } else {\n          // Cannot be further back then when the patient profile was created\n          minDate = luxon.DateTime.fromJSDate(createdAt).toJSDate();\n        }\n        minDate.isValid = function () {\n          return true;\n        };\n        return minDate;\n      },\n      getMaxDateByDeactivationReason: function getMaxDateByDeactivationReason(reason) {\n        var maxDate;\n        maxDate = {};\n        // Cannot be a date in the future\n        if (reason === 'DECEASED') {\n          maxDate = luxon.DateTime.local().toJSDate();\n        } else {\n          maxDate = luxon.DateTime.local().plus({\n            months: 6\n          }).toJSDate();\n        }\n        maxDate.isValid = function () {\n          return true;\n        };\n        return maxDate;\n      },\n      getReason: function getReason() {\n        return state.reason;\n      },\n      setReason: function setReason(reason) {\n        return _.set(state, 'reason', reason);\n      },\n      getStateByKey: function getStateByKey(key) {\n        return _.get(state, key);\n      },\n      setStateByKey: function setStateByKey(key, value) {\n        return _.set(state, key, value);\n      },\n      getNotes: function getNotes() {\n        return state.notes;\n      },\n      setNotes: function setNotes(notes) {\n        return _.set(state, 'notes', notes);\n      },\n      clearState: function clearState() {\n        return state = _.cloneDeep(initialState);\n      },\n      setDeactivatingPatient: function setDeactivatingPatient(patientUserProfile) {\n        return _.set(state, 'deactivatingPatient', patientUserProfile);\n      },\n      getDeactivatingPatient: function getDeactivatingPatient(patientUserProfile) {\n        return state.deactivatingPatient;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ECustomersService\n   * @description\n   * For RESTful interaction w/ our Enterprise Customer apis.\n   */\n  angular.module('enterprise').factory('ECustomersService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var eCustomersService, enterpriseCustomersCache, restangular;\n    $log = $log.getInstance('ECustomersService');\n    enterpriseCustomersCache = CacheFactory('enterpriseCustomersCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = enterpriseCustomersCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'put' || operation === 'post' || operation === 'delete') {\n          $log.log(\"clearing cache on \".concat(operation, \" request\"));\n          enterpriseCustomersCache.removeAll();\n        }\n        return data.data;\n      });\n    });\n    eCustomersService = restangular.all('enterprise_customers');\n    return {\n      search: function search(query, options) {\n        return eCustomersService.getList(Object.assign({}, {\n          query: query\n        }, options));\n      },\n      get: function get(enterpriseCustomerId) {\n        return eCustomersService.one('', enterpriseCustomerId).get();\n      },\n      getWithCacheBurst: function getWithCacheBurst(enterpriseCustomerId) {\n        $log.log('clearing cache to refresh enterprise customer ', enterpriseCustomerId);\n        enterpriseCustomersCache.removeAll();\n        return eCustomersService.one('', enterpriseCustomerId).get();\n      },\n      put: function put(enterpriseCustomer) {\n        return eCustomersService.one('', enterpriseCustomer.id).customPUT(enterpriseCustomer);\n      },\n      post: function post(enterpriseCustomer) {\n        return eCustomersService.customPOST(enterpriseCustomer);\n      },\n      getAmdOffice: function getAmdOffice(enterpriseCustomerId) {\n        return eCustomersService.one('', enterpriseCustomerId).customGET('amd_office');\n      },\n      getOfficeSpecificAmdOffice: function getOfficeSpecificAmdOffice(enterpriseCustomerId, officeId) {\n        return eCustomersService.one('', enterpriseCustomerId).one('', officeId).customGET('office_amd_office');\n      },\n      getOutcomesDashboard: function getOutcomesDashboard(enterpriseCustomerId) {\n        $log.log('running outcomes dashboard ', enterpriseCustomerId);\n        return eCustomersService.one('', enterpriseCustomerId).customGET('outcomes_studies');\n      },\n      getProviderRoles: function getProviderRoles(enterpriseCustomerId, providerId) {\n        return eCustomersService.one('', enterpriseCustomerId).one('user_profiles', providerId).one('roles').get();\n      },\n      updateProviderRoles: function updateProviderRoles(enterpriseCustomerId, providerId, updatedRoles) {\n        return eCustomersService.one('', enterpriseCustomerId).one('user_profiles', providerId).one('roles').customPUT({\n          roles: updatedRoles\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ECustomerTasksService\n   * @description\n   * For RESTful interaction w/ our Enterprise enterprise_customer_task apis.\n   */\n  angular.module('enterprise').factory('ECustomerTasksService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var eCustomerTasksCache, eCustomerTasksService, restangular;\n    $log = $log.getInstance('ECustomerTasksService');\n    eCustomerTasksCache = CacheFactory('eCustomerTasksCache', {\n      maxAge: 1440 * 60 * 1000,\n      // Items added to this cache expire after 1 days.\n      cacheFlushInterval: 1440 * 60 * 1000,\n      // This cache will clear itself every 1 days.\n      deleteOnExpire: 'aggressive',\n      // Items will be deleted from this cache right when they expire.\n      storageMode: 'localStorage'\n    });\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = eCustomerTasksCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'put' || operation === 'post' || operation === 'delete') {\n          $log.log(\"clearing cache on \".concat(operation, \" request\"));\n          eCustomerTasksCache.removeAll();\n        }\n        return data.data;\n      });\n    });\n    eCustomerTasksService = restangular.all('enterprise_customers');\n    return {\n      getAll: function getAll(enterpriseCustomerId) {\n        return eCustomerTasksService.one('', enterpriseCustomerId).one('enterprise_customer_tasks').get();\n      },\n      put: function put(enterpriseCustomerId, enterpriseCustomerTask) {\n        return eCustomerTasksService.one('', enterpriseCustomerId).one('enterprise_customer_tasks', enterpriseCustomerTask.id).customPUT(enterpriseCustomerTask);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ECustomerFeeService\n   * @description\n   * For RESTful interaction w/ our ECustomerFeeService apis.\n   */\n  angular.module('services').factory('ECustomerFeeService', function (env, $log, $state, Restangular) {\n    'ngInject';\n\n    var eCustomerFeeServiceService, restangular;\n    $log = $log.getInstance('ECustomerFeeService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    eCustomerFeeServiceService = restangular.all('');\n    return {\n      getAll: function getAll(enterpriseCustomerId) {\n        return eCustomerFeeServiceService.one('enterprise_customers', enterpriseCustomerId).one('enterprise_customer_fees').get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EBillingService\n   * @description\n   * For RESTful interaction w/ our Enterprise Billing apis.\n   */\n  angular.module('services').factory('EBillingService', function (env, $log, Restangular) {\n    'ngInject';\n\n    var eBillingService, restangular;\n    $log = $log.getInstance('EBillingService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      return Configurer.setBaseUrl(env.services.baseUrl);\n    });\n    eBillingService = restangular.all('enterprise_customers');\n    return {\n      getStripeCustomer: function getStripeCustomer(enterpriseCustomerId) {\n        return eBillingService.one('', enterpriseCustomerId).one('billing').one('customer').get();\n      },\n      updateCard: function updateCard(enterpriseCustomerId, stripeCardToken, sourceMetadata) {\n        return eBillingService.one('', enterpriseCustomerId).one('billing').one('update_card', stripeCardToken).post('', {\n          metadata: sourceMetadata\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EBillersService\n   * @description\n   * For RESTful interaction w/ our Enterprise Biller apis.\n   */\n  angular.module('enterprise').factory('EBillersService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var eBillersService, restangular;\n    $log = $log.getInstance('EBillersService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    eBillersService = restangular.all('enterprise_customers');\n    return {\n      new: function _new(buildWithObj) {\n        var defaultBiller;\n        defaultBiller = {\n          name_first: null,\n          name_last: null,\n          email: null,\n          enterprise_customer_id: null\n        };\n        return Object.assign({}, defaultBiller, buildWithObj);\n      },\n      getAll: function getAll(enterpriseCustomerId) {\n        return eBillersService.one('', enterpriseCustomerId).one('enterprise_billers').get();\n      },\n      get: function get(enterpriseCustomerId, enterpriseBillerId) {\n        return eBillersService.one('', enterpriseCustomerId).one('enterprise_billers', enterpriseBillerId).get();\n      },\n      put: function put(enterpriseBiller) {\n        return eBillersService.one('', enterpriseBiller.enterprise_customer_id).one('enterprise_billers', enterpriseBiller.id).customPUT(enterpriseBiller);\n      },\n      post: function post(enterpriseBiller) {\n        return eBillersService.one('', enterpriseBiller.enterprise_customer_id).one('enterprise_billers').customPOST(enterpriseBiller);\n      },\n      delete: function _delete(enterpriseBiller) {\n        return eBillersService.one('', enterpriseBiller.enterprise_customer_id).one('enterprise_billers', enterpriseBiller.id).remove();\n      },\n      getBillerFromAuth0Id: function getBillerFromAuth0Id(auth0UserId) {\n        return restangular.one('/enterprise_billers/auth0/' + auth0UserId).get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EAlertThresholdsService\n   * @description\n   * For RESTful interaction w/ our Enterprise Patient Alert Thresholds apis.\n   */\n  angular.module('enterprise').factory('EAlertThresholdsService', function (env, $log, AlertThresholds, Restangular) {\n    'ngInject';\n\n    var EAlertThresholdsService, defaultThreshold, defaults, restangular;\n    $log = $log.getInstance('EAlertThresholdsService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'get') {\n          if (response.headers('X-Total-Count')) {\n            return response;\n          } else {\n            return data.data;\n          }\n        } else {\n          return data.data;\n        }\n      });\n    });\n    EAlertThresholdsService = restangular.all('user_profiles');\n    defaults = {\n      systolic_high_threshold: AlertThresholds.BLOOD_PRESSURE.SYSTOLIC.DEFAULT_HIGH,\n      systolic_low_threshold: AlertThresholds.BLOOD_PRESSURE.SYSTOLIC.DEFAULT_LOW,\n      diastolic_high_threshold: AlertThresholds.BLOOD_PRESSURE.DIASTOLIC.DEFAULT_HIGH,\n      diastolic_low_threshold: AlertThresholds.BLOOD_PRESSURE.DIASTOLIC.DEFAULT_LOW,\n      blood_glucose_low_threshold: AlertThresholds.BLOOD_GLUCOSE.DEFAULT_LOW,\n      blood_glucose_high_threshold: AlertThresholds.BLOOD_GLUCOSE.DEFAULT_HIGH,\n      blood_oxygen_low_threshold: AlertThresholds.BLOOD_OXYGEN.DEFAULT,\n      heartrate_high_threshold: AlertThresholds.HEARTRATE.DEFAULT_HIGH,\n      heartrate_low_threshold: AlertThresholds.HEARTRATE.DEFAULT_LOW\n    };\n    //      available property but not used yet\n    //          blood_oxygen_high_threshold: 10,\n    defaultThreshold = {\n      is_blood_pressure_alert_enabled: true,\n      is_blood_pressure_lower_bound_enabled: false,\n      is_weight_alert_enabled: false,\n      is_blood_glucose_alert_enabled: true,\n      is_blood_oxygen_alert_enabled: false,\n      is_heartrate_alert_enabled: false,\n      weight_increase_num_days: null,\n      weight_increase_pounds: null,\n      weight_decrease_num_days: null,\n      weight_decrease_pounds: null\n    };\n    return {\n      getDefaultThreshold: function getDefaultThreshold() {\n        return Object.assign({}, defaults, defaultThreshold);\n      },\n      post: function post(userProfileId, alertThreshold) {\n        return EAlertThresholdsService.one('', userProfileId).one('patient_alert_thresholds').customPOST(alertThreshold);\n      },\n      get: function get(userProfileId) {\n        return EAlertThresholdsService.one('', userProfileId).one('patient_alert_thresholds').get();\n      },\n      put: function put(userProfileId, alertThreshold) {\n        return EAlertThresholdsService.one('', userProfileId).one('patient_alert_thresholds', alertThreshold.id).customPUT(alertThreshold);\n      },\n      getAuditLogs: function getAuditLogs(userProfileId, filters) {\n        return EAlertThresholdsService.one('', userProfileId).one('patient_alert_thresholds_audit_logs').get(filters);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('AlertThresholdAuditLogHelper', function (EAlertThresholdsService) {\n    'ngInject';\n\n    return {\n      // this field name is synonymous to \"metric\"\n      getFieldName: function getFieldName(field) {\n        switch (false) {\n          case !field.includes('weight'):\n            return 'weight';\n          case !field.includes('heartrate'):\n            return 'heartrate';\n          case !(field.includes('blood_pressure') || field.includes('systolic') || field.includes('diastolic')):\n            return 'blood pressure';\n          case !field.includes('glucose'):\n            return 'blood glucose';\n          case !field.includes('oxygen'):\n            return 'blood oxygen';\n          default:\n            return '';\n        }\n      },\n      getUnits: function getUnits(field, isPlural) {\n        switch (false) {\n          case !field.includes('weight'):\n            return \"\".concat(field.endsWith('days') ? ' day' : ' lb').concat(isPlural ? 's' : '');\n          case !(field.includes('blood_pressure') || field.includes('systolic') || field.includes('diastolic')):\n            return ' mmHg';\n          case !field.includes('glucose'):\n            return ' mm/dL';\n          case !field.includes('heartrate'):\n            return ' bpm';\n          case !field.includes('oxygen'):\n            return '%';\n          default:\n            return '';\n        }\n      },\n      // since create and delete logs are verbose they capture everything,\n      // here we sift through the properties and compare them with the default starting point\n      // then we pluck out and return the ACTUAL changes\n      // NOTE: we can't just call _.difference like we can with arrays\n      getChangeFromDefault: function getChangeFromDefault(log) {\n        return _.chain(log.changed_fields).toPairs().differenceWith(_.toPairs(EAlertThresholdsService.getDefaultThreshold()), _.isEqual).fromPairs().omit([\n        // get key value pairs // compare with key value pairs from default // build object from key value pairs\n        'id', 'created_at', 'updated_at', 'patient_user_profile_id' // remove any irrelevant property keys\n        ]).omitBy(_.isNull).value(); // remove any null values\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:EACHService\n   * @description\n   * For RESTful interaction w/ our enterprise bank/ach apis.\n   */\n  angular.module('services').factory('EACHService', function ($log, env, Restangular, $state, $q, NotificationsService) {\n    'ngInject';\n\n    var eAchService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    eAchService = restangular.all('');\n    return {\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        return eAchService.one('enterprise_customers', enterpriseCustomerId).one('plaid_ach_accounts').get(filters);\n      },\n      post: function post(enterpriseCustomerId, plaidAchAccount) {\n        return eAchService.one('enterprise_customers', enterpriseCustomerId).one('plaid_ach_accounts').customPOST(plaidAchAccount);\n      },\n      put: function put(enterpriseCustomerId, plaidAchAccount) {\n        return eAchService.one('enterprise_customers', enterpriseCustomerId).one('plaid_ach_accounts', plaidAchAccount.id).customPUT(plaidAchAccount);\n      },\n      createLinkToken: function () {\n        var _createLinkToken = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(enterpriseCustomerId) {\n          var plaidAchAccountId,\n            _args = arguments;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                plaidAchAccountId = _args.length > 1 && _args[1] !== undefined ? _args[1] : void 0;\n                _context.next = 3;\n                return plaidAchAccountId != null ? eAchService.one('enterprise_customers', enterpriseCustomerId).one('plaid_ach_accounts', plaidAchAccountId).one('link_token').get() : eAchService.one('enterprise_customers', enterpriseCustomerId).one('plaid_ach_account_link_token').get();\n              case 3:\n                return _context.abrupt(\"return\", _context.sent.linkToken);\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee);\n        }));\n        function createLinkToken(_x) {\n          return _createLinkToken.apply(this, arguments);\n        }\n        return createLinkToken;\n      }(),\n      /*\n      helper methods for banking\n      */\n      onLinkSuccess: function onLinkSuccess(payload, enterpriseCustomerId, userProfileId, stripeCustomerId) {\n        // payload = { public_token, metadata }\n        $log.log('onSuccess payload', payload);\n        return this.savePlaidAchAccount(payload, enterpriseCustomerId, userProfileId, stripeCustomerId);\n      },\n      // requires manual verification via micro-deposits\n      savePlaidAchAccount: function savePlaidAchAccount(payload, enterpriseCustomerId, userProfileId, stripeCustomerId) {\n        var verificationData;\n        // store public_token, account_id, and verification_status\n        verificationData = {\n          stripe_customer_id: stripeCustomerId,\n          enterprise_customer_id: enterpriseCustomerId,\n          user_profile_id: userProfileId,\n          public_token: payload.public_token,\n          account_id: payload.metadata.account.id,\n          account_verification_status: payload.metadata.account.verification_status\n        };\n        return this.post(enterpriseCustomerId, verificationData);\n      },\n      onLinkLoad: function onLinkLoad(payload) {\n        $log.log('onLoad', payload);\n        return $q.when(payload.linkHandler);\n      },\n      onLinkExit: function onLinkExit(payload) {\n        var INSTITUTION_NOT_FOUND;\n        $log.log('onExit', payload);\n        INSTITUTION_NOT_FOUND = 'institution_not_found';\n        if (payload.err !== null) {\n          return $q.when();\n          // The user encountered a Plaid API error prior to exiting.\n        } else if (payload.metadata.status === INSTITUTION_NOT_FOUND) {\n          // enter a credit card instead\n          return $q.when();\n        } else {\n          return $q.when();\n        }\n      },\n      onLinkDestroy: function onLinkDestroy(linkHandler) {\n        if (linkHandler) {\n          return linkHandler.exit();\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('services').factory('DiagnosisCodeDisplayService', function ($log, Icd10Service) {\n    'ngInject';\n\n    var descriptionPromises, getDescription;\n    $log = $log.getInstance('DiagnosisCodeDisplayService');\n    descriptionPromises = {};\n    getDescription = /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(diagnosis) {\n        var description, descriptionPromise, resp;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (descriptionPromises[diagnosis.code]) {\n                _context.next = 9;\n                break;\n              }\n              $log.log(\"not cached: \".concat(diagnosis.code));\n              descriptionPromise = new Promise(function () {\n                return {};\n              });\n              descriptionPromises[diagnosis.code] = descriptionPromise;\n              _context.next = 6;\n              return Icd10Service.get(diagnosis.code);\n            case 6:\n              resp = _context.sent;\n              if (resp.length > 0) {\n                description = resp[0].description;\n              } else if (diagnosis.description && diagnosis.description === !diagnosis.code) {\n                description = diagnosis.description;\n              } else {\n                description = diagnosis.code;\n              }\n              descriptionPromises[diagnosis.code] = Promise.resolve(description);\n            case 9:\n              return _context.abrupt(\"return\", descriptionPromises[diagnosis.code]);\n            case 10:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function getDescription(_x) {\n        return _ref.apply(this, arguments);\n      };\n    }();\n    return {\n      cleanDiagnosisCodeDescriptions: function () {\n        var _cleanDiagnosisCodeDescriptions = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(codes) {\n          var code, i, len, results;\n          return regeneratorRuntime.wrap(function _callee2$(_context2) {\n            while (1) switch (_context2.prev = _context2.next) {\n              case 0:\n                results = [];\n                i = 0, len = codes.length;\n              case 2:\n                if (!(i < len)) {\n                  _context2.next = 11;\n                  break;\n                }\n                code = codes[i];\n                _context2.next = 6;\n                return getDescription(code);\n              case 6:\n                code.description = _context2.sent;\n                results.push($log.log(code));\n              case 8:\n                i++;\n                _context2.next = 2;\n                break;\n              case 11:\n                return _context2.abrupt(\"return\", results);\n              case 12:\n              case \"end\":\n                return _context2.stop();\n            }\n          }, _callee2);\n        }));\n        function cleanDiagnosisCodeDescriptions(_x2) {\n          return _cleanDiagnosisCodeDescriptions.apply(this, arguments);\n        }\n        return cleanDiagnosisCodeDescriptions;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('DevicesService', function (env, $log, Restangular, AuthService) {\n    'ngInject';\n\n    var devicesService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    devicesService = restangular.all('');\n    return {\n      new: function _new() {\n        var newDevice;\n        newDevice = {\n          user_profile_id: null,\n          serial: null\n        };\n        return this.restangularize(newDevice);\n      },\n      getAll: function getAll(userProfileId) {\n        return devicesService.one('user_profiles', userProfileId).one('devices').getList();\n      },\n      get: function get(userProfileId, deviceId) {\n        return devicesService.one('user_profiles', userProfileId).one('devices', deviceId).get();\n      },\n      save: function save(device) {\n        if (device && !device.id) {\n          return devicesService.one('user_profiles', device.user_profile_id).post('devices', device);\n        } else {\n          return devicesService.one('user_profiles', device.user_profile_id).one('devices', device.id).customPUT(device);\n        }\n      },\n      restangularize: function restangularize(device) {\n        return restangular.restangularizeElement(null, device, 'devices');\n      },\n      deviceTypes: [{\n        label: 'Scale',\n        value: 'SCALE'\n      }, {\n        label: 'Blood Pressure Cuff',\n        value: 'BP_CUFF'\n      }, {\n        label: 'Ambient CHF',\n        value: 'AMBIENT_CHF'\n      }]\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:DeviceTypeService\n   * @description\n   * For RESTful interaction w/ our Device Type apis.\n   */\n  angular.module('services').factory('DeviceTypeService', function (env, $log, $state, $q, $filter, Restangular, CacheFactory, UserService, AdminService) {\n    'ngInject';\n\n    var deviceTypesService, restangular;\n    $log = $log.getInstance('DeviceTypeService');\n    //  deviceTypeCache = CacheFactory('deviceTypeCache', {\n    //    maxAge: 14400 * 60 * 1000, # Items added to this cache expire after 10 days.\n    //    cacheFlushInterval: 14400 * 60 * 1000, # This cache will clear itself every 10 days.\n    //    deleteOnExpire: 'aggressive', # Items will be deleted from this cache right when they expire.\n    //    storageMode: 'localStorage'\n    //  })\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      //    Configurer.defaultHttpFields.cache = deviceTypeCache\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        //      $log.log 'data, operation, what, url, response, deferred', data, operation, what, url, response, deferred\n        if (operation === 'get') {\n          if (response.headers('X-Total-Count')) {\n            return response;\n          } else {\n            return data.data;\n          }\n        } else {\n          return data.data;\n        }\n      });\n    });\n    deviceTypesService = restangular.all('');\n    return {\n      // commented out while PP-7323 is on pause\n      //  getAll: (enterpriseCustomerId, filters, user) ->\n      //    deviceTypesService.one('enterprise_customers', enterpriseCustomerId).customGET('device_types', filters).then (result) ->\n      //      return result unless result and user\n      //      if not UserService.hasMultipleEnterpriseCustomers(user) and not AdminService.isMasquerading()\n      //        result?.data?.data = _.filter(result?.data?.data, (deviceType) -> deviceType.category isnt 'AMBIENT_CHF')\n      //      result\n      getAll: function getAll(enterpriseCustomerId, filters) {\n        return deviceTypesService.one('enterprise_customers', enterpriseCustomerId).customGET('device_types', filters);\n      },\n      get: function get(deviceTypeId) {\n        return deviceTypesService.one('device_types', deviceTypeId).get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:DateOfBirthConfig\n   * @description\n   * Configure Date of Birth Pickers\n   * Vars:\n   */\n  angular.module('services').factory('DateOfBirthConfigService', function ($log, $window) {\n    'ngInject';\n\n    $log = $log.getInstance('DateOfBirthConfigService');\n    return {\n      startDateDOB: luxon.DateTime.local(1900, 1, 1),\n      endDateDOB: luxon.DateTime.local().endOf('year'),\n      setupOptions: function setupOptions() {\n        return {\n          linkedCalendars: false,\n          alwaysShowCalendars: true,\n          showDropdowns: true,\n          pickerClasses: 'custom-display wide-ranges',\n          // angular-daterangepicker extra\n          buttonClasses: 'btn',\n          applyButtonClasses: 'btn-primary',\n          cancelButtonClasses: 'btn-danger',\n          minYear: 1900,\n          maxYear: parseInt(moment().format('YYYY'), 10) + 1,\n          locale: {\n            applyLabel: 'Save',\n            cancelLabel: 'Cancel',\n            customRangeLabel: 'Custom range',\n            separator: ' - ',\n            //format: \"YYYY-MM-DD\", # will give you 2017-01-06\n            format: \"M/D/YYYY\" // will give you 6-Jan-17\n          },\n          // format: \"D-MMMM-YY\", # will give you 6-January-17\n          ranges: {\n            'All Patients': [luxon.DateTime.local(1900, 1, 1).toJSDate(), luxon.DateTime.local().endOf('year').toJSDate()],\n            '&ge; 65 Years Old': [luxon.DateTime.local(1900, 1, 1).toJSDate(), luxon.DateTime.local().minus({\n              years: 65\n            }).toJSDate()],\n            '&lt; 65 Years Old': [luxon.DateTime.local().minus({\n              years: 65\n            }).toJSDate(), luxon.DateTime.local().endOf('year').toJSDate()],\n            'Turned 65 years old in the last 6 months': [luxon.DateTime.local().minus({\n              years: 65,\n              months: 6\n            }).toJSDate(), luxon.DateTime.local().minus({\n              years: 65\n            }).toJSDate()],\n            'Turned 65 years old in the last year': [luxon.DateTime.local().minus({\n              years: 66\n            }).toJSDate(), luxon.DateTime.local().minus({\n              years: 65\n            }).toJSDate()]\n          }\n        };\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('DataStoreService', function ($log) {\n    'ngInject';\n\n    var DS;\n    DS = {};\n    return {\n      getStore: function getStore() {\n        return DS;\n      },\n      setUser: function setUser(user) {\n        return DS.user = user;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:CptFeeService\n   * @description\n   * For RESTful interaction w/ our CptFee apis.\n   */\n  angular.module('services').factory('CptFeeService', function (env, $log, $state, $q, $filter, Restangular) {\n    'ngInject';\n\n    var cptFeeService, restangular;\n    $log = $log.getInstance('CptFeeService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    cptFeeService = restangular.all('');\n    return {\n      get: function get(enterpriseCustomerId, officeId) {\n        return cptFeeService.one('enterprise_customers', enterpriseCustomerId).one('offices', officeId).one('cpt_fees').get();\n      },\n      // biller has different routes for permissions checking\n      billerGet: function billerGet(enterpriseBillerId, officeId) {\n        return cptFeeService.one('enterprise_billers', enterpriseBillerId).one('offices', officeId).one('cpt_fees').get();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CountriesService', function ($log, env, Restangular, CacheFactory) {\n    'ngInject';\n\n    var countriesService, countryCache, restangular;\n    countryCache = CacheFactory('countryCache');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      Configurer.defaultHttpFields.cache = countryCache;\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        var mappedCountries, otherCountriesSorted, sortedCountryArrays;\n        if (operation === 'getList') {\n          mappedCountries = _.map(data.data, function (country) {\n            return {\n              label: country.name,\n              value: country.id\n            };\n          });\n          sortedCountryArrays = _.partition(mappedCountries, function (country) {\n            return country.label === 'Canada' || country.label === 'United States';\n          });\n          otherCountriesSorted = _.sortBy(sortedCountryArrays[1], 'label');\n          return sortedCountryArrays[0].reverse().concat(otherCountriesSorted);\n        } else {\n          return data.data;\n        }\n      });\n    });\n    countriesService = restangular.all('countries');\n    return {\n      getAll: function getAll() {\n        return countriesService.getList();\n      },\n      get: function get(country_id) {\n        return countriesService.get(country_id);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:ClinicalMonitoringService\n   * @description\n   * Service wrapper for clinical monitoring API endpoints.\n   */\n  angular.module('services').factory('ClinicalMonitoringService', function (env, $log, Restangular) {\n    'ngInject';\n\n    var restangular, service;\n    $log = $log.getInstance('ClinicalMonitoringService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        if (operation === 'get' && response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    service = restangular.one('clinical_monitoring');\n    return {\n      getMyAssignments: function getMyAssignments() {\n        return service.one('assignments').get();\n      },\n      getMyAssignmentBaseRows: function getMyAssignmentBaseRows() {\n        return service.one('assignments').get({\n          include_counts: false\n        });\n      },\n      getMyAssignmentMetrics: function getMyAssignmentMetrics() {\n        var officeIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n        return service.one('assignments').one('metrics').get({\n          office_ids: officeIds.join(',')\n        });\n      },\n      getOffices: function getOffices() {\n        var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        return service.one('offices').get(params);\n      },\n      getOfficeMetrics: function getOfficeMetrics() {\n        var officeIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n        return service.one('offices').one('metrics').get({\n          office_ids: officeIds.join(',')\n        });\n      },\n      getCoverage: function getCoverage() {\n        return service.one('coverage').get();\n      },\n      createCoverage: function createCoverage(coverage) {\n        return service.one('coverage').customPOST(coverage);\n      },\n      updateCoverage: function updateCoverage(coverage) {\n        return service.one('coverage', coverage.id).customPUT(coverage);\n      },\n      cancelCoverage: function cancelCoverage(coverageId) {\n        var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return service.one('coverage', coverageId).one('cancel').customPOST(payload);\n      },\n      reassignCoverage: function reassignCoverage(coverageId, payload) {\n        return service.one('coverage', coverageId).one('reassign').customPOST(payload);\n      },\n      getStaff: function getStaff() {\n        var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        return service.one('staff').get(params);\n      },\n      getStaffMember: function getStaffMember(userId) {\n        var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return service.one('staff', userId).get(params);\n      },\n      removeStaffMember: function removeStaffMember(userId) {\n        return service.one('staff', userId).remove();\n      },\n      getEligibleStaffUsers: function getEligibleStaffUsers() {\n        var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        return service.one('staff').one('eligible_users').get(params);\n      },\n      getOfficeAssignments: function getOfficeAssignments(officeId) {\n        return service.one('offices', officeId).one('assignments').get();\n      },\n      createOfficeAssignment: function createOfficeAssignment(officeId, assignment) {\n        return service.one('offices', officeId).one('assignments').customPOST(assignment);\n      },\n      updateOfficeAssignment: function updateOfficeAssignment(officeId, assignment) {\n        return service.one('offices', officeId).one('assignments', assignment.id).customPUT(assignment);\n      },\n      deleteOfficeAssignment: function deleteOfficeAssignment(officeId, assignmentId) {\n        return service.one('offices', officeId).one('assignments', assignmentId).remove();\n      },\n      getOfficeSetting: function getOfficeSetting(officeId) {\n        return service.one('offices', officeId).one('setting').get();\n      },\n      saveOfficeSetting: function saveOfficeSetting(officeId, setting) {\n        return service.one('offices', officeId).one('setting').customPUT(setting);\n      },\n      getEligibleUsersForOffice: function getEligibleUsersForOffice(officeId) {\n        return service.one('offices', officeId).one('eligible_users').get();\n      },\n      getUserLicenses: function getUserLicenses(userId) {\n        return service.one('users', userId).one('licenses').get();\n      },\n      replaceUserLicenses: function replaceUserLicenses(userId, licenses) {\n        return service.one('users', userId).one('licenses').customPUT({\n          licenses: licenses\n        });\n      },\n      getUserMemberships: function getUserMemberships(userId) {\n        return service.one('users', userId).one('memberships').get();\n      },\n      replaceUserMemberships: function replaceUserMemberships(userId, memberships) {\n        return service.one('users', userId).one('memberships').customPUT({\n          memberships: memberships\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('services').factory('CarePlanService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getOrCreate: function () {\n        var _getOrCreate = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(userProfileId) {\n          var carePlan;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this.get(userProfileId);\n              case 2:\n                carePlan = _context.sent;\n                if (carePlan) {\n                  _context.next = 7;\n                  break;\n                }\n                _context.next = 6;\n                return this.post(userProfileId, {\n                  patient_user_profile_id: userProfileId\n                });\n              case 6:\n                carePlan = _context.sent;\n              case 7:\n                return _context.abrupt(\"return\", carePlan);\n              case 8:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this);\n        }));\n        function getOrCreate(_x) {\n          return _getOrCreate.apply(this, arguments);\n        }\n        return getOrCreate;\n      }(),\n      get: function get(userProfileId) {\n        return carePlanService.one('', userProfileId).one('care_plan').get();\n      },\n      post: function post(userProfileId, carePlan) {\n        return carePlanService.one('', userProfileId).one('care_plan').customPOST(carePlan);\n      },\n      update: function update(userProfileId, carePlan) {\n        return carePlanService.one('', userProfileId).one('care_plan', carePlan.id).customPUT(carePlan);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanSymptomService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('symptoms').get(options);\n      },\n      post: function post(userProfileId, carePlanId, symptom) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('symptoms').customPOST(symptom);\n      },\n      update: function update(userProfileId, carePlanId, symptom) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('symptoms', symptom.id).customPUT(symptom);\n      },\n      delete: function _delete(userProfileId, carePlanId, symptom) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('symptoms', symptom.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanResponsibleTypeService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanResponsiblePartyTypeService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        return data.data;\n      });\n    });\n    carePlanResponsiblePartyTypeService = restangular.one('responsible_party_types');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanResponsiblePartyTypeService.get(options);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanProviderService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('providers').get(options);\n      },\n      post: function post(userProfileId, carePlanId, provider) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('providers').customPOST(provider);\n      },\n      update: function update(userProfileId, carePlanId, provider) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('providers', provider.id).customPUT(provider);\n      },\n      delete: function _delete(userProfileId, carePlanId, provider) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('providers', provider.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanInterventionService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('interventions').get(options);\n      },\n      post: function post(userProfileId, carePlanId, intervention) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('interventions').customPOST(intervention);\n      },\n      update: function update(userProfileId, carePlanId, intervention) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('interventions', intervention.id).customPUT(intervention);\n      },\n      delete: function _delete(userProfileId, carePlanId, intervention) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('interventions', intervention.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanInterventionTypeService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanInterventionTypeService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        return data.data;\n      });\n    });\n    carePlanInterventionTypeService = restangular.one('intervention_types');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanInterventionTypeService.get(options);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanGoalService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('goals').get(options);\n      },\n      post: function post(userProfileId, carePlanId, goal) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('goals').customPOST(goal);\n      },\n      update: function update(userProfileId, carePlanId, goal) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('goals', goal.id).customPUT(goal);\n      },\n      delete: function _delete(userProfileId, carePlanId, goal) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('goals', goal.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanCaregiverService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('caregivers').get(options);\n      },\n      post: function post(userProfileId, carePlanId, caregiver) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('caregivers').customPOST(caregiver);\n      },\n      update: function update(userProfileId, carePlanId, caregiver) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('caregivers', caregiver.id).customPUT(caregiver);\n      },\n      delete: function _delete(userProfileId, carePlanId, caregiver) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('caregivers', caregiver.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanBarrierService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    carePlanService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('barriers').get(options);\n      },\n      post: function post(userProfileId, carePlanId, barrier) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('barriers').customPOST(barrier);\n      },\n      update: function update(userProfileId, carePlanId, barrier) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('barriers', barrier.id).customPUT(barrier);\n      },\n      delete: function _delete(userProfileId, carePlanId, barrier) {\n        return carePlanService.one('', userProfileId).one('care_plans', carePlanId).one('barriers', barrier.id).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('CarePlanBarrierTypeService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var carePlanBarrierTypeService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        return data.data;\n      });\n    });\n    carePlanBarrierTypeService = restangular.one('barrier_types');\n    return {\n      getAll: function getAll(userProfileId, carePlanId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return carePlanBarrierTypeService.get(options);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  var indexOf = [].indexOf;\n  angular.module('services').factory('CallLogService', function ($log, env, Restangular, $translate, $q, $rootScope, ModalService, NotificationsService, TimesheetService) {\n    'ngInject';\n\n    var callLogService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    callLogService = restangular.all('');\n    return {\n      /*\n       * callLog {object} Create a call log\n       */\n      create: function create(callLog) {\n        return callLogService.one('user_profiles', callLog.user_profile_id).post('call_logs', callLog);\n      },\n      update: function update(patientUserProfileId, callLogId, changes) {\n        return callLogService.one('user_profiles', patientUserProfileId).one('call_logs', callLogId).customPUT(changes);\n      },\n      // Non-API\n      new: function _new() {\n        return {\n          call_type: null,\n          duration_ms: null,\n          response: null,\n          provider_user_profile_id: null,\n          user_profile_id: null,\n          to_phone_number: null,\n          to_phone_type: null\n        };\n      },\n      buildCallLogOptions: function buildCallLogOptions(providers, patientUserProfile) {\n        var hasRpmAndCcm, service, serviceNames, services;\n        services = patientUserProfile.model_patient_services || [];\n        serviceNames = function () {\n          var j, len, ref, results;\n          results = [];\n          for (j = 0, len = services.length; j < len; j++) {\n            service = services[j];\n            if (service != null ? (ref = service.patient_service) != null ? ref.name : void 0 : void 0) {\n              results.push(service.patient_service.name);\n            }\n          }\n          return results;\n        }();\n        hasRpmAndCcm = indexOf.call(serviceNames, 'RPM') >= 0 && indexOf.call(serviceNames, 'CCM') >= 0;\n        return {\n          callDurationOptions: this.buildCallDurationOptions(),\n          patientNumberOptions: this.buildPatientNumberOptions(patientUserProfile),\n          providerOptions: this.buildProviderOptions(providers),\n          connectionStatusOptions: [{\n            label: '',\n            value: ''\n          }, {\n            label: 'No Answer',\n            value: 'no answer'\n          }, {\n            label: 'Spoke with Pt/Caretaker',\n            value: 'Spoke with patient'\n          }, {\n            label: 'Spoke with other',\n            value: 'Spoke with other'\n          }, {\n            label: 'Left voice mail',\n            value: 'Left voice mail'\n          }, {\n            label: 'Busy',\n            value: 'Busy'\n          }, {\n            label: 'Incorrect number',\n            value: 'Incorrect number'\n          }, {\n            label: 'Unable to leave voice mail',\n            value: 'Unable to leave voice mail'\n          }],\n          hasMultipleServices: hasRpmAndCcm\n        };\n      },\n      buildProviderOptions: function buildProviderOptions(providers) {\n        return _.map(providers, function (provider) {\n          return {\n            label: \"\".concat(provider.name_first, \" \").concat(provider.name_last),\n            value: provider.id\n          };\n        });\n      },\n      buildPatientNumberOptions: function buildPatientNumberOptions(patientUserProfile) {\n        var idx, key, options, phoneType, typeKey, val;\n        options = [];\n        for (key in patientUserProfile) {\n          val = patientUserProfile[key];\n          if (key.includes('_number') && val !== null) {\n            idx = key.split('_')[1];\n            typeKey = \"phone_\".concat(idx, \"_type\");\n            phoneType = patientUserProfile[typeKey];\n            options.push({\n              label: val,\n              value: val,\n              type: phoneType\n            });\n          }\n        }\n        return options;\n      },\n      buildCallDurationOptions: function buildCallDurationOptions() {\n        var i, j, label, options;\n        options = [];\n        for (i = j = 1; j <= 20; i = ++j) {\n          label = \"\".concat(i, \" \").concat(i === 1 ? 'minute' : 'minutes');\n          options.push({\n            label: label,\n            value: i * 60\n          });\n        }\n        return options;\n      },\n      findPhoneType: function findPhoneType(phoneList, phoneNumber) {\n        var j, len, phoneObj;\n        for (j = 0, len = phoneList.length; j < len; j++) {\n          phoneObj = phoneList[j];\n          if (phoneObj.value === phoneNumber) {\n            return phoneObj.type;\n          }\n        }\n        return null;\n      },\n      /*\n       * Shared helper function to save a single call log\n       * Used by both e-phone-controls and e-audio-calls directives\n       * @param {object} options - Configuration object\n       * @param {object} options.baseCallLog - Base call log object\n       * @param {number} options.durationMs - Call duration in milliseconds\n       * @param {string} options.observationReportId - Observation report ID\n       * @param {string} options.reportingPeriodText - Reporting period text\n       * @param {object} options.service - Service object\n       * @param {array} options.modalKeys - Translation keys for modal\n       * @param {string} options.successNotificationKey - Success notification key\n       * @param {string} options.errorNotificationKey - Error notification key\n       * @param {string} options.response - Call response\n       * @param {string} options.submittedByUserProfileId - User profile ID submitting the timesheet\n       * @returns {Promise}\n       */\n      saveSingleCallLog: function () {\n        var _saveSingleCallLog = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(options) {\n          var baseCallLog, callLog, callTimeText, durationMs, error, errorNotificationKey, modalKeys, observationReportId, reportingPeriodText, response, result, service, submittedByUserProfileId, successNotificationKey, timeText, timesheet, translations;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) switch (_context.prev = _context.next) {\n              case 0:\n                baseCallLog = options.baseCallLog;\n                durationMs = options.durationMs;\n                observationReportId = options.observationReportId;\n                reportingPeriodText = options.reportingPeriodText;\n                service = options.service;\n                modalKeys = options.modalKeys;\n                successNotificationKey = options.successNotificationKey;\n                errorNotificationKey = options.errorNotificationKey;\n                response = options.response;\n                submittedByUserProfileId = options.submittedByUserProfileId;\n                timeText = durationMs >= 120 ? 'minutes' : 'minute';\n                callTimeText = durationMs / 60 + ' ' + timeText;\n                _context.next = 14;\n                return $translate(modalKeys, {\n                  call_time: callTimeText,\n                  reportPeriodText: reportingPeriodText,\n                  service: service.name\n                });\n              case 14:\n                translations = _context.sent;\n                callLog = angular.extend({}, baseCallLog, {\n                  duration_ms: durationMs,\n                  response: response\n                });\n                timesheet = {\n                  observation_report_id: observationReportId,\n                  submitted_by_user_profile_id: submittedByUserProfileId,\n                  duration_secs: durationMs\n                };\n                _context.next = 19;\n                return ModalService.showModal({}, {\n                  bodyText: translations[modalKeys[3]],\n                  headerText: translations[modalKeys[0]],\n                  closeButtonText: translations[modalKeys[1]],\n                  actionButtonText: translations[modalKeys[2]]\n                }).result;\n              case 19:\n                result = _context.sent;\n                if (result) {\n                  _context.next = 22;\n                  break;\n                }\n                return _context.abrupt(\"return\", $q.resolve({\n                  cancelled: true\n                }));\n              case 22:\n                _context.prev = 22;\n                _context.next = 25;\n                return $q.all([this.create(callLog), TimesheetService.post(timesheet)]);\n              case 25:\n                NotificationsService.success('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.SUCCESS');\n                NotificationsService.success(successNotificationKey, {\n                  call_time: callTimeText,\n                  reportPeriodText: reportingPeriodText,\n                  service: service.name\n                });\n                // Broadcast event to reload timesheets, observationReport, and graphConfig\n                $rootScope.$broadcast('observationReport:reload', {\n                  observationReportId: observationReportId,\n                  patientUserProfileId: baseCallLog.user_profile_id\n                });\n                _context.next = 36;\n                break;\n              case 30:\n                _context.prev = 30;\n                _context.t0 = _context[\"catch\"](22);\n                error = _context.t0;\n                NotificationsService.error('PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOASTS.ERROR');\n                NotificationsService.error(errorNotificationKey);\n                throw error;\n              case 36:\n                return _context.abrupt(\"return\", $q.resolve({\n                  cancelled: false\n                }));\n              case 37:\n              case \"end\":\n                return _context.stop();\n            }\n          }, _callee, this, [[22, 30]]);\n        }));\n        function saveSingleCallLog(_x) {\n          return _saveSingleCallLog.apply(this, arguments);\n        }\n        return saveSingleCallLog;\n      }()\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:BillingService\n   * @description\n   * For RESTful interaction w/ our Billing apis.\n   */\n  angular.module('services').factory('BillingService', function (env, $log, Restangular, CacheFactory) {\n    'ngInject';\n\n    var billingService, restangular;\n    $log = $log.getInstance('BillingService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    billingService = restangular.all('user_profiles');\n    return {\n      updateCard: function updateCard(userProfileId, stripeCardToken, sourceMetadata) {\n        return billingService.one('', userProfileId).one('billing').one('update_card', stripeCardToken).post('', {\n          metadata: sourceMetadata\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  // https://github.com/danieljoos/aws-sign-web\n  // aws-signer service implements an interceptor that takes the awsAuth fields and injects them into every call\n  angular.module('services').factory('AwsAuthInterceptor', function () {\n    'ngInject';\n\n    var defaultAuthConfig, onRequest;\n    defaultAuthConfig = {\n      region: 'us-west-2',\n      service: 'execute-api'\n    };\n    onRequest = function onRequest(config) {\n      var authConfig, signed, signer;\n      if (angular.isUndefined(config.awsAuth) || !config.awsAuth) {\n        return config;\n      }\n      authConfig = angular.extend({}, defaultAuthConfig, config.awsAuth);\n      delete config.awsAuth;\n      if (angular.isUndefined(authConfig.accessKeyId) || angular.isUndefined(authConfig.secretKey)) {\n        return config;\n      }\n      // Re-use existing request transformers for generating the payload.\n      if (config.transformRequest) {\n        authConfig.payloadSerializer = function () {\n          return config.transformRequest.reduce(function (prev, transformer) {\n            return transformer(prev);\n          }, config.data);\n        };\n      }\n      if (authConfig.secretKey) {\n        // Fix: awsSignWeb is expecting a secretAccessKey attribute on the config object\n        // rename that key here\n        authConfig.secretAccessKey = authConfig.secretKey;\n      }\n      // Create the authentication headers and merge them into the existing ones\n      signer = new awsSignWeb.AwsSigner(authConfig);\n      signed = signer.sign(config);\n      angular.merge(config.headers, signed);\n      return config;\n    };\n    return {\n      request: onRequest\n    };\n  }).config(function ($httpProvider) {\n    $httpProvider.interceptors.push('AwsAuthInterceptor');\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('Auth0Store', function ($log, env, store) {\n    var currentStore, delimiter, namespace, shouldUseCaching, storageType;\n    $log = $log.getInstance('Auth0Store');\n    namespace = env.version;\n    storageType = 'localStorage';\n    delimiter = '.ibeat.ls.key.';\n    shouldUseCaching = true;\n    currentStore = store.getNamespacedStore(namespace, storageType, delimiter, shouldUseCaching);\n    // remove localStorage keys from legacy ibeat codebase\n    store.remove('profile');\n    store.remove('id_token');\n    store.remove('access_token');\n    store.remove('currentUserId');\n    store.remove('setupContext');\n    // remove localStorage keys from old namespace\n    Object.keys(localStorage).forEach(function (key, index) {\n      if (key.indexOf(env.version) === -1 && key.indexOf(delimiter) !== -1) {\n        $log.log('removing old localStorage key', key);\n        return localStorage.removeItem(key);\n      }\n    });\n    return currentStore;\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:AuthService\n   * @description\n   * Signup, login, current user ID, token expiration, adding auth headers to requests.\n   */\n  angular.module('services').factory('AuthService', function (env, AUTH0_REDIRECT_SCOPE, $interval, $log, $window, $rootScope, $state, angularAuth0, authManager, jwtHelper, Restangular, CacheFactory, $q, NotificationsService, Auth0Store, LOCALSTORAGE, EnterpriseRoles, AuthConstants) {\n    'ngInject';\n\n    var afterLoginState, connection, enterpriseAdminAfterLoginState, loginState, redirectUri, responseType, scope, tokenExpirationInterval, tokenRenewalTimeout;\n    $log = $log.getInstance('AuthService');\n    loginState = 'account.login';\n    afterLoginState = 'portal.dashboard';\n    enterpriseAdminAfterLoginState = 'enterprise.dashboard';\n    tokenRenewalTimeout = void 0;\n    tokenExpirationInterval = void 0;\n    connection = 'Username-Password-Authentication';\n    scope = 'openid profile email';\n    //  redirectUri = 'http://localhost:3000'\n    redirectUri = env.ui.baseUrl;\n    responseType = 'token id_token';\n    return {\n      /**\n       * @ngdoc function\n       * @name AuthService.signup\n       * @methodOf services.factory:AuthService\n       * @param {object} credentials email/password and user metadata to store in Auth0\n       * @description\n       * Triggers Auth0 custom signup. Passes user_metadata to Auth0. Sets scopes and redirectUri.\n       */\n      signup: function signup(credentials) {\n        var deferred;\n        this.clearIbeatLocalStorageKeys();\n        if (credentials.isEnterpriseCustomerRegistration) {\n          // only for creating an enterprise customer and admin at same time\n          Auth0Store.set('auth0LocalScope', AUTH0_REDIRECT_SCOPE.ENTERPRISE_SIGNUP);\n        } else {\n          // signups, including (for now) admin invitation enterprise signup (customer record already created)\n          Auth0Store.set('auth0LocalScope', AUTH0_REDIRECT_SCOPE.SIGNUP);\n        }\n        deferred = $q.defer();\n        angularAuth0.redirect.signupAndLogin({\n          connection: connection,\n          email: credentials.email,\n          password: credentials.password,\n          user_metadata: {\n            name_first: credentials.nameFirst,\n            name_last: credentials.nameLast,\n            npi: credentials.npi,\n            is_wearer: credentials.isWearer,\n            enterprise_invitation_id: credentials.enterpriseInvitationId,\n            is_enterprise_customer_registration: credentials.isEnterpriseCustomerRegistration,\n            // is this a practice signing up, not an admin invite\n            enterprise_customer_id: credentials.enterpriseCustomerId,\n            signature_session_id: credentials.signatureSessionId,\n            phone_1_number: credentials.phone,\n            practice_role_id: credentials.practiceRole\n          },\n          responseType: responseType,\n          redirectUri: redirectUri,\n          scope: scope,\n          audience: env.auth0.audience\n        }, function (error) {\n          if (error) {\n            return deferred.reject(error);\n          } else {\n            return deferred.resolve();\n          }\n        });\n        return deferred.promise;\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.login\n       * @methodOf services.factory:AuthService\n       * @param {object} credentials email/password\n       * @description\n       * Triggers Auth0 custom login. Un-authenticates user, then logs them in. Passes credentials to Auth0.\n       */\n      login: function login(credentials) {\n        authManager.unauthenticate();\n        this.clearIbeatLocalStorageKeys();\n        Auth0Store.set('auth0LocalScope', AUTH0_REDIRECT_SCOPE.LOGIN);\n        return angularAuth0.authorize({\n          responseType: responseType,\n          redirectUri: redirectUri,\n          scope: scope,\n          audience: env.auth0.audience\n        }, function (error) {\n          $log.error(error);\n          return NotificationsService.error('ACCOUNT.LOGIN.TOASTS.ERROR');\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.scheduleTokenRefresh\n       * @methodOf services.factory:AuthService\n       * @description\n       * Sets a timer to schedule a token refresh for 10 seconds before the AWS token expires\n       */\n      scheduleTokenRefresh: function scheduleTokenRefresh() {\n        var _this = this;\n        var accessToken, accessTokenExpirationDate, bufferMs, delay;\n        this.intervalCheckForExpiredTokens();\n        if (Auth0Store.get('redox_launched_session')) {\n          return;\n        }\n        accessToken = Auth0Store.get('access_token');\n        accessTokenExpirationDate = jwtHelper.getTokenExpirationDate(accessToken); // 1hr\n        Auth0Store.set('logout_at', Auth0Store.get('logout_at') || Date.now() + 7 * 24 * 60 * 60 * 1000); // 1 week from today\n        delay = accessTokenExpirationDate - Date.now();\n        bufferMs = 10000; // renewal token 10 seconds before it expires\n        if (delay > 0 && !jwtHelper.isTokenExpired(accessToken)) {\n          if (tokenRenewalTimeout !== void 0) {\n            clearTimeout(tokenRenewalTimeout);\n          }\n          tokenRenewalTimeout = setTimeout(function () {\n            _this.refreshToken();\n          }, delay - bufferMs);\n          return $log.log('schedule token refresh in', Math.round((delay - bufferMs) / 1000 / 60), 'minutes');\n        }\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.refreshToken\n       * @methodOf services.factory:AuthService\n       * @description\n       * Refresh the accessToken from Auth0 and store it in localStorage\n       */\n      refreshToken: function refreshToken() {\n        var _this2 = this;\n        if (Date.now() > Auth0Store.get('logout_at')) {\n          this.logout();\n          return;\n        }\n        return angularAuth0.checkSession({\n          responseType: responseType,\n          redirectUri: redirectUri,\n          scope: scope,\n          audience: env.auth0.audience\n        }, function (err, authResult) {\n          var decodedAccessToken;\n          if (err) {\n            return $log.log('err', err);\n          } else {\n            $log.log('new tokens', authResult);\n            decodedAccessToken = jwtHelper.decodeToken(authResult.accessToken);\n            $log.log('refreshToken result', authResult, 'decodedAccessToken', decodedAccessToken);\n            Auth0Store.set('access_token', authResult.accessToken);\n            Auth0Store.set('id_token', authResult.idToken);\n            _this2.transformProfileAndStore(authResult.idTokenPayload);\n            authManager.authenticate();\n            return $log.log('authManager.authenticate()', authManager.authenticate());\n          }\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.intervalCheckForExpiredTokens\n       * @methodOf services.factory:AuthService\n       * @description\n       * Creates an interval to check if the JWT token or AWS token have expired. If so, logout the user.\n       */\n      intervalCheckForExpiredTokens: function intervalCheckForExpiredTokens() {\n        var _this3 = this;\n        var fiveMinutesMs;\n        if (tokenExpirationInterval !== void 0) {\n          $interval.cancel(tokenExpirationInterval);\n        }\n        fiveMinutesMs = 5 * 60 * 1000;\n        return tokenExpirationInterval = $interval(function () {\n          var accessToken;\n          accessToken = Auth0Store.get('access_token');\n          if (jwtHelper.isTokenExpired(accessToken)) {\n            return _this3.logout();\n          }\n        }, fiveMinutesMs);\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.requestPasswordResetEmail\n       * @methodOf services.factory:AuthService\n       * @param {object} credentials user email\n       * @description\n       * Triggers Auth0 custom changePassword screen. Successfully filling out form on screen sends PW reset email.\n       */\n      requestPasswordResetEmail: function requestPasswordResetEmail(credentials) {\n        $log.log('credentials', credentials);\n        return angularAuth0.changePassword({\n          connection: connection,\n          email: credentials.email,\n          password: ''\n        }, function (response) {\n          return NotificationsService.success('ACCOUNT.FORGOT_PASSWORD.TOASTS.SUCCESS');\n        }, function (error) {\n          $log.error(error);\n          return NotificationsService.error('ACCOUNT.FORGOT_PASSWORD.TOASTS.ERROR');\n        });\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.logout\n       * @methodOf services.factory:AuthService\n       * @description\n       * Fires off authManager.redirectWhenUnauthenticated() via event. Clears localstorage keys and CacheFactory cache.\n       */\n      logout: function logout() {\n        this.resetSession();\n        $rootScope.$broadcast('unauthenticated'); // fires off authManager.redirectWhenUnauthenticated()\n        return $log.log('signout');\n      },\n      resetSession: function resetSession() {\n        authManager.unauthenticate();\n        this.clearIbeatLocalStorageKeys();\n        if ($window.Intercom) {\n          // https://developers.intercom.com/docs/integrate-intercom-in-a-single-page-app#section-end-of-session-flow\n          $window.Intercom('shutdown');\n        }\n        if (tokenRenewalTimeout !== void 0) {\n          clearTimeout(tokenRenewalTimeout);\n          tokenRenewalTimeout = void 0;\n        }\n        if (tokenExpirationInterval !== void 0) {\n          $interval.cancel(tokenExpirationInterval);\n          tokenExpirationInterval = void 0;\n        }\n        return CacheFactory.clearAll();\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.clearIbeatLocalStorageKeys\n       * @methodOf services.factory:AuthService\n       * @description\n       * Clears all local storage keys used by the UI, except invitationId.\n       */\n      clearIbeatLocalStorageKeys: function clearIbeatLocalStorageKeys() {\n        Auth0Store.remove('profile');\n        Auth0Store.remove('id_token');\n        Auth0Store.remove('access_token');\n        Auth0Store.remove('currentUserId');\n        Auth0Store.remove('setupContext'); // user name and isWearer vars\n        Auth0Store.remove('logout_at');\n        Auth0Store.remove('userProfileId');\n        Auth0Store.remove('redox_launched_session');\n        return this.clearMasqueradingLocalStorageKeys();\n      },\n      clearMasqueradingLocalStorageKeys: function clearMasqueradingLocalStorageKeys() {\n        // clear adminservice storage\n        Auth0Store.remove('masqCustomer');\n        return Auth0Store.remove('masqUser');\n      },\n      isAdmin: function isAdmin() {\n        var loggedInUserProfile, ref;\n        loggedInUserProfile = Auth0Store.get('profile');\n        return (ref = loggedInUserProfile.roles) != null ? ref.includes('admin') : void 0;\n      },\n      isAccountManager: function isAccountManager() {\n        var loggedInUserProfile, ref;\n        loggedInUserProfile = Auth0Store.get('profile');\n        return (ref = loggedInUserProfile.roles) != null ? ref.includes('account_manager') : void 0;\n      },\n      isBiller: function isBiller() {\n        var loggedInUserProfile, ref;\n        loggedInUserProfile = Auth0Store.get('profile');\n        return (ref = loggedInUserProfile.roles) != null ? ref.includes('biller') : void 0;\n      },\n      isProvider: function isProvider() {\n        var loggedInUserProfile, ref;\n        loggedInUserProfile = Auth0Store.get('profile');\n        return (ref = loggedInUserProfile.roles) != null ? ref.includes('provider') : void 0;\n      },\n      isPatient: function isPatient() {\n        var loggedInUserProfile, ref;\n        loggedInUserProfile = Auth0Store.get('profile');\n        return (ref = loggedInUserProfile.roles) != null ? ref.includes('patient') : void 0;\n      },\n      getRoles: function getRoles() {\n        var ref;\n        return (ref = Auth0Store.get('profile')) != null ? ref.roles : void 0;\n      },\n      getRBACRoles: function getRBACRoles() {\n        var ref;\n        return (ref = Auth0Store.get('profile')) != null ? ref.app_metadata.rbac_roles : void 0;\n      },\n      canMasquerade: function canMasquerade() {\n        var ref;\n        return ((ref = Auth0Store.get('profile')) != null ? ref.app_metadata.canMasquerade : void 0) || false;\n      },\n      isSuperAdmin: function isSuperAdmin() {\n        return this.getRBACRoles().includes(EnterpriseRoles.SUPER_ADMIN);\n      },\n      hasClinicalMonitoringMembership: function hasClinicalMonitoringMembership() {\n        var rbacRoles;\n        rbacRoles = this.getRBACRoles() || [];\n        return rbacRoles.includes(EnterpriseRoles.CLINICAL_MONITORING) || rbacRoles.includes(EnterpriseRoles.CLINICAL_MONITORING_MANAGER);\n      },\n      isClinicalMonitoring: function isClinicalMonitoring() {\n        var rbacRoles;\n        rbacRoles = this.getRBACRoles() || [];\n        return rbacRoles.includes(EnterpriseRoles.CLINICAL_MONITORING) || rbacRoles.includes(EnterpriseRoles.CLINICAL_MONITORING_MANAGER) || this.isSuperAdmin();\n      },\n      isClinicalMonitoringManager: function isClinicalMonitoringManager() {\n        var rbacRoles;\n        rbacRoles = this.getRBACRoles() || [];\n        return rbacRoles.includes(EnterpriseRoles.CLINICAL_MONITORING_MANAGER) || this.isSuperAdmin();\n      },\n      isInternal: function isInternal() {\n        var ref;\n        return ((ref = Auth0Store.get('profile')) != null ? ref.app_metadata.isInternal : void 0) || false;\n      },\n      /*\n       * Authorize if any of the allowedRoles is granted to user\n       * Allowed Roles need to prefixed with 'role:'\n       * Check here so as to DRY and enforce role prefix\n       */\n      isAuthorized: function isAuthorized(allowedRoles) {\n        var i, len, rbac_roles, role;\n        rbac_roles = this.getRBACRoles();\n        if (!rbac_roles) {\n          return AuthConstants.UNAUTHORIZED;\n        }\n        if (this.isSuperAdmin()) {\n          return AuthConstants.AUTHORIZED;\n        }\n        allowedRoles = _.map(_.filter(allowedRoles, function (ar) {\n          return ar.startsWith(AuthConstants.ROLE_PREFIX);\n        }), function (ar) {\n          return ar.replace(AuthConstants.ROLE_PREFIX_REGEX, '');\n        });\n        for (i = 0, len = rbac_roles.length; i < len; i++) {\n          role = rbac_roles[i];\n          if (allowedRoles.includes(role)) {\n            return AuthConstants.AUTHORIZED;\n          }\n        }\n        return AuthConstants.UNAUTHORIZED;\n      },\n      // https://github.com/auth0/auth0-angular#authisauthenticated\n      /**\n       * @ngdoc function\n       * @name AuthService.isLoggedIn\n       * @methodOf services.factory:AuthService\n       * @returns {boolean} is the user logged in.\n       */\n      isLoggedIn: function isLoggedIn() {\n        // You're killing me auth0... https://github.com/auth0/angular-jwt/issues/90\n        return $rootScope.isAuthenticated;\n      },\n      // https://github.com/auth0/auth0-angular#authprofile\n      /**\n       * @ngdoc function\n       * @name AuthService.currentUser\n       * @methodOf services.factory:AuthService\n       * @returns {object} object stored in localStorage 'profile' key. The Auth0 profile.\n       */\n      currentUser: function currentUser() {\n        if (this.isLoggedIn()) {\n          return Auth0Store.get('profile');\n        } else {\n          return $log.warn('User not logged in');\n        }\n      },\n      setCurrentUserId: function setCurrentUserId(userId) {\n        return Auth0Store.set('currentUserId', userId);\n      },\n      getCurrentUserId: function getCurrentUserId() {\n        return Auth0Store.get('currentUserId');\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.goToAfterLoginState\n       * @methodOf services.factory:AuthService\n       * @description\n       * Determine, based on user type, what after login state they should arrive at.\n       */\n      goToAfterLoginState: function goToAfterLoginState(user) {\n        var currentSetupStateName, ref, ref1, ref2, setupIsComplete, setupParams;\n        if (this.isLoggedIn() && this.isClinicalMonitoring() && !this.isSuperAdmin()) {\n          return $state.go('portal.clinical-monitoring');\n        } else if (this.isLoggedIn() && (user != null ? (ref = user.user_profile) != null ? ref.is_enterprise_admin : void 0 : void 0) === true) {\n          currentSetupStateName = (ref1 = user.user_profile.setup_progress.current_state) != null ? ref1.name : void 0;\n          setupIsComplete = user.user_profile.setup_progress.is_complete;\n          setupParams = (ref2 = user.user_profile.setup_progress.current_state) != null ? ref2.params : void 0;\n          if (!_.isEmpty(currentSetupStateName) && !setupIsComplete) {\n            return $state.go(currentSetupStateName, setupParams);\n          } else {\n            return $state.go(enterpriseAdminAfterLoginState);\n          }\n        } else if (this.isLoggedIn()) {\n          return $state.go(afterLoginState);\n        } else {\n          return $state.go(loginState);\n        }\n      },\n      getAfterLoginStates: function getAfterLoginStates() {\n        return [afterLoginState, enterpriseAdminAfterLoginState, 'portal.clinical-monitoring'];\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.authenticateCallbackHash\n       * @methodOf services.factory:AuthService\n       * @description\n       * aws-signer service implements an interceptor that takes the awsAuth fields and injects them into every call.\n       * this is a destructive active and overwrites any previous http field values. Be careful setting caches after calling this.\n       * @returns {promise} isAuthenticated boolean\n       */\n      authenticateCallbackHash: function authenticateCallbackHash() {\n        var deferred;\n        $log.log('authenticateCallbackHash');\n        deferred = $q.defer();\n        // https://github.com/auth0/auth0.js/issues/683, https://auth0.com/docs/user-profile/user-impersonation\n        angularAuth0.parseHash({\n          hash: window.location.hash,\n          __enableIdPInitiatedLogin: true\n        }, function (error, authResult) {\n          var decodedAccessToken;\n          if (error) {\n            $log.log('authenticateCallbackHash error', error);\n            return deferred.reject(error);\n          } else if (authResult && authResult.accessToken) {\n            decodedAccessToken = jwtHelper.decodeToken(authResult.accessToken);\n            $log.log('authenticateCallbackHash result', authResult, 'decodedAccessToken', decodedAccessToken);\n            Auth0Store.set('access_token', authResult.accessToken);\n            Auth0Store.set('id_token', authResult.idToken);\n            authManager.authenticate();\n            $log.log('authManager.authenticate()', authManager.authenticate());\n            return deferred.resolve($rootScope.isAuthenticated);\n          }\n        });\n        return deferred.promise;\n      },\n      authenticateStoredTokens: function authenticateStoredTokens(session) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        Auth0Store.set('access_token', session.access_token);\n        Auth0Store.set('id_token', session.id_token);\n        Auth0Store.set('currentUserId', session.currentUserId);\n        Auth0Store.set('userProfileId', session.userProfileId);\n        if (options.redoxLaunch) {\n          Auth0Store.set('redox_launched_session', true);\n        }\n        authManager.authenticate();\n        this.scheduleTokenRefresh();\n        return $rootScope.isAuthenticated;\n      },\n      /**\n       * @ngdoc function\n       * @name AuthService.getProfilePromise\n       * @methodOf services.factory:AuthService\n       * @param {string} accessToken auth0 accessToken\n       * @description\n       * fires angularAuth0.getUserInfo and transforms the payload to contain 'user_metadata' and 'app_metadata' nodes\n       * instead of separate name spaced keys\n       * @returns {promise} Auth0 profile data object\n       */\n      getProfilePromise: function getProfilePromise(accessToken) {\n        var _this4 = this;\n        var deferred;\n        deferred = $q.defer();\n        angularAuth0.client.userInfo(accessToken, function (error, profileData) {\n          if (error) {\n            $log.error(error);\n            return deferred.reject(error);\n          } else {\n            _this4.storeProfileData(profileData);\n            return deferred.resolve(profileData);\n          }\n        });\n        return deferred.promise;\n      },\n      getProfileDataPromise: function getProfileDataPromise(accessToken) {\n        var deferred;\n        deferred = $q.defer();\n        angularAuth0.client.userInfo(accessToken, function (error, profileData) {\n          if (error) {\n            $log.error(error);\n            return deferred.reject(error);\n          } else {\n            return deferred.resolve(profileData);\n          }\n        });\n        return deferred.promise;\n      },\n      storeProfileData: function storeProfileData(profileData) {\n        return this.transformProfileAndStore(profileData);\n      },\n      transformProfileAndStore: function transformProfileAndStore(idTokenPayload) {\n        var namespace;\n        $log.log('transformProfileAndStore', idTokenPayload);\n        namespace = LOCALSTORAGE.PROFILE_NAMESPACE;\n        idTokenPayload.user_metadata = {\n          name_first: idTokenPayload[namespace + 'name_first'],\n          name_last: idTokenPayload[namespace + 'name_last'],\n          npi: idTokenPayload[namespace + 'npi'],\n          is_wearer: idTokenPayload[namespace + 'is_wearer'],\n          signature_session_id: idTokenPayload[namespace + 'signature_session_id'],\n          is_enterprise_customer_registration: idTokenPayload[namespace + 'is_enterprise_customer_registration'],\n          enterprise_invitation_id: idTokenPayload[namespace + 'enterprise_invitation_id'],\n          enterprise_customer_id: idTokenPayload[namespace + 'enterprise_customer_id'],\n          phone_1_number: idTokenPayload[namespace + 'phone_1_number'],\n          practice_role_id: idTokenPayload[namespace + 'practice_role_id']\n        };\n        idTokenPayload.app_metadata = {\n          roles: idTokenPayload[namespace + 'roles'],\n          rbac_roles: idTokenPayload[namespace + 'rbac-roles'] || [],\n          canMasquerade: idTokenPayload[namespace + 'canMasquerade'] || false,\n          isInternal: idTokenPayload[namespace + 'isInternal'] || false // legacy app_metadata roles\n        };\n        idTokenPayload.roles = idTokenPayload[namespace + 'roles'];\n        $log.log('transformProfileAndStore transformed', idTokenPayload);\n        return Auth0Store.set('profile', idTokenPayload);\n      },\n      isEnterpriseWearer: function isEnterpriseWearer(user) {\n        if (!user.user_profile) {\n          return $log.error('isEnterpriseWearer: user.user_profile is not defined');\n        } else {\n          return user.user_profile.enterprise_customer_id;\n        }\n      },\n      storeRedirectToState: function storeRedirectToState(stateName, stateParams) {\n        var redirectTo;\n        $log.log('storeRedirectToState', stateName, stateParams);\n        redirectTo = {\n          name: stateName,\n          params: stateParams\n        };\n        return Auth0Store.set('redirectTo', JSON.stringify(redirectTo));\n      },\n      getRedirectToState: function getRedirectToState() {\n        $log.log('getRedirectToState', Auth0Store.get('redirectTo'));\n        return JSON.parse(Auth0Store.get('redirectTo'));\n      },\n      clearRedirectToState: function clearRedirectToState() {\n        $log.log('clearRedirectToState');\n        return Auth0Store.remove('redirectTo');\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:AdminService\n   * @description\n   * Admin service\n   */\n  angular.module('services').factory('AdminService', function (env, $log, Auth0Store, AuthService, LOCALSTORAGE) {\n    'ngInject';\n\n    $log = $log.getInstance('AdminService');\n    return {\n      getMasqueradingEnterpriseCustomer: function getMasqueradingEnterpriseCustomer() {\n        return Auth0Store.get('masqCustomer');\n      },\n      setMasqueradingEnterpriseCustomer: function setMasqueradingEnterpriseCustomer(enterpriseCustomer) {\n        return Auth0Store.set('masqCustomer', enterpriseCustomer);\n      },\n      getEnterpriseCustomerId: function getEnterpriseCustomerId(enterpriseCustomerId) {\n        var customer;\n        customer = this.getMasqueradingEnterpriseCustomer();\n        if (customer != null ? customer.id : void 0) {\n          if (AuthService.isAdmin() || AuthService.isAccountManager()) {\n            $log.info('Masquerading as customer', customer.name);\n            return customer.id;\n          } else {\n            $log.warn('Warning: Masquerading access denied');\n            return enterpriseCustomerId;\n          }\n        } else {\n          return enterpriseCustomerId;\n        }\n      },\n      setMasqueradingUser: function setMasqueradingUser(user) {\n        return Auth0Store.set('masqUser', user);\n      },\n      getMasqueradingUser: function getMasqueradingUser() {\n        return Auth0Store.get('masqUser');\n      },\n      getUserId: function getUserId(userId) {\n        var rbacRoles, roles, user;\n        user = this.getMasqueradingUser();\n        if (user != null ? user.id : void 0) {\n          roles = Auth0Store.get('profile').roles;\n          rbacRoles = Auth0Store.get('profile')[LOCALSTORAGE.PROFILE_NAMESPACE + 'rbac-roles'];\n          $log.log('roles', roles);\n          if (roles.includes('admin') || roles.includes('account_manager') || rbacRoles.includes('super-admin')) {\n            $log.info('Masquerading as admin', user.id);\n            return user.id;\n          } else {\n            $log.warn('Warning: Masquerading access denied');\n            return userId;\n          }\n        } else {\n          return userId;\n        }\n      },\n      isMasquerading: function isMasquerading() {\n        var loggedInUserProfile, ref;\n        loggedInUserProfile = AuthService.currentUser(); // currently logged in user (admin)\n        $log.log('loggedInUserProfile.sub', loggedInUserProfile.sub);\n        $log.log('@getMasqueradingUser()?.auth0_user_id', (ref = this.getMasqueradingUser()) != null ? ref.auth0_user_id : void 0);\n        return this.getMasqueradingUser() && loggedInUserProfile.sub !== this.getMasqueradingUser().auth0_user_id;\n      },\n      stopMasquerading: function stopMasquerading() {\n        return AuthService.clearMasqueradingLocalStorageKeys();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('AddressService', function ($log, Restangular, env) {\n    'ngInject';\n\n    var addressService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response) {\n        var ref, ref1;\n        if (operation === 'put') {\n          return data != null ? (ref = data.data) != null ? (ref1 = ref[1]) != null ? ref1[0] : void 0 : void 0 : void 0;\n        }\n        if (response.headers('X-Total-Count')) {\n          return response;\n        }\n        return data.data;\n      });\n    });\n    addressService = restangular.all('user_profiles');\n    return {\n      getAll: function getAll(userProfileId, addressId) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        return addressService.one('', userProfileId).one('addresses', addressId);\n      },\n      post: function post(userProfileId, addressId, address) {\n        return addressService.one('', userProfileId).one('addresses', addressId).customPOST(address);\n      },\n      update: function update(userProfileId, addressId, address) {\n        return addressService.one('', userProfileId).one('addresses', addressId).customPUT(address);\n      },\n      delete: function _delete(userProfileId, addressId, address) {\n        return addressService.one('', userProfileId).one('addresses', addressId).remove();\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  /**\n   * @ngdoc service\n   * @name services.factory:AddressLookupService\n   * @description\n   * Looks up address components given a lat/lng or zipcode\n   */\n  angular.module('services').factory('AddressLookupService', function ($q, $http, env, GeolocationService) {\n    'ngInject';\n\n    var MAPS_ENDPOINT;\n    MAPS_ENDPOINT = \"https://maps.google.com/maps/api/geocode/json?key=\".concat(env.google_api_key);\n    return {\n      urlForLatLng: function urlForLatLng(lat, lng) {\n        return MAPS_ENDPOINT + \"&latlng=\".concat(lat, \",\").concat(lng);\n      },\n      urlForZip: function urlForZip(zipcode) {\n        return MAPS_ENDPOINT + \"&components=country:US|postal_code:\".concat(zipcode);\n      },\n      /**\n       * @ngdoc function\n       * @name AddressLookupService.lookupByLatLng\n       * @methodOf services.factory:AddressLookupService\n       * @description\n       * finds address information for lat/lng\n       * @returns {array} google geocode api address objects\n       */\n      lookupByLatLng: function lookupByLatLng(lat, lng) {\n        var deferred, url;\n        deferred = $q.defer();\n        url = this.urlForLatLng(lat, lng);\n        $http.get(url).then(function (response) {\n          var zipCode;\n          zipCode = void 0;\n          angular.forEach(response.data.results, function (result) {\n            if (result.types[0] === 'postal_code') {\n              zipCode = result.address_components[0].short_name;\n            }\n          });\n          return deferred.resolve(zipCode);\n        }, function (error) {\n          return deferred.reject;\n        });\n        return deferred.promise;\n      },\n      /**\n       * @ngdoc function\n       * @name AddressLookupService.lookupAddressByBrowserLocation\n       * @methodOf services.factory:AddressLookupService\n       * @description\n       * finds address information for lat/lng provided by browser location services\n       * @returns {array} google geocode api address objects\n       */\n      lookupAddressByBrowserLocation: function lookupAddressByBrowserLocation() {\n        var _this = this;\n        var deferred;\n        deferred = $q.defer();\n        GeolocationService().then(function (position) {\n          deferred.resolve(_this.lookupByLatLng(position.lat, position.lng));\n        }, deferred.reject);\n        return deferred.promise;\n      },\n      /**\n       * @ngdoc function\n       * @name AddressLookupService.lookupCityStateByZip\n       * @methodOf services.factory:AddressLookupService\n       * @param {string} zipcode postal zipcode\n       * @description\n       * finds address information for a specific zipcode (city, state, county, country)\n       * @returns {object} city, state, county, country\n       */\n      lookupCityStateByZip: function lookupCityStateByZip(zipcode) {\n        var deferred, url;\n        deferred = $q.defer();\n        url = this.urlForZip(zipcode);\n        $http.get(url).then(function (response) {\n          var city, country, county, postalCode, state;\n          city = void 0;\n          state = void 0;\n          postalCode = void 0;\n          county = void 0;\n          country = void 0;\n          angular.forEach(response.data.results, function (result) {\n            var getAddressComponent;\n            if (result.types[0] === 'postal_code') {\n              getAddressComponent = function getAddressComponent(place, componentName, property) {\n                var comps;\n                comps = place.address_components.filter(function (component) {\n                  return component.types.indexOf(componentName) !== -1;\n                });\n                if (comps && comps.length && comps[0] && comps[0][property]) {\n                  return comps[0][property];\n                } else {\n                  return null;\n                }\n              };\n              city = getAddressComponent(result, 'locality', 'long_name') || getAddressComponent(result, 'sublocality', 'long_name');\n              state = getAddressComponent(result, 'administrative_area_level_1', 'short_name');\n              county = getAddressComponent(result, 'administrative_area_level_2', 'short_name');\n              postalCode = getAddressComponent(result, 'postal_code', 'short_name');\n              country = getAddressComponent(result, 'country', 'long_name');\n            }\n          });\n          return deferred.resolve({\n            zip: postalCode,\n            city: city,\n            county: county,\n            state: state,\n            country: country\n          });\n        }, function (error) {\n          return deferred.reject;\n        });\n        return deferred.promise;\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('ACHService', function ($log, env, Restangular) {\n    'ngInject';\n\n    var achService, restangular;\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    achService = restangular.all('');\n    return {\n      post: function post(userProfileId, payload) {\n        return achService.one('user_profiles', userProfileId).one('ach').customPOST(payload);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('AccountService', function (env, $log, Restangular) {\n    'ngInject';\n\n    var accountService, restangular;\n    $log = $log.getInstance('AccountService');\n    restangular = Restangular.withConfig(function (Configurer) {\n      Configurer.setBaseUrl(env.services.baseUrl);\n      return Configurer.addResponseInterceptor(function (data, operation, what, url, response, deferred) {\n        return data.data;\n      });\n    });\n    accountService = restangular.all('account');\n    return {\n      requestPasswordResetEmail: function requestPasswordResetEmail(credentials) {\n        $log.log('credentials', credentials);\n        return accountService.customPOST(credentials, 'forgot-password');\n      },\n      updatePassword: function updatePassword(credentials, passwordResetToken) {\n        $log.log('credentials', credentials);\n        return accountService.customPOST({\n          password: credentials.password\n        }, 'update-password/' + passwordResetToken);\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('UserModel', function (env, $log) {\n    'ngInject';\n\n    return {\n      getCurrentAccountDevice: function getCurrentAccountDevice() {\n        if (_.isEmpty(this.portal_is_viewing_user_profile_device_id)) {\n          $log.warn('portal_is_viewing_user_profile_device_id is null');\n        }\n        return _.find(this.current_account.devices, {\n          id: this.portal_is_viewing_user_profile_device_id\n        });\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('services').factory('UserProfileModel', function (env, $log) {\n    'ngInject';\n\n    return {\n      getFullName: function getFullName() {\n        var fullName;\n        fullName = this.name_first + ' ' + this.name_last;\n        if (_.isEmpty(fullName)) {\n          return '';\n        } else {\n          return fullName;\n        }\n      },\n      getCityState: function getCityState() {\n        var ref, ref1, ref2;\n        if (_.isUndefined((ref = this.addresses[0]) != null ? ref.address_city : void 0)) {\n          return '';\n        } else {\n          return ((ref1 = this.addresses[0]) != null ? ref1.address_city : void 0) + ', ' + ((ref2 = this.addresses[0]) != null ? ref2.address_state : void 0);\n        }\n      },\n      getProfileImageUrl: function getProfileImageUrl() {\n        if (this.profile_image) {\n          return env.aws.s3.buckets.static.url + this.profile_image_path + '?decache=' + Math.random();\n        } else {\n          return null;\n        }\n      }\n    };\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('ibeat', ['pascalprecht.translate', 'ngCookies', 'ngSanitize', 'ngMessages', 'ngAria', 'log.ex.uo', 'restangular', 'angular-cache', 'angular-storage', 'auth0.auth0', 'angular-jwt', 'ui.router', 'ui.bootstrap', 'ui.mask', 'uiSwitch', 'textAngular', 'ngTagsInput', 'toastr', 'angularSpinner', 'truncate', 'validation.match', 'credit-cards', 'ngFileUpload', 'uuid4', 'angularPromiseButtons', 'ngAnimate', 'angular-loading-bar', 'bc.TelephoneFilter', 'ui.select', 'daterangepicker', 'rzSlider', 'hl.sticky', 'ibeat.env',\n  // environment variables - https://github.com/ajwhite/gulp-ng-config\n  'services', 'filters', 'global', 'directives', 'portal', 'enterprise', 'account', 'setup', 'billing', 'accountSettings', 'claims', 'admin', 'biller', 'angularjs-dropdown-multiselect']);\n}).call(void 0);\n\n\n\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n(function () {\n  angular.module('ibeat').run(function ($log, env, $rootScope, $state, $trace, $uiRouter, $uibModalStack, $location, $window, AwsAuthInterceptor, DataStoreService, IntercomService, Auth0Store, jwtHelper, $transitions, Restangular, AuthService, SetupProgressService, authManager, DEBUG, CacheFactory, EUserProfileFilterService) {\n    'ngInject';\n\n    var authenticateUser, logoutUser, redirectIfNeeded, redirectToStateAfterLogin, saveStateToRedirectToAfterLogin;\n    // IMPORTANT: Don't inject API Services (UserService, etc) here, it's breaking the AwsSignerService.\n    // AWS auth headers aren't getting assigned to requests\n    // TODO: look into this more. i'm assuming this is a load order issue.\n    $log = $log.getInstance('run');\n    $log.log('run loaded');\n    if (env.name !== 'prod') {\n      // enable UI-router tracing\n      $trace.enable('TRANSITION');\n    }\n    // https://github.com/mgonto/angularytics\n    // AngularyticsProvider.disablePageViewTracking()\n    // <input type=\"submit\" ng-click=\"doSomething() | trackEvent:'Home Category':'Button clicked'\" />\n    // Angularytics.init()\n\n    // https://github.com/auth0/angular-jwt\n    // authManager.checkAuthOnRefresh() is redundant as we're not using tokenHasExpired.\n    // see: https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/authManager.js\n    // authManager.checkAuthOnRefresh()\n\n    // authManager.redirectWhenUnauthenticated() fires jwtOptionsProvider.config.unauthenticatedRedirectPath in\n    // index.config.auth0.coffee when 'unauthenticated' is broadcast\n    authManager.redirectWhenUnauthenticated();\n    // initial boot for unauthenticated users, \"update\" called when user hits 'enterprise.dashboard'\n    IntercomService.boot();\n    // custom error handler for UI-Router\n    // https://ui-router.github.io/ng1/docs/latest/classes/transition.rejection.html#type\n    // if an error is of type 2 (RejectType.SUPERSEDED) don't log error\n    // this allows us to redirect from a state resolve w/o throwing errors\n    $uiRouter.stateService.defaultErrorHandler(function (error) {\n      $log.log('defaultErrorHandler error', error);\n      if (error.type === 2) {\n        return $log.log('UI-Router', error);\n      } else {\n        return $log.error(error);\n      }\n    });\n    Highcharts.setOptions({\n      colors: ['#A3A3A3', '#FF9500', '#000000']\n    });\n    //  $transitions.onBefore {}, (trans) ->\n    //    $log.log 'onBefore trans', trans\n    $transitions.onSuccess({\n      to: '**'\n    }, function (trans) {\n      return $rootScope.windowSubTitle = \"\";\n    });\n    /*\n    For all requests, determine authenticated status, user role, and redirection path\n    */\n    $transitions.onStart({\n      to: '**'\n    }, function (trans) {\n      var accessToken, currentUser, ref, ref1, ref2, ref3, ref4, ref5, ref6, routeRequiresAdminRole, routeRequiresBillerRole, routeRequiresClinicalMonitoringManagerRole, routeRequiresClinicalMonitoringRole, routeRequiresLogin, routeRequiresProviderRole, state;\n      state = trans.router.stateService;\n      $log.log('onStart trans', trans, state, trans.to());\n      // close all modals on a router state change (unless...)\n      if (trans.to().name.indexOf('wizard') === -1) {\n        $uibModalStack.dismissAll();\n      }\n      // Don't clear state when transitioning to enterprise.observation_report (or any of its sub views) and enterprise.(ccm-)patients (or any of its sub views)\n      if (trans.to().name.indexOf('observation_report') === -1 && trans.to().name.indexOf('enterprise.care_plan') === -1 && trans.to().name.indexOf('patients') === -1) {\n        EUserProfileFilterService.clearState();\n      }\n      /*\n       * IMPORTANT: angular-jwt provides a convenience route data attr named \"requiresLogin\".\n       * requiresLogin doesn't provide us a way to intercept state requests to\n       * perform redirection. so we can't store a request to a protected route and redirect\n       * after a successful login.\n       *\n       * we've implemented our own custom attr: \"data: {loginRequired: true}\" in the router\n       * and our handling redirection on our own.\n       */\n      if (DEBUG.IS_AUTH_ENABLED) {\n        // re-authenticate user on page refresh\n        accessToken = Auth0Store.get('access_token');\n        routeRequiresLogin = (ref = trans.to().data) != null ? ref.loginRequired : void 0;\n        routeRequiresAdminRole = (ref1 = trans.to().data) != null ? ref1.requiresAdmin : void 0;\n        routeRequiresBillerRole = (ref2 = trans.to().data) != null ? ref2.requiresBiller : void 0;\n        routeRequiresProviderRole = (ref3 = trans.to().data) != null ? ref3.requiresProvider : void 0;\n        routeRequiresClinicalMonitoringRole = (ref4 = trans.to().data) != null ? ref4.requiresClinicalMonitoring : void 0;\n        routeRequiresClinicalMonitoringManagerRole = (ref5 = trans.to().data) != null ? ref5.requiresClinicalMonitoringManager : void 0;\n        if (accessToken) {\n          if (!jwtHelper.isTokenExpired(accessToken)) {\n            currentUser = Auth0Store.get('profile');\n            $log.log('currentUser roles', currentUser != null ? currentUser.roles : void 0);\n            // admin only routes\n            if (routeRequiresAdminRole) {\n              if (AuthService.isAdmin() || AuthService.isAccountManager() || AuthService.isAuthorized(['role:administrative'])) {\n                authenticateUser();\n              } else {\n                return logoutUser(state, 'user not admin', currentUser.roles);\n              }\n            }\n            // claim routes\n            if (routeRequiresBillerRole) {\n              if (AuthService.isBiller() || AuthService.isProvider() || AuthService.isAuthorized(['role:biller'])) {\n                authenticateUser();\n              } else {\n                return logoutUser(state, 'user not a biller', currentUser.roles);\n              }\n            }\n            if (routeRequiresClinicalMonitoringRole) {\n              if (AuthService.isClinicalMonitoring()) {\n                authenticateUser();\n              } else {\n                return logoutUser(state, 'user not clinical monitoring', currentUser.roles);\n              }\n            }\n            if (routeRequiresClinicalMonitoringManagerRole) {\n              if (AuthService.isClinicalMonitoringManager()) {\n                authenticateUser();\n              } else {\n                return logoutUser(state, 'user not clinical monitoring manager', currentUser.roles);\n              }\n            }\n            authenticateUser();\n            // token is expired\n          } else if ((ref6 = trans.to().data) != null ? ref6.loginRequired : void 0) {\n            saveStateToRedirectToAfterLogin(trans);\n            return logoutUser(state, 'token(s) expired. JWT expired?', jwtHelper.isTokenExpired(accessToken));\n          } else {}\n          // do nothing\n          // no jwt and route requires login\n        } else if (routeRequiresLogin) {\n          saveStateToRedirectToAfterLogin(trans);\n          return logoutUser(state, 'token doesn\\'t exist');\n        } else {\n          $log.log('do nothing');\n        }\n      }\n    });\n    // do nothing\n    saveStateToRedirectToAfterLogin = function saveStateToRedirectToAfterLogin(trans) {\n      var name, params;\n      name = trans.targetState().name();\n      params = trans.targetState().params();\n      $log.log('name', name, params);\n      return AuthService.storeRedirectToState(name, params);\n    };\n    authenticateUser = function authenticateUser() {\n      authManager.authenticate();\n      return AuthService.scheduleTokenRefresh();\n    };\n    logoutUser = function logoutUser(state, msg, logObject) {\n      $log.warn(msg, logObject);\n      AuthService.logout();\n      return state.target('account.login');\n    };\n    // if they are logged in again, check if the user hasn't finished the setup flow\n    // if they have not, redirect them to where they left off\n    $transitions.onStart({\n      to: AuthService.getAfterLoginStates(),\n      from: 'callback.authzero'\n    }, function (trans) {\n      var user;\n      $log.log('going to redirectIfNeeded', trans);\n      if (AuthService.isLoggedIn()) {\n        user = DataStoreService.getStore().user;\n        return redirectIfNeeded(user, trans);\n      }\n    });\n    // stops a transition in action and\n    // redirects to a stored setup state or state requiring login\n    redirectIfNeeded = function redirectIfNeeded(user, trans) {\n      // redirectIfSetupNotComplete(user, trans)\n      return redirectToStateAfterLogin(trans);\n    };\n    // redirectIfSetupNotComplete = (user, trans) ->\n    //   $log.log 'redirectIfNeeded', user, trans\n    //   currentSetupStateName = user.user_profile.setup_progress.current_state?.name\n    //   setupIsComplete = user.user_profile.setup_progress.is_complete\n    //   setupParams = user.user_profile.setup_progress.current_state?.params\n    //   if !_.isEmpty(currentSetupStateName) and !setupIsComplete and (trans.to().name.indexOf('setup.') is -1)\n    //     if trans.to().name isnt currentSetupStateName\n    //       trans.router.stateService.target(currentSetupStateName, setupParams)\n    redirectToStateAfterLogin = function redirectToStateAfterLogin(trans) {\n      var redirectStateName, redirectStateParams, ref, ref1;\n      redirectStateName = (ref = AuthService.getRedirectToState()) != null ? ref.name : void 0;\n      redirectStateParams = (ref1 = AuthService.getRedirectToState()) != null ? ref1.params : void 0;\n      $log.log('redirectState exists?', redirectStateName, redirectStateParams);\n      if (redirectStateName) {\n        $log.log('redirecting to saved state', redirectStateName, redirectStateParams);\n        AuthService.clearRedirectToState();\n        return trans.router.stateService.target(redirectStateName, redirectStateParams);\n      }\n    };\n    // during the setup flow, keep track of the current state the user is on\n    // note: keep this in the run block. if you move it out and into a state, it won't have time to load on a full state reload.\n    // https://github.com/angular-ui/ui-router/issues/3112\n    $transitions.onFinish({\n      to: ['setup.**', 'setup-enterprise.**']\n    }, /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(trans, state) {\n        var progress, ref, saveState, setupProgress, user;\n        return regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              // save the current state info so the user can resume their progress at a later date\n              saveState = (ref = trans.to().data) != null ? ref.saveState : void 0;\n              if (!_.isEmpty(Auth0Store.get('invitationHash'))) {\n                saveState.invitation_hash = Auth0Store.get('invitationHash');\n              }\n              if (!(saveState === true)) {\n                _context.next = 9;\n                break;\n              }\n              user = trans.injector().get('user'); // resolved in route\n              trans.to().params = trans.params(); // storing the populated route params, not the block stored in the state definition (which is empty)\n              setupProgress = {\n                id: user.user_profile.setup_progress.id,\n                current_state: trans.to()\n              };\n              _context.next = 8;\n              return SetupProgressService.put(user.user_profile, setupProgress);\n            case 8:\n              return _context.abrupt(\"return\", progress = _context.sent);\n            case 9:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function (_x, _x2) {\n        return _ref.apply(this, arguments);\n      };\n    }());\n    /*\n    Global API call configuration\n    */\n    // If user receives a 401, log the user out\n    Restangular.addErrorInterceptor(function (response, deferred, responseHandler) {\n      $log.log('addErrorInterceptor', response, deferred, responseHandler);\n      if (response.status === 401 || response.status === 403) {\n        AuthService.logout();\n        return false; // error handled\n      }\n      return true; // error not handled\n    });\n\n    // globally: don't return \"\" for an empty value, instead return null\n    Restangular.addRequestInterceptor(function (data, operation, what, url) {\n      if (operation === 'put' || operation === 'post' || operation === 'patch') {\n        return angular.forEach(data, function (value, key) {\n          if (value === \"\") {\n            return data[key] = null;\n          }\n        });\n      } else {\n        return data;\n      }\n    });\n    return $log.debug('runBlock end');\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('ibeat').config(function ($stateProvider, $urlRouterProvider) {\n    'ngInject';\n\n    $stateProvider.state('callback', {\n      abstract: true,\n      url: '/callback/',\n      template: '<div ui-view></div>'\n    }).state('callback.authzero', {\n      url: 'auth0/',\n      component: 'authzero',\n      resolve: {\n        profile: function profile(AuthService, Auth0Store) {\n          return AuthService.getProfilePromise(Auth0Store.get('access_token'));\n        }\n      }\n    }).state('callback.redoxLaunch', {\n      url: 'redox-launch/?code',\n      component: 'redoxLaunch'\n    });\n    $stateProvider.state('account', {\n      abstract: true,\n      url: '/account/',\n      component: 'account'\n    }).state('account.login', {\n      url: 'login/?is_email_verified',\n      component: 'login'\n    }).state('account.forgot-password', {\n      url: 'forgot-password/',\n      component: 'forgotPassword'\n    }).state('account.update-password', {\n      url: 'update-password/:password_reset_token/',\n      component: 'updatePassword'\n    });\n    $stateProvider.state('portal', {\n      abstract: true,\n      url: '/portal/',\n      component: 'portal',\n      data: {\n        loginRequired: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService, AdminService) {\n          return UserService.get(AdminService.getUserId(AuthService.getCurrentUserId()));\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          var enterpriseCustomerId, ref;\n          enterpriseCustomerId = (ref = user.user_profile) != null ? ref.enterprise_customer_id : void 0;\n          if (!enterpriseCustomerId) {\n            return null;\n          }\n          return ECustomersService.get(enterpriseCustomerId);\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          if (!(enterpriseCustomer != null ? enterpriseCustomer.id : void 0)) {\n            return null;\n          }\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        }\n      }\n    }).state('account.practice-select', {\n      url: 'practice-select/',\n      component: 'practiceSelect',\n      data: {\n        loginRequired: true\n      },\n      params: {\n        enterprise_customer_id: {\n          value: null,\n          dynamic: true\n        },\n        patient_user_profile_id: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        user: function user(AuthService, UserService, AdminService) {\n          return UserService.get(AdminService.getUserId(AuthService.getCurrentUserId()));\n        }\n      }\n    }).state('account.patient-chart', {\n      url: 'patient-chart/:user_profile_id/',\n      component: 'chart',\n      data: {\n        loginRequired: true\n      },\n      params: {\n        user_profile_id: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        user: function user(AuthService, UserService, AdminService) {\n          return UserService.get(AdminService.getUserId(AuthService.getCurrentUserId()));\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        patientUserProfile: function patientUserProfile($stateParams, user, EUserProfilesService) {\n          return EUserProfilesService.get(user.user_profile.enterprise_customer_id, $stateParams.user_profile_id);\n        },\n        printConfig: function printConfig(GraphDataService) {\n          return GraphDataService.getPrintConfig();\n        },\n        deviceTypes: function deviceTypes(DeviceTypeService, user) {\n          return DeviceTypeService.getAll(user.user_profile.enterprise_customer_id, {\n            is_available: true\n          }, user);\n        }\n      }\n    }).state('portal.support', {\n      url: 'support/',\n      component: 'support'\n    }).state('portal.clinical-monitoring', {\n      url: 'clinical-monitoring/?tab&page&per_page&sort_field&sort_dir&query&staff_page&staff_per_page&staff_sort_field&staff_sort_dir&staff_query',\n      component: 'clinicalMonitoring',\n      params: {\n        tab: {\n          value: 'my-assignments',\n          dynamic: true,\n          squash: true\n        },\n        page: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        per_page: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        sort_field: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        sort_dir: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        query: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        staff_page: {\n          value: null,\n          squash: true\n        },\n        staff_per_page: {\n          value: null,\n          squash: true\n        },\n        staff_sort_field: {\n          value: null,\n          squash: true\n        },\n        staff_sort_dir: {\n          value: null,\n          squash: true\n        },\n        staff_query: {\n          value: null,\n          squash: true\n        }\n      },\n      data: {\n        loginRequired: true,\n        requiresClinicalMonitoring: true\n      }\n    }).state('portal.clinical-monitoring-clinician', {\n      url: 'clinical-monitoring/clinicians/:user_id/',\n      component: 'clinicalMonitoringClinician',\n      data: {\n        loginRequired: true,\n        requiresClinicalMonitoring: true\n      },\n      resolve: {\n        clinician: function clinician(ClinicalMonitoringService, $stateParams) {\n          return ClinicalMonitoringService.getStaffMember($stateParams.user_id);\n        }\n      }\n    }).state('portal.clinical-assignments', {\n      url: 'clinical-assignments/?page&per_page&sort_field&sort_dir&query',\n      component: 'clinicalMonitoring',\n      params: {\n        tab: {\n          value: 'assignments',\n          dynamic: true,\n          squash: true\n        },\n        page: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        per_page: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        sort_field: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        sort_dir: {\n          value: null,\n          dynamic: true,\n          squash: true\n        },\n        query: {\n          value: null,\n          dynamic: true,\n          squash: true\n        }\n      },\n      data: {\n        loginRequired: true,\n        requiresClinicalMonitoring: true\n      }\n    }).state('portal.account-settings', {\n      url: 'account-settings/',\n      component: 'accountSettings',\n      params: {\n        account_settings_page: {\n          value: null\n        }\n      },\n      resolve: {\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        eUserProfile: function eUserProfile(user, EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.get(enterpriseCustomer.id, user.user_profile.id);\n        },\n        providers: function providers(EUserProfilesService, user, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        },\n        enterpriseInvites: function enterpriseInvites(EnterpriseInvitationsService, user, enterpriseCustomer) {\n          return EnterpriseInvitationsService.getAll(enterpriseCustomer.id, {\n            accepted_at: null,\n            office_id: user.user_profile.default_office_id // TODO Scope this to logged in office\n          });\n        },\n        practiceRoles: function practiceRoles(PracticeRolesService) {\n          return PracticeRolesService.getAll();\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        careManagerRole: function careManagerRole(GroupRoleService) {\n          return GroupRoleService.getCareManagerRole();\n        },\n        groupList: function groupList(GroupService, enterpriseCustomer, user, GroupRoles, PER_PAGE) {\n          return GroupService.getPagedGroupList(enterpriseCustomer.id, user.logged_in_office_id, 1, PER_PAGE.PATIENT_GROUPS, user);\n        }\n      }\n    }).state('portal.account-settings.contact', {\n      url: 'contact/',\n      params: {\n        account_settings_page: {\n          value: 'contact'\n        }\n      }\n    }).state('portal.account-settings.claim-notifications', {\n      url: 'claim-notifications/',\n      params: {\n        account_settings_page: {\n          value: 'claim-notifications'\n        }\n      }\n    }).state('portal.account-settings.patient-alerts', {\n      url: 'patient-alerts/',\n      params: {\n        account_settings_page: {\n          value: 'patient-alerts'\n        }\n      }\n    }).state('portal.account-settings.patient-groups', {\n      url: 'patient-groups/',\n      component: 'patientGroups',\n      params: {\n        account_settings_page: {\n          value: 'patient-groups'\n        }\n      }\n    }).state('portal.account-settings.add-device', {\n      abstract: true,\n      url: 'add-device/',\n      views: {\n        'devices': {\n          component: 'addDevice'\n        }\n      }\n    }).state('portal.account-settings.add-device.find', {\n      url: 'find/',\n      views: {\n        'addDevice': {\n          component: 'findDevice'\n        }\n      }\n    }).state('portal.account-settings.add-device.choose-device-account', {\n      url: ':device_serial/choose-account/',\n      params: {\n        device_serial: null\n      },\n      views: {\n        'addDevice': {\n          component: 'chooseDeviceAccount'\n        }\n      }\n    }).state('portal.account-settings.add-device.confirm-device-account', {\n      url: ':device_serial/choose-account/:device_user_profile_id/confirm/',\n      params: {\n        device_serial: null,\n        device_user_profile_id: null\n      },\n      views: {\n        'addDevice': {\n          component: 'confirmDeviceAccount'\n        }\n      }\n    }).state('portal.account-settings.add-device.device-activated', {\n      url: 'activated/',\n      views: {\n        'addDevice': {\n          component: 'deviceActivated'\n        }\n      }\n    });\n    /*\n     * enterprise\n     */\n    $stateProvider.state('enterprise', {\n      abstract: true,\n      url: '/enterprise/',\n      component: 'portal',\n      data: {\n        loginRequired: true,\n        requiresProvider: true\n      },\n      resolve: {\n        deviceTypes: function deviceTypes(DeviceTypeService, user) {\n          return DeviceTypeService.getAll(user.user_profile.enterprise_customer_id, {\n            is_available: true\n          }, user);\n        },\n        user: function user(AuthService, AdminService, UserService) {\n          return UserService.get(AdminService.getUserId(AuthService.getCurrentUserId()));\n        },\n        enterpriseCustomer: function enterpriseCustomer($log, ECustomersService, user, AdminService) {\n          return ECustomersService.get(AdminService.getEnterpriseCustomerId(user.user_profile.enterprise_customer_id));\n        },\n        stripeCustomer: function stripeCustomer(enterpriseCustomer, EBillingService) {\n          return EBillingService.getStripeCustomer(enterpriseCustomer.id);\n        },\n        currentReportingPeriod: function currentReportingPeriod(ReportingPeriodService) {\n          return ReportingPeriodService.getCurrentReportingPeriodForLocalTime();\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        patientService: function patientService(enterpriseCustomer, ESelectedPatientServiceService) {\n          return ESelectedPatientServiceService.updatePatientService(enterpriseCustomer.id);\n        },\n        graphConfig: function graphConfig(GraphDataService) {\n          return GraphDataService.getConfig();\n        }\n      }\n    }).state('enterprise.dashboard', {\n      url: 'dashboard/',\n      component: 'eDashboard',\n      params: {\n        redox_launch_status: {\n          value: null,\n          dynamic: true,\n          squash: true\n        }\n      },\n      resolve: {\n        enterpriseCustomerTasks: function enterpriseCustomerTasks(ECustomerTasksService, enterpriseCustomer) {\n          return ECustomerTasksService.getAll(enterpriseCustomer.id);\n        },\n        enterpriseCustomerTotalEnrollmentCount: function enterpriseCustomerTotalEnrollmentCount(EEnrollmentsService, enterpriseCustomer) {\n          var queryString;\n          queryString = {\n            _totalCount: true,\n            _page: 1,\n            _perPage: 1\n          };\n          return EEnrollmentsService.getAll(enterpriseCustomer.id, queryString);\n        },\n        enterpriseCustomerIncompleteMissingRequired: function enterpriseCustomerIncompleteMissingRequired(EEnrollmentsService, enterpriseCustomer) {\n          var queryString;\n          queryString = {\n            _missingRequired: 'true',\n            _page: 1,\n            _perPage: 1\n          };\n          return EEnrollmentsService.getAll(enterpriseCustomer.id, queryString);\n        },\n        enterpriseCustomerCompleteConsentedShipped: function enterpriseCustomerCompleteConsentedShipped(enterpriseCustomer, user, currentReportingPeriod, EUserProfilesService) {\n          return EUserProfilesService.getPatientDashboard(enterpriseCustomer.id, user.user_profile.id, {\n            reporting_period_id: currentReportingPeriod.id\n          });\n        },\n        enterpriseCustomerCompleteRpmCount: function enterpriseCustomerCompleteRpmCount(EEnrollmentsService, enterpriseCustomer) {\n          var queryString;\n          queryString = {\n            _completeRPM: 'true',\n            _page: 1,\n            _perPage: 1\n          };\n          return EEnrollmentsService.getAll(enterpriseCustomer.id, queryString);\n        },\n        outcomesDashboard: function outcomesDashboard(ECustomersService, enterpriseCustomer) {\n          return ECustomersService.getOutcomesDashboard(enterpriseCustomer.id);\n        },\n        patientDashboard: function patientDashboard(enterpriseCustomer, user, currentReportingPeriod, EUserProfilesService) {\n          return EUserProfilesService.getPatientDashboard(enterpriseCustomer.id, user.user_profile.id, {\n            reporting_period_id: currentReportingPeriod.id\n          });\n        },\n        cptFees: function cptFees(CptFeeService, enterpriseCustomer, user, offices) {\n          var office;\n          office = _.find(offices, {\n            is_primary: true\n          });\n          return CptFeeService.get(enterpriseCustomer.id, office.id);\n        },\n        currentReportingPeriod: function currentReportingPeriod(ReportingPeriodService) {\n          return ReportingPeriodService.getCurrentReportingPeriodForLocalTime();\n        },\n        eUserProfiles: function eUserProfiles($log, $stateParams, user, enterpriseCustomer, currentReportingPeriod, EUserProfilesService) {\n          var queryString;\n          $log.log('currentReportingPeriod', currentReportingPeriod);\n          if (!(currentReportingPeriod != null ? currentReportingPeriod.id : void 0)) {\n            throw new Error('currentReportingPeriod required');\n          }\n          queryString = {\n            provider_user_profile_id: user.user_profile.id,\n            current_period_timesheet_range: {\n              from: 0,\n              to: 0\n            },\n            '$patient_reports.reporting_period_id$': currentReportingPeriod.id // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n          };\n          return EUserProfilesService.getAllPatients(enterpriseCustomer.id, queryString);\n        },\n        eCustomerFees: function eCustomerFees(ECustomerFeeService, enterpriseCustomer) {\n          return ECustomerFeeService.getAll(enterpriseCustomer.id);\n        },\n        latestSignedContractState: function latestSignedContractState(user, enterpriseCustomer, PactsafeService, env) {\n          return PactsafeService.latest(enterpriseCustomer.id, {\n            group_key: enterpriseCustomer.pactsafe_contract_group_id,\n            signer_id: user.user_profile.email,\n            site_access_id: env.pactsafe.site_access_id\n          }, user.user_profile);\n        },\n        offices: function offices(OfficeService, enterpriseCustomer) {\n          return OfficeService.getAll(enterpriseCustomer.id);\n        }\n      },\n      lazyLoad: function lazyLoad($transition$) {\n        var PactsafeService;\n        PactsafeService = $transition$.injector().get('PactsafeService');\n        return PactsafeService.loadPactsafeJS();\n      }\n    }).state('enterprise.dashboard.agreements', {\n      url: 'agreements/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'eAgreements'\n        }\n      },\n      resolve: {\n        eCustomerFees: function eCustomerFees(ECustomerFeeService, enterpriseCustomer) {\n          return ECustomerFeeService.getAll(enterpriseCustomer.id);\n        },\n        latestSignedContractState: function latestSignedContractState(user, enterpriseCustomer, PactsafeService, $q, env, $state, Restangular) {\n          return PactsafeService.latest(enterpriseCustomer.id, {\n            group_key: enterpriseCustomer.pactsafe_contract_group_id,\n            signer_id: user.user_profile.email,\n            site_access_id: env.pactsafe.site_access_id\n          }, user.user_profile).then(function (contractStates) {\n            var latestSignedContractState, shouldNotRedirectToEDashboard;\n            // double check that the user should be able to load this route\n            latestSignedContractState = Restangular.stripRestangular(contractStates);\n            shouldNotRedirectToEDashboard = _.values(latestSignedContractState).includes(false);\n            if (!shouldNotRedirectToEDashboard) {\n              return $state.go('enterprise.dashboard');\n            } else {\n              return $q.when(contractStates);\n            }\n          });\n        }\n      }\n    }).state('enterprise.patients', {\n      url: 'patients/?patient_page&current_period_timesheet_range&status',\n      component: 'ePatients',\n      params: {\n        patient_page: {\n          value: null,\n          dynamic: true\n        },\n        current_period_timesheet_range: {\n          value: null,\n          dynamic: true\n        },\n        status: {\n          value: null,\n          dynamic: true\n        },\n        preserve_filter: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        shouldRedirectProviderToSignAgreements: function shouldRedirectProviderToSignAgreements(user, enterpriseCustomer, PactsafeService) {\n          return PactsafeService.shouldRedirectProviderToSignAgreements(user, enterpriseCustomer);\n        },\n        eUserProfiles: function eUserProfiles($log, $stateParams, user, enterpriseCustomer, currentReportingPeriod, EUserProfilesService, PER_PAGE) {\n          var queryString;\n          $log.log('currentReportingPeriod', currentReportingPeriod);\n          if (!(currentReportingPeriod != null ? currentReportingPeriod.id : void 0)) {\n            throw new Error('currentReportingPeriod required');\n          }\n          queryString = {\n            _page: $stateParams.patient_page || 1,\n            _perPage: PER_PAGE.PATIENTS,\n            _sort: [{\n              field: 'unread',\n              dir: 'DESC'\n            }, {\n              field: 'btr',\n              dir: 'DESC'\n            }, {\n              field: '$latest_device_reading.reading_taken_ts$',\n              dir: 'DESC'\n            }],\n            _service: 'RPM',\n            provider_user_profile_id: user.user_profile.id,\n            current_period_timesheet_range: $stateParams.current_period_timesheet_range || null,\n            '$patient_reports.reporting_period_id$': currentReportingPeriod.id,\n            // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n            '$user_profile.deactivated_at$': $stateParams.status || null\n          };\n          // Set the filter in local storage. Thus the next/prev button will function\n          // we want to set these only when we navigate from patient list to patient details\n          return EUserProfilesService.getAllPatients(enterpriseCustomer.id, !$stateParams.preserve_filter ? queryString : null, true);\n        },\n        patientDashboard: function patientDashboard(enterpriseCustomer, user, currentReportingPeriod, EUserProfilesService) {\n          return EUserProfilesService.getPatientDashboard(enterpriseCustomer.id, user.user_profile.id, {\n            reporting_period_id: currentReportingPeriod.id\n          });\n        },\n        providers: function providers(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        }\n      }\n    }).state('enterprise.ccm-patients', {\n      url: 'ccm-patients/?patient_page&status',\n      component: 'eCCMPatients',\n      params: {\n        patient_page: {\n          value: null,\n          dynamic: true\n        },\n        status: {\n          value: null,\n          dynamic: true\n        },\n        preserve_filter: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        shouldRedirectProviderToSignAgreements: function shouldRedirectProviderToSignAgreements(user, enterpriseCustomer, PactsafeService) {\n          return PactsafeService.shouldRedirectProviderToSignAgreements(user, enterpriseCustomer);\n        },\n        eUserProfiles: function eUserProfiles($log, $stateParams, user, enterpriseCustomer, currentReportingPeriod, EUserProfilesService, PER_PAGE) {\n          var queryString;\n          $log.log('currentReportingPeriod', currentReportingPeriod);\n          if (!(currentReportingPeriod != null ? currentReportingPeriod.id : void 0)) {\n            throw new Error('currentReportingPeriod required');\n          }\n          queryString = {\n            _page: $stateParams.patient_page || 1,\n            _perPage: PER_PAGE.PATIENTS,\n            _sort: [{\n              field: 'care_plan.completed_at',\n              dir: 'DESC'\n            }],\n            provider_user_profile_id: user.user_profile.id,\n            'services': 'CCM',\n            '$patient_reports.reporting_period_id$': currentReportingPeriod.id,\n            // DO NOT REMOVE: only load observation report based on reporting period for local datetime\n            '$user_profile.deactivated_at$': $stateParams.status || null\n          };\n          // Set the filter in local storage. Thus the next/prev button will function\n          // we want to set these only when we navigate from patient list to patient details\n          return EUserProfilesService.getAllPatients(enterpriseCustomer.id, !$stateParams.preserve_filter ? queryString : null, true);\n        },\n        patientDashboard: function patientDashboard(enterpriseCustomer, user, currentReportingPeriod, EUserProfilesService) {\n          return EUserProfilesService.getPatientDashboard(enterpriseCustomer.id, user.user_profile.id, {\n            reporting_period_id: currentReportingPeriod.id\n          });\n        },\n        providers: function providers(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        }\n      }\n    }).state('enterprise.deactivated-patients', {\n      url: 'deactivated-patients/?patient_page&current_period_timesheet_range',\n      component: 'eDeactivatedPatients',\n      params: {\n        user_profile_id: {\n          value: null,\n          dynamic: true\n        },\n        observation_report_id: {\n          value: null,\n          dynamic: true\n        },\n        patient_page: {\n          value: null,\n          dynamic: true\n        },\n        current_period_timesheet_range: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        shouldRedirectProviderToSignAgreements: function shouldRedirectProviderToSignAgreements(user, enterpriseCustomer, PactsafeService) {\n          return PactsafeService.shouldRedirectProviderToSignAgreements(user, enterpriseCustomer);\n        },\n        eUserProfiles: function eUserProfiles($log, $stateParams, user, enterpriseCustomer, currentReportingPeriod, EUserProfilesService, PER_PAGE) {\n          var queryString;\n          $log.log('currentReportingPeriod', currentReportingPeriod);\n          if (!(currentReportingPeriod != null ? currentReportingPeriod.id : void 0)) {\n            throw new Error('currentReportingPeriod required');\n          }\n          queryString = {\n            _page: $stateParams.patient_page || 1,\n            _perPage: PER_PAGE.PATIENTS,\n            _sortDir: 'DESC',\n            _sortField: 'created_at',\n            provider_user_profile_id: user.user_profile.id\n          };\n          return EUserProfilesService.getDeactivatedPatients(enterpriseCustomer.id, queryString);\n        },\n        patientDashboard: function patientDashboard(enterpriseCustomer, user, currentReportingPeriod, EUserProfilesService) {\n          return EUserProfilesService.getDeactivationDashboard(enterpriseCustomer.id, user.user_profile.id, {\n            reporting_period_id: currentReportingPeriod.id\n          });\n        },\n        providers: function providers(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdmins(enterpriseCustomer.id);\n        }\n      }\n    }).state('enterprise.ccm_observation_report', {\n      url: 'user_profiles/:user_profile_id/ccm_observation_reports/:observation_report_id/care_plan/',\n      component: 'eCCMObservationReport',\n      params: {\n        user_profile_id: {\n          value: null,\n          dynamic: true\n        },\n        observation_report_id: {\n          value: null,\n          dynamic: true\n        },\n        reporting_period_id: {\n          value: null,\n          dynamic: true\n        },\n        deactivation_logs_page: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        patientUserProfile: function patientUserProfile($stateParams, user, EUserProfilesService) {\n          return EUserProfilesService.get(user.user_profile.enterprise_customer_id, $stateParams.user_profile_id);\n        },\n        patientCarePlan: function patientCarePlan($stateParams, CarePlanService) {\n          return CarePlanService.get($stateParams.user_profile_id);\n        },\n        providerPatientAuthorizations: function providerPatientAuthorizations(ProviderPatientAuthorizationsService, patientUserProfile) {\n          return ProviderPatientAuthorizationsService.getAll(patientUserProfile.id);\n        },\n        primaryProvider: function primaryProvider(providerPatientAuthorizations) {\n          return $.when(_.find(providerPatientAuthorizations, function (providerPatientAuthorization) {\n            return providerPatientAuthorization.is_primary;\n          }));\n        },\n        observationReport: function observationReport($stateParams, patientUserProfile, ObservationReportService) {\n          return ObservationReportService.getWithStateParams(patientUserProfile.enterprise_customer_id, $stateParams);\n        },\n        timesheets: function timesheets(observationReport, TimesheetService) {\n          return TimesheetService.getAll(observationReport.id, {\n            _sortDir: 'ASC'\n          });\n        },\n        patientSubscription: function patientSubscription($stateParams, UserProfilesService) {\n          return UserProfilesService.getActivePatientSubscription($stateParams.user_profile_id);\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        deactivationLogs: function deactivationLogs($stateParams, UserProfilesService, PER_PAGE) {\n          var queryString;\n          queryString = {\n            _page: $stateParams.deactivation_logs_page || 1,\n            _perPage: PER_PAGE.DEACTIVATION_LOGS,\n            _sortDir: 'DESC',\n            _sortField: 'created_at'\n          };\n          return UserProfilesService.getDeactivationLogs($stateParams.user_profile_id, queryString);\n        },\n        deactivationReasons: function deactivationReasons($stateParams, EDeactivationReasonsService) {\n          return EDeactivationReasonsService.getAll();\n        }\n      }\n    }).state('enterprise.ccm_observation_report.goals', {\n      url: 'goals/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanGoals'\n        }\n      }\n    }).state('enterprise.ccm_observation_report.barriers', {\n      url: 'barriers/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanBarriers'\n        }\n      },\n      resolve: {\n        barrierTypes: function barrierTypes(CarePlanBarrierTypeService) {\n          return CarePlanBarrierTypeService.getAll();\n        }\n      }\n    }).state('enterprise.ccm_observation_report.symptoms', {\n      url: 'symptoms/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanSymptoms'\n        }\n      }\n    }).state('enterprise.ccm_observation_report.interventions', {\n      url: 'interventions/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanInterventions'\n        }\n      },\n      resolve: {\n        interventionTypes: function interventionTypes(CarePlanInterventionTypeService) {\n          return CarePlanInterventionTypeService.getAll();\n        },\n        responsiblePartyTypes: function responsiblePartyTypes(CarePlanResponsibleTypeService) {\n          return CarePlanResponsibleTypeService.getAll();\n        }\n      }\n    }).state('enterprise.ccm_observation_report.vitals', {\n      url: 'vitals/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanVitals'\n        }\n      }\n    }).state('enterprise.ccm_observation_report.allergies', {\n      url: 'allergies/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanAllergies'\n        }\n      }\n    }).state('enterprise.ccm_observation_report.medications', {\n      url: 'medications/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanMedications'\n        }\n      }\n    }).state('enterprise.ccm_observation_report.providers', {\n      url: 'providers/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanProviders'\n        }\n      },\n      resolve: {\n        practiceSpecialties: function practiceSpecialties(PracticeSpecialtyService) {\n          return PracticeSpecialtyService.getAll();\n        }\n      }\n    }).state('enterprise.ccm_observation_report.caregivers', {\n      url: 'caregivers/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanCaregivers'\n        }\n      },\n      resolve: {\n        relationships: function relationships(RelationshipsService) {\n          return RelationshipsService.getAll();\n        }\n      }\n    }).state('enterprise.observation_report', {\n      url: 'user_profiles/:user_profile_id/observation_reports/:observation_report_id/?deactivation_logs_page&alert_at&alert_type&reading',\n      component: 'eObservationReport',\n      params: {\n        user_profile_id: {\n          value: null,\n          dynamic: true\n        },\n        observation_report_id: {\n          value: null,\n          dynamic: true\n        },\n        reporting_period_id: {\n          value: null,\n          dynamic: true\n        },\n        deactivation_logs_page: {\n          value: null,\n          dynamic: true\n        },\n        alert_at: {\n          value: null,\n          dynamic: true\n        },\n        alert_type: {\n          value: null,\n          dynamic: true\n        },\n        reading: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        patientUserProfile: function patientUserProfile($stateParams, user, EUserProfilesService) {\n          return EUserProfilesService.get(user.user_profile.enterprise_customer_id, $stateParams.user_profile_id);\n        },\n        providerPatientAuthorizations: function providerPatientAuthorizations(ProviderPatientAuthorizationsService, patientUserProfile) {\n          return ProviderPatientAuthorizationsService.getAll(patientUserProfile.id);\n        },\n        primaryProvider: function primaryProvider(providerPatientAuthorizations) {\n          return $.when(_.find(providerPatientAuthorizations, function (providerPatientAuthorization) {\n            return providerPatientAuthorization.is_primary;\n          }));\n        },\n        observationReport: function observationReport($stateParams, patientUserProfile, ObservationReportService) {\n          return ObservationReportService.getWithStateParams(patientUserProfile.enterprise_customer_id, $stateParams);\n        },\n        observationReports: function observationReports(ObservationReportService, user, patientUserProfile) {\n          return ObservationReportService.getAll(user.user_profile.enterprise_customer_id, {\n            patient_user_profile_id: patientUserProfile.id,\n            '$service.name$': 'RPM',\n            _sortField: 'created_at',\n            _sortDir: 'DESC'\n          });\n        },\n        threshold: function threshold(patientUserProfile, EAlertThresholdsService) {\n          return EAlertThresholdsService.get(patientUserProfile.id);\n        },\n        timesheets: function timesheets(observationReport, TimesheetService) {\n          return TimesheetService.getAll(observationReport.id, {\n            _sortDir: 'ASC'\n          });\n        },\n        patientSubscription: function patientSubscription($stateParams, UserProfilesService) {\n          return UserProfilesService.getActivePatientSubscription($stateParams.user_profile_id);\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        deactivationLogs: function deactivationLogs($stateParams, UserProfilesService, PER_PAGE) {\n          var queryString;\n          queryString = {\n            _page: $stateParams.deactivation_logs_page || 1,\n            _perPage: PER_PAGE.DEACTIVATION_LOGS,\n            _sortDir: 'DESC',\n            _sortField: 'created_at'\n          };\n          return UserProfilesService.getDeactivationLogs($stateParams.user_profile_id, queryString);\n        },\n        deactivationReasons: function deactivationReasons($stateParams, EDeactivationReasonsService) {\n          return EDeactivationReasonsService.getAll();\n        },\n        practiceSpecialties: function practiceSpecialties(PracticeSpecialtyService) {\n          return PracticeSpecialtyService.getAll();\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_contact', {\n      url: 'deactivation/contact/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationContact'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_reason', {\n      url: 'deactivation/reason/',\n      params: {\n        patientUserProfile: {\n          dynamic: true\n        }\n      },\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationReason'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_additional_info', {\n      url: 'deactivation/additional-info/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationAdditionalInfo'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_temporary', {\n      url: 'deactivation/temporary/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientTempDeactivation'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_billing_cycles', {\n      url: 'deactivation/billing-cycles/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationBillingCycles'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_device_issue', {\n      url: 'deactivation/device-issue/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationDeviceIssue'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_insurance_change', {\n      url: 'deactivation/insurance-change/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationInsuranceChange'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_file_delete_confirmation', {\n      url: 'deactivation/file-delete-confirmation/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationDeleteFileConfirmation'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_adherence', {\n      url: 'deactivation/patient-adherence/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationAdherence'\n        }\n      }\n    }).state('enterprise.observation_report.patient_deactivation_complete', {\n      url: 'deactivation/complete/',\n      views: {\n        enterpriseModalRoot: {\n          component: 'ePatientDeactivationComplete'\n        }\n      }\n    }).state('enterprise.enrollments', {\n      url: 'enrollments/?enrollment_page',\n      component: 'eEnrollments',\n      params: {\n        enrollment_page: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        shouldRedirectProviderToSignAgreements: function shouldRedirectProviderToSignAgreements(user, enterpriseCustomer, PactsafeService) {\n          return PactsafeService.shouldRedirectProviderToSignAgreements(user, enterpriseCustomer);\n        },\n        enrollments: function enrollments($stateParams, EEnrollmentsService, AdminService, enterpriseCustomer, PER_PAGE) {\n          var queryString;\n          queryString = {\n            _page: $stateParams.enrollment_page || 1,\n            _perPage: PER_PAGE.ENROLLMENTS,\n            _sortDir: 'desc',\n            _sortField: 'created_at'\n          };\n          return EEnrollmentsService.getAll(enterpriseCustomer.id, queryString);\n        },\n        enrollmentStatuses: function enrollmentStatuses($stateParams, EEnrollmentStatusesService) {\n          return EEnrollmentStatusesService.getAll();\n        },\n        primaryProviders: function primaryProviders(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        },\n        latestSignedContractState: function latestSignedContractState(user, enterpriseCustomer, PactsafeService, env) {\n          return PactsafeService.latest(enterpriseCustomer.id, {\n            group_key: enterpriseCustomer.pactsafe_contract_group_id,\n            signer_id: user.user_profile.email,\n            site_access_id: env.pactsafe.site_access_id\n          }, user.user_profile);\n        }\n      }\n    }).state('enterprise.enrollment', {\n      url: 'enrollments/:enterprise_enrollment_id/',\n      component: 'eEnrollmentsAdd',\n      resolve: {\n        enterpriseCustomer: function enterpriseCustomer($log, ECustomersService, user, AdminService) {\n          return ECustomersService.get(AdminService.getEnterpriseCustomerId(user.user_profile.enterprise_customer_id));\n        },\n        relationships: function relationships(RelationshipsService) {\n          return RelationshipsService.getAll();\n        },\n        enrollment: function enrollment($stateParams, enterpriseCustomer, EEnrollmentsService) {\n          return EEnrollmentsService.get(enterpriseCustomer.id, $stateParams.enterprise_enrollment_id);\n        },\n        medAdvantageProviders: function medAdvantageProviders(MedicareAdvantageService) {\n          return MedicareAdvantageService.getAll();\n        },\n        providers: function providers(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        },\n        tosDeliveryMethods: function tosDeliveryMethods(TOSDeliveryMethodsService) {\n          return TOSDeliveryMethodsService.getAll();\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        globalConfigurations: function globalConfigurations(GlobalConfigurationsService) {\n          return GlobalConfigurationsService.getAll();\n        }\n      }\n    }).state('enterprise.enrollment-provision', {\n      url: 'enrollments/:enterprise_enrollment_id/provision/',\n      component: 'eEnrollmentsProvision',\n      data: {\n        requiresAdmin: true\n      },\n      resolve: {\n        enrollment: function enrollment($stateParams, enterpriseCustomer, EEnrollmentsService) {\n          return EEnrollmentsService.get(enterpriseCustomer.id, $stateParams.enterprise_enrollment_id);\n        },\n        enrollmentStatuses: function enrollmentStatuses($stateParams, EEnrollmentStatusesService) {\n          return EEnrollmentStatusesService.getAll();\n        }\n      }\n    }).state('enterprise.enrollments-add', {\n      url: 'enrollments/new/',\n      component: 'eEnrollmentsAdd',\n      resolve: {\n        enterpriseCustomer: function enterpriseCustomer($log, ECustomersService, user, AdminService) {\n          return ECustomersService.get(AdminService.getEnterpriseCustomerId(user.user_profile.enterprise_customer_id));\n        },\n        relationships: function relationships(RelationshipsService) {\n          return RelationshipsService.getAll();\n        },\n        medAdvantageProviders: function medAdvantageProviders(MedicareAdvantageService) {\n          return MedicareAdvantageService.getAll();\n        },\n        providers: function providers(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        },\n        tosDeliveryMethods: function tosDeliveryMethods(TOSDeliveryMethodsService) {\n          return TOSDeliveryMethodsService.getAll();\n        },\n        globalConfigurations: function globalConfigurations(GlobalConfigurationsService) {\n          return GlobalConfigurationsService.getAll();\n        }\n      }\n    }).state('enterprise.enrollments-incomplete', {\n      url: 'enrollments-incomplete/',\n      component: 'eEnrollmentsIncomplete',\n      params: {\n        enrollment_page: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        shouldRedirectProviderToSignAgreements: function shouldRedirectProviderToSignAgreements(user, enterpriseCustomer, PactsafeService) {\n          return PactsafeService.shouldRedirectProviderToSignAgreements(user, enterpriseCustomer);\n        },\n        enrollments: function enrollments($stateParams, EEnrollmentsService, AdminService, enterpriseCustomer, PER_PAGE) {\n          var queryString;\n          queryString = {\n            _page: $stateParams.enrollment_page || 1,\n            _perPage: PER_PAGE.ENROLLMENTS,\n            _sortDir: 'desc',\n            _sortField: 'created_at'\n          };\n          return EEnrollmentsService.getAllIncomplete(enterpriseCustomer.id, queryString);\n        },\n        enrollmentStatuses: function enrollmentStatuses($stateParams, EEnrollmentStatusesService) {\n          return EEnrollmentStatusesService.getAll();\n        },\n        primaryProviders: function primaryProviders(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        }\n      }\n    }).state('enterprise.enrollments-incomplete-edit', {\n      url: 'enrollments-incomplete/:enterprise_enrollment_id/',\n      component: 'eEnrollmentsIncompleteEdit',\n      resolve: {\n        enterpriseCustomer: function enterpriseCustomer($log, ECustomersService, user, AdminService) {\n          return ECustomersService.get(AdminService.getEnterpriseCustomerId(user.user_profile.enterprise_customer_id));\n        },\n        relationships: function relationships(RelationshipsService) {\n          return RelationshipsService.getAll();\n        },\n        enrollment: function enrollment($stateParams, enterpriseCustomer, EEnrollmentsService) {\n          return EEnrollmentsService.get(enterpriseCustomer.id, $stateParams.enterprise_enrollment_id);\n        },\n        medAdvantageProviders: function medAdvantageProviders(MedicareAdvantageService) {\n          return MedicareAdvantageService.getAll();\n        },\n        providers: function providers(EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        },\n        tosDeliveryMethods: function tosDeliveryMethods(TOSDeliveryMethodsService) {\n          return TOSDeliveryMethodsService.getAll();\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        globalConfigurations: function globalConfigurations(GlobalConfigurationsService) {\n          return GlobalConfigurationsService.getAll();\n        }\n      }\n    }).state('enterprise.claims', {\n      url: 'claims/?page',\n      component: 'claims',\n      params: {\n        page: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        claims: function claims($stateParams, EInsuranceClaimsService, enterpriseCustomer, PER_PAGE, user) {\n          var dateRange, endDate, now, queryString, startDate;\n          // Initial data should start with last two months\n          now = luxon.DateTime.local();\n          startDate = now.startOf('month').minus({\n            months: 1\n          });\n          endDate = now.endOf('month');\n          dateRange = {\n            'during': startDate,\n            'and': endDate\n          };\n          queryString = {\n            _page: $stateParams.page || 1,\n            _perPage: PER_PAGE.CLAIMS,\n            _sortDir: 'desc',\n            _sortField: 'created_at',\n            date_of_service: dateRange\n          };\n          return EInsuranceClaimsService.getAll(enterpriseCustomer.id, queryString);\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        }\n      }\n    }).state('enterprise.claim', {\n      url: 'claims/:claim_id/',\n      component: 'claim',\n      params: {\n        claim_id: null\n      },\n      resolve: {\n        claim: function claim($stateParams, EInsuranceClaimsService, enterpriseCustomer) {\n          return EInsuranceClaimsService.get(enterpriseCustomer.id, $stateParams.claim_id);\n        }\n      }\n    }).state('enterprise.practicesettings', {\n      url: 'practicesettings/',\n      component: 'practiceSettings',\n      resolve: {\n        providers: function providers(EUserProfilesService, user, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdminsScopedByOffice(enterpriseCustomer.id);\n        },\n        enterpriseInvites: function enterpriseInvites(EnterpriseInvitationsService, user, enterpriseCustomer) {\n          return EnterpriseInvitationsService.getAll(enterpriseCustomer.id, {\n            accepted_at: null,\n            office_id: user.user_profile.default_office_id // TODO Scope\n          });\n        },\n        practiceRoles: function practiceRoles(PracticeRolesService) {\n          return PracticeRolesService.getAll();\n        },\n        enterpriseCustomer: function enterpriseCustomer($log, ECustomersService, user, AdminService) {\n          return ECustomersService.get(AdminService.getEnterpriseCustomerId(user.user_profile.enterprise_customer_id));\n        },\n        stripeCustomer: function stripeCustomer(enterpriseCustomer, EBillingService) {\n          return EBillingService.getStripeCustomer(enterpriseCustomer.id);\n        },\n        offices: function offices(OfficeService, user) {\n          return OfficeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        },\n        ehrTypeCredentialFields: function ehrTypeCredentialFields(EhrTypesService, enterpriseCustomer, $q) {\n          if (enterpriseCustomer.ehr_type_id) {\n            return EhrTypesService.getCredentialFields(enterpriseCustomer.ehr_type_id);\n          } else {\n            return $q.when(null);\n          }\n        },\n        amdOffice: function amdOffice(AuthService, enterpriseCustomer, ECustomersService) {\n          return ECustomersService.getAmdOffice(enterpriseCustomer.id);\n        },\n        loggedInOffice: function loggedInOffice(OfficeService, enterpriseCustomer) {\n          return OfficeService.loggedInOffice(enterpriseCustomer.id);\n        },\n        latestSignedContractState: function latestSignedContractState(user, enterpriseCustomer, PactsafeService, env) {\n          return PactsafeService.latest(enterpriseCustomer.id, {\n            group_key: enterpriseCustomer.pactsafe_contract_group_id,\n            signer_id: user.user_profile.email,\n            site_access_id: env.pactsafe.site_access_id\n          }, user.user_profile);\n        },\n        enterpriseRoles: function enterpriseRoles(EnterpriseRolesService) {\n          return EnterpriseRolesService.getAll();\n        }\n      }\n    }).state('enterprise.billing.billing-overview', {\n      url: 'overview/',\n      component: 'practiceSettings'\n    }).state('enterprise.practicesettings.update-bank-account', {\n      url: 'update-bank-account/',\n      views: {\n        bankAccount: {\n          component: 'updateBankAccount'\n        }\n      }\n    }).state('enterprise.practicesettingstab', {\n      url: 'practicesettings/:tab/',\n      component: 'practiceSettings',\n      params: {\n        tab: null\n      },\n      resolve: {\n        tab: function tab($stateParams) {\n          return $stateParams.tab;\n        },\n        providers: function providers(EUserProfilesService, user, enterpriseCustomer) {\n          return EUserProfilesService.getAllAdmins(enterpriseCustomer.id);\n        },\n        enterpriseInvites: function enterpriseInvites(EnterpriseInvitationsService, user, enterpriseCustomer) {\n          return EnterpriseInvitationsService.getAll(enterpriseCustomer.id, {\n            accepted_at: null,\n            office_id: user.user_profile.default_office_id // TODO Scope\n          });\n        },\n        practiceRoles: function practiceRoles(PracticeRolesService) {\n          return PracticeRolesService.getAll();\n        },\n        enterpriseCustomer: function enterpriseCustomer($log, ECustomersService, user, AdminService) {\n          return ECustomersService.get(AdminService.getEnterpriseCustomerId(user.user_profile.enterprise_customer_id));\n        },\n        stripeCustomer: function stripeCustomer(enterpriseCustomer, EBillingService) {\n          return EBillingService.getStripeCustomer(enterpriseCustomer.id);\n        },\n        offices: function offices(OfficeService, user) {\n          return OfficeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        latestSignedContractState: function latestSignedContractState(user, enterpriseCustomer, PactsafeService, env) {\n          return PactsafeService.latest(enterpriseCustomer.id, {\n            group_key: enterpriseCustomer.pactsafe_contract_group_id,\n            signer_id: user.user_profile.email,\n            site_access_id: env.pactsafe.site_access_id\n          }, user.user_profile);\n        }\n      }\n    }).state('enterprise.care_plan', {\n      url: 'user_profiles/:user_profile_id/care_plan/',\n      component: 'eCarePlan',\n      abstract: true,\n      params: {\n        user_profile_id: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        patientUserProfile: function patientUserProfile($stateParams, user, EUserProfilesService) {\n          return EUserProfilesService.get(user.user_profile.enterprise_customer_id, $stateParams.user_profile_id);\n        },\n        patientCarePlan: function patientCarePlan($stateParams, CarePlanService) {\n          return CarePlanService.getOrCreate($stateParams.user_profile_id);\n        },\n        providerPatientAuthorizations: function providerPatientAuthorizations(ProviderPatientAuthorizationsService, patientUserProfile) {\n          return ProviderPatientAuthorizationsService.getAll(patientUserProfile.id);\n        },\n        features: function features(FeaturesService, enterpriseCustomer) {\n          return FeaturesService.getAll(enterpriseCustomer.id);\n        }\n      }\n    }).state('enterprise.care_plan.goals', {\n      url: 'goals/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanGoals'\n        }\n      }\n    }).state('enterprise.care_plan.barriers', {\n      url: 'barriers/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanBarriers'\n        }\n      },\n      resolve: {\n        barrierTypes: function barrierTypes(CarePlanBarrierTypeService) {\n          return CarePlanBarrierTypeService.getAll();\n        }\n      }\n    }).state('enterprise.care_plan.symptoms', {\n      url: 'symptoms/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanSymptoms'\n        }\n      }\n    }).state('enterprise.care_plan.interventions', {\n      url: 'interventions/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanInterventions'\n        }\n      },\n      resolve: {\n        interventionTypes: function interventionTypes(CarePlanInterventionTypeService) {\n          return CarePlanInterventionTypeService.getAll();\n        },\n        responsiblePartyTypes: function responsiblePartyTypes(CarePlanResponsibleTypeService) {\n          return CarePlanResponsibleTypeService.getAll();\n        }\n      }\n    }).state('enterprise.care_plan.vitals', {\n      url: 'vitals/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanVitals'\n        }\n      }\n    }).state('enterprise.care_plan.allergies', {\n      url: 'allergies/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanAllergies'\n        }\n      }\n    }).state('enterprise.care_plan.medications', {\n      url: 'medications/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanMedications'\n        }\n      }\n    }).state('enterprise.care_plan.providers', {\n      url: 'providers/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanProviders'\n        }\n      },\n      resolve: {\n        practiceSpecialties: function practiceSpecialties(PracticeSpecialtyService) {\n          return PracticeSpecialtyService.getAll();\n        }\n      }\n    }).state('enterprise.care_plan.caregivers', {\n      url: 'caregivers/',\n      views: {\n        carePlanStep: {\n          component: 'eCarePlanCaregivers'\n        }\n      },\n      resolve: {\n        relationships: function relationships(RelationshipsService) {\n          return RelationshipsService.getAll();\n        }\n      }\n    });\n    /*\n     * biller\n     */\n    $stateProvider.state('biller', {\n      abstract: true,\n      url: '/biller/',\n      component: 'biller',\n      data: {\n        loginRequired: true,\n        requiresBiller: true\n      },\n      resolve: {\n        biller: function biller(AuthService, EBillersService) {\n          return EBillersService.getBillerFromAuth0Id(encodeURIComponent(AuthService.currentUser().sub));\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, biller) {\n          return ECustomersService.get(biller.enterprise_customer_id);\n        }\n      }\n      //        .state('biller.dashboard', {\n      //          url: 'dashboard/',\n      //          component: 'billerDashboard'\n      //        })\n    }).state('biller.claims', {\n      url: 'claims/?page',\n      component: 'claims',\n      params: {\n        page: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        biller: function biller(AuthService, EBillersService) {\n          return EBillersService.getBillerFromAuth0Id(encodeURIComponent(AuthService.currentUser().sub));\n        },\n        claims: function claims($stateParams, EInsuranceClaimsService, enterpriseCustomer, PER_PAGE) {\n          var dateRange, endDate, now, queryString, startDate;\n          now = luxon.DateTime.local();\n          startDate = now.startOf('month').minus({\n            months: 1\n          });\n          endDate = now.endOf('month');\n          dateRange = {\n            'during': startDate,\n            'and': endDate\n          };\n          queryString = {\n            _page: $stateParams.page || 1,\n            _perPage: PER_PAGE.CLAIMS,\n            _sortDir: 'desc',\n            _sortField: 'created_at',\n            date_of_service: dateRange\n          };\n          return EInsuranceClaimsService.getAll(enterpriseCustomer.id, queryString);\n        }\n      }\n    }).state('biller.claim', {\n      url: 'claims/:claim_id/',\n      component: 'claim',\n      params: {\n        claim_id: null\n      },\n      resolve: {\n        claim: function claim($stateParams, EInsuranceClaimsService, biller) {\n          return EInsuranceClaimsService.billerGetOne(biller.id, $stateParams.claim_id);\n        }\n      }\n    });\n    /*\n     * enterprise administration\n     */\n    $stateProvider.state('admin', {\n      abstract: true,\n      url: '/admin/',\n      component: 'admin',\n      data: {\n        loginRequired: true,\n        requiresAdmin: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        }\n      }\n    }).state('admin.dashboard', {\n      url: 'dashboard/?query',\n      component: 'adminDashboard',\n      params: {\n        query: {\n          value: null,\n          dynamic: true\n        }\n      }\n    });\n    /*\n     * Setup flow for enterprise customers\n     */\n    $stateProvider.state('setup-enterprise', {\n      abstract: true,\n      url: '/enterprise/setup/',\n      component: 'setup',\n      resolve: {\n        isUserSetupComplete: function isUserSetupComplete(AuthService, UserService) {\n          return UserService.isSetupComplete(AuthService.getCurrentUserId());\n        }\n      }\n      // admin invitation setup flow\n    }).state('setup-enterprise.registration', {\n      url: 'registration/:invitation_hash/code/:invitation_code/',\n      component: 'enterpriseRegistrationInvitation',\n      params: {\n        invitation_hash: null,\n        invitation_code: null\n      },\n      resolve: {\n        nextState: function nextState($q, EnterpriseInvitationSetupWizardService, $state$) {\n          return $q.when(EnterpriseInvitationSetupWizardService.getState($state$.name).nextState);\n        },\n        skipState: function skipState($q, EnterpriseInvitationSetupWizardService, $state$) {\n          return $q.when(EnterpriseInvitationSetupWizardService.getState($state$.name).skipState);\n        },\n        practiceRoles: function practiceRoles(PracticeRolesService) {\n          return PracticeRolesService.getAll();\n        }\n      }\n      // dot com site dr registration flow\n    }).state('setup-enterprise.dr-registration', {\n      url: null,\n      component: 'enterpriseRegistration',\n      data: {\n        disabled: true\n      },\n      params: {\n        name_first: null,\n        name_last: null,\n        email: null,\n        phone: null,\n        practice_name: null\n      },\n      resolve: {\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        },\n        practiceRoles: function practiceRoles(PracticeRolesService) {\n          return PracticeRolesService.getAll();\n        }\n      }\n    }).state('setup-enterprise.practice', {\n      url: null,\n      component: 'enterprisePractice',\n      data: {\n        disabled: true\n      },\n      params: {\n        devices_selected: {\n          value: null,\n          dynamic: true\n        },\n        practice: {\n          value: null,\n          dynamic: true\n        }\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        eUserProfile: function eUserProfile(user, EUserProfilesService, enterpriseCustomer) {\n          return EUserProfilesService.get(enterpriseCustomer.id, user.user_profile.id);\n        },\n        offices: function offices(OfficeService, user) {\n          return OfficeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        deviceTypes: function deviceTypes(DeviceTypeService, user) {\n          return DeviceTypeService.getAll(user.user_profile.enterprise_customer_id, {\n            is_available: true\n          }, user);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        },\n        npiResult: function npiResult(EPhysicianLookupService, user, $q) {\n          if (user.current_account.npi) {\n            return EPhysicianLookupService.get(user.current_account.enterprise_customer_id, user.current_account.id, user.current_account.npi);\n          } else {\n            return $q.when();\n          }\n        },\n        practiceSpecialties: function practiceSpecialties(PracticeSpecialtyService) {\n          return PracticeSpecialtyService.getAll();\n        },\n        practiceRoles: function practiceRoles(PracticeRolesService) {\n          return PracticeRolesService.getAll();\n        }\n      }\n    }).state('setup-enterprise.agreements', {\n      url: 'agreements/',\n      component: 'enterpriseAgreements',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        eCustomerFees: function eCustomerFees(ECustomerFeeService, user) {\n          return ECustomerFeeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        latestSignedContractState: function latestSignedContractState(user, enterpriseCustomer, PactsafeService, env) {\n          return PactsafeService.latest(enterpriseCustomer.id, {\n            group_key: enterpriseCustomer.pactsafe_contract_group_id,\n            signer_id: user.user_profile.email,\n            site_access_id: env.pactsafe.site_access_id\n          }, user.user_profile);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        },\n        lazyLoad: function lazyLoad($transition$) {\n          var PactsafeService;\n          PactsafeService = $transition$.injector().get('PactsafeService');\n          return PactsafeService.loadPactsafeJS();\n        }\n      }\n    }).state('setup-enterprise.offering', {\n      url: 'learn/offering/',\n      component: 'enterpriseOffering',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        }\n      }\n    }).state('setup-enterprise.learn-revenue', {\n      url: 'learn/revenue/',\n      component: 'enterpriseLearnRevenue',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        offices: function offices(OfficeService, user) {\n          return OfficeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        eCustomerFees: function eCustomerFees(ECustomerFeeService, user) {\n          return ECustomerFeeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        cptFees: function cptFees(CptFeeService, user, eCustomerFees) {\n          var fee;\n          fee = eCustomerFees[0];\n          if (!fee.office_id) {\n            throw new Error('setup-enterprise.learn-revenue: office_id missing');\n          }\n          return CptFeeService.get(user.user_profile.enterprise_customer_id, fee.office_id);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        }\n      }\n    }).state('setup-enterprise.choose-devices', {\n      url: null,\n      component: 'enterpriseChooseDevices',\n      data: {\n        disabled: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        offices: function offices(OfficeService, user) {\n          return OfficeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        deviceTypes: function deviceTypes(DeviceTypeService, user) {\n          return DeviceTypeService.getAll(user.user_profile.enterprise_customer_id, {\n            is_visible_in_portal_setup: true,\n            is_available: true\n          }, user);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        }\n      }\n    }).state('setup-enterprise.biller', {\n      url: 'biller/',\n      component: 'enterpriseBillerSetup',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        }\n      }\n    }).state('setup-enterprise.payment-method', {\n      url: 'payment-method/',\n      component: 'enterprisePaymentMethod',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        eCustomerFees: function eCustomerFees(ECustomerFeeService, user) {\n          return ECustomerFeeService.getAll(user.user_profile.enterprise_customer_id);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        }\n      }\n    }).state('setup-enterprise.bank-account', {\n      url: 'bank-account/',\n      component: 'enterpriseBankAccount',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        }\n      }\n    }).state('setup-enterprise.credit-card', {\n      url: 'credit-card/',\n      component: 'enterpriseCreditCard',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        },\n        prevState: function prevState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).prevState);\n        },\n        skipState: function skipState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).skipState);\n        }\n      }\n    }).state('setup-enterprise.complete', {\n      url: 'complete/',\n      component: 'complete',\n      data: {\n        loginRequired: true,\n        saveState: true\n      },\n      resolve: {\n        user: function user(AuthService, UserService) {\n          return UserService.get(AuthService.getCurrentUserId());\n        },\n        enterpriseCustomer: function enterpriseCustomer(ECustomersService, user) {\n          return ECustomersService.get(user.user_profile.enterprise_customer_id);\n        },\n        invitation: function invitation(EnterpriseInvitationsService, user) {\n          return EnterpriseInvitationsService.getAll(user.user_profile.enterprise_customer_id, {\n            recipient_user_profile_id: user.user_profile.id\n          });\n        },\n        nextState: function nextState($q, EnterpriseSetupWizardService, $state$) {\n          return $q.when(EnterpriseSetupWizardService.getState($state$.name).nextState);\n        }\n      }\n    });\n    // If state isn't found redirect the user based on auth\n    $urlRouterProvider.otherwise(function ($injector, $location) {\n      var $log, $rootScope, $state, AuthService;\n      $log = $injector.get('$log');\n      $log = $log.getInstance('Router');\n      $log.warn('$urlRouterProvider.otherwise', $location.path());\n      $rootScope = $injector.get('$rootScope');\n      $state = $injector.get('$state');\n      AuthService = $injector.get('AuthService');\n      // IMPORTANT: DO NOT REMOVE: pactsafe redirects current point to /#/enterprise_enrollments/ and /#/enterprise/enrollments/.\n      // /#/enterprise/enrollments/ is the correct one, but we need to support both paths.\n      // intercept the incorrect one and redirect here\n      if ($location.path() === '/enterprise_enrollments/' || $location.path() === '/enterprise_enrollments') {\n        $log.log('detected /enterprise_enrollments/, redirecting to enterprise.enrollments.');\n        $state.go('enterprise.enrollments');\n        return true;\n      }\n      // Auth0: step 1 - callback enters here and we detect an access token, process it, and authenticate.\n      // If authentication is successful, redirect to the callback state and do a token delegation (aws) and get the profile\n      if ($location.path().indexOf('access_token') !== -1) {\n        AuthService.authenticateCallbackHash().then(function (response) {\n          $log.log('index.route response', response);\n          if (response === true) {\n            // $rootScope.isAuthenticated\n            return $state.go('callback.authzero');\n          } else {\n            return $rootScope.$broadcast('unauthenticated');\n          }\n        });\n        return true;\n      }\n      if (AuthService.isLoggedIn()) {\n        $state.go('enterprise.dashboard');\n        return true;\n      } else {\n        $rootScope.$broadcast('unauthenticated');\n        return true;\n      }\n    });\n    // append a '/' to a state url if one wasn't added by the user\n    return $urlRouterProvider.rule(function ($injector, $location) {\n      var path;\n      // DO NOT re-write the path for our Auth0 callback url or the state hash will be mismatched and authentication will fail\n      if ($location.path().indexOf('access_token') === -1) {\n        path = void 0;\n        path = $location.url();\n        if (path[path.length - 1] === '/' || path.indexOf('/?') > -1) {\n          return;\n        }\n        if (path.indexOf('?') > -1) {\n          return path.replace('?', '/?');\n        } else {\n          return path + '/';\n        }\n      }\n    });\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('ibeat').constant('moment', moment).constant('BRAND', {\n    NAME: '100Plus'\n  }).constant('API_KEYS', {\n    GOOGLE_BROWSER_API_KEY: 'AIzaSyBSGNhyalcHCte27OblOza9FyRRKei_KgM'\n  }).constant('DEBUG', {\n    IS_AUTH_ENABLED: true\n  }).constant('AUTH0_REDIRECT_SCOPE', {\n    LOGIN: 'login',\n    SIGNUP: 'signup',\n    ENTERPRISE_SIGNUP: 'enterprise_signup'\n  }).constant('LOCALSTORAGE', {\n    PROFILE_NAMESPACE: 'https://ibeat.com/'\n  }).constant('REGEX', {\n    NUMBER: '^[0-9]*$',\n    PASSWORD: '^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$',\n    EMAIL: '^\\\\S+@\\\\S+[\\\\.][0-9a-zA-Z]+$',\n    EHR: '^[0-9a-zA-Z]+$',\n    MBI: '\\\\b[1-9][AC-HJKMNP-RT-Yac-hjkmnp-rt-y][AC-HJKMNP-RT-Yac-hjkmnp-rt-y0-9][0-9]-?[AC-HJKMNP-RT-Yac-hjkmnp-rt-y][AC-HJKMNP-RT-Yac-hjkmnp-rt-y0-9][0-9]-?[AC-HJKMNP-RT-Yac-hjkmnp-rt-y]{2}\\\\d{2}\\\\b',\n    ALERT_THRESHOLD_BP_SYSTOLIC_RANGE: '^(9[0-9]|1[0-9]{2}|200)$',\n    ALERT_THRESHOLD_BP_DIASTOLIC_RANGE: '^(4[0-9]|[5-9][0-9]|1[0-3][0-9]|140)$',\n    ALERT_THRESHOLD_BG_RANGE: '^(5[0-9]|[6-9][0-9]|[1-2][0-9]{2}|3[0-7][0-9]|380)$',\n    ALERT_THRESHOLD_BO_RANGE: '^(8[0-9]|9[0-9]|100)$',\n    ALERT_THRESHOLD_HR_RANGE: '^([0-9]|[1-9][0-9]|1[0-4][0-9]|150)$',\n    ALERT_THRESHOLD_WEIGHT_RANGE: '^([0-9]|1[0-9]|2[0-5])$'\n  }).constant('IB_ADDRESS', {\n    NAME: '100Plus',\n    STREET: '1160 Battery Street, Suite 1005',\n    CITY: 'San Francisco',\n    STATE: 'CA',\n    ZIP: '94111'\n  }).constant('IB_PHONE', {\n    NUMBER: '8444837587',\n    NUMBER_FORMATTED: '844-483-7587'\n  }).constant('IB_SUPPORT_EMAIL', {\n    EMAIL: 'support@100plus.com'\n  }).constant('IB_SALES_EMAIL', {\n    EMAIL: 'sales@100plus.com'\n  }).constant('INTEROPS_EMAIL', {\n    EMAIL: 'interops@100plus.com'\n  }).constant('PATIENT_FAQS', {\n    URL: 'https://www.100plus.com/patients/'\n  }).constant('BILLING_FAQS', {\n    URL: 'https://www.100plus.com/resources/?fwp_topics=billing-and-reimbursement'\n  }).constant('PER_PAGE', {\n    INVOICES: 10,\n    INCIDENTS: 10,\n    ENROLLMENTS: 10,\n    PATIENTS: 10,\n    CLAIMS: 10,\n    DEACTIVATION_LOGS: 10,\n    PATIENT_GROUPS: 10,\n    DEFAULT: 10,\n    PATIENT_TEST_ALERTS: 5\n  }).constant('SETUP', {\n    BADGE_LIST_LEN: 6\n  }).constant('SUBSCRIPTION', {\n    INTERVALS: {\n      MONTH: 'month',\n      YEAR: 'year'\n    }\n  }).constant('Shippers', [{\n    label: 'FEDEX',\n    value: 'FEDEX'\n  }, {\n    label: 'UPS',\n    value: 'UPS'\n  }, {\n    label: 'USPS',\n    value: 'USPS'\n  }, {\n    label: 'OTHER',\n    value: 'OTHER'\n  }]).constant('EnrollmentSignatureStatuses', [{\n    label: 'NOT_SIGNED',\n    value: 'NOT_SIGNED'\n  }, {\n    label: 'REQUEST_SENT',\n    value: 'REQUEST_SENT'\n  }, {\n    label: 'VIEWED',\n    value: 'VIEWED'\n  }, {\n    label: 'SIGNED',\n    value: 'SIGNED'\n  }]).constant('EnrollmentStatuses', [{\n    label: 'PRE-ORDER',\n    value: 'PRE-ORDER'\n  }, {\n    label: 'OPEN',\n    value: 'OPEN'\n  }, {\n    label: 'PROCESSING',\n    value: 'PROCESSING'\n  }, {\n    label: 'COMPLETED',\n    value: 'COMPLETED'\n  }, {\n    label: 'CANCELED',\n    value: 'CANCELED'\n  }, {\n    label: 'ERROR',\n    value: 'ERROR'\n  }]).constant('ShipmentStatuses', [{\n    label: 'Pending',\n    value: 'Pending'\n  }, {\n    label: 'Submitted',\n    value: 'Submitted'\n  }, {\n    label: 'Processing',\n    value: 'Processing'\n  }, {\n    label: 'Fulfilled',\n    value: 'Fulfilled'\n  }, {\n    label: 'Delivered',\n    value: 'Delivered'\n  }]).constant('ShipmentStatusesTypes', {\n    PENDING: 'Pending',\n    SUBMITTED: 'Submitted',\n    PROCESSING: 'Processing',\n    FULFILLED: 'Fulfilled',\n    DELIVERED: 'Delivered'\n  }).constant('MissingInformationFilter', [{\n    label: 'Diagnosis Codes',\n    value: 'diagnosis'\n  }, {\n    label: 'Device Selection',\n    value: 'device'\n  }, {\n    label: 'Gender',\n    value: 'gender'\n  }, {\n    label: 'Street address',\n    value: 'address'\n  }, {\n    label: 'Zipcode',\n    value: 'zipcode'\n  }, {\n    label: 'Insurance information',\n    value: 'insurance'\n  }, {\n    label: 'Phone number',\n    value: 'phone'\n  }, {\n    label: 'Email',\n    value: 'email'\n  }]).constant('RPMTimes', [{\n    label: 'All',\n    value: null\n  }, {\n    label: '0 to 9 minutes',\n    value: {\n      from: 0,\n      to: 9 * 60\n    }\n  }, {\n    label: '10 to 19 minutes',\n    value: {\n      from: 10 * 60,\n      to: 19 * 60\n    }\n  }, {\n    label: '20 to 39 minutes',\n    value: {\n      from: 20 * 60,\n      to: 39 * 60\n    }\n  }, {\n    label: '40 to 59 minutes',\n    value: {\n      from: 40 * 60,\n      to: 59 * 60\n    }\n  }, {\n    label: '60+ minutes',\n    value: {\n      from: 60 * 60\n    }\n  }]).constant('CCMTimes', [{\n    label: 'All',\n    value: null\n  }, {\n    label: '0 to 19 minutes',\n    value: {\n      from: 0,\n      to: 19 * 60\n    }\n  }, {\n    label: '20 to 39 minutes',\n    value: {\n      from: 20 * 60,\n      to: 39 * 60\n    }\n  }, {\n    label: '40 to 59 minutes',\n    value: {\n      from: 40 * 60,\n      to: 59 * 60\n    }\n  }, {\n    label: '60+ minutes',\n    value: {\n      from: 60 * 60\n    }\n  }]).constant('StandardPagination', [{\n    label: '10',\n    value: 10\n  }, {\n    label: '25',\n    value: 25\n  }, {\n    label: '50',\n    value: 50\n  }]).constant('InPersonAgreementTypes', {\n    PATIENT: 'in-person',\n    PHYSICIAN_ATTESTATION: 'physician-attestation'\n  }).constant('SignatureStatuses', {\n    SIGNED: 'SIGNED',\n    REQUEST_SENT: 'REQUEST_SENT',\n    VIEWED: 'VIEWED',\n    NOT_SIGNED: 'NOT_SIGNED'\n  }).constant('ErrorMessages', {\n    CANNOT_PROVISION_NOT_PENDING_TRACKING: 'Cannot provision the patient because the enrollment status is not pending tracking.'\n  }).constant('StateNames', {\n    PRACTICE_REGISTRATION: 'setup-enterprise.dr-registration'\n  }).constant('GroupRoles', {\n    CARE_MANAGER: 'CARE_MANAGER',\n    MEMBER: 'MEMBER'\n  }).constant('MAX_PHONE_NUMBERS_COUNT', 3).constant('NumberOfPhysiciansRanges', [{\n    label: '1',\n    value: [1, 1]\n  }, {\n    label: '2-4',\n    value: [2, 4]\n  }, {\n    label: '5-9',\n    value: [5, 9]\n  }, {\n    label: '10-19',\n    value: [10, 19]\n  }, {\n    label: '20-49',\n    value: [20, 49]\n  }, {\n    label: '50 or more',\n    value: [50]\n  }, {\n    label: 'Not applicable',\n    value: [0, 0]\n  }]).constant('GraphTypes', {\n    ADHERENCE: {\n      ID: 15,\n      TYPE: 'look',\n      VIEW_NAME: 'proto_avg_percent_worn_daily',\n      IFRAME_UNIQUE_ID: 'adherence'\n    },\n    STEPS: {\n      ID: 14,\n      TYPE: 'look',\n      VIEW_NAME: 'proto_steps_by_day',\n      IFRAME_UNIQUE_ID: 'steps'\n    },\n    HEART_RATE: {\n      ID: 12,\n      TYPE: 'look',\n      VIEW_NAME: 'proto_heart_rate_1hr',\n      IFRAME_UNIQUE_ID: 'heart-rate'\n    },\n    WEIGHT: {\n      ID: 'product::weight_federated_v1',\n      // product cluster='product::weight' business cluster (old)='39'\n      TYPE: 'dashboard',\n      VIEW_NAME: 'avg_weight_by_day',\n      IFRAME_UNIQUE_ID: 'weight-graph'\n    },\n    BLOOD_PRESSURE: {\n      ID: 'product::blood_pressure_federated_v1',\n      // product cluster='product::blood_pressure' business cluster (old)='49'\n      TYPE: 'dashboard',\n      VIEW_NAME: 'avg_blood_pressure_by_day',\n      IFRAME_UNIQUE_ID: 'blood-pressure-graph'\n    },\n    GLUCOMETER: {\n      ID: 'product::blood_glucose_federated_v1',\n      // product cluster='product::blood_glucose' business cluster (old)='48'\n      TYPE: 'dashboard',\n      VIEW_NAME: '',\n      IFRAME_UNIQUE_ID: 'glucometer-graph'\n    },\n    PULSE_OXIMETER: {\n      ID: 'product::pulse_ox_federated_v1',\n      // product cluster='product::pulse_oximeter' business cluster (old)='52'\n      TYPE: 'dashboard',\n      VIEW_NAME: 'pulse_ox_by_day',\n      IFRAME_UNIQUE_ID: 'pulse-oximeter-graph'\n    },\n    AMBIENT_CHF: {\n      ID: 'product::ambient_chf_federated_v1',\n      TYPE: 'dashboard',\n      VIEW_NAME: 'ambient_chf_volume_by_day',\n      IFRAME_UNIQUE_ID: 'ambient-chf-graph'\n    },\n    THERMOMETER: {\n      ID: 21,\n      TYPE: 'dashboard',\n      VIEW_NAME: '',\n      IFRAME_UNIQUE_ID: 'thermometer-graph'\n    },\n    RPM_DATA: {\n      ID: 'product::patient_rpm_data_federated_v1',\n      TYPE: 'dashboard',\n      VIEW_NAME: 'patient_rpm_data',\n      IFRAME_UNIQUE_ID: 'rpm-data-table'\n    }\n  }).constant('GraphsToShow', [{\n    type: 'WEIGHT',\n    serial: null,\n    ignore_date_changes: false\n  }, {\n    type: 'BLOOD_PRESSURE',\n    serial: null,\n    ignore_date_changes: false\n  }, {\n    type: 'GLUCOMETER',\n    serial: null,\n    ignore_date_changes: false\n  }, {\n    type: 'PULSE_OXIMETER',\n    serial: null,\n    ignore_date_changes: false\n  }, {\n    type: 'AMBIENT_CHF',\n    serial: null,\n    ignore_date_changes: false\n  }, {\n    type: 'RPM_DATA',\n    serial: null,\n    ignore_date_changes: true\n  }]).constant('EhrTypeCredentialFieldOrders', {\n    ADVANCEDMD_EHR: ['USERNAME', 'OFFICE_KEY', 'PASSWORD']\n  }).constant('DeviceReadingThresholds', {\n    BP_CUFF: {\n      CONVERSION: 0.00750062,\n      SYSTOLIC: [{\n        value: 180,\n        level: 'critical'\n      }, {\n        value: 140,\n        level: 'high'\n      }, {\n        value: 130,\n        level: 'medium'\n      }, {\n        value: 120,\n        level: 'low'\n      }],\n      DIASTOLIC: [{\n        value: 120,\n        level: 'critical'\n      }, {\n        value: 90,\n        level: 'high'\n      }, {\n        value: 80,\n        level: 'medium'\n      }, {\n        value: 79,\n        level: 'low'\n      }]\n    },\n    PULSE_OXIMETER: {\n      LOW_OX: [{\n        value: 90,\n        level: 'critical'\n      }, {\n        value: 93,\n        level: 'high'\n      }]\n    },\n    GLUCOMETER: {\n      LOW_BG: [{\n        value: 50,\n        level: 'critical'\n      }, {\n        value: 70,\n        level: 'medium'\n      }],\n      HIGH_BG: [{\n        value: 600,\n        level: 'critical'\n      }, {\n        value: 240,\n        level: 'high'\n      }, {\n        value: 180,\n        level: 'medium'\n      }, {\n        value: 130,\n        level: 'low'\n      }]\n    },\n    SCALE: {\n      CONVERSION: 0.002204622622,\n      KILOS_TO_POUNDS: 2.20462262\n    }\n  }).constant('PORTAL_ENROLLMENT_SOURCE', 'ENROLL_AS_YOU_GO').constant('DeviceTypeCategories', {\n    GLUCOMETER: 'GLUCOMETER',\n    BP_CUFF: 'BP_CUFF',\n    SCALE: 'SCALE',\n    PULSE_OXIMETER: 'PULSE_OXIMETER',\n    THERMOMETER: 'THERMOMETER',\n    AMBIENT_CHF: 'AMBIENT_CHF',\n    TABLET: 'TABLET'\n  }).constant('AlertThresholds', {\n    DISCLAIMER: {\n      SYSTOLIC_DISCLAIMER: 'app/components/portal/enterprise/e-alert-thresholds/disclaimers/bp-systolic-disclaimer.html',\n      DIASTOLIC_DISCLAIMER: 'app/components/portal/enterprise/e-alert-thresholds/disclaimers/bp-diastolic-disclaimer.html',\n      BG_DISCLAIMER: 'app/components/portal/enterprise/e-alert-thresholds/disclaimers/bg-disclaimer.html'\n    },\n    BLOOD_PRESSURE: {\n      LOWER_BOUND_TOGGLE: 'is_blood_pressure_lower_bound_enabled',\n      SYSTOLIC: {\n        DEFAULT_HIGH: 160,\n        DEFAULT_LOW: 100,\n        SCALE: [{\n          label: 'Hyper-tensive Crisis',\n          color: '#7D0404',\n          high: 200,\n          low: 180\n        }, {\n          label: 'Hyper-tension Stage 2',\n          color: '#F83821',\n          high: 180,\n          low: 140\n        }, {\n          label: 'Hyper-tension Stage 1',\n          color: '#FF9500',\n          high: 140,\n          low: 130\n        }, {\n          label: 'Elevated',\n          color: '#FFD600',\n          high: 130,\n          low: 120\n        }]\n      },\n      DIASTOLIC: {\n        DEFAULT_HIGH: 95,\n        DEFAULT_LOW: 55,\n        SCALE: [{\n          label: 'Hyper-tensive Crisis',\n          color: '#7D0404',\n          high: 140,\n          low: 120\n        }, {\n          label: 'Hyper-tension Stage 2',\n          color: '#F83821',\n          high: 120,\n          low: 90\n        }, {\n          label: 'Hyper-tension Stage 1',\n          color: '#FF9500',\n          high: 90,\n          low: 80\n        }, {\n          label: 'Elevated',\n          color: '#FFD600',\n          high: 80,\n          low: 70\n        }]\n      }\n    },\n    WEIGHT: {\n      DECREASE: 'weight_decrease',\n      INCREASE: 'weight_increase'\n    },\n    BLOOD_GLUCOSE: {\n      DEFAULT_LOW: 70,\n      DEFAULT_HIGH: 240,\n      SCALE: [{\n        label: 'Critical',\n        color: '#F83821',\n        high: 380,\n        low: 240\n      }, {\n        label: 'Elevated',\n        color: '#FFD600',\n        high: 240,\n        low: 120\n      }, {\n        label: 'Normal',\n        color: '#5BBA99',\n        high: 120,\n        low: 70\n      }, {\n        label: 'Low',\n        color: '#FFD600',\n        high: 70,\n        low: 50\n      }, {\n        label: 'Critical',\n        color: '#F83821',\n        high: 50,\n        low: 40\n      }]\n    },\n    BLOOD_OXYGEN: {\n      DEFAULT: 95,\n      SCALE: [{\n        label: 'Normal',\n        color: '#5BBA99',\n        high: 100,\n        low: 93\n      }, {\n        label: 'Poor',\n        color: '#FFD600',\n        high: 93,\n        low: 90\n      }, {\n        label: 'Critical',\n        color: '#F83821',\n        high: 90,\n        low: 80\n      }]\n    },\n    HEARTRATE: {\n      DEFAULT_LOW: 50,\n      DEFAULT_HIGH: 100,\n      SCALE: [{\n        label: 'Elevated',\n        color: '#FFD600',\n        high: 100,\n        low: 50\n      }, {\n        label: 'Normal',\n        color: '#5BBA99',\n        high: 99,\n        low: 51\n      }]\n    },\n    ON_SAVE_EVENT: 'threshold:onSave'\n  }).constant('TosDeliveryMethods', {\n    IN_PERSON: 'In person',\n    IVR: 'Automated phone call',\n    SMS: 'SMS Text',\n    MAIL: 'Postal Mail',\n    PHYSICIAN_ATTESTATION: 'Physician attestation'\n  }).constant('DORTargets', [{\n    label: '1',\n    value: 1\n  }, {\n    label: '2',\n    value: 2\n  }, {\n    label: '3',\n    value: 3\n  }, {\n    label: '4',\n    value: 4\n  }, {\n    label: '5',\n    value: 5\n  }, {\n    label: '6',\n    value: 6\n  }, {\n    label: '7',\n    value: 7\n  }, {\n    label: '8',\n    value: 8\n  }, {\n    label: '9',\n    value: 9\n  }, {\n    label: '10',\n    value: 10\n  }, {\n    label: '11',\n    value: 11\n  }, {\n    label: '12',\n    value: 12\n  }, {\n    label: '13',\n    value: 13\n  }, {\n    label: '14',\n    value: 14\n  }, {\n    label: '15',\n    value: 15\n  }, {\n    label: '16',\n    value: 16\n  }, {\n    label: '17',\n    value: 17\n  }, {\n    label: '18',\n    value: 18\n  }, {\n    label: '19',\n    value: 19\n  }, {\n    label: '20',\n    value: 20\n  }, {\n    label: '21',\n    value: 21\n  }, {\n    label: '22',\n    value: 22\n  }, {\n    label: '23',\n    value: 23\n  }, {\n    label: '24',\n    value: 24\n  }, {\n    label: '25',\n    value: 25\n  }, {\n    label: '26',\n    value: 26\n  }, {\n    label: '27',\n    value: 27\n  }, {\n    label: '28',\n    value: 28\n  }, {\n    label: '29',\n    value: 29\n  }, {\n    label: '30',\n    value: 30\n  }]).constant('TwilioVoiceEvents', {\n    AUDIO_CALL_START: 'audio:call:start',\n    AUDIO_CALL_CONNECTED: 'audio:call:connected',\n    AUDIO_CALL_END: 'audio:call:end',\n    AUDIO_CALL_TOGGLE_MUTE: 'audio:call:mute'\n  }).constant('AUDIO_CALL_CONSTANTS', {\n    CALL_TYPE: {\n      AUDIO: 'audio',\n      VIDEO: 'video',\n      MANUAL: 'manual-audio',\n      TEXT: 'manual-text'\n    },\n    TIMER: {\n      DURATION_UNITS: ['minutes', 'seconds'],\n      FORMAT: 'mm:ss',\n      NO_DURATION: '--:--',\n      DELAY_MS: 1000\n    }\n  }).constant('VIDEO_CALL', {\n    CALL_TYPE: 'video',\n    DEVICE_TYPE: 'TABLET'\n  }).constant('ALLOWED_ROLES_BY', {\n    KEY_NAME: ['NURSE_PRACT', 'DOCTOR', 'PHYSICIAN_ASST']\n  }).constant('UserCard', {\n    MARK_AS_REVIEWED: 'app/components/portal/enterprise/e-patients/e-users-card/e-user-patient-review/e-user-patient-review.html'\n  }).constant('PatientStatuses', {\n    PAUSED: 'PAUSED',\n    PENDING_SETUP: 'PENDING',\n    PENDING_CARE_PLAN: 'PENDING_CARE_PLAN',\n    PENDING_CARE_PLAN_APPROVAL: 'PENDING_CARE_PLAN_APPROVAL',\n    CARE_PLAN_COMPLETE: 'CARE_PLAN_COMPLETE',\n    CARE_PLAN_APPROVED: 'CARE_PLAN_APPROVED',\n    HOSPITALIZED: 'HOSPITALIZED_REHAB',\n    TRAVELING: 'PAUSE_INVOICING_TRAVELING',\n    NOTES_ADDED: 'NOTES',\n    NO_NOTES_ADDED: 'NO_NOTES',\n    SETUP_COMPLETE: 'SETUP_COMPLETE',\n    ACTIVE: '',\n    NOT_ACTIVE: 'NOT_ACTIVE',\n    DEMO: 'DEMO'\n  }).constant('EnterpriseRoles', {\n    // value should match super-admin role in db\n    SUPER_ADMIN: 'super-admin',\n    BILLER: 'biller',\n    CLINICAL: 'clinical',\n    CLINICAL_MONITORING: 'clinical_monitoring',\n    CLINICAL_MONITORING_MANAGER: 'clinical_monitoring_manager',\n    PATIENT: 'patient',\n    ADMINISTRATIVE: 'administrative'\n  }).constant('AuthConstants', {\n    ROLE_PREFIX: 'role:',\n    ROLE_PREFIX_REGEX: new RegExp(\"^role:\"),\n    AUTHORIZED: true,\n    UNAUTHORIZED: false\n  }).constant('PATIENT_SERVICES', {\n    RPM: 'RPM',\n    CCM: 'CCM'\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('ibeat').config(function ($translateProvider) {\n    'ngInject';\n\n    $translateProvider.translations('en', {\n      GLOBAL: {\n        BRAND: '100Plus',\n        CONTACT: {\n          CUSTOMER_HELP_PHONE: 'Have questions? Call us:'\n        },\n        TYPEAHEAD: {\n          LOADING: 'Loading...',\n          NO_RESULTS: 'No results...'\n        },\n        ACCOUNT: {\n          FIELDS: {\n            CODE: 'Secret code',\n            NAME: 'Name',\n            NAME_FIRST: 'First name',\n            NAME_LAST: 'Last name',\n            GENDER: 'Gender',\n            DOB: 'Date of birth',\n            PHONE_TYPE: 'Phone type',\n            PRIMARY_PHONE: 'Phone number (primary)',\n            ADDITIONAL_PHONE: 'Phone number',\n            ADD_ADDITIONAL_PHONE_NUMBER: 'Add another phone number',\n            EMAIL: 'Email',\n            EMAIL_CONFIRMATION: 'Confirm email address',\n            PRACTICE_NAME: 'Practice name',\n            PASSWORD: 'Create password',\n            PASSWORD_CONFIRMATION: 'Password confirmation',\n            WRIST_SIZE: 'Wrist size',\n            TERMS: 'I agree to the {{eula}} and {{privacy}}',\n            DEVICE_TYPE: 'Patient monitoring device',\n            GLUCOSE_TESTS_PER_DAY: 'How many times per day should the patient test with the blood glucose meter?',\n            SIGNATURE_STATUS: 'Signature status',\n            STATUS: 'Status',\n            SHIPPER: 'Carrier',\n            TRACKING_NUMBER: 'Tracking number',\n            MAILED_AT: 'Mailed at',\n            STATUS_AT: 'Status date',\n            MEDICARE_NUM: 'Medicare number',\n            MEDICARE_TITLE: 'Original Medicare (Part B)',\n            MEDICARE_ADVANTAGE_OTHER_TITLE: 'Medicare Advantage/Commercial/Other',\n            MEDICARE_ADVANTAGE: 'Medicare Advantage',\n            MEDICARE_ADVANTAGE_GROUP_NUM: 'Medicare Advantage group number',\n            MEDICARE_ADVANTAGE_INDIVIDUAL_NUM: 'Medicare Advantage individual number',\n            MONITORING_PROVIDER: 'Monitoring Provider',\n            PCP: 'Primary Provider',\n            PRACTICE_ROLE: 'What is your role at the practice?',\n            EHR_ID: 'EHR ID',\n            OFFICES: 'Offices'\n          }\n        },\n        ADDRESS: {\n          FIELDS: {\n            NAME: 'Address title, e.g. \"Home,\" \"Office,\" or \"Cate\\'s house\"',\n            ADDRESS_FLOOR: 'Which floor is the home on?',\n            STREET1: 'Street address',\n            STREET2: 'Street address 2',\n            CITY: 'City',\n            STATE: 'State',\n            STATE_DEFAULT: 'Choose state',\n            ZIP: 'Zip code',\n            ZIP_HELP: 'Couldn\\'t find your city and state',\n            COUNTRY: 'Country'\n          }\n        },\n        PRACTICE: {\n          FIELDS: {\n            ADDRESS: 'Practice address',\n            FAX: 'Practice fax',\n            PHONE: 'Practice phone',\n            STREET: 'Practice street address',\n            CITY: 'Practice city',\n            STATE: 'Practice state',\n            ZIP: 'Practice zip code',\n            NUMBER_PHYSICIANS: 'Number of MDs, PAs, and NPs',\n            PRACTICE_SPECIALTY: 'Practice specialty'\n          }\n        },\n        CREDIT_CARD: {\n          FIELDS: {\n            NAME: 'Name on card',\n            CC_NUMBER: 'Card number',\n            CVC: 'CVV',\n            MONTH: 'Month',\n            YEAR: 'Year',\n            EXPIRY: 'Month / Year'\n          }\n        },\n        BUTTONS: {\n          EDIT: 'Edit',\n          ADD: 'Add',\n          SAVE: 'Save',\n          CANCEL: 'Cancel',\n          DELETE: 'Delete',\n          DONE: 'Done',\n          FINISH: 'Finish',\n          BACK: 'Previous',\n          NEXT: 'Next',\n          PREVIOUS: 'Previous',\n          SKIP: 'Do this later',\n          SUBSCRIBE: 'Subscribe',\n          MORE: 'More'\n        },\n        MODALS: {\n          SUPPORT_REQUEST: {\n            HEADER: 'Support Request',\n            BODY: 'Are you sure you want to send a support request?',\n            BUTTONS: {\n              CLOSE: 'Cancel',\n              ACTION: 'Send'\n            }\n          },\n          ALIGN_DOS: {\n            HEADER: \"DOS Alignment Explained\",\n            BUTTONS: {\n              CLOSE: \"Close\"\n            }\n          },\n          PHONE_TYPE: {\n            HEADER: 'Phone type warning',\n            COPY: 'You\\'ve selected a phone type of {{contactPhoneType}}, but it appears the entered number is of type {{carrierPhoneType}}.',\n            COPY2: 'Please review your phone type selection.',\n            BUTTONS: {\n              ACTION: 'I understand'\n            }\n          },\n          DUPLICATE_PHONE: {\n            HEADER: 'Phone number already in use',\n            COPY: 'We highly recommend adding a unique mobile phone number for each patient so they can receive adherence reminders via SMS.',\n            BUTTONS: {\n              ACTION: 'I understand'\n            }\n          }\n        },\n        ERRORS: {\n          INVALID_PHONE: 'Invalid phone number. Please enter a real number.'\n        }\n      },\n      ACCOUNT: {\n        FORGOT_PASSWORD: {\n          BODY: {\n            HEADER: 'Forgot your password?',\n            SUB_HEADER: 'To reset your password, enter the email address you use to sign in to 100Plus.'\n          },\n          FIELDS: {\n            EMAIL: 'Email'\n          },\n          BUTTONS: {\n            PRIMARY: 'Request password reset email'\n          },\n          TOASTS: {\n            ERROR: 'There was an error retrieving your password',\n            SUCCESS: 'Your password reset instructions have been emailed to you'\n          }\n        },\n        UPDATE_PASSWORD: {\n          BODY: {\n            HEADER: 'Change your password',\n            SUB_HEADER: 'Please change your password and confirm it.'\n          },\n          FIELDS: {\n            PASSWORD: 'Password',\n            PASSWORD_CONFIRMATION: 'Password confirmation'\n          },\n          BUTTONS: {\n            PRIMARY: 'Change my password'\n          },\n          TOASTS: {\n            ERROR: 'There was an error updating your password',\n            SUCCESS: 'Your password has been changed successfully'\n          }\n        },\n        LOGIN: {\n          BODY: {\n            HEADER: 'Log in'\n          },\n          FIELDS: {\n            EMAIL: 'Email',\n            PASSWORD: 'Password',\n            REMEMBER: 'Remember me'\n          },\n          BUTTONS: {\n            PRIMARY: 'Log in',\n            FORGOT_PASSWORD: 'Forgot password?',\n            SIGN_UP: 'I don\\'t have an account'\n          },\n          TOASTS: {\n            ERROR: 'Please check your credentials. There was an error logging in.',\n            SUCCESS: 'Logged in successfully.',\n            EMAIL_VERIFIED: 'Your email has been verified.',\n            TRY_AGAIN: 'There was an error logging you in. Please try again.'\n          }\n        },\n        USER_TYPE: {\n          BODY: {\n            ALREADY_HAVE_ACCT: 'Already have an account?'\n          },\n          BUTTONS: {\n            SIGN_IN: 'Sign in'\n          }\n        }\n      },\n      SETUP: {\n        NAV: {\n          DEVICE: 'Device',\n          ACCOUNT: 'Account',\n          PROFILE: 'Profile',\n          BILLING: 'Billing'\n        },\n        REGISTRATION: {\n          BODY: {\n            HEADER: 'Let\\'s create an account.',\n            COPY: 'You\\'ll use this to log in, view your data, and make changes to our account.',\n            REQUIREMENTS: {\n              HEADER: 'Password Requirements',\n              CRITERIA1: 'Must have at least 8 characters',\n              CRITERIA2: 'Must include capital and lowercase characters',\n              CRITERIA3: 'Must include at least 1 number',\n              SATISFIED: 'Password strength is good'\n            }\n          },\n          MODALS: {\n            USERNAME_EXISTS: {\n              HEADER: 'An account already exists with this username',\n              BUTTONS: {\n                EMAIL: 'Use a different email',\n                LOGIN: 'Login'\n              }\n            },\n            EXPIRED_INVITATION: {\n              HEADER: 'The code to register your 100Plus account has expired since it has been more than 30 days. Please reach out to <a href=\"mailto:support@100plus.com\">support@100plus.com</a> or someone at your practice with a 100Plus account to resend the link to register your 100Plus account.',\n              BUTTONS: {\n                CLOSE: 'Close'\n              }\n            }\n          },\n          BUTTONS: {\n            SKIP: 'I already have an account',\n            ADD_STAFF: 'Invite more staff members to create a 100Plus account under your practice.',\n            DONE: 'Done adding staff members',\n            INVITE_STAFF: 'Invite Staff'\n          },\n          TOASTS: {\n            ERROR: 'There was an error creating your account. Please try again.',\n            SUCCESS: 'Account created successfully',\n            PLEASE_SELECT_YOUR_EHR_PROVIDER: 'Please select your EHR Provider'\n          }\n        },\n        INVITATION_REGISTRATION: {\n          BODY: {\n            HEADER1: 'Enter your invitation code',\n            COPY1: 'You\\'ll find it in your invitation email.',\n            HEADER2: 'Alright {{name}}, let\\'s create your account.',\n            COPY2: 'You\\'ll use this to log in and make changes or view your info at any time.',\n            HEADER2_CARETAKER: 'Alright, let\\'s create an account.',\n            COPY2_CARETAKER: 'You\\'ll use this to log in and make changes or view {{name}}\\'s info at any time.',\n            REQUIREMENTS: {\n              HEADER: 'Password Requirements',\n              CRITERIA1: 'Must have at least 8 characters',\n              CRITERIA2: 'Must include capital and lowercase characters',\n              CRITERIA3: 'Must include at least 1 number'\n            }\n          },\n          BUTTONS: {\n            SKIP: 'I already have an account'\n          },\n          TOASTS: {\n            ERROR: 'There was an error creating your account. Please try again.',\n            SUCCESS: 'Account created successfully',\n            SECRET: {\n              ERROR: 'Invalid code or invitation revoked'\n            }\n          }\n        },\n        PROFILE: {\n          FIELDS: {\n            PHONE_TYPE_DEFAULT: ''\n          }\n        },\n        LANGUAGE: {\n          BODY: {\n            HEADER: 'Preferred language',\n            COPY: 'Select the language to use during an emergency. If possible, the watch can be set to your preferred language, as well.',\n            HEADER_CARETAKER: 'Select {{name}}\\'s preferred language',\n            COPY_CARETAKER: 'Select the language to use during an emergency. If possible, the watch can be set to your preferred language, as well.',\n            SUPPORTED: 'Great! Your watch will be configured to use {{language}} as the primary language.',\n            NOT_SUPPORTED: 'We currently don\\'t support the {{language}} language on the watch interface, but will be adding this feature soon. We will store your preference and notify you when this is available.'\n          },\n          FIELDS: {\n            LANGUAGE: 'Preferred language'\n          }\n        },\n        GENDER: {\n          BODY: {\n            HEADER: 'Gender',\n            COPY: 'Please select your gender.',\n            HEADER_CARETAKER: 'Gender',\n            COPY_CARETAKER: 'Please select {{name}}\\'s gender.'\n          },\n          FIELDS: {\n            GENDER: 'Gender'\n          }\n        },\n        BANK_ACCOUNT: {\n          BODY: {\n            HEADER: 'Bank account information',\n            COPY: 'Looks like your bank account information wasn\\'t set up.',\n            COPY2: 'You can enter a credit card or contact our support team for help with your bank account.'\n          },\n          BUTTONS: {\n            BANK: 'Automatic withdrawal',\n            CREDIT: 'Credit or debit card',\n            FAILURE: 'Set up credit or debit card'\n          },\n          TOASTS: {\n            SUCCESS: 'Subscription successfully enabled.'\n          }\n        },\n        CREDIT_CARD: {\n          BODY: {\n            HEADER: 'Credit or debit card information',\n            COPY: 'Enter your billing information here.'\n          },\n          TOASTS: {\n            SUCCESS: 'Subscription successfully enabled'\n          }\n        },\n        COMPLETE: {\n          BODY: {\n            HEADER: 'Success!',\n            COPY: 'The next step is to enroll your patients. Click finish to get started!',\n            INVITE_COPY: 'Your account under {{practice_name}} has been successfully created. You may now view existing RPM patients at the practice and enroll your own. Click finish to get started!'\n          }\n        }\n      },\n      ENTERPRISE_SETUP: {\n        REGISTRATION: {\n          NAV: {\n            STEP1: 'Create Account',\n            STEP2: 'Select 100Plus Devices',\n            STEP3: 'Add Practice Details'\n          },\n          BODY: {\n            HEADER1: 'Enter your invitation code',\n            COPY1: 'You\\'ll find it in your invitation email.',\n            HEADER2: 'Create your free 100Plus Remote Patient Monitoring account.',\n            COPY2: 'Sign up in minutes by providing a few details and we\\’ll send you free sample devices to experience 100Plus RPM services for yourself.'\n          },\n          BUTTONS: {\n            SKIP: 'I already have an account'\n          },\n          TOASTS: {\n            ERROR: 'There was an error creating your account. Please try again.',\n            SUCCESS: 'Account created successfully.',\n            SECRET: {\n              ERROR: 'Invalid code or invitation revoked'\n            }\n          }\n        },\n        INVITATION_REGISTRATION: {\n          BODY: {\n            HEADER1: '{{practiceName}} has approved your access to create a complimentary 100Plus Remote Patient Monitoring (RPM) account under the practice.',\n            COPY1: 'Your 100Plus RPM account allows you to access {{practiceName}} RPM patient enrollments, reports with device data, patient health alerts for elevated readings, and review drafted charges that can be submitted for reimbursement as you deem appropriate.'\n          }\n        },\n        BILLER: {\n          BODY: {\n            HEADER: 'Setup your biller',\n            COPY: 'Enter your biller information so they can review drafted charges that can be submitted for reimbursement as you deem appropriate.',\n            COPY2: '100Plus will generate a draft charge each RPM CPT code for your review.'\n          },\n          FIELDS: {\n            NAME_FIRST: 'Biller first name',\n            NAME_LAST: 'Biller last name',\n            NAME: 'Biller name',\n            EMAIL: 'Biller email',\n            PHONE: 'Biller phone'\n          },\n          TOASTS: {\n            ERROR: 'There was an error adding your biller information. Please try again.',\n            SUCCESS: 'Biller updated successfully.'\n          }\n        },\n        WELCOME: {\n          BODY: {\n            HEADER: 'Congratulations!',\n            COPY: 'Utilizing 100Plus in your practice allows you to bring a higher level of care to your patients, while creating a supplementary revenue opportunity for your practice. Let’s get you setup.',\n            FOUND: 'Hello, {{name}}. Please click the \"Verify practice information\" button to continue.',\n            NOT_FOUND: 'We were unable to verify your account.'\n          },\n          FIELDS: {\n            NPI: '10 digit NPI number (optional)'\n          },\n          BUTTONS: {\n            VERIFY: 'Verify practice information'\n          }\n        },\n        //          TOASTS: {\n        //            ERROR: 'There was an error adding your biller information. Please try again.'\n        //            SUCCESS: 'Biller updated successfully.'\n        //          }\n        PRACTICE: {\n          BODY: {\n            HEADER: 'Tell us about your practice.',\n            COPY: 'Your practice information must be correct for proper Medicare billing.'\n          },\n          TOASTS: {\n            ERROR: 'There was an error adding your biller information. Please try again.',\n            SUCCESS: 'Biller updated successfully.'\n          }\n        },\n        OFFERING: {\n          BODY: {\n            HEADER: 'Start now and start enrolling patients in minutes.',\n            COPY: '100Plus is the lowest risk and fastest to implement Remote Patient Monitoring solution, enabling practitioners to start managing and billing for chronic patients in days.',\n            ENROLLMENT: {\n              HEADER: 'Patient Enrollment and Setup',\n              COPY: '100Plus\\' Complimentary Concierge&trade; identifies patients eligible for the RPM program, performs patient consent and training, and ships devices directly to your patients ready to use.'\n            },\n            ADHERENCE: {\n              HEADER: 'Patient Adherence and Population Management',\n              COPY: 'Our Virtual Medical Assistant reaches out to your patients daily to ensure they are testing regularly and their tests are in a safe range. If a patient tests outside of a safe range, we inform your staff immediately.'\n            },\n            DATA: {\n              HEADER: 'Patient Data Review',\n              COPY: 'Our Practitioner tools receive data from the patients\\' devices in perpetuity, with no configuration, and enable you to review data rapidly to fulfill Medicare requirements.'\n            },\n            SUPPORT: {\n              HEADER: 'Ongoing Support',\n              COPY: 'We provide free, unlimited support based in the US via chat, phone, and email to assist you and your patients every step of the way.'\n            }\n          },\n          FIELDS: {\n            NUM_PATIENTS: 'Patients using 100Plus',\n            REVENUE: 'Extra annual revenue for your practice'\n          }\n        },\n        REVENUE: {\n          BODY: {\n            HEADER: 'Learn about your practice revenue',\n            COPY: '100Plus makes it easy for you to monitor patients in between visits and earn extra revenue for Remote Patient Monitoring time with Medicare payment for CPT 99453, 99457, 99458 and 99454.'\n          },\n          FIELDS: {\n            NUM_PATIENTS: 'Patients using 100Plus',\n            REVENUE: 'Choose the number of patients in your practice to see how much you can earn each year with 100Plus Remote Patient Monitoring (RPM).'\n          }\n        },\n        REIMBURSEMENT: {\n          BODY: {\n            HEADER: 'Take a minute to learn about Medicare reimbursement',\n            COPY: 'Provide a higher level of care to your patients while earning extra revenue for your practice.',\n            REVENUE: 'Your revenue',\n            PAYMENT: 'Our payment',\n            MONTHLY: 'Monthly payment per patient',\n            ONCE: 'One time payment per patient',\n            SETUP: '{{price}} for your patient setup and education.',\n            REPORTING: '{{price}} for your monthly review, interpretation, and basic communication of RPM data insights',\n            DEVICE: 'We will debit your account for this amount after you have received it from Medicare. {{price}} covers our 100Plus hardware, software, cellular service, and 24/7 dispatch.'\n          }\n        },\n        IMPLEMENTATION: {\n          BODY: {\n            HEADER: 'Take a minute to learn about our easy implementation',\n            COPY: 'Here\\'s how 100Plus works. Please watch the video to continue.',\n            SHIP: 'We ship our 100Plus emergency watch directly to your patient.',\n            REVIEW: 'You review patient data monthly.',\n            BILLER: 'We will inform your biller monthly to bill on behalf of your patients.'\n          }\n        },\n        CHOOSE_DEVICES: {\n          BODY: {\n            HEADER: 'Select 100Plus devices',\n            COPY: 'These are yours to keep regardless of whether you use 100Plus as your remote patient monitoring service.',\n            HEADER2: 'Enter your practice information',\n            COPY2: 'We\\'ll ship your sample devices directly to your practice'\n          },\n          FIELDS: {\n            SCALE: 'Digital body weight scale',\n            BP_CUFF: 'Blood pressure cuff',\n            GLUCOSE: 'Blood glucose meter',\n            PERS_WATCH: 'Personal emergency heart watch'\n          },\n          TOASTS: {\n            ERROR: 'There was an error selecting your devices. Please try again.',\n            SUCCESS: 'Devices chosen successfully.'\n          }\n        },\n        BANK_ACCOUNT: {\n          BODY: {\n            HEADER: 'Bank account information',\n            COPY: 'Looks like your bank account information wasn\\'t set up.',\n            COPY2: 'You can enter a credit card or contact our support team for help with your bank account.'\n          },\n          BUTTONS: {\n            BANK: 'Automatic withdrawal',\n            CREDIT: 'Credit or debit card',\n            FAILURE: 'Set up credit or debit card'\n          },\n          TOASTS: {\n            SUCCESS: 'Subscription successfully enabled.'\n          }\n        },\n        PAYMENT_METHOD: {\n          BODY: {\n            HEADER: 'Add your credit card or bank account information. 100Plus will start shipping devices to your enrolled and consented patients immediately.',\n            COPY: 'There are no upfront costs for your practice. All 100Plus services are covered under the monthly service fee of {{monthlyFeePerPatient}} for each active patient on the RPM program, and we don\\'t start debiting until 60 days after we ship a patient their device(s).',\n            COPY2: 'We make sure your practice has enough time for insurance billing and reimbursement before we collect the service fee. An invoice is sent on the last day of each month that includes all of your active patients\\' shipped devices the previous month and earlier. You have another 30 days before the invoice amount is due.',\n            COPY3: 'Reimbursement issue for a particular patient? No problem. Provide documentation for our team to help and we\\'ll remove the patient from the invoice until the issue is resolved.'\n          },\n          BUTTONS: {\n            BANK: 'Automatic withdrawal',\n            CREDIT: 'Or setup using a credit card'\n          },\n          TOASTS: {}\n        }\n      },\n      PORTAL: {\n        ALERTS: {\n          GLOBAL: {\n            BODY: {\n              TEXT: 'Network activity has stalled due to technical issues. Please restart your watch for the best performance'\n            },\n            BUTTONS: {\n              ACTION: 'Call to action',\n              CLOSE: 'Dismiss'\n            }\n          },\n          BILLING: {\n            BODY: {\n              TITLE: 'Billing alert',\n              HEADER: 'Your credit card on file is about to expire. Please update your billing information.',\n              TEXT: ''\n            },\n            INFO: {\n              HEADER: 'Billing alert',\n              TEXT: 'When there is something important that requires your attention or action, we will surface that here. If you would like to receive email or text motifications visit the settings page.'\n            },\n            BUTTONS: {\n              ACTION: 'Call to action',\n              CLOSE: 'Dismiss'\n            }\n          },\n          ACCOUNT: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Add an emergency contact.',\n              TEXT: 'Its important to fill out your emergency contact list in case of an incident. Click here to learn more about the types of contacts you can add. Or follow the links below to get started!'\n            },\n            INFO: {\n              HEADER: 'Account alert',\n              TEXT: 'When there is something important that requires your attention or action, we will surface that here. If you would like to receive email or text motifications visit the settings page.'\n            },\n            BUTTONS: {\n              ACTION: 'Call to action',\n              CLOSE: 'Dismiss'\n            }\n          },\n          ADD_MEDICATION: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Add your medications.',\n              TEXT: 'It\\'s important to fill out your medication list in case of an incident.'\n            },\n            INFO: {\n              HEADER: 'Account alert',\n              TEXT: 'When there is something important that requires your attention or action, we will surface that here. If you would like to receive email or text motifications visit the settings page.'\n            },\n            BUTTONS: {\n              ACTION: 'Add medication',\n              CLOSE: 'I don\\'t take any'\n            }\n          },\n          ADD_CONTACT: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Add your contacts.',\n              TEXT: 'It\\'s important to fill out your contact list in case of an incident.'\n            },\n            INFO: {\n              HEADER: 'Account alert',\n              TEXT: 'When there is something important that requires your attention or action, we will surface that here. If you would like to receive email or text motifications visit the settings page.'\n            },\n            BUTTONS: {\n              ACTION: 'Add contact',\n              CLOSE: 'Dismiss'\n            }\n          },\n          IBEAT: {\n            BODY: {\n              TITLE: '100Plus alert',\n              HEADER: 'New feature from 100Plus!',\n              TEXT: 'We just launched iOS integration with our new mobile app. Now you can do pretty much everything from anywhere, and it will walk your dog for you too!'\n            },\n            INFO: {\n              HEADER: 'Marketing alert',\n              TEXT: 'When there is something important that requires your attention or action, we will surface that here. If you would like to receive email or text motifications visit the settings page.'\n            },\n            BUTTONS: {\n              ACTION: 'Call to action',\n              CLOSE: 'Dismiss'\n            }\n          },\n          NO_DEVICES: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Your account doesn\\'t have access to any 100Plus watches',\n              TEXT: 'To gain access to an 100Plus watch a user must add you as a contact and grant you access via an email invitation.'\n            },\n            INFO: {\n              HEADER: 'Marketing alert',\n              TEXT: 'When there is something important that requires your attention or action, we will surface that here. If you would like to receive email or text motifications visit the settings page.'\n            },\n            BUTTONS: {}\n          },\n          SUMMARY_TASK: {\n            BODY: {\n              CCM: {\n                TITLE: 'CCM Monitoring',\n                SUBTITLE: 'Count of Patients by CCM Monitoring Time',\n                TOOLTIP: 'Includes all CCM patients and are not paused or deactivated'\n              },\n              TITLE: 'RPM Monitoring',\n              SUBTITLE: 'Count of Patients by RPM Monitoring Time',\n              TOOLTIP: 'Includes all patients who have been provisioned their RPM devices and are not paused or deactivated',\n              ALL: 'All Active Patients',\n              STAT_0_19: '0-19 min',\n              STAT_20_39: '20-39 min',\n              STAT_40_59: '40-59 min',\n              STAT_6_PLUS: '60+ min'\n            }\n          },\n          OUTCOMES: {\n            BODY: {\n              TITLE: 'Outcomes',\n              SUBTITLE: 'Patient physiologic outcomes',\n              LEDE: 'Average change from enrollment to Day 180.',\n              AS_OF: 'Outcomes include patients with more than 180 days of RPM readings, as of ',\n              NO_READINGS: 'No patients have >180 days of RPM readings, as of {{as_of_date}}. To enroll more patients, upload a CSV below or click Enrollments on the left.'\n            },\n            TABS: {\n              PRACTICE: 'Practice',\n              OFFICE: 'Office'\n            },\n            DAY_0: 'Day 0',\n            DAY_180: 'Day 180',\n            EMPTY: 'No qualifying patients',\n            BASED_ON: 'Based on {{count}} patients',\n            BASED_ON_ONE: 'Based on 1 patient',\n            STATISTICAL_DETAILS: 'Statistical details',\n            P_VALUE: 'p-value',\n            STATUS: {\n              IMPROVED: 'Improved',\n              WORSENED: 'Increased',\n              UNCHANGED: 'Unchanged'\n            },\n            CHANGE: {\n              IMPROVED: 'average reduction',\n              WORSENED: 'average increase',\n              UNCHANGED: 'no average change'\n            },\n            SECTIONS: {\n              HYPERTENSION: {\n                HEADER: 'Hypertension',\n                LEFT: {\n                  HEADER: 'All patients with hypertension',\n                  SYS_CHANGE: 'Average systolic change',\n                  DIAS_CHANGE: 'Average diastolic change'\n                },\n                RIGHT: {\n                  HEADER: 'Patients with starting systolic BP > 140'\n                }\n              },\n              OBESITY: {\n                HEADER: 'Obesity',\n                LEFT: {\n                  HEADER: 'Patients with starting weight > 220 lbs',\n                  CHANGE: 'Average weight change'\n                },\n                RIGHT: {\n                  HEADER: 'Patients with starting weight > 287 lbs'\n                }\n              },\n              DIABETES: {\n                HEADER: 'Diabetes',\n                CARD_HEADER: 'Patients with diabetes',\n                CHANGE: 'Average glucose change'\n              }\n            }\n          },\n          BULK_ENROLLMENT: {\n            BODY: {\n              TITLE: 'White Glove Enrollment',\n              HEADER: 'Enroll patients faster with 100Plus White Glove Enrollment',\n              TEXT: 'Our white glove service enables you to rapidly onboard your entire senior citizen population with chronic conditions while eliminating the heavy lifting for your practice. Upload an export file from your electronic health record system. 100Plus does the rest and notifies you when enrollments are completed.',\n              REQUIRED_INFO: 'first name, last name, gender, date of birth, diagnosis code(s), medicare id or medicare advantage plan information (plan type, group number, individual policy number), street address, city, state, zip, phone, email (if applicable), device(s), and number of tests per day (only required for glucometer)',\n              REQUIRED_HEADER: 'The following patient information is required:'\n            },\n            //              TEXT3: 'Optional, but helpful: email, gender, dob, diagnosis code, emergency contact(s)'\n            BUTTONS: {\n              IGNORE: 'Ignore',\n              UPLOAD_FILE: 'Upload file'\n            },\n            TOASTS: {\n              SUCCESS: 'Thank you! Your file has been uploaded Successfully!',\n              ERROR: 'There was an error uploading your file. Please try again.'\n            }\n          },\n          MISSING_ENROLLMENTS: {\n            BODY: {\n              TITLE: 'Enrollments',\n              HEADER: 'Start enrolling patients today on your own',\n              TEXT: 'No patients are currently enrolled in {{enterprise_customer_name}}\\'s Remote Patient Monitoring Program. Enrolling a patient only takes a few minutes. Get started by enrolling your first patient today. '\n            },\n            BUTTONS: {\n              ACTION: 'Start Enrolling Patients'\n            }\n          },\n          BILLER: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Practice biller required',\n              TEXT: '100Plus requires practice biller details before fully enrolling patients for your practice.'\n            },\n            BUTTONS: {\n              SETUP: 'Setup my biller'\n            }\n          },\n          COVID: {\n            BODY: {\n              TITLE: '100Plus alert',\n              HEADER: 'COVID-19 Symptom Patient Kits available soon',\n              TEXT: '100Plus COVID-19 symptom patient kits are available for pre-order and will begin shipping September 2020 to your Medicare and Medicare Advantage patients. The kits include the 100Plus Thermometer and the 100Plus Pulse Oximeter. Both devices monitor patients’ ongoing data and stream it directly into the 100Plus Provider Portal where you can access COVID-19 symptom data. When your patient’s health data is out of normal range, you will be alerted immediately.'\n            },\n            BUTTONS: {\n              ACTION: 'Start enrolling patients',\n              LEARN: 'Learn more'\n            }\n          },\n          VERIFY_BANK: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Verify your bank account',\n              TEXT: 'Two deposits ranging from 0.01 - 0.99 cents will be deposited into your bank account by {{nextBusinessDay}}. Please verify them after they arrive.'\n            },\n            BUTTONS: {\n              VERIFY: 'Verify my bank'\n            },\n            TOASTS: {\n              SUCCESS_VERIFIED: 'Success! Your bank account has been verified.',\n              SUCCESS_NOT_VERIFIED: 'Success! Please log in to 100Plus in one business day and verify the two deposits made to your bank account.',\n              ERROR: ''\n            }\n          },\n          ADD_PAYMENT_METHOD: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Update a payment method',\n              TEXT: '100Plus requires a credit card or bank account on file to ship devices to patients.'\n            },\n            BUTTONS: {\n              SETUP: 'Update my payment method'\n            }\n          },\n          OVERDUE_INVOICE: {\n            BODY: {\n              TITLE: 'Account alert',\n              HEADER: 'Overdue Invoice',\n              TEXT: 'Payment on this account is overdue, 100Plus requires a valid credit card or bank account on file to continue shipping devices to patients.'\n            },\n            BUTTONS: {\n              SETUP: 'Change my payment method'\n            }\n          },\n          PATIENTS_CONSENTED: {\n            BODY: {\n              TITLE: 'Patient Status',\n              HEADER: '{{ patients_consented_and_shipped }} patients have consented and been shipped medical devices.',\n              TEXT: '{{ patients_consented_and_shipped_without_rpm }} of these patients still need RPM services and time recorded for the calendar month. Performing RPM services for at least 20+ minutes a month for all of your patients means <b>{{ patients_consented_and_shipped_revenue }} annual revenue</b> for your practice.'\n            },\n            BUTTONS: {\n              VIEW: 'View patient reporting'\n            }\n          },\n          PATIENT_MISSING_REQUIRED: {\n            BODY: {\n              TITLE: 'Incomplete Enrollments',\n              HEADER: '{{ patients_missing_required }} patients are missing required information to ship medical devices.',\n              TEXT: 'These incomplete enrollments are missing information, such as address and insurance. Completing these incomplete enrollments would enable your practice to serve these at-risk patients and earn an additional <b>{{ patients_missing_required_revenue }} annual revenue.</b>'\n            },\n            BUTTONS: {\n              VIEW: 'View incomplete enrollments'\n            }\n          },\n          PATIENT_RPM: {\n            BODY: {\n              TITLE: 'Enrollments',\n              HEADER: '{{ patients_rpm_count }} patients need consent for RPM services to ship medical devices.',\n              TEXT: 'The 100Plus team is diligently working on your behalf to gather these consents. You or your staff may also gather consent by reading the agreement to the patient and attesting by signature that the patient consented. Completing these enrollments would enable your practice to serve these at-risk patients and earn an additional <b>{{ patients_rpm_revenue }} annual revenue.</b>'\n            },\n            BUTTONS: {\n              VIEW: 'View enrollments'\n            }\n          }\n        },\n        CONTACTS: {\n          BODY: {\n            HEADER: 'My Emergency Contacts'\n          },\n          CONTACT: {\n            FIELDS: {\n              FIRST_NAME: 'First name',\n              MIDDLE_NAME: 'Middle',\n              LAST_NAME: 'Last name',\n              EMAIL: 'Email',\n              PRIMARY: 'This person can come to my aid during an emergency',\n              NOTIFICATIONS: 'This person is just for notifications only',\n              ACCESS: 'Invite this contact to access your account data',\n              GENDER: 'Gender',\n              GENDER_DEFAULT: 'Gender',\n              DOB: 'Date of birth',\n              RELATIONSHIP: 'Relationship',\n              RELATIONSHIP_DEFAULT: 'Relationship',\n              PRIMARY_PHONE: 'Primary number with area code',\n              SECONDARY_PHONE: 'Secondary phone',\n              PHONE_TYPE: 'Phone type',\n              PHONE_TYPE_DEFAULT: 'Choose type',\n              NOTES: 'Notes'\n            },\n            BUTTONS: {},\n            CONFIRMATION_INFO: {\n              BODY: {\n                HEADER: 'Confirming Contact Phone Number',\n                TEXT: 'In order to ensure that this is a contact of yours and a real phone number, we have sent a verification to this person. when they respond we will confirm this is your contact.'\n              },\n              FIELDS: {},\n              BUTTONS: {\n                OK: 'OK'\n              }\n            }\n          },\n          MODALS: {\n            ARE_YOU_SURE: {\n              HEADER: 'Please confirm',\n              BODY: 'Are you sure you want to delete this contact?',\n              BUTTONS: {\n                CLOSE: 'Cancel',\n                ACTION: 'Delete'\n              }\n            }\n          },\n          BUTTONS: {\n            ADD: {\n              TXT: 'Add a new contact',\n              INFO: '(Maybe a next door neighbor?)'\n            }\n          }\n        },\n        ACCOUNT_SETTINGS: {\n          BODY: {\n            HEADER: 'Your account settings'\n          },\n          TABS: {\n            CONTACT: 'Contact information',\n            PATIENT_NOTIFICATIONS: 'Patient test alerts',\n            PATIENT_GROUPS: 'Patient groups'\n          },\n          DEVICES_LIST: {\n            BODY: {\n              HEADER: 'Device Info'\n            },\n            FIELDS: {\n              SERIAL: 'Serial',\n              WEARER: 'Wearer',\n              NO_DEVICES: 'No devices'\n            },\n            BUTTONS: {\n              ADD_WATCH: '+ Add watch'\n            }\n          },\n          ADD_DEVICE: {\n            CHOOSE_DEVICE_ACCOUNT: {\n              BODY: {\n                HEADER: 'Choose account',\n                COPY: 'Device {{device_serial}} will be paired with the below account:'\n              },\n              FIELDS: {\n                ACCOUNT: 'Account'\n              }\n            },\n            CONFIRM_DEVICE_ACCOUNT: {\n              BODY: {\n                HEADER: 'Confirm account',\n                COPY: 'Device {{device_serial}} will be paired with the below account:'\n              },\n              FIELDS: {\n                ACCOUNT: 'Account'\n              }\n            },\n            DEVICE_ACTIVATED: {\n              BODY: {\n                HEADER: 'Device activated'\n              }\n            }\n          },\n          AUTHENTICATION_INFO: {\n            BODY: {\n              HEADER: 'Your contact information'\n            },\n            FIELDS: {\n              EMAIL: 'Email',\n              PHONE: 'Phone',\n              PASSWORD: 'Password'\n            },\n            BUTTONS: {\n              PASSWORD_RESET: 'Send link to reset password'\n            },\n            TOASTS: {\n              SUCCESS: 'Your email has been updated.',\n              ERROR: 'There was an error, please try again.',\n              PASSWORD_RESET: 'Your password has been emailed to you'\n            }\n          },\n          PATIENT_TEST_ALERTS: {\n            BODY: {\n              HEADER: 'Your Alert Settings',\n              TEXT: 'Choose whether to receive alerts for the patients monitored by each Monitoring Provider or Patient Group below. Note: these settings will update <b>your</b> alert subscriptions only. Each provider must configure their own alert settings under their own account.',\n              LABEL: 'Receive patient alerts for'\n            },\n            TABLE: {\n              TITLE: 'Subscribe to alerts by Monitoring Provider',\n              PRIMARY_PRACTITIONER: 'Monitoring Provider',\n              EMAIL_ALERTS: 'Email Alerts'\n            }\n          },\n          PATIENT_GROUPS: {\n            BODY: {\n              HEADER: 'All patient groups',\n              LABEL: 'NOT IMPLEMENTED',\n              CREATE_GROUP: 'Create group',\n              EDIT_GROUP: 'Edit group'\n            },\n            TABLE: {\n              GROUP_NAME: 'Group Name',\n              CARE_MANAGERS: 'Care Team',\n              JOINED: 'Joined',\n              MEMBER_COUNT: 'Patients'\n            },\n            EDIT_GROUP_MODAL: {\n              HELP_TEXT: 'To remove a patient from this Group: 1) go to Patient Reporting, 2) filter patient list for those in this Group, 3) go to a patient\\'s chart and deselect this Group.'\n            },\n            DELETE_GROUP_MODAL: {\n              HEADER: 'Delete group',\n              BODY: 'Are you sure you want to delete this group?',\n              BUTTONS: {\n                CLOSE: 'Cancel',\n                ACTION: 'Delete'\n              }\n            },\n            TOASTS: {\n              CREATE_SUCCESS: 'New group has been created successfully',\n              UPDATE_SUCCESS: 'Group has been changed successfully',\n              DELETE_SUCCESS: 'Group has been deleted successfully',\n              ERROR: 'There was an error creating/updating your group'\n            }\n          }\n        },\n        USER_PROFILE: {\n          BODY: {\n            HEADER: 'Profile'\n          },\n          ACCOUNT_INFO: {\n            BODY: {\n              HEADER: 'Account Information',\n              HEADER2: 'Why add your photo?',\n              TEXT: 'Your photo is very important as a means to identify you should we ever need to send someone to help. When we notify 911, and your contacts, they will see this photo, and be able to identify you.',\n              UPLOAD: 'Add a photo'\n            },\n            FIELDS: {\n              FIRST_NAME: 'First name',\n              LAST_NAME: 'Last name',\n              GENDER: 'Gender',\n              DOB: 'Date of birth',\n              PHONE_TYPE: 'Phone type',\n              PRIMARY_PHONE: 'Primary number with area code',\n              EMAIL: 'Email'\n            },\n            BUTTONS: {},\n            MODALS: {\n              WARNING: {\n                HEADER: 'Important',\n                BODY: 'Upon updating your email, you will be redirected to log in again. Please remember to log in with your NEW email address.',\n                BUTTONS: {\n                  ACTION: 'I understand'\n                }\n              }\n            },\n            TOASTS: {\n              RE_AUTHENTICATE: 'Please re-authenticate with your new email address'\n            }\n          },\n          EMERGENCY_INFO: {\n            BODY: {\n              HEADER1: 'Emergency Information',\n              HEADER2: 'Want to be helped by a Heart Hero?',\n              TEXT2: 'Heart hero is our network of CPR trained responders that are notified during any 100Plus emergency. By checking the box below we will notify the Heart Hero network to help you in the event of an emergency.',\n              HEADER3: 'Get help from nearby emergency responders',\n              TEXT3: 'In addition to notifying 911 and your emergency contacts, 100Plus has a network of CPR trained responders that are notified during any 100Plus emergency. By choosing to opt in, the nearest responders will be notified to help you during an emergency.',\n              HEADER4: 'Home entry',\n              TEXT4: 'Should you have an emergency, the emergency personnel will want instructions on how to enter your home. For additional security, home entry information is not viewable here and can be updated only by calling',\n              SHARE: 'Share Heart Hero with a friend or loved one',\n              ENROLLED: 'Enrolled',\n              NOT_ENROLLED: 'Not enrolled'\n            },\n            FIELDS: {\n              HEART_HERO: 'YES! Notify Heart Heroes if I’m in emergency need',\n              INSTRUCTIONS_PLACEHOLDER: 'Example: In case the doors are locked. i keep a spare key under a rock in the backyard. The rock is almond shaped, and is to the right of the compost pile.'\n            },\n            TOASTS: {\n              SUCCESS: 'Heart hero enrollment updated.',\n              ERROR: 'There was an error, please try again.'\n            }\n          },\n          ADDITIONAL_INFO: {\n            BODY: {\n              HEADER1: 'Additional Information',\n              TEXT1: 'Any additional information you can give us is helpful in being able to compare and view your data, heart rate, medical status against other people in your age range, or with perhaps similar afflictions.',\n              HEADER2: 'Why do we need this information?',\n              TEXT2: 'Any additional information you can give us is helpful in being able to compare and view your data, heart rate, medical status against other people in your age range, or with perhaps similar afflictions.'\n            },\n            FIELDS: {\n              NO_INFO: 'No info collected',\n              NO_INFO_TXT: 'Please fill out your demographic information',\n              HEIGHT: 'Height',\n              WEIGHT: 'Weight (lbs)',\n              ETHNICITY: 'Ethnicity',\n              RACE: 'Race',\n              MARITAL_STATUS: 'Marital Status',\n              INCOME: 'Income Level',\n              JOB_TYPE: 'Job Type',\n              EDUCATION: 'Education Level',\n              INSURANCE: 'Medical Insurance'\n            },\n            BUTTONS: {}\n          }\n        },\n        //            INFO: {\n        //              HEADER1: 'Looking For Medical Info?'\n        //              BODY1: 'If you are looking for settings that detail out your personal medical information like allergies, diagnosis, and prescriptions, those can be found in the medical data section.'\n        //              BUTTONS: {\n        //                MEDICAL_DATA: 'Take me there'\n        //              }\n        //            }\n        BILLING: {\n          BODY: {\n            HEADER: 'Billing Information'\n          },\n          PLANS: {\n            BODY: {\n              MONTHLY: 'Monthly',\n              ANNUALLY: 'Annually'\n            },\n            BUTTONS: {\n              SAVE: 'Activate plan'\n            }\n          },\n          OVERVIEW: {\n            SUBSCRIPTION_INFO: {\n              BODY: {\n                HEADER: 'Subscription',\n                HEADER2: '24-hour monitoring service',\n                COPY: '100Plus\\'s monitoring service has you covered 24 hours a day, 7 days a week. Our team of certified dispatchers notify and work with your loved ones and your local emergency responders to get you the help you need.'\n              },\n              FIELDS: {\n                EMAIL: 'Subscription active'\n              },\n              BUTTONS: {},\n              TOASTS: {\n                ERROR: 'There was an error choosing your subscription. Please try again.',\n                SUCCESS: 'Subscription successfully enabled.'\n              }\n            },\n            SOURCE: {\n              CREDIT_CARD: 'Please add a credit card',\n              METHOD: 'Please add a payment method',\n              PAY_BY_CHECK: 'Your account has been authorized to pay by check. To change your payment method, please select from the options below.',\n              BUTTONS: {\n                ADD_CC: 'Add credit card',\n                ADD_BANK: 'Add bank account',\n                UPDATE: 'Update',\n                CHANGE_PAYMENT_METHOD: 'change payment method'\n              }\n            },\n            SUBSCRIPTION_DISCOUNT: {\n              BODY: {\n                CREDIT: 'You have a subscription credit of',\n                REMAINING: 'remaining.',\n                CREDIT_WILL_BE_APPLIED: 'Your credit will be applied to your next invoice.'\n              }\n            },\n            SUBSCRIPTION: {\n              SUBSCRIPTION: 'subscription',\n              CHOOSE: 'Please choose a subscription',\n              CURRENT: 'Your current subscription:',\n              NEXT_BILLING_DATE: 'Next billing date:',\n              NOT_ACTIVE: 'Not active',\n              TRIAL_ENDS_ON: 'Your {{daysInTrialPeriod}}-day free trial ends on',\n              TRIAL_CANCELLED: 'You\\'ve cancelled your trial and your subscription will be suspended once your trial expires.',\n              DOWNGRADE_TO: 'After that, you\\'ve elected to downgrade to:',\n              BILLED_AT_TRIAL_END: 'You\\'ll be billed {{price}} per {{interval}} when your trial expires.',\n              ENDS_AT: 'You\\'ve cancelled your subscription and it will end on {{billingPeriodEndsAt}}.',\n              BUTTONS: {\n                REACTIVATE: 'Reactivate',\n                EDIT_PLAN: 'Edit my plan',\n                ACTIVATE: 'Activate subscription now'\n              }\n            },\n            COUPON: {\n              BODY: {\n                HEADER: 'Have a coupon or gift card to redeem?',\n                HEADER2: 'Redeem gift',\n                COPY: 'Enter the 8 digit code emailed to you or on the back of your card:'\n              },\n              FIELDS: {\n                REDEEM: 'Coupon redemption code',\n                REDEEM_PLACEHOLDER: 'Code'\n              },\n              BUTTONS: {\n                REDEEM: 'Redeem'\n              },\n              TOASTS: {\n                SUCCESS: 'Your coupon was successfully redeemed!',\n                ERROR: ''\n              }\n            },\n            INVOICES: {\n              BODY: {\n                HEADER: 'Invoices'\n              },\n              DATE: 'Date',\n              DESCRIPTION: 'Description',\n              PAYMENT_METHOD: 'Payment method',\n              AMOUNT: 'Amount'\n            }\n          },\n          UPDATE_CARD: {\n            BODY: {\n              COPY: 'Enter your new credit card information and click save'\n            },\n            BUTTONS: {},\n            TOASTS: {\n              ERROR: 'Error updating your credit card, please try again',\n              SUCCESS: 'Your credit card details have been updated'\n            }\n          }\n        },\n        ENTERPRISE: {\n          DISCLAIMERS: {\n            CLAIMS: 'The guidance provided is for reference purposes only. Practitioners should ask properly trained and certified billing personnel to review draft charges prior to submission to confirm compliance with billing requirements for their specific scenarios.',\n            RPM_TIMELY_RESPONSE: 'The RPM Platform is not intended: for clinical contexts (e.g., hospital) where a timely response from a healthcare provider is required; to monitor clinical conditions (disease or diagnosis) where a timely response and/or immediate clinical action from a healthcare provider is required; or where active patient monitoring is required.'\n          },\n          CLAIMS: {\n            BODY: {\n              SHOW: 'Show',\n              RESULTS: 'results'\n            },\n            POPOVER: {\n              RPM_START_DATE: 'RPM Start Date',\n              MEDICARE: 'Medicare',\n              MEDICARE_ADVANTAGE: 'Medicare Advantage',\n              GROUP: 'Group',\n              DEACTIVATED: 'Deactivated:',\n              INSURER: 'Insurer:',\n              INDIVIDUAL_NUMBER: 'Individual Number:',\n              GROUP_NUMBER: 'Group Number:',\n              SECONDARY: 'Secondary Insurance',\n              TERTIARY: 'Tertiary Insurance',\n              NAME: 'Insurer name',\n              POLICY_HOLDER: 'Policy Holder: ',\n              POLICY_NUM: 'Policy number: ',\n              POLICYHOLDER_RELATIONSHIP: 'Relationship: ',\n              POLICYHOLDER_SEX: 'Sex: ',\n              POLICYHOLDER_NAME: 'Name: ',\n              POLICYHOLDER_DOB: 'Date of Birth: ',\n              SELF: 'Policyholder is patient',\n              CPT: \"'<p>Charges will only show in the portal when patients meet the required days of readings: 2–15 days for 99445 or 16+ days for 99454. Patients with 0–1 days of readings will no longer generate charges.<br/><br/>⚠️ Please note that delayed device readings may cause charges to appear later than expected.</p>'\"\n            },\n            DAYSOFREADINGS: {\n              DAYS: 'Days',\n              POPOVERCOPY: ' days of recordings collected from the patient over this service period'\n            },\n            TABLE_HEADINGS: {\n              PATIENT_NAME: 'Patient name',\n              DATE_OF_SERVICE: 'Date of service',\n              CPT: 'CPT',\n              RPM_PROVIDER: 'Monitoring Provider',\n              SUBMITTED: 'Submitted',\n              COPY: 'Copy'\n            },\n            TABLE_BODY: {\n              MARK_AS_SUBMITTED: 'Mark as submitted',\n              DEACTIVATED_AT: 'Deactivated at',\n              DEACTIVATED_AND_REACTIVATED_AT: 'Deactivated at {{deactivatedDate}} and Reactivated at {{reactivatedDate}}',\n              DX_WARNING: 'May not contain any billable DX codes'\n            },\n            COPY_CLAIM: {\n              DOB: 'DOB:',\n              CPT: 'CPT CODE:',\n              PRICE: 'PRICE:',\n              DATE_OF_SERVICE: 'DATE OF SERVICE:'\n            },\n            EHR_SUBMITTED_TEXT: 'This draft charge was pushed automatically into your EHR.',\n            DEFAULT_EHR_SUBMIT_TOOLTIP_TEXT: 'EHR Charge ID',\n            FILTERS: {\n              ALL_CLAIMS: 'All Draft Charges',\n              FILTERED_CLAIMS: 'Filtered Draft Charges',\n              PATIENT_NAME: 'Patient name',\n              DAYS_OF_READINGS: 'Days of readings',\n              DATE_OF_SERVICE: 'Date of service',\n              CPT_CODES: 'CPT codes',\n              SUBMISSION_STATUS: 'Submission status',\n              OFFICE: 'Office'\n            },\n            REQUIRES_REVIEW: 'Deactivated in month',\n            NOT_SUBMITTED: 'Not submitted'\n          },\n          GLOBAL: {\n            PATIENTS: 'Active Patients',\n            DEACTIVATED_PATIENTS: 'Deactivated Patients',\n            ADHERENCE: 'Adherence',\n            STEPS: 'Steps',\n            HEART_RATE: 'Heart Rate',\n            GLUCOMETER: 'Blood Glucose',\n            WEIGHT: 'Weight',\n            BLOOD_PRESSURE: 'Blood Pressure',\n            PULSE_OXIMETER: 'Pulse Oximeter',\n            THERMOMETER: 'Thermometer',\n            AMBIENT_CHF: 'Ambient CHF',\n            RPM_DATA: 'RPM Data',\n            FINALIZED: 'Finalized',\n            DRAFT: 'Draft',\n            INITIALIZED: 'Initialized',\n            IN_PROGRESS: 'In progress',\n            OPEN: 'Open',\n            CLOSED: 'Closed',\n            WELCOME: 'Welcome',\n            NONE: 'None recorded',\n            SIGNED_CONSENT: 'Signed Consent',\n            PUSHED_TO_EHR: 'Pushed To EHR',\n            DOWNLOAD: 'Download',\n            DOWNLOADING: 'Downloading',\n            COPY_LINK: 'Copy Link',\n            ERROR_DOWNLOADING_OBSERVATION_REPORT: 'Error downloading observation report'\n          },\n          PATIENTS: {\n            BODY: {\n              STATUS: {\n                ACTIVE: 'ACTIVE',\n                NOT_ACTIVE: 'NOT_ACTIVE',\n                PENDING: 'PENDING',\n                PAUSED: 'PAUSED',\n                HOSPITALIZED: 'HOSPITALIZED_REHAB',\n                TRAVELING: 'PAUSE_INVOICING_TRAVELING',\n                SETUP_COMPLETE: 'SETUP_COMPLETE',\n                NO_NOTES: 'NO_NOTES',\n                NOTES: 'NOTES',\n                DEMO: 'DEMO',\n                DEACTIVATED: 'lte'\n              },\n              HEADER: 'Total Patients',\n              REAL: 'Patient',\n              DEACTIVATED: 'Deactivated',\n              PENDING_SETUP: 'Pending Setup',\n              DEMO: 'Demo',\n              NOT_ACTIVE: 'Not Active',\n              PAUSED: 'Paused',\n              HOSPITALIZED: 'Hospitalized',\n              TRAVELING: 'Traveling',\n              NO_RPM_TIME: 'patients have 0 minutes of logged RPM time',\n              SHOW: 'Show',\n              RESULTS: 'results',\n              VIEW_DEACTIVATED: 'View deactivated patients',\n              VIEW_ACTIVE: '<- Return to active patients',\n              RETURN_DEACTIVATED: '<- Return to deactivated patients',\n              SETUP_COMPLETED: 'With Setup Completed',\n              NOTES_ADDED: 'with Comments Added',\n              NO_NOTES_ADDED: 'with No Comments Added'\n            },\n            TOTAL_POPOVER: {\n              HEADER: 'Total Patients',\n              COPY: 'Total patients includes all patients in your medical practice who have been shipped medical devices. It does not include patients who have been deactivated from the RPM program, demo patient accounts or medical provider evaluation accounts.',\n              DEACTIVATED_COPY: 'Total patients may include demo patient accounts or medical provider evaluation accounts but these accounts do <b>NOT</b> contribute to claims or billing.',\n              ALT: 'Total patient count - more information'\n            }\n          },\n          AGREEMENTS: {\n            BODY: {\n              HEADER: '100Plus Remote Patient Monitoring - Medical Provider Service Agreement and Business Associate Agreement',\n              COPY: 'These terms and conditions create a contract between you and 100Plus. Read the agreements below carefully. By checking the boxes, you acknowledge that you have read and agree to the following terms.',\n              DISMISSED_COPY: 'To access all of the features of the 100Plus platform a signed contract is required.',\n              DISMISSED_COPY_TEXT: 'To access all features of the 100Plus platform, a signed contract is required. Please check your inbox for an email from practice.support@100plus.com to review and sign.\\n\\nNeed help? Contact us at (855) 685-5487 or accountsupport@100plus.com.',\n              OK: 'OK'\n            },\n            BUTTONS: {\n              LATER: 'Complete later'\n            }\n          },\n          E_USER_DETAIL: {\n            BODY: {\n              HEADER: '',\n              HEADER2: 'Remote Care Monitoring Report',\n              FULL_LIST: '< Full list',\n              NEXT_PATIENT: 'Next patient >'\n            },\n            FIELDS: {\n              COMMENTS: 'Comments from {{name}}'\n            }\n          },\n          OBSERVATION_REPORT: {\n            BODY: {\n              CHART_DATE_RANGE: 'Patient chart date range',\n              DEACTIVATED_HEADER: 'Deactivated patient',\n              REFRESH_DATA: 'Refresh Data',\n              REFRESH_DATA_TOOLTIP: '<p>Readings taken by a patient within the last few minutes can be fetched by clicking the white space on any device charts and holding down the following keys at the same time: <b>CTRL-SHIFT-ENTER</b> (if using a PC) or <b>CMD-SHIFT-ENTER</b> (if using an Apple device).</p>',\n              TIMEZONE_INFO: 'Patient is in {{patientTimeZone}} timezone,<br/>the data is displayed in {{graphTimeZone}} timezone.<br/>This can be changed by clicking the 3 dots below.',\n              SAVE_NOTE_INFO: 'All edits to this clinical note are saved for compliance and audit purposes and are available upon request.',\n              PHYSIOLOGICAL_MONITORING_SAVE_NOTE_INFO: 'Saving edits for this clinical note create a permanent and uneditable record for compliance and audit purposes. Copies are available upon request.'\n            },\n            BUTTONS: {\n              THIS_MONTH_REPORT: 'Return to this month\\'s report',\n              RETURN_TO_FILTERED_LIST: '<- Return to filtered patients'\n            },\n            HEADERS: {\n              EDIT_ADDRESS: 'Edit Address',\n              DOB: 'Date of birth',\n              DEACTIVATED: ' Deactivated',\n              DX_CODES: 'DX Codes',\n              GENDER: 'Sex',\n              ADDRESS: 'Home Address',\n              EMAIL: 'Email',\n              YEARS: 'years',\n              START_DATE: 'Start Date',\n              RPM_START_DATE: 'RPM Start Date',\n              CCM_START_DATE: 'CCM Start Date',\n              SUBSTANTION_FILES: 'Download Consent',\n              RPM_INITIAL_SETUP_DATE: 'RPM set-up date',\n              CHF_INITIAL_SETUP_DATE: 'CHF set-up date',\n              CCM_CARE_PLAN_COMPETED_DATE: 'Care plan creation date',\n              CCM_CARE_PLAN_APPROVAL_DATE: 'Care plan approval date',\n              CCM_CARE_PLAN_APPROVING_PROVIDER: 'Care plan Approving Provider',\n              CCM_CARE_PLAN_INITIAL: 'Initial Care Plan',\n              MONTHLY_TARGET: 'Monthly days of readings target',\n              LANGUAGE: \"Preferred Language\",\n              PATIENT_GROUPS: 'Assign patient groups',\n              PREVIOUS_NOTES: 'Previous notes'\n            },\n            TOASTS: {\n              ERROR: 'There was an error saving your report.',\n              DRAFT_SUCCESS: 'Report successfully saved as a draft.',\n              SUCCESS: 'Report successfully saved.',\n              DX_CODES_UPDATED: 'Dx codes successfully updated.',\n              DX_CODES_UPDATE_FAILED: 'Unable to update Dx codes. Please refresh and try again.',\n              PATIENT_UPDATED: 'Patient updated successfully',\n              LINK_COPIED: 'Link copied to clipboard',\n              NOTES_COPIED: 'Unsaved note copied to clipboard',\n              DOWNLOAD_RENDERING: 'Your PDF Chart is rendering and will automatically download when finished. This may take up to 60s depending on the patient’s data. You may navigate to another section in the 100Plus Portal, but do not refresh or exit the screen until the report is downloaded.',\n              EXPORT_RENDERING: 'Your export is rendering and will automatically download when finished. This may take up to 60s depending on the practice’s data. You may navigate to another section in the 100Plus Portal, but do not refresh or exit the screen until the report is downloaded.',\n              PHONE_NUMBER_ALREADY_USED: 'Phone number already used for patient',\n              PHONE_NUMBER_UPDATED: 'Phone number saved',\n              PHONE_NUMBER_IS_INVALID: 'Phone number is invalid',\n              DOWNLOADING_SIGNED_CONSENT: 'Downloading Signed Consent',\n              ERROR_DOWNLOADING_SIGNED_CONSENT: 'Error Downloading Signed Consent',\n              DOWNLOADING_INITIAL_CARE_PLAN: 'Downloading Initial Care Plan',\n              ERROR_DOWNLOADING_INITIAL_CARE_PLAN: 'Error Downloading Initial Care Plan'\n            }\n          },\n          OBSERVATION_REPORT_ACTIVITY_LOG: {\n            FIELDS: {\n              DATE: 'Date',\n              SUBMITTED_BY: 'Submitted By',\n              PROVIDER: 'Monitoring Provider',\n              RPM_TIME: 'RPM Time',\n              MINUTES_SUBMITTED: 'Minutes Submitted',\n              TOTAL_TIME: 'Total Time',\n              RPM_TIME_SPENT: 'Submit and bill for RPM Time',\n              CCM_TIME_SPENT: 'Submit and bill for CCM Time',\n              CPT_CODE: 'CPT Code',\n              RPM_DATE: 'Date of Service',\n              NONE: 'None recorded',\n              PHONE_NUMBER: 'Phone number'\n            },\n            BUTTONS: {\n              MIN_1: '1 min',\n              MINS_5: '5 mins',\n              MINS_10: '10 mins',\n              MINS_20: '20 mins',\n              SUBMIT: 'Submit',\n              SUBMIT_AND_NEXT: 'Submit + next',\n              SUBMIT_AND_BILL: 'Submit and bill for 20+ minutes'\n            },\n            TIMESHEET_REACTIVATION_MODAL: {\n              HEADER: 'Reactivate patient?',\n              BODY: 'This patient is deactivated. <br/>Submitting a timesheet will reactive this patient.',\n              BUTTONS: {\n                ACTION: 'Reactivate',\n                CLOSE: 'Cancel'\n              }\n            }\n          },\n          OBSERVATIONS_TABLE: {\n            BODY: {\n              HEADER: 'Observation reports'\n            },\n            FIELDS: {\n              DATE: 'Date',\n              END_DATE: 'End date',\n              TOTAL_RPM_TIME: 'Total RPM time',\n              TOTAL_CCM_TIME: 'Total CCM time',\n              STATUS: 'Status',\n              EXPORTS: 'Exports',\n              NONE: 'No observation reports.'\n            }\n          },\n          RPM_SETUP: {\n            TOASTS: {\n              ERROR: \"The text you have entered is too long. Please limit your input to 2000 characters.\"\n            },\n            HEADER: 'RPM Setup notes',\n            NOTE_PLACEHOLDER: \"Here you can add relevant notes about initial set up and training.\",\n            BUTTON: 'Complete RPM setup'\n          },\n          CHF_SETUP: {\n            TOASTS: {\n              ERROR: \"The text you have entered is too long. Please limit your input to 2000 characters.\"\n            },\n            HEADER: 'CHF Setup notes',\n            NOTE_PLACEHOLDER: \"Here you can add relevant notes about initial set up and training.\",\n            BUTTON: 'Complete CHF setup'\n          },\n          TEMPLATES: {\n            COMMENTS: 'comments',\n            CREATE: 'Add new template',\n            EDIT: 'Updating template'\n          },\n          PATIENT_REPORTING: {\n            UNREAD: {\n              REVIEWED_NOTES: '{{timestamp}} Latest readings reviewed and within normal limits. Plan of care ongoing, no further concerns as of present. {{initials}}',\n              REVIEWED_TOAST: 'Readings noted as reviewed. 1 minute timesheet added.',\n              POPOVER_CONTEXT: 'Marking reviewed will log 1 minute.',\n              POPOVER_BUTTON: 'Mark Reviewed'\n            },\n            FIELDS: {\n              CONDITIONS: 'Conditions',\n              LATEST_READING_DATE: 'Latest Reading',\n              LATEST_AVA_ADHERENCE_DATE: 'Adherence',\n              LAST_REVIEWED: 'Last Reviewed',\n              RPM_START_DATE: 'RPM Start Date',\n              DEVICES: 'Devices',\n              MONITORING_PROVIDER: 'Monitoring Provider',\n              PATIENT: 'Patient',\n              DEACTIVATION_DATE: 'Deactivation Date',\n              DEACTIVATION_REASON: 'Deactivation Reason',\n              LAST_READING: 'Last Reading',\n              WHAT_IS_LAST_READING: 'This is the last physiological reading that the patient completed on all of their devices.',\n              ADD_PHONE_NUMBER: 'Add patient phone number',\n              REMINDED: 'Reminded:',\n              OTHER_SERVICES: 'Patient Services'\n            },\n            DATA: {\n              WEIGHT: 'Weight',\n              READING: 'Reading',\n              PULSE: 'Pulse',\n              BP: 'BP'\n            },\n            FILTERS: {\n              HEADERS: {\n                RPM_TIME: 'RPM time',\n                CCM_TIME: 'CCM time',\n                NAME: 'Patient name',\n                MONITORING_PROVIDER: 'Monitoring Provider',\n                DOB: 'Date of birth',\n                LAST_READING_DATE: 'Last reading date',\n                CHOOSE_CONDITION: 'Choose condition and date range',\n                READINGS_SINCE: 'Readings Since',\n                NO_READINGS_SINCE: 'No Readings Since',\n                DEVICES: 'Device(s)',\n                LATEST_READING: 'Latest Reading',\n                READING_ACUITY: 'Alert Level',\n                CONDITIONS: 'Patient Conditions',\n                ADHERENCE: 'Patient Adherence',\n                PATIENT_GROUPS: 'Patient groups',\n                DAYS_OF_READINGS: 'Days of Readings (DoR)',\n                DAYS_REMAINING_AND_DOR: 'Days remaining + DoR',\n                SPOKEN_WITH_PATIENT: 'Spoken With Pt/Caretaker',\n                OTHER_SERVICES: 'Patient Services'\n              }\n            },\n            BUTTONS: {\n              REACTIVATE: 'Reactivate',\n              CANCEL: 'Cancel',\n              REACTIVATE_PATIENT: 'Reactivate patient',\n              CLEAR_FILTERS: 'Clear all filters',\n              ALL_PATIENTS: 'All Active Patients',\n              FILTERED_PATIENTS: 'Filtered Patients'\n            },\n            DOR_PACING_LEGEND: {\n              READINGS: 'Readings so far',\n              FORECAST: 'Projected to forecast',\n              TODAY: 'Day in billing cycle',\n              FORECAST_END: 'Forecast end'\n            },\n            MODAL: {\n              HEADER: 'Reactivate patient into RPM program',\n              BODY: 'Reactivating this patient into the RPM program will result in the following actions:',\n              POINT_1: 'The patient will be moved back to the active patient \"Patient Reporting\" list',\n              POINT_2: '100Plus RPM draft charge notifications for CPT codes 99453, 99454, 9957 and 99458 will resume.',\n              POINT_3: 'This patient will be included on the 100Plus monthly invoices.'\n            },\n            NOTES_MODAL: {\n              HEADER: 'Note could not be saved',\n              BODY: 'This note could not be saved. Please try again. To avoid losing your work, you can copy the unsaved note and save it somewhere secure until this issue is resolved.',\n              CLOSE: 'Close',\n              ACTION: 'Copy unsaved note',\n              UPDATE_SUCCESS: 'Reference notes updated.',\n              CANCEL_WARNING: 'Notes have changed. \"Cancel\" again to close without saving.'\n            },\n            NOTIFICATION: {\n              SUCCESS: 'Reactivation successful'\n            },\n            ACTIONS: {\n              COPY: 'Copy link',\n              SHARE: 'Share',\n              DOWNLOAD: 'Download',\n              ADD_REFERENCE_NOTES: 'Add reference notes',\n              VIEW_REFERENCE_NOTES: 'View reference notes',\n              INSURANCE: 'Insurance',\n              SAVE_CALL: 'Log Call',\n              SAVE_TEXT: 'Log Text'\n            },\n            INSURANCE_MODAL: {\n              TITLE: 'Patient insurance',\n              SAVE_SUCCESS: 'Insurance information updated.',\n              NO_ENROLLMENT: 'No enrollment record found for this patient.',\n              MEDICARE_NUM_UNIQUE: 'This Medicare number is already in use by another patient.'\n            },\n            BADGES: {\n              DEMO: 'Demo',\n              INTERNAL: 'Internal',\n              ACTIVE_VIEWER: 'Active Viewer'\n            },\n            CALL_LOG_FORM: {\n              SAVE: 'Save',\n              PROVIDER_NAME: 'Provider Name',\n              PATIENT_NUMBER: 'Patient phone number',\n              PHONE_TYPE: 'Phone type',\n              CALL_DURATION: 'Call duration',\n              RPM_CALL_DURATION: 'RPM Call duration',\n              CCM_CALL_DURATION: 'CCM Call duration',\n              CONNECTION_STATUS: 'Connection Status',\n              HEADER: 'Manually add a call to patients log',\n              TOTAL_CALL_TIME: '{{total_call_duration_minutes}} total call time',\n              TOTAL_CALL_TIME_OVER_20_WARNING: 'If call total is greater than 20 minutes, please log the additional time on the patient\\'s chart.',\n              TOASTS: {\n                SUCCESS: 'Call was logged successfully.',\n                ERROR: 'An error occurred while trying to log call.'\n              },\n              LOG_CALL: 'Log call'\n            },\n            TEXT_LOG: {\n              SAVE: 'Save',\n              TIMESHEET: {\n                SUCCESS_NOTIFICATION: '1 minute has been added to patient\\'s {{reportPeriodText}} {{service || \"RPM\"}} time',\n                ERROR_NOTIFICATION: 'An error occurred while trying to save timesheet'\n              },\n              OBSERVATION_NOTE: {\n                TEXT: '{{timestamp}} Patient notified via text to return call regarding {{service}} Program. {{initials}}',\n                SUCCESS: 'Observation note was successfully saved.',\n                ERROR: 'An error occurred while trying to save note.'\n              },\n              TOASTS: {\n                SUCCESS: 'Text was logged successfully.',\n                ERROR: 'An error occurred while trying to log text.'\n              },\n              LOG_TEXT: 'Log text'\n            },\n            SHARE_FORM: {\n              HEADER: 'Share patient physiologic data',\n              PROVIDER_NAME: 'Name',\n              SPECIALTY: 'Specialty',\n              RELATIONSHIP: 'Relationship to patient',\n              FAX_NUMBER: 'Fax number',\n              EMAIL_ADDRESS: 'Email address',\n              PHONE_NUMBER: ' Phone number (optional)',\n              IS_AUTHORIZED: 'Provider is authorized to see patient&#39;s data (HIPAA)',\n              ATTESTATION: 'The individual listed above is authorized to receive and view this patient\\'s data.',\n              NOT_APPLICABLE: 'Not Applicable',\n              HISTORY: {\n                HEADER: 'Share history',\n                SHARED_TO: 'Shared To',\n                PROVIDER: 'Shared By',\n                FAX: 'Fax',\n                EMAIL: 'Email',\n                DATE: 'Date',\n                NOT_PREVIOUSLY_SHARED: 'No previous shares'\n              },\n              TOASTS: {\n                SUCCESS: 'Readings shared successfully',\n                ERROR: 'An error occurred during sharing'\n              }\n            },\n            AVA: {\n              ADHERENCE_ALERT_TIME_FRAMES: {\n                TODAY: 'Today',\n                YESTERDAY: 'Yesterday',\n                DAYS_AGO: ' days ago',\n                ONE_WEEK_AGO: '1 week ago',\n                WEEKS_AGO: ' weeks ago',\n                ONE_MONTH_AGO: '1 month ago',\n                MONTHS_AGO: ' months ago'\n              },\n              ADHERENCE_ALERT_NO_DATE: {\n                REMINDERS_DISABLED: 'Reminders Disabled',\n                NO_MOBILE_PHONE: 'No mobile phone',\n                ADHERENT: 'Adherent',\n                NEWLY_ENROLLED: 'Newly Enrolled',\n                REMINDERS_PAUSED: 'Reminders Paused',\n                NO_LAST_READING: 'No last reading'\n              }\n            },\n            TOOLTIPS: {\n              LAST_REVIEWED: 'A patient’s Last Reviewed time is updated when someone at your practice saves a note their report, even if they don’t submit time.',\n              SHIPMENT_PROCESSING: 'Shipment processing',\n              TRACK_PACKAGE: 'Track package',\n              SHIPMENT_DELIVERED: 'Shipment delivered',\n              CURRENT_READING_BEYOND_THRESHOLD: 'This reading was beyond<br/>the set threshold.',\n              PRIOR_READING_BEYOND_THRESHOLD: 'A prior reading<br/> taken at {{formattedDate}}<br/> was beyond the set threshold.'\n            },\n            ALERT_THRESHOLDS: {\n              HEADING: 'Alert Thresholds',\n              BODY: 'Adjust alert thresholds for <b>all providers</b> subscribed to ',\n              BP: 'Blood pressure (mmHg)',\n              BP_SYSTOLIC: 'Systolic',\n              LOW: 'Low',\n              HIGH: 'High',\n              BP_DIASTOLIC: 'Diastolic',\n              LOW_BP_TOGGLE: 'Enable low blood pressure alerts',\n              WEIGHT: 'Weight change (lbs)',\n              HEARTRATE: 'Heart Rate',\n              INCREASE: 'Increase',\n              DECREASE: 'Decrease',\n              PERIOD: 'Period (days)',\n              POUNDS: 'Weight (lbs)',\n              BG: 'Blood glucose (mg/dL)',\n              O2: 'Blood Oxygen (%)',\n              RESET: 'Reset to default',\n              CHANGED_THRESHOLD_MODAL: {\n                HEADER: 'Alert threshold has changed',\n                BODY: '{{patientName}} took a {{readingType}}reading{{reading ? \" of \" : \"\"}}{{reading}} which was beyond the threshold set at that time. <br/><br/>The threshold has since been changed.',\n                CLOSE_BUTTON: 'View threshold change log'\n              },\n              VALIDATION: {\n                BP_SYSTOLIC: 'Value must be between 90 and 200',\n                BP_DIASTOLIC: 'Value must be between 40 and 140',\n                BLOOD_GLUCOSE: 'Value must be between 50 and 380',\n                BLOOD_OXYGEN: 'Value must be between 80 and 100',\n                HEART_RATE: 'Value must be between 0 and 150',\n                WEIGHT: 'Value must be between 0 and 25'\n              },\n              WEIGHT_SCALE_HELP_TEXT: 'Weight threshold alerts are triggered when a patient\\'s weight changes within a set number of days from their last recorded reading.'\n            },\n            ALERT_THRESHOLD_AUDIT_LOGS: {\n              HEADING: 'Alert threshold change log',\n              TIMESTAMP: 'Date and Time',\n              METRIC: 'Metric',\n              CHANGE: 'Change',\n              CHANGED_BY: 'Changed By'\n            }\n          },\n          PRACTICE_SETTINGS: {\n            EHR_PROVIDER: 'EHR Provider',\n            SELECT_EHR_PROVIDER: 'Select your EHR',\n            REQUEST_INTEGRATION: 'Request integration?',\n            REQUEST_INTEGRATION_EMAIL: {\n              SUBJECT: '{{practiceName}} wants to join the EHR integration waitlist',\n              BODY: '100Plus EHR Integrations Team,%0D%0A%0D%0AMy practice, {{practiceName}} would like to integrate our EHR, {{ehrName}}.%0D%0A%0D%0ABest,%0D%0A{{providerName}}',\n              SUBJECT_FOR_OFFICE: 'Office in {{practiceName}}\\'s practice wants to join the EHR integration waitlist',\n              SUBJECT_FOR_OFFICE_NAMED: 'Office {{officeName}} in {{practiceName}} practice wants to join the EHR integration waitlist',\n              BODY_FOR_OFFICE: '100Plus EHR Integrations Team,%0D%0A%0D%0AMy practice, {{practiceName}} would like to integrate our EHR, {{ehrName}} for our office.%0D%0A%0D%0ABest,%0D%0A{{providerName}}',\n              BODY_FOR_OFFICE_NAMED: '100Plus EHR Integrations Team,%0D%0A%0D%0AMy practice, {{practiceName}} would like to integrate our EHR, {{ehrName}} for our office {{officeName}}.%0D%0A%0D%0ABest,%0D%0A{{providerName}}'\n            },\n            TAB_HEADINGS: {\n              CONTACT_INFORMATION: 'Contact Information',\n              RPM_ELIGIBILITY: 'RPM Eligibility Checks',\n              PAYMENT_METHODS: 'Payment Methods',\n              BILLER_ACCOUNT: 'Biller Account',\n              STAFF_ACCOUNTS: 'Staff Accounts',\n              EHR_PROVIDER_SETTINGS: 'EHR Integrations',\n              ORGANIZATION_EHR_SETTINGS: 'Organization EHR Settings',\n              OFFICE_EHR_SETTINGS: 'Office EHR Settings'\n            },\n            ACTIONS: {\n              EDIT: 'Edit',\n              SET_AS_PRIMARY: 'Set as primary',\n              SAVE: 'Save',\n              DELETE: 'Delete'\n            },\n            CONTACT_TABLE: {\n              TABLE_HEADINGS: {\n                PRACTICE_NAME: 'Practice name',\n                ADDRESS_1: 'Address 1',\n                ADDRESS_2: 'Address 2',\n                CITY: 'City',\n                STATE: 'State',\n                ZIP: 'Zip',\n                PHONE: 'Phone',\n                PRIMARY: 'Primary'\n              },\n              COPY: {\n                INFO_REQUIRED: 'Your practice information is required and must be correct for proper Medicare billing.',\n                PLEASE_ADD_NOW: 'Please add your office details now.'\n              },\n              MODAL: {\n                HEADER: 'Edit office phone',\n                COPY: 'To edit a practice address, please contact us at (844) 483-7587',\n                SAVE: 'Save',\n                CANCEL: 'Cancel'\n              }\n            },\n            NPI_OFFICE: {\n              HEADER: 'Billing NPI, Tax ID and PTAN',\n              TABLE_HEADINGS: {\n                BILLING_NPI: 'Billing NPI (10 Digits)',\n                NPI_TYPE: 'Billing NPI Type',\n                TAX_ID: 'Tax ID',\n                PTAN: 'PTAN'\n              },\n              MODAL: {\n                HEADER: 'Add billing NPI, Tax ID and PTAN',\n                SAVE: 'Save',\n                CANCEL: 'Cancel'\n              },\n              BUTTONS: {\n                ADD_ORG: 'Add Billing NPI, Tax ID and PTAN'\n              }\n            },\n            NPI_INDIVIDUAL: {\n              HEADER: 'Individual NPI',\n              BUTTONS: {\n                ADD_INDIVIDUAL: 'Add individual NPI'\n              },\n              TABLE_HEADINGS: {\n                PRIMARY_PRACTITIONER: 'Primary Practitioner',\n                INDIV_NPI_NUM: 'Individual NPI (10 Digits)',\n                INDIV_NPI_TYPE: 'Individual NPI Type'\n              },\n              MODAL: {\n                HEADER: 'Add individual NPI',\n                SAVE: 'Save',\n                CANCEL: 'Cancel'\n              }\n            },\n            NPI_TYPES: {\n              ORG: 'Organization',\n              IND: 'Individual',\n              VALID: 'Valid',\n              INVALID: 'Invalid'\n            },\n            EHR_CLAIM_SETTINGS: {\n              HEADER: 'Push claim drafts',\n              COPY: 'Set conditions for automatic pushing of drafted claims into your EHR',\n              PROMPT: 'Number of days',\n              VALIDATION: 'This value needs to be numeric'\n            },\n            EHR_STATUS: {\n              ACTIVE: 'Active',\n              INACTIVE: 'Inactive'\n            }\n          },\n          REMOTE_PATIENT_MONITORING_STATUS: {\n            HEADER: 'RPM Status and History',\n            ADHERENCE: {\n              HEADER: 'Adherence',\n              TEXT: 'If a patient is non-adherent, the best practice is to contact the patient and educate them on why testing regularly is critical to their health. The time spent performing these types of actions can count towards billing for codes <b>99457</b> and <b>99458</b>.',\n              BUTTONS: {\n                LEARN_MORE: 'Learn more about RPM billing'\n              }\n            },\n            BUTTONS: {\n              REMOVE_PATIENT: 'Pause patient',\n              REACTIVATE_PATIENT: 'Reactivate patient',\n              AMBIENT_CHF_SURVEY: 'New HeartFelt CHF Alert: Click to Complete Survey'\n            }\n          },\n          REMOTE_PATIENT_MONITORING_STATUS_TABLE: {\n            HEADER: 'Patient RPM Status and History',\n            FIELDS: {\n              REQUEST_TYPE: 'Type of Request',\n              SUBMIT_DATE: 'Date Request Submitted',\n              DEACTIVATED_DATE: 'Date Paused',\n              REACTIVATED_DATE: 'Date Reactivated',\n              NOTES: 'Notes (From Request)',\n              STATUS: 'Status',\n              NONE: 'No requests have been submitted for this patient.'\n            },\n            REQUEST_TYPE: {\n              DEACTIVATE: 'Deactivate patient from RPM program',\n              REACTIVATE: 'Reactivate patient',\n              HEALTH: 'Health change',\n              INSURANCE: 'Insurance issue or change',\n              PARTICIPATION: 'Does not want to participate',\n              OTHER: 'Other'\n            },\n            REQUEST_STATUS: {\n              APPROVED: 'Processed',\n              PENDING: 'Pending',\n              CANCELED: 'Canceled'\n            }\n          },\n          PATIENT_DEACTIVATION: {\n            CONTACT_MODAL: {\n              HEADER: '100Plus Account Support Assistance',\n              BODY: {\n                TEXT: '<b>To process this request, please reach out to your 100Plus account support specialist for further assistance.</b>',\n                EMAIL: '<b>Email:</b> <a href=\"mailto:AccountSupport@100Plus.com\">AccountSupport@100Plus.com</a>',\n                PHONE: '<b>Phone:</b> (855) 685-5487'\n              }\n            },\n            REASON_MODAL: {\n              HEADER: 'Reason for deactivation request',\n              BODY: {\n                NOTES_HEADER: 'Notes',\n                NOTES_REQUIRED: 'required',\n                NOTES_PLACEHOLDER: 'Please describe the patient\\'s situation.'\n              },\n              SECTIONS: {\n                HEALTH: 'Health Change',\n                INSURANCE: 'Insurance issue or change',\n                PARTICIPATION: 'Does not want to participate',\n                OTHER: 'Other'\n              },\n              FIELDS: {\n                HEALTH: {\n                  HOSPITALIZED_REHAB: 'Hospitalized or in rehabilitation',\n                  HOSPICE__NURSING_HOME: 'Moved to hospice care or nursing home'\n                },\n                INSURANCE: {\n                  COPAY_DEDUCTIBLE: 'Does not want to pay co-pay or deductible',\n                  CLAIM_DENIAL: 'Claim denial for RPM CPT Codes'\n                },\n                PARTICIPATION: {\n                  CHANGED_MIND: 'Changed their mind',\n                  CLAIMS_NEVER_SIGNED_UP: 'Claims they never signed up for program'\n                },\n                OTHER: {\n                  DECEASED: 'Deceased',\n                  LEFT_PRACTICE: 'No longer at practice',\n                  DEVICE_ISSUE: 'Medical or other issue with device(s)',\n                  ADHERENCE: 'Not using devices regularly',\n                  PAUSE_INVOICING_TRAVELING: 'Traveling without access to devices',\n                  OTHER: 'Other (please explain)'\n                }\n              },\n              FEE_LABEL: 'Please note patient deactivations may be subject to fees as outlined in your contract'\n            },\n            ADDITIONAL_INFO_MODAL: {\n              HEADER: 'Additional patient information',\n              HOSPICE__NURSING_HOME: {\n                LABEL: 'Date moved to hospice care or nursing home',\n                UNKNOWN_LABEL: 'I don\\'t know the date'\n              },\n              DECEASED: {\n                LABEL: 'Date of death',\n                UNKNOWN_LABEL: 'I don\\'t know the date'\n              },\n              LEFT_PRACTICE: {\n                LABEL: 'Name of new practice',\n                UNKNOWN_LABEL: 'I don\\'t know the practice name'\n              }\n            },\n            TEMP_DEACTIVATION_MODAL: {\n              PAUSE_INVOICING_TRAVELING: {\n                HEADER: 'When will the patient be traveling without access to devices?',\n                DATE_LABEL: 'Travel dates',\n                DATE_RANGE_LABEL: 'Range: ',\n                DATE_RANGE_DAYS_TEXT: ' days',\n                UNKNOWN_LABEL: 'I don\\'t know the travel dates',\n                PAUSE: 'We will pause the patient for 6 months. The patient can be reactivated at any time',\n                NOTE: '<b>Important: </b>If the patient is traveling less than 15 days in a billing cycle, they do not need to be deactivated, as they have their medical devices for at least 16 days in the 30 day billing cycle, meeting billing requirements.'\n              },\n              HOSPITALIZED_REHAB: {\n                HEADER: 'When will the patient be hospitalized or in rehabilitation?',\n                DATE_LABEL: 'Hospitalization or rehabilitation dates',\n                DATE_RANGE_LABEL: 'Range: ',\n                DATE_RANGE_DAYS_TEXT: ' days',\n                UNKNOWN_LABEL: 'I don\\'t know the hospitalization or rehabilitation dates.',\n                PAUSE: 'We will pause the patient for 6 months. The patient can be reactivated at any time',\n                NOTE: '<b>Important: </b>If the patient is hospitalized or in rehabilitation for less than 15 days in a billing cycle AND the date of service does not align with their hospitalization or rehabilitation dates, they do not need to be deactivated, as they have their medical devices for at least 16 days in the 30 day billing cycle, meeting billing requirements.'\n              }\n            },\n            BILLING_CYCLES_MODAL: {\n              PAUSE_INVOICING_TRAVELING: {\n                HEADER: 'Complete',\n                MESSAGE: 'The patient is traveling for less than 15 days in a billing cycle and does not need to be paused from the RPM program.',\n                TABLE: {\n                  TITLE: 'CPT Code 99454 Billing Cycles During Travel Period',\n                  SUBTITLE: '(patient will have device for 16 days or more in these billing cycles)',\n                  FIELDS: {\n                    START_DATE: 'RPM Start Date',\n                    DATE_OF_SERVICE: 'RPM Date of Service'\n                  }\n                }\n              },\n              HOSPITALIZED_REHAB: {\n                HEADER: 'Complete',\n                MESSAGE: 'The patient is hospitalized or in rehab for less than 15 days in a billing cycle and does not need to be paused from the RPM program.',\n                TABLE: {\n                  TITLE: 'CPT Code 99454 Billing Cycles During Hospitalization or Rehabilitation Period',\n                  SUBTITLE: '(patient will have device for 16 days or more in these billing cycles, hospitalization/rehabilitation does not align with RPM date of service)',\n                  FIELDS: {\n                    START_DATE: 'RPM Start Date',\n                    DATE_OF_SERVICE: 'RPM Date of Service'\n                  }\n                }\n              }\n            },\n            DEVICE_ISSUE_MODAL: {\n              HEADER: 'Additional patient information',\n              BODY: 'Please select which device(s) the patient has a medical or other issue with.'\n            },\n            PATIENT_ADHERENCE_MODAL: {\n              HEADER: 'Patient adherence',\n              TEXT: '<div><b>Practice and 100Plus patient outreach for adherence</b></div><div>If a patient is non-adherent, the best practice is to contact the patient and educate them on why testing regularly is critical to their health. The time spent performing these types of actions can count towards billing for codes <b>99457</b> and <b>99458</b>.</div><div>As a part of your request, 100Plus will also make a final attempt to reach out to the patient to educate and resolve any potential issues preventing the patient from being adherent in the RPM program.</div>'\n            },\n            INSURANCE_CHANGE_MODAL: {\n              HEADER: 'Additional patient information',\n              BODY: {\n                TEXT: 'Upload explanation of benefits documents',\n                UNAVAILABLE: 'I do not have an EOB available to upload at this time',\n                SUBMIT_BUTTON: 'Select file'\n              },\n              FILE_TABLE: {\n                HEADER: 'Successful uploads',\n                FIELDS: {\n                  FILE_NAME: 'File name',\n                  UPLOADED_DATE: 'Uploaded'\n                }\n              },\n              TOASTS: {\n                ERROR: 'There was an error, please try again.',\n                NO_FILE_ERROR: 'No file upload detected. Please try again.',\n                FILE_UPLOAD_ERROR: 'There was an error uploading your file. Please try again.',\n                SUCCESS: 'Enrollment successfully deleted.'\n              }\n            },\n            DELETE_FILE_CONFIRMATION_MODAL: {\n              HEADER: 'Uploads',\n              BODY: 'Delete file?',\n              BUTTON: 'Delete'\n            },\n            DEACTIVATION_COMPLETE_MODAL: {\n              HEADER: 'Complete',\n              BODY: {\n                REQUEST_PROCESSED: 'Your request has been processed and the patient is deactivated.',\n                REVIEWING_REQUEST: '100Plus is reviewing your request.',\n                FUTURE_REQUEST_PROCESSED: 'Your request has been processed and the patient will be deactivated on {{startDate}}.',\n                DATE_PERIOD: {\n                  UNKNOWN: 'Your request has been processed and the patient will be paused for six months.',\n                  KNOWN: 'Your request has been processed and the patient will be paused from {{startDate}} to {{endDate}}.'\n                }\n              }\n            },\n            BUTTONS: {\n              CANCEL: 'Cancel',\n              SUBMIT: 'Submit',\n              CONTINUE: 'Continue',\n              DONE: 'Done'\n            }\n          },\n          CLINICAL_ASSIGNMENTS: {\n            HEADER: 'Clinical Monitoring',\n            SUBHEADER: 'Manage office assignments, clinician memberships, and licensed states',\n            OFFICE_LIST: 'Offices',\n            STAFF_LIST: 'Clinical Monitoring Staff',\n            LICENSES: 'Licensed States',\n            MY_ASSIGNMENTS: 'My Assignments',\n            ALL_ASSIGNMENTS: 'Offices',\n            ASSIGNMENTS: 'Assignments',\n            CLINICIANS: 'Clinicians',\n            CLINICIAN: 'Clinician',\n            SETTINGS: 'Office Settings',\n            CONFIGURATION: 'Configuration',\n            ACTIONS_LABEL: 'Actions',\n            SAVE_SUCCESS: 'Clinical monitoring settings saved.',\n            ADD_ASSIGNMENT: 'Add Assignment',\n            ADD_CLINICIAN: 'Add Clinician',\n            NO_ASSIGNMENTS: 'No office assignments yet.',\n            NO_MY_ASSIGNMENTS: 'You do not have any office assignments yet.',\n            NO_CLINICIANS: 'No clinicians found.',\n            DETAIL_BACK: 'Back to Clinical Monitoring',\n            ROLE: 'Role',\n            TOTAL_ASSIGNMENTS: 'Total Assignments',\n            TOTAL_PATIENTS: 'Total Patients',\n            PATIENTS: 'Patients',\n            RPM_PATIENTS: 'RPM Patients',\n            CCM_PATIENTS: 'CCM Patients',\n            COMMUNICATIONS: 'Comms Patients',\n            EHR: 'EHR Patients',\n            BTRS: 'BTR Patients',\n            NEW_READINGS: 'New Readings',\n            NEW_READINGS_TOOLTIP: 'Patients in the office who have had a reading since the last time their RPM chart/review was updated.',\n            UNDOCUMENTED_BTRS: 'New BTRs',\n            UNDOCUMENTED_BTRS_TOOLTIP: 'Patients in the office who has had a beyond-threshold reading since the last time their RPM chart/review was updated.',\n            NEW_CCM_PATIENTS: 'New CCM Patients',\n            NEW_CCM_PATIENTS_TOOLTIP: 'CCM patients in the office whose latest care plan has not been completed.',\n            MY_LAST_ACTIVITY: 'MY LAST ACTIVITY',\n            MY_LAST_ACTIVITY_TOOLTIP: 'The most recent time this clinician was active in this office.<br><br>Updated when the clinician:<br>&bull; Logs a call or text<br>&bull; Saves a note or comment<br>&bull; Submits RPM time',\n            PATIENTS_TOOLTIP: 'The number of active patients in the office',\n            CALLS_DOCS_PATIENTS_TOOLTIP: 'The number of active patients in offices assigned to this clinician for Calls / Documentation.',\n            BTR_PATIENTS_TOOLTIP: 'The number of active RPM patients in offices assigned to this clinician for BTRs.',\n            RPM_PATIENTS_TOOLTIP: 'The number of active patients in the office who are subscribed to the RPM service',\n            CCM_PATIENTS_TOOLTIP: 'The number of active patients in the office who are subscribed to the CCM service',\n            PRACTICE_OFFICE: 'Practice / Office',\n            STATE: 'State',\n            OFFICE_DETAILS: 'Office Details',\n            OPEN_PRACTICE: 'Open Practice',\n            OPENING_PRACTICE: 'Opening...',\n            NIGHTS: 'Night Patients',\n            ACTIVE: 'Active',\n            EDIT_LICENSES_HEADER: 'Edit Licensed States',\n            MEMBER_SAVE_SUCCESS: 'Clinical monitoring membership saved.',\n            MEMBER_REMOVE_SUCCESS: 'Clinician removed from the clinical monitoring team.',\n            LICENSE_SAVE_SUCCESS: 'Licensed states saved.',\n            CLINICIAN_NOT_FOUND: 'Clinician not found.',\n            SEARCH_PLACEHOLDER: 'Search by name or email',\n            OFFICE_SEARCH_PLACEHOLDER: 'Search by practice or office name',\n            ASSIGNMENT_SAVE_SUCCESS: 'Clinical monitoring assignment saved.',\n            ASSIGNMENT_DELETE_SUCCESS: 'Clinical monitoring assignment deleted.',\n            COVERAGE: 'Coverage',\n            ADD_COVERAGE: 'Add Coverage',\n            ACTIVE_NOW: 'Active Now',\n            UPCOMING: 'Upcoming',\n            RECENT_HISTORY: 'Recent History',\n            NO_ACTIVE_COVERAGE: 'No active temporary coverage.',\n            NO_UPCOMING_COVERAGE: 'No upcoming temporary coverage.',\n            NO_RECENT_COVERAGE: 'No recent temporary coverage.',\n            COVERAGE_SAVE_SUCCESS: 'Temporary coverage saved.',\n            COVERAGE_CANCEL_SUCCESS: 'Temporary coverage cancelled.',\n            EDIT_COVERAGE: 'Edit Coverage',\n            CANCEL_COVERAGE: 'Cancel Coverage',\n            DELETE_ASSIGNMENT_HEADER: 'Delete assignment',\n            DELETE_ASSIGNMENT_BODY: 'Are you sure you want to delete this assignment?',\n            ACTIONS: {\n              EDIT: 'Edit',\n              DELETE: 'Delete'\n            },\n            ASSIGNMENT_MODAL: {\n              ADD_HEADER: 'Add assignment',\n              EDIT_HEADER: 'Edit assignment',\n              PROVIDER: 'Assigned clinician',\n              SELECT_PROVIDER: 'Select a clinician',\n              TYPE: 'Assignment type',\n              DAYS: 'Days of week',\n              NOTE: 'Note'\n            }\n          },\n          ENROLLMENTS: {\n            BODY: {\n              HEADER: 'enrollment requests',\n              HEADER2: 'Enrollments',\n              INCOMPLETE: ' Incomplete enrollments with missing information',\n              COPY: 'Our 100Plus customer service team can help if you need to update an enrollment after the patient agreement is signed.',\n              EULA_SELECT: 'Do you want to add a method for the patient to sign the agreement?',\n              EULA_ALL_SELECTED: 'The patient agreement is currently pending signature by all available methods.',\n              SHOW: 'Show',\n              RESULTS: 'results',\n              EXPIRED: 'EXPIRED'\n            },\n            FILTERS: {\n              HEADERS: {\n                NAME: 'Patient name',\n                STATUS: 'Patient status',\n                PRIMARY_PROVIDER: 'Monitoring Provider',\n                DATE_OF_BIRTH: 'Date of birth',\n                MISSING_INFORMATION: 'Missing information',\n                ALL_ENROLLMENTS: 'All Enrollments',\n                FILTERED_ENROLLMENTS: 'Filtered Enrollments'\n              }\n            },\n            FIELDS: {\n              CREATED: 'Created',\n              NAME: 'Name',\n              MONITORING_PROVIDER: 'Monitoring Provider',\n              DEVICE_TYPE: 'Device type',\n              ADDRESS: 'Address',\n              SIZE: 'Size',\n              STATUS: 'Status',\n              SIGNED: 'Signature status',\n              MISSING_INFORMATION: 'Missing Information',\n              NO_DEVICE: 'No Device Selected'\n            },\n            INCOMPLETE: {\n              FIELDS: {\n                PATIENT: 'Patient'\n              }\n            },\n            BUTTONS: {\n              CREATE: 'Create an enrollment request'\n            },\n            TOASTS: {\n              ERROR: 'There was an error deleting your enrollment, please try again.',\n              SUCCESS: 'Enrollment successfully deleted.'\n            },\n            MODALS: {\n              AGREEMENTS_LAUNCHER: {\n                MULTIPLE_AGREEMENTS_HEADER: 'Please click the correct contract to launch the agreement',\n                BUTTONS: {\n                  PHYSICIAN_ATTESTATION_BUTTON: 'Physician or Physician\\'s Staff Member Attests to Patient Consent',\n                  PATIENT_AGREEMENT_BUTTON: 'Patient in person agreement'\n                }\n              },\n              ARE_YOU_SURE: {\n                HEADER: 'Are you sure?',\n                BODY: '',\n                BUTTONS: {\n                  CLOSE: 'Cancel',\n                  ACTION: 'Delete'\n                }\n              },\n              HANDOFF: {\n                HEADER: 'Patient signature required',\n                BODY: 'Now the patient has to fill out the form. Please click \\'Launch agreement\\' and bring them to the computer.',\n                BODY_ENROLLMENT_CREATE: 'Is the patient present?',\n                BUTTONS: {\n                  CLOSE: 'Cancel',\n                  ACTION: 'Launch agreement',\n                  SIGN_LATER: 'Have patient sign later'\n                }\n              },\n              PHYSICIAN_ATTESTATION: {\n                HEADER: 'Physician or physician’s staff member signature required',\n                BODY: 'Will the physician or physician’s staff member sign now?',\n                BUTTONS: {\n                  ACTION: 'Launch agreement',\n                  SIGN_LATER: 'Sign later'\n                }\n              },\n              EMAIL: {\n                HEADER: 'Patient EULA delivered via email',\n                BODY: 'IMPORTANT: Please tell the patient to check their email inbox for an email to sign our EULA.',\n                BUTTONS: {\n                  CLOSE: 'Cancel',\n                  ACTION: 'OK'\n                }\n              },\n              MAIL: {\n                HEADER: 'Patient EULA delivered via US Mail',\n                BODY: 'IMPORTANT: Please tell the patient their EULA will be mailed to them. They must return the signed EULA to 100Plus to activate their account.',\n                BUTTONS: {\n                  CLOSE: 'Cancel',\n                  ACTION: 'OK'\n                }\n              },\n              SMS: {\n                HEADER: 'Patient EULA delivered via text message',\n                BODY: 'IMPORTANT: Please tell the patient to check their text messages for a link to sign our EULA.',\n                BUTTONS: {\n                  CLOSE: 'Cancel',\n                  ACTION: 'OK'\n                }\n              }\n            }\n          },\n          ENROLLMENTS_ADD: {\n            BODY: {\n              HEADER: 'Add a new enrollment',\n              HEADER_EDIT: 'Editing enrollment for {{name}}',\n              COPY: 'The following information will be used to setup and ship a 100Plus device to the patient. All fields are required.'\n            },\n            TABS: {\n              PROFILE: 'Profile',\n              INSURANCE: 'Insurance',\n              MAILING_ADDRESS: 'Mailing address',\n              EMERGENCY_CONTACTS: 'Emergency Contacts',\n              PATIENT_AGREEMENT: 'Patient Agreement'\n            },\n            LINKS: {\n              HAS_SECONDARY: 'Patient has a secondary insurance policy',\n              ADD_SECONDARY: 'Add secondary insurance',\n              REMOVE_SECONDARY: 'Remove secondary insurance policy',\n              HAS_TERTIARY: 'Patient has a tertiary insurance policy',\n              ADD_TERTIARY: 'Add tertiary insurance',\n              REMOVE_TERTIARY: 'Remove tertiary insurance policy',\n              ADD_CONTACT: 'Add another contact'\n            },\n            PANELS: {\n              PRIMARY_INSURANCE: 'Primary Insurance',\n              SECONDARY_INSURANCE: 'Secondary Insurance',\n              TERTIARY_INSURANCE: 'Tertiary Insurance'\n            },\n            SAVE: {\n              HEADER: 'Patient information saved',\n              STILL_MISSING: 'Information still missing',\n              COMPLETE: 'This patient now has all the required information and will be moved to the enrollments section.',\n              OKAY: 'Okay',\n              DIAGNOSIS: 'Diagnosis codes',\n              DEVICES: 'Medical devices',\n              GENDER: 'Gender',\n              DATE_OF_BIRTH: 'Date of Birth',\n              ADDRESS: 'Street address',\n              ZIP_CODE: 'Zip code',\n              PHONE_NUMBER: 'Phone number',\n              EMAIL: 'Email',\n              INSURANCE: ' Insurance Information',\n              ADD_MISSING: 'Add missing information',\n              DO_THIS_LATER: 'Do this later',\n              PREFERRED_LANGUAGE: 'Preferred language'\n            },\n            FIELDS: {\n              ALIGN_DOS: 'Minimize copays',\n              ALIGN_DOS_INFO: 'This will set the Date of Service for all drafted RPM CPT code charges to the last calendar day of each month for this patient, when possible. This has been used by other providers to ensure a patient only gets one copay, for those who haven\\'t hit their OOP max and don\\'t have a secondary policy. Note this <b>cannot be reversed.</b>',\n              DX_CODES: 'Search for Dx code',\n              DIAGNOSIS_CODES: 'Patient diagnosis code(s)',\n              GROUP_NUMBER_UNAVAILABLE: 'Medicare Advantage Group Number Unavailable',\n              PATIENT_SERVICES: 'Patient service(s)',\n              PATIENT_MONITORING_DEVICES: 'Patient monitoring device(s)',\n              USE_XL_WHEN_AVAILABLE: 'Use XL devices when available',\n              LEGACY_DEVICES: 'Legacy monitoring device(s)',\n              WHAT_IS_LEGACY: 'These devices are attached to the patient profile, but devices from this manufacturer can no longer be provisioned.  In case of replacement, choose from the newer device models above',\n              EULA_DELIVERY_METHOD: 'How will the patient sign the agreement?',\n              HAS_NO_EMAIL: 'Patient does not have email address',\n              EULA_DELIVERY_OPTIONS: {\n                ELECTRONIC: 'Sign electronically',\n                IN_PERSON: 'In person (patient is present or will sign at next appointment)',\n                SMS: 'Via text message (sent immediately)',\n                EMAIL: 'Via email (sent immediately)',\n                VERBAL: 'Sign by recorded phone call (during business hours)',\n                MAIL: 'Sign by postal mail',\n                PHYSICIAN_ATTESTATION: 'Physician or physician’s staff member attests to receiving patient consent'\n              },\n              EULA_SIGNED: 'The patient agreement has already been signed by {{method}}.',\n              INSURANCE: {\n                TYPE: 'Type of insurance',\n                NAME_OF_INSURER: 'Name of insurance provider',\n                GROUP_NUMBER: 'Insurance group number',\n                INDIVIDUAL_NUMBER: 'Insurance policy (individual) number',\n                NOTES: 'Secondary Insurance notes',\n                NOTES_TERTIARY: 'Tertiary Insurance notes',\n                PH_IS_PATIENT: 'Policy holder is patient',\n                PATIENT_RELATIONSHIP: 'Patient relationship to policy holder (optional)',\n                POLICYHOLDER_FIRST_NAME: 'Policyholder\\'s first name',\n                POLICYHOLDER_LAST_NAME: 'Policyholder\\'s last name',\n                POLICYHOLDER_DOB: 'Policyholder\\'s date of birth',\n                POLICYHOLDER_GENDER: 'Policyholder\\'s Gender'\n              }\n            },\n            TOASTS: {\n              ERROR: 'There was an error saving your enrollment, please try again.',\n              SUCCESS: 'Enrollment request successfully created.',\n              UNDER_18: 'Enrolled patient is under 18 years of age - please note that RPM coverage varies by geography and carrier',\n              UPDATED: 'Enrollment request successfully updated.',\n              UNIQUE_EMAIL: 'Enrollment email is not unique!'\n            },\n            TOOLTIPS: {\n              PHYSICIAN_ATTESTATION: 'Physician or physician’s staff member verbally reads patient agreement to the patient and attests via electronic signature to patient’s understanding and consent to participate in physician’s RPM program.',\n              ELECTRONIC: '100Plus will send patient agreement for patient to digitally sign in person (patient can sign now or later), by email, and/or by SMS text message to their mobile phone.',\n              SMS: 'Patient agreement with RPM welcome/education message will be texted as soon as the enrollment is “Saved”',\n              EMAIL: 'Patient agreement with RPM welcome/education message will be emailed as soon as the enrollment is “Saved”',\n              IVR: 'The 100Plus patient team will call the patient during business hours to welcome and educate the patient on RPM and record their consent to participate.',\n              MAIL: 'Patient agreement with RPM welcome/education letter and pre-paid postage envelope to return the agreement will be mailed via USPS.'\n            },\n            IMAGE_ALTS: {\n              IVR: 'Sign by recorded phone call - more information'\n            }\n          },\n          ACCOUNT_SETTINGS: {\n            BODY: {\n              HEADER: 'Account Settings'\n            },\n            NOTIFICATION_SETTINGS: {\n              BODY: {\n                HEADER1: 'Notifications',\n                EMAIL: {\n                  HEADER: 'Email alerts',\n                  TEXT: 'Notify me about updates to 100Plus\\'s services via email'\n                },\n                SMS: {\n                  HEADER: 'SMS alerts',\n                  TEXT: 'Notify me about updates to 100Plus\\'s services via text message'\n                }\n              },\n              FIELDS: {\n                HEART_HERO: 'YES! Notify Heart Heroes if I’m in emergency need',\n                INSTRUCTIONS_PLACEHOLDER: 'Example: In case the doors are locked. i keep a spare key under a rock in the backyard. The rock is almond shaped, and is to the right of the compost pile.'\n              },\n              TOASTS: {\n                SUCCESS: 'Heart hero enrollment updated.',\n                ERROR: 'There was an error, please try again.'\n              }\n            },\n            AUTHENTICATION_INFO: {\n              BODY: {\n                HEADER: 'Authentication settings'\n              },\n              FIELDS: {\n                EMAIL: 'Email',\n                PASSWORD: 'Password'\n              },\n              BUTTONS: {\n                PASSWORD_RESET: 'Send link to reset password'\n              },\n              TOASTS: {\n                SUCCESS: 'Your email has been updated.',\n                ERROR: 'There was an error, please try again.',\n                PASSWORD_RESET: 'Your password has been emailed to you'\n              }\n            },\n            PROVIDER_INVITE: {\n              BODY: {\n                HEADER: 'Staff Accounts Under Practice'\n              },\n              FIELDS: {\n                PRACTICE_ROLE: 'Role at Practice'\n              },\n              BUTTONS: {\n                SEND: 'Send email invitation'\n              },\n              TOASTS: {\n                SUCCESS: 'Your provider invitation was successfully sent.',\n                ERROR: 'There was an error, please try again.'\n              },\n              MESSAGES: {\n                NONE: 'No invites found'\n              }\n            },\n            PROVIDERS_LIST: {\n              BODY: {\n                HEADER: 'Practice staff accounts under {{practiceName}}'\n              },\n              FIELDS: {\n                DATE_ADDED: 'Date added',\n                NAME: 'Name',\n                EMAIL: 'Email',\n                PRACTICE_ROLE: 'Organization Role',\n                INVITED_BY: 'Invited By',\n                ENTERPRISE_ROLES: '100Plus Role'\n              },\n              NOTIFICATION: {\n                INVITE_DELETED: 'Invite deleted Successfully',\n                INVITE_DELETION_ERROR: 'Invite could not be deleted. Please try again later.',\n                INVITE_RESEND: 'Invite resend successfully.',\n                INVITE_RESEND_ERROR: 'Resending invite failed. Please try again later.'\n              },\n              EDIT_ROLE_MODAL: {\n                HEADER: 'Edit Roles',\n                INVITE_ROLE_UPDATED: 'Roles updated successfully.',\n                PROVIDER_ROLE_UPDATED: 'Roles updated successfully. This change will take effect upon the user\\'s next logout.',\n                ERROR_MESSAGE: 'Error updating roles. Please try again later.'\n              }\n            },\n            EBILLERS: {\n              BODY: {\n                HEADER: 'Practice Biller',\n                HEADER2: 'Biller information',\n                COPY: '100Plus will inform you when to review drafted charges that can be submitted for reimbursement as you deem appropriate.'\n              },\n              BUTTONS: {\n                SAVE_AND_REMOVE_BILLER: 'Save and remove my biller',\n                SAVE_BILLER: 'Save my biller information'\n              },\n              FIELDS: {\n                BILLER_QUESTION: 'Should we create an account for your biller?',\n                BILLER_CHOICE: 'No, I\\'ll directly coordinate billing.',\n                BILLER_CHOICE2: 'Yes, create an account for the practice biller to directly access 100Plus draft charges.'\n              },\n              MODALS: {\n                ARE_YOU_SURE: {\n                  HEADER: 'Please confirm',\n                  BODY: 'Are you sure you want to delete this biller?',\n                  BUTTONS: {\n                    CLOSE: 'Cancel',\n                    ACTION: 'Delete'\n                  }\n                }\n              },\n              TOASTS: {\n                SUCCESS: 'Your practice biller has been updated.',\n                SUCCESS_REMOVE: 'Your practice biller has been removed.',\n                ERROR: 'There was an error, please try again.'\n              }\n            },\n            EOFFICE: {\n              BODY: {\n                HEADER: 'Practice details'\n              },\n              TOASTS: {\n                SUCCESS: 'Your practice has been updated.',\n                ERROR: 'There was an error, please try again.'\n              }\n            }\n          },\n          CCM: {\n            ENTITY_MESSAGE: 'No {{entityName}}s for this care plan',\n            TOASTS: {\n              SUCCESS: '{{entityName}} successfully saved.',\n              ERROR: 'There was an error saving the {{entityName}}. {{error}}',\n              UPSELL: {\n                SUCCESS: 'Someone on our team will reach out to you.',\n                WARN: 'A request was previously made someone will reach out to you shortly.',\n                ERROR: 'There was an error, please try again.'\n              }\n            },\n            MODALS: {\n              HEADER: 'Are you sure you want to delete this {{entityName}}?',\n              BODY: '',\n              BUTTONS: {\n                CLOSE: 'Cancel',\n                ACTION: 'Delete'\n              }\n            },\n            CARE_PLAN: {\n              BUTTONS: {\n                COMPLETE: 'Complete the Care Plan',\n                APPROVE: 'Approve Care Plan',\n                APPROVAL_COMPLIANCE_INFO: 'Care Plan approval must be completed by the monitoring provider to ensure compliance and continuity of care'\n              },\n              CAREGIVER: {\n                RELATIONSHIP_ID: 'Relationship',\n                NAME: 'Name',\n                EMAIL: 'Email',\n                PHONE: 'Phone Number',\n                ROLE: 'Role in Care Plan',\n                NOTES: 'Notes'\n              },\n              PROVIDER: {\n                PRACTICE_ID: 'Practice Specialty',\n                NAME: 'Name',\n                EMAIL: 'Email',\n                PHONE: 'Phone Number',\n                ROLE: 'Role in Care Plan',\n                NOTES: 'Notes'\n              },\n              INTERVENTIONS: {\n                TYPE: 'Type',\n                START_DATE: 'Start Date',\n                END_DATE: 'End Date',\n                STATUS: 'Status',\n                FREQUENCY: 'Frequency',\n                NOTES: 'Notes',\n                DESCRIPTION: 'Description',\n                RESPONSIBLE_PARTY: 'Responsible Party',\n                INTERVENTION_TYPE: 'Intervention Type'\n              },\n              BARRIERS: {\n                DESCRIPTION: 'Description',\n                TYPE: 'Type',\n                IMPACT: 'Impact',\n                RESOLUTIONS: 'Resolutions',\n                NOTES: 'Notes'\n              },\n              SYMPTOMS: {\n                DESCRIPTION: 'Description',\n                FREQUENCY: 'Frequency',\n                SEVERITY: 'Severity',\n                ONSET_DATE: 'Onset Date',\n                NOTES: 'Notes'\n              },\n              GOALS: {\n                IMPORTANCE: 'Importance',\n                STATUS: 'Status',\n                DESCRIPTION: 'Description',\n                TARGET_DATE: 'Target Date',\n                NOTES: 'Notes'\n              }\n            }\n          },\n          BUTTON_TABS: {\n            CARE: 'Care Management',\n            RPM: 'Physiological Monitoring'\n          }\n        }\n      },\n      WIZARD: {\n        CONTACT: {\n          BODY: {\n            HEADER: 'Add your emergency contacts',\n            COPY: '100Plus will only notify your contacts in an emergency. These contacts can be friends and family - or neighbors and others nearby who may be able to help you.',\n            HEADER_CARETAKER: 'Add {{name}}\\'s emergency contacts',\n            COPY_CARETAKER: '100Plus will only notify your contacts in an emergency. These contacts can be friends and family - or neighbors and others nearby who may be able to help you.',\n            EXISTING_CONTACTS: 'Existing contacts',\n            OPEN: 'more',\n            CLOSE: 'less'\n          },\n          MODALS: {\n            WARNING: {\n              HEADER: 'Warning: Try adding more contacts!',\n              BODY: 'Adding additional people to your emergency contacts increases the chances someone can give you aid during an emergency or other event. Think of a neighbor, friend, or other person nearby who can be of assistance.',\n              BODY2: 'We\\'ll verify the phone number is correct, and then they will be contacted during an emergency. You can make changes to these contacts at any time.',\n              BUTTONS: {\n                NOT_NOW: 'Not now',\n                ADD_ANOTHER: 'Add another'\n              }\n            }\n          },\n          BUTTONS: {\n            SAVE: 'Save contact'\n          },\n          TOASTS: {\n            ERROR: 'Error adding contact, please try again',\n            SUCCESS: 'Contact successfully saved!'\n          }\n        }\n      },\n      VALIDATION: {\n        REQUIRED: 'Required',\n        MIN: 'Too short',\n        MAX: 'Too long',\n        PATTERN: 'Invalid',\n        CODE: 'Invalid code',\n        DATE: 'Invalid date',\n        EMAIL: 'Invalid email',\n        PASSWORD: 'Make your password more secure',\n        MATCH: {\n          DEFAULT: 'Fields do not match',\n          EMAIL: 'Email addresses do not match'\n        },\n        CC_NUMBER: 'Invalid number',\n        CC_MONTH: 'Invalid month',\n        CC_YEAR: 'Invalid year',\n        IMAGE: {\n          MIN_SIZE: 'Image file size must at least 10KB',\n          MAX_SIZE: 'Image file size cannot be larger than 20MB',\n          MIN_WIDTH: 'Images must be at least 500px wide',\n          MIN_HEIGHT: 'Images must be at least 500px tall'\n        },\n        WEIGHT: {\n          MIN: 'Weight too low',\n          MAX: 'Weight too high'\n        }\n      },\n      NAV: {\n        PRIMARY: {\n          BODY: {\n            TOGGLE: 'Toggle navigation',\n            YOUR_ACCOUNTS: 'Your Practice Accounts'\n          },\n          ITEMS: {\n            DASHBOARD: 'Dashboard',\n            INCOMPLETE_ENROLLMENTS: 'Incomplete Enrollments',\n            ENROLLMENTS: 'Enrollments',\n            PATIENT_REPORTING: 'Patient Reporting',\n            CLAIMS: 'Charge Review',\n            PRACTICE_SETTINGS: 'Practice Settings',\n            CLINICAL_ASSIGNMENTS: 'Clinical Assignments',\n            CLINICAL_MONITORING: 'Clinical Monitoring',\n            TRANSCRIPTION_QUEUE: 'Notifications',\n            EMERGENCY_CONTACTS: 'Emergency Contacts',\n            BILLING: 'Billing',\n            SUPPORT: 'Support',\n            PROFILE: 'Profile',\n            ACCOUNT_SETTINGS: 'Account settings',\n            SELECT_PRACTICE: 'Select Practice',\n            LOGOUT: 'Sign out'\n          }\n        }\n      },\n      NOTIFICATIONS: {\n        TRANSCRIPTION_QUEUE: {\n          TITLE: 'Transcription queue',\n          SUBTITLE: 'Review and save call transcriptions. Items stay here until you save.',\n          EMPTY: 'No pending transcriptions.',\n          EMPTY_READ: 'No handled items yet.',\n          EMPTY_ALL: 'No notifications.',\n          LOAD_ERROR: 'Could not load notifications. Try again later.',\n          OPEN: 'Open',\n          FILTER_UNREAD: 'Open',\n          FILTER_READ: 'Completed',\n          FILTER_ALL: 'All',\n          FILTER_ARIA: 'Filter notifications',\n          MARK_ALL_READ: 'Mark all read',\n          OPEN_ROW_ARIA: 'Open notification: {{title}}',\n          STATUS_PENDING: 'Pending',\n          UNTITLED: 'Call transcription',\n          PATIENT_FALLBACK: 'Patient',\n          MINUTES: 'min'\n        },\n        TRANSCRIPTION_MODAL: {\n          TITLE: 'Call transcription',\n          SECTION_DETAILS: 'Call details',\n          SECTION_CLINICAL_SUMMARY: 'Clinical Summary',\n          SECTION_TRANSCRIPTION: 'Transcript',\n          ACCORDION_TRANSCRIPT: 'Full transcript',\n          TRANSCRIPT_EMPTY: 'No transcript text.',\n          SAVE_DRAFT: 'Save Draft',\n          SAVE_AND_POST_TO_CHART: 'Save and Post to Patient Chart',\n          LABEL: 'Transcription',\n          LABEL_SUMMARY: 'Summary',\n          LABEL_PROVIDER_EMAIL: 'Provider email',\n          LABEL_PATIENT: 'Patient',\n          LABEL_PATIENT_PROFILE_ID: 'Patient profile ID',\n          LABEL_TRANSCRIPTION_ID: 'Transcription ID',\n          LABEL_STARTED: 'Started',\n          LABEL_DURATION: 'Duration',\n          META: 'Call started {{date}}',\n          DURATION_MINUTES: '{{count}} min',\n          SAVE_ERROR: 'Save failed. Please try again.',\n          VIEW_PATIENT_REPORT: 'View patient report',\n          MARK_AS_UNREAD: 'Mark as unread',\n          MARK_AS_READ: 'Mark as read',\n          NAV_NO_PATIENT: 'This notification has no patient to open.',\n          NAV_ERROR: 'Could not open the patient report. Try again or switch practice from the menu.',\n          NAV_FORBIDDEN: 'You do not have access to this patient’s practice. Use Switch practice if you have another account.',\n          NAV_NOT_FOUND: 'Patient or observation report was not found.',\n          NAV_BAD_REQUEST: 'Your profile needs an office for that practice before opening this report.'\n        }\n      },\n      FOOTER: {\n        BODY: {\n          COPYRIGHT: String(moment().year()),\n          MAIL_TO: 'support@100plus.com'\n        }\n      },\n      SERVICES: {\n        AUTH: {\n          LOGIN_SUCCESS: 'Log in successful',\n          LOGIN_ERROR: 'There was an error logging in'\n        }\n      },\n      MODALS: {\n        UNSAVED_DATA_MODAL: {\n          HEADER_TXT: 'You have unsaved changes',\n          BODY_TXT: 'Do you still want to navigate away from this page?',\n          CLOSE_BTN_TXT: 'Leave page',\n          ACTION_BTN_TXT: 'Stay on page'\n        }\n      },\n      ADMIN: {\n        DASHBOARD: {\n          HEADER: 'Administration'\n        },\n        ADD_PRACTICE: {\n          SEARCH: 'Search by organization name to add',\n          NEW_PROFILE: 'Create a new provider profile',\n          UPDATE_PROFILE: 'Update this provider profile'\n        }\n      },\n      BILLER: {\n        DASHBOARD: {\n          HEADER: 'Biller Administration'\n        },\n        CLAIMS: {\n          BODY: {\n            HEADER: 'Draft charges for ',\n            CLAIMS: 'Draft charges'\n          }\n        },\n        EDUCATION: {\n          TITLE: 'Education',\n          HEADER: 'Explore Billing and Reimbursement',\n          TEXT: 'Explore the links below to learn more about billing and reimbursement processes, gain valuable tips and insights for optimizing billing, and find answers to frequently asked questions.',\n          ARTICLE: {\n            TEXT: 'Resource Library',\n            HREF: 'https://www.100plus.com/resources/?fwp_topics=billing-and-reimbursement'\n          },\n          DOS_ALIGNMENT: {\n            TEXT: 'Date of Service (DOS) Alignment',\n            HREF: 'assets/documents/date-of-service-alignment-v1.3df52c83.pdf'\n          },\n          PATIENT_DEACTIVATIONS: {\n            TEXT: 'Patient Deactivations',\n            HREF: 'assets/documents/patient-deactivations-v1.2d5d9274.pdf'\n          },\n          CPTCODE99470: {\n            TEXT: 'Billing CPT Code 99470',\n            HREF: 'https://www.100plus.com/support/billing-cpt-code-99470/'\n          },\n          CPTCODE99445: {\n            TEXT: 'Billing CPT Code 99445',\n            HREF: 'https://www.100plus.com/support/billing-cpt-code-99445/'\n          },\n          NEW_CPT_CODES: {\n            TEXT: 'New CPT Codes Expand Access to Remote Patient Monitoring',\n            HREF: 'https://www.100plus.com/resource/new-cpt-codes-expand-access-to-remote-patient-monitoring/'\n          },\n          CPTCODE99453: {\n            TEXT: 'CPT Code 99453 – Remote Patient Monitoring Guide',\n            HREF: 'https://www.100plus.com/resource/cpt-code-99453-remote-patient-monitoring-guide/'\n          },\n          CPTCODE99454: {\n            TEXT: 'CPT Code 99454 – Remote Patient Monitoring Guide',\n            HREF: 'https://www.100plus.com/resource/cpt-code-99454-remote-patient-monitoring-guide/'\n          },\n          CPTCODE99457: {\n            TEXT: 'CPT Code 99457 – Remote Patient Monitoring Guide',\n            HREF: 'https://www.100plus.com/resource/cpt-code-99457-remote-patient-monitoring-guide/'\n          },\n          CPTCODE99458: {\n            TEXT: 'CPT Code 99458 – Remote Patient Monitoring Guide',\n            HREF: 'https://www.100plus.com/resource/cpt-code-99458-remote-patient-monitoring-guide/'\n          },\n          FAQ: {\n            TEXT: '11 Most Frequently Asked Questions About RPM Reimbursement',\n            HREF: 'https://www.100plus.com/resource/11-most-frequently-asked-questions-about-rpm-reimbursement/'\n          },\n          CCM_R_TIPS: {\n            TEXT: '15 Tips for Navigating Chronic Care Management (CCM) Reimbursement',\n            HREF: 'https://www.100plus.com/resource/15-tips-for-navigating-chronic-care-management-ccm-reimbursement/'\n          }\n        }\n      },\n      AUDIO_CALL: {\n        CALL: 'Call',\n        FROM_TEXT: 'Calling from',\n        TIME_MODAL: {\n          HEADER: 'Log {{service || \"RPM\"}} time',\n          YES: 'Yes',\n          NO: 'No',\n          BODY: 'Add <strong>{{call_time}}</strong> to patient\\'s {{reportPeriodText}} {{service || \"RPM\"}} time?',\n          ERROR_NOTIFICATION: 'Maximum billable time for the month has been met ',\n          SUCCESSFUL_NOTIFICATION: '{{call_time}} have been added to patient\\'s {{reportPeriodText}} {{service || \"RPM\"}} time.'\n        },\n        DUAL_CALL_TIME_MODAL: {\n          AUDIO_CALL_HEADER: 'Log Call time',\n          HEADER: 'Log RPM and CCM time',\n          YES: 'Yes',\n          NO: 'No',\n          BODY: 'Add <strong>{{rpm_call_time}}</strong> to patient\\'s {{reportPeriodText}} RPM time?<br>' + 'Add <strong>{{ccm_call_time}}</strong> to patient\\'s {{reportPeriodText}} CCM time?',\n          ERROR_NOTIFICATION: 'Maximum billable time for the month has been met ',\n          SUCCESSFUL_NOTIFICATION: '{{rpm_call_time}} have been added to patient\\'s {{reportPeriodText}} RPM time.<br>' + '{{ccm_call_time}} have been added to patient\\'s {{reportPeriodText}} CCM time.'\n        }\n      },\n      FIVE9: {\n        POST_CALL: {\n          HEADER: 'Call completed',\n          BODY: 'Would you like to log {{call_time}} for this call?',\n          NOT_NOW: 'Not Now',\n          ADD_RPM: 'Add RPM Time',\n          ADD_CCM: 'Add CCM Time',\n          ALLOCATION_BODY: 'Split the {{call_minutes}} call minutes between RPM and CCM.',\n          RPM_MINUTES: 'RPM minutes',\n          CCM_MINUTES: 'CCM minutes',\n          LOG_TIME: 'Log Time'\n        }\n      },\n      VIDEO_CALL: {\n        CONNECTING: 'Connecting to patient device',\n        CALLING: 'Calling patient'\n      }\n    });\n    //    $translateProvider.translations('de', {\n    //      'TITLE': 'Hallo'\n    //      'FOO': 'Dies ist ein Absatz'\n    //    })\n    $translateProvider.preferredLanguage('en');\n    // http://angular-translate.github.io/docs/#/guide/19_security\n    // REQUIRED for urls w/in translation strings to work\n    return $translateProvider.useSanitizeValueStrategy('sceParameters');\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('ibeat').config(function (env, toastrConfig, $provide, logExProvider, CacheFactoryProvider, cfpLoadingBarProvider, usSpinnerConfigProvider, $locationProvider, $compileProvider, $animateProvider) {\n    'ngInject';\n\n    $locationProvider.hashPrefix('');\n    // Only animate elements that opt in. Without this filter, ui-router's\n    // $animate.leave on portal ui-view swaps can hang and leave the previous\n    // page mounted as a sibling under #portal (ghost content under Patient Reporting).\n    // Setup wizard slides require class=\"wizard-view-animate\" on their ui-view.\n    $animateProvider.classNameFilter(/wizard-view-animate/);\n    // Set global default for caches\n    angular.extend(CacheFactoryProvider.defaults, {\n      maxAge: 15 * 60 * 1000,\n      deleteOnExpire: 'aggressive',\n      cacheFlushInterval: 15 * 60 * 1000,\n      storageMode: 'memory'\n    });\n    // Textangular\n    //  taOptions.toolbar = [\n    //    ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre', 'quote'],\n    //    ['bold', 'italics', 'underline', 'strikeThrough', 'ul', 'ol', 'redo', 'undo', 'clear'],\n    //    ['justifyLeft', 'justifyCenter', 'justifyRight', 'indent', 'outdent'],\n    //    ['html', 'insertImage','insertLink', 'insertVideo', 'wordcount', 'charcount']\n    //  ];\n    $provide.decorator('taOptions', ['taRegisterTool', '$delegate', function (taRegisterTool, taOptions) {\n      // $delegate is the taOptions we are decorating\n      taOptions.toolbar = [['h2', 'bold', 'italics', 'underline', 'ul', 'ol', 'html']];\n      return taOptions;\n    }]);\n    // Google Analytics\n    // https://github.com/mgonto/angularytics\n    // <input type=\"submit\" ng-click=\"doSomething() | trackEvent:'Home Category':'Button clicked'\" />\n    // AngularyticsProvider.setEventHandlers(['Console', 'GoogleUniversal'])\n\n    // Enable log\n    logExProvider.enableLogging(env.name !== 'prod');\n    // Set options third-party lib\n    toastrConfig.allowHtml = true;\n    toastrConfig.timeOut = 7000;\n    toastrConfig.positionClass = 'toast-top-right';\n    toastrConfig.preventDuplicates = false;\n    toastrConfig.progressBar = true;\n    toastrConfig.maxOpened = 10;\n    // Set global spinner options\n    usSpinnerConfigProvider.setTheme('black', {\n      color: 'black',\n      radius: 12,\n      width: 4,\n      length: 10,\n      top: '50%',\n      left: '50%'\n    });\n    usSpinnerConfigProvider.setTheme('white', {\n      color: 'white',\n      radius: 12,\n      width: 4,\n      length: 10,\n      top: '50%',\n      left: '50%'\n    });\n    // set the parent selector for the loading indicator\n    // https://github.com/chieffancypants/angular-loading-bar\n    return cfpLoadingBarProvider.parentSelector = 'html';\n  });\n}).call(void 0);\n\n\n\"use strict\";\n\n(function () {\n  angular.module('ibeat').config(function (env, angularAuth0Provider, jwtOptionsProvider, $httpProvider) {\n    'ngInject';\n\n    // Auth0\n    angularAuth0Provider.init({\n      domain: env.auth0.domain,\n      clientID: env.auth0.clientID,\n      scope: 'openid email'\n    });\n    // Angular-JWT\n    jwtOptionsProvider.config({\n      whiteListedDomains: [env.services.whitelistDomain, 'localhost', env.graph.whitelistDomain],\n      authHeader: 'JWT',\n      tokenGetter: ['options', 'Auth0Store', function (options, Auth0Store) {\n        var token;\n        // Skip authentication for any requests ending in .html\n        // TODO: constrain to API BASE_URL\n        if ((options != null ? options.url.substr(options.url.length - 5) : void 0) === '.html') {\n          return null;\n        }\n        token = Auth0Store.get('access_token');\n        return token;\n      }],\n      loginPath: 'account.login',\n      // fired when routes have \"requiresLogin: true\" in route. we're not using this atm. using our own custom \"loginRequired\" and putting logic in .run file.\n      unauthenticatedRedirectPath: '/account/login'\n    });\n    // add JWT to each request\n    $httpProvider.interceptors.push('jwtInterceptor');\n  });\n}).call(void 0);\n\n\nangular.module(\"ibeat.env\", [])\n.constant(\"env\", {\"name\":\"prod\",\"version\":\"1.0.180906\",\"aws\":{\"awsRole\":\"arn:aws:iam::358635761700:role/auth0-api-role\",\"awsPrincipal\":\"arn:aws:iam::358635761700:saml-provider/auth0\",\"s3\":{\"buckets\":{\"static\":{\"url\":\"https://s3-us-west-1.amazonaws.com/www-static.ibeat.com/\"}}}},\"auth0\":{\"clientID\":\"e5yjumby7bg81JaYW9tSHQBnvFc96Ynh\",\"domain\":\"login.ibeat.com\",\"audience\":\"https://api.ibeat.com\"},\"google_api_key\":\"AIzaSyBnvmEjzPiTGOjeXJdI8cDmb0oXq-EuhoI\",\"stripe_public_key\":\"pk_live_AcnBM0OUZU6BvLk67NVRAHEi\",\"pactsafe\":{\"site_access_id\":\"b6f19d74-958c-4771-b6e3-7bd793ce3677\",\"registration_group_key\":\"group-ryuqkofwq\",\"enterprise_registration_group_key\":\"group-hybrd2wdn\",\"esig_client_id\":\"5c9b999a002d211c712c3734\",\"patient_esig_url\":\"https://app.pactsafe.com/sign?r=5c9a7e61738e3a17f1461745&signature=Lnej9F1c~Frgi7je9IDF0svZX5QM8AhFTNtTtrgWl2lRZ94K~~WT2ho7Di14-cQOZAAXzUFIggAR4uwwd-POyQkgwFdE9zO68qONWxLtd5MRCRXxXHPxl31kYOtys7wtytXUblrdi5ptd4QQLjUM-ynyVjJXxRmlKdj-s6L9M5Hc7KkCairDlv16uwT6bHqUld8CFbpaOcgWvMDgPQc7e5sNZp7sNrTT5L~fH-196m6OgTQfY7l0bKI2~sQqAqxCvw0Sp~51KHz53SpoeNRHAcUiCUqciD2ZIaVbpOsofEvbIFPOnPxrfucuFDGQmT1v42xZEm98xQuUIkp7PFiYNA__\"},\"five9\":{\"sdkUrl\":\"https://cdn.prod.us.five9.net/stable/crm-sdk-lib/five9.crm.sdk.js\",\"proxyPageUrl\":\"/five9/five9-proxy.ea201d1c.html\",\"adapterUrl\":\"https://app.five9.com/clients/integrations/adt.main.html?f9crmapi=true\",\"providerPortalOrigin\":\"https://my.ibeat.com\",\"allowedOrigins\":[\"https://my.ibeat.com\"],\"allowedFive9Origins\":[\"https://app.five9.com\"],\"diagnosticsEnabled\":true,\"showAdapterForDiagnostics\":true,\"runtimeConfig\":{\"clickToSms\":true},\"clickToDial\":{},\"useFakeSdk\":false,\"cavMappings\":{\"metadataVersion\":\"535\",\"patientUserProfileId\":\"537\",\"enterpriseId\":\"532\",\"officeId\":\"536\",\"initiatingUserId\":\"533\",\"initiatingUserProfileId\":\"534\",\"patientServices\":\"538\"},\"cavMaxLengths\":{\"metadataVersion\":16,\"patientUserProfileId\":64,\"enterpriseId\":64,\"officeId\":64,\"initiatingUserId\":64,\"initiatingUserProfileId\":64,\"patientServices\":64}},\"intercom\":{\"workspace_id\":\"lemuv5l7\",\"events\":{\"observation_report_downloaded\":\"observation-report-downloaded\",\"charge_csv_downloaded\":\"draft-charges-csv-downloaded\",\"enrollment_request_created\":\"enrollment-request-created\"}},\"ui\":{\"baseUrl\":\"https://my.ibeat.com\"},\"graph\":{\"whitelistDomain\":\"uv3i2vcrd1.execute-api.us-west-2.amazonaws.com\",\"baseUrl\":\"https://uv3i2vcrd1.execute-api.us-west-2.amazonaws.com/prod/\"},\"services\":{\"whitelistDomain\":\"api.ibeat.com\",\"baseUrl\":\"https://api.ibeat.com\"},\"notificationLive\":{\"webSocketUrl\":\"wss://c1zff4i426.execute-api.us-west-2.amazonaws.com/prod\",\"transport\":\"auto\"}});\n\n/**\n * UI-Router Core: Framework agnostic, State-based routing for JavaScript Single Page Apps\n * @version v6.0.8\n * @link https://ui-router.github.io\n * @license MIT License, http://www.opensource.org/licenses/MIT\n */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = global || self, factory(global['@uirouter/core'] = {}));\n}(this, (function (exports) { 'use strict';\n\n    /**\n     * Higher order functions\n     *\n     * These utility functions are exported, but are subject to change without notice.\n     *\n     * @packageDocumentation\n     */\n    var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n                r[k] = a[j];\n        return r;\n    };\n    /**\n     * Returns a new function for [Partial Application](https://en.wikipedia.org/wiki/Partial_application) of the original function.\n     *\n     * Given a function with N parameters, returns a new function that supports partial application.\n     * The new function accepts anywhere from 1 to N parameters.  When that function is called with M parameters,\n     * where M is less than N, it returns a new function that accepts the remaining parameters.  It continues to\n     * accept more parameters until all N parameters have been supplied.\n     *\n     *\n     * This contrived example uses a partially applied function as an predicate, which returns true\n     * if an object is found in both arrays.\n     * @example\n     * ```\n     * // returns true if an object is in both of the two arrays\n     * function inBoth(array1, array2, object) {\n     *   return array1.indexOf(object) !== -1 &&\n     *          array2.indexOf(object) !== 1;\n     * }\n     * let obj1, obj2, obj3, obj4, obj5, obj6, obj7\n     * let foos = [obj1, obj3]\n     * let bars = [obj3, obj4, obj5]\n     *\n     * // A curried \"copy\" of inBoth\n     * let curriedInBoth = curry(inBoth);\n     * // Partially apply both the array1 and array2\n     * let inFoosAndBars = curriedInBoth(foos, bars);\n     *\n     * // Supply the final argument; since all arguments are\n     * // supplied, the original inBoth function is then called.\n     * let obj1InBoth = inFoosAndBars(obj1); // false\n     *\n     * // Use the inFoosAndBars as a predicate.\n     * // Filter, on each iteration, supplies the final argument\n     * let allObjs = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7 ];\n     * let foundInBoth = allObjs.filter(inFoosAndBars); // [ obj3 ]\n     *\n     * ```\n     *\n     * @param fn\n     * @returns {*|function(): (*|any)}\n     */\n    function curry(fn) {\n        return function curried() {\n            if (arguments.length >= fn.length) {\n                return fn.apply(this, arguments);\n            }\n            var args = Array.prototype.slice.call(arguments);\n            return curried.bind.apply(curried, __spreadArrays([this], args));\n        };\n    }\n    /**\n     * Given a varargs list of functions, returns a function that composes the argument functions, right-to-left\n     * given: f(x), g(x), h(x)\n     * let composed = compose(f,g,h)\n     * then, composed is: f(g(h(x)))\n     */\n    function compose() {\n        var args = arguments;\n        var start = args.length - 1;\n        return function () {\n            var i = start, result = args[start].apply(this, arguments);\n            while (i--)\n                result = args[i].call(this, result);\n            return result;\n        };\n    }\n    /**\n     * Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right\n     * given: f(x), g(x), h(x)\n     * let piped = pipe(f,g,h);\n     * then, piped is: h(g(f(x)))\n     */\n    function pipe() {\n        var funcs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            funcs[_i] = arguments[_i];\n        }\n        return compose.apply(null, [].slice.call(arguments).reverse());\n    }\n    /**\n     * Given a property name, returns a function that returns that property from an object\n     * let obj = { foo: 1, name: \"blarg\" };\n     * let getName = prop(\"name\");\n     * getName(obj) === \"blarg\"\n     */\n    var prop = function (name) { return function (obj) { return obj && obj[name]; }; };\n    /**\n     * Given a property name and a value, returns a function that returns a boolean based on whether\n     * the passed object has a property that matches the value\n     * let obj = { foo: 1, name: \"blarg\" };\n     * let getName = propEq(\"name\", \"blarg\");\n     * getName(obj) === true\n     */\n    var propEq = curry(function (name, _val, obj) { return obj && obj[name] === _val; });\n    /**\n     * Given a dotted property name, returns a function that returns a nested property from an object, or undefined\n     * let obj = { id: 1, nestedObj: { foo: 1, name: \"blarg\" }, };\n     * let getName = prop(\"nestedObj.name\");\n     * getName(obj) === \"blarg\"\n     * let propNotFound = prop(\"this.property.doesnt.exist\");\n     * propNotFound(obj) === undefined\n     */\n    var parse = function (name) { return pipe.apply(null, name.split('.').map(prop)); };\n    /**\n     * Given a function that returns a truthy or falsey value, returns a\n     * function that returns the opposite (falsey or truthy) value given the same inputs\n     */\n    var not = function (fn) { return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return !fn.apply(null, args);\n    }; };\n    /**\n     * Given two functions that return truthy or falsey values, returns a function that returns truthy\n     * if both functions return truthy for the given arguments\n     */\n    function and(fn1, fn2) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return fn1.apply(null, args) && fn2.apply(null, args);\n        };\n    }\n    /**\n     * Given two functions that return truthy or falsey values, returns a function that returns truthy\n     * if at least one of the functions returns truthy for the given arguments\n     */\n    function or(fn1, fn2) {\n        return function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return fn1.apply(null, args) || fn2.apply(null, args);\n        };\n    }\n    /**\n     * Check if all the elements of an array match a predicate function\n     *\n     * @param fn1 a predicate function `fn1`\n     * @returns a function which takes an array and returns true if `fn1` is true for all elements of the array\n     */\n    var all = function (fn1) { return function (arr) { return arr.reduce(function (b, x) { return b && !!fn1(x); }, true); }; };\n    // tslint:disable-next-line:variable-name\n    var any = function (fn1) { return function (arr) { return arr.reduce(function (b, x) { return b || !!fn1(x); }, false); }; };\n    /** Given a class, returns a Predicate function that returns true if the object is of that class */\n    var is = function (ctor) { return function (obj) {\n        return (obj != null && obj.constructor === ctor) || obj instanceof ctor;\n    }; };\n    /** Given a value, returns a Predicate function that returns true if another value is === equal to the original value */\n    var eq = function (value) { return function (other) { return value === other; }; };\n    /** Given a value, returns a function which returns the value */\n    var val = function (v) { return function () { return v; }; };\n    function invoke(fnName, args) {\n        return function (obj) { return obj[fnName].apply(obj, args); };\n    }\n    /**\n     * Sorta like Pattern Matching (a functional programming conditional construct)\n     *\n     * See http://c2.com/cgi/wiki?PatternMatching\n     *\n     * This is a conditional construct which allows a series of predicates and output functions\n     * to be checked and then applied.  Each predicate receives the input.  If the predicate\n     * returns truthy, then its matching output function (mapping function) is provided with\n     * the input and, then the result is returned.\n     *\n     * Each combination (2-tuple) of predicate + output function should be placed in an array\n     * of size 2: [ predicate, mapFn ]\n     *\n     * These 2-tuples should be put in an outer array.\n     *\n     * @example\n     * ```\n     *\n     * // Here's a 2-tuple where the first element is the isString predicate\n     * // and the second element is a function that returns a description of the input\n     * let firstTuple = [ angular.isString, (input) => `Heres your string ${input}` ];\n     *\n     * // Second tuple: predicate \"isNumber\", mapfn returns a description\n     * let secondTuple = [ angular.isNumber, (input) => `(${input}) That's a number!` ];\n     *\n     * let third = [ (input) => input === null,  (input) => `Oh, null...` ];\n     *\n     * let fourth = [ (input) => input === undefined,  (input) => `notdefined` ];\n     *\n     * let descriptionOf = pattern([ firstTuple, secondTuple, third, fourth ]);\n     *\n     * console.log(descriptionOf(undefined)); // 'notdefined'\n     * console.log(descriptionOf(55)); // '(55) That's a number!'\n     * console.log(descriptionOf(\"foo\")); // 'Here's your string foo'\n     * ```\n     *\n     * @param struct A 2D array.  Each element of the array should be an array, a 2-tuple,\n     * with a Predicate and a mapping/output function\n     * @returns {function(any): *}\n     */\n    function pattern(struct) {\n        return function (x) {\n            for (var i = 0; i < struct.length; i++) {\n                if (struct[i][0](x))\n                    return struct[i][1](x);\n            }\n        };\n    }\n\n    /**\n     * Predicates\n     *\n     * These predicates return true/false based on the input.\n     * Although these functions are exported, they are subject to change without notice.\n     *\n     * @packageDocumentation\n     */\n    var toStr = Object.prototype.toString;\n    var tis = function (t) { return function (x) { return typeof x === t; }; };\n    var isUndefined = tis('undefined');\n    var isDefined = not(isUndefined);\n    var isNull = function (o) { return o === null; };\n    var isNullOrUndefined = or(isNull, isUndefined);\n    var isFunction = tis('function');\n    var isNumber = tis('number');\n    var isString = tis('string');\n    var isObject = function (x) { return x !== null && typeof x === 'object'; };\n    var isArray = Array.isArray;\n    var isDate = (function (x) { return toStr.call(x) === '[object Date]'; });\n    var isRegExp = (function (x) { return toStr.call(x) === '[object RegExp]'; });\n    /**\n     * Predicate which checks if a value is injectable\n     *\n     * A value is \"injectable\" if it is a function, or if it is an ng1 array-notation-style array\n     * where all the elements in the array are Strings, except the last one, which is a Function\n     */\n    function isInjectable(val) {\n        if (isArray(val) && val.length) {\n            var head = val.slice(0, -1), tail = val.slice(-1);\n            return !(head.filter(not(isString)).length || tail.filter(not(isFunction)).length);\n        }\n        return isFunction(val);\n    }\n    /**\n     * Predicate which checks if a value looks like a Promise\n     *\n     * It is probably a Promise if it's an object, and it has a `then` property which is a Function\n     */\n    var isPromise = and(isObject, pipe(prop('then'), isFunction));\n\n    var noImpl = function (fnname) { return function () {\n        throw new Error(\"No implementation for \" + fnname + \". The framework specific code did not implement this method.\");\n    }; };\n    var makeStub = function (service, methods) {\n        return methods.reduce(function (acc, key) { return ((acc[key] = noImpl(service + \".\" + key + \"()\")), acc); }, {});\n    };\n    var services = {\n        $q: undefined,\n        $injector: undefined,\n    };\n\n    var __spreadArrays$1 = (undefined && undefined.__spreadArrays) || function () {\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n                r[k] = a[j];\n        return r;\n    };\n    var root = (typeof self === 'object' && self.self === self && self) ||\n        (typeof global === 'object' && global.global === global && global) ||\n        undefined;\n    var angular = root.angular || {};\n    var fromJson = angular.fromJson || JSON.parse.bind(JSON);\n    var toJson = angular.toJson || JSON.stringify.bind(JSON);\n    var forEach = angular.forEach || _forEach;\n    var extend = Object.assign || _extend;\n    var equals = angular.equals || _equals;\n    function identity(x) {\n        return x;\n    }\n    function noop() { }\n    /**\n     * Builds proxy functions on the `to` object which pass through to the `from` object.\n     *\n     * For each key in `fnNames`, creates a proxy function on the `to` object.\n     * The proxy function calls the real function on the `from` object.\n     *\n     *\n     * #### Example:\n     * This example creates an new class instance whose functions are prebound to the new'd object.\n     * ```js\n     * class Foo {\n     *   constructor(data) {\n     *     // Binds all functions from Foo.prototype to 'this',\n     *     // then copies them to 'this'\n     *     bindFunctions(Foo.prototype, this, this);\n     *     this.data = data;\n     *   }\n     *\n     *   log() {\n     *     console.log(this.data);\n     *   }\n     * }\n     *\n     * let myFoo = new Foo([1,2,3]);\n     * var logit = myFoo.log;\n     * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n     * ```\n     *\n     * #### Example:\n     * This example creates a bound version of a service function, and copies it to another object\n     * ```\n     *\n     * var SomeService = {\n     *   this.data = [3, 4, 5];\n     *   this.log = function() {\n     *     console.log(this.data);\n     *   }\n     * }\n     *\n     * // Constructor fn\n     * function OtherThing() {\n     *   // Binds all functions from SomeService to SomeService,\n     *   // then copies them to 'this'\n     *   bindFunctions(SomeService, this, SomeService);\n     * }\n     *\n     * let myOtherThing = new OtherThing();\n     * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n     * ```\n     *\n     * @param source A function that returns the source object which contains the original functions to be bound\n     * @param target A function that returns the target object which will receive the bound functions\n     * @param bind A function that returns the object which the functions will be bound to\n     * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n     * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n     */\n    function createProxyFunctions(source, target, bind, fnNames, latebind) {\n        if (latebind === void 0) { latebind = false; }\n        var bindFunction = function (fnName) { return source()[fnName].bind(bind()); };\n        var makeLateRebindFn = function (fnName) {\n            return function lateRebindFunction() {\n                target[fnName] = bindFunction(fnName);\n                return target[fnName].apply(null, arguments);\n            };\n        };\n        fnNames = fnNames || Object.keys(source());\n        return fnNames.reduce(function (acc, name) {\n            acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n            return acc;\n        }, target);\n    }\n    /**\n     * prototypal inheritance helper.\n     * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n     */\n    var inherit = function (parent, extra) { return extend(Object.create(parent), extra); };\n    /** Given an array, returns true if the object is found in the array, (using indexOf) */\n    var inArray = curry(_inArray);\n    function _inArray(array, obj) {\n        return array.indexOf(obj) !== -1;\n    }\n    /**\n     * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n     * The same array is returned\n     */\n    var removeFrom = curry(_removeFrom);\n    function _removeFrom(array, obj) {\n        var idx = array.indexOf(obj);\n        if (idx >= 0)\n            array.splice(idx, 1);\n        return array;\n    }\n    /** pushes a values to an array and returns the value */\n    var pushTo = curry(_pushTo);\n    function _pushTo(arr, val) {\n        return arr.push(val), val;\n    }\n    /** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\n    var deregAll = function (functions) {\n        return functions.slice().forEach(function (fn) {\n            typeof fn === 'function' && fn();\n            removeFrom(functions, fn);\n        });\n    };\n    /**\n     * Applies a set of defaults to an options object.  The options object is filtered\n     * to only those properties of the objects in the defaultsList.\n     * Earlier objects in the defaultsList take precedence when applying defaults.\n     */\n    function defaults(opts) {\n        var defaultsList = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            defaultsList[_i - 1] = arguments[_i];\n        }\n        var defaultVals = extend.apply(void 0, __spreadArrays$1([{}], defaultsList.reverse()));\n        return extend(defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n    }\n    /** Reduce function that merges each element of the list into a single object, using extend */\n    var mergeR = function (memo, item) { return extend(memo, item); };\n    /**\n     * Finds the common ancestor path between two states.\n     *\n     * @param {Object} first The first state.\n     * @param {Object} second The second state.\n     * @return {Array} Returns an array of state names in descending order, not including the root.\n     */\n    function ancestors(first, second) {\n        var path = [];\n        // tslint:disable-next-line:forin\n        for (var n in first.path) {\n            if (first.path[n] !== second.path[n])\n                break;\n            path.push(first.path[n]);\n        }\n        return path;\n    }\n    /**\n     * Return a copy of the object only containing the whitelisted properties.\n     *\n     * #### Example:\n     * ```\n     * var foo = { a: 1, b: 2, c: 3 };\n     * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n     * ```\n     * @param obj the source object\n     * @param propNames an Array of strings, which are the whitelisted property names\n     */\n    function pick(obj, propNames) {\n        var objCopy = {};\n        for (var _prop in obj) {\n            if (propNames.indexOf(_prop) !== -1) {\n                objCopy[_prop] = obj[_prop];\n            }\n        }\n        return objCopy;\n    }\n    /**\n     * Return a copy of the object omitting the blacklisted properties.\n     *\n     * @example\n     * ```\n     *\n     * var foo = { a: 1, b: 2, c: 3 };\n     * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n     * ```\n     * @param obj the source object\n     * @param propNames an Array of strings, which are the blacklisted property names\n     */\n    function omit(obj, propNames) {\n        return Object.keys(obj)\n            .filter(not(inArray(propNames)))\n            .reduce(function (acc, key) { return ((acc[key] = obj[key]), acc); }, {});\n    }\n    /**\n     * Maps an array, or object to a property (by name)\n     */\n    function pluck(collection, propName) {\n        return map(collection, prop(propName));\n    }\n    /** Filters an Array or an Object's properties based on a predicate */\n    function filter(collection, callback) {\n        var arr = isArray(collection), result = arr ? [] : {};\n        var accept = arr ? function (x) { return result.push(x); } : function (x, key) { return (result[key] = x); };\n        forEach(collection, function (item, i) {\n            if (callback(item, i))\n                accept(item, i);\n        });\n        return result;\n    }\n    /** Finds an object from an array, or a property of an object, that matches a predicate */\n    function find(collection, callback) {\n        var result;\n        forEach(collection, function (item, i) {\n            if (result)\n                return;\n            if (callback(item, i))\n                result = item;\n        });\n        return result;\n    }\n    /** Given an object, returns a new object, where each property is transformed by the callback function */\n    var mapObj = map;\n    /** Maps an array or object properties using a callback function */\n    function map(collection, callback, target) {\n        target = target || (isArray(collection) ? [] : {});\n        forEach(collection, function (item, i) { return (target[i] = callback(item, i)); });\n        return target;\n    }\n    /**\n     * Given an object, return its enumerable property values\n     *\n     * @example\n     * ```\n     *\n     * let foo = { a: 1, b: 2, c: 3 }\n     * let vals = values(foo); // [ 1, 2, 3 ]\n     * ```\n     */\n    var values = function (obj) { return Object.keys(obj).map(function (key) { return obj[key]; }); };\n    /**\n     * Reduce function that returns true if all of the values are truthy.\n     *\n     * @example\n     * ```\n     *\n     * let vals = [ 1, true, {}, \"hello world\"];\n     * vals.reduce(allTrueR, true); // true\n     *\n     * vals.push(0);\n     * vals.reduce(allTrueR, true); // false\n     * ```\n     */\n    var allTrueR = function (memo, elem) { return memo && elem; };\n    /**\n     * Reduce function that returns true if any of the values are truthy.\n     *\n     *  * @example\n     * ```\n     *\n     * let vals = [ 0, null, undefined ];\n     * vals.reduce(anyTrueR, true); // false\n     *\n     * vals.push(\"hello world\");\n     * vals.reduce(anyTrueR, true); // true\n     * ```\n     */\n    var anyTrueR = function (memo, elem) { return memo || elem; };\n    /**\n     * Reduce function which un-nests a single level of arrays\n     * @example\n     * ```\n     *\n     * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n     * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n     * ```\n     */\n    var unnestR = function (memo, elem) { return memo.concat(elem); };\n    /**\n     * Reduce function which recursively un-nests all arrays\n     *\n     * @example\n     * ```\n     *\n     * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n     * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n     * ```\n     */\n    var flattenR = function (memo, elem) {\n        return isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n    };\n    /**\n     * Reduce function that pushes an object to an array, then returns the array.\n     * Mostly just for [[flattenR]] and [[uniqR]]\n     */\n    function pushR(arr, obj) {\n        arr.push(obj);\n        return arr;\n    }\n    /** Reduce function that filters out duplicates */\n    var uniqR = function (acc, token) { return (inArray(acc, token) ? acc : pushR(acc, token)); };\n    /**\n     * Return a new array with a single level of arrays unnested.\n     *\n     * @example\n     * ```\n     *\n     * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n     * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n     * ```\n     */\n    var unnest = function (arr) { return arr.reduce(unnestR, []); };\n    /**\n     * Return a completely flattened version of an array.\n     *\n     * @example\n     * ```\n     *\n     * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n     * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n     * ```\n     */\n    var flatten = function (arr) { return arr.reduce(flattenR, []); };\n    /**\n     * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n     * @example\n     * ```\n     *\n     * let isNumber = (obj) => typeof(obj) === 'number';\n     * let allNumbers = [ 1, 2, 3, 4, 5 ];\n     * allNumbers.filter(assertPredicate(isNumber)); //OK\n     *\n     * let oneString = [ 1, 2, 3, 4, \"5\" ];\n     * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n     * ```\n     */\n    var assertPredicate = assertFn;\n    /**\n     * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n     * @example\n     * ```\n     *\n     * var data = { foo: 1, bar: 2 };\n     *\n     * let keys = [ 'foo', 'bar' ]\n     * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n     * // values is [1, 2]\n     *\n     * let keys = [ 'foo', 'bar', 'baz' ]\n     * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n     * // throws Error(\"Key not found\")\n     * ```\n     */\n    var assertMap = assertFn;\n    function assertFn(predicateOrMap, errMsg) {\n        if (errMsg === void 0) { errMsg = 'assert failure'; }\n        return function (obj) {\n            var result = predicateOrMap(obj);\n            if (!result) {\n                throw new Error(isFunction(errMsg) ? errMsg(obj) : errMsg);\n            }\n            return result;\n        };\n    }\n    /**\n     * Like _.pairs: Given an object, returns an array of key/value pairs\n     *\n     * @example\n     * ```\n     *\n     * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n     * ```\n     */\n    var pairs = function (obj) { return Object.keys(obj).map(function (key) { return [key, obj[key]]; }); };\n    /**\n     * Given two or more parallel arrays, returns an array of tuples where\n     * each tuple is composed of [ a[i], b[i], ... z[i] ]\n     *\n     * @example\n     * ```\n     *\n     * let foo = [ 0, 2, 4, 6 ];\n     * let bar = [ 1, 3, 5, 7 ];\n     * let baz = [ 10, 30, 50, 70 ];\n     * arrayTuples(foo, bar);       // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n     * arrayTuples(foo, bar, baz);  // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n     * ```\n     */\n    function arrayTuples() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (args.length === 0)\n            return [];\n        var maxArrayLen = args.reduce(function (min, arr) { return Math.min(arr.length, min); }, 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n        var result = [];\n        var _loop_1 = function (i) {\n            // This is a hot function\n            // Unroll when there are 1-4 arguments\n            switch (args.length) {\n                case 1:\n                    result.push([args[0][i]]);\n                    break;\n                case 2:\n                    result.push([args[0][i], args[1][i]]);\n                    break;\n                case 3:\n                    result.push([args[0][i], args[1][i], args[2][i]]);\n                    break;\n                case 4:\n                    result.push([args[0][i], args[1][i], args[2][i], args[3][i]]);\n                    break;\n                default:\n                    result.push(args.map(function (array) { return array[i]; }));\n                    break;\n            }\n        };\n        for (var i = 0; i < maxArrayLen; i++) {\n            _loop_1(i);\n        }\n        return result;\n    }\n    /**\n     * Reduce function which builds an object from an array of [key, value] pairs.\n     *\n     * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n     *\n     * Each keyValueTuple should be an array with values [ key: string, value: any ]\n     *\n     * @example\n     * ```\n     *\n     * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n     *\n     * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n     * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n     *\n     * // Or, more simply:\n     * var pairsToObj = pairs.reduce(applyPairs, {})\n     * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n     * ```\n     */\n    function applyPairs(memo, keyValTuple) {\n        var key, value;\n        if (isArray(keyValTuple))\n            key = keyValTuple[0], value = keyValTuple[1];\n        if (!isString(key))\n            throw new Error('invalid parameters to applyPairs');\n        memo[key] = value;\n        return memo;\n    }\n    /** Get the last element of an array */\n    function tail(arr) {\n        return (arr.length && arr[arr.length - 1]) || undefined;\n    }\n    /**\n     * shallow copy from src to dest\n     */\n    function copy(src, dest) {\n        if (dest)\n            Object.keys(dest).forEach(function (key) { return delete dest[key]; });\n        if (!dest)\n            dest = {};\n        return extend(dest, src);\n    }\n    /** Naive forEach implementation works with Objects or Arrays */\n    function _forEach(obj, cb, _this) {\n        if (isArray(obj))\n            return obj.forEach(cb, _this);\n        Object.keys(obj).forEach(function (key) { return cb(obj[key], key); });\n    }\n    function _extend(toObj) {\n        for (var i = 1; i < arguments.length; i++) {\n            var obj = arguments[i];\n            if (!obj)\n                continue;\n            var keys = Object.keys(obj);\n            for (var j = 0; j < keys.length; j++) {\n                toObj[keys[j]] = obj[keys[j]];\n            }\n        }\n        return toObj;\n    }\n    function _equals(o1, o2) {\n        if (o1 === o2)\n            return true;\n        if (o1 === null || o2 === null)\n            return false;\n        if (o1 !== o1 && o2 !== o2)\n            return true; // NaN === NaN\n        var t1 = typeof o1, t2 = typeof o2;\n        if (t1 !== t2 || t1 !== 'object')\n            return false;\n        var tup = [o1, o2];\n        if (all(isArray)(tup))\n            return _arraysEq(o1, o2);\n        if (all(isDate)(tup))\n            return o1.getTime() === o2.getTime();\n        if (all(isRegExp)(tup))\n            return o1.toString() === o2.toString();\n        if (all(isFunction)(tup))\n            return true; // meh\n        var predicates = [isFunction, isArray, isDate, isRegExp];\n        if (predicates.map(any).reduce(function (b, fn) { return b || !!fn(tup); }, false))\n            return false;\n        var keys = {};\n        // tslint:disable-next-line:forin\n        for (var key in o1) {\n            if (!_equals(o1[key], o2[key]))\n                return false;\n            keys[key] = true;\n        }\n        for (var key in o2) {\n            if (!keys[key])\n                return false;\n        }\n        return true;\n    }\n    function _arraysEq(a1, a2) {\n        if (a1.length !== a2.length)\n            return false;\n        return arrayTuples(a1, a2).reduce(function (b, t) { return b && _equals(t[0], t[1]); }, true);\n    }\n    // issue #2676\n    var silenceUncaughtInPromise = function (promise) { return promise.catch(function (e) { return 0; }) && promise; };\n    var silentRejection = function (error) { return silenceUncaughtInPromise(services.$q.reject(error)); };\n\n    /**\n     * Matches state names using glob-like pattern strings.\n     *\n     * Globs can be used in specific APIs including:\n     *\n     * - [[StateService.is]]\n     * - [[StateService.includes]]\n     * - The first argument to Hook Registration functions like [[TransitionService.onStart]]\n     *    - [[HookMatchCriteria]] and [[HookMatchCriterion]]\n     *\n     * A `Glob` string is a pattern which matches state names.\n     * Nested state names are split into segments (separated by a dot) when processing.\n     * The state named `foo.bar.baz` is split into three segments ['foo', 'bar', 'baz']\n     *\n     * Globs work according to the following rules:\n     *\n     * ### Exact match:\n     *\n     * The glob `'A.B'` matches the state named exactly `'A.B'`.\n     *\n     * | Glob        |Matches states named|Does not match state named|\n     * |:------------|:--------------------|:---------------------|\n     * | `'A'`       | `'A'`               | `'B'` , `'A.C'`      |\n     * | `'A.B'`     | `'A.B'`             | `'A'` , `'A.B.C'`    |\n     * | `'foo'`     | `'foo'`             | `'FOO'` , `'foo.bar'`|\n     *\n     * ### Single star (`*`)\n     *\n     * A single star (`*`) is a wildcard that matches exactly one segment.\n     *\n     * | Glob        |Matches states named  |Does not match state named |\n     * |:------------|:---------------------|:--------------------------|\n     * | `'*'`       | `'A'` , `'Z'`        | `'A.B'` , `'Z.Y.X'`       |\n     * | `'A.*'`     | `'A.B'` , `'A.C'`    | `'A'` , `'A.B.C'`         |\n     * | `'A.*.*'`   | `'A.B.C'` , `'A.X.Y'`| `'A'`, `'A.B'` , `'Z.Y.X'`|\n     *\n     * ### Double star (`**`)\n     *\n     * A double star (`'**'`) is a wildcard that matches *zero or more segments*\n     *\n     * | Glob        |Matches states named                           |Does not match state named         |\n     * |:------------|:----------------------------------------------|:----------------------------------|\n     * | `'**'`      | `'A'` , `'A.B'`, `'Z.Y.X'`                    | (matches all states)              |\n     * | `'A.**'`    | `'A'` , `'A.B'` , `'A.C.X'`                   | `'Z.Y.X'`                         |\n     * | `'**.X'`    | `'X'` , `'A.X'` , `'Z.Y.X'`                   | `'A'` , `'A.login.Z'`             |\n     * | `'A.**.X'`  | `'A.X'` , `'A.B.X'` , `'A.B.C.X'`             | `'A'` , `'A.B.C'`                 |\n     *\n     * @packageDocumentation\n     */\n    var Glob = /** @class */ (function () {\n        function Glob(text) {\n            this.text = text;\n            this.glob = text.split('.');\n            var regexpString = this.text\n                .split('.')\n                .map(function (seg) {\n                if (seg === '**')\n                    return '(?:|(?:\\\\.[^.]*)*)';\n                if (seg === '*')\n                    return '\\\\.[^.]*';\n                return '\\\\.' + seg;\n            })\n                .join('');\n            this.regexp = new RegExp('^' + regexpString + '$');\n        }\n        /** Returns true if the string has glob-like characters in it */\n        Glob.is = function (text) {\n            return !!/[!,*]+/.exec(text);\n        };\n        /** Returns a glob from the string, or null if the string isn't Glob-like */\n        Glob.fromString = function (text) {\n            return Glob.is(text) ? new Glob(text) : null;\n        };\n        Glob.prototype.matches = function (name) {\n            return this.regexp.test('.' + name);\n        };\n        return Glob;\n    }());\n\n    var Queue = /** @class */ (function () {\n        function Queue(_items, _limit) {\n            if (_items === void 0) { _items = []; }\n            if (_limit === void 0) { _limit = null; }\n            this._items = _items;\n            this._limit = _limit;\n            this._evictListeners = [];\n            this.onEvict = pushTo(this._evictListeners);\n        }\n        Queue.prototype.enqueue = function (item) {\n            var items = this._items;\n            items.push(item);\n            if (this._limit && items.length > this._limit)\n                this.evict();\n            return item;\n        };\n        Queue.prototype.evict = function () {\n            var item = this._items.shift();\n            this._evictListeners.forEach(function (fn) { return fn(item); });\n            return item;\n        };\n        Queue.prototype.dequeue = function () {\n            if (this.size())\n                return this._items.splice(0, 1)[0];\n        };\n        Queue.prototype.clear = function () {\n            var current = this._items;\n            this._items = [];\n            return current;\n        };\n        Queue.prototype.size = function () {\n            return this._items.length;\n        };\n        Queue.prototype.remove = function (item) {\n            var idx = this._items.indexOf(item);\n            return idx > -1 && this._items.splice(idx, 1)[0];\n        };\n        Queue.prototype.peekTail = function () {\n            return this._items[this._items.length - 1];\n        };\n        Queue.prototype.peekHead = function () {\n            if (this.size())\n                return this._items[0];\n        };\n        return Queue;\n    }());\n\n    /** An enum for Transition Rejection reasons */\n\n    (function (RejectType) {\n        /**\n         * A new transition superseded this one.\n         *\n         * While this transition was running, a new transition started.\n         * This transition is cancelled because it was superseded by new transition.\n         */\n        RejectType[RejectType[\"SUPERSEDED\"] = 2] = \"SUPERSEDED\";\n        /**\n         * The transition was aborted\n         *\n         * The transition was aborted by a hook which returned `false`\n         */\n        RejectType[RejectType[\"ABORTED\"] = 3] = \"ABORTED\";\n        /**\n         * The transition was invalid\n         *\n         * The transition was never started because it was invalid\n         */\n        RejectType[RejectType[\"INVALID\"] = 4] = \"INVALID\";\n        /**\n         * The transition was ignored\n         *\n         * The transition was ignored because it would have no effect.\n         *\n         * Either:\n         *\n         * - The transition is targeting the current state and parameter values\n         * - The transition is targeting the same state and parameter values as the currently running transition.\n         */\n        RejectType[RejectType[\"IGNORED\"] = 5] = \"IGNORED\";\n        /**\n         * The transition errored.\n         *\n         * This generally means a hook threw an error or returned a rejected promise\n         */\n        RejectType[RejectType[\"ERROR\"] = 6] = \"ERROR\";\n    })(exports.RejectType || (exports.RejectType = {}));\n    /** @internal */\n    var id = 0;\n    var Rejection = /** @class */ (function () {\n        function Rejection(type, message, detail) {\n            /** @internal */\n            this.$id = id++;\n            this.type = type;\n            this.message = message;\n            this.detail = detail;\n        }\n        /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n        Rejection.isRejectionPromise = function (obj) {\n            return obj && typeof obj.then === 'function' && is(Rejection)(obj._transitionRejection);\n        };\n        /** Returns a Rejection due to transition superseded */\n        Rejection.superseded = function (detail, options) {\n            var message = 'The transition has been superseded by a different transition';\n            var rejection = new Rejection(exports.RejectType.SUPERSEDED, message, detail);\n            if (options && options.redirected) {\n                rejection.redirected = true;\n            }\n            return rejection;\n        };\n        /** Returns a Rejection due to redirected transition */\n        Rejection.redirected = function (detail) {\n            return Rejection.superseded(detail, { redirected: true });\n        };\n        /** Returns a Rejection due to invalid transition */\n        Rejection.invalid = function (detail) {\n            var message = 'This transition is invalid';\n            return new Rejection(exports.RejectType.INVALID, message, detail);\n        };\n        /** Returns a Rejection due to ignored transition */\n        Rejection.ignored = function (detail) {\n            var message = 'The transition was ignored';\n            return new Rejection(exports.RejectType.IGNORED, message, detail);\n        };\n        /** Returns a Rejection due to aborted transition */\n        Rejection.aborted = function (detail) {\n            var message = 'The transition has been aborted';\n            return new Rejection(exports.RejectType.ABORTED, message, detail);\n        };\n        /** Returns a Rejection due to aborted transition */\n        Rejection.errored = function (detail) {\n            var message = 'The transition errored';\n            return new Rejection(exports.RejectType.ERROR, message, detail);\n        };\n        /**\n         * Returns a Rejection\n         *\n         * Normalizes a value as a Rejection.\n         * If the value is already a Rejection, returns it.\n         * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n         *\n         * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n         */\n        Rejection.normalize = function (detail) {\n            return is(Rejection)(detail) ? detail : Rejection.errored(detail);\n        };\n        Rejection.prototype.toString = function () {\n            var detailString = function (d) { return (d && d.toString !== Object.prototype.toString ? d.toString() : stringify(d)); };\n            var detail = detailString(this.detail);\n            var _a = this, $id = _a.$id, type = _a.type, message = _a.message;\n            return \"Transition Rejection($id: \" + $id + \" type: \" + type + \", message: \" + message + \", detail: \" + detail + \")\";\n        };\n        Rejection.prototype.toPromise = function () {\n            return extend(silentRejection(this), { _transitionRejection: this });\n        };\n        return Rejection;\n    }());\n\n    /**\n     * Functions that manipulate strings\n     *\n     * Although these functions are exported, they are subject to change without notice.\n     *\n     * @packageDocumentation\n     */\n    /**\n     * Returns a string shortened to a maximum length\n     *\n     * If the string is already less than the `max` length, return the string.\n     * Else return the string, shortened to `max - 3` and append three dots (\"...\").\n     *\n     * @param max the maximum length of the string to return\n     * @param str the input string\n     */\n    function maxLength(max, str) {\n        if (str.length <= max)\n            return str;\n        return str.substr(0, max - 3) + '...';\n    }\n    /**\n     * Returns a string, with spaces added to the end, up to a desired str length\n     *\n     * If the string is already longer than the desired length, return the string.\n     * Else returns the string, with extra spaces on the end, such that it reaches `length` characters.\n     *\n     * @param length the desired length of the string to return\n     * @param str the input string\n     */\n    function padString(length, str) {\n        while (str.length < length)\n            str += ' ';\n        return str;\n    }\n    function kebobString(camelCase) {\n        return camelCase\n            .replace(/^([A-Z])/, function ($1) { return $1.toLowerCase(); }) // replace first char\n            .replace(/([A-Z])/g, function ($1) { return '-' + $1.toLowerCase(); }); // replace rest\n    }\n    function functionToString(fn) {\n        var fnStr = fnToString(fn);\n        var namedFunctionMatch = fnStr.match(/^(function [^ ]+\\([^)]*\\))/);\n        var toStr = namedFunctionMatch ? namedFunctionMatch[1] : fnStr;\n        var fnName = fn['name'] || '';\n        if (fnName && toStr.match(/function \\(/)) {\n            return 'function ' + fnName + toStr.substr(9);\n        }\n        return toStr;\n    }\n    function fnToString(fn) {\n        var _fn = isArray(fn) ? fn.slice(-1)[0] : fn;\n        return (_fn && _fn.toString()) || 'undefined';\n    }\n    function stringify(o) {\n        var seen = [];\n        var isRejection = Rejection.isRejectionPromise;\n        var hasToString = function (obj) {\n            return isObject(obj) && !isArray(obj) && obj.constructor !== Object && isFunction(obj.toString);\n        };\n        var stringifyPattern = pattern([\n            [isUndefined, val('undefined')],\n            [isNull, val('null')],\n            [isPromise, val('[Promise]')],\n            [isRejection, function (x) { return x._transitionRejection.toString(); }],\n            [hasToString, function (x) { return x.toString(); }],\n            [isInjectable, functionToString],\n            [val(true), identity],\n        ]);\n        function format(value) {\n            if (isObject(value)) {\n                if (seen.indexOf(value) !== -1)\n                    return '[circular ref]';\n                seen.push(value);\n            }\n            return stringifyPattern(value);\n        }\n        if (isUndefined(o)) {\n            // Workaround for IE & Edge Spec incompatibility where replacer function would not be called when JSON.stringify\n            // is given `undefined` as value. To work around that, we simply detect `undefined` and bail out early by\n            // manually stringifying it.\n            return format(o);\n        }\n        return JSON.stringify(o, function (key, value) { return format(value); }).replace(/\\\\\"/g, '\"');\n    }\n    /** Returns a function that splits a string on a character or substring */\n    var beforeAfterSubstr = function (char) {\n        return function (str) {\n            if (!str)\n                return ['', ''];\n            var idx = str.indexOf(char);\n            if (idx === -1)\n                return [str, ''];\n            return [str.substr(0, idx), str.substr(idx + 1)];\n        };\n    };\n    var hostRegex = new RegExp('^(?:[a-z]+:)?//[^/]+/');\n    var stripLastPathElement = function (str) { return str.replace(/\\/[^/]*$/, ''); };\n    var splitHash = beforeAfterSubstr('#');\n    var splitQuery = beforeAfterSubstr('?');\n    var splitEqual = beforeAfterSubstr('=');\n    var trimHashVal = function (str) { return (str ? str.replace(/^#/, '') : ''); };\n    /**\n     * Splits on a delimiter, but returns the delimiters in the array\n     *\n     * #### Example:\n     * ```js\n     * var splitOnSlashes = splitOnDelim('/');\n     * splitOnSlashes(\"/foo\"); // [\"/\", \"foo\"]\n     * splitOnSlashes(\"/foo/\"); // [\"/\", \"foo\", \"/\"]\n     * ```\n     */\n    function splitOnDelim(delim) {\n        var re = new RegExp('(' + delim + ')', 'g');\n        return function (str) { return str.split(re).filter(identity); };\n    }\n    /**\n     * Reduce fn that joins neighboring strings\n     *\n     * Given an array of strings, returns a new array\n     * where all neighboring strings have been joined.\n     *\n     * #### Example:\n     * ```js\n     * let arr = [\"foo\", \"bar\", 1, \"baz\", \"\", \"qux\" ];\n     * arr.reduce(joinNeighborsR, []) // [\"foobar\", 1, \"bazqux\" ]\n     * ```\n     */\n    function joinNeighborsR(acc, x) {\n        if (isString(tail(acc)) && isString(x))\n            return acc.slice(0, -1).concat(tail(acc) + x);\n        return pushR(acc, x);\n    }\n\n    /**\n     * workaround for missing console object in IE9 when dev tools haven't been opened o_O\n     * @packageDocumentation\n     */\n    var noopConsoleStub = { log: noop, error: noop, table: noop };\n    function ie9Console(console) {\n        var bound = function (fn) { return Function.prototype.bind.call(fn, console); };\n        return {\n            log: bound(console.log),\n            error: bound(console.log),\n            table: bound(console.log),\n        };\n    }\n    function fallbackConsole(console) {\n        var log = console.log.bind(console);\n        var error = console.error ? console.error.bind(console) : log;\n        var table = console.table ? console.table.bind(console) : log;\n        return { log: log, error: error, table: table };\n    }\n    function getSafeConsole() {\n        // @ts-ignore\n        var isIE9 = typeof document !== 'undefined' && document.documentMode && document.documentMode === 9;\n        if (isIE9) {\n            return window && window.console ? ie9Console(window.console) : noopConsoleStub;\n        }\n        else if (!console.table || !console.error) {\n            return fallbackConsole(console);\n        }\n        else {\n            return console;\n        }\n    }\n    var safeConsole = getSafeConsole();\n\n    /**\n     * # Transition tracing (debug)\n     *\n     * Enable transition tracing to print transition information to the console,\n     * in order to help debug your application.\n     * Tracing logs detailed information about each Transition to your console.\n     *\n     * To enable tracing, import the [[Trace]] singleton and enable one or more categories.\n     *\n     * ### ES6\n     * ```js\n     * import {trace} from \"@uirouter/core\";\n     * trace.enable(1, 5); // TRANSITION and VIEWCONFIG\n     * ```\n     *\n     * ### CJS\n     * ```js\n     * let trace = require(\"@uirouter/core\").trace;\n     * trace.enable(\"TRANSITION\", \"VIEWCONFIG\");\n     * ```\n     *\n     * ### Globals\n     * ```js\n     * let trace = window[\"@uirouter/core\"].trace;\n     * trace.enable(); // Trace everything (very verbose)\n     * ```\n     *\n     * ### Angular 1:\n     * ```js\n     * app.run($trace => $trace.enable());\n     * ```\n     *\n     * @packageDocumentation\n     */\n    function uiViewString(uiview) {\n        if (!uiview)\n            return 'ui-view (defunct)';\n        var state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)';\n        return \"[ui-view#\" + uiview.id + \" \" + uiview.$type + \":\" + uiview.fqn + \" (\" + uiview.name + \"@\" + state + \")]\";\n    }\n    var viewConfigString = function (viewConfig) {\n        var view = viewConfig.viewDecl;\n        var state = view.$context.name || '(root)';\n        return \"[View#\" + viewConfig.$id + \" from '\" + state + \"' state]: target ui-view: '\" + view.$uiViewName + \"@\" + view.$uiViewContextAnchor + \"'\";\n    };\n    function normalizedCat(input) {\n        return isNumber(input) ? exports.Category[input] : exports.Category[exports.Category[input]];\n    }\n    /**\n     * Trace categories Enum\n     *\n     * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]]\n     *\n     * `trace.enable(Category.TRANSITION)`\n     *\n     * These can also be provided using a matching string, or position ordinal\n     *\n     * `trace.enable(\"TRANSITION\")`\n     *\n     * `trace.enable(1)`\n     */\n\n    (function (Category) {\n        Category[Category[\"RESOLVE\"] = 0] = \"RESOLVE\";\n        Category[Category[\"TRANSITION\"] = 1] = \"TRANSITION\";\n        Category[Category[\"HOOK\"] = 2] = \"HOOK\";\n        Category[Category[\"UIVIEW\"] = 3] = \"UIVIEW\";\n        Category[Category[\"VIEWCONFIG\"] = 4] = \"VIEWCONFIG\";\n    })(exports.Category || (exports.Category = {}));\n    var _tid = parse('$id');\n    var _rid = parse('router.$id');\n    var transLbl = function (trans) { return \"Transition #\" + _tid(trans) + \"-\" + _rid(trans); };\n    /**\n     * Prints UI-Router Transition trace information to the console.\n     */\n    var Trace = /** @class */ (function () {\n        /** @internal */\n        function Trace() {\n            /** @internal */\n            this._enabled = {};\n            this.approximateDigests = 0;\n        }\n        /** @internal */\n        Trace.prototype._set = function (enabled, categories) {\n            var _this = this;\n            if (!categories.length) {\n                categories = Object.keys(exports.Category)\n                    .map(function (k) { return parseInt(k, 10); })\n                    .filter(function (k) { return !isNaN(k); })\n                    .map(function (key) { return exports.Category[key]; });\n            }\n            categories.map(normalizedCat).forEach(function (category) { return (_this._enabled[category] = enabled); });\n        };\n        Trace.prototype.enable = function () {\n            var categories = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                categories[_i] = arguments[_i];\n            }\n            this._set(true, categories);\n        };\n        Trace.prototype.disable = function () {\n            var categories = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                categories[_i] = arguments[_i];\n            }\n            this._set(false, categories);\n        };\n        /**\n         * Retrieves the enabled stateus of a [[Category]]\n         *\n         * ```js\n         * trace.enabled(\"VIEWCONFIG\"); // true or false\n         * ```\n         *\n         * @returns boolean true if the category is enabled\n         */\n        Trace.prototype.enabled = function (category) {\n            return !!this._enabled[normalizedCat(category)];\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceTransitionStart = function (trans) {\n            if (!this.enabled(exports.Category.TRANSITION))\n                return;\n            safeConsole.log(transLbl(trans) + \": Started  -> \" + stringify(trans));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceTransitionIgnored = function (trans) {\n            if (!this.enabled(exports.Category.TRANSITION))\n                return;\n            safeConsole.log(transLbl(trans) + \": Ignored  <> \" + stringify(trans));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceHookInvocation = function (step, trans, options) {\n            if (!this.enabled(exports.Category.HOOK))\n                return;\n            var event = parse('traceData.hookType')(options) || 'internal', context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown', name = functionToString(step.registeredHook.callback);\n            safeConsole.log(transLbl(trans) + \":   Hook -> \" + event + \" context: \" + context + \", \" + maxLength(200, name));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceHookResult = function (hookResult, trans, transitionOptions) {\n            if (!this.enabled(exports.Category.HOOK))\n                return;\n            safeConsole.log(transLbl(trans) + \":   <- Hook returned: \" + maxLength(200, stringify(hookResult)));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceResolvePath = function (path, when, trans) {\n            if (!this.enabled(exports.Category.RESOLVE))\n                return;\n            safeConsole.log(transLbl(trans) + \":         Resolving \" + path + \" (\" + when + \")\");\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceResolvableResolved = function (resolvable, trans) {\n            if (!this.enabled(exports.Category.RESOLVE))\n                return;\n            safeConsole.log(transLbl(trans) + \":               <- Resolved  \" + resolvable + \" to: \" + maxLength(200, stringify(resolvable.data)));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceError = function (reason, trans) {\n            if (!this.enabled(exports.Category.TRANSITION))\n                return;\n            safeConsole.log(transLbl(trans) + \": <- Rejected \" + stringify(trans) + \", reason: \" + reason);\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceSuccess = function (finalState, trans) {\n            if (!this.enabled(exports.Category.TRANSITION))\n                return;\n            safeConsole.log(transLbl(trans) + \": <- Success  \" + stringify(trans) + \", final state: \" + finalState.name);\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceUIViewEvent = function (event, viewData, extra) {\n            if (extra === void 0) { extra = ''; }\n            if (!this.enabled(exports.Category.UIVIEW))\n                return;\n            safeConsole.log(\"ui-view: \" + padString(30, event) + \" \" + uiViewString(viewData) + extra);\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceUIViewConfigUpdated = function (viewData, context) {\n            if (!this.enabled(exports.Category.UIVIEW))\n                return;\n            this.traceUIViewEvent('Updating', viewData, \" with ViewConfig from context='\" + context + \"'\");\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceUIViewFill = function (viewData, html) {\n            if (!this.enabled(exports.Category.UIVIEW))\n                return;\n            this.traceUIViewEvent('Fill', viewData, \" with: \" + maxLength(200, html));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceViewSync = function (pairs) {\n            if (!this.enabled(exports.Category.VIEWCONFIG))\n                return;\n            var uivheader = 'uiview component fqn';\n            var cfgheader = 'view config state (view name)';\n            var mapping = pairs\n                .map(function (_a) {\n                var _b;\n                var uiView = _a.uiView, viewConfig = _a.viewConfig;\n                var uiv = uiView && uiView.fqn;\n                var cfg = viewConfig && viewConfig.viewDecl.$context.name + \": (\" + viewConfig.viewDecl.$name + \")\";\n                return _b = {}, _b[uivheader] = uiv, _b[cfgheader] = cfg, _b;\n            })\n                .sort(function (a, b) { return (a[uivheader] || '').localeCompare(b[uivheader] || ''); });\n            safeConsole.table(mapping);\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceViewServiceEvent = function (event, viewConfig) {\n            if (!this.enabled(exports.Category.VIEWCONFIG))\n                return;\n            safeConsole.log(\"VIEWCONFIG: \" + event + \" \" + viewConfigString(viewConfig));\n        };\n        /** @internal called by ui-router code */\n        Trace.prototype.traceViewServiceUIViewEvent = function (event, viewData) {\n            if (!this.enabled(exports.Category.VIEWCONFIG))\n                return;\n            safeConsole.log(\"VIEWCONFIG: \" + event + \" \" + uiViewString(viewData));\n        };\n        return Trace;\n    }());\n    /**\n     * The [[Trace]] singleton\n     *\n     * #### Example:\n     * ```js\n     * import {trace} from \"@uirouter/core\";\n     * trace.enable(1, 5);\n     * ```\n     */\n    var trace = new Trace();\n\n    /**\n     * An internal class which implements [[ParamTypeDefinition]].\n     *\n     * A [[ParamTypeDefinition]] is a plain javascript object used to register custom parameter types.\n     * When a param type definition is registered, an instance of this class is created internally.\n     *\n     * This class has naive implementations for all the [[ParamTypeDefinition]] methods.\n     *\n     * Used by [[UrlMatcher]] when matching or formatting URLs, or comparing and validating parameter values.\n     *\n     * #### Example:\n     * ```js\n     * var paramTypeDef = {\n     *   decode: function(val) { return parseInt(val, 10); },\n     *   encode: function(val) { return val && val.toString(); },\n     *   equals: function(a, b) { return this.is(a) && a === b; },\n     *   is: function(val) { return angular.isNumber(val) && isFinite(val) && val % 1 === 0; },\n     *   pattern: /\\d+/\n     * }\n     *\n     * var paramType = new ParamType(paramTypeDef);\n     * ```\n     */\n    var ParamType = /** @class */ (function () {\n        /**\n         * @param def  A configuration object which contains the custom type definition.  The object's\n         *        properties will override the default methods and/or pattern in `ParamType`'s public interface.\n         * @returns a new ParamType object\n         */\n        function ParamType(def) {\n            /** @inheritdoc */\n            this.pattern = /.*/;\n            /** @inheritdoc */\n            this.inherit = true;\n            extend(this, def);\n        }\n        // consider these four methods to be \"abstract methods\" that should be overridden\n        /** @inheritdoc */\n        ParamType.prototype.is = function (val, key) {\n            return true;\n        };\n        /** @inheritdoc */\n        ParamType.prototype.encode = function (val, key) {\n            return val;\n        };\n        /** @inheritdoc */\n        ParamType.prototype.decode = function (val, key) {\n            return val;\n        };\n        /** @inheritdoc */\n        ParamType.prototype.equals = function (a, b) {\n            // tslint:disable-next-line:triple-equals\n            return a == b;\n        };\n        ParamType.prototype.$subPattern = function () {\n            var sub = this.pattern.toString();\n            return sub.substr(1, sub.length - 2);\n        };\n        ParamType.prototype.toString = function () {\n            return \"{ParamType:\" + this.name + \"}\";\n        };\n        /** Given an encoded string, or a decoded object, returns a decoded object */\n        ParamType.prototype.$normalize = function (val) {\n            return this.is(val) ? val : this.decode(val);\n        };\n        /**\n         * Wraps an existing custom ParamType as an array of ParamType, depending on 'mode'.\n         * e.g.:\n         * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n         * - url: \"/path?queryParam=1&queryParam=2\n         * - $stateParams.queryParam will be [1, 2]\n         * if `mode` is \"auto\", then\n         * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n         * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n         */\n        ParamType.prototype.$asArray = function (mode, isSearch) {\n            if (!mode)\n                return this;\n            if (mode === 'auto' && !isSearch)\n                throw new Error(\"'auto' array mode is for query parameters only\");\n            return new ArrayType(this, mode);\n        };\n        return ParamType;\n    }());\n    /** Wraps up a `ParamType` object to handle array values. */\n    function ArrayType(type, mode) {\n        var _this = this;\n        // Wrap non-array value as array\n        function arrayWrap(val) {\n            return isArray(val) ? val : isDefined(val) ? [val] : [];\n        }\n        // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n        function arrayUnwrap(val) {\n            switch (val.length) {\n                case 0:\n                    return undefined;\n                case 1:\n                    return mode === 'auto' ? val[0] : val;\n                default:\n                    return val;\n            }\n        }\n        // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n        function arrayHandler(callback, allTruthyMode) {\n            return function handleArray(val) {\n                if (isArray(val) && val.length === 0)\n                    return val;\n                var arr = arrayWrap(val);\n                var result = map(arr, callback);\n                return allTruthyMode === true ? filter(result, function (x) { return !x; }).length === 0 : arrayUnwrap(result);\n            };\n        }\n        // Wraps type (.equals) functions to operate on each value of an array\n        function arrayEqualsHandler(callback) {\n            return function handleArray(val1, val2) {\n                var left = arrayWrap(val1), right = arrayWrap(val2);\n                if (left.length !== right.length)\n                    return false;\n                for (var i = 0; i < left.length; i++) {\n                    if (!callback(left[i], right[i]))\n                        return false;\n                }\n                return true;\n            };\n        }\n        ['encode', 'decode', 'equals', '$normalize'].forEach(function (name) {\n            var paramTypeFn = type[name].bind(type);\n            var wrapperFn = name === 'equals' ? arrayEqualsHandler : arrayHandler;\n            _this[name] = wrapperFn(paramTypeFn);\n        });\n        extend(this, {\n            dynamic: type.dynamic,\n            name: type.name,\n            pattern: type.pattern,\n            inherit: type.inherit,\n            raw: type.raw,\n            is: arrayHandler(type.is.bind(type), true),\n            $arrayMode: mode,\n        });\n    }\n\n    var hasOwn = Object.prototype.hasOwnProperty;\n    var isShorthand = function (cfg) {\n        return ['value', 'type', 'squash', 'array', 'dynamic'].filter(hasOwn.bind(cfg || {})).length === 0;\n    };\n\n    (function (DefType) {\n        DefType[DefType[\"PATH\"] = 0] = \"PATH\";\n        DefType[DefType[\"SEARCH\"] = 1] = \"SEARCH\";\n        DefType[DefType[\"CONFIG\"] = 2] = \"CONFIG\";\n    })(exports.DefType || (exports.DefType = {}));\n    function getParamDeclaration(paramName, location, state) {\n        var noReloadOnSearch = (state.reloadOnSearch === false && location === exports.DefType.SEARCH) || undefined;\n        var dynamic = find([state.dynamic, noReloadOnSearch], isDefined);\n        var defaultConfig = isDefined(dynamic) ? { dynamic: dynamic } : {};\n        var paramConfig = unwrapShorthand(state && state.params && state.params[paramName]);\n        return extend(defaultConfig, paramConfig);\n    }\n    function unwrapShorthand(cfg) {\n        cfg = isShorthand(cfg) ? { value: cfg } : cfg;\n        getStaticDefaultValue['__cacheable'] = true;\n        function getStaticDefaultValue() {\n            return cfg.value;\n        }\n        var $$fn = isInjectable(cfg.value) ? cfg.value : getStaticDefaultValue;\n        return extend(cfg, { $$fn: $$fn });\n    }\n    function getType(cfg, urlType, location, id, paramTypes) {\n        if (cfg.type && urlType && urlType.name !== 'string')\n            throw new Error(\"Param '\" + id + \"' has two type configurations.\");\n        if (cfg.type && urlType && urlType.name === 'string' && paramTypes.type(cfg.type))\n            return paramTypes.type(cfg.type);\n        if (urlType)\n            return urlType;\n        if (!cfg.type) {\n            var type = location === exports.DefType.CONFIG\n                ? 'any'\n                : location === exports.DefType.PATH\n                    ? 'path'\n                    : location === exports.DefType.SEARCH\n                        ? 'query'\n                        : 'string';\n            return paramTypes.type(type);\n        }\n        return cfg.type instanceof ParamType ? cfg.type : paramTypes.type(cfg.type);\n    }\n    /** returns false, true, or the squash value to indicate the \"default parameter url squash policy\". */\n    function getSquashPolicy(config, isOptional, defaultPolicy) {\n        var squash = config.squash;\n        if (!isOptional || squash === false)\n            return false;\n        if (!isDefined(squash) || squash == null)\n            return defaultPolicy;\n        if (squash === true || isString(squash))\n            return squash;\n        throw new Error(\"Invalid squash policy: '\" + squash + \"'. Valid policies: false, true, or arbitrary string\");\n    }\n    function getReplace(config, arrayMode, isOptional, squash) {\n        var defaultPolicy = [\n            { from: '', to: isOptional || arrayMode ? undefined : '' },\n            { from: null, to: isOptional || arrayMode ? undefined : '' },\n        ];\n        var replace = isArray(config.replace) ? config.replace : [];\n        if (isString(squash))\n            replace.push({ from: squash, to: undefined });\n        var configuredKeys = map(replace, prop('from'));\n        return filter(defaultPolicy, function (item) { return configuredKeys.indexOf(item.from) === -1; }).concat(replace);\n    }\n    var Param = /** @class */ (function () {\n        function Param(id, type, location, urlConfig, state) {\n            var config = getParamDeclaration(id, location, state);\n            type = getType(config, type, location, id, urlConfig.paramTypes);\n            var arrayMode = getArrayMode();\n            type = arrayMode ? type.$asArray(arrayMode, location === exports.DefType.SEARCH) : type;\n            var isOptional = config.value !== undefined || location === exports.DefType.SEARCH;\n            var dynamic = isDefined(config.dynamic) ? !!config.dynamic : !!type.dynamic;\n            var raw = isDefined(config.raw) ? !!config.raw : !!type.raw;\n            var squash = getSquashPolicy(config, isOptional, urlConfig.defaultSquashPolicy());\n            var replace = getReplace(config, arrayMode, isOptional, squash);\n            var inherit = isDefined(config.inherit) ? !!config.inherit : !!type.inherit;\n            // array config: param name (param[]) overrides default settings.  explicit config overrides param name.\n            function getArrayMode() {\n                var arrayDefaults = { array: location === exports.DefType.SEARCH ? 'auto' : false };\n                var arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n                return extend(arrayDefaults, arrayParamNomenclature, config).array;\n            }\n            extend(this, { id: id, type: type, location: location, isOptional: isOptional, dynamic: dynamic, raw: raw, squash: squash, replace: replace, inherit: inherit, array: arrayMode, config: config });\n        }\n        Param.values = function (params, values) {\n            if (values === void 0) { values = {}; }\n            var paramValues = {};\n            for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {\n                var param = params_1[_i];\n                paramValues[param.id] = param.value(values[param.id]);\n            }\n            return paramValues;\n        };\n        /**\n         * Finds [[Param]] objects which have different param values\n         *\n         * Filters a list of [[Param]] objects to only those whose parameter values differ in two param value objects\n         *\n         * @param params: The list of Param objects to filter\n         * @param values1: The first set of parameter values\n         * @param values2: the second set of parameter values\n         *\n         * @returns any Param objects whose values were different between values1 and values2\n         */\n        Param.changed = function (params, values1, values2) {\n            if (values1 === void 0) { values1 = {}; }\n            if (values2 === void 0) { values2 = {}; }\n            return params.filter(function (param) { return !param.type.equals(values1[param.id], values2[param.id]); });\n        };\n        /**\n         * Checks if two param value objects are equal (for a set of [[Param]] objects)\n         *\n         * @param params The list of [[Param]] objects to check\n         * @param values1 The first set of param values\n         * @param values2 The second set of param values\n         *\n         * @returns true if the param values in values1 and values2 are equal\n         */\n        Param.equals = function (params, values1, values2) {\n            if (values1 === void 0) { values1 = {}; }\n            if (values2 === void 0) { values2 = {}; }\n            return Param.changed(params, values1, values2).length === 0;\n        };\n        /** Returns true if a the parameter values are valid, according to the Param definitions */\n        Param.validates = function (params, values) {\n            if (values === void 0) { values = {}; }\n            return params.map(function (param) { return param.validates(values[param.id]); }).reduce(allTrueR, true);\n        };\n        Param.prototype.isDefaultValue = function (value) {\n            return this.isOptional && this.type.equals(this.value(), value);\n        };\n        /**\n         * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n         * default value, which may be the result of an injectable function.\n         */\n        Param.prototype.value = function (value) {\n            var _this = this;\n            /**\n             * [Internal] Get the default value of a parameter, which may be an injectable function.\n             */\n            var getDefaultValue = function () {\n                if (_this._defaultValueCache)\n                    return _this._defaultValueCache.defaultValue;\n                if (!services.$injector)\n                    throw new Error('Injectable functions cannot be called at configuration time');\n                var defaultValue = services.$injector.invoke(_this.config.$$fn);\n                if (defaultValue !== null && defaultValue !== undefined && !_this.type.is(defaultValue))\n                    throw new Error(\"Default value (\" + defaultValue + \") for parameter '\" + _this.id + \"' is not an instance of ParamType (\" + _this.type.name + \")\");\n                if (_this.config.$$fn['__cacheable']) {\n                    _this._defaultValueCache = { defaultValue: defaultValue };\n                }\n                return defaultValue;\n            };\n            var replaceSpecialValues = function (val) {\n                for (var _i = 0, _a = _this.replace; _i < _a.length; _i++) {\n                    var tuple = _a[_i];\n                    if (tuple.from === val)\n                        return tuple.to;\n                }\n                return val;\n            };\n            value = replaceSpecialValues(value);\n            return isUndefined(value) ? getDefaultValue() : this.type.$normalize(value);\n        };\n        Param.prototype.isSearch = function () {\n            return this.location === exports.DefType.SEARCH;\n        };\n        Param.prototype.validates = function (value) {\n            // There was no parameter value, but the param is optional\n            if ((isUndefined(value) || value === null) && this.isOptional)\n                return true;\n            // The value was not of the correct ParamType, and could not be decoded to the correct ParamType\n            var normalized = this.type.$normalize(value);\n            if (!this.type.is(normalized))\n                return false;\n            // The value was of the correct type, but when encoded, did not match the ParamType's regexp\n            var encoded = this.type.encode(normalized);\n            return !(isString(encoded) && !this.type.pattern.exec(encoded));\n        };\n        Param.prototype.toString = function () {\n            return \"{Param:\" + this.id + \" \" + this.type + \" squash: '\" + this.squash + \"' optional: \" + this.isOptional + \"}\";\n        };\n        return Param;\n    }());\n\n    /**\n     * A registry for parameter types.\n     *\n     * This registry manages the built-in (and custom) parameter types.\n     *\n     * The built-in parameter types are:\n     *\n     * - [[string]]\n     * - [[path]]\n     * - [[query]]\n     * - [[hash]]\n     * - [[int]]\n     * - [[bool]]\n     * - [[date]]\n     * - [[json]]\n     * - [[any]]\n     *\n     * To register custom parameter types, use [[UrlConfig.type]], i.e.,\n     *\n     * ```js\n     * router.urlService.config.type(customType)\n     * ```\n     */\n    var ParamTypes = /** @class */ (function () {\n        function ParamTypes() {\n            this.enqueue = true;\n            this.typeQueue = [];\n            this.defaultTypes = pick(ParamTypes.prototype, [\n                'hash',\n                'string',\n                'query',\n                'path',\n                'int',\n                'bool',\n                'date',\n                'json',\n                'any',\n            ]);\n            // Register default types. Store them in the prototype of this.types.\n            var makeType = function (definition, name) { return new ParamType(extend({ name: name }, definition)); };\n            this.types = inherit(map(this.defaultTypes, makeType), {});\n        }\n        ParamTypes.prototype.dispose = function () {\n            this.types = {};\n        };\n        /**\n         * Registers a parameter type\n         *\n         * End users should call [[UrlMatcherFactory.type]], which delegates to this method.\n         */\n        ParamTypes.prototype.type = function (name, definition, definitionFn) {\n            if (!isDefined(definition))\n                return this.types[name];\n            if (this.types.hasOwnProperty(name))\n                throw new Error(\"A type named '\" + name + \"' has already been defined.\");\n            this.types[name] = new ParamType(extend({ name: name }, definition));\n            if (definitionFn) {\n                this.typeQueue.push({ name: name, def: definitionFn });\n                if (!this.enqueue)\n                    this._flushTypeQueue();\n            }\n            return this;\n        };\n        ParamTypes.prototype._flushTypeQueue = function () {\n            while (this.typeQueue.length) {\n                var type = this.typeQueue.shift();\n                if (type.pattern)\n                    throw new Error(\"You cannot override a type's .pattern at runtime.\");\n                extend(this.types[type.name], services.$injector.invoke(type.def));\n            }\n        };\n        return ParamTypes;\n    }());\n    function initDefaultTypes() {\n        var makeDefaultType = function (def) {\n            var valToString = function (val) { return (val != null ? val.toString() : val); };\n            var defaultTypeBase = {\n                encode: valToString,\n                decode: valToString,\n                is: is(String),\n                pattern: /.*/,\n                // tslint:disable-next-line:triple-equals\n                equals: function (a, b) { return a == b; },\n            };\n            return extend({}, defaultTypeBase, def);\n        };\n        // Default Parameter Type Definitions\n        extend(ParamTypes.prototype, {\n            string: makeDefaultType({}),\n            path: makeDefaultType({\n                pattern: /[^/]*/,\n            }),\n            query: makeDefaultType({}),\n            hash: makeDefaultType({\n                inherit: false,\n            }),\n            int: makeDefaultType({\n                decode: function (val) { return parseInt(val, 10); },\n                is: function (val) {\n                    return !isNullOrUndefined(val) && this.decode(val.toString()) === val;\n                },\n                pattern: /-?\\d+/,\n            }),\n            bool: makeDefaultType({\n                encode: function (val) { return (val && 1) || 0; },\n                decode: function (val) { return parseInt(val, 10) !== 0; },\n                is: is(Boolean),\n                pattern: /0|1/,\n            }),\n            date: makeDefaultType({\n                encode: function (val) {\n                    return !this.is(val)\n                        ? undefined\n                        : [val.getFullYear(), ('0' + (val.getMonth() + 1)).slice(-2), ('0' + val.getDate()).slice(-2)].join('-');\n                },\n                decode: function (val) {\n                    if (this.is(val))\n                        return val;\n                    var match = this.capture.exec(val);\n                    return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n                },\n                is: function (val) { return val instanceof Date && !isNaN(val.valueOf()); },\n                equals: function (l, r) {\n                    return ['getFullYear', 'getMonth', 'getDate'].reduce(function (acc, fn) { return acc && l[fn]() === r[fn](); }, true);\n                },\n                pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n                capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/,\n            }),\n            json: makeDefaultType({\n                encode: toJson,\n                decode: fromJson,\n                is: is(Object),\n                equals: equals,\n                pattern: /[^/]*/,\n            }),\n            // does not encode/decode\n            any: makeDefaultType({\n                encode: identity,\n                decode: identity,\n                is: function () { return true; },\n                equals: equals,\n            }),\n        });\n    }\n    initDefaultTypes();\n\n    var StateParams = /** @class */ (function () {\n        function StateParams(params) {\n            if (params === void 0) { params = {}; }\n            extend(this, params);\n        }\n        /**\n         * Merges a set of parameters with all parameters inherited between the common parents of the\n         * current state and a given destination state.\n         *\n         * @param {Object} newParams The set of parameters which will be composited with inherited params.\n         * @param {Object} $current Internal definition of object representing the current state.\n         * @param {Object} $to Internal definition of object representing state to transition to.\n         */\n        StateParams.prototype.$inherit = function (newParams, $current, $to) {\n            var parentParams;\n            var parents = ancestors($current, $to), inherited = {}, inheritList = [];\n            for (var i in parents) {\n                if (!parents[i] || !parents[i].params)\n                    continue;\n                parentParams = Object.keys(parents[i].params);\n                if (!parentParams.length)\n                    continue;\n                for (var j in parentParams) {\n                    if (inheritList.indexOf(parentParams[j]) >= 0)\n                        continue;\n                    inheritList.push(parentParams[j]);\n                    inherited[parentParams[j]] = this[parentParams[j]];\n                }\n            }\n            return extend({}, inherited, newParams);\n        };\n        return StateParams;\n    }());\n\n    /**\n     * A node in a [[TreeChanges]] path\n     *\n     * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n     * Each PathNode corresponds to a state being entered, exited, or retained.\n     * The stateful information includes parameter values and resolve data.\n     */\n    var PathNode = /** @class */ (function () {\n        function PathNode(stateOrNode) {\n            if (stateOrNode instanceof PathNode) {\n                var node = stateOrNode;\n                this.state = node.state;\n                this.paramSchema = node.paramSchema.slice();\n                this.paramValues = extend({}, node.paramValues);\n                this.resolvables = node.resolvables.slice();\n                this.views = node.views && node.views.slice();\n            }\n            else {\n                var state = stateOrNode;\n                this.state = state;\n                this.paramSchema = state.parameters({ inherit: false });\n                this.paramValues = {};\n                this.resolvables = state.resolvables.map(function (res) { return res.clone(); });\n            }\n        }\n        PathNode.prototype.clone = function () {\n            return new PathNode(this);\n        };\n        /** Sets [[paramValues]] for the node, from the values of an object hash */\n        PathNode.prototype.applyRawParams = function (params) {\n            var getParamVal = function (paramDef) { return [paramDef.id, paramDef.value(params[paramDef.id])]; };\n            this.paramValues = this.paramSchema.reduce(function (memo, pDef) { return applyPairs(memo, getParamVal(pDef)); }, {});\n            return this;\n        };\n        /** Gets a specific [[Param]] metadata that belongs to the node */\n        PathNode.prototype.parameter = function (name) {\n            return find(this.paramSchema, propEq('id', name));\n        };\n        /**\n         * @returns true if the state and parameter values for another PathNode are\n         * equal to the state and param values for this PathNode\n         */\n        PathNode.prototype.equals = function (node, paramsFn) {\n            var diff = this.diff(node, paramsFn);\n            return diff && diff.length === 0;\n        };\n        /**\n         * Finds Params with different parameter values on another PathNode.\n         *\n         * Given another node (of the same state), finds the parameter values which differ.\n         * Returns the [[Param]] (schema objects) whose parameter values differ.\n         *\n         * Given another node for a different state, returns `false`\n         *\n         * @param node The node to compare to\n         * @param paramsFn A function that returns which parameters should be compared.\n         * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n         */\n        PathNode.prototype.diff = function (node, paramsFn) {\n            if (this.state !== node.state)\n                return false;\n            var params = paramsFn ? paramsFn(this) : this.paramSchema;\n            return Param.changed(params, this.paramValues, node.paramValues);\n        };\n        /**\n         * Returns a clone of the PathNode\n         * @deprecated use instance method `node.clone()`\n         */\n        PathNode.clone = function (node) { return node.clone(); };\n        return PathNode;\n    }());\n\n    /**\n     * Encapsulate the target (destination) state/params/options of a [[Transition]].\n     *\n     * This class is frequently used to redirect a transition to a new destination.\n     *\n     * See:\n     *\n     * - [[HookResult]]\n     * - [[TransitionHookFn]]\n     * - [[TransitionService.onStart]]\n     *\n     * To create a `TargetState`, use [[StateService.target]].\n     *\n     * ---\n     *\n     * This class wraps:\n     *\n     * 1) an identifier for a state\n     * 2) a set of parameters\n     * 3) and transition options\n     * 4) the registered state object (the [[StateDeclaration]])\n     *\n     * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n     * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n     * The `TargetState` class normalizes those options.\n     *\n     * A `TargetState` may be valid (the state being targeted exists in the registry)\n     * or invalid (the state being targeted is not registered).\n     */\n    var TargetState = /** @class */ (function () {\n        /**\n         * The TargetState constructor\n         *\n         * Note: Do not construct a `TargetState` manually.\n         * To create a `TargetState`, use the [[StateService.target]] factory method.\n         *\n         * @param _stateRegistry The StateRegistry to use to look up the _definition\n         * @param _identifier An identifier for a state.\n         *    Either a fully-qualified state name, or the object used to define the state.\n         * @param _params Parameters for the target state\n         * @param _options Transition options.\n         *\n         * @internal\n         */\n        function TargetState(_stateRegistry, _identifier, _params, _options) {\n            this._stateRegistry = _stateRegistry;\n            this._identifier = _identifier;\n            this._identifier = _identifier;\n            this._params = extend({}, _params || {});\n            this._options = extend({}, _options || {});\n            this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n        }\n        /** The name of the state this object targets */\n        TargetState.prototype.name = function () {\n            return (this._definition && this._definition.name) || this._identifier;\n        };\n        /** The identifier used when creating this TargetState */\n        TargetState.prototype.identifier = function () {\n            return this._identifier;\n        };\n        /** The target parameter values */\n        TargetState.prototype.params = function () {\n            return this._params;\n        };\n        /** The internal state object (if it was found) */\n        TargetState.prototype.$state = function () {\n            return this._definition;\n        };\n        /** The internal state declaration (if it was found) */\n        TargetState.prototype.state = function () {\n            return this._definition && this._definition.self;\n        };\n        /** The target options */\n        TargetState.prototype.options = function () {\n            return this._options;\n        };\n        /** True if the target state was found */\n        TargetState.prototype.exists = function () {\n            return !!(this._definition && this._definition.self);\n        };\n        /** True if the object is valid */\n        TargetState.prototype.valid = function () {\n            return !this.error();\n        };\n        /** If the object is invalid, returns the reason why */\n        TargetState.prototype.error = function () {\n            var base = this.options().relative;\n            if (!this._definition && !!base) {\n                var stateName = base.name ? base.name : base;\n                return \"Could not resolve '\" + this.name() + \"' from state '\" + stateName + \"'\";\n            }\n            if (!this._definition)\n                return \"No such state '\" + this.name() + \"'\";\n            if (!this._definition.self)\n                return \"State '\" + this.name() + \"' has an invalid definition\";\n        };\n        TargetState.prototype.toString = function () {\n            return \"'\" + this.name() + \"'\" + stringify(this.params());\n        };\n        /**\n         * Returns a copy of this TargetState which targets a different state.\n         * The new TargetState has the same parameter values and transition options.\n         *\n         * @param state The new state that should be targeted\n         */\n        TargetState.prototype.withState = function (state) {\n            return new TargetState(this._stateRegistry, state, this._params, this._options);\n        };\n        /**\n         * Returns a copy of this TargetState, using the specified parameter values.\n         *\n         * @param params the new parameter values to use\n         * @param replace When false (default) the new parameter values will be merged with the current values.\n         *                When true the parameter values will be used instead of the current values.\n         */\n        TargetState.prototype.withParams = function (params, replace) {\n            if (replace === void 0) { replace = false; }\n            var newParams = replace ? params : extend({}, this._params, params);\n            return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n        };\n        /**\n         * Returns a copy of this TargetState, using the specified Transition Options.\n         *\n         * @param options the new options to use\n         * @param replace When false (default) the new options will be merged with the current options.\n         *                When true the options will be used instead of the current options.\n         */\n        TargetState.prototype.withOptions = function (options, replace) {\n            if (replace === void 0) { replace = false; }\n            var newOpts = replace ? options : extend({}, this._options, options);\n            return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n        };\n        /** Returns true if the object has a state property that might be a state or state name */\n        TargetState.isDef = function (obj) {\n            return obj && obj.state && (isString(obj.state) || (isObject(obj.state) && isString(obj.state.name)));\n        };\n        return TargetState;\n    }());\n\n    /**\n     * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n     */\n    var PathUtils = /** @class */ (function () {\n        function PathUtils() {\n        }\n        /** Given a PathNode[], create an TargetState */\n        PathUtils.makeTargetState = function (registry, path) {\n            var state = tail(path).state;\n            return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n        };\n        PathUtils.buildPath = function (targetState) {\n            var toParams = targetState.params();\n            return targetState.$state().path.map(function (state) { return new PathNode(state).applyRawParams(toParams); });\n        };\n        /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n        PathUtils.buildToPath = function (fromPath, targetState) {\n            var toPath = PathUtils.buildPath(targetState);\n            if (targetState.options().inherit) {\n                return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n            }\n            return toPath;\n        };\n        /**\n         * Creates ViewConfig objects and adds to nodes.\n         *\n         * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n         */\n        PathUtils.applyViewConfigs = function ($view, path, states) {\n            // Only apply the viewConfigs to the nodes for the given states\n            path\n                .filter(function (node) { return inArray(states, node.state); })\n                .forEach(function (node) {\n                var viewDecls = values(node.state.views || {});\n                var subPath = PathUtils.subPath(path, function (n) { return n === node; });\n                var viewConfigs = viewDecls.map(function (view) { return $view.createViewConfig(subPath, view); });\n                node.views = viewConfigs.reduce(unnestR, []);\n            });\n        };\n        /**\n         * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n         *\n         * For a parameter in a node to be inherited from the from path:\n         * - The toPath's node must have a matching node in the fromPath (by state).\n         * - The parameter name must not be found in the toKeys parameter array.\n         *\n         * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n         * caller, for instance, $state.transitionTo(..., toParams).  If a key was found in toParams,\n         * it is not inherited from the fromPath.\n         */\n        PathUtils.inheritParams = function (fromPath, toPath, toKeys) {\n            if (toKeys === void 0) { toKeys = []; }\n            function nodeParamVals(path, state) {\n                var node = find(path, propEq('state', state));\n                return extend({}, node && node.paramValues);\n            }\n            var noInherit = fromPath\n                .map(function (node) { return node.paramSchema; })\n                .reduce(unnestR, [])\n                .filter(function (param) { return !param.inherit; })\n                .map(prop('id'));\n            /**\n             * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n             * matching node in fromPath.  Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n             */\n            function makeInheritedParamsNode(toNode) {\n                // All param values for the node (may include default key/vals, when key was not found in toParams)\n                var toParamVals = extend({}, toNode && toNode.paramValues);\n                // limited to only those keys found in toParams\n                var incomingParamVals = pick(toParamVals, toKeys);\n                toParamVals = omit(toParamVals, toKeys);\n                var fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n                // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n                var ownParamVals = extend(toParamVals, fromParamVals, incomingParamVals);\n                return new PathNode(toNode.state).applyRawParams(ownParamVals);\n            }\n            // The param keys specified by the incoming toParams\n            return toPath.map(makeInheritedParamsNode);\n        };\n        /**\n         * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n         */\n        PathUtils.treeChanges = function (fromPath, toPath, reloadState) {\n            var max = Math.min(fromPath.length, toPath.length);\n            var keep = 0;\n            var nodesMatch = function (node1, node2) { return node1.equals(node2, PathUtils.nonDynamicParams); };\n            while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n                keep++;\n            }\n            /** Given a retained node, return a new node which uses the to node's param values */\n            function applyToParams(retainedNode, idx) {\n                var cloned = retainedNode.clone();\n                cloned.paramValues = toPath[idx].paramValues;\n                return cloned;\n            }\n            var from, retained, exiting, entering, to;\n            from = fromPath;\n            retained = from.slice(0, keep);\n            exiting = from.slice(keep);\n            // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped\n            var retainedWithToParams = retained.map(applyToParams);\n            entering = toPath.slice(keep);\n            to = retainedWithToParams.concat(entering);\n            return { from: from, to: to, retained: retained, retainedWithToParams: retainedWithToParams, exiting: exiting, entering: entering };\n        };\n        /**\n         * Returns a new path which is: the subpath of the first path which matches the second path.\n         *\n         * The new path starts from root and contains any nodes that match the nodes in the second path.\n         * It stops before the first non-matching node.\n         *\n         * Nodes are compared using their state property and their parameter values.\n         * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n         *\n         * @param pathA the first path\n         * @param pathB the second path\n         * @param paramsFn a function which returns the parameters to consider when comparing\n         *\n         * @returns an array of PathNodes from the first path which match the nodes in the second path\n         */\n        PathUtils.matching = function (pathA, pathB, paramsFn) {\n            var done = false;\n            var tuples = arrayTuples(pathA, pathB);\n            return tuples.reduce(function (matching, _a) {\n                var nodeA = _a[0], nodeB = _a[1];\n                done = done || !nodeA.equals(nodeB, paramsFn);\n                return done ? matching : matching.concat(nodeA);\n            }, []);\n        };\n        /**\n         * Returns true if two paths are identical.\n         *\n         * @param pathA\n         * @param pathB\n         * @param paramsFn a function which returns the parameters to consider when comparing\n         * @returns true if the the states and parameter values for both paths are identical\n         */\n        PathUtils.equals = function (pathA, pathB, paramsFn) {\n            return pathA.length === pathB.length && PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n        };\n        /**\n         * Return a subpath of a path, which stops at the first matching node\n         *\n         * Given an array of nodes, returns a subset of the array starting from the first node,\n         * stopping when the first node matches the predicate.\n         *\n         * @param path a path of [[PathNode]]s\n         * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n         * @returns a subpath up to the matching node, or undefined if no match is found\n         */\n        PathUtils.subPath = function (path, predicate) {\n            var node = find(path, predicate);\n            var elementIdx = path.indexOf(node);\n            return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n        };\n        PathUtils.nonDynamicParams = function (node) {\n            return node.state.parameters({ inherit: false }).filter(function (param) { return !param.dynamic; });\n        };\n        /** Gets the raw parameter values from a path */\n        PathUtils.paramValues = function (path) { return path.reduce(function (acc, node) { return extend(acc, node.paramValues); }, {}); };\n        return PathUtils;\n    }());\n\n    var resolvePolicies = {\n        when: {\n            LAZY: 'LAZY',\n            EAGER: 'EAGER',\n        },\n        async: {\n            WAIT: 'WAIT',\n            NOWAIT: 'NOWAIT',\n        },\n    };\n\n    // TODO: explicitly make this user configurable\n    var defaultResolvePolicy = {\n        when: 'LAZY',\n        async: 'WAIT',\n    };\n    /**\n     * The basic building block for the resolve system.\n     *\n     * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n     * and the unwrapped-when-complete (.data) result of the resolveFn.\n     *\n     * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n     * resolveFn) and returns the resulting promise.\n     *\n     * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n     * parameter to those fns.\n     */\n    var Resolvable = /** @class */ (function () {\n        function Resolvable(arg1, resolveFn, deps, policy, data) {\n            this.resolved = false;\n            this.promise = undefined;\n            if (arg1 instanceof Resolvable) {\n                extend(this, arg1);\n            }\n            else if (isFunction(resolveFn)) {\n                if (isNullOrUndefined(arg1))\n                    throw new Error('new Resolvable(): token argument is required');\n                if (!isFunction(resolveFn))\n                    throw new Error('new Resolvable(): resolveFn argument must be a function');\n                this.token = arg1;\n                this.policy = policy;\n                this.resolveFn = resolveFn;\n                this.deps = deps || [];\n                this.data = data;\n                this.resolved = data !== undefined;\n                this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n            }\n            else if (isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) {\n                var literal = arg1;\n                return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n            }\n        }\n        Resolvable.prototype.getPolicy = function (state) {\n            var thisPolicy = this.policy || {};\n            var statePolicy = (state && state.resolvePolicy) || {};\n            return {\n                when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n                async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n            };\n        };\n        /**\n         * Asynchronously resolve this Resolvable's data\n         *\n         * Given a ResolveContext that this Resolvable is found in:\n         * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n         * and update the Resolvable's state\n         */\n        Resolvable.prototype.resolve = function (resolveContext, trans) {\n            var _this = this;\n            var $q = services.$q;\n            // Gets all dependencies from ResolveContext and wait for them to be resolved\n            var getResolvableDependencies = function () {\n                return $q.all(resolveContext.getDependencies(_this).map(function (resolvable) { return resolvable.get(resolveContext, trans); }));\n            };\n            // Invokes the resolve function passing the resolved dependencies as arguments\n            var invokeResolveFn = function (resolvedDeps) { return _this.resolveFn.apply(null, resolvedDeps); };\n            var node = resolveContext.findNode(this);\n            var state = node && node.state;\n            var asyncPolicy = this.getPolicy(state).async;\n            var customAsyncPolicy = isFunction(asyncPolicy) ? asyncPolicy : identity;\n            // After the final value has been resolved, update the state of the Resolvable\n            var applyResolvedValue = function (resolvedValue) {\n                _this.data = resolvedValue;\n                _this.resolved = true;\n                _this.resolveFn = null;\n                trace.traceResolvableResolved(_this, trans);\n                return _this.data;\n            };\n            // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n            return (this.promise = $q\n                .when()\n                .then(getResolvableDependencies)\n                .then(invokeResolveFn)\n                .then(customAsyncPolicy)\n                .then(applyResolvedValue));\n        };\n        /**\n         * Gets a promise for this Resolvable's data.\n         *\n         * Fetches the data and returns a promise.\n         * Returns the existing promise if it has already been fetched once.\n         */\n        Resolvable.prototype.get = function (resolveContext, trans) {\n            return this.promise || this.resolve(resolveContext, trans);\n        };\n        Resolvable.prototype.toString = function () {\n            return \"Resolvable(token: \" + stringify(this.token) + \", requires: [\" + this.deps.map(stringify) + \"])\";\n        };\n        Resolvable.prototype.clone = function () {\n            return new Resolvable(this);\n        };\n        Resolvable.fromData = function (token, data) { return new Resolvable(token, function () { return data; }, null, null, data); };\n        return Resolvable;\n    }());\n\n    var whens = resolvePolicies.when;\n    var ALL_WHENS = [whens.EAGER, whens.LAZY];\n    var EAGER_WHENS = [whens.EAGER];\n    // tslint:disable-next-line:no-inferrable-types\n    var NATIVE_INJECTOR_TOKEN = 'Native Injector';\n    /**\n     * Encapsulates Dependency Injection for a path of nodes\n     *\n     * UI-Router states are organized as a tree.\n     * A nested state has a path of ancestors to the root of the tree.\n     * When a state is being activated, each element in the path is wrapped as a [[PathNode]].\n     * A `PathNode` is a stateful object that holds things like parameters and resolvables for the state being activated.\n     *\n     * The ResolveContext closes over the [[PathNode]]s, and provides DI for the last node in the path.\n     */\n    var ResolveContext = /** @class */ (function () {\n        function ResolveContext(_path) {\n            this._path = _path;\n        }\n        /** Gets all the tokens found in the resolve context, de-duplicated */\n        ResolveContext.prototype.getTokens = function () {\n            return this._path.reduce(function (acc, node) { return acc.concat(node.resolvables.map(function (r) { return r.token; })); }, []).reduce(uniqR, []);\n        };\n        /**\n         * Gets the Resolvable that matches the token\n         *\n         * Gets the last Resolvable that matches the token in this context, or undefined.\n         * Throws an error if it doesn't exist in the ResolveContext\n         */\n        ResolveContext.prototype.getResolvable = function (token) {\n            var matching = this._path\n                .map(function (node) { return node.resolvables; })\n                .reduce(unnestR, [])\n                .filter(function (r) { return r.token === token; });\n            return tail(matching);\n        };\n        /** Returns the [[ResolvePolicy]] for the given [[Resolvable]] */\n        ResolveContext.prototype.getPolicy = function (resolvable) {\n            var node = this.findNode(resolvable);\n            return resolvable.getPolicy(node.state);\n        };\n        /**\n         * Returns a ResolveContext that includes a portion of this one\n         *\n         * Given a state, this method creates a new ResolveContext from this one.\n         * The new context starts at the first node (root) and stops at the node for the `state` parameter.\n         *\n         * #### Why\n         *\n         * When a transition is created, the nodes in the \"To Path\" are injected from a ResolveContext.\n         * A ResolveContext closes over a path of [[PathNode]]s and processes the resolvables.\n         * The \"To State\" can inject values from its own resolvables, as well as those from all its ancestor state's (node's).\n         * This method is used to create a narrower context when injecting ancestor nodes.\n         *\n         * @example\n         * `let ABCD = new ResolveContext([A, B, C, D]);`\n         *\n         * Given a path `[A, B, C, D]`, where `A`, `B`, `C` and `D` are nodes for states `a`, `b`, `c`, `d`:\n         * When injecting `D`, `D` should have access to all resolvables from `A`, `B`, `C`, `D`.\n         * However, `B` should only be able to access resolvables from `A`, `B`.\n         *\n         * When resolving for the `B` node, first take the full \"To Path\" Context `[A,B,C,D]` and limit to the subpath `[A,B]`.\n         * `let AB = ABCD.subcontext(a)`\n         */\n        ResolveContext.prototype.subContext = function (state) {\n            return new ResolveContext(PathUtils.subPath(this._path, function (node) { return node.state === state; }));\n        };\n        /**\n         * Adds Resolvables to the node that matches the state\n         *\n         * This adds a [[Resolvable]] (generally one created on the fly; not declared on a [[StateDeclaration.resolve]] block).\n         * The resolvable is added to the node matching the `state` parameter.\n         *\n         * These new resolvables are not automatically fetched.\n         * The calling code should either fetch them, fetch something that depends on them,\n         * or rely on [[resolvePath]] being called when some state is being entered.\n         *\n         * Note: each resolvable's [[ResolvePolicy]] is merged with the state's policy, and the global default.\n         *\n         * @param newResolvables the new Resolvables\n         * @param state Used to find the node to put the resolvable on\n         */\n        ResolveContext.prototype.addResolvables = function (newResolvables, state) {\n            var node = find(this._path, propEq('state', state));\n            var keys = newResolvables.map(function (r) { return r.token; });\n            node.resolvables = node.resolvables.filter(function (r) { return keys.indexOf(r.token) === -1; }).concat(newResolvables);\n        };\n        /**\n         * Returns a promise for an array of resolved path Element promises\n         *\n         * @param when\n         * @param trans\n         * @returns {Promise<any>|any}\n         */\n        ResolveContext.prototype.resolvePath = function (when, trans) {\n            var _this = this;\n            if (when === void 0) { when = 'LAZY'; }\n            // This option determines which 'when' policy Resolvables we are about to fetch.\n            var whenOption = inArray(ALL_WHENS, when) ? when : 'LAZY';\n            // If the caller specified EAGER, only the EAGER Resolvables are fetched.\n            // if the caller specified LAZY, both EAGER and LAZY Resolvables are fetched.`\n            var matchedWhens = whenOption === resolvePolicies.when.EAGER ? EAGER_WHENS : ALL_WHENS;\n            // get the subpath to the state argument, if provided\n            trace.traceResolvePath(this._path, when, trans);\n            var matchesPolicy = function (acceptedVals, whenOrAsync) { return function (resolvable) {\n                return inArray(acceptedVals, _this.getPolicy(resolvable)[whenOrAsync]);\n            }; };\n            // Trigger all the (matching) Resolvables in the path\n            // Reduce all the \"WAIT\" Resolvables into an array\n            var promises = this._path.reduce(function (acc, node) {\n                var nodeResolvables = node.resolvables.filter(matchesPolicy(matchedWhens, 'when'));\n                var nowait = nodeResolvables.filter(matchesPolicy(['NOWAIT'], 'async'));\n                var wait = nodeResolvables.filter(not(matchesPolicy(['NOWAIT'], 'async')));\n                // For the matching Resolvables, start their async fetch process.\n                var subContext = _this.subContext(node.state);\n                var getResult = function (r) {\n                    return r\n                        .get(subContext, trans)\n                        // Return a tuple that includes the Resolvable's token\n                        .then(function (value) { return ({ token: r.token, value: value }); });\n                };\n                nowait.forEach(getResult);\n                return acc.concat(wait.map(getResult));\n            }, []);\n            // Wait for all the \"WAIT\" resolvables\n            return services.$q.all(promises);\n        };\n        ResolveContext.prototype.injector = function () {\n            return this._injector || (this._injector = new UIInjectorImpl(this));\n        };\n        ResolveContext.prototype.findNode = function (resolvable) {\n            return find(this._path, function (node) { return inArray(node.resolvables, resolvable); });\n        };\n        /**\n         * Gets the async dependencies of a Resolvable\n         *\n         * Given a Resolvable, returns its dependencies as a Resolvable[]\n         */\n        ResolveContext.prototype.getDependencies = function (resolvable) {\n            var _this = this;\n            var node = this.findNode(resolvable);\n            // Find which other resolvables are \"visible\" to the `resolvable` argument\n            // subpath stopping at resolvable's node, or the whole path (if the resolvable isn't in the path)\n            var subPath = PathUtils.subPath(this._path, function (x) { return x === node; }) || this._path;\n            var availableResolvables = subPath\n                .reduce(function (acc, _node) { return acc.concat(_node.resolvables); }, []) // all of subpath's resolvables\n                .filter(function (res) { return res !== resolvable; }); // filter out the `resolvable` argument\n            var getDependency = function (token) {\n                var matching = availableResolvables.filter(function (r) { return r.token === token; });\n                if (matching.length)\n                    return tail(matching);\n                var fromInjector = _this.injector().getNative(token);\n                if (isUndefined(fromInjector)) {\n                    throw new Error('Could not find Dependency Injection token: ' + stringify(token));\n                }\n                return new Resolvable(token, function () { return fromInjector; }, [], fromInjector);\n            };\n            return resolvable.deps.map(getDependency);\n        };\n        return ResolveContext;\n    }());\n    /** @internal */\n    var UIInjectorImpl = /** @class */ (function () {\n        function UIInjectorImpl(context) {\n            this.context = context;\n            this.native = this.get(NATIVE_INJECTOR_TOKEN) || services.$injector;\n        }\n        UIInjectorImpl.prototype.get = function (token) {\n            var resolvable = this.context.getResolvable(token);\n            if (resolvable) {\n                if (this.context.getPolicy(resolvable).async === 'NOWAIT') {\n                    return resolvable.get(this.context);\n                }\n                if (!resolvable.resolved) {\n                    throw new Error('Resolvable async .get() not complete:' + stringify(resolvable.token));\n                }\n                return resolvable.data;\n            }\n            return this.getNative(token);\n        };\n        UIInjectorImpl.prototype.getAsync = function (token) {\n            var resolvable = this.context.getResolvable(token);\n            if (resolvable)\n                return resolvable.get(this.context);\n            return services.$q.when(this.native.get(token));\n        };\n        UIInjectorImpl.prototype.getNative = function (token) {\n            return this.native && this.native.get(token);\n        };\n        return UIInjectorImpl;\n    }());\n\n    var parseUrl = function (url) {\n        if (!isString(url))\n            return false;\n        var root = url.charAt(0) === '^';\n        return { val: root ? url.substring(1) : url, root: root };\n    };\n    function nameBuilder(state) {\n        return state.name;\n    }\n    function selfBuilder(state) {\n        state.self.$$state = function () { return state; };\n        return state.self;\n    }\n    function dataBuilder(state) {\n        if (state.parent && state.parent.data) {\n            state.data = state.self.data = inherit(state.parent.data, state.data);\n        }\n        return state.data;\n    }\n    var getUrlBuilder = function ($urlMatcherFactoryProvider, root) {\n        return function urlBuilder(stateObject) {\n            var stateDec = stateObject.self;\n            // For future states, i.e., states whose name ends with `.**`,\n            // match anything that starts with the url prefix\n            if (stateDec && stateDec.url && stateDec.name && stateDec.name.match(/\\.\\*\\*$/)) {\n                var newStateDec = {};\n                copy(stateDec, newStateDec);\n                newStateDec.url += '{remainder:any}'; // match any path (.*)\n                stateDec = newStateDec;\n            }\n            var parent = stateObject.parent;\n            var parsed = parseUrl(stateDec.url);\n            var url = !parsed ? stateDec.url : $urlMatcherFactoryProvider.compile(parsed.val, { state: stateDec });\n            if (!url)\n                return null;\n            if (!$urlMatcherFactoryProvider.isMatcher(url))\n                throw new Error(\"Invalid url '\" + url + \"' in state '\" + stateObject + \"'\");\n            return parsed && parsed.root ? url : ((parent && parent.navigable) || root()).url.append(url);\n        };\n    };\n    var getNavigableBuilder = function (isRoot) {\n        return function navigableBuilder(state) {\n            return !isRoot(state) && state.url ? state : state.parent ? state.parent.navigable : null;\n        };\n    };\n    var getParamsBuilder = function (paramFactory) {\n        return function paramsBuilder(state) {\n            var makeConfigParam = function (config, id) { return paramFactory.fromConfig(id, null, state.self); };\n            var urlParams = (state.url && state.url.parameters({ inherit: false })) || [];\n            var nonUrlParams = values(mapObj(omit(state.params || {}, urlParams.map(prop('id'))), makeConfigParam));\n            return urlParams\n                .concat(nonUrlParams)\n                .map(function (p) { return [p.id, p]; })\n                .reduce(applyPairs, {});\n        };\n    };\n    function pathBuilder(state) {\n        return state.parent ? state.parent.path.concat(state) : /*root*/ [state];\n    }\n    function includesBuilder(state) {\n        var includes = state.parent ? extend({}, state.parent.includes) : {};\n        includes[state.name] = true;\n        return includes;\n    }\n    /**\n     * This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].\n     *\n     * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n     * validates the `resolve` property and converts it to a [[Resolvable]] array.\n     *\n     * resolve: input value can be:\n     *\n     * {\n     *   // analyzed but not injected\n     *   myFooResolve: function() { return \"myFooData\"; },\n     *\n     *   // function.toString() parsed, \"DependencyName\" dep as string (not min-safe)\n     *   myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },\n     *\n     *   // Array split; \"DependencyName\" dep as string\n     *   myBazResolve: [ \"DependencyName\", function(dep) { return dep.fetchSomethingAsPromise() },\n     *\n     *   // Array split; DependencyType dep as token (compared using ===)\n     *   myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },\n     *\n     *   // val.$inject used as deps\n     *   // where:\n     *   //     corgeResolve.$inject = [\"DependencyName\"];\n     *   //     function corgeResolve(dep) { dep.fetchSometingAsPromise() }\n     *   // then \"DependencyName\" dep as string\n     *   myCorgeResolve: corgeResolve,\n     *\n     *  // inject service by name\n     *  // When a string is found, desugar creating a resolve that injects the named service\n     *   myGraultResolve: \"SomeService\"\n     * }\n     *\n     * or:\n     *\n     * [\n     *   new Resolvable(\"myFooResolve\", function() { return \"myFooData\" }),\n     *   new Resolvable(\"myBarResolve\", function(dep) { return dep.fetchSomethingAsPromise() }, [ \"DependencyName\" ]),\n     *   { provide: \"myBazResolve\", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ \"DependencyName\" ] }\n     * ]\n     */\n    function resolvablesBuilder(state) {\n        /** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */\n        var objects2Tuples = function (resolveObj, resolvePolicies) {\n            return Object.keys(resolveObj || {}).map(function (token) { return ({\n                token: token,\n                val: resolveObj[token],\n                deps: undefined,\n                policy: resolvePolicies[token],\n            }); });\n        };\n        /** fetch DI annotations from a function or ng1-style array */\n        var annotate = function (fn) {\n            var $injector = services.$injector;\n            // ng1 doesn't have an $injector until runtime.\n            // If the $injector doesn't exist, use \"deferred\" literal as a\n            // marker indicating they should be annotated when runtime starts\n            return fn['$inject'] || ($injector && $injector.annotate(fn, $injector.strictDi)) || 'deferred';\n        };\n        /** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */\n        var isResolveLiteral = function (obj) { return !!(obj.token && obj.resolveFn); };\n        /** true if the object looks like a provide literal, or a ng2 Provider */\n        var isLikeNg2Provider = function (obj) {\n            return !!((obj.provide || obj.token) && (obj.useValue || obj.useFactory || obj.useExisting || obj.useClass));\n        };\n        /** true if the object looks like a tuple from obj2Tuples */\n        var isTupleFromObj = function (obj) {\n            return !!(obj && obj.val && (isString(obj.val) || isArray(obj.val) || isFunction(obj.val)));\n        };\n        /** extracts the token from a Provider or provide literal */\n        var getToken = function (p) { return p.provide || p.token; };\n        // prettier-ignore: Given a literal resolve or provider object, returns a Resolvable\n        var literal2Resolvable = pattern([\n            [prop('resolveFn'), function (p) { return new Resolvable(getToken(p), p.resolveFn, p.deps, p.policy); }],\n            [prop('useFactory'), function (p) { return new Resolvable(getToken(p), p.useFactory, p.deps || p.dependencies, p.policy); }],\n            [prop('useClass'), function (p) { return new Resolvable(getToken(p), function () { return new p.useClass(); }, [], p.policy); }],\n            [prop('useValue'), function (p) { return new Resolvable(getToken(p), function () { return p.useValue; }, [], p.policy, p.useValue); }],\n            [prop('useExisting'), function (p) { return new Resolvable(getToken(p), identity, [p.useExisting], p.policy); }],\n        ]);\n        // prettier-ignore\n        var tuple2Resolvable = pattern([\n            [pipe(prop('val'), isString), function (tuple) { return new Resolvable(tuple.token, identity, [tuple.val], tuple.policy); }],\n            [pipe(prop('val'), isArray), function (tuple) { return new Resolvable(tuple.token, tail(tuple.val), tuple.val.slice(0, -1), tuple.policy); }],\n            [pipe(prop('val'), isFunction), function (tuple) { return new Resolvable(tuple.token, tuple.val, annotate(tuple.val), tuple.policy); }],\n        ]);\n        // prettier-ignore\n        var item2Resolvable = pattern([\n            [is(Resolvable), function (r) { return r; }],\n            [isResolveLiteral, literal2Resolvable],\n            [isLikeNg2Provider, literal2Resolvable],\n            [isTupleFromObj, tuple2Resolvable],\n            [val(true), function (obj) { throw new Error('Invalid resolve value: ' + stringify(obj)); },],\n        ]);\n        // If resolveBlock is already an array, use it as-is.\n        // Otherwise, assume it's an object and convert to an Array of tuples\n        var decl = state.resolve;\n        var items = isArray(decl) ? decl : objects2Tuples(decl, state.resolvePolicy || {});\n        return items.map(item2Resolvable);\n    }\n    /**\n     * A internal global service\n     *\n     * StateBuilder is a factory for the internal [[StateObject]] objects.\n     *\n     * When you register a state with the [[StateRegistry]], you register a plain old javascript object which\n     * conforms to the [[StateDeclaration]] interface.  This factory takes that object and builds the corresponding\n     * [[StateObject]] object, which has an API and is used internally.\n     *\n     * Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function\n     * using the [[builder]] method.\n     */\n    var StateBuilder = /** @class */ (function () {\n        function StateBuilder(matcher, urlMatcherFactory) {\n            this.matcher = matcher;\n            var self = this;\n            var root = function () { return matcher.find(''); };\n            var isRoot = function (state) { return state.name === ''; };\n            function parentBuilder(state) {\n                if (isRoot(state))\n                    return null;\n                return matcher.find(self.parentName(state)) || root();\n            }\n            this.builders = {\n                name: [nameBuilder],\n                self: [selfBuilder],\n                parent: [parentBuilder],\n                data: [dataBuilder],\n                // Build a URLMatcher if necessary, either via a relative or absolute URL\n                url: [getUrlBuilder(urlMatcherFactory, root)],\n                // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n                navigable: [getNavigableBuilder(isRoot)],\n                params: [getParamsBuilder(urlMatcherFactory.paramFactory)],\n                // Each framework-specific ui-router implementation should define its own `views` builder\n                // e.g., src/ng1/statebuilders/views.ts\n                views: [],\n                // Keep a full path from the root down to this state as this is needed for state activation.\n                path: [pathBuilder],\n                // Speed up $state.includes() as it's used a lot\n                includes: [includesBuilder],\n                resolvables: [resolvablesBuilder],\n            };\n        }\n        StateBuilder.prototype.builder = function (name, fn) {\n            var builders = this.builders;\n            var array = builders[name] || [];\n            // Backwards compat: if only one builder exists, return it, else return whole arary.\n            if (isString(name) && !isDefined(fn))\n                return array.length > 1 ? array : array[0];\n            if (!isString(name) || !isFunction(fn))\n                return;\n            builders[name] = array;\n            builders[name].push(fn);\n            return function () { return builders[name].splice(builders[name].indexOf(fn, 1)) && null; };\n        };\n        /**\n         * Builds all of the properties on an essentially blank State object, returning a State object which has all its\n         * properties and API built.\n         *\n         * @param state an uninitialized State object\n         * @returns the built State object\n         */\n        StateBuilder.prototype.build = function (state) {\n            var _a = this, matcher = _a.matcher, builders = _a.builders;\n            var parent = this.parentName(state);\n            if (parent && !matcher.find(parent, undefined, false)) {\n                return null;\n            }\n            for (var key in builders) {\n                if (!builders.hasOwnProperty(key))\n                    continue;\n                var chain = builders[key].reduce(function (parentFn, step) { return function (_state) { return step(_state, parentFn); }; }, noop);\n                state[key] = chain(state);\n            }\n            return state;\n        };\n        StateBuilder.prototype.parentName = function (state) {\n            // name = 'foo.bar.baz.**'\n            var name = state.name || '';\n            // segments = ['foo', 'bar', 'baz', '.**']\n            var segments = name.split('.');\n            // segments = ['foo', 'bar', 'baz']\n            var lastSegment = segments.pop();\n            // segments = ['foo', 'bar'] (ignore .** segment for future states)\n            if (lastSegment === '**')\n                segments.pop();\n            if (segments.length) {\n                if (state.parent) {\n                    throw new Error(\"States that specify the 'parent:' property should not have a '.' in their name (\" + name + \")\");\n                }\n                // 'foo.bar'\n                return segments.join('.');\n            }\n            if (!state.parent)\n                return '';\n            return isString(state.parent) ? state.parent : state.parent.name;\n        };\n        StateBuilder.prototype.name = function (state) {\n            var name = state.name;\n            if (name.indexOf('.') !== -1 || !state.parent)\n                return name;\n            var parentName = isString(state.parent) ? state.parent : state.parent.name;\n            return parentName ? parentName + '.' + name : name;\n        };\n        return StateBuilder;\n    }());\n\n    /**\n     * Internal representation of a UI-Router state.\n     *\n     * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n     *\n     * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n     *\n     * This class prototypally inherits from the corresponding [[StateDeclaration]].\n     * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n     */\n    var StateObject = /** @class */ (function () {\n        /** @deprecated use State.create() */\n        function StateObject(config) {\n            return StateObject.create(config || {});\n        }\n        /**\n         * Create a state object to put the private/internal implementation details onto.\n         * The object's prototype chain looks like:\n         * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n         *\n         * @param stateDecl the user-supplied State Declaration\n         * @returns {StateObject} an internal State object\n         */\n        StateObject.create = function (stateDecl) {\n            stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n            var state = inherit(inherit(stateDecl, StateObject.prototype));\n            stateDecl.$$state = function () { return state; };\n            state.self = stateDecl;\n            state.__stateObjectCache = {\n                nameGlob: Glob.fromString(state.name),\n            };\n            return state;\n        };\n        /**\n         * Returns true if the provided parameter is the same state.\n         *\n         * Compares the identity of the state against the passed value, which is either an object\n         * reference to the actual `State` instance, the original definition object passed to\n         * `$stateProvider.state()`, or the fully-qualified name.\n         *\n         * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n         *        into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n         * @returns Returns `true` if `ref` matches the current `State` instance.\n         */\n        StateObject.prototype.is = function (ref) {\n            return this === ref || this.self === ref || this.fqn() === ref;\n        };\n        /**\n         * @deprecated this does not properly handle dot notation\n         * @returns Returns a dot-separated name of the state.\n         */\n        StateObject.prototype.fqn = function () {\n            if (!this.parent || !(this.parent instanceof this.constructor))\n                return this.name;\n            var name = this.parent.fqn();\n            return name ? name + '.' + this.name : this.name;\n        };\n        /**\n         * Returns the root node of this state's tree.\n         *\n         * @returns The root of this state's tree.\n         */\n        StateObject.prototype.root = function () {\n            return (this.parent && this.parent.root()) || this;\n        };\n        /**\n         * Gets the state's `Param` objects\n         *\n         * Gets the list of [[Param]] objects owned by the state.\n         * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n         * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n         *\n         * @param opts options\n         */\n        StateObject.prototype.parameters = function (opts) {\n            opts = defaults(opts, { inherit: true, matchingKeys: null });\n            var inherited = (opts.inherit && this.parent && this.parent.parameters()) || [];\n            return inherited\n                .concat(values(this.params))\n                .filter(function (param) { return !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id); });\n        };\n        /**\n         * Returns a single [[Param]] that is owned by the state\n         *\n         * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n         * @param id the name of the [[Param]] to return\n         * @param opts options\n         */\n        StateObject.prototype.parameter = function (id, opts) {\n            if (opts === void 0) { opts = {}; }\n            return ((this.url && this.url.parameter(id, opts)) ||\n                find(values(this.params), propEq('id', id)) ||\n                (opts.inherit && this.parent && this.parent.parameter(id)));\n        };\n        StateObject.prototype.toString = function () {\n            return this.fqn();\n        };\n        /** Predicate which returns true if the object is an class with @State() decorator */\n        StateObject.isStateClass = function (stateDecl) {\n            return isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n        };\n        /** Predicate which returns true if the object is a [[StateDeclaration]] object */\n        StateObject.isStateDeclaration = function (obj) { return isFunction(obj['$$state']); };\n        /** Predicate which returns true if the object is an internal [[StateObject]] object */\n        StateObject.isState = function (obj) { return isObject(obj['__stateObjectCache']); };\n        return StateObject;\n    }());\n\n    var StateMatcher = /** @class */ (function () {\n        function StateMatcher(_states) {\n            this._states = _states;\n        }\n        StateMatcher.prototype.isRelative = function (stateName) {\n            stateName = stateName || '';\n            return stateName.indexOf('.') === 0 || stateName.indexOf('^') === 0;\n        };\n        StateMatcher.prototype.find = function (stateOrName, base, matchGlob) {\n            if (matchGlob === void 0) { matchGlob = true; }\n            if (!stateOrName && stateOrName !== '')\n                return undefined;\n            var isStr = isString(stateOrName);\n            var name = isStr ? stateOrName : stateOrName.name;\n            if (this.isRelative(name))\n                name = this.resolvePath(name, base);\n            var state = this._states[name];\n            if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n                return state;\n            }\n            else if (isStr && matchGlob) {\n                var _states = values(this._states);\n                var matches = _states.filter(function (_state) { return _state.__stateObjectCache.nameGlob && _state.__stateObjectCache.nameGlob.matches(name); });\n                if (matches.length > 1) {\n                    safeConsole.error(\"stateMatcher.find: Found multiple matches for \" + name + \" using glob: \", matches.map(function (match) { return match.name; }));\n                }\n                return matches[0];\n            }\n            return undefined;\n        };\n        StateMatcher.prototype.resolvePath = function (name, base) {\n            if (!base)\n                throw new Error(\"No reference point given for path '\" + name + \"'\");\n            var baseState = this.find(base);\n            var splitName = name.split('.');\n            var pathLength = splitName.length;\n            var i = 0, current = baseState;\n            for (; i < pathLength; i++) {\n                if (splitName[i] === '' && i === 0) {\n                    current = baseState;\n                    continue;\n                }\n                if (splitName[i] === '^') {\n                    if (!current.parent)\n                        throw new Error(\"Path '\" + name + \"' not valid for state '\" + baseState.name + \"'\");\n                    current = current.parent;\n                    continue;\n                }\n                break;\n            }\n            var relName = splitName.slice(i).join('.');\n            return current.name + (current.name && relName ? '.' : '') + relName;\n        };\n        return StateMatcher;\n    }());\n\n    var StateQueueManager = /** @class */ (function () {\n        function StateQueueManager(router, states, builder, listeners) {\n            this.router = router;\n            this.states = states;\n            this.builder = builder;\n            this.listeners = listeners;\n            this.queue = [];\n        }\n        StateQueueManager.prototype.dispose = function () {\n            this.queue = [];\n        };\n        StateQueueManager.prototype.register = function (stateDecl) {\n            var queue = this.queue;\n            var state = StateObject.create(stateDecl);\n            var name = state.name;\n            if (!isString(name))\n                throw new Error('State must have a valid name');\n            if (this.states.hasOwnProperty(name) || inArray(queue.map(prop('name')), name))\n                throw new Error(\"State '\" + name + \"' is already defined\");\n            queue.push(state);\n            this.flush();\n            return state;\n        };\n        StateQueueManager.prototype.flush = function () {\n            var _this = this;\n            var _a = this, queue = _a.queue, states = _a.states, builder = _a.builder;\n            var registered = [], // states that got registered\n            orphans = [], // states that don't yet have a parent registered\n            previousQueueLength = {}; // keep track of how long the queue when an orphan was first encountered\n            var getState = function (name) { return _this.states.hasOwnProperty(name) && _this.states[name]; };\n            var notifyListeners = function () {\n                if (registered.length) {\n                    _this.listeners.forEach(function (listener) {\n                        return listener('registered', registered.map(function (s) { return s.self; }));\n                    });\n                }\n            };\n            while (queue.length > 0) {\n                var state = queue.shift();\n                var name_1 = state.name;\n                var result = builder.build(state);\n                var orphanIdx = orphans.indexOf(state);\n                if (result) {\n                    var existingState = getState(name_1);\n                    if (existingState && existingState.name === name_1) {\n                        throw new Error(\"State '\" + name_1 + \"' is already defined\");\n                    }\n                    var existingFutureState = getState(name_1 + '.**');\n                    if (existingFutureState) {\n                        // Remove future state of the same name\n                        this.router.stateRegistry.deregister(existingFutureState);\n                    }\n                    states[name_1] = state;\n                    this.attachRoute(state);\n                    if (orphanIdx >= 0)\n                        orphans.splice(orphanIdx, 1);\n                    registered.push(state);\n                    continue;\n                }\n                var prev = previousQueueLength[name_1];\n                previousQueueLength[name_1] = queue.length;\n                if (orphanIdx >= 0 && prev === queue.length) {\n                    // Wait until two consecutive iterations where no additional states were dequeued successfully.\n                    // throw new Error(`Cannot register orphaned state '${name}'`);\n                    queue.push(state);\n                    notifyListeners();\n                    return states;\n                }\n                else if (orphanIdx < 0) {\n                    orphans.push(state);\n                }\n                queue.push(state);\n            }\n            notifyListeners();\n            return states;\n        };\n        StateQueueManager.prototype.attachRoute = function (state) {\n            if (state.abstract || !state.url)\n                return;\n            var rulesApi = this.router.urlService.rules;\n            rulesApi.rule(rulesApi.urlRuleFactory.create(state));\n        };\n        return StateQueueManager;\n    }());\n\n    /**\n     * A registry for all of the application's [[StateDeclaration]]s\n     *\n     * This API is found at `router.stateRegistry` ([[UIRouter.stateRegistry]])\n     */\n    var StateRegistry = /** @class */ (function () {\n        /** @internal */\n        function StateRegistry(router) {\n            this.router = router;\n            this.states = {};\n            /** @internal */\n            this.listeners = [];\n            this.matcher = new StateMatcher(this.states);\n            this.builder = new StateBuilder(this.matcher, router.urlMatcherFactory);\n            this.stateQueue = new StateQueueManager(router, this.states, this.builder, this.listeners);\n            this._registerRoot();\n        }\n        /** @internal */\n        StateRegistry.prototype._registerRoot = function () {\n            var rootStateDef = {\n                name: '',\n                url: '^',\n                views: null,\n                params: {\n                    '#': { value: null, type: 'hash', dynamic: true },\n                },\n                abstract: true,\n            };\n            var _root = (this._root = this.stateQueue.register(rootStateDef));\n            _root.navigable = null;\n        };\n        /** @internal */\n        StateRegistry.prototype.dispose = function () {\n            var _this = this;\n            this.stateQueue.dispose();\n            this.listeners = [];\n            this.get().forEach(function (state) { return _this.get(state) && _this.deregister(state); });\n        };\n        /**\n         * Listen for a State Registry events\n         *\n         * Adds a callback that is invoked when states are registered or deregistered with the StateRegistry.\n         *\n         * #### Example:\n         * ```js\n         * let allStates = registry.get();\n         *\n         * // Later, invoke deregisterFn() to remove the listener\n         * let deregisterFn = registry.onStatesChanged((event, states) => {\n         *   switch(event) {\n         *     case: 'registered':\n         *       states.forEach(state => allStates.push(state));\n         *       break;\n         *     case: 'deregistered':\n         *       states.forEach(state => {\n         *         let idx = allStates.indexOf(state);\n         *         if (idx !== -1) allStates.splice(idx, 1);\n         *       });\n         *       break;\n         *   }\n         * });\n         * ```\n         *\n         * @param listener a callback function invoked when the registered states changes.\n         *        The function receives two parameters, `event` and `state`.\n         *        See [[StateRegistryListener]]\n         * @return a function that deregisters the listener\n         */\n        StateRegistry.prototype.onStatesChanged = function (listener) {\n            this.listeners.push(listener);\n            return function deregisterListener() {\n                removeFrom(this.listeners)(listener);\n            }.bind(this);\n        };\n        /**\n         * Gets the implicit root state\n         *\n         * Gets the root of the state tree.\n         * The root state is implicitly created by UI-Router.\n         * Note: this returns the internal [[StateObject]] representation, not a [[StateDeclaration]]\n         *\n         * @return the root [[StateObject]]\n         */\n        StateRegistry.prototype.root = function () {\n            return this._root;\n        };\n        /**\n         * Adds a state to the registry\n         *\n         * Registers a [[StateDeclaration]] or queues it for registration.\n         *\n         * Note: a state will be queued if the state's parent isn't yet registered.\n         *\n         * @param stateDefinition the definition of the state to register.\n         * @returns the internal [[StateObject]] object.\n         *          If the state was successfully registered, then the object is fully built (See: [[StateBuilder]]).\n         *          If the state was only queued, then the object is not fully built.\n         */\n        StateRegistry.prototype.register = function (stateDefinition) {\n            return this.stateQueue.register(stateDefinition);\n        };\n        /** @internal */\n        StateRegistry.prototype._deregisterTree = function (state) {\n            var _this = this;\n            var all = this.get().map(function (s) { return s.$$state(); });\n            var getChildren = function (states) {\n                var _children = all.filter(function (s) { return states.indexOf(s.parent) !== -1; });\n                return _children.length === 0 ? _children : _children.concat(getChildren(_children));\n            };\n            var children = getChildren([state]);\n            var deregistered = [state].concat(children).reverse();\n            deregistered.forEach(function (_state) {\n                var rulesApi = _this.router.urlService.rules;\n                // Remove URL rule\n                rulesApi\n                    .rules()\n                    .filter(propEq('state', _state))\n                    .forEach(function (rule) { return rulesApi.removeRule(rule); });\n                // Remove state from registry\n                delete _this.states[_state.name];\n            });\n            return deregistered;\n        };\n        /**\n         * Removes a state from the registry\n         *\n         * This removes a state from the registry.\n         * If the state has children, they are are also removed from the registry.\n         *\n         * @param stateOrName the state's name or object representation\n         * @returns {StateObject[]} a list of removed states\n         */\n        StateRegistry.prototype.deregister = function (stateOrName) {\n            var _state = this.get(stateOrName);\n            if (!_state)\n                throw new Error(\"Can't deregister state; not found: \" + stateOrName);\n            var deregisteredStates = this._deregisterTree(_state.$$state());\n            this.listeners.forEach(function (listener) {\n                return listener('deregistered', deregisteredStates.map(function (s) { return s.self; }));\n            });\n            return deregisteredStates;\n        };\n        StateRegistry.prototype.get = function (stateOrName, base) {\n            var _this = this;\n            if (arguments.length === 0)\n                return Object.keys(this.states).map(function (name) { return _this.states[name].self; });\n            var found = this.matcher.find(stateOrName, base);\n            return (found && found.self) || null;\n        };\n        /**\n         * Registers a [[BuilderFunction]] for a specific [[StateObject]] property (e.g., `parent`, `url`, or `path`).\n         * More than one BuilderFunction can be registered for a given property.\n         *\n         * The BuilderFunction(s) will be used to define the property on any subsequently built [[StateObject]] objects.\n         *\n         * @param property The name of the State property being registered for.\n         * @param builderFunction The BuilderFunction which will be used to build the State property\n         * @returns a function which deregisters the BuilderFunction\n         */\n        StateRegistry.prototype.decorator = function (property, builderFunction) {\n            return this.builder.builder(property, builderFunction);\n        };\n        return StateRegistry;\n    }());\n\n    (function (TransitionHookPhase) {\n        TransitionHookPhase[TransitionHookPhase[\"CREATE\"] = 0] = \"CREATE\";\n        TransitionHookPhase[TransitionHookPhase[\"BEFORE\"] = 1] = \"BEFORE\";\n        TransitionHookPhase[TransitionHookPhase[\"RUN\"] = 2] = \"RUN\";\n        TransitionHookPhase[TransitionHookPhase[\"SUCCESS\"] = 3] = \"SUCCESS\";\n        TransitionHookPhase[TransitionHookPhase[\"ERROR\"] = 4] = \"ERROR\";\n    })(exports.TransitionHookPhase || (exports.TransitionHookPhase = {}));\n\n    (function (TransitionHookScope) {\n        TransitionHookScope[TransitionHookScope[\"TRANSITION\"] = 0] = \"TRANSITION\";\n        TransitionHookScope[TransitionHookScope[\"STATE\"] = 1] = \"STATE\";\n    })(exports.TransitionHookScope || (exports.TransitionHookScope = {}));\n\n    var defaultOptions = {\n        current: noop,\n        transition: null,\n        traceData: {},\n        bind: null,\n    };\n    var TransitionHook = /** @class */ (function () {\n        function TransitionHook(transition, stateContext, registeredHook, options) {\n            var _this = this;\n            this.transition = transition;\n            this.stateContext = stateContext;\n            this.registeredHook = registeredHook;\n            this.options = options;\n            this.isSuperseded = function () { return _this.type.hookPhase === exports.TransitionHookPhase.RUN && !_this.options.transition.isActive(); };\n            this.options = defaults(options, defaultOptions);\n            this.type = registeredHook.eventType;\n        }\n        /**\n         * Chains together an array of TransitionHooks.\n         *\n         * Given a list of [[TransitionHook]] objects, chains them together.\n         * Each hook is invoked after the previous one completes.\n         *\n         * #### Example:\n         * ```js\n         * var hooks: TransitionHook[] = getHooks();\n         * let promise: Promise<any> = TransitionHook.chain(hooks);\n         *\n         * promise.then(handleSuccess, handleError);\n         * ```\n         *\n         * @param hooks the list of hooks to chain together\n         * @param waitFor if provided, the chain is `.then()`'ed off this promise\n         * @returns a `Promise` for sequentially invoking the hooks (in order)\n         */\n        TransitionHook.chain = function (hooks, waitFor) {\n            // Chain the next hook off the previous\n            var createHookChainR = function (prev, nextHook) { return prev.then(function () { return nextHook.invokeHook(); }); };\n            return hooks.reduce(createHookChainR, waitFor || services.$q.when());\n        };\n        /**\n         * Invokes all the provided TransitionHooks, in order.\n         * Each hook's return value is checked.\n         * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n         * If no hook returns a promise, then all hooks are processed synchronously.\n         *\n         * @param hooks the list of TransitionHooks to invoke\n         * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n         *\n         * @returns a promise for the async result, or the result of the callback\n         */\n        TransitionHook.invokeHooks = function (hooks, doneCallback) {\n            for (var idx = 0; idx < hooks.length; idx++) {\n                var hookResult = hooks[idx].invokeHook();\n                if (isPromise(hookResult)) {\n                    var remainingHooks = hooks.slice(idx + 1);\n                    return TransitionHook.chain(remainingHooks, hookResult).then(doneCallback);\n                }\n            }\n            return doneCallback();\n        };\n        /**\n         * Run all TransitionHooks, ignoring their return value.\n         */\n        TransitionHook.runAllHooks = function (hooks) {\n            hooks.forEach(function (hook) { return hook.invokeHook(); });\n        };\n        TransitionHook.prototype.logError = function (err) {\n            this.transition.router.stateService.defaultErrorHandler()(err);\n        };\n        TransitionHook.prototype.invokeHook = function () {\n            var _this = this;\n            var hook = this.registeredHook;\n            if (hook._deregistered)\n                return;\n            var notCurrent = this.getNotCurrentRejection();\n            if (notCurrent)\n                return notCurrent;\n            var options = this.options;\n            trace.traceHookInvocation(this, this.transition, options);\n            var invokeCallback = function () { return hook.callback.call(options.bind, _this.transition, _this.stateContext); };\n            var normalizeErr = function (err) { return Rejection.normalize(err).toPromise(); };\n            var handleError = function (err) { return hook.eventType.getErrorHandler(_this)(err); };\n            var handleResult = function (result) { return hook.eventType.getResultHandler(_this)(result); };\n            try {\n                var result = invokeCallback();\n                if (!this.type.synchronous && isPromise(result)) {\n                    return result.catch(normalizeErr).then(handleResult, handleError);\n                }\n                else {\n                    return handleResult(result);\n                }\n            }\n            catch (err) {\n                // If callback throws (synchronously)\n                return handleError(Rejection.normalize(err));\n            }\n            finally {\n                if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n                    hook.deregister();\n                }\n            }\n        };\n        /**\n         * This method handles the return value of a Transition Hook.\n         *\n         * A hook can return false (cancel), a TargetState (redirect),\n         * or a promise (which may later resolve to false or a redirect)\n         *\n         * This also handles \"transition superseded\" -- when a new transition\n         * was started while the hook was still running\n         */\n        TransitionHook.prototype.handleHookResult = function (result) {\n            var _this = this;\n            var notCurrent = this.getNotCurrentRejection();\n            if (notCurrent)\n                return notCurrent;\n            // Hook returned a promise\n            if (isPromise(result)) {\n                // Wait for the promise, then reprocess with the resulting value\n                return result.then(function (val) { return _this.handleHookResult(val); });\n            }\n            trace.traceHookResult(result, this.transition, this.options);\n            // Hook returned false\n            if (result === false) {\n                // Abort this Transition\n                return Rejection.aborted('Hook aborted transition').toPromise();\n            }\n            var isTargetState = is(TargetState);\n            // hook returned a TargetState\n            if (isTargetState(result)) {\n                // Halt the current Transition and redirect (a new Transition) to the TargetState.\n                return Rejection.redirected(result).toPromise();\n            }\n        };\n        /**\n         * Return a Rejection promise if the transition is no longer current due\n         * to a stopped router (disposed), or a new transition has started and superseded this one.\n         */\n        TransitionHook.prototype.getNotCurrentRejection = function () {\n            var router = this.transition.router;\n            // The router is stopped\n            if (router._disposed) {\n                return Rejection.aborted(\"UIRouter instance #\" + router.$id + \" has been stopped (disposed)\").toPromise();\n            }\n            if (this.transition._aborted) {\n                return Rejection.aborted().toPromise();\n            }\n            // This transition is no longer current.\n            // Another transition started while this hook was still running.\n            if (this.isSuperseded()) {\n                // Abort this transition\n                return Rejection.superseded(this.options.current()).toPromise();\n            }\n        };\n        TransitionHook.prototype.toString = function () {\n            var _a = this, options = _a.options, registeredHook = _a.registeredHook;\n            var event = parse('traceData.hookType')(options) || 'internal', context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown', name = fnToString(registeredHook.callback);\n            return event + \" context: \" + context + \", \" + maxLength(200, name);\n        };\n        /**\n         * These GetResultHandler(s) are used by [[invokeHook]] below\n         * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n         */\n        TransitionHook.HANDLE_RESULT = function (hook) { return function (result) {\n            return hook.handleHookResult(result);\n        }; };\n        /**\n         * If the result is a promise rejection, log it.\n         * Otherwise, ignore the result.\n         */\n        TransitionHook.LOG_REJECTED_RESULT = function (hook) { return function (result) {\n            isPromise(result) && result.catch(function (err) { return hook.logError(Rejection.normalize(err)); });\n            return undefined;\n        }; };\n        /**\n         * These GetErrorHandler(s) are used by [[invokeHook]] below\n         * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n         */\n        TransitionHook.LOG_ERROR = function (hook) { return function (error) { return hook.logError(error); }; };\n        TransitionHook.REJECT_ERROR = function (hook) { return function (error) { return silentRejection(error); }; };\n        TransitionHook.THROW_ERROR = function (hook) { return function (error) {\n            throw error;\n        }; };\n        return TransitionHook;\n    }());\n\n    /**\n     * Determines if the given state matches the matchCriteria\n     *\n     * @internal\n     *\n     * @param state a State Object to test against\n     * @param criterion\n     * - If a string, matchState uses the string as a glob-matcher against the state name\n     * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n     *   and returns a positive match if any of the globs match.\n     * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n     * @returns {boolean}\n     */\n    function matchState(state, criterion, transition) {\n        var toMatch = isString(criterion) ? [criterion] : criterion;\n        function matchGlobs(_state) {\n            var globStrings = toMatch;\n            for (var i = 0; i < globStrings.length; i++) {\n                var glob = new Glob(globStrings[i]);\n                if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n                    return true;\n                }\n            }\n            return false;\n        }\n        var matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n        return !!matchFn(state, transition);\n    }\n    /**\n     * The registration data for a registered transition hook\n     */\n    var RegisteredHook = /** @class */ (function () {\n        function RegisteredHook(tranSvc, eventType, callback, matchCriteria, removeHookFromRegistry, options) {\n            if (options === void 0) { options = {}; }\n            this.tranSvc = tranSvc;\n            this.eventType = eventType;\n            this.callback = callback;\n            this.matchCriteria = matchCriteria;\n            this.removeHookFromRegistry = removeHookFromRegistry;\n            this.invokeCount = 0;\n            this._deregistered = false;\n            this.priority = options.priority || 0;\n            this.bind = options.bind || null;\n            this.invokeLimit = options.invokeLimit;\n        }\n        /**\n         * Gets the matching [[PathNode]]s\n         *\n         * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n         * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n         *\n         * Returning `null` is significant to distinguish between the default\n         * \"match-all criterion value\" of `true` compared to a `() => true` function,\n         * when the nodes is an empty array.\n         *\n         * This is useful to allow a transition match criteria of `entering: true`\n         * to still match a transition, even when `entering === []`.  Contrast that\n         * with `entering: (state) => true` which only matches when a state is actually\n         * being entered.\n         */\n        RegisteredHook.prototype._matchingNodes = function (nodes, criterion, transition) {\n            if (criterion === true)\n                return nodes;\n            var matching = nodes.filter(function (node) { return matchState(node.state, criterion, transition); });\n            return matching.length ? matching : null;\n        };\n        /**\n         * Gets the default match criteria (all `true`)\n         *\n         * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n         *\n         * ```js\n         * {\n         *   to: true,\n         *   from: true,\n         *   entering: true,\n         *   exiting: true,\n         *   retained: true,\n         * }\n         */\n        RegisteredHook.prototype._getDefaultMatchCriteria = function () {\n            return mapObj(this.tranSvc._pluginapi._getPathTypes(), function () { return true; });\n        };\n        /**\n         * Gets matching nodes as [[IMatchingNodes]]\n         *\n         * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n         *\n         * ```js\n         * let matches: IMatchingNodes = {\n         *   to:       _matchingNodes([tail(treeChanges.to)],   mc.to),\n         *   from:     _matchingNodes([tail(treeChanges.from)], mc.from),\n         *   exiting:  _matchingNodes(treeChanges.exiting,      mc.exiting),\n         *   retained: _matchingNodes(treeChanges.retained,     mc.retained),\n         *   entering: _matchingNodes(treeChanges.entering,     mc.entering),\n         * };\n         * ```\n         */\n        RegisteredHook.prototype._getMatchingNodes = function (treeChanges, transition) {\n            var _this = this;\n            var criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n            var paths = values(this.tranSvc._pluginapi._getPathTypes());\n            return paths.reduce(function (mn, pathtype) {\n                // STATE scope criteria matches against every node in the path.\n                // TRANSITION scope criteria matches against only the last node in the path\n                var isStateHook = pathtype.scope === exports.TransitionHookScope.STATE;\n                var path = treeChanges[pathtype.name] || [];\n                var nodes = isStateHook ? path : [tail(path)];\n                mn[pathtype.name] = _this._matchingNodes(nodes, criteria[pathtype.name], transition);\n                return mn;\n            }, {});\n        };\n        /**\n         * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n         *\n         * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n         * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n         */\n        RegisteredHook.prototype.matches = function (treeChanges, transition) {\n            var matches = this._getMatchingNodes(treeChanges, transition);\n            // Check if all the criteria matched the TreeChanges object\n            var allMatched = values(matches).every(identity);\n            return allMatched ? matches : null;\n        };\n        RegisteredHook.prototype.deregister = function () {\n            this.removeHookFromRegistry(this);\n            this._deregistered = true;\n        };\n        return RegisteredHook;\n    }());\n    /** Return a registration function of the requested type. */\n    function makeEvent(registry, transitionService, eventType) {\n        // Create the object which holds the registered transition hooks.\n        var _registeredHooks = (registry._registeredHooks = registry._registeredHooks || {});\n        var hooks = (_registeredHooks[eventType.name] = []);\n        var removeHookFn = removeFrom(hooks);\n        // Create hook registration function on the IHookRegistry for the event\n        registry[eventType.name] = hookRegistrationFn;\n        function hookRegistrationFn(matchObject, callback, options) {\n            if (options === void 0) { options = {}; }\n            var registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n            hooks.push(registeredHook);\n            return registeredHook.deregister.bind(registeredHook);\n        }\n        return hookRegistrationFn;\n    }\n\n    /**\n     * This class returns applicable TransitionHooks for a specific Transition instance.\n     *\n     * Hooks ([[RegisteredHook]]) may be registered globally, e.g., $transitions.onEnter(...), or locally, e.g.\n     * myTransition.onEnter(...).  The HookBuilder finds matching RegisteredHooks (where the match criteria is\n     * determined by the type of hook)\n     *\n     * The HookBuilder also converts RegisteredHooks objects to TransitionHook objects, which are used to run a Transition.\n     *\n     * The HookBuilder constructor is given the $transitions service and a Transition instance.  Thus, a HookBuilder\n     * instance may only be used for one specific Transition object. (side note: the _treeChanges accessor is private\n     * in the Transition class, so we must also provide the Transition's _treeChanges)\n     */\n    var HookBuilder = /** @class */ (function () {\n        function HookBuilder(transition) {\n            this.transition = transition;\n        }\n        HookBuilder.prototype.buildHooksForPhase = function (phase) {\n            var _this = this;\n            var $transitions = this.transition.router.transitionService;\n            return $transitions._pluginapi\n                ._getEvents(phase)\n                .map(function (type) { return _this.buildHooks(type); })\n                .reduce(unnestR, [])\n                .filter(identity);\n        };\n        /**\n         * Returns an array of newly built TransitionHook objects.\n         *\n         * - Finds all RegisteredHooks registered for the given `hookType` which matched the transition's [[TreeChanges]].\n         * - Finds [[PathNode]] (or `PathNode[]`) to use as the TransitionHook context(s)\n         * - For each of the [[PathNode]]s, creates a TransitionHook\n         *\n         * @param hookType the type of the hook registration function, e.g., 'onEnter', 'onFinish'.\n         */\n        HookBuilder.prototype.buildHooks = function (hookType) {\n            var transition = this.transition;\n            var treeChanges = transition.treeChanges();\n            // Find all the matching registered hooks for a given hook type\n            var matchingHooks = this.getMatchingHooks(hookType, treeChanges, transition);\n            if (!matchingHooks)\n                return [];\n            var baseHookOptions = {\n                transition: transition,\n                current: transition.options().current,\n            };\n            var makeTransitionHooks = function (hook) {\n                // Fetch the Nodes that caused this hook to match.\n                var matches = hook.matches(treeChanges, transition);\n                // Select the PathNode[] that will be used as TransitionHook context objects\n                var matchingNodes = matches[hookType.criteriaMatchPath.name];\n                // Return an array of HookTuples\n                return matchingNodes.map(function (node) {\n                    var _options = extend({\n                        bind: hook.bind,\n                        traceData: { hookType: hookType.name, context: node },\n                    }, baseHookOptions);\n                    var state = hookType.criteriaMatchPath.scope === exports.TransitionHookScope.STATE ? node.state.self : null;\n                    var transitionHook = new TransitionHook(transition, state, hook, _options);\n                    return { hook: hook, node: node, transitionHook: transitionHook };\n                });\n            };\n            return matchingHooks\n                .map(makeTransitionHooks)\n                .reduce(unnestR, [])\n                .sort(tupleSort(hookType.reverseSort))\n                .map(function (tuple) { return tuple.transitionHook; });\n        };\n        /**\n         * Finds all RegisteredHooks from:\n         * - The Transition object instance hook registry\n         * - The TransitionService ($transitions) global hook registry\n         *\n         * which matched:\n         * - the eventType\n         * - the matchCriteria (to, from, exiting, retained, entering)\n         *\n         * @returns an array of matched [[RegisteredHook]]s\n         */\n        HookBuilder.prototype.getMatchingHooks = function (hookType, treeChanges, transition) {\n            var isCreate = hookType.hookPhase === exports.TransitionHookPhase.CREATE;\n            // Instance and Global hook registries\n            var $transitions = this.transition.router.transitionService;\n            var registries = isCreate ? [$transitions] : [this.transition, $transitions];\n            return registries\n                .map(function (reg) { return reg.getHooks(hookType.name); }) // Get named hooks from registries\n                .filter(assertPredicate(isArray, \"broken event named: \" + hookType.name)) // Sanity check\n                .reduce(unnestR, []) // Un-nest RegisteredHook[][] to RegisteredHook[] array\n                .filter(function (hook) { return hook.matches(treeChanges, transition); }); // Only those satisfying matchCriteria\n        };\n        return HookBuilder;\n    }());\n    /**\n     * A factory for a sort function for HookTuples.\n     *\n     * The sort function first compares the PathNode depth (how deep in the state tree a node is), then compares\n     * the EventHook priority.\n     *\n     * @param reverseDepthSort a boolean, when true, reverses the sort order for the node depth\n     * @returns a tuple sort function\n     */\n    function tupleSort(reverseDepthSort) {\n        if (reverseDepthSort === void 0) { reverseDepthSort = false; }\n        return function nodeDepthThenPriority(l, r) {\n            var factor = reverseDepthSort ? -1 : 1;\n            var depthDelta = (l.node.state.path.length - r.node.state.path.length) * factor;\n            return depthDelta !== 0 ? depthDelta : r.hook.priority - l.hook.priority;\n        };\n    }\n\n    /** @internal */\n    var stateSelf = prop('self');\n    /**\n     * Represents a transition between two states.\n     *\n     * When navigating to a state, we are transitioning **from** the current state **to** the new state.\n     *\n     * This object contains all contextual information about the to/from states, parameters, resolves.\n     * It has information about all states being entered and exited as a result of the transition.\n     */\n    var Transition = /** @class */ (function () {\n        /**\n         * Creates a new Transition object.\n         *\n         * If the target state is not valid, an error is thrown.\n         *\n         * @internal\n         *\n         * @param fromPath The path of [[PathNode]]s from which the transition is leaving.  The last node in the `fromPath`\n         *        encapsulates the \"from state\".\n         * @param targetState The target state and parameters being transitioned to (also, the transition options)\n         * @param router The [[UIRouter]] instance\n         * @internal\n         */\n        function Transition(fromPath, targetState, router) {\n            var _this = this;\n            /** @internal */\n            this._deferred = services.$q.defer();\n            /**\n             * This promise is resolved or rejected based on the outcome of the Transition.\n             *\n             * When the transition is successful, the promise is resolved\n             * When the transition is unsuccessful, the promise is rejected with the [[Rejection]] or javascript error\n             */\n            this.promise = this._deferred.promise;\n            /** @internal Holds the hook registration functions such as those passed to Transition.onStart() */\n            this._registeredHooks = {};\n            /** @internal */\n            this._hookBuilder = new HookBuilder(this);\n            /** Checks if this transition is currently active/running. */\n            this.isActive = function () { return _this.router.globals.transition === _this; };\n            this.router = router;\n            this._targetState = targetState;\n            if (!targetState.valid()) {\n                throw new Error(targetState.error());\n            }\n            // current() is assumed to come from targetState.options, but provide a naive implementation otherwise.\n            this._options = extend({ current: val(this) }, targetState.options());\n            this.$id = router.transitionService._transitionCount++;\n            var toPath = PathUtils.buildToPath(fromPath, targetState);\n            this._treeChanges = PathUtils.treeChanges(fromPath, toPath, this._options.reloadState);\n            this.createTransitionHookRegFns();\n            var onCreateHooks = this._hookBuilder.buildHooksForPhase(exports.TransitionHookPhase.CREATE);\n            TransitionHook.invokeHooks(onCreateHooks, function () { return null; });\n            this.applyViewConfigs(router);\n        }\n        /** @internal */\n        Transition.prototype.onBefore = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onStart = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onExit = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onRetain = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onEnter = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onFinish = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onSuccess = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        Transition.prototype.onError = function (criteria, callback, options) {\n            return;\n        };\n        /** @internal\n         * Creates the transition-level hook registration functions\n         * (which can then be used to register hooks)\n         */\n        Transition.prototype.createTransitionHookRegFns = function () {\n            var _this = this;\n            this.router.transitionService._pluginapi\n                ._getEvents()\n                .filter(function (type) { return type.hookPhase !== exports.TransitionHookPhase.CREATE; })\n                .forEach(function (type) { return makeEvent(_this, _this.router.transitionService, type); });\n        };\n        /** @internal */\n        Transition.prototype.getHooks = function (hookName) {\n            return this._registeredHooks[hookName];\n        };\n        Transition.prototype.applyViewConfigs = function (router) {\n            var enteringStates = this._treeChanges.entering.map(function (node) { return node.state; });\n            PathUtils.applyViewConfigs(router.transitionService.$view, this._treeChanges.to, enteringStates);\n        };\n        /**\n         * @internal\n         * @returns the internal from [State] object\n         */\n        Transition.prototype.$from = function () {\n            return tail(this._treeChanges.from).state;\n        };\n        /**\n         * @internal\n         * @returns the internal to [State] object\n         */\n        Transition.prototype.$to = function () {\n            return tail(this._treeChanges.to).state;\n        };\n        /**\n         * Returns the \"from state\"\n         *\n         * Returns the state that the transition is coming *from*.\n         *\n         * @returns The state declaration object for the Transition's (\"from state\").\n         */\n        Transition.prototype.from = function () {\n            return this.$from().self;\n        };\n        /**\n         * Returns the \"to state\"\n         *\n         * Returns the state that the transition is going *to*.\n         *\n         * @returns The state declaration object for the Transition's target state (\"to state\").\n         */\n        Transition.prototype.to = function () {\n            return this.$to().self;\n        };\n        /**\n         * Gets the Target State\n         *\n         * A transition's [[TargetState]] encapsulates the [[to]] state, the [[params]], and the [[options]] as a single object.\n         *\n         * @returns the [[TargetState]] of this Transition\n         */\n        Transition.prototype.targetState = function () {\n            return this._targetState;\n        };\n        /**\n         * Determines whether two transitions are equivalent.\n         * @deprecated\n         */\n        Transition.prototype.is = function (compare) {\n            if (compare instanceof Transition) {\n                // TODO: Also compare parameters\n                return this.is({ to: compare.$to().name, from: compare.$from().name });\n            }\n            return !((compare.to && !matchState(this.$to(), compare.to, this)) ||\n                (compare.from && !matchState(this.$from(), compare.from, this)));\n        };\n        Transition.prototype.params = function (pathname) {\n            if (pathname === void 0) { pathname = 'to'; }\n            return Object.freeze(this._treeChanges[pathname].map(prop('paramValues')).reduce(mergeR, {}));\n        };\n        Transition.prototype.paramsChanged = function () {\n            var fromParams = this.params('from');\n            var toParams = this.params('to');\n            // All the parameters declared on both the \"to\" and \"from\" paths\n            var allParamDescriptors = []\n                .concat(this._treeChanges.to)\n                .concat(this._treeChanges.from)\n                .map(function (pathNode) { return pathNode.paramSchema; })\n                .reduce(flattenR, [])\n                .reduce(uniqR, []);\n            var changedParamDescriptors = Param.changed(allParamDescriptors, fromParams, toParams);\n            return changedParamDescriptors.reduce(function (changedValues, descriptor) {\n                changedValues[descriptor.id] = toParams[descriptor.id];\n                return changedValues;\n            }, {});\n        };\n        /**\n         * Creates a [[UIInjector]] Dependency Injector\n         *\n         * Returns a Dependency Injector for the Transition's target state (to state).\n         * The injector provides resolve values which the target state has access to.\n         *\n         * The `UIInjector` can also provide values from the native root/global injector (ng1/ng2).\n         *\n         * #### Example:\n         * ```js\n         * .onEnter({ entering: 'myState' }, trans => {\n         *   var myResolveValue = trans.injector().get('myResolve');\n         *   // Inject a global service from the global/native injector (if it exists)\n         *   var MyService = trans.injector().get('MyService');\n         * })\n         * ```\n         *\n         * In some cases (such as `onBefore`), you may need access to some resolve data but it has not yet been fetched.\n         * You can use [[UIInjector.getAsync]] to get a promise for the data.\n         * #### Example:\n         * ```js\n         * .onBefore({}, trans => {\n         *   return trans.injector().getAsync('myResolve').then(myResolveValue =>\n         *     return myResolveValue !== 'ABORT';\n         *   });\n         * });\n         * ```\n         *\n         * If a `state` is provided, the injector that is returned will be limited to resolve values that the provided state has access to.\n         * This can be useful if both a parent state `foo` and a child state `foo.bar` have both defined a resolve such as `data`.\n         * #### Example:\n         * ```js\n         * .onEnter({ to: 'foo.bar' }, trans => {\n         *   // returns result of `foo` state's `myResolve` resolve\n         *   // even though `foo.bar` also has a `myResolve` resolve\n         *   var fooData = trans.injector('foo').get('myResolve');\n         * });\n         * ```\n         *\n         * If you need resolve data from the exiting states, pass `'from'` as `pathName`.\n         * The resolve data from the `from` path will be returned.\n         * #### Example:\n         * ```js\n         * .onExit({ exiting: 'foo.bar' }, trans => {\n         *   // Gets the resolve value of `myResolve` from the state being exited\n         *   var fooData = trans.injector(null, 'from').get('myResolve');\n         * });\n         * ```\n         *\n         *\n         * @param state Limits the resolves provided to only the resolves the provided state has access to.\n         * @param pathName Default: `'to'`: Chooses the path for which to create the injector. Use this to access resolves for `exiting` states.\n         *\n         * @returns a [[UIInjector]]\n         */\n        Transition.prototype.injector = function (state, pathName) {\n            if (pathName === void 0) { pathName = 'to'; }\n            var path = this._treeChanges[pathName];\n            if (state)\n                path = PathUtils.subPath(path, function (node) { return node.state === state || node.state.name === state; });\n            return new ResolveContext(path).injector();\n        };\n        /**\n         * Gets all available resolve tokens (keys)\n         *\n         * This method can be used in conjunction with [[injector]] to inspect the resolve values\n         * available to the Transition.\n         *\n         * This returns all the tokens defined on [[StateDeclaration.resolve]] blocks, for the states\n         * in the Transition's [[TreeChanges.to]] path.\n         *\n         * #### Example:\n         * This example logs all resolve values\n         * ```js\n         * let tokens = trans.getResolveTokens();\n         * tokens.forEach(token => console.log(token + \" = \" + trans.injector().get(token)));\n         * ```\n         *\n         * #### Example:\n         * This example creates promises for each resolve value.\n         * This triggers fetches of resolves (if any have not yet been fetched).\n         * When all promises have all settled, it logs the resolve values.\n         * ```js\n         * let tokens = trans.getResolveTokens();\n         * let promise = tokens.map(token => trans.injector().getAsync(token));\n         * Promise.all(promises).then(values => console.log(\"Resolved values: \" + values));\n         * ```\n         *\n         * Note: Angular 1 users whould use `$q.all()`\n         *\n         * @param pathname resolve context's path name (e.g., `to` or `from`)\n         *\n         * @returns an array of resolve tokens (keys)\n         */\n        Transition.prototype.getResolveTokens = function (pathname) {\n            if (pathname === void 0) { pathname = 'to'; }\n            return new ResolveContext(this._treeChanges[pathname]).getTokens();\n        };\n        /**\n         * Dynamically adds a new [[Resolvable]] (i.e., [[StateDeclaration.resolve]]) to this transition.\n         *\n         * Allows a transition hook to dynamically add a Resolvable to this Transition.\n         *\n         * Use the [[Transition.injector]] to retrieve the resolved data in subsequent hooks ([[UIInjector.get]]).\n         *\n         * If a `state` argument is provided, the Resolvable is processed when that state is being entered.\n         * If no `state` is provided then the root state is used.\n         * If the given `state` has already been entered, the Resolvable is processed when any child state is entered.\n         * If no child states will be entered, the Resolvable is processed during the `onFinish` phase of the Transition.\n         *\n         * The `state` argument also scopes the resolved data.\n         * The resolved data is available from the injector for that `state` and any children states.\n         *\n         * #### Example:\n         * ```js\n         * transitionService.onBefore({}, transition => {\n         *   transition.addResolvable({\n         *     token: 'myResolve',\n         *     deps: ['MyService'],\n         *     resolveFn: myService => myService.getData()\n         *   });\n         * });\n         * ```\n         *\n         * @param resolvable a [[ResolvableLiteral]] object (or a [[Resolvable]])\n         * @param state the state in the \"to path\" which should receive the new resolve (otherwise, the root state)\n         */\n        Transition.prototype.addResolvable = function (resolvable, state) {\n            if (state === void 0) { state = ''; }\n            resolvable = is(Resolvable)(resolvable) ? resolvable : new Resolvable(resolvable);\n            var stateName = typeof state === 'string' ? state : state.name;\n            var topath = this._treeChanges.to;\n            var targetNode = find(topath, function (node) { return node.state.name === stateName; });\n            var resolveContext = new ResolveContext(topath);\n            resolveContext.addResolvables([resolvable], targetNode.state);\n        };\n        /**\n         * Gets the transition from which this transition was redirected.\n         *\n         * If the current transition is a redirect, this method returns the transition that was redirected.\n         *\n         * #### Example:\n         * ```js\n         * let transitionA = $state.go('A').transition\n         * transitionA.onStart({}, () => $state.target('B'));\n         * $transitions.onSuccess({ to: 'B' }, (trans) => {\n         *   trans.to().name === 'B'; // true\n         *   trans.redirectedFrom() === transitionA; // true\n         * });\n         * ```\n         *\n         * @returns The previous Transition, or null if this Transition is not the result of a redirection\n         */\n        Transition.prototype.redirectedFrom = function () {\n            return this._options.redirectedFrom || null;\n        };\n        /**\n         * Gets the original transition in a redirect chain\n         *\n         * A transition might belong to a long chain of multiple redirects.\n         * This method walks the [[redirectedFrom]] chain back to the original (first) transition in the chain.\n         *\n         * #### Example:\n         * ```js\n         * // states\n         * registry.register({ name: 'A', redirectTo: 'B' });\n         * registry.register({ name: 'B', redirectTo: 'C' });\n         * registry.register({ name: 'C', redirectTo: 'D' });\n         * registry.register({ name: 'D' });\n         *\n         * let transitionA = $state.go('A').transition\n         *\n         * $transitions.onSuccess({ to: 'D' }, (trans) => {\n         *   trans.to().name === 'D'; // true\n         *   trans.redirectedFrom().to().name === 'C'; // true\n         *   trans.originalTransition() === transitionA; // true\n         *   trans.originalTransition().to().name === 'A'; // true\n         * });\n         * ```\n         *\n         * @returns The original Transition that started a redirect chain\n         */\n        Transition.prototype.originalTransition = function () {\n            var rf = this.redirectedFrom();\n            return (rf && rf.originalTransition()) || this;\n        };\n        /**\n         * Get the transition options\n         *\n         * @returns the options for this Transition.\n         */\n        Transition.prototype.options = function () {\n            return this._options;\n        };\n        /**\n         * Gets the states being entered.\n         *\n         * @returns an array of states that will be entered during this transition.\n         */\n        Transition.prototype.entering = function () {\n            return map(this._treeChanges.entering, prop('state')).map(stateSelf);\n        };\n        /**\n         * Gets the states being exited.\n         *\n         * @returns an array of states that will be exited during this transition.\n         */\n        Transition.prototype.exiting = function () {\n            return map(this._treeChanges.exiting, prop('state')).map(stateSelf).reverse();\n        };\n        /**\n         * Gets the states being retained.\n         *\n         * @returns an array of states that are already entered from a previous Transition, that will not be\n         *    exited during this Transition\n         */\n        Transition.prototype.retained = function () {\n            return map(this._treeChanges.retained, prop('state')).map(stateSelf);\n        };\n        /**\n         * Get the [[ViewConfig]]s associated with this Transition\n         *\n         * Each state can define one or more views (template/controller), which are encapsulated as `ViewConfig` objects.\n         * This method fetches the `ViewConfigs` for a given path in the Transition (e.g., \"to\" or \"entering\").\n         *\n         * @param pathname the name of the path to fetch views for:\n         *   (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n         * @param state If provided, only returns the `ViewConfig`s for a single state in the path\n         *\n         * @returns a list of ViewConfig objects for the given path.\n         */\n        Transition.prototype.views = function (pathname, state) {\n            if (pathname === void 0) { pathname = 'entering'; }\n            var path = this._treeChanges[pathname];\n            path = !state ? path : path.filter(propEq('state', state));\n            return path.map(prop('views')).filter(identity).reduce(unnestR, []);\n        };\n        Transition.prototype.treeChanges = function (pathname) {\n            return pathname ? this._treeChanges[pathname] : this._treeChanges;\n        };\n        /**\n         * Creates a new transition that is a redirection of the current one.\n         *\n         * This transition can be returned from a [[TransitionService]] hook to\n         * redirect a transition to a new state and/or set of parameters.\n         *\n         * @internal\n         *\n         * @returns Returns a new [[Transition]] instance.\n         */\n        Transition.prototype.redirect = function (targetState) {\n            var redirects = 1, trans = this;\n            // tslint:disable-next-line:no-conditional-assignment\n            while ((trans = trans.redirectedFrom()) != null) {\n                if (++redirects > 20)\n                    throw new Error(\"Too many consecutive Transition redirects (20+)\");\n            }\n            var redirectOpts = { redirectedFrom: this, source: 'redirect' };\n            // If the original transition was caused by URL sync, then use { location: 'replace' }\n            // on the new transition (unless the target state explicitly specifies location: false).\n            // This causes the original url to be replaced with the url for the redirect target\n            // so the original url disappears from the browser history.\n            if (this.options().source === 'url' && targetState.options().location !== false) {\n                redirectOpts.location = 'replace';\n            }\n            var newOptions = extend({}, this.options(), targetState.options(), redirectOpts);\n            targetState = targetState.withOptions(newOptions, true);\n            var newTransition = this.router.transitionService.create(this._treeChanges.from, targetState);\n            var originalEnteringNodes = this._treeChanges.entering;\n            var redirectEnteringNodes = newTransition._treeChanges.entering;\n            // --- Re-use resolve data from original transition ---\n            // When redirecting from a parent state to a child state where the parent parameter values haven't changed\n            // (because of the redirect), the resolves fetched by the original transition are still valid in the\n            // redirected transition.\n            //\n            // This allows you to define a redirect on a parent state which depends on an async resolve value.\n            // You can wait for the resolve, then redirect to a child state based on the result.\n            // The redirected transition does not have to re-fetch the resolve.\n            // ---------------------------------------------------------\n            var nodeIsReloading = function (reloadState) { return function (node) {\n                return reloadState && node.state.includes[reloadState.name];\n            }; };\n            // Find any \"entering\" nodes in the redirect path that match the original path and aren't being reloaded\n            var matchingEnteringNodes = PathUtils.matching(redirectEnteringNodes, originalEnteringNodes, PathUtils.nonDynamicParams).filter(not(nodeIsReloading(targetState.options().reloadState)));\n            // Use the existing (possibly pre-resolved) resolvables for the matching entering nodes.\n            matchingEnteringNodes.forEach(function (node, idx) {\n                node.resolvables = originalEnteringNodes[idx].resolvables;\n            });\n            return newTransition;\n        };\n        /** @internal If a transition doesn't exit/enter any states, returns any [[Param]] whose value changed */\n        Transition.prototype._changedParams = function () {\n            var tc = this._treeChanges;\n            /** Return undefined if it's not a \"dynamic\" transition, for the following reasons */\n            // If user explicitly wants a reload\n            if (this._options.reload)\n                return undefined;\n            // If any states are exiting or entering\n            if (tc.exiting.length || tc.entering.length)\n                return undefined;\n            // If to/from path lengths differ\n            if (tc.to.length !== tc.from.length)\n                return undefined;\n            // If the to/from paths are different\n            var pathsDiffer = arrayTuples(tc.to, tc.from)\n                .map(function (tuple) { return tuple[0].state !== tuple[1].state; })\n                .reduce(anyTrueR, false);\n            if (pathsDiffer)\n                return undefined;\n            // Find any parameter values that differ\n            var nodeSchemas = tc.to.map(function (node) { return node.paramSchema; });\n            var _a = [tc.to, tc.from].map(function (path) { return path.map(function (x) { return x.paramValues; }); }), toValues = _a[0], fromValues = _a[1];\n            var tuples = arrayTuples(nodeSchemas, toValues, fromValues);\n            return tuples.map(function (_a) {\n                var schema = _a[0], toVals = _a[1], fromVals = _a[2];\n                return Param.changed(schema, toVals, fromVals);\n            }).reduce(unnestR, []);\n        };\n        /**\n         * Returns true if the transition is dynamic.\n         *\n         * A transition is dynamic if no states are entered nor exited, but at least one dynamic parameter has changed.\n         *\n         * @returns true if the Transition is dynamic\n         */\n        Transition.prototype.dynamic = function () {\n            var changes = this._changedParams();\n            return !changes ? false : changes.map(function (x) { return x.dynamic; }).reduce(anyTrueR, false);\n        };\n        /**\n         * Returns true if the transition is ignored.\n         *\n         * A transition is ignored if no states are entered nor exited, and no parameter values have changed.\n         *\n         * @returns true if the Transition is ignored.\n         */\n        Transition.prototype.ignored = function () {\n            return !!this._ignoredReason();\n        };\n        /** @internal */\n        Transition.prototype._ignoredReason = function () {\n            var pending = this.router.globals.transition;\n            var reloadState = this._options.reloadState;\n            var same = function (pathA, pathB) {\n                if (pathA.length !== pathB.length)\n                    return false;\n                var matching = PathUtils.matching(pathA, pathB);\n                return pathA.length === matching.filter(function (node) { return !reloadState || !node.state.includes[reloadState.name]; }).length;\n            };\n            var newTC = this.treeChanges();\n            var pendTC = pending && pending.treeChanges();\n            if (pendTC && same(pendTC.to, newTC.to) && same(pendTC.exiting, newTC.exiting))\n                return 'SameAsPending';\n            if (newTC.exiting.length === 0 && newTC.entering.length === 0 && same(newTC.from, newTC.to))\n                return 'SameAsCurrent';\n        };\n        /**\n         * Runs the transition\n         *\n         * This method is generally called from the [[StateService.transitionTo]]\n         *\n         * @internal\n         *\n         * @returns a promise for a successful transition.\n         */\n        Transition.prototype.run = function () {\n            var _this = this;\n            var runAllHooks = TransitionHook.runAllHooks;\n            // Gets transition hooks array for the given phase\n            var getHooksFor = function (phase) { return _this._hookBuilder.buildHooksForPhase(phase); };\n            // When the chain is complete, then resolve or reject the deferred\n            var transitionSuccess = function () {\n                trace.traceSuccess(_this.$to(), _this);\n                _this.success = true;\n                _this._deferred.resolve(_this.to());\n                runAllHooks(getHooksFor(exports.TransitionHookPhase.SUCCESS));\n            };\n            var transitionError = function (reason) {\n                trace.traceError(reason, _this);\n                _this.success = false;\n                _this._deferred.reject(reason);\n                _this._error = reason;\n                runAllHooks(getHooksFor(exports.TransitionHookPhase.ERROR));\n            };\n            var runTransition = function () {\n                // Wait to build the RUN hook chain until the BEFORE hooks are done\n                // This allows a BEFORE hook to dynamically add additional RUN hooks via the Transition object.\n                var allRunHooks = getHooksFor(exports.TransitionHookPhase.RUN);\n                var done = function () { return services.$q.when(undefined); };\n                return TransitionHook.invokeHooks(allRunHooks, done);\n            };\n            var startTransition = function () {\n                var globals = _this.router.globals;\n                globals.lastStartedTransitionId = _this.$id;\n                globals.transition = _this;\n                globals.transitionHistory.enqueue(_this);\n                trace.traceTransitionStart(_this);\n                return services.$q.when(undefined);\n            };\n            var allBeforeHooks = getHooksFor(exports.TransitionHookPhase.BEFORE);\n            TransitionHook.invokeHooks(allBeforeHooks, startTransition)\n                .then(runTransition)\n                .then(transitionSuccess, transitionError);\n            return this.promise;\n        };\n        /**\n         * Checks if the Transition is valid\n         *\n         * @returns true if the Transition is valid\n         */\n        Transition.prototype.valid = function () {\n            return !this.error() || this.success !== undefined;\n        };\n        /**\n         * Aborts this transition\n         *\n         * Imperative API to abort a Transition.\n         * This only applies to Transitions that are not yet complete.\n         */\n        Transition.prototype.abort = function () {\n            // Do not set flag if the transition is already complete\n            if (isUndefined(this.success)) {\n                this._aborted = true;\n            }\n        };\n        /**\n         * The Transition error reason.\n         *\n         * If the transition is invalid (and could not be run), returns the reason the transition is invalid.\n         * If the transition was valid and ran, but was not successful, returns the reason the transition failed.\n         *\n         * @returns a transition rejection explaining why the transition is invalid, or the reason the transition failed.\n         */\n        Transition.prototype.error = function () {\n            var state = this.$to();\n            if (state.self.abstract) {\n                return Rejection.invalid(\"Cannot transition to abstract state '\" + state.name + \"'\");\n            }\n            var paramDefs = state.parameters();\n            var values = this.params();\n            var invalidParams = paramDefs.filter(function (param) { return !param.validates(values[param.id]); });\n            if (invalidParams.length) {\n                var invalidValues = invalidParams.map(function (param) { return \"[\" + param.id + \":\" + stringify(values[param.id]) + \"]\"; }).join(', ');\n                var detail = \"The following parameter values are not valid for state '\" + state.name + \"': \" + invalidValues;\n                return Rejection.invalid(detail);\n            }\n            if (this.success === false)\n                return this._error;\n        };\n        /**\n         * A string representation of the Transition\n         *\n         * @returns A string representation of the Transition\n         */\n        Transition.prototype.toString = function () {\n            var fromStateOrName = this.from();\n            var toStateOrName = this.to();\n            var avoidEmptyHash = function (params) {\n                return params['#'] !== null && params['#'] !== undefined ? params : omit(params, ['#']);\n            };\n            // (X) means the to state is invalid.\n            var id = this.$id, from = isObject(fromStateOrName) ? fromStateOrName.name : fromStateOrName, fromParams = stringify(avoidEmptyHash(this._treeChanges.from.map(prop('paramValues')).reduce(mergeR, {}))), toValid = this.valid() ? '' : '(X) ', to = isObject(toStateOrName) ? toStateOrName.name : toStateOrName, toParams = stringify(avoidEmptyHash(this.params()));\n            return \"Transition#\" + id + \"( '\" + from + \"'\" + fromParams + \" -> \" + toValid + \"'\" + to + \"'\" + toParams + \" )\";\n        };\n        /** @internal */\n        Transition.diToken = Transition;\n        return Transition;\n    }());\n\n    function quoteRegExp(str, param) {\n        var surroundPattern = ['', ''], result = str.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, '\\\\$&');\n        if (!param)\n            return result;\n        switch (param.squash) {\n            case false:\n                surroundPattern = ['(', ')' + (param.isOptional ? '?' : '')];\n                break;\n            case true:\n                result = result.replace(/\\/$/, '');\n                surroundPattern = ['(?:/(', ')|/)?'];\n                break;\n            default:\n                surroundPattern = [\"(\" + param.squash + \"|\", ')?'];\n                break;\n        }\n        return result + surroundPattern[0] + param.type.pattern.source + surroundPattern[1];\n    }\n    var memoizeTo = function (obj, _prop, fn) { return (obj[_prop] = obj[_prop] || fn()); };\n    var splitOnSlash = splitOnDelim('/');\n    var defaultConfig = {\n        state: { params: {} },\n        strict: true,\n        caseInsensitive: true,\n        decodeParams: true,\n    };\n    /**\n     * Matches URLs against patterns.\n     *\n     * Matches URLs against patterns and extracts named parameters from the path or the search\n     * part of the URL.\n     *\n     * A URL pattern consists of a path pattern, optionally followed by '?' and a list of search (query)\n     * parameters. Multiple search parameter names are separated by '&'. Search parameters\n     * do not influence whether or not a URL is matched, but their values are passed through into\n     * the matched parameters returned by [[UrlMatcher.exec]].\n     *\n     * - *Path parameters* are defined using curly brace placeholders (`/somepath/{param}`)\n     * or colon placeholders (`/somePath/:param`).\n     *\n     * - *A parameter RegExp* may be defined for a param after a colon\n     * (`/somePath/{param:[a-zA-Z0-9]+}`) in a curly brace placeholder.\n     * The regexp must match for the url to be matched.\n     * Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n     *\n     * Note: a RegExp parameter will encode its value using either [[ParamTypes.path]] or [[ParamTypes.query]].\n     *\n     * - *Custom parameter types* may also be specified after a colon (`/somePath/{param:int}`) in curly brace parameters.\n     *   See [[UrlMatcherFactory.type]] for more information.\n     *\n     * - *Catch-all parameters* are defined using an asterisk placeholder (`/somepath/*catchallparam`).\n     *   A catch-all * parameter value will contain the remainder of the URL.\n     *\n     * ---\n     *\n     * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n     * must be unique within the pattern (across both path and search parameters).\n     * A path parameter matches any number of characters other than '/'. For catch-all\n     * placeholders the path parameter matches any number of characters.\n     *\n     * Examples:\n     *\n     * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n     *   trailing slashes, and patterns have to match the entire path, not just a prefix.\n     * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n     *   '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n     * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n     * * `'/user/{id:[^/]*}'` - Same as the previous example.\n     * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n     *   parameter consists of 1 to 8 hex digits.\n     * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n     *   path into the parameter 'path'.\n     * * `'/files/*path'` - ditto.\n     * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n     *   in the built-in  `date` ParamType matches `2014-11-12`) and provides a Date object in $stateParams.start\n     *\n     */\n    var UrlMatcher = /** @class */ (function () {\n        /**\n         * @param pattern The pattern to compile into a matcher.\n         * @param paramTypes The [[ParamTypes]] registry\n         * @param paramFactory A [[ParamFactory]] object\n         * @param config  A [[UrlMatcherCompileConfig]] configuration object\n         */\n        function UrlMatcher(pattern, paramTypes, paramFactory, config) {\n            var _this = this;\n            /** @internal */\n            this._cache = { path: [this] };\n            /** @internal */\n            this._children = [];\n            /** @internal */\n            this._params = [];\n            /** @internal */\n            this._segments = [];\n            /** @internal */\n            this._compiled = [];\n            this.config = config = defaults(config, defaultConfig);\n            this.pattern = pattern;\n            // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n            //   '*' name\n            //   ':' name\n            //   '{' name '}'\n            //   '{' name ':' regexp '}'\n            // The regular expression is somewhat complicated due to the need to allow curly braces\n            // inside the regular expression. The placeholder regexp breaks down as follows:\n            //    ([:*])([\\w\\[\\]]+)              - classic placeholder ($1 / $2) (search version has - for snake-case)\n            //    \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\}  - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n            //    (?: ... | ... | ... )+         - the regexp consists of any number of atoms, an atom being either\n            //    [^{}\\\\]+                       - anything other than curly braces or backslash\n            //    \\\\.                            - a backslash escape\n            //    \\{(?:[^{}\\\\]+|\\\\.)*\\}          - a matched set of curly braces containing other atoms\n            var placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n            var searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n            var patterns = [];\n            var last = 0;\n            var matchArray;\n            var checkParamErrors = function (id) {\n                if (!UrlMatcher.nameValidator.test(id))\n                    throw new Error(\"Invalid parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n                if (find(_this._params, propEq('id', id)))\n                    throw new Error(\"Duplicate parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n            };\n            // Split into static segments separated by path parameter placeholders.\n            // The number of segments is always 1 more than the number of parameters.\n            var matchDetails = function (m, isSearch) {\n                // IE[78] returns '' for unmatched groups instead of null\n                var id = m[2] || m[3];\n                var regexp = isSearch ? m[4] : m[4] || (m[1] === '*' ? '[\\\\s\\\\S]*' : null);\n                var makeRegexpType = function (str) {\n                    return inherit(paramTypes.type(isSearch ? 'query' : 'path'), {\n                        pattern: new RegExp(str, _this.config.caseInsensitive ? 'i' : undefined),\n                    });\n                };\n                return {\n                    id: id,\n                    regexp: regexp,\n                    segment: pattern.substring(last, m.index),\n                    type: !regexp ? null : paramTypes.type(regexp) || makeRegexpType(regexp),\n                };\n            };\n            var details;\n            var segment;\n            // tslint:disable-next-line:no-conditional-assignment\n            while ((matchArray = placeholder.exec(pattern))) {\n                details = matchDetails(matchArray, false);\n                if (details.segment.indexOf('?') >= 0)\n                    break; // we're into the search part\n                checkParamErrors(details.id);\n                this._params.push(paramFactory.fromPath(details.id, details.type, config.state));\n                this._segments.push(details.segment);\n                patterns.push([details.segment, tail(this._params)]);\n                last = placeholder.lastIndex;\n            }\n            segment = pattern.substring(last);\n            // Find any search parameter names and remove them from the last segment\n            var i = segment.indexOf('?');\n            if (i >= 0) {\n                var search = segment.substring(i);\n                segment = segment.substring(0, i);\n                if (search.length > 0) {\n                    last = 0;\n                    // tslint:disable-next-line:no-conditional-assignment\n                    while ((matchArray = searchPlaceholder.exec(search))) {\n                        details = matchDetails(matchArray, true);\n                        checkParamErrors(details.id);\n                        this._params.push(paramFactory.fromSearch(details.id, details.type, config.state));\n                        last = placeholder.lastIndex;\n                        // check if ?&\n                    }\n                }\n            }\n            this._segments.push(segment);\n            this._compiled = patterns.map(function (_pattern) { return quoteRegExp.apply(null, _pattern); }).concat(quoteRegExp(segment));\n        }\n        /** @internal */\n        UrlMatcher.encodeDashes = function (str) {\n            // Replace dashes with encoded \"\\-\"\n            return encodeURIComponent(str).replace(/-/g, function (c) { return \"%5C%\" + c.charCodeAt(0).toString(16).toUpperCase(); });\n        };\n        /** @internal Given a matcher, return an array with the matcher's path segments and path params, in order */\n        UrlMatcher.pathSegmentsAndParams = function (matcher) {\n            var staticSegments = matcher._segments;\n            var pathParams = matcher._params.filter(function (p) { return p.location === exports.DefType.PATH; });\n            return arrayTuples(staticSegments, pathParams.concat(undefined))\n                .reduce(unnestR, [])\n                .filter(function (x) { return x !== '' && isDefined(x); });\n        };\n        /** @internal Given a matcher, return an array with the matcher's query params */\n        UrlMatcher.queryParams = function (matcher) {\n            return matcher._params.filter(function (p) { return p.location === exports.DefType.SEARCH; });\n        };\n        /**\n         * Compare two UrlMatchers\n         *\n         * This comparison function converts a UrlMatcher into static and dynamic path segments.\n         * Each static path segment is a static string between a path separator (slash character).\n         * Each dynamic segment is a path parameter.\n         *\n         * The comparison function sorts static segments before dynamic ones.\n         */\n        UrlMatcher.compare = function (a, b) {\n            /**\n             * Turn a UrlMatcher and all its parent matchers into an array\n             * of slash literals '/', string literals, and Param objects\n             *\n             * This example matcher matches strings like \"/foo/:param/tail\":\n             * var matcher = $umf.compile(\"/foo\").append($umf.compile(\"/:param\")).append($umf.compile(\"/\")).append($umf.compile(\"tail\"));\n             * var result = segments(matcher); // [ '/', 'foo', '/', Param, '/', 'tail' ]\n             *\n             * Caches the result as `matcher._cache.segments`\n             */\n            var segments = function (matcher) {\n                return (matcher._cache.segments =\n                    matcher._cache.segments ||\n                        matcher._cache.path\n                            .map(UrlMatcher.pathSegmentsAndParams)\n                            .reduce(unnestR, [])\n                            .reduce(joinNeighborsR, [])\n                            .map(function (x) { return (isString(x) ? splitOnSlash(x) : x); })\n                            .reduce(unnestR, []));\n            };\n            /**\n             * Gets the sort weight for each segment of a UrlMatcher\n             *\n             * Caches the result as `matcher._cache.weights`\n             */\n            var weights = function (matcher) {\n                return (matcher._cache.weights =\n                    matcher._cache.weights ||\n                        segments(matcher).map(function (segment) {\n                            // Sort slashes first, then static strings, the Params\n                            if (segment === '/')\n                                return 1;\n                            if (isString(segment))\n                                return 2;\n                            if (segment instanceof Param)\n                                return 3;\n                        }));\n            };\n            /**\n             * Pads shorter array in-place (mutates)\n             */\n            var padArrays = function (l, r, padVal) {\n                var len = Math.max(l.length, r.length);\n                while (l.length < len)\n                    l.push(padVal);\n                while (r.length < len)\n                    r.push(padVal);\n            };\n            var weightsA = weights(a), weightsB = weights(b);\n            padArrays(weightsA, weightsB, 0);\n            var _pairs = arrayTuples(weightsA, weightsB);\n            var cmp, i;\n            for (i = 0; i < _pairs.length; i++) {\n                cmp = _pairs[i][0] - _pairs[i][1];\n                if (cmp !== 0)\n                    return cmp;\n            }\n            return 0;\n        };\n        /**\n         * Creates a new concatenated UrlMatcher\n         *\n         * Builds a new UrlMatcher by appending another UrlMatcher to this one.\n         *\n         * @param url A `UrlMatcher` instance to append as a child of the current `UrlMatcher`.\n         */\n        UrlMatcher.prototype.append = function (url) {\n            this._children.push(url);\n            url._cache = {\n                path: this._cache.path.concat(url),\n                parent: this,\n                pattern: null,\n            };\n            return url;\n        };\n        /** @internal */\n        UrlMatcher.prototype.isRoot = function () {\n            return this._cache.path[0] === this;\n        };\n        /** Returns the input pattern string */\n        UrlMatcher.prototype.toString = function () {\n            return this.pattern;\n        };\n        UrlMatcher.prototype._getDecodedParamValue = function (value, param) {\n            if (isDefined(value)) {\n                if (this.config.decodeParams && !param.type.raw) {\n                    if (isArray(value)) {\n                        value = value.map(function (paramValue) { return decodeURIComponent(paramValue); });\n                    }\n                    else {\n                        value = decodeURIComponent(value);\n                    }\n                }\n                value = param.type.decode(value);\n            }\n            return param.value(value);\n        };\n        /**\n         * Tests the specified url/path against this matcher.\n         *\n         * Tests if the given url matches this matcher's pattern, and returns an object containing the captured\n         * parameter values.  Returns null if the path does not match.\n         *\n         * The returned object contains the values\n         * of any search parameters that are mentioned in the pattern, but their value may be null if\n         * they are not present in `search`. This means that search parameters are always treated\n         * as optional.\n         *\n         * #### Example:\n         * ```js\n         * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n         *   x: '1', q: 'hello'\n         * });\n         * // returns { id: 'bob', q: 'hello', r: null }\n         * ```\n         *\n         * @param path    The URL path to match, e.g. `$location.path()`.\n         * @param search  URL search parameters, e.g. `$location.search()`.\n         * @param hash    URL hash e.g. `$location.hash()`.\n         * @param options\n         *\n         * @returns The captured parameter values.\n         */\n        UrlMatcher.prototype.exec = function (path, search, hash, options) {\n            var _this = this;\n            if (search === void 0) { search = {}; }\n            var match = memoizeTo(this._cache, 'pattern', function () {\n                return new RegExp([\n                    '^',\n                    unnest(_this._cache.path.map(prop('_compiled'))).join(''),\n                    _this.config.strict === false ? '/?' : '',\n                    '$',\n                ].join(''), _this.config.caseInsensitive ? 'i' : undefined);\n            }).exec(path);\n            if (!match)\n                return null;\n            // options = defaults(options, { isolate: false });\n            var allParams = this.parameters(), pathParams = allParams.filter(function (param) { return !param.isSearch(); }), searchParams = allParams.filter(function (param) { return param.isSearch(); }), nPathSegments = this._cache.path.map(function (urlm) { return urlm._segments.length - 1; }).reduce(function (a, x) { return a + x; }), values = {};\n            if (nPathSegments !== match.length - 1)\n                throw new Error(\"Unbalanced capture group in route '\" + this.pattern + \"'\");\n            function decodePathArray(paramVal) {\n                var reverseString = function (str) { return str.split('').reverse().join(''); };\n                var unquoteDashes = function (str) { return str.replace(/\\\\-/g, '-'); };\n                var split = reverseString(paramVal).split(/-(?!\\\\)/);\n                var allReversed = map(split, reverseString);\n                return map(allReversed, unquoteDashes).reverse();\n            }\n            for (var i = 0; i < nPathSegments; i++) {\n                var param = pathParams[i];\n                var value = match[i + 1];\n                // if the param value matches a pre-replace pair, replace the value before decoding.\n                for (var j = 0; j < param.replace.length; j++) {\n                    if (param.replace[j].from === value)\n                        value = param.replace[j].to;\n                }\n                if (value && param.array === true)\n                    value = decodePathArray(value);\n                values[param.id] = this._getDecodedParamValue(value, param);\n            }\n            searchParams.forEach(function (param) {\n                var value = search[param.id];\n                for (var j = 0; j < param.replace.length; j++) {\n                    if (param.replace[j].from === value)\n                        value = param.replace[j].to;\n                }\n                values[param.id] = _this._getDecodedParamValue(value, param);\n            });\n            if (hash)\n                values['#'] = hash;\n            return values;\n        };\n        /**\n         * @internal\n         * Returns all the [[Param]] objects of all path and search parameters of this pattern in order of appearance.\n         *\n         * @returns {Array.<Param>}  An array of [[Param]] objects. Must be treated as read-only. If the\n         *    pattern has no parameters, an empty array is returned.\n         */\n        UrlMatcher.prototype.parameters = function (opts) {\n            if (opts === void 0) { opts = {}; }\n            if (opts.inherit === false)\n                return this._params;\n            return unnest(this._cache.path.map(function (matcher) { return matcher._params; }));\n        };\n        /**\n         * @internal\n         * Returns a single parameter from this UrlMatcher by id\n         *\n         * @param id\n         * @param opts\n         * @returns {T|Param|any|boolean|UrlMatcher|null}\n         */\n        UrlMatcher.prototype.parameter = function (id, opts) {\n            var _this = this;\n            if (opts === void 0) { opts = {}; }\n            var findParam = function () {\n                for (var _i = 0, _a = _this._params; _i < _a.length; _i++) {\n                    var param = _a[_i];\n                    if (param.id === id)\n                        return param;\n                }\n            };\n            var parent = this._cache.parent;\n            return findParam() || (opts.inherit !== false && parent && parent.parameter(id, opts)) || null;\n        };\n        /**\n         * Validates the input parameter values against this UrlMatcher\n         *\n         * Checks an object hash of parameters to validate their correctness according to the parameter\n         * types of this `UrlMatcher`.\n         *\n         * @param params The object hash of parameters to validate.\n         * @returns Returns `true` if `params` validates, otherwise `false`.\n         */\n        UrlMatcher.prototype.validates = function (params) {\n            var validParamVal = function (param, val) { return !param || param.validates(val); };\n            params = params || {};\n            // I'm not sure why this checks only the param keys passed in, and not all the params known to the matcher\n            var paramSchema = this.parameters().filter(function (paramDef) { return params.hasOwnProperty(paramDef.id); });\n            return paramSchema.map(function (paramDef) { return validParamVal(paramDef, params[paramDef.id]); }).reduce(allTrueR, true);\n        };\n        /**\n         * Given a set of parameter values, creates a URL from this UrlMatcher.\n         *\n         * Creates a URL that matches this pattern by substituting the specified values\n         * for the path and search parameters.\n         *\n         * #### Example:\n         * ```js\n         * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n         * // returns '/user/bob?q=yes'\n         * ```\n         *\n         * @param values  the values to substitute for the parameters in this pattern.\n         * @returns the formatted URL (path and optionally search part).\n         */\n        UrlMatcher.prototype.format = function (values) {\n            if (values === void 0) { values = {}; }\n            // Build the full path of UrlMatchers (including all parent UrlMatchers)\n            var urlMatchers = this._cache.path;\n            // Extract all the static segments and Params (processed as ParamDetails)\n            // into an ordered array\n            var pathSegmentsAndParams = urlMatchers\n                .map(UrlMatcher.pathSegmentsAndParams)\n                .reduce(unnestR, [])\n                .map(function (x) { return (isString(x) ? x : getDetails(x)); });\n            // Extract the query params into a separate array\n            var queryParams = urlMatchers\n                .map(UrlMatcher.queryParams)\n                .reduce(unnestR, [])\n                .map(getDetails);\n            var isInvalid = function (param) { return param.isValid === false; };\n            if (pathSegmentsAndParams.concat(queryParams).filter(isInvalid).length) {\n                return null;\n            }\n            /**\n             * Given a Param, applies the parameter value, then returns detailed information about it\n             */\n            function getDetails(param) {\n                // Normalize to typed value\n                var value = param.value(values[param.id]);\n                var isValid = param.validates(value);\n                var isDefaultValue = param.isDefaultValue(value);\n                // Check if we're in squash mode for the parameter\n                var squash = isDefaultValue ? param.squash : false;\n                // Allow the Parameter's Type to encode the value\n                var encoded = param.type.encode(value);\n                return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };\n            }\n            // Build up the path-portion from the list of static segments and parameters\n            var pathString = pathSegmentsAndParams.reduce(function (acc, x) {\n                // The element is a static segment (a raw string); just append it\n                if (isString(x))\n                    return acc + x;\n                // Otherwise, it's a ParamDetails.\n                var squash = x.squash, encoded = x.encoded, param = x.param;\n                // If squash is === true, try to remove a slash from the path\n                if (squash === true)\n                    return acc.match(/\\/$/) ? acc.slice(0, -1) : acc;\n                // If squash is a string, use the string for the param value\n                if (isString(squash))\n                    return acc + squash;\n                if (squash !== false)\n                    return acc; // ?\n                if (encoded == null)\n                    return acc;\n                // If this parameter value is an array, encode the value using encodeDashes\n                if (isArray(encoded))\n                    return acc + map(encoded, UrlMatcher.encodeDashes).join('-');\n                // If the parameter type is \"raw\", then do not encodeURIComponent\n                if (param.raw)\n                    return acc + encoded;\n                // Encode the value\n                return acc + encodeURIComponent(encoded);\n            }, '');\n            // Build the query string by applying parameter values (array or regular)\n            // then mapping to key=value, then flattening and joining using \"&\"\n            var queryString = queryParams\n                .map(function (paramDetails) {\n                var param = paramDetails.param, squash = paramDetails.squash, encoded = paramDetails.encoded, isDefaultValue = paramDetails.isDefaultValue;\n                if (encoded == null || (isDefaultValue && squash !== false))\n                    return;\n                if (!isArray(encoded))\n                    encoded = [encoded];\n                if (encoded.length === 0)\n                    return;\n                if (!param.raw)\n                    encoded = map(encoded, encodeURIComponent);\n                return encoded.map(function (val) { return param.id + \"=\" + val; });\n            })\n                .filter(identity)\n                .reduce(unnestR, [])\n                .join('&');\n            // Concat the pathstring with the queryString (if exists) and the hashString (if exists)\n            return pathString + (queryString ? \"?\" + queryString : '') + (values['#'] ? '#' + values['#'] : '');\n        };\n        /** @internal */\n        UrlMatcher.nameValidator = /^\\w+([-.]+\\w+)*(?:\\[\\])?$/;\n        return UrlMatcher;\n    }());\n\n    var __assign = (undefined && undefined.__assign) || function () {\n        __assign = Object.assign || function(t) {\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\n                s = arguments[i];\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                    t[p] = s[p];\n            }\n            return t;\n        };\n        return __assign.apply(this, arguments);\n    };\n    var ParamFactory = /** @class */ (function () {\n        function ParamFactory(router) {\n            this.router = router;\n        }\n        ParamFactory.prototype.fromConfig = function (id, type, state) {\n            return new Param(id, type, exports.DefType.CONFIG, this.router.urlService.config, state);\n        };\n        ParamFactory.prototype.fromPath = function (id, type, state) {\n            return new Param(id, type, exports.DefType.PATH, this.router.urlService.config, state);\n        };\n        ParamFactory.prototype.fromSearch = function (id, type, state) {\n            return new Param(id, type, exports.DefType.SEARCH, this.router.urlService.config, state);\n        };\n        return ParamFactory;\n    }());\n    /**\n     * Factory for [[UrlMatcher]] instances.\n     *\n     * The factory is available to ng1 services as\n     * `$urlMatcherFactory` or ng1 providers as `$urlMatcherFactoryProvider`.\n     */\n    var UrlMatcherFactory = /** @class */ (function () {\n        // TODO: move implementations to UrlConfig (urlService.config)\n        function UrlMatcherFactory(/** @internal */ router) {\n            var _this = this;\n            this.router = router;\n            /** Creates a new [[Param]] for a given location (DefType) */\n            this.paramFactory = new ParamFactory(this.router);\n            // TODO: Check if removal of this will break anything, then remove these\n            this.UrlMatcher = UrlMatcher;\n            this.Param = Param;\n            /** @deprecated use [[UrlConfig.caseInsensitive]] */\n            this.caseInsensitive = function (value) { return _this.router.urlService.config.caseInsensitive(value); };\n            /** @deprecated use [[UrlConfig.defaultSquashPolicy]] */\n            this.defaultSquashPolicy = function (value) { return _this.router.urlService.config.defaultSquashPolicy(value); };\n            /** @deprecated use [[UrlConfig.strictMode]] */\n            this.strictMode = function (value) { return _this.router.urlService.config.strictMode(value); };\n            /** @deprecated use [[UrlConfig.type]] */\n            this.type = function (name, definition, definitionFn) {\n                return _this.router.urlService.config.type(name, definition, definitionFn) || _this;\n            };\n        }\n        /**\n         * Creates a [[UrlMatcher]] for the specified pattern.\n         *\n         * @param pattern  The URL pattern.\n         * @param config  The config object hash.\n         * @returns The UrlMatcher.\n         */\n        UrlMatcherFactory.prototype.compile = function (pattern, config) {\n            var urlConfig = this.router.urlService.config;\n            // backward-compatible support for config.params -> config.state.params\n            var params = config && !config.state && config.params;\n            config = params ? __assign({ state: { params: params } }, config) : config;\n            var globalConfig = {\n                strict: urlConfig._isStrictMode,\n                caseInsensitive: urlConfig._isCaseInsensitive,\n                decodeParams: urlConfig._decodeParams,\n            };\n            return new UrlMatcher(pattern, urlConfig.paramTypes, this.paramFactory, extend(globalConfig, config));\n        };\n        /**\n         * Returns true if the specified object is a [[UrlMatcher]], or false otherwise.\n         *\n         * @param object  The object to perform the type check against.\n         * @returns `true` if the object matches the `UrlMatcher` interface, by\n         *          implementing all the same methods.\n         */\n        UrlMatcherFactory.prototype.isMatcher = function (object) {\n            // TODO: typeof?\n            if (!isObject(object))\n                return false;\n            var result = true;\n            forEach(UrlMatcher.prototype, function (val, name) {\n                if (isFunction(val))\n                    result = result && isDefined(object[name]) && isFunction(object[name]);\n            });\n            return result;\n        };\n        /** @internal */\n        UrlMatcherFactory.prototype.$get = function () {\n            var urlConfig = this.router.urlService.config;\n            urlConfig.paramTypes.enqueue = false;\n            urlConfig.paramTypes._flushTypeQueue();\n            return this;\n        };\n        return UrlMatcherFactory;\n    }());\n\n    /**\n     * Creates a [[UrlRule]]\n     *\n     * Creates a [[UrlRule]] from a:\n     *\n     * - `string`\n     * - [[UrlMatcher]]\n     * - `RegExp`\n     * - [[StateObject]]\n     */\n    var UrlRuleFactory = /** @class */ (function () {\n        function UrlRuleFactory(router) {\n            this.router = router;\n        }\n        UrlRuleFactory.prototype.compile = function (str) {\n            return this.router.urlMatcherFactory.compile(str);\n        };\n        UrlRuleFactory.prototype.create = function (what, handler) {\n            var _this = this;\n            var isState = StateObject.isState, isStateDeclaration = StateObject.isStateDeclaration;\n            var makeRule = pattern([\n                [isString, function (_what) { return makeRule(_this.compile(_what)); }],\n                [is(UrlMatcher), function (_what) { return _this.fromUrlMatcher(_what, handler); }],\n                [or(isState, isStateDeclaration), function (_what) { return _this.fromState(_what, _this.router); }],\n                [is(RegExp), function (_what) { return _this.fromRegExp(_what, handler); }],\n                [isFunction, function (_what) { return new BaseUrlRule(_what, handler); }],\n            ]);\n            var rule = makeRule(what);\n            if (!rule)\n                throw new Error(\"invalid 'what' in when()\");\n            return rule;\n        };\n        /**\n         * A UrlRule which matches based on a UrlMatcher\n         *\n         * The `handler` may be either a `string`, a [[UrlRuleHandlerFn]] or another [[UrlMatcher]]\n         *\n         * ## Handler as a function\n         *\n         * If `handler` is a function, the function is invoked with:\n         *\n         * - matched parameter values ([[RawParams]] from [[UrlMatcher.exec]])\n         * - url: the current Url ([[UrlParts]])\n         * - router: the router object ([[UIRouter]])\n         *\n         * #### Example:\n         * ```js\n         * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n         * var rule = factory.fromUrlMatcher(urlMatcher, match => \"/home/\" + match.fooId + \"/\" + match.barId);\n         * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n         * var result = rule.handler(match); // '/home/123/456'\n         * ```\n         *\n         * ## Handler as UrlMatcher\n         *\n         * If `handler` is a UrlMatcher, the handler matcher is used to create the new url.\n         * The `handler` UrlMatcher is formatted using the matched param from the first matcher.\n         * The url is replaced with the result.\n         *\n         * #### Example:\n         * ```js\n         * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n         * var handler = $umf.compile(\"/home/:fooId/:barId\");\n         * var rule = factory.fromUrlMatcher(urlMatcher, handler);\n         * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n         * var result = rule.handler(match); // '/home/123/456'\n         * ```\n         */\n        UrlRuleFactory.prototype.fromUrlMatcher = function (urlMatcher, handler) {\n            var _handler = handler;\n            if (isString(handler))\n                handler = this.router.urlMatcherFactory.compile(handler);\n            if (is(UrlMatcher)(handler))\n                _handler = function (match) { return handler.format(match); };\n            function matchUrlParamters(url) {\n                var params = urlMatcher.exec(url.path, url.search, url.hash);\n                return urlMatcher.validates(params) && params;\n            }\n            // Prioritize URLs, lowest to highest:\n            // - Some optional URL parameters, but none matched\n            // - No optional parameters in URL\n            // - Some optional parameters, some matched\n            // - Some optional parameters, all matched\n            function matchPriority(params) {\n                var optional = urlMatcher.parameters().filter(function (param) { return param.isOptional; });\n                if (!optional.length)\n                    return 0.000001;\n                var matched = optional.filter(function (param) { return params[param.id]; });\n                return matched.length / optional.length;\n            }\n            var details = { urlMatcher: urlMatcher, matchPriority: matchPriority, type: 'URLMATCHER' };\n            return extend(new BaseUrlRule(matchUrlParamters, _handler), details);\n        };\n        /**\n         * A UrlRule which matches a state by its url\n         *\n         * #### Example:\n         * ```js\n         * var rule = factory.fromState($state.get('foo'), router);\n         * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n         * var result = rule.handler(match);\n         * // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }\n         * ```\n         */\n        UrlRuleFactory.prototype.fromState = function (stateOrDecl, router) {\n            var state = StateObject.isStateDeclaration(stateOrDecl) ? stateOrDecl.$$state() : stateOrDecl;\n            /**\n             * Handles match by transitioning to matched state\n             *\n             * First checks if the router should start a new transition.\n             * A new transition is not required if the current state's URL\n             * and the new URL are already identical\n             */\n            var handler = function (match) {\n                var $state = router.stateService;\n                var globals = router.globals;\n                if ($state.href(state, match) !== $state.href(globals.current, globals.params)) {\n                    $state.transitionTo(state, match, { inherit: true, source: 'url' });\n                }\n            };\n            var details = { state: state, type: 'STATE' };\n            return extend(this.fromUrlMatcher(state.url, handler), details);\n        };\n        /**\n         * A UrlRule which matches based on a regular expression\n         *\n         * The `handler` may be either a [[UrlRuleHandlerFn]] or a string.\n         *\n         * ## Handler as a function\n         *\n         * If `handler` is a function, the function is invoked with:\n         *\n         * - regexp match array (from `regexp`)\n         * - url: the current Url ([[UrlParts]])\n         * - router: the router object ([[UIRouter]])\n         *\n         * #### Example:\n         * ```js\n         * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, match => \"/home/\" + match[1])\n         * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n         * var result = rule.handler(match); // '/home/bar'\n         * ```\n         *\n         * ## Handler as string\n         *\n         * If `handler` is a string, the url is *replaced by the string* when the Rule is invoked.\n         * The string is first interpolated using `string.replace()` style pattern.\n         *\n         * #### Example:\n         * ```js\n         * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, \"/home/$1\")\n         * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n         * var result = rule.handler(match); // '/home/bar'\n         * ```\n         */\n        UrlRuleFactory.prototype.fromRegExp = function (regexp, handler) {\n            if (regexp.global || regexp.sticky)\n                throw new Error('Rule RegExp must not be global or sticky');\n            /**\n             * If handler is a string, the url will be replaced by the string.\n             * If the string has any String.replace() style variables in it (like `$2`),\n             * they will be replaced by the captures from [[match]]\n             */\n            var redirectUrlTo = function (match) {\n                // Interpolates matched values into $1 $2, etc using a String.replace()-style pattern\n                return handler.replace(/\\$(\\$|\\d{1,2})/, function (m, what) { return match[what === '$' ? 0 : Number(what)]; });\n            };\n            var _handler = isString(handler) ? redirectUrlTo : handler;\n            var matchParamsFromRegexp = function (url) { return regexp.exec(url.path); };\n            var details = { regexp: regexp, type: 'REGEXP' };\n            return extend(new BaseUrlRule(matchParamsFromRegexp, _handler), details);\n        };\n        UrlRuleFactory.isUrlRule = function (obj) { return obj && ['type', 'match', 'handler'].every(function (key) { return isDefined(obj[key]); }); };\n        return UrlRuleFactory;\n    }());\n    /**\n     * A base rule which calls `match`\n     *\n     * The value from the `match` function is passed through to the `handler`.\n     * @internal\n     */\n    var BaseUrlRule = /** @class */ (function () {\n        function BaseUrlRule(match, handler) {\n            var _this = this;\n            this.match = match;\n            this.type = 'RAW';\n            this.matchPriority = function (match) { return 0 - _this.$id; };\n            this.handler = handler || identity;\n        }\n        return BaseUrlRule;\n    }());\n\n    function appendBasePath(url, isHtml5, absolute, baseHref) {\n        if (baseHref === '/')\n            return url;\n        if (isHtml5)\n            return stripLastPathElement(baseHref) + url;\n        if (absolute)\n            return baseHref.slice(1) + url;\n        return url;\n    }\n    /**\n     * Updates URL and responds to URL changes\n     *\n     * ### Deprecation warning:\n     * This class is now considered to be an internal API\n     * Use the [[UrlService]] instead.\n     * For configuring URL rules, use the [[UrlRules]] which can be found as [[UrlService.rules]].\n     */\n    var UrlRouter = /** @class */ (function () {\n        /** @internal */\n        function UrlRouter(/** @internal */ router) {\n            var _this = this;\n            this.router = router;\n            // Delegate these calls to [[UrlService]]\n            /** @deprecated use [[UrlService.sync]]*/\n            this.sync = function (evt) { return _this.router.urlService.sync(evt); };\n            /** @deprecated use [[UrlService.listen]]*/\n            this.listen = function (enabled) { return _this.router.urlService.listen(enabled); };\n            /** @deprecated use [[UrlService.deferIntercept]]*/\n            this.deferIntercept = function (defer) { return _this.router.urlService.deferIntercept(defer); };\n            /** @deprecated use [[UrlService.match]]*/\n            this.match = function (urlParts) { return _this.router.urlService.match(urlParts); };\n            // Delegate these calls to [[UrlRules]]\n            /** @deprecated use [[UrlRules.initial]]*/\n            this.initial = function (handler) {\n                return _this.router.urlService.rules.initial(handler);\n            };\n            /** @deprecated use [[UrlRules.otherwise]]*/\n            this.otherwise = function (handler) {\n                return _this.router.urlService.rules.otherwise(handler);\n            };\n            /** @deprecated use [[UrlRules.removeRule]]*/\n            this.removeRule = function (rule) { return _this.router.urlService.rules.removeRule(rule); };\n            /** @deprecated use [[UrlRules.rule]]*/\n            this.rule = function (rule) { return _this.router.urlService.rules.rule(rule); };\n            /** @deprecated use [[UrlRules.rules]]*/\n            this.rules = function () { return _this.router.urlService.rules.rules(); };\n            /** @deprecated use [[UrlRules.sort]]*/\n            this.sort = function (compareFn) { return _this.router.urlService.rules.sort(compareFn); };\n            /** @deprecated use [[UrlRules.when]]*/\n            this.when = function (matcher, handler, options) { return _this.router.urlService.rules.when(matcher, handler, options); };\n            this.urlRuleFactory = new UrlRuleFactory(router);\n        }\n        /** Internal API. */\n        UrlRouter.prototype.update = function (read) {\n            var $url = this.router.locationService;\n            if (read) {\n                this.location = $url.url();\n                return;\n            }\n            if ($url.url() === this.location)\n                return;\n            $url.url(this.location, true);\n        };\n        /**\n         * Internal API.\n         *\n         * Pushes a new location to the browser history.\n         *\n         * @internal\n         * @param urlMatcher\n         * @param params\n         * @param options\n         */\n        UrlRouter.prototype.push = function (urlMatcher, params, options) {\n            var replace = options && !!options.replace;\n            this.router.urlService.url(urlMatcher.format(params || {}), replace);\n        };\n        /**\n         * Builds and returns a URL with interpolated parameters\n         *\n         * #### Example:\n         * ```js\n         * matcher = $umf.compile(\"/about/:person\");\n         * params = { person: \"bob\" };\n         * $bob = $urlRouter.href(matcher, params);\n         * // $bob == \"/about/bob\";\n         * ```\n         *\n         * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate.\n         * @param params An object of parameter values to fill the matcher's required parameters.\n         * @param options Options object. The options are:\n         *\n         * - **`absolute`** - {boolean=false},  If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n         *\n         * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n         */\n        UrlRouter.prototype.href = function (urlMatcher, params, options) {\n            var url = urlMatcher.format(params);\n            if (url == null)\n                return null;\n            options = options || { absolute: false };\n            var cfg = this.router.urlService.config;\n            var isHtml5 = cfg.html5Mode();\n            if (!isHtml5 && url !== null) {\n                url = '#' + cfg.hashPrefix() + url;\n            }\n            url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref());\n            if (!options.absolute || !url) {\n                return url;\n            }\n            var slash = !isHtml5 && url ? '/' : '';\n            var cfgPort = cfg.port();\n            var port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort);\n            return [cfg.protocol(), '://', cfg.host(), port, slash, url].join('');\n        };\n        Object.defineProperty(UrlRouter.prototype, \"interceptDeferred\", {\n            /** @deprecated use [[UrlService.interceptDeferred]]*/\n            get: function () {\n                return this.router.urlService.interceptDeferred;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        return UrlRouter;\n    }());\n\n    /**\n     * The View service\n     *\n     * This service pairs existing `ui-view` components (which live in the DOM)\n     * with view configs (from the state declaration objects: [[StateDeclaration.views]]).\n     *\n     * - After a successful Transition, the views from the newly entered states are activated via [[activateViewConfig]].\n     *   The views from exited states are deactivated via [[deactivateViewConfig]].\n     *   (See: the [[registerActivateViews]] Transition Hook)\n     *\n     * - As `ui-view` components pop in and out of existence, they register themselves using [[registerUIView]].\n     *\n     * - When the [[sync]] function is called, the registered `ui-view`(s) ([[ActiveUIView]])\n     * are configured with the matching [[ViewConfig]](s)\n     *\n     */\n    var ViewService = /** @class */ (function () {\n        /** @internal */\n        function ViewService(/** @internal */ router) {\n            var _this = this;\n            this.router = router;\n            /** @internal */ this._uiViews = [];\n            /** @internal */ this._viewConfigs = [];\n            /** @internal */ this._viewConfigFactories = {};\n            /** @internal */ this._listeners = [];\n            /** @internal */\n            this._pluginapi = {\n                _rootViewContext: this._rootViewContext.bind(this),\n                _viewConfigFactory: this._viewConfigFactory.bind(this),\n                _registeredUIView: function (id) { return find(_this._uiViews, function (view) { return _this.router.$id + \".\" + view.id === id; }); },\n                _registeredUIViews: function () { return _this._uiViews; },\n                _activeViewConfigs: function () { return _this._viewConfigs; },\n                _onSync: function (listener) {\n                    _this._listeners.push(listener);\n                    return function () { return removeFrom(_this._listeners, listener); };\n                },\n            };\n        }\n        /**\n         * Normalizes a view's name from a state.views configuration block.\n         *\n         * This should be used by a framework implementation to calculate the values for\n         * [[_ViewDeclaration.$uiViewName]] and [[_ViewDeclaration.$uiViewContextAnchor]].\n         *\n         * @param context the context object (state declaration) that the view belongs to\n         * @param rawViewName the name of the view, as declared in the [[StateDeclaration.views]]\n         *\n         * @returns the normalized uiViewName and uiViewContextAnchor that the view targets\n         */\n        ViewService.normalizeUIViewTarget = function (context, rawViewName) {\n            if (rawViewName === void 0) { rawViewName = ''; }\n            // TODO: Validate incoming view name with a regexp to allow:\n            // ex: \"view.name@foo.bar\" , \"^.^.view.name\" , \"view.name@^.^\" , \"\" ,\n            // \"@\" , \"$default@^\" , \"!$default.$default\" , \"!foo.bar\"\n            var viewAtContext = rawViewName.split('@');\n            var uiViewName = viewAtContext[0] || '$default'; // default to unnamed view\n            var uiViewContextAnchor = isString(viewAtContext[1]) ? viewAtContext[1] : '^'; // default to parent context\n            // Handle relative view-name sugar syntax.\n            // Matches rawViewName \"^.^.^.foo.bar\" into array: [\"^.^.^.foo.bar\", \"^.^.^\", \"foo.bar\"],\n            var relativeViewNameSugar = /^(\\^(?:\\.\\^)*)\\.(.*$)/.exec(uiViewName);\n            if (relativeViewNameSugar) {\n                // Clobbers existing contextAnchor (rawViewName validation will fix this)\n                uiViewContextAnchor = relativeViewNameSugar[1]; // set anchor to \"^.^.^\"\n                uiViewName = relativeViewNameSugar[2]; // set view-name to \"foo.bar\"\n            }\n            if (uiViewName.charAt(0) === '!') {\n                uiViewName = uiViewName.substr(1);\n                uiViewContextAnchor = ''; // target absolutely from root\n            }\n            // handle parent relative targeting \"^.^.^\"\n            var relativeMatch = /^(\\^(?:\\.\\^)*)$/;\n            if (relativeMatch.exec(uiViewContextAnchor)) {\n                var anchorState = uiViewContextAnchor.split('.').reduce(function (anchor, x) { return anchor.parent; }, context);\n                uiViewContextAnchor = anchorState.name;\n            }\n            else if (uiViewContextAnchor === '.') {\n                uiViewContextAnchor = context.name;\n            }\n            return { uiViewName: uiViewName, uiViewContextAnchor: uiViewContextAnchor };\n        };\n        /** @internal */\n        ViewService.prototype._rootViewContext = function (context) {\n            return (this._rootContext = context || this._rootContext);\n        };\n        /** @internal */\n        ViewService.prototype._viewConfigFactory = function (viewType, factory) {\n            this._viewConfigFactories[viewType] = factory;\n        };\n        ViewService.prototype.createViewConfig = function (path, decl) {\n            var cfgFactory = this._viewConfigFactories[decl.$type];\n            if (!cfgFactory)\n                throw new Error('ViewService: No view config factory registered for type ' + decl.$type);\n            var cfgs = cfgFactory(path, decl);\n            return isArray(cfgs) ? cfgs : [cfgs];\n        };\n        /**\n         * Deactivates a ViewConfig.\n         *\n         * This function deactivates a `ViewConfig`.\n         * After calling [[sync]], it will un-pair from any `ui-view` with which it is currently paired.\n         *\n         * @param viewConfig The ViewConfig view to deregister.\n         */\n        ViewService.prototype.deactivateViewConfig = function (viewConfig) {\n            trace.traceViewServiceEvent('<- Removing', viewConfig);\n            removeFrom(this._viewConfigs, viewConfig);\n        };\n        ViewService.prototype.activateViewConfig = function (viewConfig) {\n            trace.traceViewServiceEvent('-> Registering', viewConfig);\n            this._viewConfigs.push(viewConfig);\n        };\n        ViewService.prototype.sync = function () {\n            var _this = this;\n            var uiViewsByFqn = this._uiViews.map(function (uiv) { return [uiv.fqn, uiv]; }).reduce(applyPairs, {});\n            // Return a weighted depth value for a uiView.\n            // The depth is the nesting depth of ui-views (based on FQN; times 10,000)\n            // plus the depth of the state that is populating the uiView\n            function uiViewDepth(uiView) {\n                var stateDepth = function (context) { return (context && context.parent ? stateDepth(context.parent) + 1 : 1); };\n                return uiView.fqn.split('.').length * 10000 + stateDepth(uiView.creationContext);\n            }\n            // Return the ViewConfig's context's depth in the context tree.\n            function viewConfigDepth(config) {\n                var context = config.viewDecl.$context, count = 0;\n                while (++count && context.parent)\n                    context = context.parent;\n                return count;\n            }\n            // Given a depth function, returns a compare function which can return either ascending or descending order\n            var depthCompare = curry(function (depthFn, posNeg, left, right) { return posNeg * (depthFn(left) - depthFn(right)); });\n            var matchingConfigPair = function (uiView) {\n                var matchingConfigs = _this._viewConfigs.filter(ViewService.matches(uiViewsByFqn, uiView));\n                if (matchingConfigs.length > 1) {\n                    // This is OK.  Child states can target a ui-view that the parent state also targets (the child wins)\n                    // Sort by depth and return the match from the deepest child\n                    // console.log(`Multiple matching view configs for ${uiView.fqn}`, matchingConfigs);\n                    matchingConfigs.sort(depthCompare(viewConfigDepth, -1)); // descending\n                }\n                return { uiView: uiView, viewConfig: matchingConfigs[0] };\n            };\n            var configureUIView = function (tuple) {\n                // If a parent ui-view is reconfigured, it could destroy child ui-views.\n                // Before configuring a child ui-view, make sure it's still in the active uiViews array.\n                if (_this._uiViews.indexOf(tuple.uiView) !== -1)\n                    tuple.uiView.configUpdated(tuple.viewConfig);\n            };\n            // Sort views by FQN and state depth. Process uiviews nearest the root first.\n            var uiViewTuples = this._uiViews.sort(depthCompare(uiViewDepth, 1)).map(matchingConfigPair);\n            var matchedViewConfigs = uiViewTuples.map(function (tuple) { return tuple.viewConfig; });\n            var unmatchedConfigTuples = this._viewConfigs\n                .filter(function (config) { return !inArray(matchedViewConfigs, config); })\n                .map(function (viewConfig) { return ({ uiView: undefined, viewConfig: viewConfig }); });\n            uiViewTuples.forEach(configureUIView);\n            var allTuples = uiViewTuples.concat(unmatchedConfigTuples);\n            this._listeners.forEach(function (cb) { return cb(allTuples); });\n            trace.traceViewSync(allTuples);\n        };\n        /**\n         * Registers a `ui-view` component\n         *\n         * When a `ui-view` component is created, it uses this method to register itself.\n         * After registration the [[sync]] method is used to ensure all `ui-view` are configured with the proper [[ViewConfig]].\n         *\n         * Note: the `ui-view` component uses the `ViewConfig` to determine what view should be loaded inside the `ui-view`,\n         * and what the view's state context is.\n         *\n         * Note: There is no corresponding `deregisterUIView`.\n         *       A `ui-view` should hang on to the return value of `registerUIView` and invoke it to deregister itself.\n         *\n         * @param uiView The metadata for a UIView\n         * @return a de-registration function used when the view is destroyed.\n         */\n        ViewService.prototype.registerUIView = function (uiView) {\n            trace.traceViewServiceUIViewEvent('-> Registering', uiView);\n            var uiViews = this._uiViews;\n            var fqnAndTypeMatches = function (uiv) { return uiv.fqn === uiView.fqn && uiv.$type === uiView.$type; };\n            if (uiViews.filter(fqnAndTypeMatches).length)\n                trace.traceViewServiceUIViewEvent('!!!! duplicate uiView named:', uiView);\n            uiViews.push(uiView);\n            this.sync();\n            return function () {\n                var idx = uiViews.indexOf(uiView);\n                if (idx === -1) {\n                    trace.traceViewServiceUIViewEvent('Tried removing non-registered uiView', uiView);\n                    return;\n                }\n                trace.traceViewServiceUIViewEvent('<- Deregistering', uiView);\n                removeFrom(uiViews)(uiView);\n            };\n        };\n        /**\n         * Returns the list of views currently available on the page, by fully-qualified name.\n         *\n         * @return {Array} Returns an array of fully-qualified view names.\n         */\n        ViewService.prototype.available = function () {\n            return this._uiViews.map(prop('fqn'));\n        };\n        /**\n         * Returns the list of views on the page containing loaded content.\n         *\n         * @return {Array} Returns an array of fully-qualified view names.\n         */\n        ViewService.prototype.active = function () {\n            return this._uiViews.filter(prop('$config')).map(prop('name'));\n        };\n        /**\n         * Given a ui-view and a ViewConfig, determines if they \"match\".\n         *\n         * A ui-view has a fully qualified name (fqn) and a context object.  The fqn is built from its overall location in\n         * the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.\n         *\n         * A ViewConfig has a target ui-view name and a context anchor.  The ui-view name can be a simple name, or\n         * can be a segmented ui-view path, describing a portion of a ui-view fqn.\n         *\n         * In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type\n         *\n         * If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:\n         * - the ui-view's name matches the ViewConfig's target name\n         * - the ui-view's context matches the ViewConfig's anchor\n         *\n         * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:\n         * - There exists a parent ui-view where:\n         *    - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name\n         *    - the parent ui-view's context matches the ViewConfig's anchor\n         * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn\n         *\n         * Example:\n         *\n         * DOM:\n         * <ui-view>                        <!-- created in the root context (name: \"\") -->\n         *   <ui-view name=\"foo\">                <!-- created in the context named: \"A\"      -->\n         *     <ui-view>                    <!-- created in the context named: \"A.B\"    -->\n         *       <ui-view name=\"bar\">            <!-- created in the context named: \"A.B.C\"  -->\n         *       </ui-view>\n         *     </ui-view>\n         *   </ui-view>\n         * </ui-view>\n         *\n         * uiViews: [\n         *  { fqn: \"$default\",                  creationContext: { name: \"\" } },\n         *  { fqn: \"$default.foo\",              creationContext: { name: \"A\" } },\n         *  { fqn: \"$default.foo.$default\",     creationContext: { name: \"A.B\" } }\n         *  { fqn: \"$default.foo.$default.bar\", creationContext: { name: \"A.B.C\" } }\n         * ]\n         *\n         * These four view configs all match the ui-view with the fqn: \"$default.foo.$default.bar\":\n         *\n         * - ViewConfig1: { uiViewName: \"bar\",                       uiViewContextAnchor: \"A.B.C\" }\n         * - ViewConfig2: { uiViewName: \"$default.bar\",              uiViewContextAnchor: \"A.B\" }\n         * - ViewConfig3: { uiViewName: \"foo.$default.bar\",          uiViewContextAnchor: \"A\" }\n         * - ViewConfig4: { uiViewName: \"$default.foo.$default.bar\", uiViewContextAnchor: \"\" }\n         *\n         * Using ViewConfig3 as an example, it matches the ui-view with fqn \"$default.foo.$default.bar\" because:\n         * - The ViewConfig's segmented target name is: [ \"foo\", \"$default\", \"bar\" ]\n         * - There exists a parent ui-view (which has fqn: \"$default.foo\") where:\n         *    - the parent ui-view's name \"foo\" matches the first segment \"foo\" of the ViewConfig's target name\n         *    - the parent ui-view's context \"A\" matches the ViewConfig's anchor context \"A\"\n         * - And the remaining segments [ \"$default\", \"bar\" ].join(\".\"_ of the ViewConfig's target name match\n         *   the tail of the ui-view's fqn \"default.bar\"\n         *\n         * @internal\n         */\n        ViewService.matches = function (uiViewsByFqn, uiView) { return function (viewConfig) {\n            // Don't supply an ng1 ui-view with an ng2 ViewConfig, etc\n            if (uiView.$type !== viewConfig.viewDecl.$type)\n                return false;\n            // Split names apart from both viewConfig and uiView into segments\n            var vc = viewConfig.viewDecl;\n            var vcSegments = vc.$uiViewName.split('.');\n            var uivSegments = uiView.fqn.split('.');\n            // Check if the tails of the segment arrays match. ex, these arrays' tails match:\n            // vc: [\"foo\", \"bar\"], uiv fqn: [\"$default\", \"foo\", \"bar\"]\n            if (!equals(vcSegments, uivSegments.slice(0 - vcSegments.length)))\n                return false;\n            // Now check if the fqn ending at the first segment of the viewConfig matches the context:\n            // [\"$default\", \"foo\"].join(\".\") == \"$default.foo\", does the ui-view $default.foo context match?\n            var negOffset = 1 - vcSegments.length || undefined;\n            var fqnToFirstSegment = uivSegments.slice(0, negOffset).join('.');\n            var uiViewContext = uiViewsByFqn[fqnToFirstSegment].creationContext;\n            return vc.$uiViewContextAnchor === (uiViewContext && uiViewContext.name);\n        }; };\n        return ViewService;\n    }());\n\n    /**\n     * Global router state\n     *\n     * This is where we hold the global mutable state such as current state, current\n     * params, current transition, etc.\n     */\n    var UIRouterGlobals = /** @class */ (function () {\n        function UIRouterGlobals() {\n            /**\n             * Current parameter values\n             *\n             * The parameter values from the latest successful transition\n             */\n            this.params = new StateParams();\n            /** @internal */\n            this.lastStartedTransitionId = -1;\n            /** @internal */\n            this.transitionHistory = new Queue([], 1);\n            /** @internal */\n            this.successfulTransitions = new Queue([], 1);\n        }\n        UIRouterGlobals.prototype.dispose = function () {\n            this.transitionHistory.clear();\n            this.successfulTransitions.clear();\n            this.transition = null;\n        };\n        return UIRouterGlobals;\n    }());\n\n    var prioritySort = function (a, b) { return (b.priority || 0) - (a.priority || 0); };\n    var typeSort = function (a, b) {\n        var weights = { STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1 };\n        return (weights[a.type] || 0) - (weights[b.type] || 0);\n    };\n    var urlMatcherSort = function (a, b) {\n        return !a.urlMatcher || !b.urlMatcher ? 0 : UrlMatcher.compare(a.urlMatcher, b.urlMatcher);\n    };\n    var idSort = function (a, b) {\n        // Identically sorted STATE and URLMATCHER best rule will be chosen by `matchPriority` after each rule matches the URL\n        var useMatchPriority = { STATE: true, URLMATCHER: true };\n        var equal = useMatchPriority[a.type] && useMatchPriority[b.type];\n        return equal ? 0 : (a.$id || 0) - (b.$id || 0);\n    };\n    /**\n     * Default rule priority sorting function.\n     *\n     * Sorts rules by:\n     *\n     * - Explicit priority (set rule priority using [[UrlRules.when]])\n     * - Rule type (STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1)\n     * - `UrlMatcher` specificity ([[UrlMatcher.compare]]): works for STATE and URLMATCHER types to pick the most specific rule.\n     * - Rule registration order (for rule types other than STATE and URLMATCHER)\n     *   - Equally sorted State and UrlMatcher rules will each match the URL.\n     *     Then, the *best* match is chosen based on how many parameter values were matched.\n     */\n    var defaultRuleSortFn;\n    defaultRuleSortFn = function (a, b) {\n        var cmp = prioritySort(a, b);\n        if (cmp !== 0)\n            return cmp;\n        cmp = typeSort(a, b);\n        if (cmp !== 0)\n            return cmp;\n        cmp = urlMatcherSort(a, b);\n        if (cmp !== 0)\n            return cmp;\n        return idSort(a, b);\n    };\n    function getHandlerFn(handler) {\n        if (!isFunction(handler) && !isString(handler) && !is(TargetState)(handler) && !TargetState.isDef(handler)) {\n            throw new Error(\"'handler' must be a string, function, TargetState, or have a state: 'newtarget' property\");\n        }\n        return isFunction(handler) ? handler : val(handler);\n    }\n    /**\n     * API for managing URL rules\n     *\n     * This API is used to create and manage URL rules.\n     * URL rules are a mechanism to respond to specific URL patterns.\n     *\n     * The most commonly used methods are [[otherwise]] and [[when]].\n     *\n     * This API is found at `router.urlService.rules` (see: [[UIRouter.urlService]], [[URLService.rules]])\n     */\n    var UrlRules = /** @class */ (function () {\n        /** @internal */\n        function UrlRules(/** @internal */ router) {\n            this.router = router;\n            /** @internal */ this._sortFn = defaultRuleSortFn;\n            /** @internal */ this._rules = [];\n            /** @internal */ this._id = 0;\n            this.urlRuleFactory = new UrlRuleFactory(router);\n        }\n        /** @internal */\n        UrlRules.prototype.dispose = function (router) {\n            this._rules = [];\n            delete this._otherwiseFn;\n        };\n        /**\n         * Defines the initial state, path, or behavior to use when the app starts.\n         *\n         * This rule defines the initial/starting state for the application.\n         *\n         * This rule is triggered the first time the URL is checked (when the app initially loads).\n         * The rule is triggered only when the url matches either `\"\"` or `\"/\"`.\n         *\n         * Note: The rule is intended to be used when the root of the application is directly linked to.\n         * When the URL is *not* `\"\"` or `\"/\"` and doesn't match other rules, the [[otherwise]] rule is triggered.\n         * This allows 404-like behavior when an unknown URL is deep-linked.\n         *\n         * #### Example:\n         * Start app at `home` state.\n         * ```js\n         * .initial({ state: 'home' });\n         * ```\n         *\n         * #### Example:\n         * Start app at `/home` (by url)\n         * ```js\n         * .initial('/home');\n         * ```\n         *\n         * #### Example:\n         * When no other url rule matches, go to `home` state\n         * ```js\n         * .initial((matchValue, url, router) => {\n         *   console.log('initial state');\n         *   return { state: 'home' };\n         * })\n         * ```\n         *\n         * @param handler The initial state or url path, or a function which returns the state or url path (or performs custom logic).\n         */\n        UrlRules.prototype.initial = function (handler) {\n            var handlerFn = getHandlerFn(handler);\n            var matchFn = function (urlParts, router) {\n                return router.globals.transitionHistory.size() === 0 && !!/^\\/?$/.exec(urlParts.path);\n            };\n            this.rule(this.urlRuleFactory.create(matchFn, handlerFn));\n        };\n        /**\n         * Defines the state, url, or behavior to use when no other rule matches the URL.\n         *\n         * This rule is matched when *no other rule* matches.\n         * It is generally used to handle unknown URLs (similar to \"404\" behavior, but on the client side).\n         *\n         * - If `handler` a string, it is treated as a url redirect\n         *\n         * #### Example:\n         * When no other url rule matches, redirect to `/index`\n         * ```js\n         * .otherwise('/index');\n         * ```\n         *\n         * - If `handler` is an object with a `state` property, the state is activated.\n         *\n         * #### Example:\n         * When no other url rule matches, redirect to `home` and provide a `dashboard` parameter value.\n         * ```js\n         * .otherwise({ state: 'home', params: { dashboard: 'default' } });\n         * ```\n         *\n         * - If `handler` is a function, the function receives the current url ([[UrlParts]]) and the [[UIRouter]] object.\n         *   The function can perform actions, and/or return a value.\n         *\n         * #### Example:\n         * When no other url rule matches, manually trigger a transition to the `home` state\n         * ```js\n         * .otherwise((matchValue, urlParts, router) => {\n         *   router.stateService.go('home');\n         * });\n         * ```\n         *\n         * #### Example:\n         * When no other url rule matches, go to `home` state\n         * ```js\n         * .otherwise((matchValue, urlParts, router) => {\n         *   return { state: 'home' };\n         * });\n         * ```\n         *\n         * @param handler The url path to redirect to, or a function which returns the url path (or performs custom logic).\n         */\n        UrlRules.prototype.otherwise = function (handler) {\n            var handlerFn = getHandlerFn(handler);\n            this._otherwiseFn = this.urlRuleFactory.create(val(true), handlerFn);\n            this._sorted = false;\n        };\n        /**\n         * Remove a rule previously registered\n         *\n         * @param rule the matcher rule that was previously registered using [[rule]]\n         */\n        UrlRules.prototype.removeRule = function (rule) {\n            removeFrom(this._rules, rule);\n        };\n        /**\n         * Manually adds a URL Rule.\n         *\n         * Usually, a url rule is added using [[StateDeclaration.url]] or [[when]].\n         * This api can be used directly for more control (to register a [[BaseUrlRule]], for example).\n         * Rules can be created using [[urlRuleFactory]], or created manually as simple objects.\n         *\n         * A rule should have a `match` function which returns truthy if the rule matched.\n         * It should also have a `handler` function which is invoked if the rule is the best match.\n         *\n         * @return a function that deregisters the rule\n         */\n        UrlRules.prototype.rule = function (rule) {\n            var _this = this;\n            if (!UrlRuleFactory.isUrlRule(rule))\n                throw new Error('invalid rule');\n            rule.$id = this._id++;\n            rule.priority = rule.priority || 0;\n            this._rules.push(rule);\n            this._sorted = false;\n            return function () { return _this.removeRule(rule); };\n        };\n        /**\n         * Gets all registered rules\n         *\n         * @returns an array of all the registered rules\n         */\n        UrlRules.prototype.rules = function () {\n            this.ensureSorted();\n            return this._rules.concat(this._otherwiseFn ? [this._otherwiseFn] : []);\n        };\n        /**\n         * Defines URL Rule priorities\n         *\n         * More than one rule ([[UrlRule]]) might match a given URL.\n         * This `compareFn` is used to sort the rules by priority.\n         * Higher priority rules should sort earlier.\n         *\n         * The [[defaultRuleSortFn]] is used by default.\n         *\n         * You only need to call this function once.\n         * The `compareFn` will be used to sort the rules as each is registered.\n         *\n         * If called without any parameter, it will re-sort the rules.\n         *\n         * ---\n         *\n         * Url rules may come from multiple sources: states's urls ([[StateDeclaration.url]]), [[when]], and [[rule]].\n         * Each rule has a (user-provided) [[UrlRule.priority]], a [[UrlRule.type]], and a [[UrlRule.$id]]\n         * The `$id` is is the order in which the rule was registered.\n         *\n         * The sort function should use these data, or data found on a specific type\n         * of [[UrlRule]] (such as [[StateRule.state]]), to order the rules as desired.\n         *\n         * #### Example:\n         * This compare function prioritizes rules by the order in which the rules were registered.\n         * A rule registered earlier has higher priority.\n         *\n         * ```js\n         * function compareFn(a, b) {\n         *   return a.$id - b.$id;\n         * }\n         * ```\n         *\n         * @param compareFn a function that compares to [[UrlRule]] objects.\n         *    The `compareFn` should abide by the `Array.sort` compare function rules.\n         *    Given two rules, `a` and `b`, return a negative number if `a` should be higher priority.\n         *    Return a positive number if `b` should be higher priority.\n         *    Return `0` if the rules are identical.\n         *\n         *    See the [mozilla reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description)\n         *    for details.\n         */\n        UrlRules.prototype.sort = function (compareFn) {\n            var sorted = this.stableSort(this._rules, (this._sortFn = compareFn || this._sortFn));\n            // precompute _sortGroup values and apply to each rule\n            var group = 0;\n            for (var i = 0; i < sorted.length; i++) {\n                sorted[i]._group = group;\n                if (i < sorted.length - 1 && this._sortFn(sorted[i], sorted[i + 1]) !== 0) {\n                    group++;\n                }\n            }\n            this._rules = sorted;\n            this._sorted = true;\n        };\n        /** @internal */\n        UrlRules.prototype.ensureSorted = function () {\n            this._sorted || this.sort();\n        };\n        /** @internal */\n        UrlRules.prototype.stableSort = function (arr, compareFn) {\n            var arrOfWrapper = arr.map(function (elem, idx) { return ({ elem: elem, idx: idx }); });\n            arrOfWrapper.sort(function (wrapperA, wrapperB) {\n                var cmpDiff = compareFn(wrapperA.elem, wrapperB.elem);\n                return cmpDiff === 0 ? wrapperA.idx - wrapperB.idx : cmpDiff;\n            });\n            return arrOfWrapper.map(function (wrapper) { return wrapper.elem; });\n        };\n        /**\n         * Registers a `matcher` and `handler` for custom URLs handling.\n         *\n         * The `matcher` can be:\n         *\n         * - a [[UrlMatcher]]: See: [[UrlMatcherFactory.compile]]\n         * - a `string`: The string is compiled to a [[UrlMatcher]]\n         * - a `RegExp`: The regexp is used to match the url.\n         *\n         * The `handler` can be:\n         *\n         * - a string: The url is redirected to the value of the string.\n         * - a function: The url is redirected to the return value of the function.\n         *\n         * ---\n         *\n         * When the `handler` is a `string` and the `matcher` is a `UrlMatcher` (or string), the redirect\n         * string is interpolated with parameter values.\n         *\n         * #### Example:\n         * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n         * ```js\n         * .when(\"/foo/:param1\", \"/bar/:param1\")\n         * ```\n         *\n         * ---\n         *\n         * When the `handler` is a string and the `matcher` is a `RegExp`, the redirect string is\n         * interpolated with capture groups from the RegExp.\n         *\n         * #### Example:\n         * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n         * ```js\n         * .when(new RegExp(\"^/foo/(.*)$\"), \"/bar/$1\");\n         * ```\n         *\n         * ---\n         *\n         * When the handler is a function, it receives the matched value, the current URL, and the `UIRouter` object (See [[UrlRuleHandlerFn]]).\n         * The \"matched value\" differs based on the `matcher`.\n         * For [[UrlMatcher]]s, it will be the matched state params.\n         * For `RegExp`, it will be the match array from `regexp.exec()`.\n         *\n         * If the handler returns a string, the URL is redirected to the string.\n         *\n         * #### Example:\n         * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n         * ```js\n         * .when(new RegExp(\"^/foo/(.*)$\"), match => \"/bar/\" + match[1]);\n         * ```\n         *\n         * Note: the `handler` may also invoke arbitrary code, such as `$state.go()`\n         *\n         * @param matcher A pattern `string` to match, compiled as a [[UrlMatcher]], or a `RegExp`.\n         * @param handler The path to redirect to, or a function that returns the path.\n         * @param options `{ priority: number }`\n         *\n         * @return the registered [[UrlRule]]\n         */\n        UrlRules.prototype.when = function (matcher, handler, options) {\n            var rule = this.urlRuleFactory.create(matcher, handler);\n            if (isDefined(options && options.priority))\n                rule.priority = options.priority;\n            this.rule(rule);\n            return rule;\n        };\n        return UrlRules;\n    }());\n\n    /**\n     * An API to customize the URL behavior and retrieve URL configuration\n     *\n     * This API is used to customize the behavior of the URL.\n     * This includes optional trailing slashes ([[strictMode]]), case sensitivity ([[caseInsensitive]]),\n     * and custom parameter encoding (custom [[type]]).\n     *\n     * It also has information about the location (url) configuration such as [[port]] and [[baseHref]].\n     * This information can be used to build absolute URLs, such as\n     * `https://example.com:443/basepath/state/substate?param1=a#hashvalue`;\n     *\n     * This API is found at `router.urlService.config` (see: [[UIRouter.urlService]], [[URLService.config]])\n     */\n    var UrlConfig = /** @class */ (function () {\n        /** @internal */ function UrlConfig(/** @internal */ router) {\n            var _this = this;\n            this.router = router;\n            /** @internal */ this.paramTypes = new ParamTypes();\n            /** @internal */ this._decodeParams = true;\n            /** @internal */ this._isCaseInsensitive = false;\n            /** @internal */ this._isStrictMode = true;\n            /** @internal */ this._defaultSquashPolicy = false;\n            /** @internal */ this.dispose = function () { return _this.paramTypes.dispose(); };\n            // Delegate these calls to the current LocationConfig implementation\n            /**\n             * Gets the base Href, e.g., `http://localhost/approot/`\n             *\n             * @return the application's base href\n             */\n            this.baseHref = function () { return _this.router.locationConfig.baseHref(); };\n            /**\n             * Gets or sets the hashPrefix\n             *\n             * This only applies when not running in [[html5Mode]] (pushstate mode)\n             *\n             * If the current url is `http://localhost/app#!/uirouter/path/#anchor`, it returns `!` which is the prefix for the \"hashbang\" portion.\n             *\n             * @return the hash prefix\n             */\n            this.hashPrefix = function (newprefix) { return _this.router.locationConfig.hashPrefix(newprefix); };\n            /**\n             * Gets the host, e.g., `localhost`\n             *\n             * @return the protocol\n             */\n            this.host = function () { return _this.router.locationConfig.host(); };\n            /**\n             * Returns true when running in pushstate mode\n             *\n             * @return true when running in html5 mode (pushstate mode).\n             */\n            this.html5Mode = function () { return _this.router.locationConfig.html5Mode(); };\n            /**\n             * Gets the port, e.g., `80`\n             *\n             * @return the port number\n             */\n            this.port = function () { return _this.router.locationConfig.port(); };\n            /**\n             * Gets the protocol, e.g., `http`\n             *\n             * @return the protocol\n             */\n            this.protocol = function () { return _this.router.locationConfig.protocol(); };\n        }\n        /**\n         * Defines whether URL matching should be case sensitive (the default behavior), or not.\n         *\n         * #### Example:\n         * ```js\n         * // Allow case insensitive url matches\n         * urlService.config.caseInsensitive(true);\n         * ```\n         *\n         * @param value `false` to match URL in a case sensitive manner; otherwise `true`;\n         * @returns the current value of caseInsensitive\n         */\n        UrlConfig.prototype.caseInsensitive = function (value) {\n            return (this._isCaseInsensitive = isDefined(value) ? value : this._isCaseInsensitive);\n        };\n        /**\n         * Sets the default behavior when generating or matching URLs with default parameter values.\n         *\n         * #### Example:\n         * ```js\n         * // Remove default parameter values from the url\n         * urlService.config.defaultSquashPolicy(true);\n         * ```\n         *\n         * @param value A string that defines the default parameter URL squashing behavior.\n         *    - `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL\n         *    - `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the\n         *      parameter is surrounded by slashes, squash (remove) one slash from the URL\n         *    - any other string, e.g. \"~\": When generating an href with a default parameter value, squash (remove)\n         *      the parameter value from the URL and replace it with this string.\n         * @returns the current value of defaultSquashPolicy\n         */\n        UrlConfig.prototype.defaultSquashPolicy = function (value) {\n            if (isDefined(value) && value !== true && value !== false && !isString(value))\n                throw new Error(\"Invalid squash policy: \" + value + \". Valid policies: false, true, arbitrary-string\");\n            return (this._defaultSquashPolicy = isDefined(value) ? value : this._defaultSquashPolicy);\n        };\n        /**\n         * Defines whether URLs should match trailing slashes, or not (the default behavior).\n         *\n         * #### Example:\n         * ```js\n         * // Allow optional trailing slashes\n         * urlService.config.strictMode(false);\n         * ```\n         *\n         * @param value `false` to match trailing slashes in URLs, otherwise `true`.\n         * @returns the current value of strictMode\n         */\n        UrlConfig.prototype.strictMode = function (value) {\n            return (this._isStrictMode = isDefined(value) ? value : this._isStrictMode);\n        };\n        /**\n         * Creates and registers a custom [[ParamType]] object\n         *\n         * A custom parameter type can be used to generate URLs with typed parameters or custom encoding/decoding.\n         *\n         * #### Note: Register custom types *before using them* in a state definition.\n         *\n         * #### Example:\n         * ```js\n         * // Encode object parameter as JSON string\n         * urlService.config.type('myjson', {\n         *   encode: (obj) => JSON.stringify(obj),\n         *   decode: (str) => JSON.parse(str),\n         *   is: (val) => typeof(val) === 'object',\n         *   pattern: /[^/]+/,\n         *   equals: (a, b) => _.isEqual(a, b),\n         * });\n         * ```\n         *\n         * See [[ParamTypeDefinition]] for more examples\n         *\n         * @param name The type name.\n         * @param definition The type definition. See [[ParamTypeDefinition]] for information on the values accepted.\n         * @param definitionFn A function that is injected before the app runtime starts.\n         *        The result of this function should be a [[ParamTypeDefinition]].\n         *        The result is merged into the existing `definition`.\n         *        See [[ParamType]] for information on the values accepted.\n         *\n         * @returns if only the `name` parameter was specified: the currently registered [[ParamType]] object, or undefined\n         */\n        UrlConfig.prototype.type = function (name, definition, definitionFn) {\n            var type = this.paramTypes.type(name, definition, definitionFn);\n            return !isDefined(definition) ? type : this;\n        };\n        return UrlConfig;\n    }());\n\n    /**\n     * API for URL management\n     */\n    var UrlService = /** @class */ (function () {\n        /** @internal */\n        function UrlService(/** @internal */ router) {\n            var _this = this;\n            this.router = router;\n            /** @internal */ this.interceptDeferred = false;\n            /**\n             * The nested [[UrlRules]] API for managing URL rules and rewrites\n             *\n             * See: [[UrlRules]] for details\n             */\n            this.rules = new UrlRules(this.router);\n            /**\n             * The nested [[UrlConfig]] API to configure the URL and retrieve URL information\n             *\n             * See: [[UrlConfig]] for details\n             */\n            this.config = new UrlConfig(this.router);\n            // Delegate these calls to the current LocationServices implementation\n            /**\n             * Gets the current url, or updates the url\n             *\n             * ### Getting the current URL\n             *\n             * When no arguments are passed, returns the current URL.\n             * The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.\n             *\n             * For example, the URL may be stored in the hash ([[HashLocationServices]]) or\n             * have a base HREF prepended ([[PushStateLocationServices]]).\n             *\n             * The raw URL in the browser might be:\n             *\n             * ```\n             * http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor\n             * ```\n             *\n             * or\n             *\n             * ```\n             * http://mysite.com/basepath/internal/path/123?param1=foo#anchor\n             * ```\n             *\n             * then this method returns:\n             *\n             * ```\n             * /internal/path/123?param1=foo#anchor\n             * ```\n             *\n             *\n             * #### Example:\n             * ```js\n             * locationServices.url(); // \"/some/path?query=value#anchor\"\n             * ```\n             *\n             * ### Updating the URL\n             *\n             * When `newurl` arguments is provided, changes the URL to reflect `newurl`\n             *\n             * #### Example:\n             * ```js\n             * locationServices.url(\"/some/path?query=value#anchor\", true);\n             * ```\n             *\n             * @param newurl The new value for the URL.\n             *               This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.\n             *               It should not include the protocol, site, port, or base path of an absolute HREF.\n             * @param replace When true, replaces the current history entry (instead of appending it) with this new url\n             * @param state The history's state object, i.e., pushState (if the LocationServices implementation supports it)\n             *\n             * @return the url (after potentially being processed)\n             */\n            this.url = function (newurl, replace, state) {\n                return _this.router.locationService.url(newurl, replace, state);\n            };\n            /**\n             * Gets the path part of the current url\n             *\n             * If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`\n             *\n             * @return the path portion of the url\n             */\n            this.path = function () { return _this.router.locationService.path(); };\n            /**\n             * Gets the search part of the current url as an object\n             *\n             * If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`\n             *\n             * @return the search (query) portion of the url, as an object\n             */\n            this.search = function () { return _this.router.locationService.search(); };\n            /**\n             * Gets the hash part of the current url\n             *\n             * If the current URL is `/some/path?query=value#anchor`, this returns `anchor`\n             *\n             * @return the hash (anchor) portion of the url\n             */\n            this.hash = function () { return _this.router.locationService.hash(); };\n            /**\n             * @internal\n             *\n             * Registers a low level url change handler\n             *\n             * Note: Because this is a low level handler, it's not recommended for general use.\n             *\n             * #### Example:\n             * ```js\n             * let deregisterFn = locationServices.onChange((evt) => console.log(\"url change\", evt));\n             * ```\n             *\n             * @param callback a function that will be called when the url is changing\n             * @return a function that de-registers the callback\n             */\n            this.onChange = function (callback) { return _this.router.locationService.onChange(callback); };\n        }\n        /** @internal */\n        UrlService.prototype.dispose = function () {\n            this.listen(false);\n            this.rules.dispose();\n        };\n        /**\n         * Gets the current URL parts\n         *\n         * This method returns the different parts of the current URL (the [[path]], [[search]], and [[hash]]) as a [[UrlParts]] object.\n         */\n        UrlService.prototype.parts = function () {\n            return { path: this.path(), search: this.search(), hash: this.hash() };\n        };\n        /**\n         * Activates the best rule for the current URL\n         *\n         * Checks the current URL for a matching [[UrlRule]], then invokes that rule's handler.\n         * This method is called internally any time the URL has changed.\n         *\n         * This effectively activates the state (or redirect, etc) which matches the current URL.\n         *\n         * #### Example:\n         * ```js\n         * urlService.deferIntercept();\n         *\n         * fetch('/states.json').then(resp => resp.json()).then(data => {\n         *   data.forEach(state => $stateRegistry.register(state));\n         *   urlService.listen();\n         *   // Find the matching URL and invoke the handler.\n         *   urlService.sync();\n         * });\n         * ```\n         */\n        UrlService.prototype.sync = function (evt) {\n            if (evt && evt.defaultPrevented)\n                return;\n            var _a = this.router, urlService = _a.urlService, stateService = _a.stateService;\n            var url = { path: urlService.path(), search: urlService.search(), hash: urlService.hash() };\n            var best = this.match(url);\n            var applyResult = pattern([\n                [isString, function (newurl) { return urlService.url(newurl, true); }],\n                [TargetState.isDef, function (def) { return stateService.go(def.state, def.params, def.options); }],\n                [is(TargetState), function (target) { return stateService.go(target.state(), target.params(), target.options()); }],\n            ]);\n            applyResult(best && best.rule.handler(best.match, url, this.router));\n        };\n        /**\n         * Starts or stops listening for URL changes\n         *\n         * Call this sometime after calling [[deferIntercept]] to start monitoring the url.\n         * This causes UI-Router to start listening for changes to the URL, if it wasn't already listening.\n         *\n         * If called with `false`, UI-Router will stop listening (call listen(true) to start listening again).\n         *\n         * #### Example:\n         * ```js\n         * urlService.deferIntercept();\n         *\n         * fetch('/states.json').then(resp => resp.json()).then(data => {\n         *   data.forEach(state => $stateRegistry.register(state));\n         *   // Start responding to URL changes\n         *   urlService.listen();\n         *   urlService.sync();\n         * });\n         * ```\n         *\n         * @param enabled `true` or `false` to start or stop listening to URL changes\n         */\n        UrlService.prototype.listen = function (enabled) {\n            var _this = this;\n            if (enabled === false) {\n                this._stopListeningFn && this._stopListeningFn();\n                delete this._stopListeningFn;\n            }\n            else {\n                return (this._stopListeningFn =\n                    this._stopListeningFn || this.router.urlService.onChange(function (evt) { return _this.sync(evt); }));\n            }\n        };\n        /**\n         * Disables monitoring of the URL.\n         *\n         * Call this method before UI-Router has bootstrapped.\n         * It will stop UI-Router from performing the initial url sync.\n         *\n         * This can be useful to perform some asynchronous initialization before the router starts.\n         * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n         *\n         * #### Example:\n         * ```js\n         * // Prevent UI-Router from automatically intercepting URL changes when it starts;\n         * urlService.deferIntercept();\n         *\n         * fetch('/states.json').then(resp => resp.json()).then(data => {\n         *   data.forEach(state => $stateRegistry.register(state));\n         *   urlService.listen();\n         *   urlService.sync();\n         * });\n         * ```\n         *\n         * @param defer Indicates whether to defer location change interception.\n         *        Passing no parameter is equivalent to `true`.\n         */\n        UrlService.prototype.deferIntercept = function (defer) {\n            if (defer === undefined)\n                defer = true;\n            this.interceptDeferred = defer;\n        };\n        /**\n         * Matches a URL\n         *\n         * Given a URL (as a [[UrlParts]] object), check all rules and determine the best matching rule.\n         * Return the result as a [[MatchResult]].\n         */\n        UrlService.prototype.match = function (url) {\n            var _this = this;\n            url = extend({ path: '', search: {}, hash: '' }, url);\n            var rules = this.rules.rules();\n            // Checks a single rule. Returns { rule: rule, match: match, weight: weight } if it matched, or undefined\n            var checkRule = function (rule) {\n                var match = rule.match(url, _this.router);\n                return match && { match: match, rule: rule, weight: rule.matchPriority(match) };\n            };\n            // The rules are pre-sorted.\n            // - Find the first matching rule.\n            // - Find any other matching rule that sorted *exactly the same*, according to `.sort()`.\n            // - Choose the rule with the highest match weight.\n            var best;\n            for (var i = 0; i < rules.length; i++) {\n                // Stop when there is a 'best' rule and the next rule sorts differently than it.\n                if (best && best.rule._group !== rules[i]._group)\n                    break;\n                var current = checkRule(rules[i]);\n                // Pick the best MatchResult\n                best = !best || (current && current.weight > best.weight) ? current : best;\n            }\n            return best;\n        };\n        return UrlService;\n    }());\n\n    /** @internal */\n    var _routerInstance = 0;\n    /** @internal */\n    var locSvcFns = ['url', 'path', 'search', 'hash', 'onChange'];\n    /** @internal */\n    var locCfgFns = ['port', 'protocol', 'host', 'baseHref', 'html5Mode', 'hashPrefix'];\n    /** @internal */\n    var locationServiceStub = makeStub('LocationServices', locSvcFns);\n    /** @internal */\n    var locationConfigStub = makeStub('LocationConfig', locCfgFns);\n    /**\n     * An instance of UI-Router.\n     *\n     * This object contains references to service APIs which define your application's routing behavior.\n     */\n    var UIRouter = /** @class */ (function () {\n        /**\n         * Creates a new `UIRouter` object\n         *\n         * @param locationService a [[LocationServices]] implementation\n         * @param locationConfig a [[LocationConfig]] implementation\n         * @internal\n         */\n        function UIRouter(locationService, locationConfig) {\n            if (locationService === void 0) { locationService = locationServiceStub; }\n            if (locationConfig === void 0) { locationConfig = locationConfigStub; }\n            this.locationService = locationService;\n            this.locationConfig = locationConfig;\n            /** @internal */ this.$id = _routerInstance++;\n            /** @internal */ this._disposed = false;\n            /** @internal */ this._disposables = [];\n            /** Enable/disable tracing to the javascript console */\n            this.trace = trace;\n            /** Provides services related to ui-view synchronization */\n            this.viewService = new ViewService(this);\n            /** An object that contains global router state, such as the current state and params */\n            this.globals = new UIRouterGlobals();\n            /** A service that exposes global Transition Hooks */\n            this.transitionService = new TransitionService(this);\n            /**\n             * Deprecated for public use. Use [[urlService]] instead.\n             * @deprecated Use [[urlService]] instead\n             */\n            this.urlMatcherFactory = new UrlMatcherFactory(this);\n            /**\n             * Deprecated for public use. Use [[urlService]] instead.\n             * @deprecated Use [[urlService]] instead\n             */\n            this.urlRouter = new UrlRouter(this);\n            /** Provides services related to the URL */\n            this.urlService = new UrlService(this);\n            /** Provides a registry for states, and related registration services */\n            this.stateRegistry = new StateRegistry(this);\n            /** Provides services related to states */\n            this.stateService = new StateService(this);\n            /** @internal plugin instances are registered here */\n            this._plugins = {};\n            this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n            this.globals.$current = this.stateRegistry.root();\n            this.globals.current = this.globals.$current.self;\n            this.disposable(this.globals);\n            this.disposable(this.stateService);\n            this.disposable(this.stateRegistry);\n            this.disposable(this.transitionService);\n            this.disposable(this.urlService);\n            this.disposable(locationService);\n            this.disposable(locationConfig);\n        }\n        /** Registers an object to be notified when the router is disposed */\n        UIRouter.prototype.disposable = function (disposable) {\n            this._disposables.push(disposable);\n        };\n        /**\n         * Disposes this router instance\n         *\n         * When called, clears resources retained by the router by calling `dispose(this)` on all\n         * registered [[disposable]] objects.\n         *\n         * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n         *\n         * @internal\n         * @param disposable (optional) the disposable to dispose\n         */\n        UIRouter.prototype.dispose = function (disposable) {\n            var _this = this;\n            if (disposable && isFunction(disposable.dispose)) {\n                disposable.dispose(this);\n                return undefined;\n            }\n            this._disposed = true;\n            this._disposables.slice().forEach(function (d) {\n                try {\n                    typeof d.dispose === 'function' && d.dispose(_this);\n                    removeFrom(_this._disposables, d);\n                }\n                catch (ignored) { }\n            });\n        };\n        /**\n         * Adds a plugin to UI-Router\n         *\n         * This method adds a UI-Router Plugin.\n         * A plugin can enhance or change UI-Router behavior using any public API.\n         *\n         * #### Example:\n         * ```js\n         * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n         *\n         * var plugin = router.addPlugin(MyCoolPlugin);\n         * ```\n         *\n         * ### Plugin authoring\n         *\n         * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n         *\n         * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n         * For example, it may configure router options or add a Transition Hook.\n         *\n         * The plugin can then be published as a separate module.\n         *\n         * #### Example:\n         * ```js\n         * export class MyAuthPlugin implements UIRouterPlugin {\n         *   constructor(router: UIRouter, options: any) {\n         *     this.name = \"MyAuthPlugin\";\n         *     let $transitions = router.transitionService;\n         *     let $state = router.stateService;\n         *\n         *     let authCriteria = {\n         *       to: (state) => state.data && state.data.requiresAuth\n         *     };\n         *\n         *     function authHook(transition: Transition) {\n         *       let authService = transition.injector().get('AuthService');\n         *       if (!authService.isAuthenticated()) {\n         *         return $state.target('login');\n         *       }\n         *     }\n         *\n         *     $transitions.onStart(authCriteria, authHook);\n         *   }\n         * }\n         * ```\n         *\n         * @param plugin one of:\n         *        - a plugin class which implements [[UIRouterPlugin]]\n         *        - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n         *        - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n         * @param options options to pass to the plugin class/factory\n         * @returns the registered plugin instance\n         */\n        UIRouter.prototype.plugin = function (plugin, options) {\n            if (options === void 0) { options = {}; }\n            var pluginInstance = new plugin(this, options);\n            if (!pluginInstance.name)\n                throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n            this._disposables.push(pluginInstance);\n            return (this._plugins[pluginInstance.name] = pluginInstance);\n        };\n        UIRouter.prototype.getPlugin = function (pluginName) {\n            return pluginName ? this._plugins[pluginName] : values(this._plugins);\n        };\n        return UIRouter;\n    }());\n\n    function addCoreResolvables(trans) {\n        trans.addResolvable(Resolvable.fromData(UIRouter, trans.router), '');\n        trans.addResolvable(Resolvable.fromData(Transition, trans), '');\n        trans.addResolvable(Resolvable.fromData('$transition$', trans), '');\n        trans.addResolvable(Resolvable.fromData('$stateParams', trans.params()), '');\n        trans.entering().forEach(function (state) {\n            trans.addResolvable(Resolvable.fromData('$state$', state), state);\n        });\n    }\n    var registerAddCoreResolvables = function (transitionService) {\n        return transitionService.onCreate({}, addCoreResolvables);\n    };\n    var TRANSITION_TOKENS = ['$transition$', Transition];\n    var isTransition = inArray(TRANSITION_TOKENS);\n    // References to Transition in the treeChanges pathnodes makes all\n    // previous Transitions reachable in memory, causing a memory leak\n    // This function removes resolves for '$transition$' and `Transition` from the treeChanges.\n    // Do not use this on current transitions, only on old ones.\n    var treeChangesCleanup = function (trans) {\n        var nodes = values(trans.treeChanges()).reduce(unnestR, []).reduce(uniqR, []);\n        // If the resolvable is a Transition, return a new resolvable with null data\n        var replaceTransitionWithNull = function (r) {\n            return isTransition(r.token) ? Resolvable.fromData(r.token, null) : r;\n        };\n        nodes.forEach(function (node) {\n            node.resolvables = node.resolvables.map(replaceTransitionWithNull);\n        });\n    };\n\n    /**\n     * A [[TransitionHookFn]] that redirects to a different state or params\n     *\n     * Registered using `transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectHook);`\n     *\n     * See [[StateDeclaration.redirectTo]]\n     */\n    var redirectToHook = function (trans) {\n        var redirect = trans.to().redirectTo;\n        if (!redirect)\n            return;\n        var $state = trans.router.stateService;\n        function handleResult(result) {\n            if (!result)\n                return;\n            if (result instanceof TargetState)\n                return result;\n            if (isString(result))\n                return $state.target(result, trans.params(), trans.options());\n            if (result['state'] || result['params'])\n                return $state.target(result['state'] || trans.to(), result['params'] || trans.params(), trans.options());\n        }\n        if (isFunction(redirect)) {\n            return services.$q.when(redirect(trans)).then(handleResult);\n        }\n        return handleResult(redirect);\n    };\n    var registerRedirectToHook = function (transitionService) {\n        return transitionService.onStart({ to: function (state) { return !!state.redirectTo; } }, redirectToHook);\n    };\n\n    /**\n     * A factory which creates an onEnter, onExit or onRetain transition hook function\n     *\n     * The returned function invokes the (for instance) state.onEnter hook when the\n     * state is being entered.\n     */\n    function makeEnterExitRetainHook(hookName) {\n        return function (transition, state) {\n            var _state = state.$$state();\n            var hookFn = _state[hookName];\n            return hookFn(transition, state);\n        };\n    }\n    /**\n     * The [[TransitionStateHookFn]] for onExit\n     *\n     * When the state is being exited, the state's .onExit function is invoked.\n     *\n     * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n     *\n     * See: [[IHookRegistry.onExit]]\n     */\n    var onExitHook = makeEnterExitRetainHook('onExit');\n    var registerOnExitHook = function (transitionService) {\n        return transitionService.onExit({ exiting: function (state) { return !!state.onExit; } }, onExitHook);\n    };\n    /**\n     * The [[TransitionStateHookFn]] for onRetain\n     *\n     * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n     *\n     * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n     *\n     * See: [[IHookRegistry.onRetain]]\n     */\n    var onRetainHook = makeEnterExitRetainHook('onRetain');\n    var registerOnRetainHook = function (transitionService) {\n        return transitionService.onRetain({ retained: function (state) { return !!state.onRetain; } }, onRetainHook);\n    };\n    /**\n     * The [[TransitionStateHookFn]] for onEnter\n     *\n     * When the state is being entered, the state's .onEnter function is invoked.\n     *\n     * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n     *\n     * See: [[IHookRegistry.onEnter]]\n     */\n    var onEnterHook = makeEnterExitRetainHook('onEnter');\n    var registerOnEnterHook = function (transitionService) {\n        return transitionService.onEnter({ entering: function (state) { return !!state.onEnter; } }, onEnterHook);\n    };\n\n    var RESOLVE_HOOK_PRIORITY = 1000;\n    /**\n     * A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path\n     *\n     * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 });`\n     *\n     * When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.\n     *\n     * See [[StateDeclaration.resolve]]\n     */\n    var eagerResolvePath = function (trans) {\n        return new ResolveContext(trans.treeChanges().to).resolvePath('EAGER', trans).then(noop);\n    };\n    var registerEagerResolvePath = function (transitionService) {\n        return transitionService.onStart({}, eagerResolvePath, { priority: RESOLVE_HOOK_PRIORITY });\n    };\n    /**\n     * A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path\n     *\n     * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 });`\n     *\n     * When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.\n     *\n     * See [[StateDeclaration.resolve]]\n     */\n    var lazyResolveState = function (trans, state) {\n        return new ResolveContext(trans.treeChanges().to).subContext(state.$$state()).resolvePath('LAZY', trans).then(noop);\n    };\n    var registerLazyResolveState = function (transitionService) {\n        return transitionService.onEnter({ entering: val(true) }, lazyResolveState, { priority: RESOLVE_HOOK_PRIORITY });\n    };\n    /**\n     * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.\n     *\n     * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`\n     *\n     * After all entering states have been entered, this hook resolves any remaining Resolvables.\n     * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].\n     *\n     * See [[StateDeclaration.resolve]]\n     */\n    var resolveRemaining = function (trans) {\n        return new ResolveContext(trans.treeChanges().to).resolvePath('LAZY', trans).then(noop);\n    };\n    var registerResolveRemaining = function (transitionService) {\n        return transitionService.onFinish({}, resolveRemaining, { priority: RESOLVE_HOOK_PRIORITY });\n    };\n\n    /**\n     * A [[TransitionHookFn]] which waits for the views to load\n     *\n     * Registered using `transitionService.onStart({}, loadEnteringViews);`\n     *\n     * Allows the views to do async work in [[ViewConfig.load]] before the transition continues.\n     * In angular 1, this includes loading the templates.\n     */\n    var loadEnteringViews = function (transition) {\n        var $q = services.$q;\n        var enteringViews = transition.views('entering');\n        if (!enteringViews.length)\n            return;\n        return $q.all(enteringViews.map(function (view) { return $q.when(view.load()); })).then(noop);\n    };\n    var registerLoadEnteringViews = function (transitionService) {\n        return transitionService.onFinish({}, loadEnteringViews);\n    };\n    /**\n     * A [[TransitionHookFn]] which activates the new views when a transition is successful.\n     *\n     * Registered using `transitionService.onSuccess({}, activateViews);`\n     *\n     * After a transition is complete, this hook deactivates the old views from the previous state,\n     * and activates the new views from the destination state.\n     *\n     * See [[ViewService]]\n     */\n    var activateViews = function (transition) {\n        var enteringViews = transition.views('entering');\n        var exitingViews = transition.views('exiting');\n        if (!enteringViews.length && !exitingViews.length)\n            return;\n        var $view = transition.router.viewService;\n        exitingViews.forEach(function (vc) { return $view.deactivateViewConfig(vc); });\n        enteringViews.forEach(function (vc) { return $view.activateViewConfig(vc); });\n        $view.sync();\n    };\n    var registerActivateViews = function (transitionService) {\n        return transitionService.onSuccess({}, activateViews);\n    };\n\n    /**\n     * A [[TransitionHookFn]] which updates global UI-Router state\n     *\n     * Registered using `transitionService.onBefore({}, updateGlobalState);`\n     *\n     * Before a [[Transition]] starts, updates the global value of \"the current transition\" ([[Globals.transition]]).\n     * After a successful [[Transition]], updates the global values of \"the current state\"\n     * ([[Globals.current]] and [[Globals.$current]]) and \"the current param values\" ([[Globals.params]]).\n     *\n     * See also the deprecated properties:\n     * [[StateService.transition]], [[StateService.current]], [[StateService.params]]\n     */\n    var updateGlobalState = function (trans) {\n        var globals = trans.router.globals;\n        var transitionSuccessful = function () {\n            globals.successfulTransitions.enqueue(trans);\n            globals.$current = trans.$to();\n            globals.current = globals.$current.self;\n            copy(trans.params(), globals.params);\n        };\n        var clearCurrentTransition = function () {\n            // Do not clear globals.transition if a different transition has started in the meantime\n            if (globals.transition === trans)\n                globals.transition = null;\n        };\n        trans.onSuccess({}, transitionSuccessful, { priority: 10000 });\n        trans.promise.then(clearCurrentTransition, clearCurrentTransition);\n    };\n    var registerUpdateGlobalState = function (transitionService) {\n        return transitionService.onCreate({}, updateGlobalState);\n    };\n\n    /**\n     * A [[TransitionHookFn]] which updates the URL after a successful transition\n     *\n     * Registered using `transitionService.onSuccess({}, updateUrl);`\n     */\n    var updateUrl = function (transition) {\n        var options = transition.options();\n        var $state = transition.router.stateService;\n        var $urlRouter = transition.router.urlRouter;\n        // Dont update the url in these situations:\n        // The transition was triggered by a URL sync (options.source === 'url')\n        // The user doesn't want the url to update (options.location === false)\n        // The destination state, and all parents have no navigable url\n        if (options.source !== 'url' && options.location && $state.$current.navigable) {\n            var urlOptions = { replace: options.location === 'replace' };\n            $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions);\n        }\n        $urlRouter.update(true);\n    };\n    var registerUpdateUrl = function (transitionService) {\n        return transitionService.onSuccess({}, updateUrl, { priority: 9999 });\n    };\n\n    /**\n     * A [[TransitionHookFn]] that performs lazy loading\n     *\n     * When entering a state \"abc\" which has a `lazyLoad` function defined:\n     * - Invoke the `lazyLoad` function (unless it is already in process)\n     *   - Flag the hook function as \"in process\"\n     *   - The function should return a promise (that resolves when lazy loading is complete)\n     * - Wait for the promise to settle\n     *   - If the promise resolves to a [[LazyLoadResult]], then register those states\n     *   - Flag the hook function as \"not in process\"\n     * - If the hook was successful\n     *   - Remove the `lazyLoad` function from the state declaration\n     * - If all the hooks were successful\n     *   - Retry the transition (by returning a TargetState)\n     *\n     * ```\n     * .state('abc', {\n     *   component: 'fooComponent',\n     *   lazyLoad: () => import('./fooComponent')\n     *   });\n     * ```\n     *\n     * See [[StateDeclaration.lazyLoad]]\n     */\n    var lazyLoadHook = function (transition) {\n        var router = transition.router;\n        function retryTransition() {\n            if (transition.originalTransition().options().source !== 'url') {\n                // The original transition was not triggered via url sync\n                // The lazy state should be loaded now, so re-try the original transition\n                var orig = transition.targetState();\n                return router.stateService.target(orig.identifier(), orig.params(), orig.options());\n            }\n            // The original transition was triggered via url sync\n            // Run the URL rules and find the best match\n            var $url = router.urlService;\n            var result = $url.match($url.parts());\n            var rule = result && result.rule;\n            // If the best match is a state, redirect the transition (instead\n            // of calling sync() which supersedes the current transition)\n            if (rule && rule.type === 'STATE') {\n                var state = rule.state;\n                var params = result.match;\n                return router.stateService.target(state, params, transition.options());\n            }\n            // No matching state found, so let .sync() choose the best non-state match/otherwise\n            router.urlService.sync();\n        }\n        var promises = transition\n            .entering()\n            .filter(function (state) { return !!state.$$state().lazyLoad; })\n            .map(function (state) { return lazyLoadState(transition, state); });\n        return services.$q.all(promises).then(retryTransition);\n    };\n    var registerLazyLoadHook = function (transitionService) {\n        return transitionService.onBefore({ entering: function (state) { return !!state.lazyLoad; } }, lazyLoadHook);\n    };\n    /**\n     * Invokes a state's lazy load function\n     *\n     * @param transition a Transition context\n     * @param state the state to lazy load\n     * @returns A promise for the lazy load result\n     */\n    function lazyLoadState(transition, state) {\n        var lazyLoadFn = state.$$state().lazyLoad;\n        // Store/get the lazy load promise on/from the hookfn so it doesn't get re-invoked\n        var promise = lazyLoadFn['_promise'];\n        if (!promise) {\n            var success = function (result) {\n                delete state.lazyLoad;\n                delete state.$$state().lazyLoad;\n                delete lazyLoadFn['_promise'];\n                return result;\n            };\n            var error = function (err) {\n                delete lazyLoadFn['_promise'];\n                return services.$q.reject(err);\n            };\n            promise = lazyLoadFn['_promise'] = services.$q\n                .when(lazyLoadFn(transition, state))\n                .then(updateStateRegistry)\n                .then(success, error);\n        }\n        /** Register any lazy loaded state definitions */\n        function updateStateRegistry(result) {\n            if (result && Array.isArray(result.states)) {\n                result.states.forEach(function (_state) { return transition.router.stateRegistry.register(_state); });\n            }\n            return result;\n        }\n        return promise;\n    }\n\n    /**\n     * This class defines a type of hook, such as `onBefore` or `onEnter`.\n     * Plugins can define custom hook types, such as sticky states does for `onInactive`.\n     */\n    var TransitionEventType = /** @class */ (function () {\n        /* tslint:disable:no-inferrable-types */\n        function TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n            if (reverseSort === void 0) { reverseSort = false; }\n            if (getResultHandler === void 0) { getResultHandler = TransitionHook.HANDLE_RESULT; }\n            if (getErrorHandler === void 0) { getErrorHandler = TransitionHook.REJECT_ERROR; }\n            if (synchronous === void 0) { synchronous = false; }\n            this.name = name;\n            this.hookPhase = hookPhase;\n            this.hookOrder = hookOrder;\n            this.criteriaMatchPath = criteriaMatchPath;\n            this.reverseSort = reverseSort;\n            this.getResultHandler = getResultHandler;\n            this.getErrorHandler = getErrorHandler;\n            this.synchronous = synchronous;\n        }\n        return TransitionEventType;\n    }());\n\n    /**\n     * A [[TransitionHookFn]] that skips a transition if it should be ignored\n     *\n     * This hook is invoked at the end of the onBefore phase.\n     *\n     * If the transition should be ignored (because no parameter or states changed)\n     * then the transition is ignored and not processed.\n     */\n    function ignoredHook(trans) {\n        var ignoredReason = trans._ignoredReason();\n        if (!ignoredReason)\n            return;\n        trace.traceTransitionIgnored(trans);\n        var pending = trans.router.globals.transition;\n        // The user clicked a link going back to the *current state* ('A')\n        // However, there is also a pending transition in flight (to 'B')\n        // Abort the transition to 'B' because the user now wants to be back at 'A'.\n        if (ignoredReason === 'SameAsCurrent' && pending) {\n            pending.abort();\n        }\n        return Rejection.ignored().toPromise();\n    }\n    var registerIgnoredTransitionHook = function (transitionService) {\n        return transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n    };\n\n    /**\n     * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n     *\n     * This hook is invoked at the end of the onBefore phase.\n     * If the transition is invalid (for example, param values do not validate)\n     * then the transition is rejected.\n     */\n    function invalidTransitionHook(trans) {\n        if (!trans.valid()) {\n            throw new Error(trans.error().toString());\n        }\n    }\n    var registerInvalidTransitionHook = function (transitionService) {\n        return transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n    };\n\n    /**\n     * The default [[Transition]] options.\n     *\n     * Include this object when applying custom defaults:\n     * let reloadOpts = { reload: true, notify: true }\n     * let options = defaults(theirOpts, customDefaults, defaultOptions);\n     */\n    var defaultTransOpts = {\n        location: true,\n        relative: null,\n        inherit: false,\n        notify: true,\n        reload: false,\n        supercede: true,\n        custom: {},\n        current: function () { return null; },\n        source: 'unknown',\n    };\n    /**\n     * This class provides services related to Transitions.\n     *\n     * - Most importantly, it allows global Transition Hooks to be registered.\n     * - It allows the default transition error handler to be set.\n     * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n     *\n     * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n     *\n     * This API is located at `router.transitionService` ([[UIRouter.transitionService]])\n     */\n    var TransitionService = /** @class */ (function () {\n        /** @internal */\n        function TransitionService(_router) {\n            /** @internal */\n            this._transitionCount = 0;\n            /** The transition hook types, such as `onEnter`, `onStart`, etc */\n            this._eventTypes = [];\n            /** @internal The registered transition hooks */\n            this._registeredHooks = {};\n            /** The  paths on a criteria object */\n            this._criteriaPaths = {};\n            this._router = _router;\n            this.$view = _router.viewService;\n            this._deregisterHookFns = {};\n            this._pluginapi = (createProxyFunctions(val(this), {}, val(this), [\n                '_definePathType',\n                '_defineEvent',\n                '_getPathTypes',\n                '_getEvents',\n                'getHooks',\n            ]));\n            this._defineCorePaths();\n            this._defineCoreEvents();\n            this._registerCoreTransitionHooks();\n            _router.globals.successfulTransitions.onEvict(treeChangesCleanup);\n        }\n        /**\n         * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n         *\n         * Registers a transition lifecycle hook, which is invoked during transition construction.\n         *\n         * This low level hook should only be used by plugins.\n         * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n         * The Sticky States plugin uses this hook to modify the treechanges.\n         *\n         * ### Lifecycle\n         *\n         * `onCreate` hooks are invoked *while a transition is being constructed*.\n         *\n         * ### Return value\n         *\n         * The hook's return value is ignored\n         *\n         * @internal\n         * @param criteria defines which Transitions the Hook should be invoked for.\n         * @param callback the hook function which will be invoked.\n         * @param options the registration options\n         * @returns a function which deregisters the hook.\n         */\n        TransitionService.prototype.onCreate = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onBefore = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onStart = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onExit = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onRetain = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onEnter = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onFinish = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onSuccess = function (criteria, callback, options) {\n            return;\n        };\n        /** @inheritdoc */\n        TransitionService.prototype.onError = function (criteria, callback, options) {\n            return;\n        };\n        /**\n         * dispose\n         * @internal\n         */\n        TransitionService.prototype.dispose = function (router) {\n            values(this._registeredHooks).forEach(function (hooksArray) {\n                return hooksArray.forEach(function (hook) {\n                    hook._deregistered = true;\n                    removeFrom(hooksArray, hook);\n                });\n            });\n        };\n        /**\n         * Creates a new [[Transition]] object\n         *\n         * This is a factory function for creating new Transition objects.\n         * It is used internally by the [[StateService]] and should generally not be called by application code.\n         *\n         * @internal\n         * @param fromPath the path to the current state (the from state)\n         * @param targetState the target state (destination)\n         * @returns a Transition\n         */\n        TransitionService.prototype.create = function (fromPath, targetState) {\n            return new Transition(fromPath, targetState, this._router);\n        };\n        /** @internal */\n        TransitionService.prototype._defineCoreEvents = function () {\n            var Phase = exports.TransitionHookPhase;\n            var TH = TransitionHook;\n            var paths = this._criteriaPaths;\n            var NORMAL_SORT = false, REVERSE_SORT = true;\n            var SYNCHRONOUS = true;\n            this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n            this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n            this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n            this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n            this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n            this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n            this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n            this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n            this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n        };\n        /** @internal */\n        TransitionService.prototype._defineCorePaths = function () {\n            var STATE = exports.TransitionHookScope.STATE, TRANSITION = exports.TransitionHookScope.TRANSITION;\n            this._definePathType('to', TRANSITION);\n            this._definePathType('from', TRANSITION);\n            this._definePathType('exiting', STATE);\n            this._definePathType('retained', STATE);\n            this._definePathType('entering', STATE);\n        };\n        /** @internal */\n        TransitionService.prototype._defineEvent = function (name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n            if (reverseSort === void 0) { reverseSort = false; }\n            if (getResultHandler === void 0) { getResultHandler = TransitionHook.HANDLE_RESULT; }\n            if (getErrorHandler === void 0) { getErrorHandler = TransitionHook.REJECT_ERROR; }\n            if (synchronous === void 0) { synchronous = false; }\n            var eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n            this._eventTypes.push(eventType);\n            makeEvent(this, this, eventType);\n        };\n        /** @internal */\n        TransitionService.prototype._getEvents = function (phase) {\n            var transitionHookTypes = isDefined(phase)\n                ? this._eventTypes.filter(function (type) { return type.hookPhase === phase; })\n                : this._eventTypes.slice();\n            return transitionHookTypes.sort(function (l, r) {\n                var cmpByPhase = l.hookPhase - r.hookPhase;\n                return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n            });\n        };\n        /**\n         * Adds a Path to be used as a criterion against a TreeChanges path\n         *\n         * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n         * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n         * Each state in the exiting path is checked against the criteria and returned as part of the match.\n         *\n         * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n         * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n         * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n         *\n         * @internal\n         */\n        TransitionService.prototype._definePathType = function (name, hookScope) {\n            this._criteriaPaths[name] = { name: name, scope: hookScope };\n        };\n        /** @internal */\n        // tslint:disable-next-line\n        TransitionService.prototype._getPathTypes = function () {\n            return this._criteriaPaths;\n        };\n        /** @internal */\n        TransitionService.prototype.getHooks = function (hookName) {\n            return this._registeredHooks[hookName];\n        };\n        /** @internal */\n        TransitionService.prototype._registerCoreTransitionHooks = function () {\n            var fns = this._deregisterHookFns;\n            fns.addCoreResolves = registerAddCoreResolvables(this);\n            fns.ignored = registerIgnoredTransitionHook(this);\n            fns.invalid = registerInvalidTransitionHook(this);\n            // Wire up redirectTo hook\n            fns.redirectTo = registerRedirectToHook(this);\n            // Wire up onExit/Retain/Enter state hooks\n            fns.onExit = registerOnExitHook(this);\n            fns.onRetain = registerOnRetainHook(this);\n            fns.onEnter = registerOnEnterHook(this);\n            // Wire up Resolve hooks\n            fns.eagerResolve = registerEagerResolvePath(this);\n            fns.lazyResolve = registerLazyResolveState(this);\n            fns.resolveAll = registerResolveRemaining(this);\n            // Wire up the View management hooks\n            fns.loadViews = registerLoadEnteringViews(this);\n            fns.activateViews = registerActivateViews(this);\n            // Updates global state after a transition\n            fns.updateGlobals = registerUpdateGlobalState(this);\n            // After globals.current is updated at priority: 10000\n            fns.updateUrl = registerUpdateUrl(this);\n            // Lazy load state trees\n            fns.lazyLoad = registerLazyLoadHook(this);\n        };\n        return TransitionService;\n    }());\n\n    /**\n     * Provides services related to ui-router states.\n     *\n     * This API is located at `router.stateService` ([[UIRouter.stateService]])\n     */\n    var StateService = /** @class */ (function () {\n        /** @internal */\n        function StateService(/** @internal */ router) {\n            this.router = router;\n            /** @internal */\n            this.invalidCallbacks = [];\n            /** @internal */\n            this._defaultErrorHandler = function $defaultErrorHandler($error$) {\n                if ($error$ instanceof Error && $error$.stack) {\n                    console.error($error$);\n                    console.error($error$.stack);\n                }\n                else if ($error$ instanceof Rejection) {\n                    console.error($error$.toString());\n                    if ($error$.detail && $error$.detail.stack)\n                        console.error($error$.detail.stack);\n                }\n                else {\n                    console.error($error$);\n                }\n            };\n            var getters = ['current', '$current', 'params', 'transition'];\n            var boundFns = Object.keys(StateService.prototype).filter(not(inArray(getters)));\n            createProxyFunctions(val(StateService.prototype), this, val(this), boundFns);\n        }\n        Object.defineProperty(StateService.prototype, \"transition\", {\n            /**\n             * The [[Transition]] currently in progress (or null)\n             *\n             * @deprecated This is a passthrough through to [[UIRouterGlobals.transition]]\n             */\n            get: function () {\n                return this.router.globals.transition;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(StateService.prototype, \"params\", {\n            /**\n             * The latest successful state parameters\n             *\n             * @deprecated This is a passthrough through to [[UIRouterGlobals.params]]\n             */\n            get: function () {\n                return this.router.globals.params;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(StateService.prototype, \"current\", {\n            /**\n             * The current [[StateDeclaration]]\n             *\n             * @deprecated This is a passthrough through to [[UIRouterGlobals.current]]\n             */\n            get: function () {\n                return this.router.globals.current;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(StateService.prototype, \"$current\", {\n            /**\n             * The current [[StateObject]] (an internal API)\n             *\n             * @deprecated This is a passthrough through to [[UIRouterGlobals.$current]]\n             */\n            get: function () {\n                return this.router.globals.$current;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        /** @internal */\n        StateService.prototype.dispose = function () {\n            this.defaultErrorHandler(noop);\n            this.invalidCallbacks = [];\n        };\n        /**\n         * Handler for when [[transitionTo]] is called with an invalid state.\n         *\n         * Invokes the [[onInvalid]] callbacks, in natural order.\n         * Each callback's return value is checked in sequence until one of them returns an instance of TargetState.\n         * The results of the callbacks are wrapped in $q.when(), so the callbacks may return promises.\n         *\n         * If a callback returns an TargetState, then it is used as arguments to $state.transitionTo() and the result returned.\n         *\n         * @internal\n         */\n        StateService.prototype._handleInvalidTargetState = function (fromPath, toState) {\n            var _this = this;\n            var fromState = PathUtils.makeTargetState(this.router.stateRegistry, fromPath);\n            var globals = this.router.globals;\n            var latestThing = function () { return globals.transitionHistory.peekTail(); };\n            var latest = latestThing();\n            var callbackQueue = new Queue(this.invalidCallbacks.slice());\n            var injector = new ResolveContext(fromPath).injector();\n            var checkForRedirect = function (result) {\n                if (!(result instanceof TargetState)) {\n                    return;\n                }\n                var target = result;\n                // Recreate the TargetState, in case the state is now defined.\n                target = _this.target(target.identifier(), target.params(), target.options());\n                if (!target.valid()) {\n                    return Rejection.invalid(target.error()).toPromise();\n                }\n                if (latestThing() !== latest) {\n                    return Rejection.superseded().toPromise();\n                }\n                return _this.transitionTo(target.identifier(), target.params(), target.options());\n            };\n            function invokeNextCallback() {\n                var nextCallback = callbackQueue.dequeue();\n                if (nextCallback === undefined)\n                    return Rejection.invalid(toState.error()).toPromise();\n                var callbackResult = services.$q.when(nextCallback(toState, fromState, injector));\n                return callbackResult.then(checkForRedirect).then(function (result) { return result || invokeNextCallback(); });\n            }\n            return invokeNextCallback();\n        };\n        /**\n         * Registers an Invalid State handler\n         *\n         * Registers a [[OnInvalidCallback]] function to be invoked when [[StateService.transitionTo]]\n         * has been called with an invalid state reference parameter\n         *\n         * Example:\n         * ```js\n         * stateService.onInvalid(function(to, from, injector) {\n         *   if (to.name() === 'foo') {\n         *     let lazyLoader = injector.get('LazyLoadService');\n         *     return lazyLoader.load('foo')\n         *         .then(() => stateService.target('foo'));\n         *   }\n         * });\n         * ```\n         *\n         * @param {function} callback invoked when the toState is invalid\n         *   This function receives the (invalid) toState, the fromState, and an injector.\n         *   The function may optionally return a [[TargetState]] or a Promise for a TargetState.\n         *   If one is returned, it is treated as a redirect.\n         *\n         * @returns a function which deregisters the callback\n         */\n        StateService.prototype.onInvalid = function (callback) {\n            this.invalidCallbacks.push(callback);\n            return function deregisterListener() {\n                removeFrom(this.invalidCallbacks)(callback);\n            }.bind(this);\n        };\n        /**\n         * Reloads the current state\n         *\n         * A method that force reloads the current state, or a partial state hierarchy.\n         * All resolves are re-resolved, and components reinstantiated.\n         *\n         * #### Example:\n         * ```js\n         * let app angular.module('app', ['ui.router']);\n         *\n         * app.controller('ctrl', function ($scope, $state) {\n         *   $scope.reload = function(){\n         *     $state.reload();\n         *   }\n         * });\n         * ```\n         *\n         * Note: `reload()` is just an alias for:\n         *\n         * ```js\n         * $state.transitionTo($state.current, $state.params, {\n         *   reload: true, inherit: false\n         * });\n         * ```\n         *\n         * @param reloadState A state name or a state object.\n         *    If present, this state and all its children will be reloaded, but ancestors will not reload.\n         *\n         * #### Example:\n         * ```js\n         * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item'\n         * //and current state is 'contacts.detail.item'\n         * let app angular.module('app', ['ui.router']);\n         *\n         * app.controller('ctrl', function ($scope, $state) {\n         *   $scope.reload = function(){\n         *     //will reload 'contact.detail' and nested 'contact.detail.item' states\n         *     $state.reload('contact.detail');\n         *   }\n         * });\n         * ```\n         *\n         * @returns A promise representing the state of the new transition. See [[StateService.go]]\n         */\n        StateService.prototype.reload = function (reloadState) {\n            return this.transitionTo(this.current, this.params, {\n                reload: isDefined(reloadState) ? reloadState : true,\n                inherit: false,\n                notify: false,\n            });\n        };\n        /**\n         * Transition to a different state and/or parameters\n         *\n         * Convenience method for transitioning to a new state.\n         *\n         * `$state.go` calls `$state.transitionTo` internally but automatically sets options to\n         * `{ location: true, inherit: true, relative: router.globals.$current, notify: true }`.\n         * This allows you to use either an absolute or relative `to` argument (because of `relative: router.globals.$current`).\n         * It also allows you to specify * only the parameters you'd like to update, while letting unspecified parameters\n         * inherit from the current parameter values (because of `inherit: true`).\n         *\n         * #### Example:\n         * ```js\n         * let app = angular.module('app', ['ui.router']);\n         *\n         * app.controller('ctrl', function ($scope, $state) {\n         *   $scope.changeState = function () {\n         *     $state.go('contact.detail');\n         *   };\n         * });\n         * ```\n         *\n         * @param to Absolute state name, state object, or relative state path (relative to current state).\n         *\n         * Some examples:\n         *\n         * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n         * - `$state.go('^')` - will go to the parent state\n         * - `$state.go('^.sibling')` - if current state is `home.child`, will go to the `home.sibling` state\n         * - `$state.go('.child.grandchild')` - if current state is home, will go to the `home.child.grandchild` state\n         *\n         * @param params A map of the parameters that will be sent to the state, will populate $stateParams.\n         *\n         *    Any parameters that are not specified will be inherited from current parameter values (because of `inherit: true`).\n         *    This allows, for example, going to a sibling state that shares parameters defined by a parent state.\n         *\n         * @param options Transition options\n         *\n         * @returns {promise} A promise representing the state of the new transition.\n         */\n        StateService.prototype.go = function (to, params, options) {\n            var defautGoOpts = { relative: this.$current, inherit: true };\n            var transOpts = defaults(options, defautGoOpts, defaultTransOpts);\n            return this.transitionTo(to, params, transOpts);\n        };\n        /**\n         * Creates a [[TargetState]]\n         *\n         * This is a factory method for creating a TargetState\n         *\n         * This may be returned from a Transition Hook to redirect a transition, for example.\n         */\n        StateService.prototype.target = function (identifier, params, options) {\n            if (options === void 0) { options = {}; }\n            // If we're reloading, find the state object to reload from\n            if (isObject(options.reload) && !options.reload.name)\n                throw new Error('Invalid reload state object');\n            var reg = this.router.stateRegistry;\n            options.reloadState =\n                options.reload === true ? reg.root() : reg.matcher.find(options.reload, options.relative);\n            if (options.reload && !options.reloadState)\n                throw new Error(\"No such reload state '\" + (isString(options.reload) ? options.reload : options.reload.name) + \"'\");\n            return new TargetState(this.router.stateRegistry, identifier, params, options);\n        };\n        /** @internal */\n        StateService.prototype.getCurrentPath = function () {\n            var _this = this;\n            var globals = this.router.globals;\n            var latestSuccess = globals.successfulTransitions.peekTail();\n            var rootPath = function () { return [new PathNode(_this.router.stateRegistry.root())]; };\n            return latestSuccess ? latestSuccess.treeChanges().to : rootPath();\n        };\n        /**\n         * Low-level method for transitioning to a new state.\n         *\n         * The [[go]] method (which uses `transitionTo` internally) is recommended in most situations.\n         *\n         * #### Example:\n         * ```js\n         * let app = angular.module('app', ['ui.router']);\n         *\n         * app.controller('ctrl', function ($scope, $state) {\n         *   $scope.changeState = function () {\n         *     $state.transitionTo('contact.detail');\n         *   };\n         * });\n         * ```\n         *\n         * @param to State name or state object.\n         * @param toParams A map of the parameters that will be sent to the state,\n         *      will populate $stateParams.\n         * @param options Transition options\n         *\n         * @returns A promise representing the state of the new transition. See [[go]]\n         */\n        StateService.prototype.transitionTo = function (to, toParams, options) {\n            var _this = this;\n            if (toParams === void 0) { toParams = {}; }\n            if (options === void 0) { options = {}; }\n            var router = this.router;\n            var globals = router.globals;\n            options = defaults(options, defaultTransOpts);\n            var getCurrent = function () { return globals.transition; };\n            options = extend(options, { current: getCurrent });\n            var ref = this.target(to, toParams, options);\n            var currentPath = this.getCurrentPath();\n            if (!ref.exists())\n                return this._handleInvalidTargetState(currentPath, ref);\n            if (!ref.valid())\n                return silentRejection(ref.error());\n            if (options.supercede === false && getCurrent()) {\n                return (Rejection.ignored('Another transition is in progress and supercede has been set to false in TransitionOptions for the transition. So the transition was ignored in favour of the existing one in progress.').toPromise());\n            }\n            /**\n             * Special handling for Ignored, Aborted, and Redirected transitions\n             *\n             * The semantics for the transition.run() promise and the StateService.transitionTo()\n             * promise differ. For instance, the run() promise may be rejected because it was\n             * IGNORED, but the transitionTo() promise is resolved because from the user perspective\n             * no error occurred.  Likewise, the transition.run() promise may be rejected because of\n             * a Redirect, but the transitionTo() promise is chained to the new Transition's promise.\n             */\n            var rejectedTransitionHandler = function (trans) { return function (error) {\n                if (error instanceof Rejection) {\n                    var isLatest = router.globals.lastStartedTransitionId <= trans.$id;\n                    if (error.type === exports.RejectType.IGNORED) {\n                        isLatest && router.urlRouter.update();\n                        // Consider ignored `Transition.run()` as a successful `transitionTo`\n                        return services.$q.when(globals.current);\n                    }\n                    var detail = error.detail;\n                    if (error.type === exports.RejectType.SUPERSEDED && error.redirected && detail instanceof TargetState) {\n                        // If `Transition.run()` was redirected, allow the `transitionTo()` promise to resolve successfully\n                        // by returning the promise for the new (redirect) `Transition.run()`.\n                        var redirect = trans.redirect(detail);\n                        return redirect.run().catch(rejectedTransitionHandler(redirect));\n                    }\n                    if (error.type === exports.RejectType.ABORTED) {\n                        isLatest && router.urlRouter.update();\n                        return services.$q.reject(error);\n                    }\n                }\n                var errorHandler = _this.defaultErrorHandler();\n                errorHandler(error);\n                return services.$q.reject(error);\n            }; };\n            var transition = this.router.transitionService.create(currentPath, ref);\n            var transitionToPromise = transition.run().catch(rejectedTransitionHandler(transition));\n            silenceUncaughtInPromise(transitionToPromise); // issue #2676\n            // Return a promise for the transition, which also has the transition object on it.\n            return extend(transitionToPromise, { transition: transition });\n        };\n        /**\n         * Checks if the current state *is* the provided state\n         *\n         * Similar to [[includes]] but only checks for the full state name.\n         * If params is supplied then it will be tested for strict equality against the current\n         * active params object, so all params must match with none missing and no extras.\n         *\n         * #### Example:\n         * ```js\n         * $state.$current.name = 'contacts.details.item';\n         *\n         * // absolute name\n         * $state.is('contact.details.item'); // returns true\n         * $state.is(contactDetailItemStateObject); // returns true\n         * ```\n         *\n         * // relative name (. and ^), typically from a template\n         * // E.g. from the 'contacts.details' template\n         * ```html\n         * <div ng-class=\"{highlighted: $state.is('.item')}\">Item</div>\n         * ```\n         *\n         * @param stateOrName The state name (absolute or relative) or state object you'd like to check.\n         * @param params A param object, e.g. `{sectionId: section.id}`, that you'd like\n         * to test against the current active state.\n         * @param options An options object. The options are:\n         *   - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n         *     test relative to `options.relative` state (or name).\n         *\n         * @returns Returns true if it is the state.\n         */\n        StateService.prototype.is = function (stateOrName, params, options) {\n            options = defaults(options, { relative: this.$current });\n            var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n            if (!isDefined(state))\n                return undefined;\n            if (this.$current !== state)\n                return false;\n            if (!params)\n                return true;\n            var schema = state.parameters({ inherit: true, matchingKeys: params });\n            return Param.equals(schema, Param.values(schema, params), this.params);\n        };\n        /**\n         * Checks if the current state *includes* the provided state\n         *\n         * A method to determine if the current active state is equal to or is the child of the\n         * state stateName. If any params are passed then they will be tested for a match as well.\n         * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n         *\n         * #### Example when `$state.$current.name === 'contacts.details.item'`\n         * ```js\n         * // Using partial names\n         * $state.includes(\"contacts\"); // returns true\n         * $state.includes(\"contacts.details\"); // returns true\n         * $state.includes(\"contacts.details.item\"); // returns true\n         * $state.includes(\"contacts.list\"); // returns false\n         * $state.includes(\"about\"); // returns false\n         * ```\n         *\n         * #### Glob Examples when `* $state.$current.name === 'contacts.details.item.url'`:\n         * ```js\n         * $state.includes(\"*.details.*.*\"); // returns true\n         * $state.includes(\"*.details.**\"); // returns true\n         * $state.includes(\"**.item.**\"); // returns true\n         * $state.includes(\"*.details.item.url\"); // returns true\n         * $state.includes(\"*.details.*.url\"); // returns true\n         * $state.includes(\"*.details.*\"); // returns false\n         * $state.includes(\"item.**\"); // returns false\n         * ```\n         *\n         * @param stateOrName A partial name, relative name, glob pattern,\n         *   or state object to be searched for within the current state name.\n         * @param params A param object, e.g. `{sectionId: section.id}`,\n         *   that you'd like to test against the current active state.\n         * @param options An options object. The options are:\n         *   - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n         *     test relative to `options.relative` state (or name).\n         *\n         * @returns {boolean} Returns true if it does include the state\n         */\n        StateService.prototype.includes = function (stateOrName, params, options) {\n            options = defaults(options, { relative: this.$current });\n            var glob = isString(stateOrName) && Glob.fromString(stateOrName);\n            if (glob) {\n                if (!glob.matches(this.$current.name))\n                    return false;\n                stateOrName = this.$current.name;\n            }\n            var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative), include = this.$current.includes;\n            if (!isDefined(state))\n                return undefined;\n            if (!isDefined(include[state.name]))\n                return false;\n            if (!params)\n                return true;\n            var schema = state.parameters({ inherit: true, matchingKeys: params });\n            return Param.equals(schema, Param.values(schema, params), this.params);\n        };\n        /**\n         * Generates a URL for a state and parameters\n         *\n         * Returns the url for the given state populated with the given params.\n         *\n         * #### Example:\n         * ```js\n         * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n         * ```\n         *\n         * @param stateOrName The state name or state object you'd like to generate a url from.\n         * @param params An object of parameter values to fill the state's required parameters.\n         * @param options Options object. The options are:\n         *\n         * @returns {string} compiled state url\n         */\n        StateService.prototype.href = function (stateOrName, params, options) {\n            var defaultHrefOpts = {\n                lossy: true,\n                inherit: true,\n                absolute: false,\n                relative: this.$current,\n            };\n            options = defaults(options, defaultHrefOpts);\n            params = params || {};\n            var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n            if (!isDefined(state))\n                return null;\n            if (options.inherit)\n                params = this.params.$inherit(params, this.$current, state);\n            var nav = state && options.lossy ? state.navigable : state;\n            if (!nav || nav.url === undefined || nav.url === null) {\n                return null;\n            }\n            return this.router.urlRouter.href(nav.url, params, { absolute: options.absolute });\n        };\n        /**\n         * Sets or gets the default [[transitionTo]] error handler.\n         *\n         * The error handler is called when a [[Transition]] is rejected or when any error occurred during the Transition.\n         * This includes errors caused by resolves and transition hooks.\n         *\n         * Note:\n         * This handler does not receive certain Transition rejections.\n         * Redirected and Ignored Transitions are not considered to be errors by [[StateService.transitionTo]].\n         *\n         * The built-in default error handler logs the error to the console.\n         *\n         * You can provide your own custom handler.\n         *\n         * #### Example:\n         * ```js\n         * stateService.defaultErrorHandler(function() {\n         *   // Do not log transitionTo errors\n         * });\n         * ```\n         *\n         * @param handler a global error handler function\n         * @returns the current global error handler\n         */\n        StateService.prototype.defaultErrorHandler = function (handler) {\n            return (this._defaultErrorHandler = handler || this._defaultErrorHandler);\n        };\n        StateService.prototype.get = function (stateOrName, base) {\n            var reg = this.router.stateRegistry;\n            if (arguments.length === 0)\n                return reg.get();\n            return reg.get(stateOrName, base || this.$current);\n        };\n        /**\n         * Lazy loads a state\n         *\n         * Explicitly runs a state's [[StateDeclaration.lazyLoad]] function.\n         *\n         * @param stateOrName the state that should be lazy loaded\n         * @param transition the optional Transition context to use (if the lazyLoad function requires an injector, etc)\n         * Note: If no transition is provided, a noop transition is created using the from the current state to the current state.\n         * This noop transition is not actually run.\n         *\n         * @returns a promise to lazy load\n         */\n        StateService.prototype.lazyLoad = function (stateOrName, transition) {\n            var state = this.get(stateOrName);\n            if (!state || !state.lazyLoad)\n                throw new Error('Can not lazy load ' + stateOrName);\n            var currentPath = this.getCurrentPath();\n            var target = PathUtils.makeTargetState(this.router.stateRegistry, currentPath);\n            transition = transition || this.router.transitionService.create(currentPath, target);\n            return lazyLoadState(transition, state);\n        };\n        return StateService;\n    }());\n\n    /**\n     * An angular1-like promise api\n     *\n     * This object implements four methods similar to the\n     * [angular 1 promise api](https://docs.angularjs.org/api/ng/service/$q)\n     *\n     * UI-Router evolved from an angular 1 library to a framework agnostic library.\n     * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n     *\n     * This API provides native ES6 promise support wrapped as a $q-like API.\n     * Internally, UI-Router uses this $q object to perform promise operations.\n     * The `angular-ui-router` (ui-router for angular 1) uses the $q API provided by angular.\n     *\n     * $q-like promise api\n     */\n    var $q = {\n        /** Normalizes a value as a promise */\n        when: function (val) { return new Promise(function (resolve, reject) { return resolve(val); }); },\n        /** Normalizes a value as a promise rejection */\n        reject: function (val) {\n            return new Promise(function (resolve, reject) {\n                reject(val);\n            });\n        },\n        /** @returns a deferred object, which has `resolve` and `reject` functions */\n        defer: function () {\n            var deferred = {};\n            deferred.promise = new Promise(function (resolve, reject) {\n                deferred.resolve = resolve;\n                deferred.reject = reject;\n            });\n            return deferred;\n        },\n        /** Like Promise.all(), but also supports object key/promise notation like $q */\n        all: function (promises) {\n            if (isArray(promises)) {\n                return Promise.all(promises);\n            }\n            if (isObject(promises)) {\n                // Convert promises map to promises array.\n                // When each promise resolves, map it to a tuple { key: key, val: val }\n                var chain = Object.keys(promises).map(function (key) { return promises[key].then(function (val) { return ({ key: key, val: val }); }); });\n                // Then wait for all promises to resolve, and convert them back to an object\n                return $q.all(chain).then(function (values) {\n                    return values.reduce(function (acc, tuple) {\n                        acc[tuple.key] = tuple.val;\n                        return acc;\n                    }, {});\n                });\n            }\n        },\n    };\n\n    // globally available injectables\n    var globals = {};\n    var STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\n    var ARGUMENT_NAMES = /([^\\s,]+)/g;\n    /**\n     * A basic angular1-like injector api\n     *\n     * This object implements four methods similar to the\n     * [angular 1 dependency injector](https://docs.angularjs.org/api/auto/service/$injector)\n     *\n     * UI-Router evolved from an angular 1 library to a framework agnostic library.\n     * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n     *\n     * This object provides a naive implementation of a globally scoped dependency injection system.\n     * It supports the following DI approaches:\n     *\n     * ### Function parameter names\n     *\n     * A function's `.toString()` is called, and the parameter names are parsed.\n     * This only works when the parameter names aren't \"mangled\" by a minifier such as UglifyJS.\n     *\n     * ```js\n     * function injectedFunction(FooService, BarService) {\n     *   // FooService and BarService are injected\n     * }\n     * ```\n     *\n     * ### Function annotation\n     *\n     * A function may be annotated with an array of dependency names as the `$inject` property.\n     *\n     * ```js\n     * injectedFunction.$inject = [ 'FooService', 'BarService' ];\n     * function injectedFunction(fs, bs) {\n     *   // FooService and BarService are injected as fs and bs parameters\n     * }\n     * ```\n     *\n     * ### Array notation\n     *\n     * An array provides the names of the dependencies to inject (as strings).\n     * The function is the last element of the array.\n     *\n     * ```js\n     * [ 'FooService', 'BarService', function (fs, bs) {\n     *   // FooService and BarService are injected as fs and bs parameters\n     * }]\n     * ```\n     *\n     * @type {$InjectorLike}\n     */\n    var $injector = {\n        /** Gets an object from DI based on a string token */\n        get: function (name) { return globals[name]; },\n        /** Returns true if an object named `name` exists in global DI */\n        has: function (name) { return $injector.get(name) != null; },\n        /**\n         * Injects a function\n         *\n         * @param fn the function to inject\n         * @param context the function's `this` binding\n         * @param locals An object with additional DI tokens and values, such as `{ someToken: { foo: 1 } }`\n         */\n        invoke: function (fn, context, locals) {\n            var all = extend({}, globals, locals || {});\n            var params = $injector.annotate(fn);\n            var ensureExist = assertPredicate(function (key) { return all.hasOwnProperty(key); }, function (key) { return \"DI can't find injectable: '\" + key + \"'\"; });\n            var args = params.filter(ensureExist).map(function (x) { return all[x]; });\n            if (isFunction(fn))\n                return fn.apply(context, args);\n            else\n                return fn.slice(-1)[0].apply(context, args);\n        },\n        /**\n         * Returns a function's dependencies\n         *\n         * Analyzes a function (or array) and returns an array of DI tokens that the function requires.\n         * @return an array of `string`s\n         */\n        annotate: function (fn) {\n            if (!isInjectable(fn))\n                throw new Error(\"Not an injectable function: \" + fn);\n            if (fn && fn.$inject)\n                return fn.$inject;\n            if (isArray(fn))\n                return fn.slice(0, -1);\n            var fnStr = fn.toString().replace(STRIP_COMMENTS, '');\n            var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);\n            return result || [];\n        },\n    };\n\n    var keyValsToObjectR = function (accum, _a) {\n        var key = _a[0], val = _a[1];\n        if (!accum.hasOwnProperty(key)) {\n            accum[key] = val;\n        }\n        else if (isArray(accum[key])) {\n            accum[key].push(val);\n        }\n        else {\n            accum[key] = [accum[key], val];\n        }\n        return accum;\n    };\n    var getParams = function (queryString) {\n        return queryString.split('&').filter(identity).map(splitEqual).reduce(keyValsToObjectR, {});\n    };\n    function parseUrl$1(url) {\n        var orEmptyString = function (x) { return x || ''; };\n        var _a = splitHash(url).map(orEmptyString), beforehash = _a[0], hash = _a[1];\n        var _b = splitQuery(beforehash).map(orEmptyString), path = _b[0], search = _b[1];\n        return { path: path, search: search, hash: hash, url: url };\n    }\n    var buildUrl = function (loc) {\n        var path = loc.path();\n        var searchObject = loc.search();\n        var hash = loc.hash();\n        var search = Object.keys(searchObject)\n            .map(function (key) {\n            var param = searchObject[key];\n            var vals = isArray(param) ? param : [param];\n            return vals.map(function (val) { return key + '=' + val; });\n        })\n            .reduce(unnestR, [])\n            .join('&');\n        return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n    };\n    function locationPluginFactory(name, isHtml5, serviceClass, configurationClass) {\n        return function (uiRouter) {\n            var service = (uiRouter.locationService = new serviceClass(uiRouter));\n            var configuration = (uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5));\n            function dispose(router) {\n                router.dispose(service);\n                router.dispose(configuration);\n            }\n            return { name: name, service: service, configuration: configuration, dispose: dispose };\n        };\n    }\n\n    /** A base `LocationServices` */\n    var BaseLocationServices = /** @class */ (function () {\n        function BaseLocationServices(router, fireAfterUpdate) {\n            var _this = this;\n            this.fireAfterUpdate = fireAfterUpdate;\n            this._listeners = [];\n            this._listener = function (evt) { return _this._listeners.forEach(function (cb) { return cb(evt); }); };\n            this.hash = function () { return parseUrl$1(_this._get()).hash; };\n            this.path = function () { return parseUrl$1(_this._get()).path; };\n            this.search = function () { return getParams(parseUrl$1(_this._get()).search); };\n            this._location = root.location;\n            this._history = root.history;\n        }\n        BaseLocationServices.prototype.url = function (url, replace) {\n            if (replace === void 0) { replace = true; }\n            if (isDefined(url) && url !== this._get()) {\n                this._set(null, null, url, replace);\n                if (this.fireAfterUpdate) {\n                    this._listeners.forEach(function (cb) { return cb({ url: url }); });\n                }\n            }\n            return buildUrl(this);\n        };\n        BaseLocationServices.prototype.onChange = function (cb) {\n            var _this = this;\n            this._listeners.push(cb);\n            return function () { return removeFrom(_this._listeners, cb); };\n        };\n        BaseLocationServices.prototype.dispose = function (router) {\n            deregAll(this._listeners);\n        };\n        return BaseLocationServices;\n    }());\n\n    var __extends = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    /** A `LocationServices` that uses the browser hash \"#\" to get/set the current location */\n    var HashLocationService = /** @class */ (function (_super) {\n        __extends(HashLocationService, _super);\n        function HashLocationService(router) {\n            var _this = _super.call(this, router, false) || this;\n            root.addEventListener('hashchange', _this._listener, false);\n            return _this;\n        }\n        HashLocationService.prototype._get = function () {\n            return trimHashVal(this._location.hash);\n        };\n        HashLocationService.prototype._set = function (state, title, url, replace) {\n            this._location.hash = url;\n        };\n        HashLocationService.prototype.dispose = function (router) {\n            _super.prototype.dispose.call(this, router);\n            root.removeEventListener('hashchange', this._listener);\n        };\n        return HashLocationService;\n    }(BaseLocationServices));\n\n    var __extends$1 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    /** A `LocationServices` that gets/sets the current location from an in-memory object */\n    var MemoryLocationService = /** @class */ (function (_super) {\n        __extends$1(MemoryLocationService, _super);\n        function MemoryLocationService(router) {\n            return _super.call(this, router, true) || this;\n        }\n        MemoryLocationService.prototype._get = function () {\n            return this._url;\n        };\n        MemoryLocationService.prototype._set = function (state, title, url, replace) {\n            this._url = url;\n        };\n        return MemoryLocationService;\n    }(BaseLocationServices));\n\n    var __extends$2 = (undefined && undefined.__extends) || (function () {\n        var extendStatics = function (d, b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n                function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n            return extendStatics(d, b);\n        };\n        return function (d, b) {\n            extendStatics(d, b);\n            function __() { this.constructor = d; }\n            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n        };\n    })();\n    /**\n     * A `LocationServices` that gets/sets the current location using the browser's `location` and `history` apis\n     *\n     * Uses `history.pushState` and `history.replaceState`\n     */\n    var PushStateLocationService = /** @class */ (function (_super) {\n        __extends$2(PushStateLocationService, _super);\n        function PushStateLocationService(router) {\n            var _this = _super.call(this, router, true) || this;\n            _this._config = router.urlService.config;\n            root.addEventListener('popstate', _this._listener, false);\n            return _this;\n        }\n        /**\n         * Gets the base prefix without:\n         * - trailing slash\n         * - trailing filename\n         * - protocol and hostname\n         *\n         * If <base href='/base/'>, this returns '/base'.\n         * If <base href='/foo/base/'>, this returns '/foo/base'.\n         * If <base href='/base/index.html'>, this returns '/base'.\n         * If <base href='http://localhost:8080/base/index.html'>, this returns '/base'.\n         * If <base href='/base'>, this returns ''.\n         * If <base href='http://localhost:8080'>, this returns ''.\n         * If <base href='http://localhost:8080/'>, this returns ''.\n         *\n         * See: https://html.spec.whatwg.org/dev/semantics.html#the-base-element\n         */\n        PushStateLocationService.prototype._getBasePrefix = function () {\n            return stripLastPathElement(this._config.baseHref());\n        };\n        PushStateLocationService.prototype._get = function () {\n            var _a = this._location, pathname = _a.pathname, hash = _a.hash, search = _a.search;\n            search = splitQuery(search)[1]; // strip ? if found\n            hash = splitHash(hash)[1]; // strip # if found\n            var basePrefix = this._getBasePrefix();\n            var exactBaseHrefMatch = pathname === this._config.baseHref();\n            var startsWithBase = pathname.substr(0, basePrefix.length) === basePrefix;\n            pathname = exactBaseHrefMatch ? '/' : startsWithBase ? pathname.substring(basePrefix.length) : pathname;\n            return pathname + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n        };\n        PushStateLocationService.prototype._set = function (state, title, url, replace) {\n            var basePrefix = this._getBasePrefix();\n            var slash = url && url[0] !== '/' ? '/' : '';\n            var fullUrl = url === '' || url === '/' ? this._config.baseHref() : basePrefix + slash + url;\n            if (replace) {\n                this._history.replaceState(state, title, fullUrl);\n            }\n            else {\n                this._history.pushState(state, title, fullUrl);\n            }\n        };\n        PushStateLocationService.prototype.dispose = function (router) {\n            _super.prototype.dispose.call(this, router);\n            root.removeEventListener('popstate', this._listener);\n        };\n        return PushStateLocationService;\n    }(BaseLocationServices));\n\n    /** A `LocationConfig` mock that gets/sets all config from an in-memory object */\n    var MemoryLocationConfig = /** @class */ (function () {\n        function MemoryLocationConfig() {\n            var _this = this;\n            this.dispose = noop;\n            this._baseHref = '';\n            this._port = 80;\n            this._protocol = 'http';\n            this._host = 'localhost';\n            this._hashPrefix = '';\n            this.port = function () { return _this._port; };\n            this.protocol = function () { return _this._protocol; };\n            this.host = function () { return _this._host; };\n            this.baseHref = function () { return _this._baseHref; };\n            this.html5Mode = function () { return false; };\n            this.hashPrefix = function (newval) { return (isDefined(newval) ? (_this._hashPrefix = newval) : _this._hashPrefix); };\n        }\n        return MemoryLocationConfig;\n    }());\n\n    /** A `LocationConfig` that delegates to the browser's `location` object */\n    var BrowserLocationConfig = /** @class */ (function () {\n        function BrowserLocationConfig(router, _isHtml5) {\n            if (_isHtml5 === void 0) { _isHtml5 = false; }\n            this._isHtml5 = _isHtml5;\n            this._baseHref = undefined;\n            this._hashPrefix = '';\n        }\n        BrowserLocationConfig.prototype.port = function () {\n            if (location.port) {\n                return Number(location.port);\n            }\n            return this.protocol() === 'https' ? 443 : 80;\n        };\n        BrowserLocationConfig.prototype.protocol = function () {\n            return location.protocol.replace(/:/g, '');\n        };\n        BrowserLocationConfig.prototype.host = function () {\n            return location.hostname;\n        };\n        BrowserLocationConfig.prototype.html5Mode = function () {\n            return this._isHtml5;\n        };\n        BrowserLocationConfig.prototype.hashPrefix = function (newprefix) {\n            return isDefined(newprefix) ? (this._hashPrefix = newprefix) : this._hashPrefix;\n        };\n        BrowserLocationConfig.prototype.baseHref = function (href) {\n            if (isDefined(href))\n                this._baseHref = href;\n            if (isUndefined(this._baseHref))\n                this._baseHref = this.getBaseHref();\n            return this._baseHref;\n        };\n        BrowserLocationConfig.prototype.getBaseHref = function () {\n            var baseTag = document.getElementsByTagName('base')[0];\n            if (baseTag && baseTag.href) {\n                return baseTag.href.replace(/^([^/:]*:)?\\/\\/[^/]*/, '');\n            }\n            return this._isHtml5 ? '/' : location.pathname || '/';\n        };\n        BrowserLocationConfig.prototype.dispose = function () { };\n        return BrowserLocationConfig;\n    }());\n\n    function servicesPlugin(router) {\n        services.$injector = $injector;\n        services.$q = $q;\n        return { name: 'vanilla.services', $q: $q, $injector: $injector, dispose: function () { return null; } };\n    }\n    /** A `UIRouterPlugin` uses the browser hash to get/set the current location */\n    var hashLocationPlugin = locationPluginFactory('vanilla.hashBangLocation', false, HashLocationService, BrowserLocationConfig);\n    /** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */\n    var pushStateLocationPlugin = locationPluginFactory('vanilla.pushStateLocation', true, PushStateLocationService, BrowserLocationConfig);\n    /** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */\n    var memoryLocationPlugin = locationPluginFactory('vanilla.memoryLocation', false, MemoryLocationService, MemoryLocationConfig);\n\n    var UIRouterPluginBase = /** @class */ (function () {\n        function UIRouterPluginBase() {\n        }\n        UIRouterPluginBase.prototype.dispose = function (router) { };\n        return UIRouterPluginBase;\n    }());\n\n    exports.$injector = $injector;\n    exports.$q = $q;\n    exports.BaseLocationServices = BaseLocationServices;\n    exports.BaseUrlRule = BaseUrlRule;\n    exports.BrowserLocationConfig = BrowserLocationConfig;\n    exports.Glob = Glob;\n    exports.HashLocationService = HashLocationService;\n    exports.HookBuilder = HookBuilder;\n    exports.MemoryLocationConfig = MemoryLocationConfig;\n    exports.MemoryLocationService = MemoryLocationService;\n    exports.NATIVE_INJECTOR_TOKEN = NATIVE_INJECTOR_TOKEN;\n    exports.Param = Param;\n    exports.ParamFactory = ParamFactory;\n    exports.ParamType = ParamType;\n    exports.ParamTypes = ParamTypes;\n    exports.PathNode = PathNode;\n    exports.PathUtils = PathUtils;\n    exports.PushStateLocationService = PushStateLocationService;\n    exports.Queue = Queue;\n    exports.RegisteredHook = RegisteredHook;\n    exports.Rejection = Rejection;\n    exports.Resolvable = Resolvable;\n    exports.ResolveContext = ResolveContext;\n    exports.StateBuilder = StateBuilder;\n    exports.StateMatcher = StateMatcher;\n    exports.StateObject = StateObject;\n    exports.StateParams = StateParams;\n    exports.StateQueueManager = StateQueueManager;\n    exports.StateRegistry = StateRegistry;\n    exports.StateService = StateService;\n    exports.TargetState = TargetState;\n    exports.Trace = Trace;\n    exports.Transition = Transition;\n    exports.TransitionEventType = TransitionEventType;\n    exports.TransitionHook = TransitionHook;\n    exports.TransitionService = TransitionService;\n    exports.UIRouter = UIRouter;\n    exports.UIRouterGlobals = UIRouterGlobals;\n    exports.UIRouterPluginBase = UIRouterPluginBase;\n    exports.UrlConfig = UrlConfig;\n    exports.UrlMatcher = UrlMatcher;\n    exports.UrlMatcherFactory = UrlMatcherFactory;\n    exports.UrlRouter = UrlRouter;\n    exports.UrlRuleFactory = UrlRuleFactory;\n    exports.UrlRules = UrlRules;\n    exports.UrlService = UrlService;\n    exports.ViewService = ViewService;\n    exports._extend = _extend;\n    exports._inArray = _inArray;\n    exports._pushTo = _pushTo;\n    exports._removeFrom = _removeFrom;\n    exports.all = all;\n    exports.allTrueR = allTrueR;\n    exports.ancestors = ancestors;\n    exports.and = and;\n    exports.any = any;\n    exports.anyTrueR = anyTrueR;\n    exports.applyPairs = applyPairs;\n    exports.arrayTuples = arrayTuples;\n    exports.assertFn = assertFn;\n    exports.assertMap = assertMap;\n    exports.assertPredicate = assertPredicate;\n    exports.beforeAfterSubstr = beforeAfterSubstr;\n    exports.buildUrl = buildUrl;\n    exports.compose = compose;\n    exports.copy = copy;\n    exports.createProxyFunctions = createProxyFunctions;\n    exports.curry = curry;\n    exports.defaultResolvePolicy = defaultResolvePolicy;\n    exports.defaultTransOpts = defaultTransOpts;\n    exports.defaults = defaults;\n    exports.deregAll = deregAll;\n    exports.eq = eq;\n    exports.equals = equals;\n    exports.extend = extend;\n    exports.filter = filter;\n    exports.find = find;\n    exports.flatten = flatten;\n    exports.flattenR = flattenR;\n    exports.fnToString = fnToString;\n    exports.forEach = forEach;\n    exports.fromJson = fromJson;\n    exports.functionToString = functionToString;\n    exports.getParams = getParams;\n    exports.hashLocationPlugin = hashLocationPlugin;\n    exports.hostRegex = hostRegex;\n    exports.identity = identity;\n    exports.inArray = inArray;\n    exports.inherit = inherit;\n    exports.invoke = invoke;\n    exports.is = is;\n    exports.isArray = isArray;\n    exports.isDate = isDate;\n    exports.isDefined = isDefined;\n    exports.isFunction = isFunction;\n    exports.isInjectable = isInjectable;\n    exports.isNull = isNull;\n    exports.isNullOrUndefined = isNullOrUndefined;\n    exports.isNumber = isNumber;\n    exports.isObject = isObject;\n    exports.isPromise = isPromise;\n    exports.isRegExp = isRegExp;\n    exports.isString = isString;\n    exports.isUndefined = isUndefined;\n    exports.joinNeighborsR = joinNeighborsR;\n    exports.kebobString = kebobString;\n    exports.keyValsToObjectR = keyValsToObjectR;\n    exports.locationPluginFactory = locationPluginFactory;\n    exports.makeEvent = makeEvent;\n    exports.makeStub = makeStub;\n    exports.map = map;\n    exports.mapObj = mapObj;\n    exports.matchState = matchState;\n    exports.maxLength = maxLength;\n    exports.memoryLocationPlugin = memoryLocationPlugin;\n    exports.mergeR = mergeR;\n    exports.noop = noop;\n    exports.not = not;\n    exports.omit = omit;\n    exports.or = or;\n    exports.padString = padString;\n    exports.pairs = pairs;\n    exports.parse = parse;\n    exports.parseUrl = parseUrl$1;\n    exports.pattern = pattern;\n    exports.pick = pick;\n    exports.pipe = pipe;\n    exports.pluck = pluck;\n    exports.prop = prop;\n    exports.propEq = propEq;\n    exports.pushR = pushR;\n    exports.pushStateLocationPlugin = pushStateLocationPlugin;\n    exports.pushTo = pushTo;\n    exports.removeFrom = removeFrom;\n    exports.resolvablesBuilder = resolvablesBuilder;\n    exports.resolvePolicies = resolvePolicies;\n    exports.root = root;\n    exports.services = services;\n    exports.servicesPlugin = servicesPlugin;\n    exports.silenceUncaughtInPromise = silenceUncaughtInPromise;\n    exports.silentRejection = silentRejection;\n    exports.splitEqual = splitEqual;\n    exports.splitHash = splitHash;\n    exports.splitOnDelim = splitOnDelim;\n    exports.splitQuery = splitQuery;\n    exports.stringify = stringify;\n    exports.stripLastPathElement = stripLastPathElement;\n    exports.tail = tail;\n    exports.toJson = toJson;\n    exports.trace = trace;\n    exports.trimHashVal = trimHashVal;\n    exports.uniqR = uniqR;\n    exports.unnest = unnest;\n    exports.unnestR = unnestR;\n    exports.val = val;\n    exports.values = values;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n/**\n * State-based routing for AngularJS 1.x\n * This bundle requires the ui-router-core.js bundle from the @uirouter/core package.\n * @version v1.0.28\n * @link https://ui-router.github.io\n * @license MIT License, http://www.opensource.org/licenses/MIT\n */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('angular'), require('@uirouter/core')) :\n    typeof define === 'function' && define.amd ? define(['exports', 'angular', '@uirouter/core'], factory) :\n    (global = global || self, factory(global['@uirouter/angularjs'] = {}, global.angular, global['@uirouter/core']));\n}(this, (function (exports, ng_from_import, core) { 'use strict';\n\n    /** @publicapi @module ng1 */ /** */\n    /** @hidden */ var ng_from_global = angular;\n    /** @hidden */ var ng = ng_from_import && ng_from_import.module ? ng_from_import : ng_from_global;\n\n    /** @publicapi @module ng1 */ /** */\n    /** @internalapi */\n    function getNg1ViewConfigFactory() {\n        var templateFactory = null;\n        return function (path, view) {\n            templateFactory = templateFactory || core.services.$injector.get('$templateFactory');\n            return [new Ng1ViewConfig(path, view, templateFactory)];\n        };\n    }\n    /** @internalapi */\n    var hasAnyKey = function (keys, obj) { return keys.reduce(function (acc, key) { return acc || core.isDefined(obj[key]); }, false); };\n    /**\n     * This is a [[StateBuilder.builder]] function for angular1 `views`.\n     *\n     * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n     * handles the `views` property with logic specific to @uirouter/angularjs (ng1).\n     *\n     * If no `views: {}` property exists on the [[StateDeclaration]], then it creates the `views` object\n     * and applies the state-level configuration to a view named `$default`.\n     *\n     * @internalapi\n     */\n    function ng1ViewsBuilder(state) {\n        // Do not process root state\n        if (!state.parent)\n            return {};\n        var tplKeys = ['templateProvider', 'templateUrl', 'template', 'notify', 'async'], ctrlKeys = ['controller', 'controllerProvider', 'controllerAs', 'resolveAs'], compKeys = ['component', 'bindings', 'componentProvider'], nonCompKeys = tplKeys.concat(ctrlKeys), allViewKeys = compKeys.concat(nonCompKeys);\n        // Do not allow a state to have both state-level props and also a `views: {}` property.\n        // A state without a `views: {}` property can declare properties for the `$default` view as properties of the state.\n        // However, the `$default` approach should not be mixed with a separate `views: ` block.\n        if (core.isDefined(state.views) && hasAnyKey(allViewKeys, state)) {\n            throw new Error(\"State '\" + state.name + \"' has a 'views' object. \" +\n                \"It cannot also have \\\"view properties\\\" at the state level.  \" +\n                \"Move the following properties into a view (in the 'views' object): \" +\n                (\" \" + allViewKeys.filter(function (key) { return core.isDefined(state[key]); }).join(', ')));\n        }\n        var views = {}, viewsObject = state.views || { $default: core.pick(state, allViewKeys) };\n        core.forEach(viewsObject, function (config, name) {\n            // Account for views: { \"\": { template... } }\n            name = name || '$default';\n            // Account for views: { header: \"headerComponent\" }\n            if (core.isString(config))\n                config = { component: config };\n            // Make a shallow copy of the config object\n            config = core.extend({}, config);\n            // Do not allow a view to mix props for component-style view with props for template/controller-style view\n            if (hasAnyKey(compKeys, config) && hasAnyKey(nonCompKeys, config)) {\n                throw new Error(\"Cannot combine: \" + compKeys.join('|') + \" with: \" + nonCompKeys.join('|') + \" in stateview: '\" + name + \"@\" + state.name + \"'\");\n            }\n            config.resolveAs = config.resolveAs || '$resolve';\n            config.$type = 'ng1';\n            config.$context = state;\n            config.$name = name;\n            var normalized = core.ViewService.normalizeUIViewTarget(config.$context, config.$name);\n            config.$uiViewName = normalized.uiViewName;\n            config.$uiViewContextAnchor = normalized.uiViewContextAnchor;\n            views[name] = config;\n        });\n        return views;\n    }\n    /** @hidden */\n    var id = 0;\n    /** @internalapi */\n    var Ng1ViewConfig = /** @class */ (function () {\n        function Ng1ViewConfig(path, viewDecl, factory) {\n            var _this = this;\n            this.path = path;\n            this.viewDecl = viewDecl;\n            this.factory = factory;\n            this.$id = id++;\n            this.loaded = false;\n            this.getTemplate = function (uiView, context) {\n                return _this.component\n                    ? _this.factory.makeComponentTemplate(uiView, context, _this.component, _this.viewDecl.bindings)\n                    : _this.template;\n            };\n        }\n        Ng1ViewConfig.prototype.load = function () {\n            var _this = this;\n            var $q = core.services.$q;\n            var context = new core.ResolveContext(this.path);\n            var params = this.path.reduce(function (acc, node) { return core.extend(acc, node.paramValues); }, {});\n            var promises = {\n                template: $q.when(this.factory.fromConfig(this.viewDecl, params, context)),\n                controller: $q.when(this.getController(context)),\n            };\n            return $q.all(promises).then(function (results) {\n                core.trace.traceViewServiceEvent('Loaded', _this);\n                _this.controller = results.controller;\n                core.extend(_this, results.template); // Either { template: \"tpl\" } or { component: \"cmpName\" }\n                return _this;\n            });\n        };\n        /**\n         * Gets the controller for a view configuration.\n         *\n         * @returns {Function|Promise.<Function>} Returns a controller, or a promise that resolves to a controller.\n         */\n        Ng1ViewConfig.prototype.getController = function (context) {\n            var provider = this.viewDecl.controllerProvider;\n            if (!core.isInjectable(provider))\n                return this.viewDecl.controller;\n            var deps = core.services.$injector.annotate(provider);\n            var providerFn = core.isArray(provider) ? core.tail(provider) : provider;\n            var resolvable = new core.Resolvable('', providerFn, deps);\n            return resolvable.get(context);\n        };\n        return Ng1ViewConfig;\n    }());\n\n    /** @publicapi @module view */ /** */\n    /**\n     * Service which manages loading of templates from a ViewConfig.\n     */\n    var TemplateFactory = /** @class */ (function () {\n        function TemplateFactory() {\n            var _this = this;\n            /** @hidden */ this._useHttp = ng.version.minor < 3;\n            /** @hidden */ this.$get = [\n                '$http',\n                '$templateCache',\n                '$injector',\n                function ($http, $templateCache, $injector) {\n                    _this.$templateRequest = $injector.has && $injector.has('$templateRequest') && $injector.get('$templateRequest');\n                    _this.$http = $http;\n                    _this.$templateCache = $templateCache;\n                    return _this;\n                },\n            ];\n        }\n        /** @hidden */\n        TemplateFactory.prototype.useHttpService = function (value) {\n            this._useHttp = value;\n        };\n        /**\n         * Creates a template from a configuration object.\n         *\n         * @param config Configuration object for which to load a template.\n         * The following properties are search in the specified order, and the first one\n         * that is defined is used to create the template:\n         *\n         * @param params  Parameters to pass to the template function.\n         * @param context The resolve context associated with the template's view\n         *\n         * @return {string|object}  The template html as a string, or a promise for\n         * that string,or `null` if no template is configured.\n         */\n        TemplateFactory.prototype.fromConfig = function (config, params, context) {\n            var defaultTemplate = '<ui-view></ui-view>';\n            var asTemplate = function (result) { return core.services.$q.when(result).then(function (str) { return ({ template: str }); }); };\n            var asComponent = function (result) { return core.services.$q.when(result).then(function (str) { return ({ component: str }); }); };\n            return core.isDefined(config.template)\n                ? asTemplate(this.fromString(config.template, params))\n                : core.isDefined(config.templateUrl)\n                    ? asTemplate(this.fromUrl(config.templateUrl, params))\n                    : core.isDefined(config.templateProvider)\n                        ? asTemplate(this.fromProvider(config.templateProvider, params, context))\n                        : core.isDefined(config.component)\n                            ? asComponent(config.component)\n                            : core.isDefined(config.componentProvider)\n                                ? asComponent(this.fromComponentProvider(config.componentProvider, params, context))\n                                : asTemplate(defaultTemplate);\n        };\n        /**\n         * Creates a template from a string or a function returning a string.\n         *\n         * @param template html template as a string or function that returns an html template as a string.\n         * @param params Parameters to pass to the template function.\n         *\n         * @return {string|object} The template html as a string, or a promise for that\n         * string.\n         */\n        TemplateFactory.prototype.fromString = function (template, params) {\n            return core.isFunction(template) ? template(params) : template;\n        };\n        /**\n         * Loads a template from the a URL via `$http` and `$templateCache`.\n         *\n         * @param {string|Function} url url of the template to load, or a function\n         * that returns a url.\n         * @param {Object} params Parameters to pass to the url function.\n         * @return {string|Promise.<string>} The template html as a string, or a promise\n         * for that string.\n         */\n        TemplateFactory.prototype.fromUrl = function (url, params) {\n            if (core.isFunction(url))\n                url = url(params);\n            if (url == null)\n                return null;\n            if (this._useHttp) {\n                return this.$http\n                    .get(url, { cache: this.$templateCache, headers: { Accept: 'text/html' } })\n                    .then(function (response) {\n                    return response.data;\n                });\n            }\n            return this.$templateRequest(url);\n        };\n        /**\n         * Creates a template by invoking an injectable provider function.\n         *\n         * @param provider Function to invoke via `locals`\n         * @param {Function} injectFn a function used to invoke the template provider\n         * @return {string|Promise.<string>} The template html as a string, or a promise\n         * for that string.\n         */\n        TemplateFactory.prototype.fromProvider = function (provider, params, context) {\n            var deps = core.services.$injector.annotate(provider);\n            var providerFn = core.isArray(provider) ? core.tail(provider) : provider;\n            var resolvable = new core.Resolvable('', providerFn, deps);\n            return resolvable.get(context);\n        };\n        /**\n         * Creates a component's template by invoking an injectable provider function.\n         *\n         * @param provider Function to invoke via `locals`\n         * @param {Function} injectFn a function used to invoke the template provider\n         * @return {string} The template html as a string: \"<component-name input1='::$resolve.foo'></component-name>\".\n         */\n        TemplateFactory.prototype.fromComponentProvider = function (provider, params, context) {\n            var deps = core.services.$injector.annotate(provider);\n            var providerFn = core.isArray(provider) ? core.tail(provider) : provider;\n            var resolvable = new core.Resolvable('', providerFn, deps);\n            return resolvable.get(context);\n        };\n        /**\n         * Creates a template from a component's name\n         *\n         * This implements route-to-component.\n         * It works by retrieving the component (directive) metadata from the injector.\n         * It analyses the component's bindings, then constructs a template that instantiates the component.\n         * The template wires input and output bindings to resolves or from the parent component.\n         *\n         * @param uiView {object} The parent ui-view (for binding outputs to callbacks)\n         * @param context The ResolveContext (for binding outputs to callbacks returned from resolves)\n         * @param component {string} Component's name in camel case.\n         * @param bindings An object defining the component's bindings: {foo: '<'}\n         * @return {string} The template as a string: \"<component-name input1='::$resolve.foo'></component-name>\".\n         */\n        TemplateFactory.prototype.makeComponentTemplate = function (uiView, context, component, bindings) {\n            bindings = bindings || {};\n            // Bind once prefix\n            var prefix = ng.version.minor >= 3 ? '::' : '';\n            // Convert to kebob name. Add x- prefix if the string starts with `x-` or `data-`\n            var kebob = function (camelCase) {\n                var kebobed = core.kebobString(camelCase);\n                return /^(x|data)-/.exec(kebobed) ? \"x-\" + kebobed : kebobed;\n            };\n            var attributeTpl = function (input) {\n                var name = input.name, type = input.type;\n                var attrName = kebob(name);\n                // If the ui-view has an attribute which matches a binding on the routed component\n                // then pass that attribute through to the routed component template.\n                // Prefer ui-view wired mappings to resolve data, unless the resolve was explicitly bound using `bindings:`\n                if (uiView.attr(attrName) && !bindings[name])\n                    return attrName + \"='\" + uiView.attr(attrName) + \"'\";\n                var resolveName = bindings[name] || name;\n                // Pre-evaluate the expression for \"@\" bindings by enclosing in {{ }}\n                // some-attr=\"{{ ::$resolve.someResolveName }}\"\n                if (type === '@')\n                    return attrName + \"='{{\" + prefix + \"$resolve.\" + resolveName + \"}}'\";\n                // Wire \"&\" callbacks to resolves that return a callback function\n                // Get the result of the resolve (should be a function) and annotate it to get its arguments.\n                // some-attr=\"$resolve.someResolveResultName(foo, bar)\"\n                if (type === '&') {\n                    var res = context.getResolvable(resolveName);\n                    var fn = res && res.data;\n                    var args = (fn && core.services.$injector.annotate(fn)) || [];\n                    // account for array style injection, i.e., ['foo', function(foo) {}]\n                    var arrayIdxStr = core.isArray(fn) ? \"[\" + (fn.length - 1) + \"]\" : '';\n                    return attrName + \"='$resolve.\" + resolveName + arrayIdxStr + \"(\" + args.join(',') + \")'\";\n                }\n                // some-attr=\"::$resolve.someResolveName\"\n                return attrName + \"='\" + prefix + \"$resolve.\" + resolveName + \"'\";\n            };\n            var attrs = getComponentBindings(component).map(attributeTpl).join(' ');\n            var kebobName = kebob(component);\n            return \"<\" + kebobName + \" \" + attrs + \"></\" + kebobName + \">\";\n        };\n        return TemplateFactory;\n    }());\n    // Gets all the directive(s)' inputs ('@', '=', and '<') and outputs ('&')\n    function getComponentBindings(name) {\n        var cmpDefs = core.services.$injector.get(name + 'Directive'); // could be multiple\n        if (!cmpDefs || !cmpDefs.length)\n            throw new Error(\"Unable to find component named '\" + name + \"'\");\n        return cmpDefs.map(getBindings).reduce(core.unnestR, []);\n    }\n    // Given a directive definition, find its object input attributes\n    // Use different properties, depending on the type of directive (component, bindToController, normal)\n    var getBindings = function (def) {\n        if (core.isObject(def.bindToController))\n            return scopeBindings(def.bindToController);\n        return scopeBindings(def.scope);\n    };\n    // for ng 1.2 style, process the scope: { input: \"=foo\" }\n    // for ng 1.3 through ng 1.5, process the component's bindToController: { input: \"=foo\" } object\n    var scopeBindings = function (bindingsObj) {\n        return Object.keys(bindingsObj || {})\n            // [ 'input', [ '=foo', '=', 'foo' ] ]\n            .map(function (key) { return [key, /^([=<@&])[?]?(.*)/.exec(bindingsObj[key])]; })\n            // skip malformed values\n            .filter(function (tuple) { return core.isDefined(tuple) && core.isArray(tuple[1]); })\n            // { name: ('foo' || 'input'), type: '=' }\n            .map(function (tuple) { return ({ name: tuple[1][2] || tuple[0], type: tuple[1][1] }); });\n    };\n\n    /** @publicapi @module ng1 */ /** */\n    /**\n     * The Angular 1 `StateProvider`\n     *\n     * The `$stateProvider` works similar to Angular's v1 router, but it focuses purely\n     * on state.\n     *\n     * A state corresponds to a \"place\" in the application in terms of the overall UI and\n     * navigation. A state describes (via the controller / template / view properties) what\n     * the UI looks like and does at that place.\n     *\n     * States often have things in common, and the primary way of factoring out these\n     * commonalities in this model is via the state hierarchy, i.e. parent/child states aka\n     * nested states.\n     *\n     * The `$stateProvider` provides interfaces to declare these states for your app.\n     */\n    var StateProvider = /** @class */ (function () {\n        function StateProvider(stateRegistry, stateService) {\n            this.stateRegistry = stateRegistry;\n            this.stateService = stateService;\n            core.createProxyFunctions(core.val(StateProvider.prototype), this, core.val(this));\n        }\n        /**\n         * Decorates states when they are registered\n         *\n         * Allows you to extend (carefully) or override (at your own peril) the\n         * `stateBuilder` object used internally by [[StateRegistry]].\n         * This can be used to add custom functionality to ui-router,\n         * for example inferring templateUrl based on the state name.\n         *\n         * When passing only a name, it returns the current (original or decorated) builder\n         * function that matches `name`.\n         *\n         * The builder functions that can be decorated are listed below. Though not all\n         * necessarily have a good use case for decoration, that is up to you to decide.\n         *\n         * In addition, users can attach custom decorators, which will generate new\n         * properties within the state's internal definition. There is currently no clear\n         * use-case for this beyond accessing internal states (i.e. $state.$current),\n         * however, expect this to become increasingly relevant as we introduce additional\n         * meta-programming features.\n         *\n         * **Warning**: Decorators should not be interdependent because the order of\n         * execution of the builder functions in non-deterministic. Builder functions\n         * should only be dependent on the state definition object and super function.\n         *\n         *\n         * Existing builder functions and current return values:\n         *\n         * - **parent** `{object}` - returns the parent state object.\n         * - **data** `{object}` - returns state data, including any inherited data that is not\n         *   overridden by own values (if any).\n         * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}\n         *   or `null`.\n         * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is\n         *   navigable).\n         * - **params** `{object}` - returns an array of state params that are ensured to\n         *   be a super-set of parent's params.\n         * - **views** `{object}` - returns a views object where each key is an absolute view\n         *   name (i.e. \"viewName@stateName\") and each value is the config object\n         *   (template, controller) for the view. Even when you don't use the views object\n         *   explicitly on a state config, one is still created for you internally.\n         *   So by decorating this builder function you have access to decorating template\n         *   and controller properties.\n         * - **ownParams** `{object}` - returns an array of params that belong to the state,\n         *   not including any params defined by ancestor states.\n         * - **path** `{string}` - returns the full path from the root down to this state.\n         *   Needed for state activation.\n         * - **includes** `{object}` - returns an object that includes every state that\n         *   would pass a `$state.includes()` test.\n         *\n         * #### Example:\n         * Override the internal 'views' builder with a function that takes the state\n         * definition, and a reference to the internal function being overridden:\n         * ```js\n         * $stateProvider.decorator('views', function (state, parent) {\n         *   let result = {},\n         *       views = parent(state);\n         *\n         *   angular.forEach(views, function (config, name) {\n         *     let autoName = (state.name + '.' + name).replace('.', '/');\n         *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';\n         *     result[name] = config;\n         *   });\n         *   return result;\n         * });\n         *\n         * $stateProvider.state('home', {\n         *   views: {\n         *     'contact.list': { controller: 'ListController' },\n         *     'contact.item': { controller: 'ItemController' }\n         *   }\n         * });\n         * ```\n         *\n         *\n         * ```js\n         * // Auto-populates list and item views with /partials/home/contact/list.html,\n         * // and /partials/home/contact/item.html, respectively.\n         * $state.go('home');\n         * ```\n         *\n         * @param {string} name The name of the builder function to decorate.\n         * @param {object} func A function that is responsible for decorating the original\n         * builder function. The function receives two parameters:\n         *\n         *   - `{object}` - state - The state config object.\n         *   - `{object}` - super - The original builder function.\n         *\n         * @return {object} $stateProvider - $stateProvider instance\n         */\n        StateProvider.prototype.decorator = function (name, func) {\n            return this.stateRegistry.decorator(name, func) || this;\n        };\n        StateProvider.prototype.state = function (name, definition) {\n            if (core.isObject(name)) {\n                definition = name;\n            }\n            else {\n                definition.name = name;\n            }\n            this.stateRegistry.register(definition);\n            return this;\n        };\n        /**\n         * Registers an invalid state handler\n         *\n         * This is a passthrough to [[StateService.onInvalid]] for ng1.\n         */\n        StateProvider.prototype.onInvalid = function (callback) {\n            return this.stateService.onInvalid(callback);\n        };\n        return StateProvider;\n    }());\n\n    /** @publicapi @module ng1 */ /** */\n    /**\n     * This is a [[StateBuilder.builder]] function for angular1 `onEnter`, `onExit`,\n     * `onRetain` callback hooks on a [[Ng1StateDeclaration]].\n     *\n     * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n     * ensures that those hooks are injectable for @uirouter/angularjs (ng1).\n     *\n     * @internalapi\n     */\n    var getStateHookBuilder = function (hookName) {\n        return function stateHookBuilder(stateObject) {\n            var hook = stateObject[hookName];\n            var pathname = hookName === 'onExit' ? 'from' : 'to';\n            function decoratedNg1Hook(trans, state) {\n                var resolveContext = new core.ResolveContext(trans.treeChanges(pathname));\n                var subContext = resolveContext.subContext(state.$$state());\n                var locals = core.extend(getLocals(subContext), { $state$: state, $transition$: trans });\n                return core.services.$injector.invoke(hook, this, locals);\n            }\n            return hook ? decoratedNg1Hook : undefined;\n        };\n    };\n\n    /** @publicapi @module ng1 */ /** */\n    /**\n     * Implements UI-Router LocationServices and LocationConfig using Angular 1's $location service\n     * @internalapi\n     */\n    var Ng1LocationServices = /** @class */ (function () {\n        function Ng1LocationServices($locationProvider) {\n            // .onChange() registry\n            this._urlListeners = [];\n            this.$locationProvider = $locationProvider;\n            var _lp = core.val($locationProvider);\n            core.createProxyFunctions(_lp, this, _lp, ['hashPrefix']);\n        }\n        /**\n         * Applys ng1-specific path parameter encoding\n         *\n         * The Angular 1 `$location` service is a bit weird.\n         * It doesn't allow slashes to be encoded/decoded bi-directionally.\n         *\n         * See the writeup at https://github.com/angular-ui/ui-router/issues/2598\n         *\n         * This code patches the `path` parameter type so it encoded/decodes slashes as ~2F\n         *\n         * @param router\n         */\n        Ng1LocationServices.monkeyPatchPathParameterType = function (router) {\n            var pathType = router.urlMatcherFactory.type('path');\n            pathType.encode = function (x) {\n                return x != null ? x.toString().replace(/(~|\\/)/g, function (m) { return ({ '~': '~~', '/': '~2F' }[m]); }) : x;\n            };\n            pathType.decode = function (x) {\n                return x != null ? x.toString().replace(/(~~|~2F)/g, function (m) { return ({ '~~': '~', '~2F': '/' }[m]); }) : x;\n            };\n        };\n        // eslint-disable-next-line @typescript-eslint/no-empty-function\n        Ng1LocationServices.prototype.dispose = function () { };\n        Ng1LocationServices.prototype.onChange = function (callback) {\n            var _this = this;\n            this._urlListeners.push(callback);\n            return function () { return core.removeFrom(_this._urlListeners)(callback); };\n        };\n        Ng1LocationServices.prototype.html5Mode = function () {\n            var html5Mode = this.$locationProvider.html5Mode();\n            html5Mode = core.isObject(html5Mode) ? html5Mode.enabled : html5Mode;\n            return html5Mode && this.$sniffer.history;\n        };\n        Ng1LocationServices.prototype.baseHref = function () {\n            return this._baseHref || (this._baseHref = this.$browser.baseHref() || this.$window.location.pathname);\n        };\n        Ng1LocationServices.prototype.url = function (newUrl, replace, state) {\n            if (replace === void 0) { replace = false; }\n            if (core.isDefined(newUrl))\n                this.$location.url(newUrl);\n            if (replace)\n                this.$location.replace();\n            if (state)\n                this.$location.state(state);\n            return this.$location.url();\n        };\n        Ng1LocationServices.prototype._runtimeServices = function ($rootScope, $location, $sniffer, $browser, $window) {\n            var _this = this;\n            this.$location = $location;\n            this.$sniffer = $sniffer;\n            this.$browser = $browser;\n            this.$window = $window;\n            // Bind $locationChangeSuccess to the listeners registered in LocationService.onChange\n            $rootScope.$on('$locationChangeSuccess', function (evt) { return _this._urlListeners.forEach(function (fn) { return fn(evt); }); });\n            var _loc = core.val($location);\n            // Bind these LocationService functions to $location\n            core.createProxyFunctions(_loc, this, _loc, ['replace', 'path', 'search', 'hash']);\n            // Bind these LocationConfig functions to $location\n            core.createProxyFunctions(_loc, this, _loc, ['port', 'protocol', 'host']);\n        };\n        return Ng1LocationServices;\n    }());\n\n    /** @publicapi @module url */ /** */\n    /**\n     * Manages rules for client-side URL\n     *\n     * ### Deprecation warning:\n     * This class is now considered to be an internal API\n     * Use the [[UrlService]] instead.\n     * For configuring URL rules, use the [[UrlRulesApi]] which can be found as [[UrlService.rules]].\n     *\n     * This class manages the router rules for what to do when the URL changes.\n     *\n     * This provider remains for backwards compatibility.\n     *\n     * @internalapi\n     * @deprecated\n     */\n    var UrlRouterProvider = /** @class */ (function () {\n        /** @hidden */\n        function UrlRouterProvider(/** @hidden */ router) {\n            this.router = router;\n        }\n        UrlRouterProvider.injectableHandler = function (router, handler) {\n            return function (match) { return core.services.$injector.invoke(handler, null, { $match: match, $stateParams: router.globals.params }); };\n        };\n        /** @hidden */\n        UrlRouterProvider.prototype.$get = function () {\n            var urlService = this.router.urlService;\n            this.router.urlRouter.update(true);\n            if (!urlService.interceptDeferred)\n                urlService.listen();\n            return this.router.urlRouter;\n        };\n        /**\n         * Registers a url handler function.\n         *\n         * Registers a low level url handler (a `rule`).\n         * A rule detects specific URL patterns and returns a redirect, or performs some action.\n         *\n         * If a rule returns a string, the URL is replaced with the string, and all rules are fired again.\n         *\n         * #### Example:\n         * ```js\n         * var app = angular.module('app', ['ui.router.router']);\n         *\n         * app.config(function ($urlRouterProvider) {\n         *   // Here's an example of how you might allow case insensitive urls\n         *   $urlRouterProvider.rule(function ($injector, $location) {\n         *     var path = $location.path(),\n         *         normalized = path.toLowerCase();\n         *\n         *     if (path !== normalized) {\n         *       return normalized;\n         *     }\n         *   });\n         * });\n         * ```\n         *\n         * @param ruleFn\n         * Handler function that takes `$injector` and `$location` services as arguments.\n         * You can use them to detect a url and return a different url as a string.\n         *\n         * @return [[UrlRouterProvider]] (`this`)\n         */\n        UrlRouterProvider.prototype.rule = function (ruleFn) {\n            var _this = this;\n            if (!core.isFunction(ruleFn))\n                throw new Error(\"'rule' must be a function\");\n            var match = function () { return ruleFn(core.services.$injector, _this.router.locationService); };\n            var rule = new core.BaseUrlRule(match, core.identity);\n            this.router.urlService.rules.rule(rule);\n            return this;\n        };\n        /**\n         * Defines the path or behavior to use when no url can be matched.\n         *\n         * #### Example:\n         * ```js\n         * var app = angular.module('app', ['ui.router.router']);\n         *\n         * app.config(function ($urlRouterProvider) {\n         *   // if the path doesn't match any of the urls you configured\n         *   // otherwise will take care of routing the user to the\n         *   // specified url\n         *   $urlRouterProvider.otherwise('/index');\n         *\n         *   // Example of using function rule as param\n         *   $urlRouterProvider.otherwise(function ($injector, $location) {\n         *     return '/a/valid/url';\n         *   });\n         * });\n         * ```\n         *\n         * @param rule\n         * The url path you want to redirect to or a function rule that returns the url path or performs a `$state.go()`.\n         * The function version is passed two params: `$injector` and `$location` services, and should return a url string.\n         *\n         * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n         */\n        UrlRouterProvider.prototype.otherwise = function (rule) {\n            var _this = this;\n            var urlRules = this.router.urlService.rules;\n            if (core.isString(rule)) {\n                urlRules.otherwise(rule);\n            }\n            else if (core.isFunction(rule)) {\n                urlRules.otherwise(function () { return rule(core.services.$injector, _this.router.locationService); });\n            }\n            else {\n                throw new Error(\"'rule' must be a string or function\");\n            }\n            return this;\n        };\n        /**\n         * Registers a handler for a given url matching.\n         *\n         * If the handler is a string, it is\n         * treated as a redirect, and is interpolated according to the syntax of match\n         * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).\n         *\n         * If the handler is a function, it is injectable.\n         * It gets invoked if `$location` matches.\n         * You have the option of inject the match object as `$match`.\n         *\n         * The handler can return\n         *\n         * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`\n         *   will continue trying to find another one that matches.\n         * - **string** which is treated as a redirect and passed to `$location.url()`\n         * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.\n         *\n         * #### Example:\n         * ```js\n         * var app = angular.module('app', ['ui.router.router']);\n         *\n         * app.config(function ($urlRouterProvider) {\n         *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {\n         *     if ($state.$current.navigable !== state ||\n         *         !equalForKeys($match, $stateParams) {\n         *      $state.transitionTo(state, $match, false);\n         *     }\n         *   });\n         * });\n         * ```\n         *\n         * @param what A pattern string to match, compiled as a [[UrlMatcher]].\n         * @param handler The path (or function that returns a path) that you want to redirect your user to.\n         * @param ruleCallback [optional] A callback that receives the `rule` registered with [[UrlMatcher.rule]]\n         *\n         * Note: the handler may also invoke arbitrary code, such as `$state.go()`\n         */\n        UrlRouterProvider.prototype.when = function (what, handler) {\n            if (core.isArray(handler) || core.isFunction(handler)) {\n                handler = UrlRouterProvider.injectableHandler(this.router, handler);\n            }\n            this.router.urlService.rules.when(what, handler);\n            return this;\n        };\n        /**\n         * Disables monitoring of the URL.\n         *\n         * Call this method before UI-Router has bootstrapped.\n         * It will stop UI-Router from performing the initial url sync.\n         *\n         * This can be useful to perform some asynchronous initialization before the router starts.\n         * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n         *\n         * #### Example:\n         * ```js\n         * var app = angular.module('app', ['ui.router']);\n         *\n         * app.config(function ($urlRouterProvider) {\n         *   // Prevent $urlRouter from automatically intercepting URL changes;\n         *   $urlRouterProvider.deferIntercept();\n         * })\n         *\n         * app.run(function (MyService, $urlRouter, $http) {\n         *   $http.get(\"/stuff\").then(function(resp) {\n         *     MyService.doStuff(resp.data);\n         *     $urlRouter.listen();\n         *     $urlRouter.sync();\n         *   });\n         * });\n         * ```\n         *\n         * @param defer Indicates whether to defer location change interception.\n         *        Passing no parameter is equivalent to `true`.\n         */\n        UrlRouterProvider.prototype.deferIntercept = function (defer) {\n            this.router.urlService.deferIntercept(defer);\n        };\n        return UrlRouterProvider;\n    }());\n\n    /* eslint-disable @typescript-eslint/no-empty-function */\n    ng.module('ui.router.angular1', []);\n    var mod_init = ng.module('ui.router.init', ['ng']);\n    var mod_util = ng.module('ui.router.util', ['ui.router.init']);\n    var mod_rtr = ng.module('ui.router.router', ['ui.router.util']);\n    var mod_state = ng.module('ui.router.state', ['ui.router.router', 'ui.router.util', 'ui.router.angular1']);\n    var mod_main = ng.module('ui.router', ['ui.router.init', 'ui.router.state', 'ui.router.angular1']);\n    var mod_cmpt = ng.module('ui.router.compat', ['ui.router']);\n    var router = null;\n    $uiRouterProvider.$inject = ['$locationProvider'];\n    /** This angular 1 provider instantiates a Router and exposes its services via the angular injector */\n    function $uiRouterProvider($locationProvider) {\n        // Create a new instance of the Router when the $uiRouterProvider is initialized\n        router = this.router = new core.UIRouter();\n        router.stateProvider = new StateProvider(router.stateRegistry, router.stateService);\n        // Apply ng1 specific StateBuilder code for `views`, `resolve`, and `onExit/Retain/Enter` properties\n        router.stateRegistry.decorator('views', ng1ViewsBuilder);\n        router.stateRegistry.decorator('onExit', getStateHookBuilder('onExit'));\n        router.stateRegistry.decorator('onRetain', getStateHookBuilder('onRetain'));\n        router.stateRegistry.decorator('onEnter', getStateHookBuilder('onEnter'));\n        router.viewService._pluginapi._viewConfigFactory('ng1', getNg1ViewConfigFactory());\n        // Disable decoding of params by UrlMatcherFactory because $location already handles this\n        router.urlService.config._decodeParams = false;\n        var ng1LocationService = (router.locationService = router.locationConfig = new Ng1LocationServices($locationProvider));\n        Ng1LocationServices.monkeyPatchPathParameterType(router);\n        // backwards compat: also expose router instance as $uiRouterProvider.router\n        router['router'] = router;\n        router['$get'] = $get;\n        $get.$inject = ['$location', '$browser', '$window', '$sniffer', '$rootScope', '$http', '$templateCache'];\n        function $get($location, $browser, $window, $sniffer, $rootScope, $http, $templateCache) {\n            ng1LocationService._runtimeServices($rootScope, $location, $sniffer, $browser, $window);\n            delete router['router'];\n            delete router['$get'];\n            return router;\n        }\n        return router;\n    }\n    var getProviderFor = function (serviceName) { return [\n        '$uiRouterProvider',\n        function ($urp) {\n            var service = $urp.router[serviceName];\n            service['$get'] = function () { return service; };\n            return service;\n        },\n    ]; };\n    // This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)\n    runBlock.$inject = ['$injector', '$q', '$uiRouter'];\n    function runBlock($injector, $q, $uiRouter) {\n        core.services.$injector = $injector;\n        core.services.$q = $q;\n        // https://github.com/angular-ui/ui-router/issues/3678\n        if (!Object.prototype.hasOwnProperty.call($injector, 'strictDi')) {\n            try {\n                $injector.invoke(function (checkStrictDi) { });\n            }\n            catch (error) {\n                $injector.strictDi = !!/strict mode/.exec(error && error.toString());\n            }\n        }\n        // The $injector is now available.\n        // Find any resolvables that had dependency annotation deferred\n        $uiRouter.stateRegistry\n            .get()\n            .map(function (x) { return x.$$state().resolvables; })\n            .reduce(core.unnestR, [])\n            .filter(function (x) { return x.deps === 'deferred'; })\n            .forEach(function (resolvable) { return (resolvable.deps = $injector.annotate(resolvable.resolveFn, $injector.strictDi)); });\n    }\n    // $urlRouter service and $urlRouterProvider\n    var getUrlRouterProvider = function (uiRouter) { return (uiRouter.urlRouterProvider = new UrlRouterProvider(uiRouter)); };\n    // $state service and $stateProvider\n    // $urlRouter service and $urlRouterProvider\n    var getStateProvider = function () { return core.extend(router.stateProvider, { $get: function () { return router.stateService; } }); };\n    watchDigests.$inject = ['$rootScope'];\n    function watchDigests($rootScope) {\n        $rootScope.$watch(function () {\n            core.trace.approximateDigests++;\n        });\n    }\n    mod_init.provider('$uiRouter', $uiRouterProvider);\n    mod_rtr.provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);\n    mod_util.provider('$urlService', getProviderFor('urlService'));\n    mod_util.provider('$urlMatcherFactory', ['$uiRouterProvider', function () { return router.urlMatcherFactory; }]);\n    mod_util.provider('$templateFactory', function () { return new TemplateFactory(); });\n    mod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));\n    mod_state.provider('$uiRouterGlobals', getProviderFor('globals'));\n    mod_state.provider('$transitions', getProviderFor('transitionService'));\n    mod_state.provider('$state', ['$uiRouterProvider', getStateProvider]);\n    mod_state.factory('$stateParams', ['$uiRouter', function ($uiRouter) { return $uiRouter.globals.params; }]);\n    mod_main.factory('$view', function () { return router.viewService; });\n    mod_main.service('$trace', function () { return core.trace; });\n    mod_main.run(watchDigests);\n    mod_util.run(['$urlMatcherFactory', function ($urlMatcherFactory) { }]);\n    mod_state.run(['$state', function ($state) { }]);\n    mod_rtr.run(['$urlRouter', function ($urlRouter) { }]);\n    mod_init.run(runBlock);\n    /** @hidden TODO: find a place to move this */\n    var getLocals = function (ctx) {\n        var tokens = ctx.getTokens().filter(core.isString);\n        var tuples = tokens.map(function (key) {\n            var resolvable = ctx.getResolvable(key);\n            var waitPolicy = ctx.getPolicy(resolvable).async;\n            return [key, waitPolicy === 'NOWAIT' ? resolvable.promise : resolvable.data];\n        });\n        return tuples.reduce(core.applyPairs, {});\n    };\n\n    /* eslint-disable @typescript-eslint/no-empty-interface */\n    /** @hidden */\n    function parseStateRef(ref) {\n        var paramsOnly = ref.match(/^\\s*({[^}]*})\\s*$/);\n        if (paramsOnly)\n            ref = '(' + paramsOnly[1] + ')';\n        var parsed = ref.replace(/\\n/g, ' ').match(/^\\s*([^(]*?)\\s*(\\((.*)\\))?\\s*$/);\n        if (!parsed || parsed.length !== 4)\n            throw new Error(\"Invalid state ref '\" + ref + \"'\");\n        return { state: parsed[1] || null, paramExpr: parsed[3] || null };\n    }\n    /** @hidden */\n    function stateContext(el) {\n        var $uiView = el.parent().inheritedData('$uiView');\n        var path = core.parse('$cfg.path')($uiView);\n        return path ? core.tail(path).state.name : undefined;\n    }\n    /** @hidden */\n    function processedDef($state, $element, def) {\n        var uiState = def.uiState || $state.current.name;\n        var uiStateOpts = core.extend(defaultOpts($element, $state), def.uiStateOpts || {});\n        var href = $state.href(uiState, def.uiStateParams, uiStateOpts);\n        return { uiState: uiState, uiStateParams: def.uiStateParams, uiStateOpts: uiStateOpts, href: href };\n    }\n    /** @hidden */\n    function getTypeInfo(el) {\n        // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n        var isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n        var isForm = el[0].nodeName === 'FORM';\n        return {\n            attr: isForm ? 'action' : isSvg ? 'xlink:href' : 'href',\n            isAnchor: el.prop('tagName').toUpperCase() === 'A',\n            clickable: !isForm,\n        };\n    }\n    /** @hidden */\n    function clickHook(el, $state, $timeout, type, getDef) {\n        return function (e) {\n            var button = e.which || e.button, target = getDef();\n            if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || el.attr('target'))) {\n                // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n                var transition_1 = $timeout(function () {\n                    if (!el.attr('disabled')) {\n                        $state.go(target.uiState, target.uiStateParams, target.uiStateOpts);\n                    }\n                });\n                e.preventDefault();\n                // if the state has no URL, ignore one preventDefault from the <a> directive.\n                var ignorePreventDefaultCount_1 = type.isAnchor && !target.href ? 1 : 0;\n                e.preventDefault = function () {\n                    if (ignorePreventDefaultCount_1-- <= 0)\n                        $timeout.cancel(transition_1);\n                };\n            }\n        };\n    }\n    /** @hidden */\n    function defaultOpts(el, $state) {\n        return {\n            relative: stateContext(el) || $state.$current,\n            inherit: true,\n            source: 'sref',\n        };\n    }\n    /** @hidden */\n    function bindEvents(element, scope, hookFn, uiStateOpts) {\n        var events;\n        if (uiStateOpts) {\n            events = uiStateOpts.events;\n        }\n        if (!core.isArray(events)) {\n            events = ['click'];\n        }\n        var on = element.on ? 'on' : 'bind';\n        for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n            var event_1 = events_1[_i];\n            element[on](event_1, hookFn);\n        }\n        scope.$on('$destroy', function () {\n            var off = element.off ? 'off' : 'unbind';\n            for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n                var event_2 = events_2[_i];\n                element[off](event_2, hookFn);\n            }\n        });\n    }\n    /**\n     * `ui-sref`: A directive for linking to a state\n     *\n     * A directive which links to a state (and optionally, parameters).\n     * When clicked, this directive activates the linked state with the supplied parameter values.\n     *\n     * ### Linked State\n     * The attribute value of the `ui-sref` is the name of the state to link to.\n     *\n     * #### Example:\n     * This will activate the `home` state when the link is clicked.\n     * ```html\n     * <a ui-sref=\"home\">Home</a>\n     * ```\n     *\n     * ### Relative Links\n     * You can also use relative state paths within `ui-sref`, just like a relative path passed to `$state.go()` ([[StateService.go]]).\n     * You just need to be aware that the path is relative to the state that *created* the link.\n     * This allows a state to create a relative `ui-sref` which always targets the same destination.\n     *\n     * #### Example:\n     * Both these links are relative to the parent state, even when a child state is currently active.\n     * ```html\n     * <a ui-sref=\".child1\">child 1 state</a>\n     * <a ui-sref=\".child2\">child 2 state</a>\n     * ```\n     *\n     * This link activates the parent state.\n     * ```html\n     * <a ui-sref=\"^\">Return</a>\n     * ```\n     *\n     * ### hrefs\n     * If the linked state has a URL, the directive will automatically generate and\n     * update the `href` attribute (using the [[StateService.href]]  method).\n     *\n     * #### Example:\n     * Assuming the `users` state has a url of `/users/`\n     * ```html\n     * <a ui-sref=\"users\" href=\"/users/\">Users</a>\n     * ```\n     *\n     * ### Parameter Values\n     * In addition to the state name, a `ui-sref` can include parameter values which are applied when activating the state.\n     * Param values can be provided in the `ui-sref` value after the state name, enclosed by parentheses.\n     * The content inside the parentheses is an expression, evaluated to the parameter values.\n     *\n     * #### Example:\n     * This example renders a list of links to users.\n     * The state's `userId` parameter value comes from each user's `user.id` property.\n     * ```html\n     * <li ng-repeat=\"user in users\">\n     *   <a ui-sref=\"users.detail({ userId: user.id })\">{{ user.displayName }}</a>\n     * </li>\n     * ```\n     *\n     * Note:\n     * The parameter values expression is `$watch`ed for updates.\n     *\n     * ### Transition Options\n     * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-sref-opts` attribute.\n     * Options are restricted to `location`, `inherit`, and `reload`.\n     *\n     * #### Example:\n     * ```html\n     * <a ui-sref=\"home\" ui-sref-opts=\"{ reload: true }\">Home</a>\n     * ```\n     *\n     * ### Other DOM Events\n     *\n     * You can also customize which DOM events to respond to (instead of `click`) by\n     * providing an `events` array in the `ui-sref-opts` attribute.\n     *\n     * #### Example:\n     * ```html\n     * <input type=\"text\" ui-sref=\"contacts\" ui-sref-opts=\"{ events: ['change', 'blur'] }\">\n     * ```\n     *\n     * ### Highlighting the active link\n     * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n     *\n     * ### Examples\n     * If you have the following template:\n     *\n     * ```html\n     * <a ui-sref=\"home\">Home</a>\n     * <a ui-sref=\"about\">About</a>\n     * <a ui-sref=\"{page: 2}\">Next page</a>\n     *\n     * <ul>\n     *     <li ng-repeat=\"contact in contacts\">\n     *         <a ui-sref=\"contacts.detail({ id: contact.id })\">{{ contact.name }}</a>\n     *     </li>\n     * </ul>\n     * ```\n     *\n     * Then (assuming the current state is `contacts`) the rendered html including hrefs would be:\n     *\n     * ```html\n     * <a href=\"#/home\" ui-sref=\"home\">Home</a>\n     * <a href=\"#/about\" ui-sref=\"about\">About</a>\n     * <a href=\"#/contacts?page=2\" ui-sref=\"{page: 2}\">Next page</a>\n     *\n     * <ul>\n     *     <li ng-repeat=\"contact in contacts\">\n     *         <a href=\"#/contacts/1\" ui-sref=\"contacts.detail({ id: contact.id })\">Joe</a>\n     *     </li>\n     *     <li ng-repeat=\"contact in contacts\">\n     *         <a href=\"#/contacts/2\" ui-sref=\"contacts.detail({ id: contact.id })\">Alice</a>\n     *     </li>\n     *     <li ng-repeat=\"contact in contacts\">\n     *         <a href=\"#/contacts/3\" ui-sref=\"contacts.detail({ id: contact.id })\">Bob</a>\n     *     </li>\n     * </ul>\n     *\n     * <a href=\"#/home\" ui-sref=\"home\" ui-sref-opts=\"{reload: true}\">Home</a>\n     * ```\n     *\n     * ### Notes\n     *\n     * - You can use `ui-sref` to change **only the parameter values** by omitting the state name and parentheses.\n     * #### Example:\n     * Sets the `lang` parameter to `en` and remains on the same state.\n     *\n     * ```html\n     * <a ui-sref=\"{ lang: 'en' }\">English</a>\n     * ```\n     *\n     * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n     *\n     * - Unlike the parameter values expression, the state name is not `$watch`ed (for performance reasons).\n     * If you need to dynamically update the state being linked to, use the fully dynamic [[uiState]] directive.\n     */\n    var uiSrefDirective;\n    uiSrefDirective = [\n        '$uiRouter',\n        '$timeout',\n        function $StateRefDirective($uiRouter, $timeout) {\n            var $state = $uiRouter.stateService;\n            return {\n                restrict: 'A',\n                require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n                link: function (scope, element, attrs, uiSrefActive) {\n                    var type = getTypeInfo(element);\n                    var active = uiSrefActive[1] || uiSrefActive[0];\n                    var unlinkInfoFn = null;\n                    var rawDef = {};\n                    var getDef = function () { return processedDef($state, element, rawDef); };\n                    var ref = parseStateRef(attrs.uiSref);\n                    rawDef.uiState = ref.state;\n                    rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};\n                    function update() {\n                        var def = getDef();\n                        if (unlinkInfoFn)\n                            unlinkInfoFn();\n                        if (active)\n                            unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n                        if (def.href != null)\n                            attrs.$set(type.attr, def.href);\n                    }\n                    if (ref.paramExpr) {\n                        scope.$watch(ref.paramExpr, function (val) {\n                            rawDef.uiStateParams = core.extend({}, val);\n                            update();\n                        }, true);\n                        rawDef.uiStateParams = core.extend({}, scope.$eval(ref.paramExpr));\n                    }\n                    update();\n                    scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n                    scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n                    if (!type.clickable)\n                        return;\n                    var hookFn = clickHook(element, $state, $timeout, type, getDef);\n                    bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n                },\n            };\n        },\n    ];\n    /**\n     * `ui-state`: A fully dynamic directive for linking to a state\n     *\n     * A directive which links to a state (and optionally, parameters).\n     * When clicked, this directive activates the linked state with the supplied parameter values.\n     *\n     * **This directive is very similar to [[uiSref]], but it `$observe`s and `$watch`es/evaluates all its inputs.**\n     *\n     * A directive which links to a state (and optionally, parameters).\n     * When clicked, this directive activates the linked state with the supplied parameter values.\n     *\n     * ### Linked State\n     * The attribute value of `ui-state` is an expression which is `$watch`ed and evaluated as the state to link to.\n     * **This is in contrast with `ui-sref`, which takes a state name as a string literal.**\n     *\n     * #### Example:\n     * Create a list of links.\n     * ```html\n     * <li ng-repeat=\"link in navlinks\">\n     *   <a ui-state=\"link.state\">{{ link.displayName }}</a>\n     * </li>\n     * ```\n     *\n     * ### Relative Links\n     * If the expression evaluates to a relative path, it is processed like [[uiSref]].\n     * You just need to be aware that the path is relative to the state that *created* the link.\n     * This allows a state to create relative `ui-state` which always targets the same destination.\n     *\n     * ### hrefs\n     * If the linked state has a URL, the directive will automatically generate and\n     * update the `href` attribute (using the [[StateService.href]]  method).\n     *\n     * ### Parameter Values\n     * In addition to the state name expression, a `ui-state` can include parameter values which are applied when activating the state.\n     * Param values should be provided using the `ui-state-params` attribute.\n     * The `ui-state-params` attribute value is `$watch`ed and evaluated as an expression.\n     *\n     * #### Example:\n     * This example renders a list of links with param values.\n     * The state's `userId` parameter value comes from each user's `user.id` property.\n     * ```html\n     * <li ng-repeat=\"link in navlinks\">\n     *   <a ui-state=\"link.state\" ui-state-params=\"link.params\">{{ link.displayName }}</a>\n     * </li>\n     * ```\n     *\n     * ### Transition Options\n     * You can specify [[TransitionOptions]] to pass to [[StateService.go]] by using the `ui-state-opts` attribute.\n     * Options are restricted to `location`, `inherit`, and `reload`.\n     * The value of the `ui-state-opts` is `$watch`ed and evaluated as an expression.\n     *\n     * #### Example:\n     * ```html\n     * <a ui-state=\"returnto.state\" ui-state-opts=\"{ reload: true }\">Home</a>\n     * ```\n     *\n     * ### Other DOM Events\n     *\n     * You can also customize which DOM events to respond to (instead of `click`) by\n     * providing an `events` array in the `ui-state-opts` attribute.\n     *\n     * #### Example:\n     * ```html\n     * <input type=\"text\" ui-state=\"contacts\" ui-state-opts=\"{ events: ['change', 'blur'] }\">\n     * ```\n     *\n     * ### Highlighting the active link\n     * This directive can be used in conjunction with [[uiSrefActive]] to highlight the active link.\n     *\n     * ### Notes\n     *\n     * - You can use `ui-params` to change **only the parameter values** by omitting the state name and supplying only `ui-state-params`.\n     *   However, it might be simpler to use [[uiSref]] parameter-only links.\n     *\n     * #### Example:\n     * Sets the `lang` parameter to `en` and remains on the same state.\n     *\n     * ```html\n     * <a ui-state=\"\" ui-state-params=\"{ lang: 'en' }\">English</a>\n     * ```\n     *\n     * - A middle-click, right-click, or ctrl-click is handled (natively) by the browser to open the href in a new window, for example.\n     * ```\n     */\n    var uiStateDirective;\n    uiStateDirective = [\n        '$uiRouter',\n        '$timeout',\n        function $StateRefDynamicDirective($uiRouter, $timeout) {\n            var $state = $uiRouter.stateService;\n            return {\n                restrict: 'A',\n                require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n                link: function (scope, element, attrs, uiSrefActive) {\n                    var type = getTypeInfo(element);\n                    var active = uiSrefActive[1] || uiSrefActive[0];\n                    var unlinkInfoFn = null;\n                    var hookFn;\n                    var rawDef = {};\n                    var getDef = function () { return processedDef($state, element, rawDef); };\n                    var inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];\n                    var watchDeregFns = inputAttrs.reduce(function (acc, attr) { return ((acc[attr] = core.noop), acc); }, {});\n                    function update() {\n                        var def = getDef();\n                        if (unlinkInfoFn)\n                            unlinkInfoFn();\n                        if (active)\n                            unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);\n                        if (def.href != null)\n                            attrs.$set(type.attr, def.href);\n                    }\n                    inputAttrs.forEach(function (field) {\n                        rawDef[field] = attrs[field] ? scope.$eval(attrs[field]) : null;\n                        attrs.$observe(field, function (expr) {\n                            watchDeregFns[field]();\n                            watchDeregFns[field] = scope.$watch(expr, function (newval) {\n                                rawDef[field] = newval;\n                                update();\n                            }, true);\n                        });\n                    });\n                    update();\n                    scope.$on('$destroy', $uiRouter.stateRegistry.onStatesChanged(update));\n                    scope.$on('$destroy', $uiRouter.transitionService.onSuccess({}, update));\n                    if (!type.clickable)\n                        return;\n                    hookFn = clickHook(element, $state, $timeout, type, getDef);\n                    bindEvents(element, scope, hookFn, rawDef.uiStateOpts);\n                },\n            };\n        },\n    ];\n    /**\n     * `ui-sref-active` and `ui-sref-active-eq`: A directive that adds a CSS class when a `ui-sref` is active\n     *\n     * A directive working alongside [[uiSref]] and [[uiState]] to add classes to an element when the\n     * related directive's state is active (and remove them when it is inactive).\n     *\n     * The primary use-case is to highlight the active link in navigation menus,\n     * distinguishing it from the inactive menu items.\n     *\n     * ### Linking to a `ui-sref` or `ui-state`\n     * `ui-sref-active` can live on the same element as `ui-sref`/`ui-state`, or it can be on a parent element.\n     * If a `ui-sref-active` is a parent to more than one `ui-sref`/`ui-state`, it will apply the CSS class when **any of the links are active**.\n     *\n     * ### Matching\n     *\n     * The `ui-sref-active` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state **or any child state is active**.\n     * This is a \"fuzzy match\" which uses [[StateService.includes]].\n     *\n     * The `ui-sref-active-eq` directive applies the CSS class when the `ui-sref`/`ui-state`'s target state is directly active (not when child states are active).\n     * This is an \"exact match\" which uses [[StateService.is]].\n     *\n     * ### Parameter values\n     * If the `ui-sref`/`ui-state` includes parameter values, the current parameter values must match the link's values for the link to be highlighted.\n     * This allows a list of links to the same state with different parameters to be rendered, and the correct one highlighted.\n     *\n     * #### Example:\n     * ```html\n     * <li ng-repeat=\"user in users\" ui-sref-active=\"active\">\n     *   <a ui-sref=\"user.details({ userId: user.id })\">{{ user.lastName }}</a>\n     * </li>\n     * ```\n     *\n     * ### Examples\n     *\n     * Given the following template:\n     * #### Example:\n     * ```html\n     * <ul>\n     *   <li ui-sref-active=\"active\" class=\"item\">\n     *     <a href ui-sref=\"app.user({user: 'bilbobaggins'})\">@bilbobaggins</a>\n     *   </li>\n     * </ul>\n     * ```\n     *\n     * When the app state is `app.user` (or any child state),\n     * and contains the state parameter \"user\" with value \"bilbobaggins\",\n     * the resulting HTML will appear as (note the 'active' class):\n     *\n     * ```html\n     * <ul>\n     *   <li ui-sref-active=\"active\" class=\"item active\">\n     *     <a ui-sref=\"app.user({user: 'bilbobaggins'})\" href=\"/users/bilbobaggins\">@bilbobaggins</a>\n     *   </li>\n     * </ul>\n     * ```\n     *\n     * ### Glob mode\n     *\n     * It is possible to pass `ui-sref-active` an expression that evaluates to an object.\n     * The objects keys represent active class names and values represent the respective state names/globs.\n     * `ui-sref-active` will match if the current active state **includes** any of\n     * the specified state names/globs, even the abstract ones.\n     *\n     * #### Example:\n     * Given the following template, with \"admin\" being an abstract state:\n     * ```html\n     * <div ui-sref-active=\"{'active': 'admin.**'}\">\n     *   <a ui-sref-active=\"active\" ui-sref=\"admin.roles\">Roles</a>\n     * </div>\n     * ```\n     *\n     * Arrays are also supported as values in the `ngClass`-like interface.\n     * This allows multiple states to add `active` class.\n     *\n     * #### Example:\n     * Given the following template, with \"admin.roles\" being the current state, the class will be added too:\n     * ```html\n     * <div ui-sref-active=\"{'active': ['owner.**', 'admin.**']}\">\n     *   <a ui-sref-active=\"active\" ui-sref=\"admin.roles\">Roles</a>\n     * </div>\n     * ```\n     *\n     * When the current state is \"admin.roles\" the \"active\" class will be applied to both the `<div>` and `<a>` elements.\n     * It is important to note that the state names/globs passed to `ui-sref-active` override any state provided by a linked `ui-sref`.\n     *\n     * ### Notes:\n     *\n     * - The class name is interpolated **once** during the directives link time (any further changes to the\n     * interpolated value are ignored).\n     *\n     * - Multiple classes may be specified in a space-separated format: `ui-sref-active='class1 class2 class3'`\n     */\n    var uiSrefActiveDirective;\n    uiSrefActiveDirective = [\n        '$state',\n        '$stateParams',\n        '$interpolate',\n        '$uiRouter',\n        function $StateRefActiveDirective($state, $stateParams, $interpolate, $uiRouter) {\n            return {\n                restrict: 'A',\n                controller: [\n                    '$scope',\n                    '$element',\n                    '$attrs',\n                    function ($scope, $element, $attrs) {\n                        var states = [];\n                        var activeEqClass;\n                        var uiSrefActive;\n                        // There probably isn't much point in $observing this\n                        // uiSrefActive and uiSrefActiveEq share the same directive object with some\n                        // slight difference in logic routing\n                        activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n                        try {\n                            uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n                        }\n                        catch (e) {\n                            // Do nothing. uiSrefActive is not a valid expression.\n                            // Fall back to using $interpolate below\n                        }\n                        uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n                        setStatesFromDefinitionObject(uiSrefActive);\n                        // Allow uiSref to communicate with uiSrefActive[Equals]\n                        this.$$addStateInfo = function (newState, newParams) {\n                            // we already got an explicit state provided by ui-sref-active, so we\n                            // shadow the one that comes from ui-sref\n                            if (core.isObject(uiSrefActive) && states.length > 0) {\n                                return;\n                            }\n                            var deregister = addState(newState, newParams, uiSrefActive);\n                            update();\n                            return deregister;\n                        };\n                        function updateAfterTransition(trans) {\n                            trans.promise.then(update, core.noop);\n                        }\n                        $scope.$on('$destroy', setupEventListeners());\n                        if ($uiRouter.globals.transition) {\n                            updateAfterTransition($uiRouter.globals.transition);\n                        }\n                        function setupEventListeners() {\n                            var deregisterStatesChangedListener = $uiRouter.stateRegistry.onStatesChanged(handleStatesChanged);\n                            var deregisterOnStartListener = $uiRouter.transitionService.onStart({}, updateAfterTransition);\n                            var deregisterStateChangeSuccessListener = $scope.$on('$stateChangeSuccess', update);\n                            return function cleanUp() {\n                                deregisterStatesChangedListener();\n                                deregisterOnStartListener();\n                                deregisterStateChangeSuccessListener();\n                            };\n                        }\n                        function handleStatesChanged() {\n                            setStatesFromDefinitionObject(uiSrefActive);\n                        }\n                        function setStatesFromDefinitionObject(statesDefinition) {\n                            if (core.isObject(statesDefinition)) {\n                                states = [];\n                                core.forEach(statesDefinition, function (stateOrName, activeClass) {\n                                    // Helper function to abstract adding state.\n                                    var addStateForClass = function (stateOrName, activeClass) {\n                                        var ref = parseStateRef(stateOrName);\n                                        addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n                                    };\n                                    if (core.isString(stateOrName)) {\n                                        // If state is string, just add it.\n                                        addStateForClass(stateOrName, activeClass);\n                                    }\n                                    else if (core.isArray(stateOrName)) {\n                                        // If state is an array, iterate over it and add each array item individually.\n                                        core.forEach(stateOrName, function (stateOrName) {\n                                            addStateForClass(stateOrName, activeClass);\n                                        });\n                                    }\n                                });\n                            }\n                        }\n                        function addState(stateName, stateParams, activeClass) {\n                            var state = $state.get(stateName, stateContext($element));\n                            var stateInfo = {\n                                state: state || { name: stateName },\n                                params: stateParams,\n                                activeClass: activeClass,\n                            };\n                            states.push(stateInfo);\n                            return function removeState() {\n                                core.removeFrom(states)(stateInfo);\n                            };\n                        }\n                        // Update route state\n                        function update() {\n                            var splitClasses = function (str) { return str.split(/\\s/).filter(core.identity); };\n                            var getClasses = function (stateList) {\n                                return stateList\n                                    .map(function (x) { return x.activeClass; })\n                                    .map(splitClasses)\n                                    .reduce(core.unnestR, []);\n                            };\n                            var allClasses = getClasses(states).concat(splitClasses(activeEqClass)).reduce(core.uniqR, []);\n                            var fuzzyClasses = getClasses(states.filter(function (x) { return $state.includes(x.state.name, x.params); }));\n                            var exactlyMatchesAny = !!states.filter(function (x) { return $state.is(x.state.name, x.params); }).length;\n                            var exactClasses = exactlyMatchesAny ? splitClasses(activeEqClass) : [];\n                            var addClasses = fuzzyClasses.concat(exactClasses).reduce(core.uniqR, []);\n                            var removeClasses = allClasses.filter(function (cls) { return !core.inArray(addClasses, cls); });\n                            $scope.$evalAsync(function () {\n                                addClasses.forEach(function (className) { return $element.addClass(className); });\n                                removeClasses.forEach(function (className) { return $element.removeClass(className); });\n                            });\n                        }\n                        update();\n                    },\n                ],\n            };\n        },\n    ];\n    ng\n        .module('ui.router.state')\n        .directive('uiSref', uiSrefDirective)\n        .directive('uiSrefActive', uiSrefActiveDirective)\n        .directive('uiSrefActiveEq', uiSrefActiveDirective)\n        .directive('uiState', uiStateDirective);\n\n    /** @publicapi @module ng1 */ /** */\n    /**\n     * `isState` Filter: truthy if the current state is the parameter\n     *\n     * Translates to [[StateService.is]] `$state.is(\"stateName\")`.\n     *\n     * #### Example:\n     * ```html\n     * <div ng-if=\"'stateName' | isState\">show if state is 'stateName'</div>\n     * ```\n     */\n    $IsStateFilter.$inject = ['$state'];\n    function $IsStateFilter($state) {\n        var isFilter = function (state, params, options) {\n            return $state.is(state, params, options);\n        };\n        isFilter.$stateful = true;\n        return isFilter;\n    }\n    /**\n     * `includedByState` Filter: truthy if the current state includes the parameter\n     *\n     * Translates to [[StateService.includes]]` $state.is(\"fullOrPartialStateName\")`.\n     *\n     * #### Example:\n     * ```html\n     * <div ng-if=\"'fullOrPartialStateName' | includedByState\">show if state includes 'fullOrPartialStateName'</div>\n     * ```\n     */\n    $IncludedByStateFilter.$inject = ['$state'];\n    function $IncludedByStateFilter($state) {\n        var includesFilter = function (state, params, options) {\n            return $state.includes(state, params, options);\n        };\n        includesFilter.$stateful = true;\n        return includesFilter;\n    }\n    ng.module('ui.router.state').filter('isState', $IsStateFilter).filter('includedByState', $IncludedByStateFilter);\n\n    /** @publicapi @module directives */ /** */\n    /**\n     * `ui-view`: A viewport directive which is filled in by a view from the active state.\n     *\n     * ### Attributes\n     *\n     * - `name`: (Optional) A view name.\n     *   The name should be unique amongst the other views in the same state.\n     *   You can have views of the same name that live in different states.\n     *   The ui-view can be targeted in a View using the name ([[Ng1StateDeclaration.views]]).\n     *\n     * - `autoscroll`: an expression. When it evaluates to true, the `ui-view` will be scrolled into view when it is activated.\n     *   Uses [[$uiViewScroll]] to do the scrolling.\n     *\n     * - `onload`: Expression to evaluate whenever the view updates.\n     *\n     * #### Example:\n     * A view can be unnamed or named.\n     * ```html\n     * <!-- Unnamed -->\n     * <div ui-view></div>\n     *\n     * <!-- Named -->\n     * <div ui-view=\"viewName\"></div>\n     *\n     * <!-- Named (different style) -->\n     * <ui-view name=\"viewName\"></ui-view>\n     * ```\n     *\n     * You can only have one unnamed view within any template (or root html). If you are only using a\n     * single view and it is unnamed then you can populate it like so:\n     *\n     * ```html\n     * <div ui-view></div>\n     * $stateProvider.state(\"home\", {\n     *   template: \"<h1>HELLO!</h1>\"\n     * })\n     * ```\n     *\n     * The above is a convenient shortcut equivalent to specifying your view explicitly with the\n     * [[Ng1StateDeclaration.views]] config property, by name, in this case an empty name:\n     *\n     * ```js\n     * $stateProvider.state(\"home\", {\n     *   views: {\n     *     \"\": {\n     *       template: \"<h1>HELLO!</h1>\"\n     *     }\n     *   }\n     * })\n     * ```\n     *\n     * But typically you'll only use the views property if you name your view or have more than one view\n     * in the same template. There's not really a compelling reason to name a view if its the only one,\n     * but you could if you wanted, like so:\n     *\n     * ```html\n     * <div ui-view=\"main\"></div>\n     * ```\n     *\n     * ```js\n     * $stateProvider.state(\"home\", {\n     *   views: {\n     *     \"main\": {\n     *       template: \"<h1>HELLO!</h1>\"\n     *     }\n     *   }\n     * })\n     * ```\n     *\n     * Really though, you'll use views to set up multiple views:\n     *\n     * ```html\n     * <div ui-view></div>\n     * <div ui-view=\"chart\"></div>\n     * <div ui-view=\"data\"></div>\n     * ```\n     *\n     * ```js\n     * $stateProvider.state(\"home\", {\n     *   views: {\n     *     \"\": {\n     *       template: \"<h1>HELLO!</h1>\"\n     *     },\n     *     \"chart\": {\n     *       template: \"<chart_thing/>\"\n     *     },\n     *     \"data\": {\n     *       template: \"<data_thing/>\"\n     *     }\n     *   }\n     * })\n     * ```\n     *\n     * #### Examples for `autoscroll`:\n     * ```html\n     * <!-- If autoscroll present with no expression,\n     *      then scroll ui-view into view -->\n     * <ui-view autoscroll/>\n     *\n     * <!-- If autoscroll present with valid expression,\n     *      then scroll ui-view into view if expression evaluates to true -->\n     * <ui-view autoscroll='true'/>\n     * <ui-view autoscroll='false'/>\n     * <ui-view autoscroll='scopeVariable'/>\n     * ```\n     *\n     * Resolve data:\n     *\n     * The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this\n     * can be customized using [[Ng1ViewDeclaration.resolveAs]]).  This can be then accessed from the template.\n     *\n     * Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the\n     * controller is instantiated.  The `$onInit()` hook can be used to perform initialization code which\n     * depends on `$resolve` data.\n     *\n     * #### Example:\n     * ```js\n     * $stateProvider.state('home', {\n     *   template: '<my-component user=\"$resolve.user\"></my-component>',\n     *   resolve: {\n     *     user: function(UserService) { return UserService.fetchUser(); }\n     *   }\n     * });\n     * ```\n     */\n    var uiView;\n    // eslint-disable-next-line prefer-const\n    uiView = [\n        '$view',\n        '$animate',\n        '$uiViewScroll',\n        '$interpolate',\n        '$q',\n        function $ViewDirective($view, $animate, $uiViewScroll, $interpolate, $q) {\n            function getRenderer() {\n                return {\n                    enter: function (element, target, cb) {\n                        if (ng.version.minor > 2) {\n                            $animate.enter(element, null, target).then(cb);\n                        }\n                        else {\n                            $animate.enter(element, null, target, cb);\n                        }\n                    },\n                    leave: function (element, cb) {\n                        if (ng.version.minor > 2) {\n                            $animate.leave(element).then(cb);\n                        }\n                        else {\n                            $animate.leave(element, cb);\n                        }\n                    },\n                };\n            }\n            function configsEqual(config1, config2) {\n                return config1 === config2;\n            }\n            var rootData = {\n                $cfg: { viewDecl: { $context: $view._pluginapi._rootViewContext() } },\n                $uiView: {},\n            };\n            var directive = {\n                count: 0,\n                restrict: 'ECA',\n                terminal: true,\n                priority: 400,\n                transclude: 'element',\n                compile: function (tElement, tAttrs, $transclude) {\n                    return function (scope, $element, attrs) {\n                        var onloadExp = attrs['onload'] || '', autoScrollExp = attrs['autoscroll'], renderer = getRenderer(), inherited = $element.inheritedData('$uiView') || rootData, name = $interpolate(attrs['uiView'] || attrs['name'] || '')(scope) || '$default';\n                        var previousEl, currentEl, currentScope, viewConfig;\n                        var activeUIView = {\n                            $type: 'ng1',\n                            id: directive.count++,\n                            name: name,\n                            fqn: inherited.$uiView.fqn ? inherited.$uiView.fqn + '.' + name : name,\n                            config: null,\n                            configUpdated: configUpdatedCallback,\n                            get creationContext() {\n                                // The context in which this ui-view \"tag\" was created\n                                var fromParentTagConfig = core.parse('$cfg.viewDecl.$context')(inherited);\n                                // Allow <ui-view name=\"foo\"><ui-view name=\"bar\"></ui-view></ui-view>\n                                // See https://github.com/angular-ui/ui-router/issues/3355\n                                var fromParentTag = core.parse('$uiView.creationContext')(inherited);\n                                return fromParentTagConfig || fromParentTag;\n                            },\n                        };\n                        core.trace.traceUIViewEvent('Linking', activeUIView);\n                        function configUpdatedCallback(config) {\n                            if (config && !(config instanceof Ng1ViewConfig))\n                                return;\n                            if (configsEqual(viewConfig, config))\n                                return;\n                            core.trace.traceUIViewConfigUpdated(activeUIView, config && config.viewDecl && config.viewDecl.$context);\n                            viewConfig = config;\n                            updateView(config);\n                        }\n                        $element.data('$uiView', { $uiView: activeUIView });\n                        updateView();\n                        var unregister = $view.registerUIView(activeUIView);\n                        scope.$on('$destroy', function () {\n                            core.trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);\n                            unregister();\n                        });\n                        function cleanupLastView() {\n                            if (previousEl) {\n                                core.trace.traceUIViewEvent('Removing (previous) el', previousEl.data('$uiView'));\n                                previousEl.remove();\n                                previousEl = null;\n                            }\n                            if (currentScope) {\n                                core.trace.traceUIViewEvent('Destroying scope', activeUIView);\n                                currentScope.$destroy();\n                                currentScope = null;\n                            }\n                            if (currentEl) {\n                                var _viewData_1 = currentEl.data('$uiViewAnim');\n                                core.trace.traceUIViewEvent('Animate out', _viewData_1);\n                                renderer.leave(currentEl, function () {\n                                    _viewData_1.$$animLeave.resolve();\n                                    previousEl = null;\n                                });\n                                previousEl = currentEl;\n                                currentEl = null;\n                            }\n                        }\n                        function updateView(config) {\n                            var newScope = scope.$new();\n                            var animEnter = $q.defer(), animLeave = $q.defer();\n                            var $uiViewData = {\n                                $cfg: config,\n                                $uiView: activeUIView,\n                            };\n                            var $uiViewAnim = {\n                                $animEnter: animEnter.promise,\n                                $animLeave: animLeave.promise,\n                                $$animLeave: animLeave,\n                            };\n                            /**\n                             * @ngdoc event\n                             * @name ui.router.state.directive:ui-view#$viewContentLoading\n                             * @eventOf ui.router.state.directive:ui-view\n                             * @eventType emits on ui-view directive scope\n                             * @description\n                             *\n                             * Fired once the view **begins loading**, *before* the DOM is rendered.\n                             *\n                             * @param {Object} event Event object.\n                             * @param {string} viewName Name of the view.\n                             */\n                            newScope.$emit('$viewContentLoading', name);\n                            var cloned = $transclude(newScope, function (clone) {\n                                clone.data('$uiViewAnim', $uiViewAnim);\n                                clone.data('$uiView', $uiViewData);\n                                renderer.enter(clone, $element, function onUIViewEnter() {\n                                    animEnter.resolve();\n                                    if (currentScope)\n                                        currentScope.$emit('$viewContentAnimationEnded');\n                                    if ((core.isDefined(autoScrollExp) && !autoScrollExp) || scope.$eval(autoScrollExp)) {\n                                        $uiViewScroll(clone);\n                                    }\n                                });\n                                cleanupLastView();\n                            });\n                            currentEl = cloned;\n                            currentScope = newScope;\n                            /**\n                             * @ngdoc event\n                             * @name ui.router.state.directive:ui-view#$viewContentLoaded\n                             * @eventOf ui.router.state.directive:ui-view\n                             * @eventType emits on ui-view directive scope\n                             * @description           *\n                             * Fired once the view is **loaded**, *after* the DOM is rendered.\n                             *\n                             * @param {Object} event Event object.\n                             */\n                            currentScope.$emit('$viewContentLoaded', config || viewConfig);\n                            currentScope.$eval(onloadExp);\n                        }\n                    };\n                },\n            };\n            return directive;\n        },\n    ];\n    $ViewDirectiveFill.$inject = ['$compile', '$controller', '$transitions', '$view', '$q'];\n    /** @hidden */\n    function $ViewDirectiveFill($compile, $controller, $transitions, $view, $q) {\n        var getControllerAs = core.parse('viewDecl.controllerAs');\n        var getResolveAs = core.parse('viewDecl.resolveAs');\n        return {\n            restrict: 'ECA',\n            priority: -400,\n            compile: function (tElement) {\n                var initial = tElement.html();\n                tElement.empty();\n                return function (scope, $element) {\n                    var data = $element.data('$uiView');\n                    if (!data) {\n                        $element.html(initial);\n                        $compile($element.contents())(scope);\n                        return;\n                    }\n                    var cfg = data.$cfg || { viewDecl: {}, getTemplate: core.noop };\n                    var resolveCtx = cfg.path && new core.ResolveContext(cfg.path);\n                    $element.html(cfg.getTemplate($element, resolveCtx) || initial);\n                    core.trace.traceUIViewFill(data.$uiView, $element.html());\n                    var link = $compile($element.contents());\n                    var controller = cfg.controller;\n                    var controllerAs = getControllerAs(cfg);\n                    var resolveAs = getResolveAs(cfg);\n                    var locals = resolveCtx && getLocals(resolveCtx);\n                    scope[resolveAs] = locals;\n                    if (controller) {\n                        var controllerInstance = ($controller(controller, core.extend({}, locals, { $scope: scope, $element: $element })));\n                        if (controllerAs) {\n                            scope[controllerAs] = controllerInstance;\n                            scope[controllerAs][resolveAs] = locals;\n                        }\n                        // TODO: Use $view service as a central point for registering component-level hooks\n                        // Then, when a component is created, tell the $view service, so it can invoke hooks\n                        // $view.componentLoaded(controllerInstance, { $scope: scope, $element: $element });\n                        // scope.$on('$destroy', () => $view.componentUnloaded(controllerInstance, { $scope: scope, $element: $element }));\n                        $element.data('$ngControllerController', controllerInstance);\n                        $element.children().data('$ngControllerController', controllerInstance);\n                        registerControllerCallbacks($q, $transitions, controllerInstance, scope, cfg);\n                    }\n                    // Wait for the component to appear in the DOM\n                    if (core.isString(cfg.component)) {\n                        var kebobName = core.kebobString(cfg.component);\n                        var tagRegexp_1 = new RegExp(\"^(x-|data-)?\" + kebobName + \"$\", 'i');\n                        var getComponentController = function () {\n                            var directiveEl = [].slice\n                                .call($element[0].children)\n                                .filter(function (el) { return el && el.tagName && tagRegexp_1.exec(el.tagName); });\n                            return directiveEl && ng.element(directiveEl).data(\"$\" + cfg.component + \"Controller\");\n                        };\n                        var deregisterWatch_1 = scope.$watch(getComponentController, function (ctrlInstance) {\n                            if (!ctrlInstance)\n                                return;\n                            registerControllerCallbacks($q, $transitions, ctrlInstance, scope, cfg);\n                            deregisterWatch_1();\n                        });\n                    }\n                    link(scope);\n                };\n            },\n        };\n    }\n    /** @hidden */\n    var hasComponentImpl = typeof ng.module('ui.router')['component'] === 'function';\n    /** @hidden incrementing id */\n    var _uiCanExitId = 0;\n    /** @hidden TODO: move these callbacks to $view and/or `/hooks/components.ts` or something */\n    function registerControllerCallbacks($q, $transitions, controllerInstance, $scope, cfg) {\n        // Call $onInit() ASAP\n        if (core.isFunction(controllerInstance.$onInit) &&\n            !((cfg.viewDecl.component || cfg.viewDecl.componentProvider) && hasComponentImpl)) {\n            controllerInstance.$onInit();\n        }\n        var viewState = core.tail(cfg.path).state.self;\n        var hookOptions = { bind: controllerInstance };\n        // Add component-level hook for onUiParamsChanged\n        if (core.isFunction(controllerInstance.uiOnParamsChanged)) {\n            var resolveContext = new core.ResolveContext(cfg.path);\n            var viewCreationTrans_1 = resolveContext.getResolvable('$transition$').data;\n            // Fire callback on any successful transition\n            var paramsUpdated = function ($transition$) {\n                // Exit early if the $transition$ is the same as the view was created within.\n                // Exit early if the $transition$ will exit the state the view is for.\n                if ($transition$ === viewCreationTrans_1 || $transition$.exiting().indexOf(viewState) !== -1)\n                    return;\n                var toParams = $transition$.params('to');\n                var fromParams = $transition$.params('from');\n                var getNodeSchema = function (node) { return node.paramSchema; };\n                var toSchema = $transition$.treeChanges('to').map(getNodeSchema).reduce(core.unnestR, []);\n                var fromSchema = $transition$.treeChanges('from').map(getNodeSchema).reduce(core.unnestR, []);\n                // Find the to params that have different values than the from params\n                var changedToParams = toSchema.filter(function (param) {\n                    var idx = fromSchema.indexOf(param);\n                    return idx === -1 || !fromSchema[idx].type.equals(toParams[param.id], fromParams[param.id]);\n                });\n                // Only trigger callback if a to param has changed or is new\n                if (changedToParams.length) {\n                    var changedKeys_1 = changedToParams.map(function (x) { return x.id; });\n                    // Filter the params to only changed/new to params.  `$transition$.params()` may be used to get all params.\n                    var newValues = core.filter(toParams, function (val, key) { return changedKeys_1.indexOf(key) !== -1; });\n                    controllerInstance.uiOnParamsChanged(newValues, $transition$);\n                }\n            };\n            $scope.$on('$destroy', $transitions.onSuccess({}, paramsUpdated, hookOptions));\n        }\n        // Add component-level hook for uiCanExit\n        if (core.isFunction(controllerInstance.uiCanExit)) {\n            var id_1 = _uiCanExitId++;\n            var cacheProp_1 = '_uiCanExitIds';\n            // Returns true if a redirect transition already answered truthy\n            var prevTruthyAnswer_1 = function (trans) {\n                return !!trans && ((trans[cacheProp_1] && trans[cacheProp_1][id_1] === true) || prevTruthyAnswer_1(trans.redirectedFrom()));\n            };\n            // If a user answered yes, but the transition was later redirected, don't also ask for the new redirect transition\n            var wrappedHook = function (trans) {\n                var promise;\n                var ids = (trans[cacheProp_1] = trans[cacheProp_1] || {});\n                if (!prevTruthyAnswer_1(trans)) {\n                    promise = $q.when(controllerInstance.uiCanExit(trans));\n                    promise.then(function (val) { return (ids[id_1] = val !== false); });\n                }\n                return promise;\n            };\n            var criteria = { exiting: viewState.name };\n            $scope.$on('$destroy', $transitions.onBefore(criteria, wrappedHook, hookOptions));\n        }\n    }\n    ng.module('ui.router.state').directive('uiView', uiView);\n    ng.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n\n    /** @publicapi @module ng1 */ /** */\n    /** @hidden */\n    function $ViewScrollProvider() {\n        var useAnchorScroll = false;\n        this.useAnchorScroll = function () {\n            useAnchorScroll = true;\n        };\n        this.$get = [\n            '$anchorScroll',\n            '$timeout',\n            function ($anchorScroll, $timeout) {\n                if (useAnchorScroll) {\n                    return $anchorScroll;\n                }\n                return function ($element) {\n                    return $timeout(function () {\n                        $element[0].scrollIntoView();\n                    }, 0, false);\n                };\n            },\n        ];\n    }\n    ng.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);\n\n    /**\n     * Main entry point for angular 1.x build\n     * @publicapi @module ng1\n     */ /** */\n    var index = 'ui.router';\n\n    Object.keys(core).forEach(function (k) {\n        if (k !== 'default') Object.defineProperty(exports, k, {\n            enumerable: true,\n            get: function () {\n                return core[k];\n            }\n        });\n    });\n    exports.core = core;\n    exports.Ng1ViewConfig = Ng1ViewConfig;\n    exports.StateProvider = StateProvider;\n    exports.UrlRouterProvider = UrlRouterProvider;\n    exports.default = index;\n    exports.getLocals = getLocals;\n    exports.getNg1ViewConfigFactory = getNg1ViewConfigFactory;\n    exports.ng1ViewsBuilder = ng1ViewsBuilder;\n    exports.watchDigests = watchDigests;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n/*! @twilio/voice-sdk.js 2.15.0\n\nThe following license applies to all parts of this software except as\ndocumented below.\n\n    Copyright (C) 2015-2024 Twilio, inc.\n \n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n \n        http://www.apache.org/licenses/LICENSE-2.0\n \n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\nThis software includes rtcpeerconnection-shim under the following (BSD 3-Clause) license.\n\n    Copyright (c) 2017 Philipp Hancke. All rights reserved.\n\n    Copyright (c) 2014, The WebRTC project authors. All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are\n    met:\n\n      * Redistributions of source code must retain the above copyright\n        notice, this list of conditions and the following disclaimer.\n\n      * Redistributions in binary form must reproduce the above copyright\n        notice, this list of conditions and the following disclaimer in\n        the documentation and/or other materials provided with the\n        distribution.\n\n      * Neither the name of Philipp Hancke nor the names of its contributors may\n        be used to endorse or promote products derived from this software\n        without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n    HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nThis software includes backoff under the following (MIT) license.\n\n    Copyright (C) 2012 Mathieu Turcotte\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy of\n    this software and associated documentation files (the \"Software\"), to deal in\n    the Software without restriction, including without limitation the rights to\n    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n    of the Software, and to permit persons to whom the Software is furnished to do\n    so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n\nThis software includes loglevel under the following (MIT) license.\n\n    Copyright (c) 2013 Tim Perry\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy of\n    this software and associated documentation files (the \"Software\"), to deal in\n    the Software without restriction, including without limitation the rights to\n    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n    of the Software, and to permit persons to whom the Software is furnished to do\n    so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n\n */\n(function(root) {\n  var bundle = (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TwilioError = exports.Logger = exports.PreflightTest = exports.Device = exports.Call = void 0;\nvar call_1 = require(\"./twilio/call\");\nexports.Call = call_1.default;\nvar device_1 = require(\"./twilio/device\");\nexports.Device = device_1.default;\nvar log_1 = require(\"./twilio/log\");\nObject.defineProperty(exports, \"Logger\", { enumerable: true, get: function () { return log_1.Logger; } });\nvar preflight_1 = require(\"./twilio/preflight/preflight\");\nObject.defineProperty(exports, \"PreflightTest\", { enumerable: true, get: function () { return preflight_1.PreflightTest; } });\n// TODO: Consider refactoring this export (VBLOCKS-4589)\nvar TwilioError = require(\"./twilio/errors\");\nexports.TwilioError = TwilioError;\n\n},{\"./twilio/call\":9,\"./twilio/device\":12,\"./twilio/errors\":15,\"./twilio/log\":18,\"./twilio/preflight/preflight\":20}],2:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncQueue = void 0;\nvar deferred_1 = require(\"./deferred\");\n/**\n * Queue async operations and executes them synchronously.\n */\nvar AsyncQueue = /** @class */ (function () {\n    function AsyncQueue() {\n        /**\n         * The list of async operations in this queue\n         */\n        this._operations = [];\n    }\n    /**\n     * Adds the async operation to the queue\n     * @param callback An async callback that returns a promise\n     * @returns A promise that will get resolved or rejected after executing the callback\n     */\n    AsyncQueue.prototype.enqueue = function (callback) {\n        var hasPending = !!this._operations.length;\n        var deferred = new deferred_1.default();\n        this._operations.push({ deferred: deferred, callback: callback });\n        if (!hasPending) {\n            this._processQueue();\n        }\n        return deferred.promise;\n    };\n    /**\n     * Start processing the queue. This executes the first item and removes it after.\n     * Then do the same for next items until the queue is emptied.\n     */\n    AsyncQueue.prototype._processQueue = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, deferred, callback, result, error, hasResolved, e_1;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!this._operations.length) return [3 /*break*/, 5];\n                        _a = this._operations[0], deferred = _a.deferred, callback = _a.callback;\n                        result = void 0;\n                        error = void 0;\n                        hasResolved = void 0;\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, callback()];\n                    case 2:\n                        result = _b.sent();\n                        hasResolved = true;\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _b.sent();\n                        error = e_1;\n                        return [3 /*break*/, 4];\n                    case 4:\n                        // Remove the item\n                        this._operations.shift();\n                        if (hasResolved) {\n                            deferred.resolve(result);\n                        }\n                        else {\n                            deferred.reject(error);\n                        }\n                        return [3 /*break*/, 0];\n                    case 5: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return AsyncQueue;\n}());\nexports.AsyncQueue = AsyncQueue;\n\n},{\"./deferred\":11}],3:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar device_1 = require(\"./device\");\nvar errors_1 = require(\"./errors\");\nvar log_1 = require(\"./log\");\nvar outputdevicecollection_1 = require(\"./outputdevicecollection\");\nvar mediadeviceinfo_1 = require(\"./shims/mediadeviceinfo\");\nvar util_1 = require(\"./util\");\n/**\n * Aliases for audio kinds, used for labelling.\n */\nvar kindAliases = {\n    audioinput: 'Audio Input',\n    audiooutput: 'Audio Output',\n};\n/**\n * Provides input and output audio-based functionality in one convenient class.\n */\nvar AudioHelper = /** @class */ (function (_super) {\n    __extends(AudioHelper, _super);\n    /**\n     * @internal\n     * @param onActiveOutputsChanged - A callback to be called when the user changes the active output devices.\n     * @param onActiveInputChanged - A callback to be called when the user changes the active input device.\n     * @param [options]\n     */\n    function AudioHelper(onActiveOutputsChanged, onActiveInputChanged, options) {\n        var _a;\n        var _this = _super.call(this) || this;\n        /**\n         * A Map of all audio input devices currently available to the browser by their device ID.\n         */\n        _this.availableInputDevices = new Map();\n        /**\n         * A Map of all audio output devices currently available to the browser by their device ID.\n         */\n        _this.availableOutputDevices = new Map();\n        /**\n         * The currently set audio constraints set by setAudioConstraints().\n         */\n        _this._audioConstraints = null;\n        /**\n         * The audio stream of the default device.\n         * This is populated when _openDefaultDeviceWithConstraints is called,\n         * See _selectedInputDeviceStream for differences.\n         * TODO: Combine these two workflows (3.x?)\n         */\n        _this._defaultInputDeviceStream = null;\n        /**\n         * Whether each sound is enabled.\n         */\n        _this._enabledSounds = (_a = {},\n            _a[device_1.default.SoundName.Disconnect] = true,\n            _a[device_1.default.SoundName.Incoming] = true,\n            _a[device_1.default.SoundName.Outgoing] = true,\n            _a);\n        /**\n         * The current input device.\n         */\n        _this._inputDevice = null;\n        /**\n         * The internal promise created when calling setInputDevice\n         */\n        _this._inputDevicePromise = null;\n        /**\n         * Whether the {@link AudioHelper} is currently polling the input stream's volume.\n         */\n        _this._isPollingInputVolume = false;\n        /**\n         * An instance of Logger to use.\n         */\n        _this._log = new log_1.default('AudioHelper');\n        /**\n         * Internal reference to the processed stream\n         */\n        _this._processedStream = null;\n        /**\n         * The selected input stream coming from the microphone device.\n         * This is populated when the setInputDevice is called, meaning,\n         * the end user manually selected it, which is different than\n         * the defaultInputDeviceStream.\n         * TODO: Combine these two workflows (3.x?)\n         */\n        _this._selectedInputDeviceStream = null;\n        /**\n         * A record of unknown devices (Devices without labels)\n         */\n        _this._unknownDeviceIndexes = {\n            audioinput: {},\n            audiooutput: {},\n        };\n        /**\n         * Update the available input and output devices\n         * @internal\n         */\n        _this._updateAvailableDevices = function () {\n            if (!_this._mediaDevices || !_this._enumerateDevices) {\n                return Promise.reject('Enumeration not supported');\n            }\n            return _this._enumerateDevices().then(function (devices) {\n                _this._updateDevices(devices.filter(function (d) { return d.kind === 'audiooutput'; }), _this.availableOutputDevices, _this._removeLostOutput);\n                _this._updateDevices(devices.filter(function (d) { return d.kind === 'audioinput'; }), _this.availableInputDevices, _this._removeLostInput);\n                var defaultDevice = _this.availableOutputDevices.get('default')\n                    || Array.from(_this.availableOutputDevices.values())[0];\n                [_this.speakerDevices, _this.ringtoneDevices].forEach(function (outputDevices) {\n                    if (!outputDevices.get().size && _this.availableOutputDevices.size && _this.isOutputSelectionSupported) {\n                        outputDevices.set(defaultDevice.deviceId)\n                            .catch(function (reason) {\n                            _this._log.warn(\"Unable to set audio output devices. \".concat(reason));\n                        });\n                    }\n                });\n            });\n        };\n        /**\n         * Remove an input device from inputs\n         * @param lostDevice\n         * @returns Whether the device was active\n         */\n        _this._removeLostInput = function (lostDevice) {\n            if (!_this.inputDevice || _this.inputDevice.deviceId !== lostDevice.deviceId) {\n                return false;\n            }\n            _this._destroyProcessedStream();\n            _this._replaceStream(null);\n            _this._inputDevice = null;\n            _this._maybeStopPollingVolume();\n            var defaultDevice = _this.availableInputDevices.get('default')\n                || Array.from(_this.availableInputDevices.values())[0];\n            if (defaultDevice) {\n                _this.setInputDevice(defaultDevice.deviceId);\n            }\n            return true;\n        };\n        /**\n         * Remove an input device from outputs\n         * @param lostDevice\n         * @returns Whether the device was active\n         */\n        _this._removeLostOutput = function (lostDevice) {\n            var wasSpeakerLost = _this.speakerDevices.delete(lostDevice);\n            var wasRingtoneLost = _this.ringtoneDevices.delete(lostDevice);\n            return wasSpeakerLost || wasRingtoneLost;\n        };\n        options = Object.assign({\n            AudioContext: typeof AudioContext !== 'undefined' && AudioContext,\n            setSinkId: typeof HTMLAudioElement !== 'undefined' && HTMLAudioElement.prototype.setSinkId,\n        }, options);\n        _this._beforeSetInputDevice = options.beforeSetInputDevice || (function () { return Promise.resolve(); });\n        _this._updateUserOptions(options);\n        _this._audioProcessorEventObserver = options.audioProcessorEventObserver;\n        _this._mediaDevices = options.mediaDevices || navigator.mediaDevices;\n        _this._onActiveInputChanged = onActiveInputChanged;\n        _this._enumerateDevices = typeof options.enumerateDevices === 'function'\n            ? options.enumerateDevices\n            : _this._mediaDevices && _this._mediaDevices.enumerateDevices.bind(_this._mediaDevices);\n        var isAudioContextSupported = !!(options.AudioContext || options.audioContext);\n        var isEnumerationSupported = !!_this._enumerateDevices;\n        if (options.enabledSounds) {\n            _this._enabledSounds = options.enabledSounds;\n        }\n        var isSetSinkSupported = typeof options.setSinkId === 'function';\n        _this.isOutputSelectionSupported = isEnumerationSupported && isSetSinkSupported;\n        _this.isVolumeSupported = isAudioContextSupported;\n        if (_this.isVolumeSupported) {\n            _this._audioContext = options.audioContext || options.AudioContext && new options.AudioContext();\n            if (_this._audioContext) {\n                _this._inputVolumeAnalyser = _this._audioContext.createAnalyser();\n                _this._inputVolumeAnalyser.fftSize = 32;\n                _this._inputVolumeAnalyser.smoothingTimeConstant = 0.3;\n            }\n        }\n        _this.ringtoneDevices = new outputdevicecollection_1.default('ringtone', _this.availableOutputDevices, onActiveOutputsChanged, _this.isOutputSelectionSupported);\n        _this.speakerDevices = new outputdevicecollection_1.default('speaker', _this.availableOutputDevices, onActiveOutputsChanged, _this.isOutputSelectionSupported);\n        _this.addListener('newListener', function (eventName) {\n            if (eventName === 'inputVolume') {\n                _this._maybeStartPollingVolume();\n            }\n        });\n        _this.addListener('removeListener', function (eventName) {\n            if (eventName === 'inputVolume') {\n                _this._maybeStopPollingVolume();\n            }\n        });\n        _this.once('newListener', function () {\n            // NOTE (rrowland): Ideally we would only check isEnumerationSupported here, but\n            //   in at least one browser version (Tested in FF48) enumerateDevices actually\n            //   returns bad data for the listed devices. Instead, we check for\n            //   isOutputSelectionSupported to avoid these quirks that may negatively affect customers.\n            if (!_this.isOutputSelectionSupported) {\n                _this._log.warn('Warning: This browser does not support audio output selection.');\n            }\n            if (!_this.isVolumeSupported) {\n                _this._log.warn(\"Warning: This browser does not support Twilio's volume indicator feature.\");\n            }\n        });\n        if (isEnumerationSupported) {\n            _this._initializeEnumeration();\n        }\n        // NOTE (kchoy): Currently microphone permissions are not supported in firefox, and Safari V15 and older.\n        // https://github.com/mozilla/standards-positions/issues/19#issuecomment-370158947\n        // https://caniuse.com/permissions-api\n        if (navigator && navigator.permissions && typeof navigator.permissions.query === 'function') {\n            navigator.permissions.query({ name: 'microphone' }).then(function (microphonePermissionStatus) {\n                if (microphonePermissionStatus.state !== 'granted') {\n                    var handleStateChange = function () {\n                        _this._updateAvailableDevices();\n                        _this._stopMicrophonePermissionListener();\n                    };\n                    microphonePermissionStatus.addEventListener('change', handleStateChange);\n                    _this._microphonePermissionStatus = microphonePermissionStatus;\n                    _this._onMicrophonePermissionStatusChanged = handleStateChange;\n                }\n            }).catch(function (reason) { return _this._log.warn(\"Warning: unable to listen for microphone permission changes. \".concat(reason)); });\n        }\n        else {\n            _this._log.warn('Warning: current browser does not support permissions API.');\n        }\n        return _this;\n    }\n    Object.defineProperty(AudioHelper.prototype, \"audioConstraints\", {\n        /**\n         * The currently set audio constraints set by setAudioConstraints(). Starts as null.\n         */\n        get: function () { return this._audioConstraints; },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioHelper.prototype, \"inputDevice\", {\n        /**\n         * The active input device. Having no inputDevice specified by `setInputDevice()`\n         * will disable input selection related functionality.\n         */\n        get: function () { return this._inputDevice; },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioHelper.prototype, \"inputStream\", {\n        /**\n         * The current input stream coming from the microphone device or\n         * the processed audio stream if there is an {@link AudioProcessor}.\n         */\n        get: function () { return this._processedStream || this._selectedInputDeviceStream; },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioHelper.prototype, \"processedStream\", {\n        /**\n         * The processed stream if an {@link AudioProcessor} was previously added.\n         */\n        get: function () { return this._processedStream; },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Destroy this AudioHelper instance\n     * @internal\n     */\n    AudioHelper.prototype._destroy = function () {\n        this._stopDefaultInputDeviceStream();\n        this._stopSelectedInputDeviceStream();\n        this._destroyProcessedStream();\n        this._maybeStopPollingVolume();\n        this.removeAllListeners();\n        this._stopMicrophonePermissionListener();\n        this._unbind();\n    };\n    /**\n     * Promise to wait for the input device, if setInputDevice is called outside of the SDK\n     * @internal\n     */\n    AudioHelper.prototype._getInputDevicePromise = function () {\n        return this._inputDevicePromise;\n    };\n    /**\n     * Start polling volume if it's supported and there's an input stream to poll.\n     * @internal\n     */\n    AudioHelper.prototype._maybeStartPollingVolume = function () {\n        var _this = this;\n        if (!this.isVolumeSupported || !this.inputStream) {\n            return;\n        }\n        this._updateVolumeSource();\n        if (this._isPollingInputVolume || !this._inputVolumeAnalyser) {\n            return;\n        }\n        var bufferLength = this._inputVolumeAnalyser.frequencyBinCount;\n        var buffer = new Uint8Array(bufferLength);\n        this._isPollingInputVolume = true;\n        var emitVolume = function () {\n            if (!_this._isPollingInputVolume) {\n                return;\n            }\n            if (_this._inputVolumeAnalyser) {\n                _this._inputVolumeAnalyser.getByteFrequencyData(buffer);\n                var inputVolume = (0, util_1.average)(buffer);\n                _this.emit('inputVolume', inputVolume / 255);\n            }\n            requestAnimationFrame(emitVolume);\n        };\n        requestAnimationFrame(emitVolume);\n    };\n    /**\n     * Stop polling volume if it's currently polling and there are no listeners.\n     * @internal\n     */\n    AudioHelper.prototype._maybeStopPollingVolume = function () {\n        if (!this.isVolumeSupported) {\n            return;\n        }\n        if (!this._isPollingInputVolume || (this.inputStream && this.listenerCount('inputVolume'))) {\n            return;\n        }\n        if (this._inputVolumeSource) {\n            this._inputVolumeSource.disconnect();\n            delete this._inputVolumeSource;\n        }\n        this._isPollingInputVolume = false;\n    };\n    /**\n     * Call getUserMedia with specified constraints\n     * @internal\n     */\n    AudioHelper.prototype._openDefaultDeviceWithConstraints = function (constraints) {\n        var _this = this;\n        this._log.info('Opening default device with constraints', constraints);\n        return this._getUserMedia(constraints).then(function (stream) {\n            _this._log.info('Opened default device. Updating available devices.');\n            // Ensures deviceId's and labels are populated after the gUM call\n            // by calling enumerateDevices\n            _this._updateAvailableDevices().catch(function (error) {\n                // Ignore error, we don't want to break the call flow\n                _this._log.warn('Unable to updateAvailableDevices after gUM call', error);\n            });\n            _this._defaultInputDeviceStream = stream;\n            return _this._maybeCreateProcessedStream(stream);\n        });\n    };\n    /**\n     * Stop the default audio stream\n     * @internal\n     */\n    AudioHelper.prototype._stopDefaultInputDeviceStream = function () {\n        if (this._defaultInputDeviceStream) {\n            this._log.info('stopping default device stream');\n            this._defaultInputDeviceStream.getTracks().forEach(function (track) { return track.stop(); });\n            this._defaultInputDeviceStream = null;\n            this._destroyProcessedStream();\n        }\n    };\n    /**\n     * Unbind the listeners from mediaDevices.\n     * @internal\n     */\n    AudioHelper.prototype._unbind = function () {\n        var _a;\n        if ((_a = this._mediaDevices) === null || _a === void 0 ? void 0 : _a.removeEventListener) {\n            this._mediaDevices.removeEventListener('devicechange', this._updateAvailableDevices);\n        }\n    };\n    /**\n     * Update AudioHelper options that can be changed by the user\n     * @internal\n     */\n    AudioHelper.prototype._updateUserOptions = function (options) {\n        if (typeof options.enumerateDevices === 'function') {\n            this._enumerateDevices = options.enumerateDevices;\n        }\n        if (typeof options.getUserMedia === 'function') {\n            this._getUserMedia = options.getUserMedia;\n        }\n    };\n    /**\n     * Adds an {@link AudioProcessor} object. Once added, the AudioHelper will route\n     * the input audio stream through the processor before sending the audio\n     * stream to Twilio. Only one AudioProcessor can be added at this time.\n     *\n     * See the {@link AudioProcessor} interface for an example.\n     *\n     * @param processor The AudioProcessor to add.\n     * @returns\n     */\n    AudioHelper.prototype.addProcessor = function (processor) {\n        this._log.debug('.addProcessor');\n        if (this._processor) {\n            throw new errors_1.NotSupportedError('Adding multiple AudioProcessors is not supported at this time.');\n        }\n        if (typeof processor !== 'object' || processor === null) {\n            throw new errors_1.InvalidArgumentError('Missing AudioProcessor argument.');\n        }\n        if (typeof processor.createProcessedStream !== 'function') {\n            throw new errors_1.InvalidArgumentError('Missing createProcessedStream() method.');\n        }\n        if (typeof processor.destroyProcessedStream !== 'function') {\n            throw new errors_1.InvalidArgumentError('Missing destroyProcessedStream() method.');\n        }\n        this._processor = processor;\n        this._audioProcessorEventObserver.emit('add');\n        return this._restartStreams();\n    };\n    /**\n     * Enable or disable the disconnect sound.\n     * @param doEnable Passing `true` will enable the sound and `false` will disable the sound.\n     * Not passing this parameter will not alter the enable-status of the sound.\n     * @returns The enable-status of the sound.\n     */\n    AudioHelper.prototype.disconnect = function (doEnable) {\n        this._log.debug('.disconnect', doEnable);\n        return this._maybeEnableSound(device_1.default.SoundName.Disconnect, doEnable);\n    };\n    /**\n     * Enable or disable the incoming sound.\n     * @param doEnable Passing `true` will enable the sound and `false` will disable the sound.\n     * Not passing this parameter will not alter the enable-status of the sound.\n     * @returns The enable-status of the sound.\n     */\n    AudioHelper.prototype.incoming = function (doEnable) {\n        this._log.debug('.incoming', doEnable);\n        return this._maybeEnableSound(device_1.default.SoundName.Incoming, doEnable);\n    };\n    /**\n     * Enable or disable the outgoing sound.\n     * @param doEnable Passing `true` will enable the sound and `false` will disable the sound.\n     * Not passing this parameter will not alter the enable-status of the sound.\n     * @returns The enable-status of the sound.\n     */\n    AudioHelper.prototype.outgoing = function (doEnable) {\n        this._log.debug('.outgoing', doEnable);\n        return this._maybeEnableSound(device_1.default.SoundName.Outgoing, doEnable);\n    };\n    /**\n     * Removes an {@link AudioProcessor}. Once removed, the AudioHelper will start using\n     * the audio stream from the selected input device for existing or future calls.\n     *\n     * @param processor The AudioProcessor to remove.\n     * @returns\n     */\n    AudioHelper.prototype.removeProcessor = function (processor) {\n        this._log.debug('.removeProcessor');\n        if (typeof processor !== 'object' || processor === null) {\n            throw new errors_1.InvalidArgumentError('Missing AudioProcessor argument.');\n        }\n        if (this._processor !== processor) {\n            throw new errors_1.InvalidArgumentError('Cannot remove an AudioProcessor that has not been previously added.');\n        }\n        this._destroyProcessedStream();\n        this._processor = null;\n        this._audioProcessorEventObserver.emit('remove');\n        return this._restartStreams();\n    };\n    /**\n     * Set the MediaTrackConstraints to be applied on every getUserMedia call for new input\n     * device audio. Any deviceId specified here will be ignored. Instead, device IDs should\n     * be specified using {@link AudioHelper#setInputDevice}. The returned Promise resolves\n     * when the media is successfully reacquired, or immediately if no input device is set.\n     * @param audioConstraints - The MediaTrackConstraints to apply.\n     */\n    AudioHelper.prototype.setAudioConstraints = function (audioConstraints) {\n        this._log.debug('.setAudioConstraints', audioConstraints);\n        this._audioConstraints = Object.assign({}, audioConstraints);\n        delete this._audioConstraints.deviceId;\n        return this.inputDevice\n            ? this._setInputDevice(this.inputDevice.deviceId, true)\n            : Promise.resolve();\n    };\n    /**\n     * Replace the current input device with a new device by ID.\n     *\n     * Calling `setInputDevice` sets the stream for current and future calls and\n     * will not release it automatically.\n     *\n     * While this behavior is not an issue, it will result in the application\n     * holding onto the input device, and the application may show a red\n     * \"recording\" symbol in the browser tab.\n     *\n     * To remove the red \"recording\" symbol, the device must be released. To\n     * release it, call `unsetInputDevice` after the call disconnects. Note that\n     * after calling `unsetInputDevice` future calls will then use the default\n     * input device.\n     *\n     * Consider application logic that keeps track of the user-selected device\n     * and call `setInputDevice` before calling `device.connect()` for outgoing\n     * calls and `call.accept()` for incoming calls. Furthermore, consider\n     * calling `unsetInputDevice` once a call is disconnected. Below is an\n     * example:\n     *\n     * ```ts\n     * import { Device } from '@twilio/voice-sdk';\n     * let inputDeviceId = ...;\n     * const device = new Device(...);\n     *\n     * async function makeOutgoingCall() {\n     *   await device.audio.setInputDevice(inputDeviceId);\n     *   const call = await device.connect(...);\n     *\n     *   call.on('disconnect', async () => {\n     *     inputDeviceId = ... // save the current input device id\n     *     await device.audio.unsetInputDevice();\n     *   });\n     * }\n     *\n     * async function acceptIncomingCall(incomingCall) {\n     *   await device.audio.setInputDevice(inputDeviceId);\n     *   await incomingCall.accept();\n     *\n     *   incomingCall.on('disconnect', async () => {\n     *     inputDeviceId = ... // save the current input device id\n     *     await device.audio.unsetInputDevice();\n     *   });\n     * }\n     * ```\n     *\n     * @param deviceId - An ID of a device to replace the existing\n     *   input device with.\n     */\n    AudioHelper.prototype.setInputDevice = function (deviceId) {\n        this._log.debug('.setInputDevice', deviceId);\n        return this._setInputDevice(deviceId, false);\n    };\n    /**\n     * Unset the MediaTrackConstraints to be applied on every getUserMedia call for new input\n     * device audio. The returned Promise resolves when the media is successfully reacquired,\n     * or immediately if no input device is set.\n     */\n    AudioHelper.prototype.unsetAudioConstraints = function () {\n        this._log.debug('.unsetAudioConstraints');\n        this._audioConstraints = null;\n        return this.inputDevice\n            ? this._setInputDevice(this.inputDevice.deviceId, true)\n            : Promise.resolve();\n    };\n    /**\n     * Unset the input device, stopping the tracks. This should only be called when not in a connection, and\n     *   will not allow removal of the input device during a live call.\n     */\n    AudioHelper.prototype.unsetInputDevice = function () {\n        var _this = this;\n        this._log.debug('.unsetInputDevice', this.inputDevice);\n        if (!this.inputDevice) {\n            return Promise.resolve();\n        }\n        this._destroyProcessedStream();\n        return this._onActiveInputChanged(null).then(function () {\n            _this._replaceStream(null);\n            _this._inputDevice = null;\n            _this._maybeStopPollingVolume();\n        });\n    };\n    /**\n     * Destroys processed stream and update references\n     */\n    AudioHelper.prototype._destroyProcessedStream = function () {\n        if (this._processor && this._processedStream) {\n            this._log.info('destroying processed stream');\n            var processedStream = this._processedStream;\n            this._processedStream.getTracks().forEach(function (track) { return track.stop(); });\n            this._processedStream = null;\n            this._processor.destroyProcessedStream(processedStream);\n            this._audioProcessorEventObserver.emit('destroy');\n        }\n    };\n    /**\n     * Get the index of an un-labeled Device.\n     * @param mediaDeviceInfo\n     * @returns The index of the passed MediaDeviceInfo\n     */\n    AudioHelper.prototype._getUnknownDeviceIndex = function (mediaDeviceInfo) {\n        var id = mediaDeviceInfo.deviceId;\n        var kind = mediaDeviceInfo.kind;\n        var index = this._unknownDeviceIndexes[kind][id];\n        if (!index) {\n            index = Object.keys(this._unknownDeviceIndexes[kind]).length + 1;\n            this._unknownDeviceIndexes[kind][id] = index;\n        }\n        return index;\n    };\n    /**\n     * Initialize output device enumeration.\n     */\n    AudioHelper.prototype._initializeEnumeration = function () {\n        var _this = this;\n        if (!this._mediaDevices || !this._enumerateDevices) {\n            throw new errors_1.NotSupportedError('Enumeration is not supported');\n        }\n        if (this._mediaDevices.addEventListener) {\n            this._mediaDevices.addEventListener('devicechange', this._updateAvailableDevices);\n        }\n        this._updateAvailableDevices().then(function () {\n            if (!_this.isOutputSelectionSupported) {\n                return;\n            }\n            Promise.all([\n                _this.speakerDevices.set('default'),\n                _this.ringtoneDevices.set('default'),\n            ]).catch(function (reason) {\n                _this._log.warn(\"Warning: Unable to set audio output devices. \".concat(reason));\n            });\n        });\n    };\n    /**\n     * Route input stream to the processor if it exists\n     */\n    AudioHelper.prototype._maybeCreateProcessedStream = function (stream) {\n        var _this = this;\n        if (this._processor) {\n            this._log.info('Creating processed stream');\n            return this._processor.createProcessedStream(stream).then(function (processedStream) {\n                _this._processedStream = processedStream;\n                _this._audioProcessorEventObserver.emit('create');\n                return _this._processedStream;\n            });\n        }\n        return Promise.resolve(stream);\n    };\n    /**\n     * Set whether the sound is enabled or not\n     * @param soundName\n     * @param doEnable\n     * @returns Whether the sound is enabled or not\n     */\n    AudioHelper.prototype._maybeEnableSound = function (soundName, doEnable) {\n        if (typeof doEnable !== 'undefined') {\n            this._enabledSounds[soundName] = doEnable;\n        }\n        return this._enabledSounds[soundName];\n    };\n    /**\n     * Stop the tracks on the current input stream before replacing it with the passed stream.\n     * @param stream - The new stream\n     */\n    AudioHelper.prototype._replaceStream = function (stream) {\n        this._log.info('Replacing with new stream.');\n        if (this._selectedInputDeviceStream) {\n            this._log.info('Old stream detected. Stopping tracks.');\n            this._stopSelectedInputDeviceStream();\n        }\n        this._selectedInputDeviceStream = stream;\n    };\n    /**\n     * Restart the active streams\n     */\n    AudioHelper.prototype._restartStreams = function () {\n        if (this.inputDevice && this._selectedInputDeviceStream) {\n            this._log.info('Restarting selected input device');\n            return this._setInputDevice(this.inputDevice.deviceId, true);\n        }\n        if (this._defaultInputDeviceStream) {\n            var defaultDevice = this.availableInputDevices.get('default')\n                || Array.from(this.availableInputDevices.values())[0];\n            this._log.info('Restarting default input device, now becoming selected.');\n            return this._setInputDevice(defaultDevice.deviceId, true);\n        }\n        return Promise.resolve();\n    };\n    /**\n     * Replace the current input device with a new device by ID.\n     * @param deviceId - An ID of a device to replace the existing\n     *   input device with.\n     * @param forceGetUserMedia - If true, getUserMedia will be called even if\n     *   the specified device is already active.\n     */\n    AudioHelper.prototype._setInputDevice = function (deviceId, forceGetUserMedia) {\n        return __awaiter(this, void 0, void 0, function () {\n            var setInputDevice;\n            var _this = this;\n            return __generator(this, function (_a) {\n                setInputDevice = function () { return __awaiter(_this, void 0, void 0, function () {\n                    var device, constraints;\n                    var _this = this;\n                    return __generator(this, function (_a) {\n                        switch (_a.label) {\n                            case 0: return [4 /*yield*/, this._beforeSetInputDevice()];\n                            case 1:\n                                _a.sent();\n                                if (typeof deviceId !== 'string') {\n                                    return [2 /*return*/, Promise.reject(new errors_1.InvalidArgumentError('Must specify the device to set'))];\n                                }\n                                device = this.availableInputDevices.get(deviceId);\n                                if (!device) {\n                                    return [2 /*return*/, Promise.reject(new errors_1.InvalidArgumentError(\"Device not found: \".concat(deviceId)))];\n                                }\n                                this._log.info('Setting input device. ID: ' + deviceId);\n                                if (this._inputDevice && this._inputDevice.deviceId === deviceId && this._selectedInputDeviceStream) {\n                                    if (!forceGetUserMedia) {\n                                        return [2 /*return*/, Promise.resolve()];\n                                    }\n                                    // If the currently active track is still in readyState `live`, gUM may return the same track\n                                    // rather than returning a fresh track.\n                                    this._log.info('Same track detected on setInputDevice, stopping old tracks.');\n                                    this._stopSelectedInputDeviceStream();\n                                }\n                                // Release the default device in case it was created previously\n                                this._stopDefaultInputDeviceStream();\n                                constraints = { audio: Object.assign({ deviceId: { exact: deviceId } }, this.audioConstraints) };\n                                this._log.info('setInputDevice: getting new tracks.');\n                                return [2 /*return*/, this._getUserMedia(constraints).then(function (originalStream) {\n                                        _this._destroyProcessedStream();\n                                        return _this._maybeCreateProcessedStream(originalStream).then(function (newStream) {\n                                            _this._log.info('setInputDevice: invoking _onActiveInputChanged.');\n                                            return _this._onActiveInputChanged(newStream).then(function () {\n                                                _this._replaceStream(originalStream);\n                                                _this._inputDevice = device;\n                                                _this._maybeStartPollingVolume();\n                                            });\n                                        });\n                                    })];\n                        }\n                    });\n                }); };\n                return [2 /*return*/, this._inputDevicePromise = setInputDevice().finally(function () {\n                        _this._inputDevicePromise = null;\n                    })];\n            });\n        });\n    };\n    /**\n     * Remove event listener for microphone permissions\n     */\n    AudioHelper.prototype._stopMicrophonePermissionListener = function () {\n        var _a;\n        if ((_a = this._microphonePermissionStatus) === null || _a === void 0 ? void 0 : _a.removeEventListener) {\n            this._microphonePermissionStatus.removeEventListener('change', this._onMicrophonePermissionStatusChanged);\n        }\n    };\n    /**\n     * Stop the selected audio stream\n     */\n    AudioHelper.prototype._stopSelectedInputDeviceStream = function () {\n        if (this._selectedInputDeviceStream) {\n            this._log.info('Stopping selected device stream');\n            this._selectedInputDeviceStream.getTracks().forEach(function (track) { return track.stop(); });\n        }\n    };\n    /**\n     * Update a set of devices.\n     * @param updatedDevices - An updated list of available Devices\n     * @param availableDevices - The previous list of available Devices\n     * @param removeLostDevice - The method to call if a previously available Device is\n     *   no longer available.\n     */\n    AudioHelper.prototype._updateDevices = function (updatedDevices, availableDevices, removeLostDevice) {\n        var _this = this;\n        var updatedDeviceIds = updatedDevices.map(function (d) { return d.deviceId; });\n        var knownDeviceIds = Array.from(availableDevices.values()).map(function (d) { return d.deviceId; });\n        var lostActiveDevices = [];\n        // Remove lost devices\n        var lostDeviceIds = (0, util_1.difference)(knownDeviceIds, updatedDeviceIds);\n        lostDeviceIds.forEach(function (lostDeviceId) {\n            var lostDevice = availableDevices.get(lostDeviceId);\n            if (lostDevice) {\n                availableDevices.delete(lostDeviceId);\n                if (removeLostDevice(lostDevice)) {\n                    lostActiveDevices.push(lostDevice);\n                }\n            }\n        });\n        // Add any new devices, or devices with updated labels\n        var deviceChanged = false;\n        updatedDevices.forEach(function (newDevice) {\n            var existingDevice = availableDevices.get(newDevice.deviceId);\n            var newMediaDeviceInfo = _this._wrapMediaDeviceInfo(newDevice);\n            if (!existingDevice || existingDevice.label !== newMediaDeviceInfo.label) {\n                availableDevices.set(newDevice.deviceId, newMediaDeviceInfo);\n                deviceChanged = true;\n            }\n        });\n        if (deviceChanged || lostDeviceIds.length) {\n            // Force a new gUM in case the underlying tracks of the active stream have changed. One\n            //   reason this might happen is when `default` is selected and set to a USB device,\n            //   then that device is unplugged or plugged back in. We can't check for the 'ended'\n            //   event or readyState because it is asynchronous and may take upwards of 5 seconds,\n            //   in my testing. (rrowland)\n            var defaultId_1 = 'default';\n            // this.inputDevice is not null if audio.setInputDevice() was explicitly called\n            var isInputDeviceSet = this.inputDevice && this.inputDevice.deviceId === defaultId_1;\n            // If this.inputDevice is null, and default stream is not null, it means\n            // the user is using the default stream and did not explicitly call audio.setInputDevice()\n            var isDefaultDeviceSet = this._defaultInputDeviceStream && this.availableInputDevices.get(defaultId_1);\n            if (isInputDeviceSet || isDefaultDeviceSet) {\n                this._log.warn(\"Calling getUserMedia after device change to ensure that the           tracks of the active device (default) have not gone stale.\");\n                // NOTE(csantos): Updating the stream in the same execution context as the devicechange event\n                // causes the new gUM call to fail silently. Meaning, the gUM call may succeed,\n                // but it won't actually update the stream. We need to update the stream in a different\n                // execution context (setTimeout) to properly update the stream.\n                setTimeout(function () {\n                    _this._setInputDevice(defaultId_1, true);\n                }, 0);\n            }\n            this._log.debug('#deviceChange', lostActiveDevices);\n            this.emit('deviceChange', lostActiveDevices);\n        }\n    };\n    /**\n     * Disconnect the old input volume source, and create and connect a new one with the current\n     * input stream.\n     */\n    AudioHelper.prototype._updateVolumeSource = function () {\n        if (!this.inputStream || !this._audioContext || !this._inputVolumeAnalyser) {\n            return;\n        }\n        if (this._inputVolumeSource) {\n            this._inputVolumeSource.disconnect();\n        }\n        try {\n            this._inputVolumeSource = this._audioContext.createMediaStreamSource(this.inputStream);\n            this._inputVolumeSource.connect(this._inputVolumeAnalyser);\n        }\n        catch (ex) {\n            this._log.warn('Unable to update volume source', ex);\n            delete this._inputVolumeSource;\n        }\n    };\n    /**\n     * Convert a MediaDeviceInfo to a IMediaDeviceInfoShim.\n     * @param mediaDeviceInfo - The info to convert\n     * @returns The converted shim\n     */\n    AudioHelper.prototype._wrapMediaDeviceInfo = function (mediaDeviceInfo) {\n        var options = {\n            deviceId: mediaDeviceInfo.deviceId,\n            groupId: mediaDeviceInfo.groupId,\n            kind: mediaDeviceInfo.kind,\n            label: mediaDeviceInfo.label,\n        };\n        if (!options.label) {\n            if (options.deviceId === 'default') {\n                options.label = 'Default';\n            }\n            else {\n                var index = this._getUnknownDeviceIndex(mediaDeviceInfo);\n                options.label = \"Unknown \".concat(kindAliases[options.kind], \" Device \").concat(index);\n            }\n        }\n        return new mediadeviceinfo_1.default(options);\n    };\n    return AudioHelper;\n}(events_1.EventEmitter));\n/**\n * @mergeModuleWith AudioHelper\n */\n(function (AudioHelper) {\n})(AudioHelper || (AudioHelper = {}));\nexports.default = AudioHelper;\n\n},{\"./device\":12,\"./errors\":15,\"./log\":18,\"./outputdevicecollection\":19,\"./shims/mediadeviceinfo\":33,\"./util\":37,\"events\":39}],4:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar deferred_1 = require(\"./deferred\");\nvar eventtarget_1 = require(\"./eventtarget\");\n/**\n * An {@link AudioPlayer} is an HTMLAudioElement-like object that uses AudioContext\n *   to circumvent browser limitations.\n * @private\n */\nvar AudioPlayer = /** @class */ (function (_super) {\n    __extends(AudioPlayer, _super);\n    /**\n     * @private\n     */\n    function AudioPlayer(audioContext, srcOrOptions, options) {\n        if (srcOrOptions === void 0) { srcOrOptions = {}; }\n        if (options === void 0) { options = {}; }\n        var _this = _super.call(this) || this;\n        /**\n         * The AudioBufferSourceNode of the actively loaded sound. Null if a sound\n         *   has not been loaded yet. This is re-used for each time the sound is\n         *   played.\n         */\n        _this._audioNode = null;\n        /**\n         * Whether or not the audio element should loop. If disabled during playback,\n         *   playing continues until the sound ends and then stops looping.\n         */\n        _this._loop = false;\n        /**\n         * An Array of deferred-like objects for each pending `play` Promise. When\n         *   .pause() is called or .src is set, all pending play Promises are\n         *   immediately rejected.\n         */\n        _this._pendingPlayDeferreds = [];\n        /**\n         * The current sinkId of the device audio is being played through.\n         */\n        _this._sinkId = 'default';\n        /**\n         * The source URL of the sound to play. When set, the currently playing sound will stop.\n         */\n        _this._src = '';\n        if (typeof srcOrOptions !== 'string') {\n            options = srcOrOptions;\n        }\n        _this._audioContext = audioContext;\n        _this._audioElement = new (options.AudioFactory || Audio)();\n        _this._bufferPromise = _this._createPlayDeferred().promise;\n        _this._destination = _this._audioContext.destination;\n        _this._gainNode = _this._audioContext.createGain();\n        _this._gainNode.connect(_this._destination);\n        _this._XMLHttpRequest = options.XMLHttpRequestFactory || XMLHttpRequest;\n        _this.addEventListener('canplaythrough', function () {\n            _this._resolvePlayDeferreds();\n        });\n        if (typeof srcOrOptions === 'string') {\n            _this.src = srcOrOptions;\n        }\n        return _this;\n    }\n    Object.defineProperty(AudioPlayer.prototype, \"destination\", {\n        get: function () { return this._destination; },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioPlayer.prototype, \"loop\", {\n        get: function () { return this._loop; },\n        set: function (shouldLoop) {\n            var self = this;\n            function pauseAfterPlaythrough() {\n                self._audioNode.removeEventListener('ended', pauseAfterPlaythrough);\n                self.pause();\n            }\n            // If a sound is already looping, it should continue playing\n            //   the current playthrough and then stop.\n            if (!shouldLoop && this.loop && !this.paused) {\n                this._audioNode.addEventListener('ended', pauseAfterPlaythrough);\n            }\n            this._loop = shouldLoop;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioPlayer.prototype, \"muted\", {\n        /**\n         * Whether the audio element is muted.\n         */\n        get: function () { return this._gainNode.gain.value === 0; },\n        set: function (shouldBeMuted) {\n            this._gainNode.gain.value = shouldBeMuted ? 0 : 1;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioPlayer.prototype, \"paused\", {\n        /**\n         * Whether the sound is paused. this._audioNode only exists when sound is playing;\n         *   otherwise AudioPlayer is considered paused.\n         */\n        get: function () { return this._audioNode === null; },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioPlayer.prototype, \"src\", {\n        get: function () { return this._src; },\n        set: function (src) {\n            this._load(src);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioPlayer.prototype, \"srcObject\", {\n        /**\n         * The srcObject of the HTMLMediaElement\n         */\n        get: function () {\n            return this._audioElement.srcObject;\n        },\n        set: function (srcObject) {\n            this._audioElement.srcObject = srcObject;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(AudioPlayer.prototype, \"sinkId\", {\n        get: function () { return this._sinkId; },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Stop any ongoing playback and reload the source file.\n     */\n    AudioPlayer.prototype.load = function () {\n        this._load(this._src);\n    };\n    /**\n     * Pause the audio coming from this AudioPlayer. This will reject any pending\n     *   play Promises.\n     */\n    AudioPlayer.prototype.pause = function () {\n        if (this.paused) {\n            return;\n        }\n        this._audioElement.pause();\n        this._audioNode.stop();\n        this._audioNode.disconnect(this._gainNode);\n        this._audioNode = null;\n        this._rejectPlayDeferreds(new Error('The play() request was interrupted by a call to pause().'));\n    };\n    /**\n     * Play the sound. If the buffer hasn't loaded yet, wait for the buffer to load. If\n     *   the source URL is not set yet, this Promise will remain pending until a source\n     *   URL is set.\n     */\n    AudioPlayer.prototype.play = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var buffer;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!!this.paused) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this._bufferPromise];\n                    case 1:\n                        _a.sent();\n                        if (!this.paused) {\n                            return [2 /*return*/];\n                        }\n                        throw new Error('The play() request was interrupted by a call to pause().');\n                    case 2:\n                        this._audioNode = this._audioContext.createBufferSource();\n                        this._audioNode.loop = this.loop;\n                        this._audioNode.addEventListener('ended', function () {\n                            if (_this._audioNode && _this._audioNode.loop) {\n                                return;\n                            }\n                            _this.dispatchEvent('ended');\n                        });\n                        return [4 /*yield*/, this._bufferPromise];\n                    case 3:\n                        buffer = _a.sent();\n                        if (this.paused) {\n                            throw new Error('The play() request was interrupted by a call to pause().');\n                        }\n                        this._audioNode.buffer = buffer;\n                        this._audioNode.connect(this._gainNode);\n                        this._audioNode.start();\n                        if (this._audioElement.srcObject) {\n                            return [2 /*return*/, this._audioElement.play()];\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Change which device the sound should play through.\n     * @param sinkId - The sink of the device to play sound through.\n     */\n    AudioPlayer.prototype.setSinkId = function (sinkId) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (typeof this._audioElement.setSinkId !== 'function') {\n                            throw new Error('This browser does not support setSinkId.');\n                        }\n                        if (sinkId === this.sinkId) {\n                            return [2 /*return*/];\n                        }\n                        if (sinkId === 'default') {\n                            if (!this.paused) {\n                                this._gainNode.disconnect(this._destination);\n                            }\n                            this._audioElement.srcObject = null;\n                            this._destination = this._audioContext.destination;\n                            this._gainNode.connect(this._destination);\n                            this._sinkId = sinkId;\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, this._audioElement.setSinkId(sinkId)];\n                    case 1:\n                        _a.sent();\n                        if (this._audioElement.srcObject) {\n                            return [2 /*return*/];\n                        }\n                        this._gainNode.disconnect(this._audioContext.destination);\n                        this._destination = this._audioContext.createMediaStreamDestination();\n                        this._audioElement.srcObject = this._destination.stream;\n                        this._sinkId = sinkId;\n                        this._gainNode.connect(this._destination);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Create a Deferred for a Promise that will be resolved when .src is set or rejected\n     *   when .pause is called.\n     */\n    AudioPlayer.prototype._createPlayDeferred = function () {\n        var deferred = new deferred_1.default();\n        this._pendingPlayDeferreds.push(deferred);\n        return deferred;\n    };\n    /**\n     * Stop current playback and load a sound file.\n     * @param src - The source URL of the file to load\n     */\n    AudioPlayer.prototype._load = function (src) {\n        var _this = this;\n        if (this._src && this._src !== src) {\n            this.pause();\n        }\n        this._src = src;\n        this._bufferPromise = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {\n            var buffer;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!src) {\n                            return [2 /*return*/, this._createPlayDeferred().promise];\n                        }\n                        return [4 /*yield*/, bufferSound(this._audioContext, this._XMLHttpRequest, src)];\n                    case 1:\n                        buffer = _a.sent();\n                        this.dispatchEvent('canplaythrough');\n                        resolve(buffer);\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n    };\n    /**\n     * Reject all deferreds for the Play promise.\n     * @param reason\n     */\n    AudioPlayer.prototype._rejectPlayDeferreds = function (reason) {\n        var deferreds = this._pendingPlayDeferreds;\n        deferreds.splice(0, deferreds.length).forEach(function (_a) {\n            var reject = _a.reject;\n            return reject(reason);\n        });\n    };\n    /**\n     * Resolve all deferreds for the Play promise.\n     * @param result\n     */\n    AudioPlayer.prototype._resolvePlayDeferreds = function (result) {\n        var deferreds = this._pendingPlayDeferreds;\n        deferreds.splice(0, deferreds.length).forEach(function (_a) {\n            var resolve = _a.resolve;\n            return resolve(result);\n        });\n    };\n    return AudioPlayer;\n}(eventtarget_1.default));\n/**\n * Use XMLHttpRequest to load the AudioBuffer of a remote audio asset.\n * @private\n * @param context - The AudioContext to use to decode the audio data\n * @param RequestFactory - The XMLHttpRequest factory to build\n * @param src - The URL of the audio asset to load.\n * @returns A Promise containing the decoded AudioBuffer.\n */\n// tslint:disable-next-line:variable-name\nfunction bufferSound(context, RequestFactory, src) {\n    return __awaiter(this, void 0, void 0, function () {\n        var request, event;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    request = new RequestFactory();\n                    request.open('GET', src, true);\n                    request.responseType = 'arraybuffer';\n                    return [4 /*yield*/, new Promise(function (resolve) {\n                            request.addEventListener('load', resolve);\n                            request.send();\n                        })];\n                case 1:\n                    event = _a.sent();\n                    // Safari uses a callback here instead of a Promise.\n                    try {\n                        return [2 /*return*/, context.decodeAudioData(event.target.response)];\n                    }\n                    catch (e) {\n                        return [2 /*return*/, new Promise(function (resolve) {\n                                context.decodeAudioData(event.target.response, resolve);\n                            })];\n                    }\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\nexports.default = AudioPlayer;\n\n},{\"./deferred\":5,\"./eventtarget\":6}],5:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar Deferred = /** @class */ (function () {\n    function Deferred() {\n        var _this = this;\n        this.promise = new Promise(function (resolve, reject) {\n            _this._resolve = resolve;\n            _this._reject = reject;\n        });\n    }\n    Object.defineProperty(Deferred.prototype, \"reject\", {\n        get: function () { return this._reject; },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Deferred.prototype, \"resolve\", {\n        get: function () { return this._resolve; },\n        enumerable: false,\n        configurable: true\n    });\n    return Deferred;\n}());\nexports.default = Deferred;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar events_1 = require(\"events\");\nvar EventTarget = /** @class */ (function () {\n    function EventTarget() {\n        this._eventEmitter = new events_1.EventEmitter();\n    }\n    EventTarget.prototype.addEventListener = function (name, handler) {\n        return this._eventEmitter.addListener(name, handler);\n    };\n    EventTarget.prototype.dispatchEvent = function (name) {\n        var _a;\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        return (_a = this._eventEmitter).emit.apply(_a, __spreadArray([name], args, false));\n    };\n    EventTarget.prototype.removeEventListener = function (name, handler) {\n        return this._eventEmitter.removeListener(name, handler);\n    };\n    return EventTarget;\n}());\nexports.default = EventTarget;\n\n},{\"events\":39}],7:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AudioProcessorEventObserver = void 0;\nvar events_1 = require(\"events\");\nvar log_1 = require(\"./log\");\n/**\n * AudioProcessorEventObserver observes {@link AudioProcessor}\n * related operations and re-emits them as generic events.\n * @internal\n */\nvar AudioProcessorEventObserver = /** @class */ (function (_super) {\n    __extends(AudioProcessorEventObserver, _super);\n    function AudioProcessorEventObserver() {\n        var _this = _super.call(this) || this;\n        _this._log = new log_1.default('AudioProcessorEventObserver');\n        _this._log.info('Creating AudioProcessorEventObserver instance');\n        _this.on('enabled', function () { return _this._reEmitEvent('enabled'); });\n        _this.on('add', function () { return _this._reEmitEvent('add'); });\n        _this.on('remove', function () { return _this._reEmitEvent('remove'); });\n        _this.on('create', function () { return _this._reEmitEvent('create-processed-stream'); });\n        _this.on('destroy', function () { return _this._reEmitEvent('destroy-processed-stream'); });\n        return _this;\n    }\n    AudioProcessorEventObserver.prototype.destroy = function () {\n        this.removeAllListeners();\n    };\n    AudioProcessorEventObserver.prototype._reEmitEvent = function (name) {\n        this._log.info(\"AudioProcessor:\".concat(name));\n        this.emit('event', { name: name, group: 'audio-processor' });\n    };\n    return AudioProcessorEventObserver;\n}(events_1.EventEmitter));\nexports.AudioProcessorEventObserver = AudioProcessorEventObserver;\n\n},{\"./log\":18,\"events\":39}],8:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\n// NOTE (csantos): This file was taken directly from twilio-video and has been renamed from JS to TS only.\n// It needs to be re-written as part of the overall updating of the files to TS.\nvar events_1 = require(\"events\");\nvar Backoff = /** @class */ (function (_super) {\n    __extends(Backoff, _super);\n    /**\n     * Construct a {@link Backoff}.\n     * @param {object} options\n     * @property {number} min - Initial timeout in milliseconds [100]\n     * @property {number} max - Max timeout [10000]\n     * @property {boolean} jitter - Apply jitter [0]\n     * @property {number} factor - Multiplication factor for Backoff operation [2]\n     */\n    function Backoff(options) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _attempts: {\n                value: 0,\n                writable: true,\n            },\n            _duration: {\n                enumerable: false,\n                get: function () {\n                    var ms = this._min * Math.pow(this._factor, this._attempts);\n                    if (this._jitter) {\n                        var rand = Math.random();\n                        var deviation = Math.floor(rand * this._jitter * ms);\n                        // tslint:disable-next-line\n                        ms = (Math.floor(rand * 10) & 1) === 0 ? ms - deviation : ms + deviation;\n                    }\n                    // tslint:disable-next-line\n                    return Math.min(ms, this._max) | 0;\n                },\n            },\n            _factor: { value: options.factor || 2 },\n            _jitter: { value: options.jitter > 0 && options.jitter <= 1 ? options.jitter : 0 },\n            _max: { value: options.max || 10000 },\n            _min: { value: options.min || 100 },\n            _timeoutID: {\n                value: null,\n                writable: true,\n            },\n        });\n        return _this;\n    }\n    Backoff.prototype.backoff = function () {\n        var _this = this;\n        var duration = this._duration;\n        if (this._timeoutID) {\n            clearTimeout(this._timeoutID);\n            this._timeoutID = null;\n        }\n        this.emit('backoff', this._attempts, duration);\n        this._timeoutID = setTimeout(function () {\n            _this.emit('ready', _this._attempts, duration);\n            _this._attempts++;\n        }, duration);\n    };\n    Backoff.prototype.reset = function () {\n        this._attempts = 0;\n        if (this._timeoutID) {\n            clearTimeout(this._timeoutID);\n            this._timeoutID = null;\n        }\n    };\n    return Backoff;\n}(events_1.EventEmitter));\nexports.default = Backoff;\n\n},{\"events\":39}],9:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar backoff_1 = require(\"./backoff\");\nvar device_1 = require(\"./device\");\nvar errors_1 = require(\"./errors\");\nvar log_1 = require(\"./log\");\nvar rtc_1 = require(\"./rtc\");\nvar icecandidate_1 = require(\"./rtc/icecandidate\");\nvar sdp_1 = require(\"./rtc/sdp\");\nvar sid_1 = require(\"./sid\");\nvar statsMonitor_1 = require(\"./statsMonitor\");\nvar util_1 = require(\"./util\");\nvar constants_1 = require(\"./constants\");\nvar BACKOFF_CONFIG = {\n    factor: 1.1,\n    jitter: 0.5,\n    max: 30000,\n    min: 1,\n};\nvar DTMF_INTER_TONE_GAP = 70;\nvar DTMF_PAUSE_DURATION = 500;\nvar DTMF_TONE_DURATION = 160;\nvar METRICS_BATCH_SIZE = 10;\nvar METRICS_DELAY = 5000;\nvar MEDIA_DISCONNECT_ERROR = {\n    disconnect: true,\n    info: {\n        code: 31003,\n        message: 'Connection with Twilio was interrupted.',\n        twilioError: new errors_1.MediaErrors.ConnectionError(),\n    },\n};\nvar MULTIPLE_THRESHOLD_WARNING_NAMES = {\n    // The stat `packetsLostFraction` is monitored by two separate thresholds,\n    // `maxAverage` and `max`. Each threshold emits a different warning name.\n    packetsLostFraction: {\n        max: 'packet-loss',\n        maxAverage: 'packets-lost-fraction',\n    },\n};\nvar WARNING_NAMES = {\n    audioInputLevel: 'audio-input-level',\n    audioOutputLevel: 'audio-output-level',\n    bytesReceived: 'bytes-received',\n    bytesSent: 'bytes-sent',\n    jitter: 'jitter',\n    mos: 'mos',\n    rtt: 'rtt',\n};\nvar WARNING_PREFIXES = {\n    max: 'high-',\n    maxAverage: 'high-',\n    maxDuration: 'constant-',\n    min: 'low-',\n    minStandardDeviation: 'constant-',\n};\n/**\n * A {@link Call} represents a media and signaling connection to a TwiML application.\n */\nvar Call = /** @class */ (function (_super) {\n    __extends(Call, _super);\n    /**\n     * @internal\n     * @param config - Mandatory configuration options\n     * @param options - Optional settings\n     */\n    function Call(config, options) {\n        var _this = _super.call(this) || this;\n        /**\n         * Call parameters received from Twilio for an incoming call.\n         */\n        _this.parameters = {};\n        /**\n         * The number of times input volume has been the same consecutively.\n         */\n        _this._inputVolumeStreak = 0;\n        /**\n         * Whether the call has been answered.\n         */\n        _this._isAnswered = false;\n        /**\n         * Whether the call has been cancelled.\n         */\n        _this._isCancelled = false;\n        /**\n         * Whether the call has been rejected\n         */\n        _this._isRejected = false;\n        /**\n         * The most recent public input volume value. 0 -> 1 representing -100 to -30 dB.\n         */\n        _this._latestInputVolume = 0;\n        /**\n         * The most recent public output volume value. 0 -> 1 representing -100 to -30 dB.\n         */\n        _this._latestOutputVolume = 0;\n        /**\n         * An instance of Logger to use.\n         */\n        _this._log = new log_1.default('Call');\n        /**\n         * State of the {@link Call}'s media.\n         */\n        _this._mediaStatus = Call.State.Pending;\n        /**\n         * A map of messages sent via sendMessage API using voiceEventSid as the key.\n         * The message will be deleted once an 'ack' or an error is received from the server.\n         */\n        _this._messages = new Map();\n        /**\n         * A batch of metrics samples to send to Insights. Gets cleared after\n         * each send and appended to on each new sample.\n         */\n        _this._metricsSamples = [];\n        /**\n         * Options passed to this {@link Call}.\n         */\n        _this._options = {\n            MediaHandler: rtc_1.PeerConnection,\n            MediaStream: null,\n            enableImprovedSignalingErrorPrecision: false,\n            offerSdp: null,\n            shouldPlayDisconnect: function () { return true; },\n            voiceEventSidGenerator: sid_1.generateVoiceEventSid,\n        };\n        /**\n         * The number of times output volume has been the same consecutively.\n         */\n        _this._outputVolumeStreak = 0;\n        /**\n         * Whether the {@link Call} should send a hangup on disconnect.\n         */\n        _this._shouldSendHangup = true;\n        /**\n         * State of the {@link Call}'s signaling.\n         */\n        _this._signalingStatus = Call.State.Pending;\n        /**\n         * A Map of Sounds to play.\n         */\n        _this._soundcache = new Map();\n        /**\n         * State of the {@link Call}.\n         */\n        _this._status = Call.State.Pending;\n        /**\n         * Whether the {@link Call} has been connected. Used to determine if we are reconnected.\n         */\n        _this._wasConnected = false;\n        /**\n         * String representation of {@link Call} instance.\n         * @internal\n         */\n        _this.toString = function () { return '[Twilio.Call instance]'; };\n        _this._emitWarning = function (groupPrefix, warningName, threshold, value, wasCleared, warningData) {\n            var groupSuffix = wasCleared ? '-cleared' : '-raised';\n            var groupName = \"\".concat(groupPrefix, \"warning\").concat(groupSuffix);\n            // Ignore constant input if the Call is muted (Expected)\n            if (warningName === 'constant-audio-input-level' && _this.isMuted()) {\n                return;\n            }\n            var level = wasCleared ? 'info' : 'warning';\n            // Avoid throwing false positives as warnings until we refactor volume metrics\n            if (warningName === 'constant-audio-output-level') {\n                level = 'info';\n            }\n            var payloadData = { threshold: threshold };\n            if (value) {\n                if (value instanceof Array) {\n                    payloadData.values = value.map(function (val) {\n                        if (typeof val === 'number') {\n                            return Math.round(val * 100) / 100;\n                        }\n                        return value;\n                    });\n                }\n                else {\n                    payloadData.value = value;\n                }\n            }\n            _this._publisher.post(level, groupName, warningName, { data: payloadData }, _this);\n            if (warningName !== 'constant-audio-output-level') {\n                var emitName = wasCleared ? 'warning-cleared' : 'warning';\n                _this._log.debug(\"#\".concat(emitName), warningName);\n                _this.emit(emitName, warningName, warningData && !wasCleared ? warningData : null);\n            }\n        };\n        /**\n         * Called when the {@link Call} receives an ack from signaling\n         * @param payload\n         */\n        _this._onAck = function (payload) {\n            var acktype = payload.acktype, callsid = payload.callsid, voiceeventsid = payload.voiceeventsid;\n            if (_this.parameters.CallSid !== callsid) {\n                _this._log.warn(\"Received ack from a different callsid: \".concat(callsid));\n                return;\n            }\n            if (acktype === 'message') {\n                _this._onMessageSent(voiceeventsid);\n            }\n        };\n        /**\n         * Called when the {@link Call} is answered.\n         * @param payload\n         */\n        _this._onAnswer = function (payload) {\n            if (typeof payload.reconnect === 'string') {\n                _this._signalingReconnectToken = payload.reconnect;\n            }\n            // answerOnBridge=false will send a 183 which we need to catch in _onRinging when\n            // the enableRingingState flag is disabled. In that case, we will receive a 200 after\n            // the callee accepts the call firing a second `accept` event if we don't\n            // short circuit here.\n            if (_this._isAnswered && _this._status !== Call.State.Reconnecting) {\n                return;\n            }\n            _this._setCallSid(payload);\n            _this._isAnswered = true;\n            _this._maybeTransitionToOpen();\n        };\n        /**\n         * Called when the {@link Call} is cancelled.\n         * @param payload\n         */\n        _this._onCancel = function (payload) {\n            // (rrowland) Is this check necessary? Verify, and if so move to pstream / VSP module.\n            var callsid = payload.callsid;\n            if (_this.parameters.CallSid === callsid) {\n                _this._isCancelled = true;\n                _this._publisher.info('connection', 'cancel', null, _this);\n                _this._cleanupEventListeners();\n                _this._mediaHandler.close();\n                _this._status = Call.State.Closed;\n                _this._log.debug('#cancel');\n                _this.emit('cancel');\n                _this._pstream.removeListener('cancel', _this._onCancel);\n            }\n        };\n        /**\n         * Called when we receive a connected event from pstream.\n         * Re-emits the event.\n         */\n        _this._onConnected = function () {\n            _this._log.info('Received connected from pstream');\n            if (_this._signalingReconnectToken && _this._mediaHandler.version) {\n                _this._pstream.reconnect(_this._mediaHandler.version.getSDP(), _this.parameters.CallSid, _this._signalingReconnectToken);\n            }\n        };\n        /**\n         * Called when the {@link Call} is hung up.\n         * @param payload\n         */\n        _this._onHangup = function (payload) {\n            if (_this.status() === Call.State.Closed) {\n                return;\n            }\n            /**\n             *  see if callsid passed in message matches either callsid or outbound id\n             *  call should always have either callsid or outbound id\n             *  if no callsid passed hangup anyways\n             */\n            if (payload.callsid && (_this.parameters.CallSid || _this.outboundConnectionId)) {\n                if (payload.callsid !== _this.parameters.CallSid\n                    && payload.callsid !== _this.outboundConnectionId) {\n                    return;\n                }\n            }\n            else if (payload.callsid) {\n                // hangup is for another call\n                return;\n            }\n            _this._log.info('Received HANGUP from gateway');\n            if (payload.error) {\n                var code = payload.error.code;\n                var errorConstructor = (0, errors_1.getPreciseSignalingErrorByCode)(_this._options.enableImprovedSignalingErrorPrecision, code);\n                var error = typeof errorConstructor !== 'undefined'\n                    ? new errorConstructor(payload.error.message)\n                    : new errors_1.GeneralErrors.ConnectionError('Error sent from gateway in HANGUP', payload.error);\n                _this._log.error('Received an error from the gateway:', error);\n                _this._log.debug('#error', error);\n                _this.emit('error', error);\n            }\n            _this._shouldSendHangup = false;\n            _this._publisher.info('connection', 'disconnected-by-remote', null, _this);\n            _this._disconnect(null, true);\n            _this._cleanupEventListeners();\n        };\n        /**\n         * Called when there is a media failure.\n         * Manages all media-related states and takes action base on the states\n         * @param type - Type of media failure\n         */\n        _this._onMediaFailure = function (type) {\n            var _a = Call.MediaFailure, ConnectionDisconnected = _a.ConnectionDisconnected, ConnectionFailed = _a.ConnectionFailed, IceGatheringFailed = _a.IceGatheringFailed, LowBytes = _a.LowBytes;\n            // These types signifies the end of a single ICE cycle\n            var isEndOfIceCycle = type === ConnectionFailed || type === IceGatheringFailed;\n            // All browsers except chrome doesn't update pc.iceConnectionState and pc.connectionState\n            // after issuing an ICE Restart, which we use to determine if ICE Restart is complete.\n            // Since we cannot detect if ICE Restart is complete, we will not retry.\n            if (!(0, util_1.isChrome)(window, window.navigator) && type === ConnectionFailed) {\n                return _this._mediaHandler.onerror(MEDIA_DISCONNECT_ERROR);\n            }\n            // Ignore subsequent requests if ice restart is in progress\n            if (_this._mediaStatus === Call.State.Reconnecting) {\n                // This is a retry. Previous ICE Restart failed\n                if (isEndOfIceCycle) {\n                    // We already exceeded max retry time.\n                    if (Date.now() - _this._mediaReconnectStartTime > BACKOFF_CONFIG.max) {\n                        _this._log.warn('Exceeded max ICE retries');\n                        return _this._mediaHandler.onerror(MEDIA_DISCONNECT_ERROR);\n                    }\n                    // Issue ICE restart with backoff\n                    try {\n                        _this._mediaReconnectBackoff.backoff();\n                    }\n                    catch (error) {\n                        // Catch and ignore 'Backoff in progress.' errors. If a backoff is\n                        // ongoing and we try to start another one, there shouldn't be a\n                        // problem.\n                        if (!(error.message && error.message === 'Backoff in progress.')) {\n                            throw error;\n                        }\n                    }\n                }\n                return;\n            }\n            var pc = _this._mediaHandler.version.pc;\n            var isIceDisconnected = pc && pc.iceConnectionState === 'disconnected';\n            var hasLowBytesWarning = _this._monitor.hasActiveWarning('bytesSent', 'min')\n                || _this._monitor.hasActiveWarning('bytesReceived', 'min');\n            // Only certain conditions can trigger media reconnection\n            if ((type === LowBytes && isIceDisconnected)\n                || (type === ConnectionDisconnected && hasLowBytesWarning)\n                || isEndOfIceCycle) {\n                var mediaReconnectionError = new errors_1.MediaErrors.ConnectionError('Media connection failed.');\n                _this._log.warn('ICE Connection disconnected.');\n                _this._publisher.warn('connection', 'error', mediaReconnectionError, _this);\n                _this._publisher.info('connection', 'reconnecting', null, _this);\n                _this._mediaReconnectStartTime = Date.now();\n                _this._status = Call.State.Reconnecting;\n                _this._mediaStatus = Call.State.Reconnecting;\n                _this._mediaReconnectBackoff.reset();\n                _this._mediaReconnectBackoff.backoff();\n                _this._log.debug('#reconnecting');\n                _this.emit('reconnecting', mediaReconnectionError);\n            }\n        };\n        /**\n         * Called when media call is restored\n         */\n        _this._onMediaReconnected = function () {\n            // Only trigger once.\n            // This can trigger on pc.onIceConnectionChange and pc.onConnectionChange.\n            if (_this._mediaStatus !== Call.State.Reconnecting) {\n                return;\n            }\n            _this._log.info('ICE Connection reestablished.');\n            _this._mediaStatus = Call.State.Open;\n            if (_this._signalingStatus === Call.State.Open) {\n                _this._publisher.info('connection', 'reconnected', null, _this);\n                _this._log.debug('#reconnected');\n                _this.emit('reconnected');\n                _this._status = Call.State.Open;\n            }\n        };\n        /**\n         * Raised when a Call receives a message from the backend.\n         * @param payload - A record representing the payload of the message from the\n         * Twilio backend.\n         */\n        _this._onMessageReceived = function (payload) {\n            var callsid = payload.callsid, content = payload.content, contenttype = payload.contenttype, messagetype = payload.messagetype, voiceeventsid = payload.voiceeventsid;\n            if (_this.parameters.CallSid !== callsid) {\n                _this._log.warn(\"Received a message from a different callsid: \".concat(callsid));\n                return;\n            }\n            var data = {\n                content: content,\n                contentType: contenttype,\n                messageType: messagetype,\n                voiceEventSid: voiceeventsid,\n            };\n            _this._publisher.info('call-message', messagetype, {\n                content_type: contenttype,\n                event_type: 'received',\n                voice_event_sid: voiceeventsid,\n            }, _this);\n            _this._log.debug('#messageReceived', JSON.stringify(data));\n            _this.emit('messageReceived', data);\n        };\n        /**\n         * Raised when a Call receives an 'ack' with an 'acktype' of 'message.\n         * This means that the message sent via sendMessage API has been received by the signaling server.\n         * @param voiceEventSid\n         */\n        _this._onMessageSent = function (voiceEventSid) {\n            if (!_this._messages.has(voiceEventSid)) {\n                _this._log.warn(\"Received a messageSent with a voiceEventSid that doesn't exists: \".concat(voiceEventSid));\n                return;\n            }\n            var message = _this._messages.get(voiceEventSid);\n            _this._messages.delete(voiceEventSid);\n            _this._publisher.info('call-message', message === null || message === void 0 ? void 0 : message.messageType, {\n                content_type: message === null || message === void 0 ? void 0 : message.contentType,\n                event_type: 'sent',\n                voice_event_sid: voiceEventSid,\n            }, _this);\n            _this._log.debug('#messageSent', JSON.stringify(message));\n            _this.emit('messageSent', message);\n        };\n        /**\n         * When we get a RINGING signal from PStream, update the {@link Call} status.\n         * @param payload\n         */\n        _this._onRinging = function (payload) {\n            _this._setCallSid(payload);\n            // If we're not in 'connecting' or 'ringing' state, this event was received out of order.\n            if (_this._status !== Call.State.Connecting && _this._status !== Call.State.Ringing) {\n                return;\n            }\n            var hasEarlyMedia = !!payload.sdp;\n            _this._status = Call.State.Ringing;\n            _this._publisher.info('connection', 'outgoing-ringing', { hasEarlyMedia: hasEarlyMedia }, _this);\n            _this._log.debug('#ringing');\n            _this.emit('ringing', hasEarlyMedia);\n        };\n        /**\n         * Called each time StatsMonitor emits a sample.\n         * Emits stats event and batches the call stats metrics and sends them to Insights.\n         * @param sample\n         */\n        _this._onRTCSample = function (sample) {\n            var callMetrics = __assign(__assign({}, sample), { inputVolume: _this._latestInputVolume, outputVolume: _this._latestOutputVolume });\n            _this._codec = callMetrics.codecName;\n            _this._metricsSamples.push(callMetrics);\n            if (_this._metricsSamples.length >= METRICS_BATCH_SIZE) {\n                _this._publishMetrics();\n            }\n            _this.emit('sample', sample);\n        };\n        /**\n         * Called when an 'error' event is received from the signaling stream.\n         */\n        _this._onSignalingError = function (payload) {\n            var callsid = payload.callsid, voiceeventsid = payload.voiceeventsid, error = payload.error;\n            if (_this.parameters.CallSid !== callsid) {\n                _this._log.warn(\"Received an error from a different callsid: \".concat(callsid));\n                return;\n            }\n            if (voiceeventsid && _this._messages.has(voiceeventsid)) {\n                // Do not emit an error here. Device is handling all signaling related errors.\n                _this._messages.delete(voiceeventsid);\n                _this._log.warn(\"Received an error while sending a message.\", payload);\n                _this._publisher.error('call-message', 'error', {\n                    code: error.code,\n                    message: error.message,\n                    voice_event_sid: voiceeventsid,\n                }, _this);\n                var twilioError = void 0;\n                var errorConstructor = (0, errors_1.getPreciseSignalingErrorByCode)(!!_this._options.enableImprovedSignalingErrorPrecision, error.code);\n                if (typeof errorConstructor !== 'undefined') {\n                    twilioError = new errorConstructor(error);\n                }\n                if (!twilioError) {\n                    _this._log.error('Unknown Call Message Error: ', error);\n                    twilioError = new errors_1.GeneralErrors.UnknownError(error.message, error);\n                }\n                _this._log.debug('#error', error, twilioError);\n                _this.emit('error', twilioError);\n            }\n        };\n        /**\n         * Called when signaling is restored\n         */\n        _this._onSignalingReconnected = function () {\n            if (_this._signalingStatus !== Call.State.Reconnecting) {\n                return;\n            }\n            _this._log.info('Signaling Connection reestablished.');\n            _this._signalingStatus = Call.State.Open;\n            if (_this._mediaStatus === Call.State.Open) {\n                _this._publisher.info('connection', 'reconnected', null, _this);\n                _this._log.debug('#reconnected');\n                _this.emit('reconnected');\n                _this._status = Call.State.Open;\n            }\n        };\n        /**\n         * Called when we receive a transportClose event from pstream.\n         * Re-emits the event.\n         */\n        _this._onTransportClose = function () {\n            _this._log.error('Received transportClose from pstream');\n            _this._log.debug('#transportClose');\n            _this.emit('transportClose');\n            if (_this._signalingReconnectToken) {\n                _this._status = Call.State.Reconnecting;\n                _this._signalingStatus = Call.State.Reconnecting;\n                _this._log.debug('#reconnecting');\n                _this.emit('reconnecting', new errors_1.SignalingErrors.ConnectionDisconnected());\n            }\n            else {\n                _this._status = Call.State.Closed;\n                _this._signalingStatus = Call.State.Closed;\n            }\n        };\n        /**\n         * Re-emit an StatsMonitor warning as a {@link Call}.warning or .warning-cleared event.\n         * @param warningData\n         * @param wasCleared - Whether this is a -cleared or -raised event.\n         */\n        _this._reemitWarning = function (warningData, wasCleared) {\n            var groupPrefix = /^audio/.test(warningData.name) ?\n                'audio-level-' : 'network-quality-';\n            var warningPrefix = WARNING_PREFIXES[warningData.threshold.name];\n            /**\n             * NOTE: There are two \"packet-loss\" warnings: `high-packet-loss` and\n             * `high-packets-lost-fraction`, so in this case we need to use a different\n             * `WARNING_NAME` mapping.\n             */\n            var warningName;\n            if (warningData.name in MULTIPLE_THRESHOLD_WARNING_NAMES) {\n                warningName = MULTIPLE_THRESHOLD_WARNING_NAMES[warningData.name][warningData.threshold.name];\n            }\n            else if (warningData.name in WARNING_NAMES) {\n                warningName = WARNING_NAMES[warningData.name];\n            }\n            var warning = warningPrefix + warningName;\n            _this._emitWarning(groupPrefix, warning, warningData.threshold.value, warningData.values || warningData.value, wasCleared, warningData);\n        };\n        /**\n         * Re-emit an StatsMonitor warning-cleared as a .warning-cleared event.\n         * @param warningData\n         */\n        _this._reemitWarningCleared = function (warningData) {\n            _this._reemitWarning(warningData, true);\n        };\n        _this._isUnifiedPlanDefault = config.isUnifiedPlanDefault;\n        _this._soundcache = config.soundcache;\n        if (typeof config.onIgnore === 'function') {\n            _this._onIgnore = config.onIgnore;\n        }\n        var message = options && options.twimlParams || {};\n        _this.customParameters = new Map(Object.entries(message).map(function (_a) {\n            var key = _a[0], val = _a[1];\n            return [key, String(val)];\n        }));\n        Object.assign(_this._options, options);\n        if (_this._options.callParameters) {\n            _this.parameters = _this._options.callParameters;\n        }\n        if (_this._options.reconnectToken) {\n            _this._signalingReconnectToken = _this._options.reconnectToken;\n        }\n        _this._voiceEventSidGenerator =\n            _this._options.voiceEventSidGenerator || sid_1.generateVoiceEventSid;\n        _this._direction = _this.parameters.CallSid && !_this._options.reconnectCallSid ?\n            Call.CallDirection.Incoming : Call.CallDirection.Outgoing;\n        if (_this.parameters) {\n            _this.callerInfo = _this.parameters.StirStatus\n                ? { isVerified: _this.parameters.StirStatus === 'TN-Validation-Passed-A' }\n                : null;\n        }\n        else {\n            _this.callerInfo = null;\n        }\n        _this._mediaReconnectBackoff = new backoff_1.default(BACKOFF_CONFIG);\n        _this._mediaReconnectBackoff.on('ready', function () { return _this._mediaHandler.iceRestart(); });\n        // temporary call sid to be used for outgoing calls\n        _this.outboundConnectionId = generateTempCallSid();\n        var publisher = _this._publisher = config.publisher;\n        if (_this._direction === Call.CallDirection.Incoming) {\n            publisher.info('connection', 'incoming', null, _this);\n        }\n        else {\n            publisher.info('connection', 'outgoing', {\n                preflight: _this._options.preflight,\n                reconnect: !!_this._options.reconnectCallSid,\n            }, _this);\n        }\n        var monitor = _this._monitor = new (_this._options.StatsMonitor || statsMonitor_1.default)();\n        monitor.on('sample', _this._onRTCSample);\n        // First 20 seconds or so are choppy, so let's not bother with these warnings.\n        monitor.disableWarnings();\n        setTimeout(function () { return monitor.enableWarnings(); }, METRICS_DELAY);\n        monitor.on('warning', function (data, wasCleared) {\n            if (data.name === 'bytesSent' || data.name === 'bytesReceived') {\n                _this._onMediaFailure(Call.MediaFailure.LowBytes);\n            }\n            _this._reemitWarning(data, wasCleared);\n        });\n        monitor.on('warning-cleared', function (data) {\n            _this._reemitWarningCleared(data);\n        });\n        _this._mediaHandler = new (_this._options.MediaHandler)(config.audioHelper, config.pstream, {\n            MediaStream: _this._options.MediaStream,\n            RTCPeerConnection: _this._options.RTCPeerConnection,\n            codecPreferences: _this._options.codecPreferences,\n            dscp: _this._options.dscp,\n            forceAggressiveIceNomination: _this._options.forceAggressiveIceNomination,\n            isUnifiedPlan: _this._isUnifiedPlanDefault,\n            maxAverageBitrate: _this._options.maxAverageBitrate,\n        });\n        _this.on('volume', function (inputVolume, outputVolume) {\n            _this._inputVolumeStreak = _this._checkVolume(inputVolume, _this._inputVolumeStreak, _this._latestInputVolume, 'input');\n            _this._outputVolumeStreak = _this._checkVolume(outputVolume, _this._outputVolumeStreak, _this._latestOutputVolume, 'output');\n            _this._latestInputVolume = inputVolume;\n            _this._latestOutputVolume = outputVolume;\n        });\n        _this._mediaHandler.onaudio = function (remoteAudio) {\n            _this._log.debug('#audio');\n            _this.emit('audio', remoteAudio);\n        };\n        _this._mediaHandler.onvolume = function (inputVolume, outputVolume, internalInputVolume, internalOutputVolume) {\n            // (rrowland) These values mock the 0 -> 32767 format used by legacy getStats. We should look into\n            // migrating to a newer standard, either 0.0 -> linear or -127 to 0 in dB, matching the range\n            // chosen below.\n            monitor.addVolumes((internalInputVolume / 255) * 32767, (internalOutputVolume / 255) * 32767);\n            // (rrowland) 0.0 -> 1.0 linear\n            _this.emit('volume', inputVolume, outputVolume);\n        };\n        _this._mediaHandler.ondtlstransportstatechange = function (state) {\n            var level = state === 'failed' ? 'error' : 'debug';\n            _this._publisher.post(level, 'dtls-transport-state', state, null, _this);\n        };\n        _this._mediaHandler.onpcconnectionstatechange = function (state) {\n            var level = 'debug';\n            var dtlsTransport = _this._mediaHandler.getRTCDtlsTransport();\n            if (state === 'failed') {\n                level = dtlsTransport && dtlsTransport.state === 'failed' ? 'error' : 'warning';\n            }\n            _this._publisher.post(level, 'pc-connection-state', state, null, _this);\n        };\n        _this._mediaHandler.onicecandidate = function (candidate) {\n            var payload = new icecandidate_1.IceCandidate(candidate).toPayload();\n            _this._publisher.debug('ice-candidate', 'ice-candidate', payload, _this);\n        };\n        _this._mediaHandler.onselectedcandidatepairchange = function (pair) {\n            var localCandidatePayload = new icecandidate_1.IceCandidate(pair.local).toPayload();\n            var remoteCandidatePayload = new icecandidate_1.IceCandidate(pair.remote, true).toPayload();\n            _this._publisher.debug('ice-candidate', 'selected-ice-candidate-pair', {\n                local_candidate: localCandidatePayload,\n                remote_candidate: remoteCandidatePayload,\n            }, _this);\n        };\n        _this._mediaHandler.oniceconnectionstatechange = function (state) {\n            var level = state === 'failed' ? 'error' : 'debug';\n            _this._publisher.post(level, 'ice-connection-state', state, null, _this);\n        };\n        _this._mediaHandler.onicegatheringfailure = function (type) {\n            _this._publisher.warn('ice-gathering-state', type, null, _this);\n            _this._onMediaFailure(Call.MediaFailure.IceGatheringFailed);\n        };\n        _this._mediaHandler.onicegatheringstatechange = function (state) {\n            _this._publisher.debug('ice-gathering-state', state, null, _this);\n        };\n        _this._mediaHandler.onsignalingstatechange = function (state) {\n            _this._publisher.debug('signaling-state', state, null, _this);\n        };\n        _this._mediaHandler.ondisconnected = function (msg) {\n            _this._log.warn(msg);\n            _this._publisher.warn('network-quality-warning-raised', 'ice-connectivity-lost', {\n                message: msg,\n            }, _this);\n            _this._log.debug('#warning', 'ice-connectivity-lost');\n            _this.emit('warning', 'ice-connectivity-lost');\n            _this._onMediaFailure(Call.MediaFailure.ConnectionDisconnected);\n        };\n        _this._mediaHandler.onfailed = function (msg) {\n            _this._onMediaFailure(Call.MediaFailure.ConnectionFailed);\n        };\n        _this._mediaHandler.onconnected = function () {\n            // First time _mediaHandler is connected, but ICE Gathering issued an ICE restart and succeeded.\n            if (_this._status === Call.State.Reconnecting) {\n                _this._onMediaReconnected();\n            }\n        };\n        _this._mediaHandler.onreconnected = function (msg) {\n            _this._log.info(msg);\n            _this._publisher.info('network-quality-warning-cleared', 'ice-connectivity-lost', {\n                message: msg,\n            }, _this);\n            _this._log.debug('#warning-cleared', 'ice-connectivity-lost');\n            _this.emit('warning-cleared', 'ice-connectivity-lost');\n            _this._onMediaReconnected();\n        };\n        _this._mediaHandler.onerror = function (e) {\n            if (e.disconnect === true) {\n                _this._disconnect(e.info && e.info.message);\n            }\n            var error = e.info.twilioError || new errors_1.GeneralErrors.UnknownError(e.info.message);\n            _this._log.error('Received an error from MediaStream:', e);\n            _this._log.debug('#error', error);\n            _this.emit('error', error);\n        };\n        _this._mediaHandler.onopen = function () {\n            // NOTE(mroberts): While this may have been happening in previous\n            // versions of Chrome, since Chrome 45 we have seen the\n            // PeerConnection's onsignalingstatechange handler invoked multiple\n            // times in the same signalingState 'stable'. When this happens, we\n            // invoke this onopen function. If we invoke it twice without checking\n            // for _status 'open', we'd accidentally close the PeerConnection.\n            //\n            // See <https://code.google.com/p/webrtc/issues/detail?id=4996>.\n            if (_this._status === Call.State.Open || _this._status === Call.State.Reconnecting) {\n                return;\n            }\n            else if (_this._status === Call.State.Ringing || _this._status === Call.State.Connecting) {\n                _this.mute(_this._mediaHandler.isMuted);\n                _this._mediaStatus = Call.State.Open;\n                _this._maybeTransitionToOpen();\n            }\n            else {\n                // call was probably canceled sometime before this\n                _this._mediaHandler.close();\n            }\n        };\n        _this._mediaHandler.onclose = function () {\n            _this._status = Call.State.Closed;\n            if (_this._options.shouldPlayDisconnect && _this._options.shouldPlayDisconnect()\n                // Don't play disconnect sound if this was from a cancel event. i.e. the call\n                // was ignored or hung up even before it was answered.\n                // Similarly, don't play disconnect sound if the call was rejected.\n                && !_this._isCancelled && !_this._isRejected) {\n                _this._soundcache.get(device_1.default.SoundName.Disconnect).play();\n            }\n            monitor.disable();\n            _this._publishMetrics();\n            if (!_this._isCancelled && !_this._isRejected) {\n                // tslint:disable no-console\n                _this._log.debug('#disconnect');\n                _this.emit('disconnect', _this);\n            }\n        };\n        _this._pstream = config.pstream;\n        _this._pstream.on('ack', _this._onAck);\n        _this._pstream.on('cancel', _this._onCancel);\n        _this._pstream.on('error', _this._onSignalingError);\n        _this._pstream.on('ringing', _this._onRinging);\n        _this._pstream.on('transportClose', _this._onTransportClose);\n        _this._pstream.on('connected', _this._onConnected);\n        _this._pstream.on('message', _this._onMessageReceived);\n        _this.on('error', function (error) {\n            _this._publisher.error('connection', 'error', {\n                code: error.code, message: error.message,\n            }, _this);\n            if (_this._pstream && _this._pstream.status === 'disconnected') {\n                _this._cleanupEventListeners();\n            }\n        });\n        _this.on('disconnect', function () {\n            _this._cleanupEventListeners();\n        });\n        return _this;\n    }\n    Object.defineProperty(Call.prototype, \"direction\", {\n        /**\n         * Whether this {@link Call} is incoming or outgoing.\n         */\n        get: function () {\n            return this._direction;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Call.prototype, \"codec\", {\n        /**\n         * Audio codec used for this {@link Call}. Expecting {@link Call.Codec} but\n         * will copy whatever we get from RTC stats.\n         */\n        get: function () {\n            return this._codec;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Call.prototype, \"connectToken\", {\n        /**\n         * The connect token is available as soon as the call is established\n         * and connected to Twilio. Use this token to reconnect to a call via the {@link Device.connect}\n         * method.\n         *\n         * For incoming calls, it is available in the call object after the {@link Device.incomingEvent} is emitted.\n         * For outgoing calls, it is available after the {@link Call.acceptEvent} is emitted.\n         */\n        get: function () {\n            var _this = this;\n            var signalingReconnectToken = this._signalingReconnectToken;\n            var callSid = this.parameters && this.parameters.CallSid ? this.parameters.CallSid : undefined;\n            if (!signalingReconnectToken || !callSid) {\n                return;\n            }\n            var customParameters = this.customParameters && typeof this.customParameters.keys === 'function' ?\n                Array.from(this.customParameters.keys()).reduce(function (result, key) {\n                    result[key] = _this.customParameters.get(key);\n                    return result;\n                }, {}) : {};\n            var parameters = this.parameters || {};\n            return btoa(encodeURIComponent(JSON.stringify({\n                customParameters: customParameters,\n                parameters: parameters,\n                signalingReconnectToken: signalingReconnectToken,\n            })));\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Set the audio input tracks from a given stream.\n     * @internal\n     * @param stream\n     */\n    Call.prototype._setInputTracksFromStream = function (stream) {\n        return this._mediaHandler.setInputTracksFromStream(stream);\n    };\n    /**\n     * Set the audio output sink IDs.\n     * @internal\n     * @param sinkIds\n     */\n    Call.prototype._setSinkIds = function (sinkIds) {\n        return this._mediaHandler._setSinkIds(sinkIds);\n    };\n    /**\n     * Accept the incoming {@link Call}.\n     * @param [options]\n     */\n    Call.prototype.accept = function (options) {\n        var _this = this;\n        this._log.debug('.accept', options);\n        if (this._status !== Call.State.Pending) {\n            this._log.debug(\".accept noop. status is '\".concat(this._status, \"'\"));\n            return;\n        }\n        options = options || {};\n        var rtcConfiguration = options.rtcConfiguration || this._options.rtcConfiguration;\n        var rtcConstraints = options.rtcConstraints || this._options.rtcConstraints || {};\n        var audioConstraints = {\n            audio: typeof rtcConstraints.audio !== 'undefined' ? rtcConstraints.audio : true,\n        };\n        this._status = Call.State.Connecting;\n        var connect = function () {\n            if (_this._status !== Call.State.Connecting) {\n                // call must have been canceled\n                _this._cleanupEventListeners();\n                _this._mediaHandler.close();\n                return;\n            }\n            var onAnswer = function (pc) {\n                // Report that the call was answered, and directionality\n                var eventName = _this._direction === Call.CallDirection.Incoming\n                    ? 'accepted-by-local'\n                    : 'accepted-by-remote';\n                _this._publisher.info('connection', eventName, null, _this);\n                // Report the preferred codec and params as they appear in the SDP\n                var _a = (0, sdp_1.getPreferredCodecInfo)(_this._mediaHandler.version.getSDP()), codecName = _a.codecName, codecParams = _a.codecParams;\n                _this._publisher.info('settings', 'codec', {\n                    codec_params: codecParams,\n                    selected_codec: codecName,\n                }, _this);\n                // Enable RTC monitoring\n                _this._monitor.enable(pc);\n            };\n            var sinkIds = typeof _this._options.getSinkIds === 'function' && _this._options.getSinkIds();\n            if (Array.isArray(sinkIds)) {\n                _this._mediaHandler._setSinkIds(sinkIds).catch(function () {\n                    // (rrowland) We don't want this to throw to console since the customer\n                    // can't control this. This will most commonly be rejected on browsers\n                    // that don't support setting sink IDs.\n                });\n            }\n            _this._pstream.addListener('hangup', _this._onHangup);\n            if (_this._direction === Call.CallDirection.Incoming) {\n                _this._isAnswered = true;\n                _this._pstream.on('answer', _this._onAnswer);\n                _this._mediaHandler.answerIncomingCall(_this.parameters.CallSid, _this._options.offerSdp, rtcConfiguration, onAnswer);\n            }\n            else {\n                var params = Array.from(_this.customParameters.entries()).map(function (pair) {\n                    return \"\".concat(encodeURIComponent(pair[0]), \"=\").concat(encodeURIComponent(pair[1]));\n                }).join('&');\n                _this._pstream.on('answer', _this._onAnswer);\n                _this._mediaHandler.makeOutgoingCall(params, _this._signalingReconnectToken, _this._options.reconnectCallSid || _this.outboundConnectionId, rtcConfiguration, onAnswer);\n            }\n        };\n        if (this._options.beforeAccept) {\n            this._options.beforeAccept(this);\n        }\n        var inputStream = typeof this._options.getInputStream === 'function' && this._options.getInputStream();\n        var promise = inputStream\n            ? this._mediaHandler.setInputTracksFromStream(inputStream)\n            : this._mediaHandler.openDefaultDeviceWithConstraints(audioConstraints);\n        promise.then(function () {\n            _this._publisher.info('get-user-media', 'succeeded', {\n                data: { audioConstraints: audioConstraints },\n            }, _this);\n            connect();\n        }, function (error) {\n            var twilioError;\n            if (error.code === 31208\n                || ['PermissionDeniedError', 'NotAllowedError'].indexOf(error.name) !== -1) {\n                twilioError = new errors_1.UserMediaErrors.PermissionDeniedError();\n                _this._publisher.error('get-user-media', 'denied', {\n                    data: {\n                        audioConstraints: audioConstraints,\n                        error: error,\n                    },\n                }, _this);\n            }\n            else {\n                twilioError = new errors_1.UserMediaErrors.AcquisitionFailedError();\n                _this._publisher.error('get-user-media', 'failed', {\n                    data: {\n                        audioConstraints: audioConstraints,\n                        error: error,\n                    },\n                }, _this);\n            }\n            _this._disconnect();\n            _this._log.debug('#error', error);\n            _this.emit('error', twilioError);\n        });\n    };\n    /**\n     * Disconnect from the {@link Call}.\n     */\n    Call.prototype.disconnect = function () {\n        this._log.debug('.disconnect');\n        this._disconnect();\n    };\n    /**\n     * Get the local MediaStream, if set.\n     */\n    Call.prototype.getLocalStream = function () {\n        return this._mediaHandler && this._mediaHandler.stream;\n    };\n    /**\n     * Get the remote MediaStream, if set.\n     */\n    Call.prototype.getRemoteStream = function () {\n        return this._mediaHandler && this._mediaHandler._remoteStream;\n    };\n    /**\n     * Ignore the incoming {@link Call}.\n     */\n    Call.prototype.ignore = function () {\n        this._log.debug('.ignore');\n        if (this._status !== Call.State.Pending) {\n            this._log.debug(\".ignore noop. status is '\".concat(this._status, \"'\"));\n            return;\n        }\n        this._status = Call.State.Closed;\n        this._mediaHandler.ignore(this.parameters.CallSid);\n        this._publisher.info('connection', 'ignored-by-local', null, this);\n        if (this._onIgnore) {\n            this._onIgnore();\n        }\n    };\n    /**\n     * Check whether call is muted\n     */\n    Call.prototype.isMuted = function () {\n        return this._mediaHandler.isMuted;\n    };\n    /**\n     * Mute incoming audio.\n     * @param shouldMute - Whether the incoming audio should be muted. Defaults to true.\n     */\n    Call.prototype.mute = function (shouldMute) {\n        if (shouldMute === void 0) { shouldMute = true; }\n        this._log.debug('.mute', shouldMute);\n        var wasMuted = this._mediaHandler.isMuted;\n        this._mediaHandler.mute(shouldMute);\n        var isMuted = this._mediaHandler.isMuted;\n        if (wasMuted !== isMuted) {\n            this._publisher.info('connection', isMuted ? 'muted' : 'unmuted', null, this);\n            this._log.debug('#mute', isMuted);\n            this.emit('mute', isMuted, this);\n        }\n    };\n    /**\n     * Post an event to Endpoint Analytics indicating that the end user\n     *   has given call quality feedback. Called without a score, this\n     *   will report that the customer declined to give feedback.\n     * @param score - The end-user's rating of the call; an\n     *   integer 1 through 5. Or undefined if the user declined to give\n     *   feedback.\n     * @param issue - The primary issue the end user\n     *   experienced on the call. Can be: ['one-way-audio', 'choppy-audio',\n     *   'dropped-call', 'audio-latency', 'noisy-call', 'echo']\n     */\n    Call.prototype.postFeedback = function (score, issue) {\n        if (typeof score === 'undefined' || score === null) {\n            return this._postFeedbackDeclined();\n        }\n        if (!Object.values(Call.FeedbackScore).includes(score)) {\n            throw new errors_1.InvalidArgumentError(\"Feedback score must be one of: \".concat(Object.values(Call.FeedbackScore)));\n        }\n        if (typeof issue !== 'undefined' && issue !== null && !Object.values(Call.FeedbackIssue).includes(issue)) {\n            throw new errors_1.InvalidArgumentError(\"Feedback issue must be one of: \".concat(Object.values(Call.FeedbackIssue)));\n        }\n        return this._publisher.info('feedback', 'received', {\n            issue_name: issue,\n            quality_score: score,\n        }, this, true);\n    };\n    /**\n     * Reject the incoming {@link Call}.\n     */\n    Call.prototype.reject = function () {\n        this._log.debug('.reject');\n        if (this._status !== Call.State.Pending) {\n            this._log.debug(\".reject noop. status is '\".concat(this._status, \"'\"));\n            return;\n        }\n        this._isRejected = true;\n        this._pstream.reject(this.parameters.CallSid);\n        this._mediaHandler.reject(this.parameters.CallSid);\n        this._publisher.info('connection', 'rejected-by-local', null, this);\n        this._cleanupEventListeners();\n        this._mediaHandler.close();\n        this._status = Call.State.Closed;\n        this._log.debug('#reject');\n        this.emit('reject');\n    };\n    /**\n     * Send a string of digits.\n     * @param digits\n     */\n    Call.prototype.sendDigits = function (digits) {\n        var _this = this;\n        this._log.debug('.sendDigits', digits);\n        if (digits.match(/[^0-9*#w]/)) {\n            throw new errors_1.InvalidArgumentError('Illegal character passed into sendDigits');\n        }\n        var customSounds = this._options.customSounds || {};\n        var sequence = [];\n        digits.split('').forEach(function (digit) {\n            var dtmf = (digit !== 'w') ? \"dtmf\".concat(digit) : '';\n            if (dtmf === 'dtmf*') {\n                dtmf = 'dtmfs';\n            }\n            if (dtmf === 'dtmf#') {\n                dtmf = 'dtmfh';\n            }\n            sequence.push(dtmf);\n        });\n        var playNextDigit = function () {\n            var digit = sequence.shift();\n            if (digit) {\n                if (_this._options.dialtonePlayer && !customSounds[digit]) {\n                    _this._options.dialtonePlayer.play(digit);\n                }\n                else {\n                    _this._soundcache.get(digit).play();\n                }\n            }\n            if (sequence.length) {\n                setTimeout(function () { return playNextDigit(); }, 200);\n            }\n        };\n        playNextDigit();\n        var dtmfSender = this._mediaHandler.getOrCreateDTMFSender();\n        function insertDTMF(dtmfs) {\n            if (!dtmfs.length) {\n                return;\n            }\n            var dtmf = dtmfs.shift();\n            if (dtmf && dtmf.length) {\n                dtmfSender.insertDTMF(dtmf, DTMF_TONE_DURATION, DTMF_INTER_TONE_GAP);\n            }\n            setTimeout(insertDTMF.bind(null, dtmfs), DTMF_PAUSE_DURATION);\n        }\n        if (dtmfSender) {\n            if (!('canInsertDTMF' in dtmfSender) || dtmfSender.canInsertDTMF) {\n                this._log.info('Sending digits using RTCDTMFSender');\n                // NOTE(mroberts): We can't just map 'w' to ',' since\n                // RTCDTMFSender's pause duration is 2 s and Twilio's is more\n                // like 500 ms. Instead, we will fudge it with setTimeout.\n                insertDTMF(digits.split('w'));\n                return;\n            }\n            this._log.info('RTCDTMFSender cannot insert DTMF');\n        }\n        // send pstream message to send DTMF\n        this._log.info('Sending digits over PStream');\n        if (this._pstream !== null && this._pstream.status !== 'disconnected') {\n            this._pstream.dtmf(this.parameters.CallSid, digits);\n        }\n        else {\n            var error = new errors_1.GeneralErrors.ConnectionError('Could not send DTMF: Signaling channel is disconnected');\n            this._log.debug('#error', error);\n            this.emit('error', error);\n        }\n    };\n    /**\n     * Send a message to Twilio. Your backend application can listen for these\n     * messages to allow communication between your frontend and backend applications.\n     * <br/><br/>This feature is currently in Beta.\n     * @param message - The message object to send.\n     * @returns A voice event sid that uniquely identifies the message that was sent.\n     */\n    Call.prototype.sendMessage = function (message) {\n        this._log.debug('.sendMessage', JSON.stringify(message));\n        var content = message.content, contentType = message.contentType, messageType = message.messageType;\n        if (typeof content === 'undefined' || content === null) {\n            throw new errors_1.InvalidArgumentError('`content` is empty');\n        }\n        if (typeof messageType !== 'string') {\n            throw new errors_1.InvalidArgumentError('`messageType` must be a string.');\n        }\n        if (messageType.length === 0) {\n            throw new errors_1.InvalidArgumentError('`messageType` must be a non-empty string.');\n        }\n        if (this._pstream === null) {\n            throw new errors_1.InvalidStateError('Could not send CallMessage; Signaling channel is disconnected');\n        }\n        var callSid = this.parameters.CallSid;\n        if (typeof this.parameters.CallSid === 'undefined') {\n            throw new errors_1.InvalidStateError('Could not send CallMessage; Call has no CallSid');\n        }\n        var voiceEventSid = this._voiceEventSidGenerator();\n        this._messages.set(voiceEventSid, { content: content, contentType: contentType, messageType: messageType, voiceEventSid: voiceEventSid });\n        this._pstream.sendMessage(callSid, content, contentType, messageType, voiceEventSid);\n        return voiceEventSid;\n    };\n    /**\n     * Get the current {@link Call} status.\n     */\n    Call.prototype.status = function () {\n        return this._status;\n    };\n    /**\n     * Check the volume passed, emitting a warning if one way audio is detected or cleared.\n     * @param currentVolume - The current volume for this direction\n     * @param streakFieldName - The name of the field on the {@link Call} object that tracks how many times the\n     *   current value has been repeated consecutively.\n     * @param lastValueFieldName - The name of the field on the {@link Call} object that tracks the most recent\n     *   volume for this direction\n     * @param direction - The directionality of this audio track, either 'input' or 'output'\n     * @returns The current streak; how many times in a row the same value has been polled.\n     */\n    Call.prototype._checkVolume = function (currentVolume, currentStreak, lastValue, direction) {\n        var wasWarningRaised = currentStreak >= 10;\n        var newStreak = 0;\n        if (lastValue === currentVolume) {\n            newStreak = currentStreak;\n        }\n        if (newStreak >= 10) {\n            this._emitWarning('audio-level-', \"constant-audio-\".concat(direction, \"-level\"), 10, newStreak, false);\n        }\n        else if (wasWarningRaised) {\n            this._emitWarning('audio-level-', \"constant-audio-\".concat(direction, \"-level\"), 10, newStreak, true);\n        }\n        return newStreak;\n    };\n    /**\n     * Clean up event listeners.\n     */\n    Call.prototype._cleanupEventListeners = function () {\n        var _this = this;\n        var cleanup = function () {\n            if (!_this._pstream) {\n                return;\n            }\n            _this._pstream.removeListener('ack', _this._onAck);\n            _this._pstream.removeListener('answer', _this._onAnswer);\n            _this._pstream.removeListener('cancel', _this._onCancel);\n            _this._pstream.removeListener('error', _this._onSignalingError);\n            _this._pstream.removeListener('hangup', _this._onHangup);\n            _this._pstream.removeListener('ringing', _this._onRinging);\n            _this._pstream.removeListener('transportClose', _this._onTransportClose);\n            _this._pstream.removeListener('connected', _this._onConnected);\n            _this._pstream.removeListener('message', _this._onMessageReceived);\n        };\n        // This is kind of a hack, but it lets us avoid rewriting more code.\n        // Basically, there's a sequencing problem with the way PeerConnection raises\n        // the\n        //\n        //   Cannot establish call. SDK is disconnected\n        //\n        // error in Call#accept. It calls PeerConnection#onerror, which emits\n        // the error event on Call. An error handler on Call then calls\n        // cleanupEventListeners, but then control returns to Call#accept. It's\n        // at this point that we add a listener for the answer event that never gets\n        // removed. setTimeout will allow us to rerun cleanup again, _after_\n        // Call#accept returns.\n        cleanup();\n        setTimeout(cleanup, 0);\n    };\n    /**\n     * Create the payload wrapper for a batch of metrics to be sent to Insights.\n     */\n    Call.prototype._createMetricPayload = function () {\n        var payload = {\n            call_sid: this.parameters.CallSid,\n            dscp: !!this._options.dscp,\n            sdk_version: constants_1.RELEASE_VERSION,\n        };\n        if (this._options.gateway) {\n            payload.gateway = this._options.gateway;\n        }\n        payload.direction = this._direction;\n        return payload;\n    };\n    /**\n     * Disconnect the {@link Call}.\n     * @param message - A message explaining why the {@link Call} is being disconnected.\n     * @param wasRemote - Whether the disconnect was triggered locally or remotely.\n     */\n    Call.prototype._disconnect = function (message, wasRemote) {\n        message = typeof message === 'string' ? message : null;\n        if (this._status !== Call.State.Open\n            && this._status !== Call.State.Connecting\n            && this._status !== Call.State.Reconnecting\n            && this._status !== Call.State.Ringing) {\n            return;\n        }\n        this._log.info('Disconnecting...');\n        // send pstream hangup message\n        if (this._pstream !== null && this._pstream.status !== 'disconnected' && this._shouldSendHangup) {\n            var callsid = this.parameters.CallSid || this.outboundConnectionId;\n            if (callsid) {\n                this._pstream.hangup(callsid, message);\n            }\n        }\n        this._cleanupEventListeners();\n        this._mediaHandler.close();\n        if (!wasRemote) {\n            this._publisher.info('connection', 'disconnected-by-local', null, this);\n        }\n    };\n    /**\n     * Transition to {@link CallStatus.Open} if criteria is met.\n     */\n    Call.prototype._maybeTransitionToOpen = function () {\n        var wasConnected = this._wasConnected;\n        if (this._isAnswered) {\n            this._onSignalingReconnected();\n            this._signalingStatus = Call.State.Open;\n            if (this._mediaHandler && this._mediaHandler.status === 'open') {\n                this._status = Call.State.Open;\n                if (!this._wasConnected) {\n                    this._wasConnected = true;\n                    this._log.debug('#accept');\n                    this.emit('accept', this);\n                }\n            }\n        }\n    };\n    /**\n     * Post an event to Endpoint Analytics indicating that the end user\n     *   has ignored a request for feedback.\n     */\n    Call.prototype._postFeedbackDeclined = function () {\n        return this._publisher.info('feedback', 'received-none', null, this, true);\n    };\n    /**\n     * Publish the current set of queued metrics samples to Insights.\n     */\n    Call.prototype._publishMetrics = function () {\n        var _this = this;\n        if (this._metricsSamples.length === 0) {\n            return;\n        }\n        this._publisher.postMetrics('quality-metrics-samples', 'metrics-sample', this._metricsSamples.splice(0), this._createMetricPayload(), this).catch(function (e) {\n            _this._log.warn('Unable to post metrics to Insights. Received error:', e);\n        });\n    };\n    /**\n     * Set the CallSid\n     * @param payload\n     */\n    Call.prototype._setCallSid = function (payload) {\n        var callSid = payload.callsid;\n        if (!callSid) {\n            return;\n        }\n        this.parameters.CallSid = callSid;\n        this._mediaHandler.callSid = callSid;\n    };\n    /**\n     * String representation of the {@link Call} class.\n     */\n    Call.toString = function () { return '[Twilio.Call class]'; };\n    return Call;\n}(events_1.EventEmitter));\n/**\n * @mergeModuleWith Call\n */\n(function (Call) {\n    /**\n     * Possible states of the {@link Call}.\n     */\n    var State;\n    (function (State) {\n        State[\"Closed\"] = \"closed\";\n        State[\"Connecting\"] = \"connecting\";\n        State[\"Open\"] = \"open\";\n        State[\"Pending\"] = \"pending\";\n        State[\"Reconnecting\"] = \"reconnecting\";\n        State[\"Ringing\"] = \"ringing\";\n    })(State = Call.State || (Call.State = {}));\n    /**\n     * Different issues that may have been experienced during a call, that can be\n     * reported to Twilio Insights via {@link Call}.postFeedback().\n     */\n    var FeedbackIssue;\n    (function (FeedbackIssue) {\n        FeedbackIssue[\"AudioLatency\"] = \"audio-latency\";\n        FeedbackIssue[\"ChoppyAudio\"] = \"choppy-audio\";\n        FeedbackIssue[\"DroppedCall\"] = \"dropped-call\";\n        FeedbackIssue[\"Echo\"] = \"echo\";\n        FeedbackIssue[\"NoisyCall\"] = \"noisy-call\";\n        FeedbackIssue[\"OneWayAudio\"] = \"one-way-audio\";\n    })(FeedbackIssue = Call.FeedbackIssue || (Call.FeedbackIssue = {}));\n    /**\n     * A rating of call quality experienced during a call, to be reported to Twilio Insights\n     * via {@link Call}.postFeedback().\n     */\n    var FeedbackScore;\n    (function (FeedbackScore) {\n        FeedbackScore[FeedbackScore[\"One\"] = 1] = \"One\";\n        FeedbackScore[FeedbackScore[\"Two\"] = 2] = \"Two\";\n        FeedbackScore[FeedbackScore[\"Three\"] = 3] = \"Three\";\n        FeedbackScore[FeedbackScore[\"Four\"] = 4] = \"Four\";\n        FeedbackScore[FeedbackScore[\"Five\"] = 5] = \"Five\";\n    })(FeedbackScore = Call.FeedbackScore || (Call.FeedbackScore = {}));\n    /**\n     * The directionality of the {@link Call}, whether incoming or outgoing.\n     */\n    var CallDirection;\n    (function (CallDirection) {\n        CallDirection[\"Incoming\"] = \"INCOMING\";\n        CallDirection[\"Outgoing\"] = \"OUTGOING\";\n    })(CallDirection = Call.CallDirection || (Call.CallDirection = {}));\n    /**\n     * Valid audio codecs to use for the media connection.\n     */\n    var Codec;\n    (function (Codec) {\n        Codec[\"Opus\"] = \"opus\";\n        Codec[\"PCMU\"] = \"pcmu\";\n    })(Codec = Call.Codec || (Call.Codec = {}));\n    /**\n     * Possible ICE Gathering failures\n     */\n    var IceGatheringFailureReason;\n    (function (IceGatheringFailureReason) {\n        IceGatheringFailureReason[\"None\"] = \"none\";\n        IceGatheringFailureReason[\"Timeout\"] = \"timeout\";\n    })(IceGatheringFailureReason = Call.IceGatheringFailureReason || (Call.IceGatheringFailureReason = {}));\n    /**\n     * Possible media failures\n     */\n    var MediaFailure;\n    (function (MediaFailure) {\n        MediaFailure[\"ConnectionDisconnected\"] = \"ConnectionDisconnected\";\n        MediaFailure[\"ConnectionFailed\"] = \"ConnectionFailed\";\n        MediaFailure[\"IceGatheringFailed\"] = \"IceGatheringFailed\";\n        MediaFailure[\"LowBytes\"] = \"LowBytes\";\n    })(MediaFailure = Call.MediaFailure || (Call.MediaFailure = {}));\n})(Call || (Call = {}));\nfunction generateTempCallSid() {\n    return 'TJSxxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        /* tslint:disable:no-bitwise */\n        var r = Math.random() * 16 | 0;\n        var v = c === 'x' ? r : (r & 0x3 | 0x8);\n        /* tslint:enable:no-bitwise */\n        return v.toString(16);\n    });\n}\nexports.default = Call;\n\n},{\"./backoff\":8,\"./constants\":10,\"./device\":12,\"./errors\":15,\"./log\":18,\"./rtc\":26,\"./rtc/icecandidate\":25,\"./rtc/sdp\":31,\"./sid\":34,\"./statsMonitor\":36,\"./util\":37,\"events\":39}],10:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SOUNDS_BASE_URL = exports.RELEASE_VERSION = exports.PACKAGE_NAME = exports.ECHO_TEST_DURATION = exports.COWBELL_AUDIO_URL = void 0;\n/**\n * This file is generated on build. To make changes, see /templates/constants.ts\n */\nvar PACKAGE_NAME = '@twilio/voice-sdk';\nexports.PACKAGE_NAME = PACKAGE_NAME;\nvar RELEASE_VERSION = '2.15.0';\nexports.RELEASE_VERSION = RELEASE_VERSION;\nvar SOUNDS_BASE_URL = 'https://sdk.twilio.com/js/client/sounds/releases/1.0.0';\nexports.SOUNDS_BASE_URL = SOUNDS_BASE_URL;\nvar COWBELL_AUDIO_URL = \"\".concat(SOUNDS_BASE_URL, \"/cowbell.mp3?cache=\").concat(RELEASE_VERSION);\nexports.COWBELL_AUDIO_URL = COWBELL_AUDIO_URL;\nvar ECHO_TEST_DURATION = 20000;\nexports.ECHO_TEST_DURATION = ECHO_TEST_DURATION;\n\n},{}],11:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Deferred Promise\n */\nvar Deferred = /** @class */ (function () {\n    /**\n     * @constructor\n     */\n    function Deferred() {\n        var _this = this;\n        this._promise = new Promise(function (resolve, reject) {\n            _this._resolve = resolve;\n            _this._reject = reject;\n        });\n    }\n    Object.defineProperty(Deferred.prototype, \"promise\", {\n        /**\n         * @returns The {@link Deferred} Promise\n         */\n        get: function () {\n            return this._promise;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Rejects this promise\n     */\n    Deferred.prototype.reject = function (reason) {\n        this._reject(reason);\n    };\n    /**\n     * Resolves this promise\n     */\n    Deferred.prototype.resolve = function (value) {\n        this._resolve(value);\n    };\n    return Deferred;\n}());\nexports.default = Deferred;\n\n},{}],12:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar loglevel_1 = require(\"loglevel\");\nvar audiohelper_1 = require(\"./audiohelper\");\nvar audioprocessoreventobserver_1 = require(\"./audioprocessoreventobserver\");\nvar call_1 = require(\"./call\");\nvar C = require(\"./constants\");\nvar dialtonePlayer_1 = require(\"./dialtonePlayer\");\nvar errors_1 = require(\"./errors\");\nvar eventpublisher_1 = require(\"./eventpublisher\");\nvar log_1 = require(\"./log\");\nvar preflight_1 = require(\"./preflight/preflight\");\nvar pstream_1 = require(\"./pstream\");\nvar regions_1 = require(\"./regions\");\nvar rtc = require(\"./rtc\");\nvar getusermedia_1 = require(\"./rtc/getusermedia\");\nvar sid_1 = require(\"./sid\");\nvar sound_1 = require(\"./sound\");\nvar util_1 = require(\"./util\");\nvar REGISTRATION_INTERVAL = 30000;\nvar RINGTONE_PLAY_TIMEOUT = 2000;\nvar PUBLISHER_PRODUCT_NAME = 'twilio-js-sdk';\nvar INVALID_TOKEN_MESSAGE = 'Parameter \"token\" must be of type \"string\".';\n/**\n * Twilio Device. Allows registration for incoming calls, and placing outgoing calls.\n */\nvar Device = /** @class */ (function (_super) {\n    __extends(Device, _super);\n    /**\n     * Construct a {@link Device} instance. The {@link Device} can be registered\n     * to make and listen for calls using {@link Device.register}.\n     * @param options\n     */\n    function Device(token, options) {\n        var _a;\n        if (options === void 0) { options = {}; }\n        var _this = _super.call(this) || this;\n        /**\n         * The currently active {@link Call}, if there is one.\n         */\n        _this._activeCall = null;\n        /**\n         * The AudioHelper instance associated with this {@link Device}.\n         */\n        _this._audio = null;\n        /**\n         * The AudioProcessorEventObserver instance to use\n         */\n        _this._audioProcessorEventObserver = null;\n        /**\n         * An audio input MediaStream to pass to new {@link Call} instances.\n         */\n        _this._callInputStream = null;\n        /**\n         * An array of {@link Call}s. Though only one can be active, multiple may exist when there\n         * are multiple incoming, unanswered {@link Call}s.\n         */\n        _this._calls = [];\n        /**\n         * An array of {@link Device} IDs to be used to play sounds through, to be passed to\n         * new {@link Call} instances.\n         */\n        _this._callSinkIds = ['default'];\n        /**\n         * The list of chunder URIs that will be passed to PStream\n         */\n        _this._chunderURIs = [];\n        /**\n         * Default options used by {@link Device}.\n         */\n        _this._defaultOptions = {\n            allowIncomingWhileBusy: false,\n            closeProtection: false,\n            codecPreferences: [call_1.default.Codec.PCMU, call_1.default.Codec.Opus],\n            dscp: true,\n            enableImprovedSignalingErrorPrecision: false,\n            forceAggressiveIceNomination: false,\n            logLevel: loglevel_1.levels.ERROR,\n            maxCallSignalingTimeoutMs: 0,\n            preflight: false,\n            sounds: {},\n            tokenRefreshMs: 10000,\n            voiceEventSidGenerator: sid_1.generateVoiceEventSid,\n        };\n        /**\n         * The name of the edge the {@link Device} is connected to.\n         */\n        _this._edge = null;\n        /**\n         * The name of the home region the {@link Device} is connected to.\n         */\n        _this._home = null;\n        /**\n         * The identity associated with this Device.\n         */\n        _this._identity = null;\n        /**\n         * An instance of Logger to use.\n         */\n        _this._log = new log_1.default('Device');\n        /**\n         * The internal promise created when calling {@link Device.makeCall}.\n         */\n        _this._makeCallPromise = null;\n        /**\n         * The options passed to {@link Device} constructor or {@link Device.updateOptions}.\n         */\n        _this._options = {};\n        /**\n         * The preferred URI to (re)-connect signaling to.\n         */\n        _this._preferredURI = null;\n        /**\n         * An Insights Event Publisher.\n         */\n        _this._publisher = null;\n        /**\n         * The region the {@link Device} is connected to.\n         */\n        _this._region = null;\n        /**\n         * A timeout ID for a setTimeout schedule to re-register the {@link Device}.\n         */\n        _this._regTimer = null;\n        /**\n         * Boolean representing whether or not the {@link Device} was registered when\n         * receiving a signaling `offline`. Determines if the {@link Device} attempts\n         * a `re-register` once signaling is re-established when receiving a\n         * `connected` event from the stream.\n         */\n        _this._shouldReRegister = false;\n        /**\n         * A Map of Sounds to play.\n         */\n        _this._soundcache = new Map();\n        /**\n         * The current status of the {@link Device}.\n         */\n        _this._state = Device.State.Unregistered;\n        /**\n         * A map from {@link Device.State} to {@link Device.EventName}.\n         */\n        _this._stateEventMapping = (_a = {},\n            _a[Device.State.Destroyed] = Device.EventName.Destroyed,\n            _a[Device.State.Unregistered] = Device.EventName.Unregistered,\n            _a[Device.State.Registering] = Device.EventName.Registering,\n            _a[Device.State.Registered] = Device.EventName.Registered,\n            _a);\n        /**\n         * The Signaling stream.\n         */\n        _this._stream = null;\n        /**\n         * A promise that will resolve when the Signaling stream is ready.\n         */\n        _this._streamConnectedPromise = null;\n        /**\n         * A timeout to track when the current AccessToken will expire.\n         */\n        _this._tokenWillExpireTimeout = null;\n        /**\n         * Create the default Insights payload\n         * @param call\n         */\n        _this._createDefaultPayload = function (call) {\n            var payload = {\n                aggressive_nomination: _this._options.forceAggressiveIceNomination,\n                browser_extension: _this._isBrowserExtension,\n                dscp: !!_this._options.dscp,\n                ice_restart_enabled: true,\n                platform: rtc.getMediaEngine(),\n                sdk_version: C.RELEASE_VERSION,\n            };\n            function setIfDefined(propertyName, value) {\n                if (value) {\n                    payload[propertyName] = value;\n                }\n            }\n            if (call) {\n                var callSid = call.parameters.CallSid;\n                setIfDefined('call_sid', /^TJ/.test(callSid) ? undefined : callSid);\n                setIfDefined('temp_call_sid', call.outboundConnectionId);\n                setIfDefined('audio_codec', call.codec);\n                payload.direction = call.direction;\n            }\n            setIfDefined('gateway', _this._stream && _this._stream.gateway);\n            setIfDefined('region', _this._stream && _this._stream.region);\n            return payload;\n        };\n        /**\n         * Called when a 'close' event is received from the signaling stream.\n         */\n        _this._onSignalingClose = function () {\n            _this._stream = null;\n            _this._streamConnectedPromise = null;\n        };\n        /**\n         * Called when a 'connected' event is received from the signaling stream.\n         */\n        _this._onSignalingConnected = function (payload) {\n            var _a;\n            var region = (0, regions_1.getRegionShortcode)(payload.region);\n            _this._edge = payload.edge || regions_1.regionToEdge[region] || payload.region;\n            _this._region = region || payload.region;\n            _this._home = payload.home;\n            (_a = _this._publisher) === null || _a === void 0 ? void 0 : _a.setHost((0, regions_1.createEventGatewayURI)(payload.home));\n            if (payload.token) {\n                _this._identity = payload.token.identity;\n                if (typeof payload.token.ttl === 'number' &&\n                    typeof _this._options.tokenRefreshMs === 'number') {\n                    var ttlMs = payload.token.ttl * 1000;\n                    var timeoutMs = Math.max(0, ttlMs - _this._options.tokenRefreshMs);\n                    _this._tokenWillExpireTimeout = setTimeout(function () {\n                        _this._log.debug('#tokenWillExpire');\n                        _this.emit('tokenWillExpire', _this);\n                        if (_this._tokenWillExpireTimeout) {\n                            clearTimeout(_this._tokenWillExpireTimeout);\n                            _this._tokenWillExpireTimeout = null;\n                        }\n                    }, timeoutMs);\n                }\n            }\n            var preferredURIs = _this._getChunderws() || (0, regions_1.getChunderURIs)(_this._edge);\n            if (preferredURIs.length > 0) {\n                var preferredURI = preferredURIs[0];\n                _this._preferredURI = (0, regions_1.createSignalingEndpointURL)(preferredURI);\n            }\n            else {\n                _this._log.warn('Could not parse a preferred URI from the stream#connected event.');\n            }\n            // The signaling stream emits a `connected` event after reconnection, if the\n            // device was registered before this, then register again.\n            if (_this._shouldReRegister) {\n                _this.register();\n            }\n        };\n        /**\n         * Called when an 'error' event is received from the signaling stream.\n         */\n        _this._onSignalingError = function (payload) {\n            if (typeof payload !== 'object') {\n                _this._log.warn('Invalid signaling error payload', payload);\n                return;\n            }\n            var originalError = payload.error, callsid = payload.callsid, voiceeventsid = payload.voiceeventsid;\n            // voiceeventsid is for call message events which are handled in the call object\n            // missing originalError shouldn't be possible but check here to fail properly\n            if (typeof originalError !== 'object' || !!voiceeventsid) {\n                _this._log.warn('Ignoring signaling error payload', { originalError: originalError, voiceeventsid: voiceeventsid });\n                return;\n            }\n            var call = (typeof callsid === 'string' && _this._findCall(callsid)) || undefined;\n            var code = originalError.code, customMessage = originalError.message;\n            var twilioError = originalError.twilioError;\n            if (typeof code === 'number') {\n                if (code === 31201) {\n                    twilioError = new errors_1.AuthorizationErrors.AuthenticationFailed(originalError);\n                }\n                else if (code === 31204) {\n                    twilioError = new errors_1.AuthorizationErrors.AccessTokenInvalid(originalError);\n                }\n                else if (code === 31205) {\n                    // Stop trying to register presence after token expires\n                    _this._stopRegistrationTimer();\n                    twilioError = new errors_1.AuthorizationErrors.AccessTokenExpired(originalError);\n                }\n                else {\n                    var errorConstructor = (0, errors_1.getPreciseSignalingErrorByCode)(!!_this._options.enableImprovedSignalingErrorPrecision, code);\n                    if (typeof errorConstructor !== 'undefined') {\n                        twilioError = new errorConstructor(originalError);\n                    }\n                }\n            }\n            if (!twilioError) {\n                _this._log.error('Unknown signaling error: ', originalError);\n                twilioError = new errors_1.GeneralErrors.UnknownError(customMessage, originalError);\n            }\n            _this._log.error('Received error: ', twilioError);\n            _this._log.debug('#error', originalError);\n            _this.emit(Device.EventName.Error, twilioError, call);\n        };\n        /**\n         * Called when an 'invite' event is received from the signaling stream.\n         */\n        _this._onSignalingInvite = function (payload) { return __awaiter(_this, void 0, void 0, function () {\n            var wasBusy, callParameters, customParameters, call, play;\n            var _this = this;\n            var _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        wasBusy = !!this._activeCall;\n                        if (wasBusy && !this._options.allowIncomingWhileBusy) {\n                            this._log.info('Device busy; ignoring incoming invite');\n                            return [2 /*return*/];\n                        }\n                        if (!payload.callsid || !payload.sdp) {\n                            this._log.debug('#error', payload);\n                            this.emit(Device.EventName.Error, new errors_1.ClientErrors.BadRequest('Malformed invite from gateway'));\n                            return [2 /*return*/];\n                        }\n                        callParameters = payload.parameters || {};\n                        callParameters.CallSid = callParameters.CallSid || payload.callsid;\n                        customParameters = Object.assign({}, (0, util_1.queryToJson)(callParameters.Params));\n                        this._makeCallPromise = this._makeCall(customParameters, {\n                            callParameters: callParameters,\n                            enableImprovedSignalingErrorPrecision: !!this._options.enableImprovedSignalingErrorPrecision,\n                            offerSdp: payload.sdp,\n                            reconnectToken: payload.reconnect,\n                            voiceEventSidGenerator: this._options.voiceEventSidGenerator,\n                        });\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, , 3, 4]);\n                        return [4 /*yield*/, this._makeCallPromise];\n                    case 2:\n                        call = _b.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        this._makeCallPromise = null;\n                        return [7 /*endfinally*/];\n                    case 4:\n                        this._calls.push(call);\n                        call.once('accept', function () {\n                            _this._soundcache.get(Device.SoundName.Incoming).stop();\n                            _this._publishNetworkChange();\n                        });\n                        play = (((_a = this._audio) === null || _a === void 0 ? void 0 : _a.incoming()) && !wasBusy)\n                            ? function () { return _this._soundcache.get(Device.SoundName.Incoming).play(); }\n                            : function () { return Promise.resolve(); };\n                        this._showIncomingCall(call, play);\n                        return [2 /*return*/];\n                }\n            });\n        }); };\n        /**\n         * Called when an 'offline' event is received from the signaling stream.\n         */\n        _this._onSignalingOffline = function () {\n            _this._log.info('Stream is offline');\n            _this._edge = null;\n            _this._region = null;\n            _this._shouldReRegister = _this.state !== Device.State.Unregistered;\n            _this._setState(Device.State.Unregistered);\n        };\n        /**\n         * Called when a 'ready' event is received from the signaling stream.\n         */\n        _this._onSignalingReady = function () {\n            _this._log.info('Stream is ready');\n            _this._setState(Device.State.Registered);\n        };\n        /**\n         * Publish a NetworkInformation#change event to Insights if there's an active {@link Call}.\n         */\n        _this._publishNetworkChange = function () {\n            if (!_this._activeCall) {\n                return;\n            }\n            if (_this._networkInformation) {\n                _this._publisher.info('network-information', 'network-change', {\n                    connection_type: _this._networkInformation.type,\n                    downlink: _this._networkInformation.downlink,\n                    downlinkMax: _this._networkInformation.downlinkMax,\n                    effective_type: _this._networkInformation.effectiveType,\n                    rtt: _this._networkInformation.rtt,\n                }, _this._activeCall);\n            }\n        };\n        /**\n         * Update the input stream being used for calls so that any current call and all future calls\n         * will use the new input stream.\n         * @param inputStream\n         */\n        _this._updateInputStream = function (inputStream) {\n            var call = _this._activeCall;\n            if (call && !inputStream) {\n                return Promise.reject(new errors_1.InvalidStateError('Cannot unset input device while a call is in progress.'));\n            }\n            _this._callInputStream = inputStream;\n            return call\n                ? call._setInputTracksFromStream(inputStream)\n                : Promise.resolve();\n        };\n        /**\n         * Update the device IDs of output devices being used to play sounds through.\n         * @param type - Whether to update ringtone or speaker sounds\n         * @param sinkIds - An array of device IDs\n         */\n        _this._updateSinkIds = function (type, sinkIds) {\n            var promise = type === 'ringtone'\n                ? _this._updateRingtoneSinkIds(sinkIds)\n                : _this._updateSpeakerSinkIds(sinkIds);\n            return promise.then(function () {\n                _this._publisher.info('audio', \"\".concat(type, \"-devices-set\"), {\n                    audio_device_ids: sinkIds,\n                }, _this._activeCall);\n            }, function (error) {\n                _this._publisher.error('audio', \"\".concat(type, \"-devices-set-failed\"), {\n                    audio_device_ids: sinkIds,\n                    message: error.message,\n                }, _this._activeCall);\n                throw error;\n            });\n        };\n        // Setup loglevel asap to avoid missed logs\n        _this._setupLoglevel(options.logLevel);\n        _this._logOptions('constructor', options);\n        _this.updateToken(token);\n        if ((0, util_1.isLegacyEdge)()) {\n            throw new errors_1.NotSupportedError('Microsoft Edge Legacy (https://support.microsoft.com/en-us/help/4533505/what-is-microsoft-edge-legacy) ' +\n                'is deprecated and will not be able to connect to Twilio to make or receive calls after September 1st, 2020. ' +\n                'Please see this documentation for a list of supported browsers ' +\n                'https://www.twilio.com/docs/voice/client/javascript#supported-browsers');\n        }\n        if (!Device.isSupported && options.ignoreBrowserSupport) {\n            if (window && window.location && window.location.protocol === 'http:') {\n                throw new errors_1.NotSupportedError(\"twilio.js wasn't able to find WebRTC browser support.           This is most likely because this page is served over http rather than https,           which does not support WebRTC in many browsers. Please load this page over https and           try again.\");\n            }\n            throw new errors_1.NotSupportedError(\"twilio.js 1.3+ SDKs require WebRTC browser support.         For more information, see <https://www.twilio.com/docs/api/client/twilio-js>.         If you have any questions about this announcement, please contact         Twilio Support at <help@twilio.com>.\");\n        }\n        var root = globalThis;\n        var browser = root.msBrowser || root.browser || root.chrome;\n        _this._isBrowserExtension = (!!browser && !!browser.runtime && !!browser.runtime.id)\n            || (!!root.safari && !!root.safari.extension);\n        if (_this._isBrowserExtension) {\n            _this._log.info('Running as browser extension.');\n        }\n        if (navigator) {\n            var n = navigator;\n            _this._networkInformation = n.connection\n                || n.mozConnection\n                || n.webkitConnection;\n        }\n        if (_this._networkInformation && typeof _this._networkInformation.addEventListener === 'function') {\n            _this._networkInformation.addEventListener('change', _this._publishNetworkChange);\n        }\n        Device._getOrCreateAudioContext();\n        if (Device._audioContext) {\n            if (!Device._dialtonePlayer) {\n                Device._dialtonePlayer = new dialtonePlayer_1.default(Device._audioContext);\n            }\n        }\n        if (typeof Device._isUnifiedPlanDefault === 'undefined') {\n            Device._isUnifiedPlanDefault = typeof window !== 'undefined'\n                && typeof RTCPeerConnection !== 'undefined'\n                && typeof RTCRtpTransceiver !== 'undefined'\n                ? (0, util_1.isUnifiedPlanDefault)(window, window.navigator, RTCPeerConnection, RTCRtpTransceiver)\n                : false;\n        }\n        _this._boundDestroy = _this.destroy.bind(_this);\n        _this._boundConfirmClose = _this._confirmClose.bind(_this);\n        if (typeof window !== 'undefined' && window.addEventListener) {\n            window.addEventListener('unload', _this._boundDestroy);\n            window.addEventListener('pagehide', _this._boundDestroy);\n        }\n        _this.updateOptions(options);\n        return _this;\n    }\n    Object.defineProperty(Device, \"audioContext\", {\n        /**\n         * The AudioContext to be used by {@link Device} instances.\n         * @private\n         */\n        get: function () {\n            return Device._audioContext;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device, \"extension\", {\n        /**\n         * Which sound file extension is supported.\n         * @private\n         */\n        get: function () {\n            // NOTE(mroberts): Node workaround.\n            var a = typeof document !== 'undefined'\n                ? document.createElement('audio') : { canPlayType: false };\n            var canPlayMp3;\n            try {\n                canPlayMp3 = a.canPlayType && !!a.canPlayType('audio/mpeg').replace(/no/, '');\n            }\n            catch (e) {\n                canPlayMp3 = false;\n            }\n            var canPlayVorbis;\n            try {\n                canPlayVorbis = a.canPlayType && !!a.canPlayType('audio/ogg;codecs=\\'vorbis\\'').replace(/no/, '');\n            }\n            catch (e) {\n                canPlayVorbis = false;\n            }\n            return (canPlayVorbis && !canPlayMp3) ? 'ogg' : 'mp3';\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device, \"isSupported\", {\n        /**\n         * Whether or not this SDK is supported by the current browser.\n         */\n        get: function () { return rtc.enabled(); },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device, \"packageName\", {\n        /**\n         * Package name of the SDK.\n         */\n        get: function () { return C.PACKAGE_NAME; },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Run some tests to identify issues, if any, prohibiting successful calling.\n     * @param token - A Twilio JWT token string\n     * @param options\n     */\n    Device.runPreflight = function (token, options) {\n        return new preflight_1.PreflightTest(token, __assign({ audioContext: Device._getOrCreateAudioContext() }, options));\n    };\n    /**\n     * String representation of {@link Device} class.\n     * @private\n     */\n    Device.toString = function () {\n        return '[Twilio.Device class]';\n    };\n    Object.defineProperty(Device, \"version\", {\n        /**\n         * Current SDK version.\n         */\n        get: function () { return C.RELEASE_VERSION; },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Initializes the AudioContext instance shared across the Voice SDK,\n     * or returns the existing instance if one has already been initialized.\n     */\n    Device._getOrCreateAudioContext = function () {\n        if (!Device._audioContext) {\n            if (typeof AudioContext !== 'undefined') {\n                Device._audioContext = new AudioContext();\n            }\n            else if (typeof webkitAudioContext !== 'undefined') {\n                Device._audioContext = new webkitAudioContext();\n            }\n        }\n        return Device._audioContext;\n    };\n    Object.defineProperty(Device.prototype, \"audio\", {\n        /**\n         * Return the {@link AudioHelper} used by this {@link Device}.\n         */\n        get: function () {\n            return this._audio;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Make an outgoing Call.\n     * @param options\n     */\n    Device.prototype.connect = function () {\n        return __awaiter(this, arguments, void 0, function (options) {\n            var customParameters, parameters, signalingReconnectToken, connectTokenParts, isReconnect, twimlParams, callOptions, activeCall, _a;\n            if (options === void 0) { options = {}; }\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        this._log.debug('.connect', JSON.stringify(options));\n                        this._throwIfDestroyed();\n                        if (this._activeCall) {\n                            throw new errors_1.InvalidStateError('A Call is already active');\n                        }\n                        if (options.connectToken) {\n                            try {\n                                connectTokenParts = JSON.parse(decodeURIComponent(atob(options.connectToken)));\n                                customParameters = connectTokenParts.customParameters;\n                                parameters = connectTokenParts.parameters;\n                                signalingReconnectToken = connectTokenParts.signalingReconnectToken;\n                            }\n                            catch (_c) {\n                                throw new errors_1.InvalidArgumentError('Cannot parse connectToken');\n                            }\n                            if (!parameters || !parameters.CallSid || !signalingReconnectToken) {\n                                throw new errors_1.InvalidArgumentError('Invalid connectToken');\n                            }\n                        }\n                        isReconnect = false;\n                        twimlParams = {};\n                        callOptions = {\n                            enableImprovedSignalingErrorPrecision: !!this._options.enableImprovedSignalingErrorPrecision,\n                            rtcConfiguration: options.rtcConfiguration,\n                            voiceEventSidGenerator: this._options.voiceEventSidGenerator,\n                        };\n                        if (signalingReconnectToken && parameters) {\n                            isReconnect = true;\n                            callOptions.callParameters = parameters;\n                            callOptions.reconnectCallSid = parameters.CallSid;\n                            callOptions.reconnectToken = signalingReconnectToken;\n                            twimlParams = customParameters || twimlParams;\n                        }\n                        else {\n                            twimlParams = options.params || twimlParams;\n                        }\n                        this._makeCallPromise = this._makeCall(twimlParams, callOptions, isReconnect);\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, , 3, 4]);\n                        _a = this;\n                        return [4 /*yield*/, this._makeCallPromise];\n                    case 2:\n                        activeCall = _a._activeCall = _b.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        this._makeCallPromise = null;\n                        return [7 /*endfinally*/];\n                    case 4:\n                        // Make sure any incoming calls are ignored\n                        this._calls.splice(0).forEach(function (call) { return call.ignore(); });\n                        // Stop the incoming sound if it's playing\n                        this._soundcache.get(Device.SoundName.Incoming).stop();\n                        activeCall.accept({ rtcConstraints: options.rtcConstraints });\n                        this._publishNetworkChange();\n                        return [2 /*return*/, activeCall];\n                }\n            });\n        });\n    };\n    Object.defineProperty(Device.prototype, \"calls\", {\n        /**\n         * Return the calls that this {@link Device} is maintaining.\n         */\n        get: function () {\n            return this._calls;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Destroy the {@link Device}, freeing references to be garbage collected.\n     */\n    Device.prototype.destroy = function () {\n        var _a;\n        this._log.debug('.destroy');\n        this._log.debug('Rejecting any incoming calls');\n        var calls = this._calls.slice(0);\n        calls.forEach(function (call) { return call.reject(); });\n        this.disconnectAll();\n        this._stopRegistrationTimer();\n        this._destroyStream();\n        this._destroyAudioHelper();\n        (_a = this._audioProcessorEventObserver) === null || _a === void 0 ? void 0 : _a.destroy();\n        this._destroyPublisher();\n        if (this._networkInformation && typeof this._networkInformation.removeEventListener === 'function') {\n            this._networkInformation.removeEventListener('change', this._publishNetworkChange);\n        }\n        if (typeof window !== 'undefined' && window.removeEventListener) {\n            window.removeEventListener('beforeunload', this._boundConfirmClose);\n            window.removeEventListener('unload', this._boundDestroy);\n            window.removeEventListener('pagehide', this._boundDestroy);\n        }\n        this._setState(Device.State.Destroyed);\n        events_1.EventEmitter.prototype.removeAllListeners.call(this);\n    };\n    /**\n     * Disconnect all {@link Call}s.\n     */\n    Device.prototype.disconnectAll = function () {\n        this._log.debug('.disconnectAll');\n        var calls = this._calls.splice(0);\n        calls.forEach(function (call) { return call.disconnect(); });\n        if (this._activeCall) {\n            this._activeCall.disconnect();\n        }\n    };\n    Object.defineProperty(Device.prototype, \"edge\", {\n        /**\n         * Returns the {@link Edge} value the {@link Device} is currently connected\n         * to. The value will be `null` when the {@link Device} is offline.\n         */\n        get: function () {\n            return this._edge;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device.prototype, \"home\", {\n        /**\n         * Returns the home value the {@link Device} is currently connected\n         * to. The value will be `null` when the {@link Device} is offline.\n         */\n        get: function () {\n            return this._home;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device.prototype, \"identity\", {\n        /**\n         * Returns the identity associated with the {@link Device} for incoming calls. Only\n         * populated when registered.\n         */\n        get: function () {\n            return this._identity;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device.prototype, \"isBusy\", {\n        /**\n         * Whether the Device is currently on an active Call.\n         */\n        get: function () {\n            return !!this._activeCall;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Register the `Device` to the Twilio backend, allowing it to receive calls.\n     */\n    Device.prototype.register = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this._log.debug('.register');\n                        if (this.state !== Device.State.Unregistered) {\n                            throw new errors_1.InvalidStateError(\"Attempt to register when device is in state \\\"\".concat(this.state, \"\\\". \") +\n                                \"Must be \\\"\".concat(Device.State.Unregistered, \"\\\".\"));\n                        }\n                        this._shouldReRegister = false;\n                        this._setState(Device.State.Registering);\n                        return [4 /*yield*/, (this._streamConnectedPromise || this._setupStream())];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this._sendPresence(true)];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, (0, util_1.promisifyEvents)(this, Device.State.Registered, Device.State.Unregistered)];\n                    case 3:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Object.defineProperty(Device.prototype, \"state\", {\n        /**\n         * Get the state of this {@link Device} instance\n         */\n        get: function () {\n            return this._state;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Device.prototype, \"token\", {\n        /**\n         * Get the token used by this {@link Device}.\n         */\n        get: function () {\n            return this._token;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * String representation of {@link Device} instance.\n     * @private\n     */\n    Device.prototype.toString = function () {\n        return '[Twilio.Device instance]';\n    };\n    /**\n     * Unregister the `Device` to the Twilio backend, disallowing it to receive\n     * calls.\n     */\n    Device.prototype.unregister = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var stream, streamOfflinePromise;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this._log.debug('.unregister');\n                        if (this.state !== Device.State.Registered) {\n                            throw new errors_1.InvalidStateError(\"Attempt to unregister when device is in state \\\"\".concat(this.state, \"\\\". \") +\n                                \"Must be \\\"\".concat(Device.State.Registered, \"\\\".\"));\n                        }\n                        this._shouldReRegister = false;\n                        return [4 /*yield*/, this._streamConnectedPromise];\n                    case 1:\n                        stream = _a.sent();\n                        streamOfflinePromise = new Promise(function (resolve) {\n                            stream.on('offline', resolve);\n                        });\n                        return [4 /*yield*/, this._sendPresence(false)];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, streamOfflinePromise];\n                    case 3:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Set the options used within the {@link Device}.\n     * @param options\n     */\n    Device.prototype.updateOptions = function (options) {\n        if (options === void 0) { options = {}; }\n        this._logOptions('updateOptions', options);\n        if (this.state === Device.State.Destroyed) {\n            throw new errors_1.InvalidStateError(\"Attempt to \\\"updateOptions\\\" when device is in state \\\"\".concat(this.state, \"\\\".\"));\n        }\n        this._options = __assign(__assign(__assign({}, this._defaultOptions), this._options), options);\n        var originalChunderURIs = new Set(this._chunderURIs);\n        var newChunderURIs = this._chunderURIs = (this._getChunderws() || (0, regions_1.getChunderURIs)(this._options.edge)).map(regions_1.createSignalingEndpointURL);\n        var hasChunderURIsChanged = originalChunderURIs.size !== newChunderURIs.length;\n        if (!hasChunderURIsChanged) {\n            for (var _i = 0, newChunderURIs_1 = newChunderURIs; _i < newChunderURIs_1.length; _i++) {\n                var uri = newChunderURIs_1[_i];\n                if (!originalChunderURIs.has(uri)) {\n                    hasChunderURIsChanged = true;\n                    break;\n                }\n            }\n        }\n        if (this.isBusy && hasChunderURIsChanged) {\n            throw new errors_1.InvalidStateError('Cannot change Edge while on an active Call');\n        }\n        this._setupLoglevel(this._options.logLevel);\n        for (var _a = 0, _b = Object.keys(Device._defaultSounds); _a < _b.length; _a++) {\n            var name_1 = _b[_a];\n            var soundDef = Device._defaultSounds[name_1];\n            var defaultUrl = \"\".concat(C.SOUNDS_BASE_URL, \"/\").concat(soundDef.filename, \".\").concat(Device.extension)\n                + \"?cache=\".concat(C.RELEASE_VERSION);\n            var soundUrl = this._options.sounds && this._options.sounds[name_1] || defaultUrl;\n            var sound = new (this._options.Sound || sound_1.default)(name_1, soundUrl, {\n                audioContext: this._options.disableAudioContextSounds ? null : Device.audioContext,\n                maxDuration: soundDef.maxDuration,\n                shouldLoop: soundDef.shouldLoop,\n            });\n            this._soundcache.set(name_1, sound);\n        }\n        this._setupAudioHelper();\n        this._setupPublisher();\n        if (hasChunderURIsChanged && this._streamConnectedPromise) {\n            this._setupStream();\n        }\n        // Setup close protection and make sure we clean up ongoing calls on unload.\n        if (typeof window !== 'undefined' &&\n            typeof window.addEventListener === 'function' &&\n            this._options.closeProtection) {\n            window.removeEventListener('beforeunload', this._boundConfirmClose);\n            window.addEventListener('beforeunload', this._boundConfirmClose);\n        }\n    };\n    /**\n     * Update the token used by this {@link Device} to connect to Twilio.\n     * It is recommended to call this API after [[Device.tokenWillExpireEvent]] is emitted,\n     * and before or after a call to prevent a potential ~1s audio loss during the update process.\n     * @param token\n     */\n    Device.prototype.updateToken = function (token) {\n        this._log.debug('.updateToken');\n        if (this.state === Device.State.Destroyed) {\n            throw new errors_1.InvalidStateError(\"Attempt to \\\"updateToken\\\" when device is in state \\\"\".concat(this.state, \"\\\".\"));\n        }\n        if (typeof token !== 'string') {\n            throw new errors_1.InvalidArgumentError(INVALID_TOKEN_MESSAGE);\n        }\n        this._token = token;\n        if (this._stream) {\n            this._stream.setToken(this._token);\n        }\n        if (this._publisher) {\n            this._publisher.setToken(this._token);\n        }\n    };\n    /**\n     * Called on window's beforeunload event if closeProtection is enabled,\n     * preventing users from accidentally navigating away from an active call.\n     * @param event\n     */\n    Device.prototype._confirmClose = function (event) {\n        if (!this._activeCall) {\n            return '';\n        }\n        var closeProtection = this._options.closeProtection || false;\n        var confirmationMsg = typeof closeProtection !== 'string'\n            ? 'A call is currently in-progress. Leaving or reloading this page will end the call.'\n            : closeProtection;\n        (event || window.event).returnValue = confirmationMsg;\n        return confirmationMsg;\n    };\n    /**\n     * Destroy the AudioHelper.\n     */\n    Device.prototype._destroyAudioHelper = function () {\n        if (!this._audio) {\n            return;\n        }\n        this._audio._destroy();\n        this._audio = null;\n    };\n    /**\n     * Destroy the publisher.\n     */\n    Device.prototype._destroyPublisher = function () {\n        // Attempt to destroy non-existent publisher.\n        if (!this._publisher) {\n            return;\n        }\n        this._publisher = null;\n    };\n    /**\n     * Destroy the connection to the signaling server.\n     */\n    Device.prototype._destroyStream = function () {\n        if (this._stream) {\n            this._stream.removeListener('close', this._onSignalingClose);\n            this._stream.removeListener('connected', this._onSignalingConnected);\n            this._stream.removeListener('error', this._onSignalingError);\n            this._stream.removeListener('invite', this._onSignalingInvite);\n            this._stream.removeListener('offline', this._onSignalingOffline);\n            this._stream.removeListener('ready', this._onSignalingReady);\n            this._stream.destroy();\n            this._stream = null;\n        }\n        this._onSignalingOffline();\n        this._streamConnectedPromise = null;\n    };\n    /**\n     * Find a {@link Call} by its CallSid.\n     * @param callSid\n     */\n    Device.prototype._findCall = function (callSid) {\n        return this._calls.find(function (call) { return call.parameters.CallSid === callSid\n            || call.outboundConnectionId === callSid; }) || null;\n    };\n    /**\n     * Get chunderws array from the chunderw param\n     */\n    Device.prototype._getChunderws = function () {\n        return typeof this._options.chunderw === 'string' ? [this._options.chunderw]\n            : Array.isArray(this._options.chunderw) ? this._options.chunderw : null;\n    };\n    /**\n     * Utility function to log device options\n     */\n    Device.prototype._logOptions = function (caller, options) {\n        if (options === void 0) { options = {}; }\n        // Selectively log options that users can modify.\n        // Also, convert user overrides.\n        // This prevents potential app crash when calling JSON.stringify\n        // and when sending log strings remotely\n        var userOptions = [\n            'allowIncomingWhileBusy',\n            'appName',\n            'appVersion',\n            'closeProtection',\n            'codecPreferences',\n            'disableAudioContextSounds',\n            'dscp',\n            'edge',\n            'enableImprovedSignalingErrorPrecision',\n            'forceAggressiveIceNomination',\n            'logLevel',\n            'maxAverageBitrate',\n            'maxCallSignalingTimeoutMs',\n            'sounds',\n            'tokenRefreshMs',\n        ];\n        var userOptionOverrides = [\n            'RTCPeerConnection',\n            'enumerateDevices',\n            'getUserMedia',\n            'MediaStream',\n        ];\n        if (typeof options === 'object') {\n            var toLog_1 = __assign({}, options);\n            Object.keys(toLog_1).forEach(function (key) {\n                if (!userOptions.includes(key) && !userOptionOverrides.includes(key)) {\n                    delete toLog_1[key];\n                }\n                if (userOptionOverrides.includes(key)) {\n                    toLog_1[key] = true;\n                }\n            });\n            this._log.debug(\".\".concat(caller), JSON.stringify(toLog_1));\n        }\n    };\n    /**\n     * Create a new {@link Call}.\n     * @param twimlParams - A flat object containing key:value pairs to be sent to the TwiML app.\n     * @param options - Options to be used to instantiate the {@link Call}.\n     */\n    Device.prototype._makeCall = function (twimlParams_1, options_1) {\n        return __awaiter(this, arguments, void 0, function (twimlParams, options, isReconnect) {\n            var inputDevicePromise, config, maybeUnsetPreferredUri, call;\n            var _a;\n            var _this = this;\n            var _b;\n            if (isReconnect === void 0) { isReconnect = false; }\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        if (typeof Device._isUnifiedPlanDefault === 'undefined') {\n                            throw new errors_1.InvalidStateError('Device has not been initialized.');\n                        }\n                        inputDevicePromise = (_b = this._audio) === null || _b === void 0 ? void 0 : _b._getInputDevicePromise();\n                        if (!inputDevicePromise) return [3 /*break*/, 2];\n                        this._log.debug('inputDevicePromise detected, waiting...');\n                        return [4 /*yield*/, inputDevicePromise];\n                    case 1:\n                        _c.sent();\n                        this._log.debug('inputDevicePromise resolved');\n                        _c.label = 2;\n                    case 2:\n                        _a = {\n                            audioHelper: this._audio,\n                            isUnifiedPlanDefault: Device._isUnifiedPlanDefault,\n                            onIgnore: function () {\n                                _this._soundcache.get(Device.SoundName.Incoming).stop();\n                            }\n                        };\n                        return [4 /*yield*/, (this._streamConnectedPromise || this._setupStream())];\n                    case 3:\n                        config = (_a.pstream = _c.sent(),\n                            _a.publisher = this._publisher,\n                            _a.soundcache = this._soundcache,\n                            _a);\n                        options = Object.assign({\n                            MediaStream: this._options.MediaStream,\n                            RTCPeerConnection: this._options.RTCPeerConnection,\n                            beforeAccept: function (currentCall) {\n                                if (!_this._activeCall || _this._activeCall === currentCall) {\n                                    return;\n                                }\n                                _this._activeCall.disconnect();\n                                _this._removeCall(_this._activeCall);\n                            },\n                            codecPreferences: this._options.codecPreferences,\n                            customSounds: this._options.sounds,\n                            dialtonePlayer: Device._dialtonePlayer,\n                            dscp: this._options.dscp,\n                            // TODO(csantos): Remove forceAggressiveIceNomination option in 3.x\n                            forceAggressiveIceNomination: this._options.forceAggressiveIceNomination,\n                            getInputStream: function () { return _this._options.fileInputStream || _this._callInputStream; },\n                            getSinkIds: function () { return _this._callSinkIds; },\n                            maxAverageBitrate: this._options.maxAverageBitrate,\n                            preflight: this._options.preflight,\n                            rtcConstraints: this._options.rtcConstraints,\n                            shouldPlayDisconnect: function () { var _a; return (_a = _this._audio) === null || _a === void 0 ? void 0 : _a.disconnect(); },\n                            twimlParams: twimlParams,\n                            voiceEventSidGenerator: this._options.voiceEventSidGenerator,\n                        }, options);\n                        maybeUnsetPreferredUri = function () {\n                            if (!_this._stream) {\n                                _this._log.warn('UnsetPreferredUri called without a stream');\n                                return;\n                            }\n                            if (_this._activeCall === null && _this._calls.length === 0) {\n                                _this._stream.updatePreferredURI(null);\n                            }\n                        };\n                        call = new (this._options.Call || call_1.default)(config, options);\n                        this._publisher.info('settings', 'init', {\n                            MediaStream: !!this._options.MediaStream,\n                            RTCPeerConnection: !!this._options.RTCPeerConnection,\n                            enumerateDevices: !!this._options.enumerateDevices,\n                            getUserMedia: !!this._options.getUserMedia,\n                        }, call);\n                        call.once('accept', function () {\n                            var _a, _b, _c;\n                            _this._stream.updatePreferredURI(_this._preferredURI);\n                            _this._removeCall(call);\n                            _this._activeCall = call;\n                            if (_this._audio) {\n                                _this._audio._maybeStartPollingVolume();\n                            }\n                            if (call.direction === call_1.default.CallDirection.Outgoing && ((_a = _this._audio) === null || _a === void 0 ? void 0 : _a.outgoing()) && !isReconnect) {\n                                _this._soundcache.get(Device.SoundName.Outgoing).play();\n                            }\n                            var data = { edge: _this._edge || _this._region };\n                            if (_this._options.edge) {\n                                data['selected_edge'] = Array.isArray(_this._options.edge)\n                                    ? _this._options.edge\n                                    : [_this._options.edge];\n                            }\n                            _this._publisher.info('settings', 'edge', data, call);\n                            if ((_b = _this._audio) === null || _b === void 0 ? void 0 : _b.processedStream) {\n                                (_c = _this._audioProcessorEventObserver) === null || _c === void 0 ? void 0 : _c.emit('enabled');\n                            }\n                        });\n                        call.addListener('error', function (error) {\n                            if (call.status() === 'closed') {\n                                _this._removeCall(call);\n                                maybeUnsetPreferredUri();\n                            }\n                            if (_this._audio) {\n                                _this._audio._maybeStopPollingVolume();\n                            }\n                            _this._maybeStopIncomingSound();\n                        });\n                        call.once('cancel', function () {\n                            _this._log.info(\"Canceled: \".concat(call.parameters.CallSid));\n                            _this._removeCall(call);\n                            maybeUnsetPreferredUri();\n                            if (_this._audio) {\n                                _this._audio._maybeStopPollingVolume();\n                            }\n                            _this._maybeStopIncomingSound();\n                        });\n                        call.once('disconnect', function () {\n                            if (_this._audio) {\n                                _this._audio._maybeStopPollingVolume();\n                            }\n                            _this._removeCall(call);\n                            maybeUnsetPreferredUri();\n                            /**\n                             * NOTE(kamalbennani): We need to stop the incoming sound when the call is\n                             * disconnected right after the user has accepted the call (activeCall.accept()), and before\n                             * the call has been fully connected (i.e. before the `pstream.answer` event)\n                             */\n                            _this._maybeStopIncomingSound();\n                        });\n                        call.once('reject', function () {\n                            _this._log.info(\"Rejected: \".concat(call.parameters.CallSid));\n                            if (_this._audio) {\n                                _this._audio._maybeStopPollingVolume();\n                            }\n                            _this._removeCall(call);\n                            maybeUnsetPreferredUri();\n                            _this._maybeStopIncomingSound();\n                        });\n                        call.on('transportClose', function () {\n                            if (call.status() !== call_1.default.State.Pending) {\n                                return;\n                            }\n                            if (_this._audio) {\n                                _this._audio._maybeStopPollingVolume();\n                            }\n                            _this._removeCall(call);\n                            /**\n                             * NOTE(mhuynh): We don't want to call `maybeUnsetPreferredUri` because\n                             * a `transportClose` will happen during signaling reconnection.\n                             */\n                            _this._maybeStopIncomingSound();\n                        });\n                        return [2 /*return*/, call];\n                }\n            });\n        });\n    };\n    /**\n     * Stop the incoming sound if no {@link Call}s remain.\n     */\n    Device.prototype._maybeStopIncomingSound = function () {\n        if (!this._calls.length) {\n            this._soundcache.get(Device.SoundName.Incoming).stop();\n        }\n    };\n    /**\n     * Remove a {@link Call} from device.calls by reference\n     * @param call\n     */\n    Device.prototype._removeCall = function (call) {\n        if (this._activeCall === call) {\n            this._activeCall = null;\n            this._makeCallPromise = null;\n        }\n        for (var i = this._calls.length - 1; i >= 0; i--) {\n            if (call === this._calls[i]) {\n                this._calls.splice(i, 1);\n            }\n        }\n    };\n    /**\n     * Register with the signaling server.\n     */\n    Device.prototype._sendPresence = function (presence) {\n        return __awaiter(this, void 0, void 0, function () {\n            var stream;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this._streamConnectedPromise];\n                    case 1:\n                        stream = _a.sent();\n                        if (!stream) {\n                            return [2 /*return*/];\n                        }\n                        stream.register({ audio: presence });\n                        if (presence) {\n                            this._startRegistrationTimer();\n                        }\n                        else {\n                            this._stopRegistrationTimer();\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Helper function that sets and emits the state of the device.\n     * @param state The new state of the device.\n     */\n    Device.prototype._setState = function (state) {\n        if (state === this.state) {\n            return;\n        }\n        this._state = state;\n        var name = this._stateEventMapping[state];\n        this._log.debug(\"#\".concat(name));\n        this.emit(name);\n    };\n    /**\n     * Set up an audio helper for usage by this {@link Device}.\n     */\n    Device.prototype._setupAudioHelper = function () {\n        var _this = this;\n        if (!this._audioProcessorEventObserver) {\n            this._audioProcessorEventObserver = new audioprocessoreventobserver_1.AudioProcessorEventObserver();\n            this._audioProcessorEventObserver.on('event', function (_a) {\n                var name = _a.name, group = _a.group;\n                _this._publisher.info(group, name, {}, _this._activeCall);\n            });\n        }\n        var audioOptions = {\n            audioContext: Device.audioContext,\n            audioProcessorEventObserver: this._audioProcessorEventObserver,\n            beforeSetInputDevice: function () {\n                if (_this._makeCallPromise) {\n                    _this._log.debug('beforeSetInputDevice pause detected');\n                    return _this._makeCallPromise;\n                }\n                else {\n                    _this._log.debug('beforeSetInputDevice pause not detected, setting default');\n                    return Promise.resolve();\n                }\n            },\n            enumerateDevices: this._options.enumerateDevices,\n            getUserMedia: this._options.getUserMedia || getusermedia_1.default,\n        };\n        if (this._audio) {\n            this._log.info('Found existing audio helper; updating options...');\n            this._audio._updateUserOptions(audioOptions);\n            return;\n        }\n        this._audio = new (this._options.AudioHelper || audiohelper_1.default)(this._updateSinkIds, this._updateInputStream, audioOptions);\n        this._audio.on('deviceChange', function (lostActiveDevices) {\n            var activeCall = _this._activeCall;\n            var deviceIds = lostActiveDevices.map(function (device) { return device.deviceId; });\n            _this._publisher.info('audio', 'device-change', {\n                lost_active_device_ids: deviceIds,\n            }, activeCall);\n            if (activeCall) {\n                activeCall['_mediaHandler']._onInputDevicesChanged();\n            }\n        });\n    };\n    /**\n     * Setup logger's loglevel\n     */\n    Device.prototype._setupLoglevel = function (logLevel) {\n        var level = typeof logLevel === 'number' ||\n            typeof logLevel === 'string' ?\n            logLevel : loglevel_1.levels.ERROR;\n        this._log.setDefaultLevel(level);\n        this._log.info('Set logger default level to', level);\n    };\n    /**\n     * Create and set a publisher for the {@link Device} to use.\n     */\n    Device.prototype._setupPublisher = function () {\n        var _this = this;\n        if (this._publisher) {\n            this._log.info('Found existing publisher; destroying...');\n            this._destroyPublisher();\n        }\n        var publisherOptions = {\n            defaultPayload: this._createDefaultPayload,\n            metadata: {\n                app_name: this._options.appName,\n                app_version: this._options.appVersion,\n            },\n        };\n        if (this._options.eventgw) {\n            publisherOptions.host = this._options.eventgw;\n        }\n        if (this._home) {\n            publisherOptions.host = (0, regions_1.createEventGatewayURI)(this._home);\n        }\n        this._publisher = new (this._options.Publisher || eventpublisher_1.default)(PUBLISHER_PRODUCT_NAME, this.token, publisherOptions);\n        if (this._options.publishEvents === false) {\n            this._publisher.disable();\n        }\n        else {\n            this._publisher.on('error', function (error) {\n                _this._log.warn('Cannot connect to insights.', error);\n            });\n        }\n        return this._publisher;\n    };\n    /**\n     * Set up the connection to the signaling server. Tears down an existing\n     * stream if called while a stream exists.\n     */\n    Device.prototype._setupStream = function () {\n        var _this = this;\n        if (this._stream) {\n            this._log.info('Found existing stream; destroying...');\n            this._destroyStream();\n        }\n        this._log.info('Setting up VSP');\n        this._stream = new (this._options.PStream || pstream_1.default)(this.token, this._chunderURIs, {\n            backoffMaxMs: this._options.backoffMaxMs,\n            maxPreferredDurationMs: this._options.maxCallSignalingTimeoutMs,\n        });\n        this._stream.addListener('close', this._onSignalingClose);\n        this._stream.addListener('connected', this._onSignalingConnected);\n        this._stream.addListener('error', this._onSignalingError);\n        this._stream.addListener('invite', this._onSignalingInvite);\n        this._stream.addListener('offline', this._onSignalingOffline);\n        this._stream.addListener('ready', this._onSignalingReady);\n        return this._streamConnectedPromise =\n            (0, util_1.promisifyEvents)(this._stream, 'connected', 'close').then(function () { return _this._stream; });\n    };\n    /**\n     * Start playing the incoming ringtone, and subsequently emit the incoming event.\n     * @param call\n     * @param play - The function to be used to play the sound. Must return a Promise.\n     */\n    Device.prototype._showIncomingCall = function (call, play) {\n        var _this = this;\n        var timeout;\n        return Promise.race([\n            play(),\n            new Promise(function (resolve, reject) {\n                timeout = setTimeout(function () {\n                    var msg = 'Playing incoming ringtone took too long; it might not play. Continuing execution...';\n                    reject(new Error(msg));\n                }, RINGTONE_PLAY_TIMEOUT);\n            }),\n        ]).catch(function (reason) {\n            _this._log.warn(reason.message);\n        }).then(function () {\n            clearTimeout(timeout);\n            _this._log.debug('#incoming', JSON.stringify({\n                customParameters: call.customParameters,\n                parameters: call.parameters,\n            }));\n            _this.emit(Device.EventName.Incoming, call);\n        });\n    };\n    /**\n     * Set a timeout to send another register message to the signaling server.\n     */\n    Device.prototype._startRegistrationTimer = function () {\n        var _this = this;\n        this._stopRegistrationTimer();\n        this._regTimer = setTimeout(function () {\n            _this._sendPresence(true);\n        }, REGISTRATION_INTERVAL);\n    };\n    /**\n     * Stop sending registration messages to the signaling server.\n     */\n    Device.prototype._stopRegistrationTimer = function () {\n        if (this._regTimer) {\n            clearTimeout(this._regTimer);\n        }\n    };\n    /**\n     * Throw an error if the {@link Device} is destroyed.\n     */\n    Device.prototype._throwIfDestroyed = function () {\n        if (this.state === Device.State.Destroyed) {\n            throw new errors_1.InvalidStateError('Device has been destroyed.');\n        }\n    };\n    /**\n     * Update the device IDs of output devices being used to play the incoming ringtone through.\n     * @param sinkIds - An array of device IDs\n     */\n    Device.prototype._updateRingtoneSinkIds = function (sinkIds) {\n        return Promise.resolve(this._soundcache.get(Device.SoundName.Incoming).setSinkIds(sinkIds));\n    };\n    /**\n     * Update the device IDs of output devices being used to play the non-ringtone sounds\n     * and Call audio through.\n     * @param sinkIds - An array of device IDs\n     */\n    Device.prototype._updateSpeakerSinkIds = function (sinkIds) {\n        Array.from(this._soundcache.entries())\n            .filter(function (entry) { return entry[0] !== Device.SoundName.Incoming; })\n            .forEach(function (entry) { return entry[1].setSinkIds(sinkIds); });\n        this._callSinkIds = sinkIds;\n        var call = this._activeCall;\n        return call\n            ? call._setSinkIds(sinkIds)\n            : Promise.resolve();\n    };\n    Device._defaultSounds = {\n        disconnect: { filename: 'disconnect', maxDuration: 3000 },\n        dtmf0: { filename: 'dtmf-0', maxDuration: 1000 },\n        dtmf1: { filename: 'dtmf-1', maxDuration: 1000 },\n        dtmf2: { filename: 'dtmf-2', maxDuration: 1000 },\n        dtmf3: { filename: 'dtmf-3', maxDuration: 1000 },\n        dtmf4: { filename: 'dtmf-4', maxDuration: 1000 },\n        dtmf5: { filename: 'dtmf-5', maxDuration: 1000 },\n        dtmf6: { filename: 'dtmf-6', maxDuration: 1000 },\n        dtmf7: { filename: 'dtmf-7', maxDuration: 1000 },\n        dtmf8: { filename: 'dtmf-8', maxDuration: 1000 },\n        dtmf9: { filename: 'dtmf-9', maxDuration: 1000 },\n        dtmfh: { filename: 'dtmf-hash', maxDuration: 1000 },\n        dtmfs: { filename: 'dtmf-star', maxDuration: 1000 },\n        incoming: { filename: 'incoming', shouldLoop: true },\n        outgoing: { filename: 'outgoing', maxDuration: 3000 },\n    };\n    return Device;\n}(events_1.EventEmitter));\n/**\n * @mergeModuleWith Device\n */\n(function (Device) {\n    /**\n     * All valid {@link Device} event names.\n     */\n    var EventName;\n    (function (EventName) {\n        EventName[\"Error\"] = \"error\";\n        EventName[\"Incoming\"] = \"incoming\";\n        EventName[\"Destroyed\"] = \"destroyed\";\n        EventName[\"Unregistered\"] = \"unregistered\";\n        EventName[\"Registering\"] = \"registering\";\n        EventName[\"Registered\"] = \"registered\";\n        EventName[\"TokenWillExpire\"] = \"tokenWillExpire\";\n    })(EventName = Device.EventName || (Device.EventName = {}));\n    /**\n     * All possible {@link Device} states.\n     */\n    var State;\n    (function (State) {\n        State[\"Destroyed\"] = \"destroyed\";\n        State[\"Unregistered\"] = \"unregistered\";\n        State[\"Registering\"] = \"registering\";\n        State[\"Registered\"] = \"registered\";\n    })(State = Device.State || (Device.State = {}));\n    /**\n     * Names of all sounds handled by the {@link Device}.\n     */\n    var SoundName;\n    (function (SoundName) {\n        SoundName[\"Incoming\"] = \"incoming\";\n        SoundName[\"Outgoing\"] = \"outgoing\";\n        SoundName[\"Disconnect\"] = \"disconnect\";\n        SoundName[\"Dtmf0\"] = \"dtmf0\";\n        SoundName[\"Dtmf1\"] = \"dtmf1\";\n        SoundName[\"Dtmf2\"] = \"dtmf2\";\n        SoundName[\"Dtmf3\"] = \"dtmf3\";\n        SoundName[\"Dtmf4\"] = \"dtmf4\";\n        SoundName[\"Dtmf5\"] = \"dtmf5\";\n        SoundName[\"Dtmf6\"] = \"dtmf6\";\n        SoundName[\"Dtmf7\"] = \"dtmf7\";\n        SoundName[\"Dtmf8\"] = \"dtmf8\";\n        SoundName[\"Dtmf9\"] = \"dtmf9\";\n        SoundName[\"DtmfS\"] = \"dtmfs\";\n        SoundName[\"DtmfH\"] = \"dtmfh\";\n    })(SoundName = Device.SoundName || (Device.SoundName = {}));\n})(Device || (Device = {}));\nexports.default = Device;\n\n},{\"./audiohelper\":3,\"./audioprocessoreventobserver\":7,\"./call\":9,\"./constants\":10,\"./dialtonePlayer\":13,\"./errors\":15,\"./eventpublisher\":17,\"./log\":18,\"./preflight/preflight\":20,\"./pstream\":21,\"./regions\":22,\"./rtc\":26,\"./rtc/getusermedia\":24,\"./sid\":34,\"./sound\":35,\"./util\":37,\"events\":39,\"loglevel\":40}],13:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar errors_1 = require(\"./errors\");\n/**\n * A Map of DTMF Sound Names to their mock frequency pairs.\n */\nvar bandFrequencies = {\n    dtmf0: [1360, 960],\n    dtmf1: [1230, 720],\n    dtmf2: [1360, 720],\n    dtmf3: [1480, 720],\n    dtmf4: [1230, 790],\n    dtmf5: [1360, 790],\n    dtmf6: [1480, 790],\n    dtmf7: [1230, 870],\n    dtmf8: [1360, 870],\n    dtmf9: [1480, 870],\n    dtmfh: [1480, 960],\n    dtmfs: [1230, 960],\n};\nvar DialtonePlayer = /** @class */ (function () {\n    function DialtonePlayer(_context) {\n        var _this = this;\n        this._context = _context;\n        /**\n         * Gain nodes, reducing the frequency.\n         */\n        this._gainNodes = [];\n        this._gainNodes = [\n            this._context.createGain(),\n            this._context.createGain(),\n        ];\n        this._gainNodes.forEach(function (gainNode) {\n            gainNode.connect(_this._context.destination);\n            gainNode.gain.value = 0.1;\n            _this._gainNodes.push(gainNode);\n        });\n    }\n    DialtonePlayer.prototype.cleanup = function () {\n        this._gainNodes.forEach(function (gainNode) {\n            gainNode.disconnect();\n        });\n    };\n    /**\n     * Play the dual frequency tone for the passed DTMF name.\n     * @param sound\n     */\n    DialtonePlayer.prototype.play = function (sound) {\n        var _this = this;\n        var frequencies = bandFrequencies[sound];\n        if (!frequencies) {\n            throw new errors_1.InvalidArgumentError('Invalid DTMF sound name');\n        }\n        var oscillators = [\n            this._context.createOscillator(),\n            this._context.createOscillator(),\n        ];\n        oscillators.forEach(function (oscillator, i) {\n            oscillator.type = 'sine';\n            oscillator.frequency.value = frequencies[i];\n            oscillator.connect(_this._gainNodes[i]);\n            oscillator.start();\n            oscillator.stop(_this._context.currentTime + 0.1);\n            oscillator.addEventListener('ended', function () { return oscillator.disconnect(); });\n        });\n    };\n    return DialtonePlayer;\n}());\nexports.default = DialtonePlayer;\n\n},{\"./errors\":15}],14:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errorsByCode = exports.MediaErrors = exports.SignalingErrors = exports.UserMediaErrors = exports.MalformedRequestErrors = exports.GeneralErrors = exports.SIPServerErrors = exports.ClientErrors = exports.SignatureValidationErrors = exports.AuthorizationErrors = exports.TwilioError = void 0;\n/* tslint:disable max-classes-per-file max-line-length */\n/**\n * This is a generated file. Any modifications here will be overwritten. See scripts/errors.js.\n */\nvar twilioError_1 = require(\"./twilioError\");\nexports.TwilioError = twilioError_1.default;\nvar AuthorizationErrors;\n(function (AuthorizationErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AccessTokenInvalid = /** @class */ (function (_super) {\n        __extends(AccessTokenInvalid, _super);\n        /**\n         * @internal\n         */\n        function AccessTokenInvalid(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 20101;\n            _this.description = 'Invalid access token';\n            _this.explanation = 'Twilio was unable to validate your Access Token';\n            _this.name = 'AccessTokenInvalid';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.AccessTokenInvalid.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AccessTokenInvalid;\n    }(twilioError_1.default));\n    AuthorizationErrors.AccessTokenInvalid = AccessTokenInvalid;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AccessTokenExpired = /** @class */ (function (_super) {\n        __extends(AccessTokenExpired, _super);\n        /**\n         * @internal\n         */\n        function AccessTokenExpired(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 20104;\n            _this.description = 'Access token expired or expiration date invalid';\n            _this.explanation = 'The Access Token provided to the Twilio API has expired, the expiration time specified in the token was invalid, or the expiration time specified was too far in the future';\n            _this.name = 'AccessTokenExpired';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.AccessTokenExpired.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AccessTokenExpired;\n    }(twilioError_1.default));\n    AuthorizationErrors.AccessTokenExpired = AccessTokenExpired;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AuthenticationFailed = /** @class */ (function (_super) {\n        __extends(AuthenticationFailed, _super);\n        /**\n         * @internal\n         */\n        function AuthenticationFailed(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 20151;\n            _this.description = 'Authentication Failed';\n            _this.explanation = 'The Authentication with the provided JWT failed';\n            _this.name = 'AuthenticationFailed';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.AuthenticationFailed.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AuthenticationFailed;\n    }(twilioError_1.default));\n    AuthorizationErrors.AuthenticationFailed = AuthenticationFailed;\n})(AuthorizationErrors || (exports.AuthorizationErrors = AuthorizationErrors = {}));\nvar SignatureValidationErrors;\n(function (SignatureValidationErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AccessTokenSignatureValidationFailed = /** @class */ (function (_super) {\n        __extends(AccessTokenSignatureValidationFailed, _super);\n        /**\n         * @internal\n         */\n        function AccessTokenSignatureValidationFailed(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The access token has an invalid Account SID, API Key, or API Key Secret.',\n            ];\n            _this.code = 31202;\n            _this.description = 'Signature validation failed.';\n            _this.explanation = 'The provided access token failed signature validation.';\n            _this.name = 'AccessTokenSignatureValidationFailed';\n            _this.solutions = [\n                'Ensure the Account SID, API Key, and API Key Secret are valid when generating your access token.',\n            ];\n            Object.setPrototypeOf(_this, SignatureValidationErrors.AccessTokenSignatureValidationFailed.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AccessTokenSignatureValidationFailed;\n    }(twilioError_1.default));\n    SignatureValidationErrors.AccessTokenSignatureValidationFailed = AccessTokenSignatureValidationFailed;\n})(SignatureValidationErrors || (exports.SignatureValidationErrors = SignatureValidationErrors = {}));\nvar ClientErrors;\n(function (ClientErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var BadRequest = /** @class */ (function (_super) {\n        __extends(BadRequest, _super);\n        /**\n         * @internal\n         */\n        function BadRequest(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31400;\n            _this.description = 'Bad Request (HTTP/SIP)';\n            _this.explanation = 'The request could not be understood due to malformed syntax.';\n            _this.name = 'BadRequest';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, ClientErrors.BadRequest.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return BadRequest;\n    }(twilioError_1.default));\n    ClientErrors.BadRequest = BadRequest;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var NotFound = /** @class */ (function (_super) {\n        __extends(NotFound, _super);\n        /**\n         * @internal\n         */\n        function NotFound(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The outbound call was made to an invalid phone number.',\n                'The TwiML application sid is missing a Voice URL.',\n            ];\n            _this.code = 31404;\n            _this.description = 'Not Found (HTTP/SIP)';\n            _this.explanation = 'The server has not found anything matching the request.';\n            _this.name = 'NotFound';\n            _this.solutions = [\n                'Ensure the phone number dialed is valid.',\n                'Ensure the TwiML application is configured correctly with a Voice URL link.',\n            ];\n            Object.setPrototypeOf(_this, ClientErrors.NotFound.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return NotFound;\n    }(twilioError_1.default));\n    ClientErrors.NotFound = NotFound;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var TemporarilyUnavailable = /** @class */ (function (_super) {\n        __extends(TemporarilyUnavailable, _super);\n        /**\n         * @internal\n         */\n        function TemporarilyUnavailable(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31480;\n            _this.description = 'Temporarily Unavailable (SIP)';\n            _this.explanation = 'The callee is currently unavailable.';\n            _this.name = 'TemporarilyUnavailable';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, ClientErrors.TemporarilyUnavailable.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return TemporarilyUnavailable;\n    }(twilioError_1.default));\n    ClientErrors.TemporarilyUnavailable = TemporarilyUnavailable;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var BusyHere = /** @class */ (function (_super) {\n        __extends(BusyHere, _super);\n        /**\n         * @internal\n         */\n        function BusyHere(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31486;\n            _this.description = 'Busy Here (SIP)';\n            _this.explanation = 'The callee is busy.';\n            _this.name = 'BusyHere';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, ClientErrors.BusyHere.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return BusyHere;\n    }(twilioError_1.default));\n    ClientErrors.BusyHere = BusyHere;\n})(ClientErrors || (exports.ClientErrors = ClientErrors = {}));\nvar SIPServerErrors;\n(function (SIPServerErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var Decline = /** @class */ (function (_super) {\n        __extends(Decline, _super);\n        /**\n         * @internal\n         */\n        function Decline(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31603;\n            _this.description = 'Decline (SIP)';\n            _this.explanation = 'The callee does not wish to participate in the call.';\n            _this.name = 'Decline';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, SIPServerErrors.Decline.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return Decline;\n    }(twilioError_1.default));\n    SIPServerErrors.Decline = Decline;\n})(SIPServerErrors || (exports.SIPServerErrors = SIPServerErrors = {}));\nvar GeneralErrors;\n(function (GeneralErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var UnknownError = /** @class */ (function (_super) {\n        __extends(UnknownError, _super);\n        /**\n         * @internal\n         */\n        function UnknownError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31000;\n            _this.description = 'Unknown Error';\n            _this.explanation = 'An unknown error has occurred. See error details for more information.';\n            _this.name = 'UnknownError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.UnknownError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return UnknownError;\n    }(twilioError_1.default));\n    GeneralErrors.UnknownError = UnknownError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ApplicationNotFoundError = /** @class */ (function (_super) {\n        __extends(ApplicationNotFoundError, _super);\n        /**\n         * @internal\n         */\n        function ApplicationNotFoundError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31001;\n            _this.description = 'Application Not Found';\n            _this.explanation = '';\n            _this.name = 'ApplicationNotFoundError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.ApplicationNotFoundError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ApplicationNotFoundError;\n    }(twilioError_1.default));\n    GeneralErrors.ApplicationNotFoundError = ApplicationNotFoundError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ConnectionDeclinedError = /** @class */ (function (_super) {\n        __extends(ConnectionDeclinedError, _super);\n        /**\n         * @internal\n         */\n        function ConnectionDeclinedError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31002;\n            _this.description = 'Connection Declined';\n            _this.explanation = '';\n            _this.name = 'ConnectionDeclinedError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.ConnectionDeclinedError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ConnectionDeclinedError;\n    }(twilioError_1.default));\n    GeneralErrors.ConnectionDeclinedError = ConnectionDeclinedError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ConnectionTimeoutError = /** @class */ (function (_super) {\n        __extends(ConnectionTimeoutError, _super);\n        /**\n         * @internal\n         */\n        function ConnectionTimeoutError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31003;\n            _this.description = 'Connection Timeout';\n            _this.explanation = 'The server could not produce a response within a suitable amount of time.';\n            _this.name = 'ConnectionTimeoutError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.ConnectionTimeoutError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ConnectionTimeoutError;\n    }(twilioError_1.default));\n    GeneralErrors.ConnectionTimeoutError = ConnectionTimeoutError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ConnectionError = /** @class */ (function (_super) {\n        __extends(ConnectionError, _super);\n        /**\n         * @internal\n         */\n        function ConnectionError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31005;\n            _this.description = 'Connection error';\n            _this.explanation = 'A connection error occurred during the call';\n            _this.name = 'ConnectionError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.ConnectionError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ConnectionError;\n    }(twilioError_1.default));\n    GeneralErrors.ConnectionError = ConnectionError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var CallCancelledError = /** @class */ (function (_super) {\n        __extends(CallCancelledError, _super);\n        /**\n         * @internal\n         */\n        function CallCancelledError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The incoming call was cancelled because it was not answered in time or it was accepted/rejected by another application instance registered with the same identity.',\n            ];\n            _this.code = 31008;\n            _this.description = 'Call cancelled';\n            _this.explanation = 'Unable to answer because the call has ended';\n            _this.name = 'CallCancelledError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.CallCancelledError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return CallCancelledError;\n    }(twilioError_1.default));\n    GeneralErrors.CallCancelledError = CallCancelledError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var TransportError = /** @class */ (function (_super) {\n        __extends(TransportError, _super);\n        /**\n         * @internal\n         */\n        function TransportError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31009;\n            _this.description = 'Transport error';\n            _this.explanation = 'No transport available to send or receive messages';\n            _this.name = 'TransportError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, GeneralErrors.TransportError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return TransportError;\n    }(twilioError_1.default));\n    GeneralErrors.TransportError = TransportError;\n})(GeneralErrors || (exports.GeneralErrors = GeneralErrors = {}));\nvar MalformedRequestErrors;\n(function (MalformedRequestErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var MalformedRequestError = /** @class */ (function (_super) {\n        __extends(MalformedRequestError, _super);\n        /**\n         * @internal\n         */\n        function MalformedRequestError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'Invalid content or MessageType passed to sendMessage method.',\n            ];\n            _this.code = 31100;\n            _this.description = 'The request had malformed syntax.';\n            _this.explanation = 'The request could not be understood due to malformed syntax.';\n            _this.name = 'MalformedRequestError';\n            _this.solutions = [\n                'Ensure content and MessageType passed to sendMessage method are valid.',\n            ];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.MalformedRequestError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return MalformedRequestError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.MalformedRequestError = MalformedRequestError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var MissingParameterArrayError = /** @class */ (function (_super) {\n        __extends(MissingParameterArrayError, _super);\n        /**\n         * @internal\n         */\n        function MissingParameterArrayError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31101;\n            _this.description = 'Missing parameter array in request';\n            _this.explanation = '';\n            _this.name = 'MissingParameterArrayError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.MissingParameterArrayError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return MissingParameterArrayError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.MissingParameterArrayError = MissingParameterArrayError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AuthorizationTokenMissingError = /** @class */ (function (_super) {\n        __extends(AuthorizationTokenMissingError, _super);\n        /**\n         * @internal\n         */\n        function AuthorizationTokenMissingError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31102;\n            _this.description = 'Authorization token missing in request.';\n            _this.explanation = '';\n            _this.name = 'AuthorizationTokenMissingError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.AuthorizationTokenMissingError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AuthorizationTokenMissingError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.AuthorizationTokenMissingError = AuthorizationTokenMissingError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var MaxParameterLengthExceededError = /** @class */ (function (_super) {\n        __extends(MaxParameterLengthExceededError, _super);\n        /**\n         * @internal\n         */\n        function MaxParameterLengthExceededError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31103;\n            _this.description = 'Maximum parameter length has been exceeded.';\n            _this.explanation = 'Length of parameters cannot exceed MAX_PARAM_LENGTH.';\n            _this.name = 'MaxParameterLengthExceededError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.MaxParameterLengthExceededError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return MaxParameterLengthExceededError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.MaxParameterLengthExceededError = MaxParameterLengthExceededError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var InvalidBridgeTokenError = /** @class */ (function (_super) {\n        __extends(InvalidBridgeTokenError, _super);\n        /**\n         * @internal\n         */\n        function InvalidBridgeTokenError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31104;\n            _this.description = 'Invalid bridge token';\n            _this.explanation = '';\n            _this.name = 'InvalidBridgeTokenError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.InvalidBridgeTokenError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return InvalidBridgeTokenError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.InvalidBridgeTokenError = InvalidBridgeTokenError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var InvalidClientNameError = /** @class */ (function (_super) {\n        __extends(InvalidClientNameError, _super);\n        /**\n         * @internal\n         */\n        function InvalidClientNameError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'Client name contains invalid characters.',\n            ];\n            _this.code = 31105;\n            _this.description = 'Invalid client name';\n            _this.explanation = 'Client name should not contain control, space, delims, or unwise characters.';\n            _this.name = 'InvalidClientNameError';\n            _this.solutions = [\n                'Make sure that client name does not contain any of the invalid characters.',\n            ];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.InvalidClientNameError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return InvalidClientNameError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.InvalidClientNameError = InvalidClientNameError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ReconnectParameterInvalidError = /** @class */ (function (_super) {\n        __extends(ReconnectParameterInvalidError, _super);\n        /**\n         * @internal\n         */\n        function ReconnectParameterInvalidError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31107;\n            _this.description = 'The reconnect parameter is invalid';\n            _this.explanation = '';\n            _this.name = 'ReconnectParameterInvalidError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, MalformedRequestErrors.ReconnectParameterInvalidError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ReconnectParameterInvalidError;\n    }(twilioError_1.default));\n    MalformedRequestErrors.ReconnectParameterInvalidError = ReconnectParameterInvalidError;\n})(MalformedRequestErrors || (exports.MalformedRequestErrors = MalformedRequestErrors = {}));\n(function (AuthorizationErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AuthorizationError = /** @class */ (function (_super) {\n        __extends(AuthorizationError, _super);\n        /**\n         * @internal\n         */\n        function AuthorizationError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31201;\n            _this.description = 'Authorization error';\n            _this.explanation = 'The request requires user authentication. The server understood the request, but is refusing to fulfill it.';\n            _this.name = 'AuthorizationError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.AuthorizationError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AuthorizationError;\n    }(twilioError_1.default));\n    AuthorizationErrors.AuthorizationError = AuthorizationError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var NoValidAccountError = /** @class */ (function (_super) {\n        __extends(NoValidAccountError, _super);\n        /**\n         * @internal\n         */\n        function NoValidAccountError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31203;\n            _this.description = 'No valid account';\n            _this.explanation = '';\n            _this.name = 'NoValidAccountError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.NoValidAccountError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return NoValidAccountError;\n    }(twilioError_1.default));\n    AuthorizationErrors.NoValidAccountError = NoValidAccountError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var InvalidJWTTokenError = /** @class */ (function (_super) {\n        __extends(InvalidJWTTokenError, _super);\n        /**\n         * @internal\n         */\n        function InvalidJWTTokenError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31204;\n            _this.description = 'Invalid JWT token';\n            _this.explanation = '';\n            _this.name = 'InvalidJWTTokenError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.InvalidJWTTokenError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return InvalidJWTTokenError;\n    }(twilioError_1.default));\n    AuthorizationErrors.InvalidJWTTokenError = InvalidJWTTokenError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var JWTTokenExpiredError = /** @class */ (function (_super) {\n        __extends(JWTTokenExpiredError, _super);\n        /**\n         * @internal\n         */\n        function JWTTokenExpiredError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31205;\n            _this.description = 'JWT token expired';\n            _this.explanation = '';\n            _this.name = 'JWTTokenExpiredError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.JWTTokenExpiredError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return JWTTokenExpiredError;\n    }(twilioError_1.default));\n    AuthorizationErrors.JWTTokenExpiredError = JWTTokenExpiredError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var RateExceededError = /** @class */ (function (_super) {\n        __extends(RateExceededError, _super);\n        /**\n         * @internal\n         */\n        function RateExceededError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'Rate limit exceeded.',\n            ];\n            _this.code = 31206;\n            _this.description = 'Rate exceeded authorized limit.';\n            _this.explanation = 'The request performed exceeds the authorized limit.';\n            _this.name = 'RateExceededError';\n            _this.solutions = [\n                'Ensure message send rate does not exceed authorized limits.',\n            ];\n            Object.setPrototypeOf(_this, AuthorizationErrors.RateExceededError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return RateExceededError;\n    }(twilioError_1.default));\n    AuthorizationErrors.RateExceededError = RateExceededError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var JWTTokenExpirationTooLongError = /** @class */ (function (_super) {\n        __extends(JWTTokenExpirationTooLongError, _super);\n        /**\n         * @internal\n         */\n        function JWTTokenExpirationTooLongError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31207;\n            _this.description = 'JWT token expiration too long';\n            _this.explanation = '';\n            _this.name = 'JWTTokenExpirationTooLongError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.JWTTokenExpirationTooLongError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return JWTTokenExpirationTooLongError;\n    }(twilioError_1.default));\n    AuthorizationErrors.JWTTokenExpirationTooLongError = JWTTokenExpirationTooLongError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ReconnectAttemptError = /** @class */ (function (_super) {\n        __extends(ReconnectAttemptError, _super);\n        /**\n         * @internal\n         */\n        function ReconnectAttemptError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 31209;\n            _this.description = 'Reconnect attempt is not authorized.';\n            _this.explanation = '';\n            _this.name = 'ReconnectAttemptError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, AuthorizationErrors.ReconnectAttemptError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ReconnectAttemptError;\n    }(twilioError_1.default));\n    AuthorizationErrors.ReconnectAttemptError = ReconnectAttemptError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var CallMessageEventTypeInvalidError = /** @class */ (function (_super) {\n        __extends(CallMessageEventTypeInvalidError, _super);\n        /**\n         * @internal\n         */\n        function CallMessageEventTypeInvalidError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The Call Message Event Type is invalid and is not understood by Twilio Voice.',\n            ];\n            _this.code = 31210;\n            _this.description = 'Call Message Event Type is invalid.';\n            _this.explanation = 'The Call Message Event Type is invalid and is not understood by Twilio Voice.';\n            _this.name = 'CallMessageEventTypeInvalidError';\n            _this.solutions = [\n                'Ensure the Call Message Event Type is Valid and understood by Twilio Voice and try again.',\n            ];\n            Object.setPrototypeOf(_this, AuthorizationErrors.CallMessageEventTypeInvalidError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return CallMessageEventTypeInvalidError;\n    }(twilioError_1.default));\n    AuthorizationErrors.CallMessageEventTypeInvalidError = CallMessageEventTypeInvalidError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var PayloadSizeExceededError = /** @class */ (function (_super) {\n        __extends(PayloadSizeExceededError, _super);\n        /**\n         * @internal\n         */\n        function PayloadSizeExceededError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The payload size of Call Message Event exceeds the authorized limit.',\n            ];\n            _this.code = 31212;\n            _this.description = 'Call Message Event Payload size exceeded authorized limit.';\n            _this.explanation = 'The request performed to send a Call Message Event exceeds the payload size authorized limit';\n            _this.name = 'PayloadSizeExceededError';\n            _this.solutions = [\n                'Reduce payload size of Call Message Event to be within the authorized limit and try again.',\n            ];\n            Object.setPrototypeOf(_this, AuthorizationErrors.PayloadSizeExceededError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return PayloadSizeExceededError;\n    }(twilioError_1.default));\n    AuthorizationErrors.PayloadSizeExceededError = PayloadSizeExceededError;\n})(AuthorizationErrors || (exports.AuthorizationErrors = AuthorizationErrors = {}));\nvar UserMediaErrors;\n(function (UserMediaErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var PermissionDeniedError = /** @class */ (function (_super) {\n        __extends(PermissionDeniedError, _super);\n        /**\n         * @internal\n         */\n        function PermissionDeniedError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The user denied the getUserMedia request.',\n                'The browser denied the getUserMedia request.',\n            ];\n            _this.code = 31401;\n            _this.description = 'UserMedia Permission Denied Error';\n            _this.explanation = 'The browser or end-user denied permissions to user media. Therefore we were unable to acquire input audio.';\n            _this.name = 'PermissionDeniedError';\n            _this.solutions = [\n                'The user should accept the request next time prompted. If the browser saved the deny, the user should change that permission in their browser.',\n                'The user should to verify that the browser has permission to access the microphone at this address.',\n            ];\n            Object.setPrototypeOf(_this, UserMediaErrors.PermissionDeniedError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return PermissionDeniedError;\n    }(twilioError_1.default));\n    UserMediaErrors.PermissionDeniedError = PermissionDeniedError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var AcquisitionFailedError = /** @class */ (function (_super) {\n        __extends(AcquisitionFailedError, _super);\n        /**\n         * @internal\n         */\n        function AcquisitionFailedError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'NotFoundError - The deviceID specified was not found.',\n                'The getUserMedia constraints were overconstrained and no devices matched.',\n            ];\n            _this.code = 31402;\n            _this.description = 'UserMedia Acquisition Failed Error';\n            _this.explanation = 'The browser and end-user allowed permissions, however getting the media failed. Usually this is due to bad constraints, but can sometimes fail due to browser, OS or hardware issues.';\n            _this.name = 'AcquisitionFailedError';\n            _this.solutions = [\n                'Ensure the deviceID being specified exists.',\n                'Try acquiring media with fewer constraints.',\n            ];\n            Object.setPrototypeOf(_this, UserMediaErrors.AcquisitionFailedError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return AcquisitionFailedError;\n    }(twilioError_1.default));\n    UserMediaErrors.AcquisitionFailedError = AcquisitionFailedError;\n})(UserMediaErrors || (exports.UserMediaErrors = UserMediaErrors = {}));\nvar SignalingErrors;\n(function (SignalingErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ConnectionError = /** @class */ (function (_super) {\n        __extends(ConnectionError, _super);\n        /**\n         * @internal\n         */\n        function ConnectionError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [];\n            _this.code = 53000;\n            _this.description = 'Signaling connection error';\n            _this.explanation = 'Raised whenever a signaling connection error occurs that is not covered by a more specific error code.';\n            _this.name = 'ConnectionError';\n            _this.solutions = [];\n            Object.setPrototypeOf(_this, SignalingErrors.ConnectionError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ConnectionError;\n    }(twilioError_1.default));\n    SignalingErrors.ConnectionError = ConnectionError;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ConnectionDisconnected = /** @class */ (function (_super) {\n        __extends(ConnectionDisconnected, _super);\n        /**\n         * @internal\n         */\n        function ConnectionDisconnected(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The device running your application lost its Internet connection.',\n            ];\n            _this.code = 53001;\n            _this.description = 'Signaling connection disconnected';\n            _this.explanation = 'Raised whenever the signaling connection is unexpectedly disconnected.';\n            _this.name = 'ConnectionDisconnected';\n            _this.solutions = [\n                'Ensure the device running your application has access to a stable Internet connection.',\n            ];\n            Object.setPrototypeOf(_this, SignalingErrors.ConnectionDisconnected.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ConnectionDisconnected;\n    }(twilioError_1.default));\n    SignalingErrors.ConnectionDisconnected = ConnectionDisconnected;\n})(SignalingErrors || (exports.SignalingErrors = SignalingErrors = {}));\nvar MediaErrors;\n(function (MediaErrors) {\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ClientLocalDescFailed = /** @class */ (function (_super) {\n        __extends(ClientLocalDescFailed, _super);\n        /**\n         * @internal\n         */\n        function ClientLocalDescFailed(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The Client may not be using a supported WebRTC implementation.',\n                'The Client may not have the necessary resources to create or apply a new media description.',\n            ];\n            _this.code = 53400;\n            _this.description = 'Client is unable to create or apply a local media description';\n            _this.explanation = 'Raised whenever a Client is unable to create or apply a local media description.';\n            _this.name = 'ClientLocalDescFailed';\n            _this.solutions = [\n                'If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.',\n            ];\n            Object.setPrototypeOf(_this, MediaErrors.ClientLocalDescFailed.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ClientLocalDescFailed;\n    }(twilioError_1.default));\n    MediaErrors.ClientLocalDescFailed = ClientLocalDescFailed;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ClientRemoteDescFailed = /** @class */ (function (_super) {\n        __extends(ClientRemoteDescFailed, _super);\n        /**\n         * @internal\n         */\n        function ClientRemoteDescFailed(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The Client may not be using a supported WebRTC implementation.',\n                'The Client may be connecting peer-to-peer with another Participant that is not using a supported WebRTC implementation.',\n                'The Client may not have the necessary resources to apply a new media description.',\n            ];\n            _this.code = 53402;\n            _this.description = 'Client is unable to apply a remote media description';\n            _this.explanation = 'Raised whenever the Client receives a remote media description but is unable to apply it.';\n            _this.name = 'ClientRemoteDescFailed';\n            _this.solutions = [\n                'If you are experiencing this error using the JavaScript SDK, ensure you are running it with a supported WebRTC implementation.',\n            ];\n            Object.setPrototypeOf(_this, MediaErrors.ClientRemoteDescFailed.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ClientRemoteDescFailed;\n    }(twilioError_1.default));\n    MediaErrors.ClientRemoteDescFailed = ClientRemoteDescFailed;\n    /**\n     * Error received from the Twilio backend.\n     */\n    var ConnectionError = /** @class */ (function (_super) {\n        __extends(ConnectionError, _super);\n        /**\n         * @internal\n         */\n        function ConnectionError(messageOrError, error) {\n            var _this = _super.call(this, messageOrError, error) || this;\n            _this.causes = [\n                'The Client was unable to establish a media connection.',\n                'A media connection which was active failed liveliness checks.',\n            ];\n            _this.code = 53405;\n            _this.description = 'Media connection failed';\n            _this.explanation = 'Raised by the Client or Server whenever a media connection fails.';\n            _this.name = 'ConnectionError';\n            _this.solutions = [\n                'If the problem persists, try connecting to another region.',\n                'Check your Client\\'s network connectivity.',\n                'If you\\'ve provided custom ICE Servers then ensure that the URLs and credentials are valid.',\n            ];\n            Object.setPrototypeOf(_this, MediaErrors.ConnectionError.prototype);\n            var message = typeof messageOrError === 'string'\n                ? messageOrError\n                : _this.explanation;\n            var originalError = typeof messageOrError === 'object'\n                ? messageOrError\n                : error;\n            _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n            _this.originalError = originalError;\n            return _this;\n        }\n        return ConnectionError;\n    }(twilioError_1.default));\n    MediaErrors.ConnectionError = ConnectionError;\n})(MediaErrors || (exports.MediaErrors = MediaErrors = {}));\n/**\n * @private\n */\nexports.errorsByCode = new Map([\n    [20101, AuthorizationErrors.AccessTokenInvalid],\n    [20104, AuthorizationErrors.AccessTokenExpired],\n    [20151, AuthorizationErrors.AuthenticationFailed],\n    [31202, SignatureValidationErrors.AccessTokenSignatureValidationFailed],\n    [31400, ClientErrors.BadRequest],\n    [31404, ClientErrors.NotFound],\n    [31480, ClientErrors.TemporarilyUnavailable],\n    [31486, ClientErrors.BusyHere],\n    [31603, SIPServerErrors.Decline],\n    [31000, GeneralErrors.UnknownError],\n    [31001, GeneralErrors.ApplicationNotFoundError],\n    [31002, GeneralErrors.ConnectionDeclinedError],\n    [31003, GeneralErrors.ConnectionTimeoutError],\n    [31005, GeneralErrors.ConnectionError],\n    [31008, GeneralErrors.CallCancelledError],\n    [31009, GeneralErrors.TransportError],\n    [31100, MalformedRequestErrors.MalformedRequestError],\n    [31101, MalformedRequestErrors.MissingParameterArrayError],\n    [31102, MalformedRequestErrors.AuthorizationTokenMissingError],\n    [31103, MalformedRequestErrors.MaxParameterLengthExceededError],\n    [31104, MalformedRequestErrors.InvalidBridgeTokenError],\n    [31105, MalformedRequestErrors.InvalidClientNameError],\n    [31107, MalformedRequestErrors.ReconnectParameterInvalidError],\n    [31201, AuthorizationErrors.AuthorizationError],\n    [31203, AuthorizationErrors.NoValidAccountError],\n    [31204, AuthorizationErrors.InvalidJWTTokenError],\n    [31205, AuthorizationErrors.JWTTokenExpiredError],\n    [31206, AuthorizationErrors.RateExceededError],\n    [31207, AuthorizationErrors.JWTTokenExpirationTooLongError],\n    [31209, AuthorizationErrors.ReconnectAttemptError],\n    [31210, AuthorizationErrors.CallMessageEventTypeInvalidError],\n    [31212, AuthorizationErrors.PayloadSizeExceededError],\n    [31401, UserMediaErrors.PermissionDeniedError],\n    [31402, UserMediaErrors.AcquisitionFailedError],\n    [53000, SignalingErrors.ConnectionError],\n    [53001, SignalingErrors.ConnectionDisconnected],\n    [53400, MediaErrors.ClientLocalDescFailed],\n    [53402, MediaErrors.ClientRemoteDescFailed],\n    [53405, MediaErrors.ConnectionError],\n]);\nObject.freeze(exports.errorsByCode);\n\n},{\"./twilioError\":16}],15:[function(require,module,exports){\n\"use strict\";\n/* tslint:disable max-classes-per-file */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UserMediaErrors = exports.TwilioError = exports.SIPServerErrors = exports.SignatureValidationErrors = exports.SignalingErrors = exports.MediaErrors = exports.MalformedRequestErrors = exports.GeneralErrors = exports.ClientErrors = exports.AuthorizationErrors = exports.NotSupportedError = exports.InvalidStateError = exports.InvalidArgumentError = void 0;\nexports.getPreciseSignalingErrorByCode = getPreciseSignalingErrorByCode;\nexports.getErrorByCode = getErrorByCode;\nexports.hasErrorByCode = hasErrorByCode;\n// TODO: Consider refactoring this export (VBLOCKS-4589)\nvar generated_1 = require(\"./generated\");\nObject.defineProperty(exports, \"AuthorizationErrors\", { enumerable: true, get: function () { return generated_1.AuthorizationErrors; } });\nObject.defineProperty(exports, \"ClientErrors\", { enumerable: true, get: function () { return generated_1.ClientErrors; } });\nObject.defineProperty(exports, \"GeneralErrors\", { enumerable: true, get: function () { return generated_1.GeneralErrors; } });\nObject.defineProperty(exports, \"MalformedRequestErrors\", { enumerable: true, get: function () { return generated_1.MalformedRequestErrors; } });\nObject.defineProperty(exports, \"MediaErrors\", { enumerable: true, get: function () { return generated_1.MediaErrors; } });\nObject.defineProperty(exports, \"SignalingErrors\", { enumerable: true, get: function () { return generated_1.SignalingErrors; } });\nObject.defineProperty(exports, \"SignatureValidationErrors\", { enumerable: true, get: function () { return generated_1.SignatureValidationErrors; } });\nObject.defineProperty(exports, \"SIPServerErrors\", { enumerable: true, get: function () { return generated_1.SIPServerErrors; } });\nObject.defineProperty(exports, \"TwilioError\", { enumerable: true, get: function () { return generated_1.TwilioError; } });\nObject.defineProperty(exports, \"UserMediaErrors\", { enumerable: true, get: function () { return generated_1.UserMediaErrors; } });\n/**\n * NOTE(mhuynh): Replacing generic error codes with new (more specific) codes,\n * is a breaking change. If an error code is found in this set, we only perform\n * the transformation if the feature flag is enabled.\n *\n * With every major version bump, such that we are allowed to introduce breaking\n * changes as per semver specification, this array should be cleared.\n *\n * TODO: [VBLOCKS-2295] Remove this in 3.x\n */\nvar PRECISE_SIGNALING_ERROR_CODES = new Set([\n    /**\n     * 310XX Errors\n     */\n    31001,\n    31002,\n    31003,\n    /**\n     * 311XX Errors\n     */\n    31101,\n    31102,\n    31103,\n    31104,\n    31105,\n    31107,\n    /**\n     * 312XX Errors\n     */\n    31201,\n    31202,\n    31203,\n    31204,\n    31205,\n    31207,\n    /**\n     * 314XX Errors\n     */\n    31404,\n    31480,\n    31486,\n    /**\n     * 316XX Errors\n     */\n    31603,\n]);\n/**\n * Get an error constructor using the [[PRECISE_SIGNALING_ERROR_CODES]] set.\n * @internal\n * @param enableImprovedSignalingErrorPrecision - A boolean representing the\n * optional flag whether or not to use more precise error codes.\n * @param errorCode - The error code.\n * @returns This function returns `undefined` if the passed error code does not\n * correlate to an error or should not be constructed with a more precise error\n * constructor. A sub-class of {@link TwilioError} if the code does correlate to\n * an error.\n */\nfunction getPreciseSignalingErrorByCode(enableImprovedSignalingErrorPrecision, errorCode) {\n    if (typeof errorCode !== 'number') {\n        return;\n    }\n    if (!hasErrorByCode(errorCode)) {\n        return;\n    }\n    var shouldTransform = enableImprovedSignalingErrorPrecision\n        ? true\n        : !PRECISE_SIGNALING_ERROR_CODES.has(errorCode);\n    if (!shouldTransform) {\n        return;\n    }\n    return getErrorByCode(errorCode);\n}\n/**\n * The error that is thrown when an invalid argument is passed to a library API.\n */\nvar InvalidArgumentError = /** @class */ (function (_super) {\n    __extends(InvalidArgumentError, _super);\n    /**\n     * @internal\n     */\n    function InvalidArgumentError(message) {\n        var _this = _super.call(this, message) || this;\n        _this.name = 'InvalidArgumentError';\n        return _this;\n    }\n    return InvalidArgumentError;\n}(Error));\nexports.InvalidArgumentError = InvalidArgumentError;\n/**\n * The error that is thrown when the library has entered an invalid state.\n */\nvar InvalidStateError = /** @class */ (function (_super) {\n    __extends(InvalidStateError, _super);\n    /**\n     * @internal\n     */\n    function InvalidStateError(message) {\n        var _this = _super.call(this, message) || this;\n        _this.name = 'InvalidStateError';\n        return _this;\n    }\n    return InvalidStateError;\n}(Error));\nexports.InvalidStateError = InvalidStateError;\n/**\n * The error that is thrown when an attempt is made to use an API that is not\n * supported on the current platform.\n */\nvar NotSupportedError = /** @class */ (function (_super) {\n    __extends(NotSupportedError, _super);\n    /**\n     * @internal\n     */\n    function NotSupportedError(message) {\n        var _this = _super.call(this, message) || this;\n        _this.name = 'NotSupportedError';\n        return _this;\n    }\n    return NotSupportedError;\n}(Error));\nexports.NotSupportedError = NotSupportedError;\n/**\n * This should only be used to look up error codes returned by a server\n * using the same repo of error codes.\n * @internal\n */\nfunction getErrorByCode(code) {\n    var error = generated_1.errorsByCode.get(code);\n    if (!error) {\n        throw new InvalidArgumentError(\"Error code \".concat(code, \" not found\"));\n    }\n    return error;\n}\n/**\n * This should only be used to look up error codes returned by a server\n * using the same repo of error codes.\n * @internal\n */\nfunction hasErrorByCode(code) {\n    return generated_1.errorsByCode.has(code);\n}\n\n},{\"./generated\":14}],16:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Base class for all possible errors that the library can receive from the\n * Twilio backend.\n */\nvar TwilioError = /** @class */ (function (_super) {\n    __extends(TwilioError, _super);\n    /**\n     * @internal\n     */\n    function TwilioError(messageOrError, error) {\n        var _this = _super.call(this) || this;\n        Object.setPrototypeOf(_this, TwilioError.prototype);\n        var message = typeof messageOrError === 'string'\n            ? messageOrError\n            : _this.explanation;\n        var originalError = typeof messageOrError === 'object'\n            ? messageOrError\n            : error;\n        _this.message = \"\".concat(_this.name, \" (\").concat(_this.code, \"): \").concat(message);\n        _this.originalError = originalError;\n        return _this;\n    }\n    return TwilioError;\n}(Error));\nexports.default = TwilioError;\n\n},{}],17:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar events_1 = require(\"events\");\nvar log_1 = require(\"./log\");\nvar request_1 = require(\"./request\");\n/**\n * Builds Endpoint Analytics (EA) event payloads and sends them to\n *   the EA server.\n * @constructor\n * @param {String} productName - Name of the product publishing events.\n * @param {String} token - The JWT token to use to authenticate with\n *   the EA server.\n * @param {EventPublisher.Options} options\n * @property {Boolean} isEnabled - Whether or not this publisher is publishing\n *   to the server. Currently ignores the request altogether, in the future this\n *   may store them in case publishing is re-enabled later. Defaults to true.\n */\n/**\n * @typedef {Object} EventPublisher.Options\n * @property {Object} [metadata=undefined] - A publisher_metadata object to send\n *   with each payload.\n * @property {String} [host='eventgw.twilio.com'] - The host address of the EA\n *   server to publish to.\n * @property {Object|Function} [defaultPayload] - A default payload to extend\n *   when creating and sending event payloads. Also takes a function that\n *   should return an object representing the default payload. This is\n *   useful for fields that should always be present when they are\n *   available, but are not always available.\n */\nvar EventPublisher = /** @class */ (function (_super) {\n    __extends(EventPublisher, _super);\n    function EventPublisher(productName, token, options) {\n        var _this = _super.call(this) || this;\n        if (!(_this instanceof EventPublisher)) {\n            return new EventPublisher(productName, token, options);\n        }\n        // Apply default options\n        options = Object.assign({ defaultPayload: function () { return {}; } }, options);\n        var defaultPayload = options.defaultPayload;\n        if (typeof defaultPayload !== 'function') {\n            defaultPayload = function () { return Object.assign({}, options.defaultPayload); };\n        }\n        var isEnabled = true;\n        var metadata = Object.assign({ app_name: undefined, app_version: undefined }, options.metadata);\n        Object.defineProperties(_this, {\n            _defaultPayload: { value: defaultPayload },\n            _host: { value: options.host, writable: true },\n            _isEnabled: {\n                get: function () { return isEnabled; },\n                set: function (_isEnabled) { isEnabled = _isEnabled; },\n            },\n            _log: { value: new log_1.default('EventPublisher') },\n            _request: { value: options.request || request_1.default, writable: true },\n            _token: { value: token, writable: true },\n            isEnabled: {\n                enumerable: true,\n                get: function () { return isEnabled; },\n            },\n            metadata: {\n                enumerable: true,\n                get: function () { return metadata; },\n            },\n            productName: { enumerable: true, value: productName },\n            token: {\n                enumerable: true,\n                get: function () { return this._token; },\n            },\n        });\n        return _this;\n    }\n    return EventPublisher;\n}(events_1.EventEmitter));\n/**\n * Post to an EA server.\n * @private\n * @param {String} endpointName - Endpoint to post the event to\n * @param {String} level - ['debug', 'info', 'warning', 'error']\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n *    onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @param {?Boolean} [force=false] - Whether or not to send this even if\n *    publishing is disabled.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype._post = function _post(endpointName, level, group, name, payload, connection, force) {\n    var _this = this;\n    if ((!this.isEnabled && !force) || !this._host) {\n        this._log.debug('Publishing cancelled', JSON.stringify({ isEnabled: this.isEnabled, force: force, host: this._host }));\n        return Promise.resolve();\n    }\n    if (!connection || ((!connection.parameters || !connection.parameters.CallSid) && !connection.outboundConnectionId)) {\n        if (!connection) {\n            this._log.debug('Publishing cancelled. Missing connection object');\n        }\n        else {\n            this._log.debug('Publishing cancelled. Missing connection info', JSON.stringify({\n                outboundConnectionId: connection.outboundConnectionId, parameters: connection.parameters,\n            }));\n        }\n        return Promise.resolve();\n    }\n    var event = {\n        group: group,\n        level: level.toUpperCase(),\n        name: name,\n        payload: (payload && payload.forEach) ?\n            payload.slice(0) : Object.assign(this._defaultPayload(connection), payload),\n        payload_type: 'application/json',\n        private: false,\n        publisher: this.productName,\n        timestamp: (new Date()).toISOString(),\n    };\n    if (this.metadata) {\n        event.publisher_metadata = this.metadata;\n    }\n    if (endpointName === 'EndpointEvents') {\n        this._log.debug('Publishing insights', JSON.stringify({ endpointName: endpointName, event: event, force: force, host: this._host }));\n    }\n    var requestParams = {\n        body: event,\n        headers: {\n            'Content-Type': 'application/json',\n            'X-Twilio-Token': this.token,\n        },\n        url: \"https://\".concat(this._host, \"/v4/\").concat(endpointName),\n    };\n    return new Promise(function (resolve, reject) {\n        _this._request.post(requestParams, function (err) {\n            if (err) {\n                _this.emit('error', err);\n                reject(err);\n            }\n            else {\n                resolve();\n            }\n        });\n    }).catch(function (e) {\n        _this._log.error(\"Unable to post \".concat(group, \" \").concat(name, \" event to Insights. Received error: \").concat(e));\n    });\n};\n/**\n * Post an event to the EA server. Use this method when the level\n *  is dynamic. Otherwise, it's better practice to use the sugar\n *  methods named for the specific level.\n * @param {String} level - ['debug', 'info', 'warning', 'error']\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n *    onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.post = function post(level, group, name, payload, connection, force) {\n    return this._post('EndpointEvents', level, group, name, payload, connection, force);\n};\n/**\n * Post a debug-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n *    onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.debug = function debug(group, name, payload, connection) {\n    return this.post('debug', group, name, payload, connection);\n};\n/**\n * Post an info-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n *    onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.info = function info(group, name, payload, connection) {\n    return this.post('info', group, name, payload, connection);\n};\n/**\n * Post a warning-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n *    onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.warn = function warn(group, name, payload, connection) {\n    return this.post('warning', group, name, payload, connection);\n};\n/**\n * Post an error-level event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {?Object} [payload=null] - The payload to pass. This will be extended\n *    onto the default payload object, if one exists.\n * @param {?Connection} [connection=null] - The {@link Connection} which is posting this payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.error = function error(group, name, payload, connection) {\n    return this.post('error', group, name, payload, connection);\n};\n/**\n * Post a metrics event to the EA server.\n * @param {String} group - The name of the group the event belongs to.\n * @param {String} name - The designated event name.\n * @param {Array<Object>} metrics - The metrics to post.\n * @param {?Object} [customFields] - Custom fields to append to each payload.\n * @returns {Promise} Fulfilled if the HTTP response is 20x.\n */\nEventPublisher.prototype.postMetrics = function postMetrics(group, name, metrics, customFields, connection) {\n    var _this = this;\n    return new Promise(function (resolve) {\n        var samples = metrics\n            .map(formatMetric)\n            .map(function (sample) { return Object.assign(sample, customFields); });\n        resolve(_this._post('EndpointMetrics', 'info', group, name, samples, connection));\n    });\n};\n/**\n * Update the host address of the insights server to publish to.\n * @param {String} host - The new host address of the insights server.\n */\nEventPublisher.prototype.setHost = function setHost(host) {\n    this._host = host;\n};\n/**\n * Update the token to use to authenticate requests.\n * @param {string} token\n * @returns {void}\n */\nEventPublisher.prototype.setToken = function setToken(token) {\n    this._token = token;\n};\n/**\n * Enable the publishing of events.\n */\nEventPublisher.prototype.enable = function enable() {\n    this._isEnabled = true;\n};\n/**\n * Disable the publishing of events.\n */\nEventPublisher.prototype.disable = function disable() {\n    this._isEnabled = false;\n};\nfunction formatMetric(sample) {\n    return {\n        audio_codec: sample.codecName,\n        audio_level_in: sample.audioInputLevel,\n        audio_level_out: sample.audioOutputLevel,\n        bytes_received: sample.bytesReceived,\n        bytes_sent: sample.bytesSent,\n        call_volume_input: sample.inputVolume,\n        call_volume_output: sample.outputVolume,\n        jitter: sample.jitter,\n        mos: sample.mos && (Math.round(sample.mos * 100) / 100),\n        packets_lost: sample.packetsLost,\n        packets_lost_fraction: sample.packetsLostFraction &&\n            (Math.round(sample.packetsLostFraction * 100) / 100),\n        packets_received: sample.packetsReceived,\n        rtt: sample.rtt,\n        timestamp: (new Date(sample.timestamp)).toISOString(),\n        total_bytes_received: sample.totals.bytesReceived,\n        total_bytes_sent: sample.totals.bytesSent,\n        total_packets_lost: sample.totals.packetsLost,\n        total_packets_received: sample.totals.packetsReceived,\n        total_packets_sent: sample.totals.packetsSent,\n    };\n}\nexports.default = EventPublisher;\n\n},{\"./log\":18,\"./request\":23,\"events\":39}],18:[function(require,module,exports){\n\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\nvar LogLevelModule = require(\"loglevel\");\nvar constants_1 = require(\"./constants\");\n/**\n * {@link Log} provides logging features throughout the sdk using loglevel module\n * See https://github.com/pimterry/loglevel for documentation\n * @private\n */\nvar Log = /** @class */ (function () {\n    /**\n     * @constructor\n     * @param [tag] - tag name for the logs\n     * @param [options] - Optional settings\n     */\n    function Log(tag, options) {\n        this._log = Log.getLogLevelInstance(options);\n        this._prefix = \"[TwilioVoice][\".concat(tag, \"]\");\n    }\n    /**\n     * Return the `loglevel` instance maintained internally.\n     * @param [options] - Optional settings\n     * @returns The `loglevel` instance.\n     */\n    Log.getLogLevelInstance = function (options) {\n        if (!Log.loglevelInstance) {\n            try {\n                Log.loglevelInstance = (options && options.LogLevelModule ? options.LogLevelModule : LogLevelModule).getLogger(constants_1.PACKAGE_NAME);\n            }\n            catch (_a) {\n                // tslint:disable-next-line\n                console.warn('Cannot create custom logger');\n                Log.loglevelInstance = console;\n            }\n        }\n        return Log.loglevelInstance;\n    };\n    /**\n     * Log a debug message\n     * @param args - Any number of arguments to be passed to loglevel.debug\n     */\n    Log.prototype.debug = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        (_a = this._log).debug.apply(_a, __spreadArray([this._prefix], args, false));\n    };\n    /**\n     * Log an error message\n     * @param args - Any number of arguments to be passed to loglevel.error\n     */\n    Log.prototype.error = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        (_a = this._log).error.apply(_a, __spreadArray([this._prefix], args, false));\n    };\n    /**\n     * Log an info message\n     * @param args - Any number of arguments to be passed to loglevel.info\n     */\n    Log.prototype.info = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        (_a = this._log).info.apply(_a, __spreadArray([this._prefix], args, false));\n    };\n    /**\n     * Set a default log level to disable all logging below the given level\n     */\n    Log.prototype.setDefaultLevel = function (level) {\n        if (this._log.setDefaultLevel) {\n            this._log.setDefaultLevel(level);\n        }\n        else {\n            // tslint:disable-next-line\n            console.warn('Logger cannot setDefaultLevel');\n        }\n    };\n    /**\n     * Log a warning message\n     * @param args - Any number of arguments to be passed to loglevel.warn\n     */\n    Log.prototype.warn = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        (_a = this._log).warn.apply(_a, __spreadArray([this._prefix], args, false));\n    };\n    /**\n     * Log levels\n     */\n    Log.levels = LogLevelModule.levels;\n    return Log;\n}());\nexports.Logger = Log.getLogLevelInstance();\nexports.default = Log;\n\n},{\"./constants\":10,\"loglevel\":40}],19:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"./constants\");\nvar errors_1 = require(\"./errors\");\nvar log_1 = require(\"./log\");\nvar DEFAULT_TEST_SOUND_URL = \"\".concat(constants_1.SOUNDS_BASE_URL, \"/outgoing.mp3\");\n/**\n * A smart collection containing a Set of active output devices.\n */\nvar OutputDeviceCollection = /** @class */ (function () {\n    /**\n     * @internal\n     */\n    function OutputDeviceCollection(_name, _availableDevices, _beforeChange, _isSupported) {\n        this._name = _name;\n        this._availableDevices = _availableDevices;\n        this._beforeChange = _beforeChange;\n        this._isSupported = _isSupported;\n        /**\n         * The currently active output devices.\n         */\n        this._activeDevices = new Set();\n        /**\n         * An instance of Logger to use.\n         */\n        this._log = new log_1.default('OutputDeviceCollection');\n    }\n    /**\n     * Delete a device from the collection. If no devices remain, the 'default'\n     * device will be added as the sole device. If no `default` device exists,\n     * the first available device will be used.\n     * @param device - The device to delete from the collection\n     * @returns whether the device was present before it was deleted\n     */\n    OutputDeviceCollection.prototype.delete = function (device) {\n        this._log.debug('.delete', device);\n        var wasDeleted = !!(this._activeDevices.delete(device));\n        var defaultDevice = this._availableDevices.get('default')\n            || Array.from(this._availableDevices.values())[0];\n        if (!this._activeDevices.size && defaultDevice) {\n            this._activeDevices.add(defaultDevice);\n        }\n        // Call _beforeChange so that the implementation can react when a device is\n        // removed or lost.\n        var deviceIds = Array.from(this._activeDevices.values()).map(function (deviceInfo) { return deviceInfo.deviceId; });\n        this._beforeChange(this._name, deviceIds);\n        return !!wasDeleted;\n    };\n    /**\n     * Get the current set of devices.\n     */\n    OutputDeviceCollection.prototype.get = function () {\n        return this._activeDevices;\n    };\n    /**\n     * Replace the current set of devices with a new set of devices.\n     * @param deviceIdOrIds - An ID or array of IDs of devices to replace the existing devices with.\n     * @returns Rejects if this feature is not supported, any of the supplied IDs are not found,\n     * or no IDs are passed.\n     */\n    OutputDeviceCollection.prototype.set = function (deviceIdOrIds) {\n        var _this = this;\n        this._log.debug('.set', deviceIdOrIds);\n        if (!this._isSupported) {\n            return Promise.reject(new errors_1.NotSupportedError('This browser does not support audio output selection'));\n        }\n        var deviceIds = Array.isArray(deviceIdOrIds) ? deviceIdOrIds : [deviceIdOrIds];\n        if (!deviceIds.length) {\n            return Promise.reject(new errors_1.InvalidArgumentError('Must specify at least one device to set'));\n        }\n        var missingIds = [];\n        var devices = deviceIds.map(function (id) {\n            var device = _this._availableDevices.get(id);\n            if (!device) {\n                missingIds.push(id);\n            }\n            return device;\n        });\n        if (missingIds.length) {\n            return Promise.reject(new errors_1.InvalidArgumentError(\"Devices not found: \".concat(missingIds.join(', '))));\n        }\n        return new Promise(function (resolve) {\n            resolve(_this._beforeChange(_this._name, deviceIds));\n        }).then(function () {\n            _this._activeDevices.clear();\n            devices.forEach(_this._activeDevices.add, _this._activeDevices);\n        });\n    };\n    /**\n     * Test the devices by playing audio through them.\n     * @param [soundUrl] - An optional URL. If none is specified, we will\n     *   play a default test tone.\n     * @returns Resolves with the result of the underlying HTMLAudioElements' play() calls.\n     */\n    OutputDeviceCollection.prototype.test = function (soundUrl) {\n        if (soundUrl === void 0) { soundUrl = DEFAULT_TEST_SOUND_URL; }\n        if (!this._isSupported) {\n            return Promise.reject(new errors_1.NotSupportedError('This browser does not support audio output selection'));\n        }\n        if (!this._activeDevices.size) {\n            return Promise.reject(new errors_1.InvalidStateError('No active output devices to test'));\n        }\n        return Promise.all(Array.from(this._activeDevices).map(function (device) {\n            var el;\n            // (rrowland) We need to wait for the oncanplay event because of a regression introduced\n            // in Chrome M72: https://bugs.chromium.org/p/chromium/issues/detail?id=930876\n            return new Promise(function (resolve) {\n                el = new Audio(soundUrl);\n                el.oncanplay = resolve;\n            }).then(function () { return el.setSinkId(device.deviceId).then(function () { return el.play(); }); });\n        }));\n    };\n    return OutputDeviceCollection;\n}());\nexports.default = OutputDeviceCollection;\n\n},{\"./constants\":10,\"./errors\":15,\"./log\":18}],20:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PreflightTest = void 0;\nvar events_1 = require(\"events\");\nvar call_1 = require(\"../call\");\nvar device_1 = require(\"../device\");\nvar errors_1 = require(\"../errors\");\nvar log_1 = require(\"../log\");\nvar stats_1 = require(\"../rtc/stats\");\nvar constants_1 = require(\"../constants\");\n/**\n * Runs some tests to identify issues, if any, prohibiting successful calling.\n */\nvar PreflightTest = /** @class */ (function (_super) {\n    __extends(PreflightTest, _super);\n    /**\n     * Construct a {@link PreflightTest} instance.\n     * @param token - A Twilio JWT token string.\n     * @param options\n     */\n    function PreflightTest(token, options) {\n        var _this = _super.call(this) || this;\n        /**\n         * Whether this test has already logged an insights-connection-warning.\n         */\n        _this._hasInsightsErrored = false;\n        /**\n         * An instance of Logger to use.\n         */\n        _this._log = new log_1.default('PreflightTest');\n        /**\n         * Network related timing measurements for this test\n         */\n        _this._networkTiming = {};\n        /**\n         * The options passed to {@link PreflightTest} constructor\n         */\n        _this._options = {\n            codecPreferences: [call_1.default.Codec.PCMU, call_1.default.Codec.Opus],\n            edge: 'roaming',\n            fakeMicInput: false,\n            logLevel: 'error',\n            signalingTimeoutMs: 10000,\n        };\n        /**\n         * Current status of this test\n         */\n        _this._status = PreflightTest.Status.Connecting;\n        Object.assign(_this._options, options);\n        _this._samples = [];\n        _this._warnings = [];\n        _this._startTime = Date.now();\n        _this._initDevice(token, __assign(__assign({}, _this._options), { fileInputStream: _this._options.fakeMicInput ?\n                _this._getStreamFromFile() : undefined }));\n        // Device sets the loglevel so start logging after initializing the device.\n        // Then selectively log options that users can modify.\n        var userOptions = [\n            'codecPreferences',\n            'edge',\n            'fakeMicInput',\n            'logLevel',\n            'signalingTimeoutMs',\n        ];\n        var userOptionOverrides = [\n            'audioContext',\n            'deviceFactory',\n            'fileInputStream',\n            'getRTCIceCandidateStatsReport',\n            'iceServers',\n            'rtcConfiguration',\n        ];\n        if (typeof options === 'object') {\n            var toLog_1 = __assign({}, options);\n            Object.keys(toLog_1).forEach(function (key) {\n                if (!userOptions.includes(key) && !userOptionOverrides.includes(key)) {\n                    delete toLog_1[key];\n                }\n                if (userOptionOverrides.includes(key)) {\n                    toLog_1[key] = true;\n                }\n            });\n            _this._log.debug('.constructor', JSON.stringify(toLog_1));\n        }\n        return _this;\n    }\n    /**\n     * Stops the current test and raises a failed event.\n     */\n    PreflightTest.prototype.stop = function () {\n        var _this = this;\n        this._log.debug('.stop');\n        var error = new errors_1.GeneralErrors.CallCancelledError();\n        if (this._device) {\n            this._device.once(device_1.default.EventName.Unregistered, function () { return _this._onFailed(error); });\n            this._device.destroy();\n        }\n        else {\n            this._onFailed(error);\n        }\n    };\n    /**\n     * Emit a {PreflightTest.Warning}\n     */\n    PreflightTest.prototype._emitWarning = function (name, description, rtcWarning) {\n        var warning = { name: name, description: description };\n        if (rtcWarning) {\n            warning.rtcWarning = rtcWarning;\n        }\n        this._warnings.push(warning);\n        this._log.debug(\"#\".concat(PreflightTest.Events.Warning), JSON.stringify(warning));\n        this.emit(PreflightTest.Events.Warning, warning);\n    };\n    /**\n     * Returns call quality base on the RTC Stats\n     */\n    PreflightTest.prototype._getCallQuality = function (mos) {\n        if (mos > 4.2) {\n            return PreflightTest.CallQuality.Excellent;\n        }\n        else if (mos >= 4.1 && mos <= 4.2) {\n            return PreflightTest.CallQuality.Great;\n        }\n        else if (mos >= 3.7 && mos <= 4) {\n            return PreflightTest.CallQuality.Good;\n        }\n        else if (mos >= 3.1 && mos <= 3.6) {\n            return PreflightTest.CallQuality.Fair;\n        }\n        else {\n            return PreflightTest.CallQuality.Degraded;\n        }\n    };\n    /**\n     * Returns the report for this test.\n     */\n    PreflightTest.prototype._getReport = function () {\n        var _a, _b, _c;\n        var stats = this._getRTCStats();\n        var testTiming = { start: this._startTime };\n        if (this._endTime) {\n            testTiming.end = this._endTime;\n            testTiming.duration = this._endTime - this._startTime;\n        }\n        var report = {\n            callSid: this._callSid,\n            edge: this._edge,\n            iceCandidateStats: (_b = (_a = this._rtcIceCandidateStatsReport) === null || _a === void 0 ? void 0 : _a.iceCandidateStats) !== null && _b !== void 0 ? _b : [],\n            networkTiming: this._networkTiming,\n            samples: this._samples,\n            selectedEdge: this._options.edge,\n            stats: stats,\n            testTiming: testTiming,\n            totals: this._getRTCSampleTotals(),\n            warnings: this._warnings,\n        };\n        var selectedIceCandidatePairStats = (_c = this._rtcIceCandidateStatsReport) === null || _c === void 0 ? void 0 : _c.selectedIceCandidatePairStats;\n        if (selectedIceCandidatePairStats) {\n            report.selectedIceCandidatePairStats = selectedIceCandidatePairStats;\n            report.isTurnRequired = selectedIceCandidatePairStats.localCandidate.candidateType === 'relay'\n                || selectedIceCandidatePairStats.remoteCandidate.candidateType === 'relay';\n        }\n        if (stats) {\n            report.callQuality = this._getCallQuality(stats.mos.average);\n        }\n        return report;\n    };\n    /**\n     * Returns RTC stats totals for this test\n     */\n    PreflightTest.prototype._getRTCSampleTotals = function () {\n        if (!this._latestSample) {\n            return;\n        }\n        return __assign({}, this._latestSample.totals);\n    };\n    /**\n     * Returns RTC related stats captured during the test call\n     */\n    PreflightTest.prototype._getRTCStats = function () {\n        var firstMosSampleIdx = this._samples.findIndex(function (sample) { return typeof sample.mos === 'number' && sample.mos > 0; });\n        var samples = firstMosSampleIdx >= 0\n            ? this._samples.slice(firstMosSampleIdx)\n            : [];\n        if (!samples || !samples.length) {\n            return;\n        }\n        return ['jitter', 'mos', 'rtt'].reduce(function (statObj, stat) {\n            var _a;\n            var values = samples.map(function (s) { return s[stat]; });\n            return __assign(__assign({}, statObj), (_a = {}, _a[stat] = {\n                average: Number((values.reduce(function (total, value) { return total + value; }) / values.length).toPrecision(5)),\n                max: Math.max.apply(Math, values),\n                min: Math.min.apply(Math, values),\n            }, _a));\n        }, {});\n    };\n    /**\n     * Returns a MediaStream from a media file\n     */\n    PreflightTest.prototype._getStreamFromFile = function () {\n        var audioContext = this._options.audioContext;\n        if (!audioContext) {\n            throw new errors_1.NotSupportedError('Cannot fake input audio stream: AudioContext is not supported by this browser.');\n        }\n        var audioEl = new Audio(constants_1.COWBELL_AUDIO_URL);\n        audioEl.addEventListener('canplaythrough', function () { return audioEl.play(); });\n        if (typeof audioEl.setAttribute === 'function') {\n            audioEl.setAttribute('crossorigin', 'anonymous');\n        }\n        var src = audioContext.createMediaElementSource(audioEl);\n        var dest = audioContext.createMediaStreamDestination();\n        src.connect(dest);\n        return dest.stream;\n    };\n    /**\n     * Initialize the device\n     */\n    PreflightTest.prototype._initDevice = function (token, options) {\n        var _this = this;\n        try {\n            this._device = new (options.deviceFactory || device_1.default)(token, {\n                chunderw: options.chunderw,\n                codecPreferences: options.codecPreferences,\n                edge: options.edge,\n                eventgw: options.eventgw,\n                fileInputStream: options.fileInputStream,\n                logLevel: options.logLevel,\n                preflight: true,\n            });\n            this._device.once(device_1.default.EventName.Registered, function () {\n                _this._onDeviceRegistered();\n            });\n            this._device.once(device_1.default.EventName.Error, function (error) {\n                _this._onDeviceError(error);\n            });\n            this._device.register();\n        }\n        catch (error) {\n            // We want to return before failing so the consumer can capture the event\n            setTimeout(function () {\n                _this._onFailed(error);\n            });\n            return;\n        }\n        this._signalingTimeoutTimer = setTimeout(function () {\n            _this._onDeviceError(new errors_1.SignalingErrors.ConnectionError('WebSocket Connection Timeout'));\n        }, options.signalingTimeoutMs);\n    };\n    /**\n     * Called on {@link Device} error event\n     * @param error\n     */\n    PreflightTest.prototype._onDeviceError = function (error) {\n        this._device.destroy();\n        this._onFailed(error);\n    };\n    /**\n     * Called on {@link Device} ready event\n     */\n    PreflightTest.prototype._onDeviceRegistered = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, audio, publisher;\n            var _this = this;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        clearTimeout(this._echoTimer);\n                        clearTimeout(this._signalingTimeoutTimer);\n                        _a = this;\n                        return [4 /*yield*/, this._device.connect({\n                                rtcConfiguration: this._options.rtcConfiguration,\n                            })];\n                    case 1:\n                        _a._call = _b.sent();\n                        this._networkTiming.signaling = { start: Date.now() };\n                        this._setupCallHandlers(this._call);\n                        this._edge = this._device.edge || undefined;\n                        if (this._options.fakeMicInput) {\n                            this._echoTimer = setTimeout(function () { return _this._device.disconnectAll(); }, constants_1.ECHO_TEST_DURATION);\n                            audio = this._device.audio;\n                            if (audio) {\n                                audio.disconnect(false);\n                                audio.outgoing(false);\n                            }\n                        }\n                        this._call.once('disconnect', function () {\n                            _this._device.once(device_1.default.EventName.Unregistered, function () { return _this._onUnregistered(); });\n                            _this._device.destroy();\n                        });\n                        publisher = this._call['_publisher'];\n                        publisher.on('error', function () {\n                            if (!_this._hasInsightsErrored) {\n                                _this._emitWarning('insights-connection-error', 'Received an error when attempting to connect to Insights gateway');\n                            }\n                            _this._hasInsightsErrored = true;\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Called when there is a fatal error\n     * @param error\n     */\n    PreflightTest.prototype._onFailed = function (error) {\n        clearTimeout(this._echoTimer);\n        clearTimeout(this._signalingTimeoutTimer);\n        this._releaseHandlers();\n        this._endTime = Date.now();\n        this._status = PreflightTest.Status.Failed;\n        this._log.debug(\"#\".concat(PreflightTest.Events.Failed), error);\n        this.emit(PreflightTest.Events.Failed, error);\n    };\n    /**\n     * Called when the device goes offline.\n     * This indicates that the test has been completed, but we won't know if it failed or not.\n     * The onError event will be the indicator whether the test failed.\n     */\n    PreflightTest.prototype._onUnregistered = function () {\n        var _this = this;\n        // We need to make sure we always execute preflight.on('completed') last\n        // as client SDK sometimes emits 'offline' event before emitting fatal errors.\n        setTimeout(function () {\n            if (_this._status === PreflightTest.Status.Failed) {\n                return;\n            }\n            clearTimeout(_this._echoTimer);\n            clearTimeout(_this._signalingTimeoutTimer);\n            _this._releaseHandlers();\n            _this._endTime = Date.now();\n            _this._status = PreflightTest.Status.Completed;\n            _this._report = _this._getReport();\n            _this._log.debug(\"#\".concat(PreflightTest.Events.Completed), JSON.stringify(_this._report));\n            _this.emit(PreflightTest.Events.Completed, _this._report);\n        }, 10);\n    };\n    /**\n     * Clean up all handlers for device and call\n     */\n    PreflightTest.prototype._releaseHandlers = function () {\n        [this._device, this._call].forEach(function (emitter) {\n            if (emitter) {\n                emitter.eventNames().forEach(function (name) { return emitter.removeAllListeners(name); });\n            }\n        });\n    };\n    /**\n     * Setup the event handlers for the {@link Call} of the test call\n     * @param call\n     */\n    PreflightTest.prototype._setupCallHandlers = function (call) {\n        var _this = this;\n        if (this._options.fakeMicInput) {\n            // When volume events start emitting, it means all audio outputs have been created.\n            // Let's mute them if we're using fake mic input.\n            call.once('volume', function () {\n                call['_mediaHandler'].outputs\n                    .forEach(function (output) { return output.audio.muted = true; });\n            });\n        }\n        call.on('warning', function (name, data) {\n            _this._emitWarning(name, 'Received an RTCWarning. See .rtcWarning for the RTCWarning', data);\n        });\n        call.once('accept', function () {\n            _this._callSid = call['_mediaHandler'].callSid;\n            _this._status = PreflightTest.Status.Connected;\n            _this._log.debug(\"#\".concat(PreflightTest.Events.Connected));\n            _this.emit(PreflightTest.Events.Connected);\n        });\n        call.on('sample', function (sample) { return __awaiter(_this, void 0, void 0, function () {\n            var _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!!this._latestSample) return [3 /*break*/, 2];\n                        _a = this;\n                        return [4 /*yield*/, (this._options.getRTCIceCandidateStatsReport || stats_1.getRTCIceCandidateStatsReport)(call['_mediaHandler'].version.pc)];\n                    case 1:\n                        _a._rtcIceCandidateStatsReport = _b.sent();\n                        _b.label = 2;\n                    case 2:\n                        this._latestSample = sample;\n                        this._samples.push(sample);\n                        this._log.debug(\"#\".concat(PreflightTest.Events.Sample), JSON.stringify(sample));\n                        this.emit(PreflightTest.Events.Sample, sample);\n                        return [2 /*return*/];\n                }\n            });\n        }); });\n        // TODO: Update the following once the SDK supports emitting these events\n        // Let's shim for now\n        [{\n                reportLabel: 'peerConnection',\n                type: 'pcconnection',\n            }, {\n                reportLabel: 'ice',\n                type: 'iceconnection',\n            }, {\n                reportLabel: 'dtls',\n                type: 'dtlstransport',\n            }, {\n                reportLabel: 'signaling',\n                type: 'signaling',\n            }].forEach(function (_a) {\n            var type = _a.type, reportLabel = _a.reportLabel;\n            var handlerName = \"on\".concat(type, \"statechange\");\n            var originalHandler = call['_mediaHandler'][handlerName];\n            call['_mediaHandler'][handlerName] = function (state) {\n                var timing = _this._networkTiming[reportLabel]\n                    = _this._networkTiming[reportLabel] || { start: 0 };\n                if (state === 'connecting' || state === 'checking') {\n                    timing.start = Date.now();\n                }\n                else if ((state === 'connected' || state === 'stable') && !timing.duration) {\n                    timing.end = Date.now();\n                    timing.duration = timing.end - timing.start;\n                }\n                originalHandler(state);\n            };\n        });\n    };\n    Object.defineProperty(PreflightTest.prototype, \"callSid\", {\n        /**\n         * The callsid generated for the test call.\n         */\n        get: function () {\n            return this._callSid;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PreflightTest.prototype, \"endTime\", {\n        /**\n         * A timestamp in milliseconds of when the test ended.\n         */\n        get: function () {\n            return this._endTime;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PreflightTest.prototype, \"latestSample\", {\n        /**\n         * The latest WebRTC sample collected.\n         */\n        get: function () {\n            return this._latestSample;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PreflightTest.prototype, \"report\", {\n        /**\n         * The report for this test.\n         */\n        get: function () {\n            return this._report;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PreflightTest.prototype, \"startTime\", {\n        /**\n         * A timestamp in milliseconds of when the test started.\n         */\n        get: function () {\n            return this._startTime;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PreflightTest.prototype, \"status\", {\n        /**\n         * The status of the test.\n         */\n        get: function () {\n            return this._status;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return PreflightTest;\n}(events_1.EventEmitter));\nexports.PreflightTest = PreflightTest;\n/**\n * @mergeModuleWith PreflightTest\n */\n(function (PreflightTest) {\n    /**\n     * The quality of the call determined by different mos ranges.\n     * Mos is calculated base on the WebRTC stats - rtt, jitter, and packet lost.\n     */\n    var CallQuality;\n    (function (CallQuality) {\n        /**\n         * If the average mos is over 4.2.\n         */\n        CallQuality[\"Excellent\"] = \"excellent\";\n        /**\n         * If the average mos is between 4.1 and 4.2 both inclusive.\n         */\n        CallQuality[\"Great\"] = \"great\";\n        /**\n         * If the average mos is between 3.7 and 4.0 both inclusive.\n         */\n        CallQuality[\"Good\"] = \"good\";\n        /**\n         * If the average mos is between 3.1 and 3.6 both inclusive.\n         */\n        CallQuality[\"Fair\"] = \"fair\";\n        /**\n         * If the average mos is 3.0 or below.\n         */\n        CallQuality[\"Degraded\"] = \"degraded\";\n    })(CallQuality = PreflightTest.CallQuality || (PreflightTest.CallQuality = {}));\n    /**\n     * Possible events that a [[PreflightTest]] might emit.\n     */\n    var Events;\n    (function (Events) {\n        /**\n         * See [[PreflightTest.completedEvent]]\n         */\n        Events[\"Completed\"] = \"completed\";\n        /**\n         * See [[PreflightTest.connectedEvent]]\n         */\n        Events[\"Connected\"] = \"connected\";\n        /**\n         * See [[PreflightTest.failedEvent]]\n         */\n        Events[\"Failed\"] = \"failed\";\n        /**\n         * See [[PreflightTest.sampleEvent]]\n         */\n        Events[\"Sample\"] = \"sample\";\n        /**\n         * See [[PreflightTest.warningEvent]]\n         */\n        Events[\"Warning\"] = \"warning\";\n    })(Events = PreflightTest.Events || (PreflightTest.Events = {}));\n    /**\n     * Possible status of the test.\n     */\n    var Status;\n    (function (Status) {\n        /**\n         * Call to Twilio has initiated.\n         */\n        Status[\"Connecting\"] = \"connecting\";\n        /**\n         * Call to Twilio has been established.\n         */\n        Status[\"Connected\"] = \"connected\";\n        /**\n         * The connection to Twilio has been disconnected and the test call has completed.\n         */\n        Status[\"Completed\"] = \"completed\";\n        /**\n         * The test has stopped and failed.\n         */\n        Status[\"Failed\"] = \"failed\";\n    })(Status = PreflightTest.Status || (PreflightTest.Status = {}));\n})(PreflightTest || (exports.PreflightTest = PreflightTest = {}));\n\n},{\"../call\":9,\"../constants\":10,\"../device\":12,\"../errors\":15,\"../log\":18,\"../rtc/stats\":32,\"events\":39}],21:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar events_1 = require(\"events\");\nvar C = require(\"./constants\");\nvar errors_1 = require(\"./errors\");\nvar log_1 = require(\"./log\");\nvar wstransport_1 = require(\"./wstransport\");\nvar PSTREAM_VERSION = '1.6';\n// In seconds\nvar MAX_RECONNECT_TIMEOUT_ALLOWED = 30;\n/**\n * Constructor for PStream objects.\n *\n * @exports PStream as Twilio.PStream\n * @memberOf Twilio\n * @borrows EventEmitter#addListener as #addListener\n * @borrows EventEmitter#removeListener as #removeListener\n * @borrows EventEmitter#emit as #emit\n * @borrows EventEmitter#hasListener as #hasListener\n * @constructor\n * @param {string} token The Twilio capabilities JWT\n * @param {string[]} uris An array of PStream endpoint URIs\n * @param {object} [options]\n * @config {boolean} [options.backoffMaxMs=20000] Enable debugging\n */\nvar PStream = /** @class */ (function (_super) {\n    __extends(PStream, _super);\n    function PStream(token, uris, options) {\n        var _this = _super.call(this) || this;\n        if (!(_this instanceof PStream)) {\n            return new PStream(token, uris, options);\n        }\n        var defaults = {\n            TransportFactory: wstransport_1.default,\n        };\n        options = options || {};\n        for (var prop in defaults) {\n            if (prop in options) {\n                continue;\n            }\n            options[prop] = defaults[prop];\n        }\n        _this.options = options;\n        _this.token = token || '';\n        _this.status = 'disconnected';\n        _this.gateway = null;\n        _this.region = null;\n        _this._messageQueue = [];\n        _this._preferredUri = null;\n        _this._uris = uris;\n        _this._handleTransportClose = _this._handleTransportClose.bind(_this);\n        _this._handleTransportError = _this._handleTransportError.bind(_this);\n        _this._handleTransportMessage = _this._handleTransportMessage.bind(_this);\n        _this._handleTransportOpen = _this._handleTransportOpen.bind(_this);\n        _this._log = new log_1.default('PStream');\n        // NOTE(mroberts): EventEmitter requires that we catch all errors.\n        _this.on('error', function () {\n            _this._log.warn('Unexpected error handled in pstream');\n        });\n        /*\n         *events used by device\n         *'invite',\n         *'ready',\n         *'error',\n         *'offline',\n         *\n         *'cancel',\n         *'presence',\n         *'roster',\n         *'answer',\n         *'candidate',\n         *'hangup'\n         */\n        var self = _this;\n        _this.addListener('ready', function () {\n            self.status = 'ready';\n        });\n        _this.addListener('offline', function () {\n            self.status = 'offline';\n        });\n        _this.addListener('close', function () {\n            self._log.info('Received \"close\" from server. Destroying PStream...');\n            self._destroy();\n        });\n        _this.transport = new _this.options.TransportFactory(_this._uris, {\n            backoffMaxMs: _this.options.backoffMaxMs,\n            maxPreferredDurationMs: _this.options.maxPreferredDurationMs,\n        });\n        Object.defineProperties(_this, {\n            uri: {\n                enumerable: true,\n                get: function () {\n                    return this.transport.uri;\n                },\n            },\n        });\n        _this.transport.on('close', _this._handleTransportClose);\n        _this.transport.on('error', _this._handleTransportError);\n        _this.transport.on('message', _this._handleTransportMessage);\n        _this.transport.on('open', _this._handleTransportOpen);\n        _this.transport.open();\n        return _this;\n    }\n    return PStream;\n}(events_1.EventEmitter));\nPStream.prototype._handleTransportClose = function () {\n    this.emit('transportClose');\n    if (this.status !== 'disconnected') {\n        if (this.status !== 'offline') {\n            this.emit('offline', this);\n        }\n        this.status = 'disconnected';\n    }\n};\nPStream.prototype._handleTransportError = function (error) {\n    if (!error) {\n        this.emit('error', { error: {\n                code: 31000,\n                message: 'Websocket closed without a provided reason',\n                twilioError: new errors_1.SignalingErrors.ConnectionDisconnected(),\n            } });\n        return;\n    }\n    // We receive some errors without call metadata (just the error). We need to convert these\n    // to be contained within the 'error' field so that these errors match the expected format.\n    this.emit('error', typeof error.code !== 'undefined' ? { error: error } : error);\n};\nPStream.prototype._handleTransportMessage = function (msg) {\n    if (!msg || !msg.data || typeof msg.data !== 'string') {\n        return;\n    }\n    var _a = JSON.parse(msg.data), type = _a.type, _b = _a.payload, payload = _b === void 0 ? {} : _b;\n    this.gateway = payload.gateway || this.gateway;\n    this.region = payload.region || this.region;\n    if (type === 'error' && payload.error) {\n        payload.error.twilioError = new errors_1.SignalingErrors.ConnectionError();\n    }\n    this.emit(type, payload);\n};\nPStream.prototype._handleTransportOpen = function () {\n    var _this = this;\n    this.status = 'connected';\n    this.setToken(this.token);\n    this.emit('transportOpen');\n    var messages = this._messageQueue.splice(0, this._messageQueue.length);\n    messages.forEach(function (message) { return _this._publish.apply(_this, message); });\n};\n/**\n * @return {string}\n */\nPStream.toString = function () { return '[Twilio.PStream class]'; };\nPStream.prototype.toString = function () { return '[Twilio.PStream instance]'; };\nPStream.prototype.setToken = function (token) {\n    this._log.info('Setting token and publishing listen');\n    this.token = token;\n    var reconnectTimeout = 0;\n    var t = this.options.maxPreferredDurationMs;\n    this._log.info(\"maxPreferredDurationMs:\".concat(t));\n    if (typeof t === 'number' && t >= 0) {\n        reconnectTimeout = Math.min(Math.ceil(t / 1000), MAX_RECONNECT_TIMEOUT_ALLOWED);\n    }\n    this._log.info(\"reconnectTimeout:\".concat(reconnectTimeout));\n    var payload = {\n        browserinfo: getBrowserInfo(),\n        reconnectTimeout: reconnectTimeout,\n        token: token,\n    };\n    this._publish('listen', payload);\n};\nPStream.prototype.sendMessage = function (callsid, content, contenttype, messagetype, voiceeventsid) {\n    if (contenttype === void 0) { contenttype = 'application/json'; }\n    var payload = {\n        callsid: callsid,\n        content: content,\n        contenttype: contenttype,\n        messagetype: messagetype,\n        voiceeventsid: voiceeventsid,\n    };\n    this._publish('message', payload, true);\n};\nPStream.prototype.register = function (mediaCapabilities) {\n    var regPayload = { media: mediaCapabilities };\n    this._publish('register', regPayload, true);\n};\nPStream.prototype.invite = function (sdp, callsid, params) {\n    var payload = {\n        callsid: callsid,\n        sdp: sdp,\n        twilio: params ? { params: params } : {},\n    };\n    this._publish('invite', payload, true);\n};\nPStream.prototype.reconnect = function (sdp, callsid, reconnect) {\n    var payload = {\n        callsid: callsid,\n        reconnect: reconnect,\n        sdp: sdp,\n        twilio: {},\n    };\n    this._publish('invite', payload, true);\n};\nPStream.prototype.answer = function (sdp, callsid) {\n    this._publish('answer', { sdp: sdp, callsid: callsid }, true);\n};\nPStream.prototype.dtmf = function (callsid, digits) {\n    this._publish('dtmf', { callsid: callsid, dtmf: digits }, true);\n};\nPStream.prototype.hangup = function (callsid, message) {\n    var payload = message ? { callsid: callsid, message: message } : { callsid: callsid };\n    this._publish('hangup', payload, true);\n};\nPStream.prototype.reject = function (callsid) {\n    this._publish('reject', { callsid: callsid }, true);\n};\nPStream.prototype.reinvite = function (sdp, callsid) {\n    this._publish('reinvite', { sdp: sdp, callsid: callsid }, false);\n};\nPStream.prototype._destroy = function () {\n    this.transport.removeListener('close', this._handleTransportClose);\n    this.transport.removeListener('error', this._handleTransportError);\n    this.transport.removeListener('message', this._handleTransportMessage);\n    this.transport.removeListener('open', this._handleTransportOpen);\n    this.transport.close();\n    this.emit('offline', this);\n};\nPStream.prototype.destroy = function () {\n    this._log.info('PStream.destroy() called...');\n    this._destroy();\n    return this;\n};\nPStream.prototype.updatePreferredURI = function (uri) {\n    this._preferredUri = uri;\n    this.transport.updatePreferredURI(uri);\n};\nPStream.prototype.updateURIs = function (uris) {\n    this._uris = uris;\n    this.transport.updateURIs(this._uris);\n};\nPStream.prototype.publish = function (type, payload) {\n    return this._publish(type, payload, true);\n};\nPStream.prototype._publish = function (type, payload, shouldRetry) {\n    var msg = JSON.stringify({\n        payload: payload,\n        type: type,\n        version: PSTREAM_VERSION,\n    });\n    var isSent = !!this.transport.send(msg);\n    if (!isSent) {\n        this.emit('error', { error: {\n                code: 31009,\n                message: 'No transport available to send or receive messages',\n                twilioError: new errors_1.GeneralErrors.TransportError(),\n            } });\n        if (shouldRetry) {\n            this._messageQueue.push([type, payload, true]);\n        }\n    }\n};\nfunction getBrowserInfo() {\n    var nav = typeof navigator !== 'undefined' ? navigator : {};\n    var info = {\n        browser: {\n            platform: nav.platform || 'unknown',\n            userAgent: nav.userAgent || 'unknown',\n        },\n        p: 'browser',\n        plugin: 'rtc',\n        v: C.RELEASE_VERSION,\n    };\n    return info;\n}\nexports.default = PStream;\n\n},{\"./constants\":10,\"./errors\":15,\"./log\":18,\"./wstransport\":38,\"events\":39}],22:[function(require,module,exports){\n\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEdge = exports.regionToEdge = exports.regionShortcodes = exports.Region = exports.Edge = void 0;\nexports.createEventGatewayURI = createEventGatewayURI;\nexports.createSignalingEndpointURL = createSignalingEndpointURL;\nexports.getChunderURIs = getChunderURIs;\nexports.getRegionShortcode = getRegionShortcode;\nvar errors_1 = require(\"./errors\");\n/**\n * Valid edges.\n */\nvar Edge;\n(function (Edge) {\n    /**\n     * Public edges\n     */\n    Edge[\"Sydney\"] = \"sydney\";\n    Edge[\"SaoPaulo\"] = \"sao-paulo\";\n    Edge[\"Dublin\"] = \"dublin\";\n    Edge[\"Frankfurt\"] = \"frankfurt\";\n    Edge[\"Tokyo\"] = \"tokyo\";\n    Edge[\"Singapore\"] = \"singapore\";\n    Edge[\"Ashburn\"] = \"ashburn\";\n    Edge[\"Umatilla\"] = \"umatilla\";\n    Edge[\"Roaming\"] = \"roaming\";\n    /**\n     * Interconnect edges\n     */\n    Edge[\"AshburnIx\"] = \"ashburn-ix\";\n    Edge[\"SanJoseIx\"] = \"san-jose-ix\";\n    Edge[\"LondonIx\"] = \"london-ix\";\n    Edge[\"FrankfurtIx\"] = \"frankfurt-ix\";\n    Edge[\"SingaporeIx\"] = \"singapore-ix\";\n    Edge[\"SydneyIx\"] = \"sydney-ix\";\n    Edge[\"TokyoIx\"] = \"tokyo-ix\";\n})(Edge || (exports.Edge = Edge = {}));\n/**\n * Valid current regions.\n *\n * @deprecated\n *\n * CLIENT-6831\n * This is no longer used or updated for checking validity of regions in the\n * SDK. We now allow any string to be passed for region. Invalid regions won't\n * be able to connect, and won't throw an exception.\n *\n * CLIENT-7519\n * This is used again to temporarily convert edge values to regions as part of\n * Phase 1 Regional. This is still considered deprecated.\n *\n * @private\n */\nvar Region;\n(function (Region) {\n    Region[\"Au1\"] = \"au1\";\n    Region[\"Au1Ix\"] = \"au1-ix\";\n    Region[\"Br1\"] = \"br1\";\n    Region[\"De1\"] = \"de1\";\n    Region[\"De1Ix\"] = \"de1-ix\";\n    Region[\"Gll\"] = \"gll\";\n    Region[\"Ie1\"] = \"ie1\";\n    Region[\"Ie1Ix\"] = \"ie1-ix\";\n    Region[\"Ie1Tnx\"] = \"ie1-tnx\";\n    Region[\"Jp1\"] = \"jp1\";\n    Region[\"Jp1Ix\"] = \"jp1-ix\";\n    Region[\"Sg1\"] = \"sg1\";\n    Region[\"Sg1Ix\"] = \"sg1-ix\";\n    Region[\"Sg1Tnx\"] = \"sg1-tnx\";\n    Region[\"Us1\"] = \"us1\";\n    Region[\"Us1Ix\"] = \"us1-ix\";\n    Region[\"Us1Tnx\"] = \"us1-tnx\";\n    Region[\"Us2\"] = \"us2\";\n    Region[\"Us2Ix\"] = \"us2-ix\";\n    Region[\"Us2Tnx\"] = \"us2-tnx\";\n})(Region || (exports.Region = Region = {}));\n/**\n * Region shortcodes. Maps the full region name from AWS to the Twilio shortcode.\n * @private\n */\nexports.regionShortcodes = {\n    ASIAPAC_SINGAPORE: Region.Sg1,\n    ASIAPAC_SYDNEY: Region.Au1,\n    ASIAPAC_TOKYO: Region.Jp1,\n    EU_FRANKFURT: Region.De1,\n    EU_IRELAND: Region.Ie1,\n    SOUTH_AMERICA_SAO_PAULO: Region.Br1,\n    US_EAST_VIRGINIA: Region.Us1,\n    US_WEST_OREGON: Region.Us2,\n};\n/**\n * Region to edge mapping, as part of Phase 1 Regional (CLIENT-7519).\n * Temporary.\n * @private\n */\nexports.regionToEdge = (_a = {},\n    _a[Region.Au1] = Edge.Sydney,\n    _a[Region.Br1] = Edge.SaoPaulo,\n    _a[Region.Ie1] = Edge.Dublin,\n    _a[Region.De1] = Edge.Frankfurt,\n    _a[Region.Jp1] = Edge.Tokyo,\n    _a[Region.Sg1] = Edge.Singapore,\n    _a[Region.Us1] = Edge.Ashburn,\n    _a[Region.Us2] = Edge.Umatilla,\n    _a[Region.Gll] = Edge.Roaming,\n    /**\n     * Interconnect edges\n     */\n    _a[Region.Us1Ix] = Edge.AshburnIx,\n    _a[Region.Us2Ix] = Edge.SanJoseIx,\n    _a[Region.Ie1Ix] = Edge.LondonIx,\n    _a[Region.De1Ix] = Edge.FrankfurtIx,\n    _a[Region.Sg1Ix] = Edge.SingaporeIx,\n    _a[Region.Au1Ix] = Edge.SydneyIx,\n    _a[Region.Jp1Ix] = Edge.TokyoIx,\n    /**\n     * Tnx regions\n     */\n    _a[Region.Us1Tnx] = Edge.AshburnIx,\n    _a[Region.Us2Tnx] = Edge.AshburnIx,\n    _a[Region.Ie1Tnx] = Edge.LondonIx,\n    _a[Region.Sg1Tnx] = Edge.SingaporeIx,\n    _a);\n/**\n * The default edge to connect to and create a chunder uri from, if the edge\n * parameter is not specified during setup in `Device`.\n * @constant\n */\nexports.defaultEdge = Edge.Roaming;\n/**\n * The default event gateway URI to publish to.\n * @constant\n * @private\n */\nvar defaultEventGatewayURI = 'eventgw.twilio.com';\n/**\n * String template for an edge chunder URI\n * @param edge - The edge.\n */\nfunction createChunderEdgeURI(edge) {\n    return \"voice-js.\".concat(edge, \".twilio.com\");\n}\n/**\n * String template for a region insights URI\n * @param region - The region.\n */\nfunction createEventGatewayURI(region) {\n    return region\n        ? \"eventgw.\".concat(region, \".twilio.com\")\n        : defaultEventGatewayURI;\n}\n/**\n * Create a signaling endpoint URL to connect a websocket to from a chunder URI.\n * @param uri the chunder URI to create a signaling endpoint URL for\n */\nfunction createSignalingEndpointURL(uri) {\n    return \"wss://\".concat(uri, \"/signal\");\n}\n/**\n * Get the URI associated with the passed edge.\n * @private\n * @param edge - A string or an array of edge values\n * @returns An array of chunder URIs\n */\nfunction getChunderURIs(edge) {\n    if (!!edge && typeof edge !== 'string' && !Array.isArray(edge)) {\n        throw new errors_1.InvalidArgumentError('If `edge` is provided, it must be of type `string` or an array of strings.');\n    }\n    var uris;\n    if (edge) {\n        var edgeParams = Array.isArray(edge) ? edge : [edge];\n        uris = edgeParams.map(function (param) { return createChunderEdgeURI(param); });\n    }\n    else {\n        uris = [createChunderEdgeURI(exports.defaultEdge)];\n    }\n    return uris;\n}\n/**\n * Get the region shortcode by its full AWS region string.\n *\n * @private\n * @param region - The region's full AWS string.\n */\nfunction getRegionShortcode(region) {\n    return exports.regionShortcodes[region] || null;\n}\n\n},{\"./errors\":15}],23:[function(require,module,exports){\n\"use strict\";\n// @ts-nocheck\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction request(method, params, callback) {\n    var body = JSON.stringify(params.body || {});\n    var headers = new Headers();\n    params.headers = params.headers || [];\n    Object.entries(params.headers).forEach(function (_a) {\n        var headerName = _a[0], headerBody = _a[1];\n        return headers.append(headerName, headerBody);\n    });\n    fetch(params.url, { body: body, headers: headers, method: method })\n        .then(function (response) { return response.text(); }, callback)\n        .then(function (responseText) { return callback(null, responseText); }, callback);\n}\n/**\n * Use XMLHttpRequest to get a network resource.\n * @param {String} method - HTTP Method\n * @param {Object} params - Request parameters\n * @param {String} params.url - URL of the resource\n * @param {Array}  params.headers - An array of headers to pass [{ headerName : headerBody }]\n * @param {Object} params.body - A JSON body to send to the resource\n * @returns {response}\n */\nvar Request = request;\n/**\n * Sugar function for request('GET', params, callback);\n * @param {Object} params - Request parameters\n * @param {Request~get} callback - The callback that handles the response.\n */\nRequest.get = function get(params, callback) {\n    return new this('GET', params, callback);\n};\n/**\n * Sugar function for request('POST', params, callback);\n * @param {Object} params - Request parameters\n * @param {Request~post} callback - The callback that handles the response.\n */\nRequest.post = function post(params, callback) {\n    return new this('POST', params, callback);\n};\nexports.default = Request;\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar errors_1 = require(\"../errors\");\nvar util = require(\"../util\");\nfunction getUserMedia(constraints, options) {\n    options = options || {};\n    options.util = options.util || util;\n    options.navigator = options.navigator\n        || (typeof navigator !== 'undefined' ? navigator : null);\n    return new Promise(function (resolve, reject) {\n        if (!options.navigator) {\n            throw new errors_1.NotSupportedError('getUserMedia is not supported');\n        }\n        switch ('function') {\n            case typeof (options.navigator.mediaDevices && options.navigator.mediaDevices.getUserMedia):\n                return resolve(options.navigator.mediaDevices.getUserMedia(constraints));\n            case typeof options.navigator.webkitGetUserMedia:\n                return options.navigator.webkitGetUserMedia(constraints, resolve, reject);\n            case typeof options.navigator.mozGetUserMedia:\n                return options.navigator.mozGetUserMedia(constraints, resolve, reject);\n            case typeof options.navigator.getUserMedia:\n                return options.navigator.getUserMedia(constraints, resolve, reject);\n            default:\n                throw new errors_1.NotSupportedError('getUserMedia is not supported');\n        }\n    }).catch(function (e) {\n        throw (options.util.isFirefox() && e.name === 'NotReadableError')\n            ? new errors_1.NotSupportedError('Firefox does not currently support opening multiple audio input tracks' +\n                'simultaneously, even across different tabs.\\n' +\n                'Related Bugzilla thread: https://bugzilla.mozilla.org/show_bug.cgi?id=1299324')\n            : e;\n    });\n}\nexports.default = getUserMedia;\n\n},{\"../errors\":15,\"../util\":37}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IceCandidate = void 0;\n/**\n * {@link RTCIceCandidate} parses an ICE candidate gathered by the browser\n * and returns a IceCandidate object\n */\nvar IceCandidate = /** @class */ (function () {\n    /**\n     * @constructor\n     * @param iceCandidate RTCIceCandidate coming from the browser\n     */\n    function IceCandidate(iceCandidate, isRemote) {\n        if (isRemote === void 0) { isRemote = false; }\n        /**\n         * Whether this is deleted from the list of candidate gathered\n         */\n        this.deleted = false;\n        var cost;\n        var parts = iceCandidate.candidate.split('network-cost ');\n        if (parts[1]) {\n            cost = parseInt(parts[1], 10);\n        }\n        this.candidateType = iceCandidate.type;\n        this.ip = iceCandidate.ip || iceCandidate.address;\n        this.isRemote = isRemote;\n        this.networkCost = cost;\n        this.port = iceCandidate.port;\n        this.priority = iceCandidate.priority;\n        this.protocol = iceCandidate.protocol;\n        this.relatedAddress = iceCandidate.relatedAddress;\n        this.relatedPort = iceCandidate.relatedPort;\n        this.tcpType = iceCandidate.tcpType;\n        this.transportId = iceCandidate.sdpMid;\n    }\n    /**\n     * Get the payload object for insights\n     */\n    IceCandidate.prototype.toPayload = function () {\n        return {\n            'candidate_type': this.candidateType,\n            'deleted': this.deleted,\n            'ip': this.ip,\n            'is_remote': this.isRemote,\n            'network-cost': this.networkCost,\n            'port': this.port,\n            'priority': this.priority,\n            'protocol': this.protocol,\n            'related_address': this.relatedAddress,\n            'related_port': this.relatedPort,\n            'tcp_type': this.tcpType,\n            'transport_id': this.transportId,\n        };\n    };\n    return IceCandidate;\n}());\nexports.IceCandidate = IceCandidate;\n\n},{}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PeerConnection = void 0;\nexports.enabled = enabled;\nexports.getMediaEngine = getMediaEngine;\n// @ts-nocheck\nvar peerconnection_1 = require(\"./peerconnection\");\nexports.PeerConnection = peerconnection_1.default;\nvar rtcpc_1 = require(\"./rtcpc\");\nfunction enabled() {\n    return rtcpc_1.default.test();\n}\nfunction getMediaEngine() {\n    return typeof RTCIceGatherer !== 'undefined' ? 'ORTC' : 'WebRTC';\n}\n\n},{\"./peerconnection\":29,\"./rtcpc\":30}],27:[function(require,module,exports){\n\"use strict\";\n// @ts-nocheck\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This file was imported from another project. If making changes to this file, please don't\n * make them here. Make them on the linked repo below, then copy back:\n * https://code.hq.twilio.com/client/MockRTCStatsReport\n */\n// The legacy max volume, which is the positive half of a signed short integer.\nvar OLD_MAX_VOLUME = 32767;\nvar NativeRTCStatsReport = typeof window !== 'undefined'\n    ? window.RTCStatsReport : undefined;\n/**\n * Create a MockRTCStatsReport wrapper around a Map of RTCStats objects. If RTCStatsReport is available\n *   natively, it will be inherited so that instanceof checks pass.\n * @constructor\n * @extends RTCStatsReport\n * @param {Map<string, RTCStats>} statsMap - A Map of RTCStats objects to wrap\n *   with a MockRTCStatsReport object.\n */\nfunction MockRTCStatsReport(statsMap) {\n    if (!(this instanceof MockRTCStatsReport)) {\n        return new MockRTCStatsReport(statsMap);\n    }\n    var self = this;\n    Object.defineProperties(this, {\n        _map: { value: statsMap },\n        size: {\n            enumerable: true,\n            get: function () {\n                return self._map.size;\n            },\n        },\n    });\n    this[Symbol.iterator] = statsMap[Symbol.iterator];\n}\n// If RTCStatsReport is available natively, inherit it. Keep our constructor.\nif (NativeRTCStatsReport) {\n    MockRTCStatsReport.prototype = Object.create(NativeRTCStatsReport.prototype);\n    MockRTCStatsReport.prototype.constructor = MockRTCStatsReport;\n}\n// Map the Map-like read methods to the underlying Map\n['entries', 'forEach', 'get', 'has', 'keys', 'values'].forEach(function (key) {\n    MockRTCStatsReport.prototype[key] = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return (_a = this._map)[key].apply(_a, args);\n    };\n});\n/**\n * Convert an array of RTCStats objects into a mock RTCStatsReport object.\n * @param {Array<RTCStats>}\n * @return {MockRTCStatsReport}\n */\nMockRTCStatsReport.fromArray = function fromArray(array) {\n    return new MockRTCStatsReport(array.reduce(function (map, rtcStats) {\n        map.set(rtcStats.id, rtcStats);\n        return map;\n    }, new Map()));\n};\n/**\n * Convert a legacy RTCStatsResponse object into a mock RTCStatsReport object.\n * @param {RTCStatsResponse} statsResponse - An RTCStatsResponse object returned by the\n *   legacy getStats(callback) method in Chrome.\n * @return {MockRTCStatsReport} A mock RTCStatsReport object.\n */\nMockRTCStatsReport.fromRTCStatsResponse = function fromRTCStatsResponse(statsResponse) {\n    var activeCandidatePairId;\n    var transportIds = new Map();\n    var statsMap = statsResponse.result().reduce(function (map, report) {\n        var id = report.id;\n        switch (report.type) {\n            case 'googCertificate':\n                map.set(id, createRTCCertificateStats(report));\n                break;\n            case 'datachannel':\n                map.set(id, createRTCDataChannelStats(report));\n                break;\n            case 'googCandidatePair':\n                if (getBoolean(report, 'googActiveConnection')) {\n                    activeCandidatePairId = id;\n                }\n                map.set(id, createRTCIceCandidatePairStats(report));\n                break;\n            case 'localcandidate':\n                map.set(id, createRTCIceCandidateStats(report, false));\n                break;\n            case 'remotecandidate':\n                map.set(id, createRTCIceCandidateStats(report, true));\n                break;\n            case 'ssrc':\n                if (isPresent(report, 'packetsReceived')) {\n                    map.set(\"rtp-\".concat(id), createRTCInboundRTPStreamStats(report));\n                }\n                else {\n                    map.set(\"rtp-\".concat(id), createRTCOutboundRTPStreamStats(report));\n                }\n                map.set(\"track-\".concat(id), createRTCMediaStreamTrackStats(report));\n                map.set(\"codec-\".concat(id), createRTCCodecStats(report));\n                break;\n            case 'googComponent':\n                var transportReport = createRTCTransportStats(report);\n                transportIds.set(transportReport.selectedCandidatePairId, id);\n                map.set(id, createRTCTransportStats(report));\n                break;\n        }\n        return map;\n    }, new Map());\n    if (activeCandidatePairId) {\n        var activeTransportId = transportIds.get(activeCandidatePairId);\n        if (activeTransportId) {\n            statsMap.get(activeTransportId).dtlsState = 'connected';\n        }\n    }\n    return new MockRTCStatsReport(statsMap);\n};\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCTransportStats}\n */\nfunction createRTCTransportStats(report) {\n    return {\n        bytesReceived: undefined,\n        bytesSent: undefined,\n        dtlsState: undefined,\n        id: report.id,\n        localCertificateId: report.stat('localCertificateId'),\n        remoteCertificateId: report.stat('remoteCertificateId'),\n        rtcpTransportStatsId: undefined,\n        selectedCandidatePairId: report.stat('selectedCandidatePairId'),\n        timestamp: Date.parse(report.timestamp),\n        type: 'transport',\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCCodecStats}\n */\nfunction createRTCCodecStats(report) {\n    return {\n        channels: undefined,\n        clockRate: undefined,\n        id: report.id,\n        implementation: undefined,\n        mimeType: \"\".concat(report.stat('mediaType'), \"/\").concat(report.stat('googCodecName')),\n        payloadType: undefined,\n        sdpFmtpLine: undefined,\n        timestamp: Date.parse(report.timestamp),\n        type: 'codec',\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCMediaStreamTrackStats}\n */\nfunction createRTCMediaStreamTrackStats(report) {\n    return {\n        audioLevel: isPresent(report, 'audioOutputLevel')\n            ? getInt(report, 'audioOutputLevel') / OLD_MAX_VOLUME\n            : (getInt(report, 'audioInputLevel') || 0) / OLD_MAX_VOLUME,\n        detached: undefined,\n        echoReturnLoss: getFloat(report, 'googEchoCancellationReturnLoss'),\n        echoReturnLossEnhancement: getFloat(report, 'googEchoCancellationReturnLossEnhancement'),\n        ended: undefined,\n        frameHeight: isPresent(report, 'googFrameHeightReceived')\n            ? getInt(report, 'googFrameHeightReceived')\n            : getInt(report, 'googFrameHeightSent'),\n        frameWidth: isPresent(report, 'googFrameWidthReceived')\n            ? getInt(report, 'googFrameWidthReceived')\n            : getInt(report, 'googFrameWidthSent'),\n        framesCorrupted: undefined,\n        framesDecoded: getInt(report, 'framesDecoded'),\n        framesDropped: undefined,\n        framesPerSecond: undefined,\n        framesReceived: undefined,\n        framesSent: getInt(report, 'framesEncoded'),\n        fullFramesLost: undefined,\n        id: report.id,\n        kind: report.stat('mediaType'),\n        partialFramesLost: undefined,\n        remoteSource: undefined,\n        ssrcIds: undefined,\n        timestamp: Date.parse(report.timestamp),\n        trackIdentifier: report.stat('googTrackId'),\n        type: 'track',\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @param {boolean} isInbound - Whether to create an inbound stats object, or outbound.\n * @returns {RTCRTPStreamStats}\n */\nfunction createRTCRTPStreamStats(report, isInbound) {\n    return {\n        associateStatsId: undefined,\n        codecId: \"codec-\".concat(report.id),\n        firCount: isInbound\n            ? getInt(report, 'googFirsSent')\n            : undefined,\n        id: report.id,\n        isRemote: undefined,\n        mediaType: report.stat('mediaType'),\n        nackCount: isInbound\n            ? getInt(report, 'googNacksSent')\n            : getInt(report, 'googNacksReceived'),\n        pliCount: isInbound\n            ? getInt(report, 'googPlisSent')\n            : getInt(report, 'googPlisReceived'),\n        qpSum: getInt(report, 'qpSum'),\n        sliCount: undefined,\n        ssrc: report.stat('ssrc'),\n        timestamp: Date.parse(report.timestamp),\n        trackId: \"track-\".concat(report.id),\n        transportId: report.stat('transportId'),\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCInboundRTPStreamStats}\n */\nfunction createRTCInboundRTPStreamStats(report) {\n    var rtp = createRTCRTPStreamStats(report, true);\n    Object.assign(rtp, {\n        burstDiscardCount: undefined,\n        burstDiscardRate: undefined,\n        burstLossCount: undefined,\n        burstLossRate: undefined,\n        burstPacketsDiscarded: undefined,\n        burstPacketsLost: undefined,\n        bytesReceived: getInt(report, 'bytesReceived'),\n        fractionLost: undefined,\n        framesDecoded: getInt(report, 'framesDecoded'),\n        gapDiscardRate: undefined,\n        gapLossRate: undefined,\n        jitter: convertMsToSeconds(report.stat('googJitterReceived')),\n        packetsDiscarded: undefined,\n        packetsLost: getInt(report, 'packetsLost'),\n        packetsReceived: getInt(report, 'packetsReceived'),\n        packetsRepaired: undefined,\n        roundTripTime: convertMsToSeconds(report.stat('googRtt')),\n        type: 'inbound-rtp',\n    });\n    return rtp;\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCOutboundRTPStreamStats}\n */\nfunction createRTCOutboundRTPStreamStats(report) {\n    var rtp = createRTCRTPStreamStats(report, false);\n    Object.assign(rtp, {\n        bytesSent: getInt(report, 'bytesSent'),\n        framesEncoded: getInt(report, 'framesEncoded'),\n        packetsSent: getInt(report, 'packetsSent'),\n        remoteTimestamp: undefined,\n        targetBitrate: undefined,\n        type: 'outbound-rtp',\n    });\n    return rtp;\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @param {boolean} isRemote - Whether to create for a remote candidate, or local candidate.\n * @returns {RTCIceCandidateStats}\n */\nfunction createRTCIceCandidateStats(report, isRemote) {\n    return {\n        candidateType: translateCandidateType(report.stat('candidateType')),\n        deleted: undefined,\n        id: report.id,\n        ip: report.stat('ipAddress'),\n        isRemote: isRemote,\n        port: getInt(report, 'portNumber'),\n        priority: getFloat(report, 'priority'),\n        protocol: report.stat('transport'),\n        relayProtocol: undefined,\n        timestamp: Date.parse(report.timestamp),\n        transportId: undefined,\n        type: isRemote\n            ? 'remote-candidate'\n            : 'local-candidate',\n        url: undefined,\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCIceCandidatePairStats}\n */\nfunction createRTCIceCandidatePairStats(report) {\n    return {\n        availableIncomingBitrate: undefined,\n        availableOutgoingBitrate: undefined,\n        bytesReceived: getInt(report, 'bytesReceived'),\n        bytesSent: getInt(report, 'bytesSent'),\n        consentRequestsSent: getInt(report, 'consentRequestsSent'),\n        currentRoundTripTime: convertMsToSeconds(report.stat('googRtt')),\n        id: report.id,\n        lastPacketReceivedTimestamp: undefined,\n        lastPacketSentTimestamp: undefined,\n        localCandidateId: report.stat('localCandidateId'),\n        nominated: undefined,\n        priority: undefined,\n        readable: undefined,\n        remoteCandidateId: report.stat('remoteCandidateId'),\n        requestsReceived: getInt(report, 'requestsReceived'),\n        requestsSent: getInt(report, 'requestsSent'),\n        responsesReceived: getInt(report, 'responsesReceived'),\n        responsesSent: getInt(report, 'responsesSent'),\n        retransmissionsReceived: undefined,\n        retransmissionsSent: undefined,\n        state: undefined,\n        timestamp: Date.parse(report.timestamp),\n        totalRoundTripTime: undefined,\n        transportId: report.stat('googChannelId'),\n        type: 'candidate-pair',\n        writable: getBoolean(report, 'googWritable'),\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCIceCertificateStats}\n */\nfunction createRTCCertificateStats(report) {\n    return {\n        base64Certificate: report.stat('googDerBase64'),\n        fingerprint: report.stat('googFingerprint'),\n        fingerprintAlgorithm: report.stat('googFingerprintAlgorithm'),\n        id: report.id,\n        issuerCertificateId: report.stat('googIssuerId'),\n        timestamp: Date.parse(report.timestamp),\n        type: 'certificate',\n    };\n}\n/**\n * @param {RTCLegacyStatsReport} report\n * @returns {RTCDataChannelStats}\n */\nfunction createRTCDataChannelStats(report) {\n    return {\n        bytesReceived: undefined,\n        bytesSent: undefined,\n        datachannelid: report.stat('datachannelid'),\n        id: report.id,\n        label: report.stat('label'),\n        messagesReceived: undefined,\n        messagesSent: undefined,\n        protocol: report.stat('protocol'),\n        state: report.stat('state'),\n        timestamp: Date.parse(report.timestamp),\n        transportId: report.stat('transportId'),\n        type: 'data-channel',\n    };\n}\n/**\n * @param {number} inMs - A time in milliseconds\n * @returns {number} The time in seconds\n */\nfunction convertMsToSeconds(inMs) {\n    return isNaN(inMs) || inMs === ''\n        ? undefined\n        : parseInt(inMs, 10) / 1000;\n}\n/**\n * @param {string} type - A type in the legacy format\n * @returns {string} The type adjusted to new standards for known naming changes\n */\nfunction translateCandidateType(type) {\n    switch (type) {\n        case 'peerreflexive':\n            return 'prflx';\n        case 'serverreflexive':\n            return 'srflx';\n        case 'host':\n        case 'relay':\n        default:\n            return type;\n    }\n}\nfunction getInt(report, statName) {\n    var stat = report.stat(statName);\n    return isPresent(report, statName)\n        ? parseInt(stat, 10)\n        : undefined;\n}\nfunction getFloat(report, statName) {\n    var stat = report.stat(statName);\n    return isPresent(report, statName)\n        ? parseFloat(stat)\n        : undefined;\n}\nfunction getBoolean(report, statName) {\n    var stat = report.stat(statName);\n    return isPresent(report, statName)\n        ? (stat === 'true' || stat === true)\n        : undefined;\n}\nfunction isPresent(report, statName) {\n    var stat = report.stat(statName);\n    return typeof stat !== 'undefined' && stat !== '';\n}\nexports.default = MockRTCStatsReport;\n\n},{}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculate = calculate;\nexports.isNonNegativeNumber = isNonNegativeNumber;\nvar r0 = 94.768; // Constant used in computing \"rFactor\".\n/**\n * Calculate the mos score of a stats object\n * @param {number} rtt\n * @param {number} jitter\n * @param {number} fractionLost - The fraction of packets that have been lost.\n * Calculated by packetsLost / totalPackets\n * @return {number | null} mos - Calculated MOS, `1.0` through roughly `4.5`.\n * Returns `null` when any of the input parameters are not a `non-negative`\n * number.\n */\nfunction calculate(rtt, jitter, fractionLost) {\n    if (typeof rtt !== 'number' ||\n        typeof jitter !== 'number' ||\n        typeof fractionLost !== 'number' ||\n        !isNonNegativeNumber(rtt) ||\n        !isNonNegativeNumber(jitter) ||\n        !isNonNegativeNumber(fractionLost)) {\n        return null;\n    }\n    // Compute the effective latency.\n    var effectiveLatency = rtt + (jitter * 2) + 10;\n    // Compute the initial \"rFactor\" from effective latency.\n    var rFactor = 0;\n    switch (true) {\n        case effectiveLatency < 160:\n            rFactor = r0 - (effectiveLatency / 40);\n            break;\n        case effectiveLatency < 1000:\n            rFactor = r0 - ((effectiveLatency - 120) / 10);\n            break;\n    }\n    // Adjust \"rFactor\" with the fraction of packets lost.\n    switch (true) {\n        case fractionLost <= (rFactor / 2.5):\n            rFactor = Math.max(rFactor - fractionLost * 2.5, 6.52);\n            break;\n        default:\n            rFactor = 0;\n            break;\n    }\n    // Compute MOS from \"rFactor\".\n    var mos = 1 +\n        (0.035 * rFactor) +\n        (0.000007 * rFactor) *\n            (rFactor - 60) *\n            (100 - rFactor);\n    return mos;\n}\n/**\n * Returns true if and only if the parameter passed is a number, is not `NaN`,\n * is finite, and is greater than or equal to `0`.\n * @param n\n */\nfunction isNonNegativeNumber(n) {\n    return typeof n === 'number' && !isNaN(n) && isFinite(n) && n >= 0;\n}\nexports.default = {\n    calculate: calculate,\n    isNonNegativeNumber: isNonNegativeNumber,\n};\n\n},{}],29:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar errors_1 = require(\"../errors\");\nvar log_1 = require(\"../log\");\nvar util = require(\"../util\");\nvar rtcpc_1 = require(\"./rtcpc\");\nvar sdp_1 = require(\"./sdp\");\nvar ICE_GATHERING_TIMEOUT = 15000;\nvar ICE_GATHERING_FAIL_NONE = 'none';\nvar ICE_GATHERING_FAIL_TIMEOUT = 'timeout';\nvar INITIAL_ICE_CONNECTION_STATE = 'new';\nvar VOLUME_INTERVAL_MS = 50;\n/**\n * @typedef {Object} PeerConnection\n * @param audioHelper\n * @param pstream\n * @param options\n * @return {PeerConnection}\n * @constructor\n */\nfunction PeerConnection(audioHelper, pstream, options) {\n    if (!audioHelper || !pstream) {\n        throw new errors_1.InvalidArgumentError('Audiohelper, and pstream are required arguments');\n    }\n    if (!(this instanceof PeerConnection)) {\n        return new PeerConnection(audioHelper, pstream, options);\n    }\n    this._log = new log_1.default('PeerConnection');\n    function noop() {\n        this._log.warn('Unexpected noop call in peerconnection');\n    }\n    this.onaudio = noop;\n    this.onopen = noop;\n    this.onerror = noop;\n    this.onclose = noop;\n    this.ondisconnected = noop;\n    this.onfailed = noop;\n    this.onconnected = noop;\n    this.onreconnected = noop;\n    this.onsignalingstatechange = noop;\n    this.ondtlstransportstatechange = noop;\n    this.onicegatheringfailure = noop;\n    this.onicegatheringstatechange = noop;\n    this.oniceconnectionstatechange = noop;\n    this.onpcconnectionstatechange = noop;\n    this.onicecandidate = noop;\n    this.onselectedcandidatepairchange = noop;\n    this.onvolume = noop;\n    this.version = null;\n    this.pstream = pstream;\n    this.stream = null;\n    this.sinkIds = new Set(['default']);\n    this.outputs = new Map();\n    this.status = 'connecting';\n    this.callSid = null;\n    this.isMuted = false;\n    var AudioContext = typeof window !== 'undefined'\n        && (window.AudioContext || window.webkitAudioContext);\n    this._isSinkSupported = !!AudioContext &&\n        typeof HTMLAudioElement !== 'undefined' && HTMLAudioElement.prototype.setSinkId;\n    // NOTE(mmalavalli): Since each Connection creates its own AudioContext,\n    // after 6 instances an exception is thrown. Refer https://www.w3.org/2011/audio/track/issues/3.\n    // In order to get around it, we are re-using the Device's AudioContext.\n    this._audioContext = AudioContext && audioHelper._audioContext;\n    this._audioHelper = audioHelper;\n    this._hasIceCandidates = false;\n    this._hasIceGatheringFailures = false;\n    this._iceGatheringTimeoutId = null;\n    this._masterAudio = null;\n    this._masterAudioDeviceId = null;\n    this._mediaStreamSource = null;\n    this._dtmfSender = null;\n    this._dtmfSenderUnsupported = false;\n    this._callEvents = [];\n    this._nextTimeToPublish = Date.now();\n    this._onAnswerOrRinging = noop;\n    this._onHangup = noop;\n    this._remoteStream = null;\n    this._shouldManageStream = true;\n    this._iceState = INITIAL_ICE_CONNECTION_STATE;\n    this._isUnifiedPlan = options.isUnifiedPlan;\n    this.options = options = options || {};\n    this.navigator = options.navigator\n        || (typeof navigator !== 'undefined' ? navigator : null);\n    this.util = options.util || util;\n    this.codecPreferences = options.codecPreferences;\n    return this;\n}\nPeerConnection.prototype.uri = function () {\n    return this._uri;\n};\n/**\n * Open the underlying RTCPeerConnection with a MediaStream obtained by\n *   passed constraints. The resulting MediaStream is created internally\n *   and will therefore be managed and destroyed internally.\n * @param {MediaStreamConstraints} constraints\n */\nPeerConnection.prototype.openDefaultDeviceWithConstraints = function (constraints) {\n    return this._audioHelper._openDefaultDeviceWithConstraints(constraints)\n        .then(this._setInputTracksFromStream.bind(this, false));\n};\n/**\n * Replace the existing input audio tracks with the audio tracks from the\n *   passed input audio stream. We re-use the existing stream because\n *   the AnalyzerNode is bound to the stream.\n * @param {MediaStream} stream\n */\nPeerConnection.prototype.setInputTracksFromStream = function (stream) {\n    var self = this;\n    return this._setInputTracksFromStream(true, stream).then(function () {\n        self._shouldManageStream = false;\n    });\n};\nPeerConnection.prototype._createAnalyser = function (audioContext, options) {\n    options = Object.assign({\n        fftSize: 32,\n        smoothingTimeConstant: 0.3,\n    }, options);\n    var analyser = audioContext.createAnalyser();\n    // tslint:disable-next-line\n    for (var field in options) {\n        analyser[field] = options[field];\n    }\n    return analyser;\n};\nPeerConnection.prototype._setVolumeHandler = function (handler) {\n    this.onvolume = handler;\n};\nPeerConnection.prototype._startPollingVolume = function () {\n    if (!this._audioContext || !this.stream || !this._remoteStream) {\n        return;\n    }\n    var audioContext = this._audioContext;\n    var inputAnalyser = this._inputAnalyser = this._createAnalyser(audioContext);\n    var inputBufferLength = inputAnalyser.frequencyBinCount;\n    var inputDataArray = new Uint8Array(inputBufferLength);\n    this._inputAnalyser2 = this._createAnalyser(audioContext, {\n        maxDecibels: 0,\n        minDecibels: -127,\n        smoothingTimeConstant: 0,\n    });\n    var outputAnalyser = this._outputAnalyser = this._createAnalyser(audioContext);\n    var outputBufferLength = outputAnalyser.frequencyBinCount;\n    var outputDataArray = new Uint8Array(outputBufferLength);\n    this._outputAnalyser2 = this._createAnalyser(audioContext, {\n        maxDecibels: 0,\n        minDecibels: -127,\n        smoothingTimeConstant: 0,\n    });\n    this._updateInputStreamSource(this.stream);\n    this._updateOutputStreamSource(this._remoteStream);\n    var self = this;\n    setTimeout(function emitVolume() {\n        if (!self._audioContext) {\n            return;\n        }\n        else if (self.status === 'closed') {\n            self._inputAnalyser.disconnect();\n            self._outputAnalyser.disconnect();\n            self._inputAnalyser2.disconnect();\n            self._outputAnalyser2.disconnect();\n            return;\n        }\n        self._inputAnalyser.getByteFrequencyData(inputDataArray);\n        var inputVolume = self.util.average(inputDataArray);\n        self._inputAnalyser2.getByteFrequencyData(inputDataArray);\n        var inputVolume2 = self.util.average(inputDataArray);\n        self._outputAnalyser.getByteFrequencyData(outputDataArray);\n        var outputVolume = self.util.average(outputDataArray);\n        self._outputAnalyser2.getByteFrequencyData(outputDataArray);\n        var outputVolume2 = self.util.average(outputDataArray);\n        self.onvolume(inputVolume / 255, outputVolume / 255, inputVolume2, outputVolume2);\n        setTimeout(emitVolume, VOLUME_INTERVAL_MS);\n    }, VOLUME_INTERVAL_MS);\n};\nPeerConnection.prototype._stopStream = function _stopStream() {\n    // We shouldn't stop the tracks if they were not created inside\n    //   this PeerConnection.\n    if (!this._shouldManageStream) {\n        return;\n    }\n    this._audioHelper._stopDefaultInputDeviceStream();\n};\n/**\n * Update the stream source with the new input audio stream.\n * @param {MediaStream} stream\n * @private\n */\nPeerConnection.prototype._updateInputStreamSource = function (stream) {\n    if (this._inputStreamSource) {\n        this._inputStreamSource.disconnect();\n    }\n    try {\n        this._inputStreamSource = this._audioContext.createMediaStreamSource(stream);\n        this._inputStreamSource.connect(this._inputAnalyser);\n        this._inputStreamSource.connect(this._inputAnalyser2);\n    }\n    catch (ex) {\n        this._log.warn('Unable to update input MediaStreamSource', ex);\n        this._inputStreamSource = null;\n    }\n};\n/**\n * Update the stream source with the new ouput audio stream.\n * @param {MediaStream} stream\n * @private\n */\nPeerConnection.prototype._updateOutputStreamSource = function (stream) {\n    if (this._outputStreamSource) {\n        this._outputStreamSource.disconnect();\n    }\n    try {\n        this._outputStreamSource = this._audioContext.createMediaStreamSource(stream);\n        this._outputStreamSource.connect(this._outputAnalyser);\n        this._outputStreamSource.connect(this._outputAnalyser2);\n    }\n    catch (ex) {\n        this._log.warn('Unable to update output MediaStreamSource', ex);\n        this._outputStreamSource = null;\n    }\n};\n/**\n * Replace the tracks of the current stream with new tracks. We do this rather than replacing the\n *   whole stream because AnalyzerNodes are bound to a stream.\n * @param {Boolean} shouldClone - Whether the stream should be cloned if it is the first\n *   stream, or set directly. As a rule of thumb, streams that are passed in externally may have\n *   their lifecycle managed externally, and should be cloned so that we do not tear it or its tracks\n *   down when the call ends. Streams that we create internally (inside PeerConnection) should be set\n *   directly so that when the call ends it is disposed of.\n * @param {MediaStream} newStream - The new stream to copy the tracks over from.\n * @private\n */\nPeerConnection.prototype._setInputTracksFromStream = function (shouldClone, newStream) {\n    return this._isUnifiedPlan\n        ? this._setInputTracksForUnifiedPlan(shouldClone, newStream)\n        : this._setInputTracksForPlanB(shouldClone, newStream);\n};\n/**\n * Replace the tracks of the current stream with new tracks using the 'plan-b' method.\n * @param {Boolean} shouldClone - Whether the stream should be cloned if it is the first\n *   stream, or set directly. As a rule of thumb, streams that are passed in externally may have\n *   their lifecycle managed externally, and should be cloned so that we do not tear it or its tracks\n *   down when the call ends. Streams that we create internally (inside PeerConnection) should be set\n *   directly so that when the call ends it is disposed of.\n * @param {MediaStream} newStream - The new stream to copy the tracks over from.\n * @private\n */\nPeerConnection.prototype._setInputTracksForPlanB = function (shouldClone, newStream) {\n    var _this = this;\n    if (!newStream) {\n        return Promise.reject(new errors_1.InvalidArgumentError('Can not set input stream to null while in a call'));\n    }\n    if (!newStream.getAudioTracks().length) {\n        return Promise.reject(new errors_1.InvalidArgumentError('Supplied input stream has no audio tracks'));\n    }\n    var localStream = this.stream;\n    if (!localStream) {\n        // We can't use MediaStream.clone() here because it stopped copying over tracks\n        //   as of Chrome 61. https://bugs.chromium.org/p/chromium/issues/detail?id=770908\n        this.stream = shouldClone ? cloneStream(newStream) : newStream;\n    }\n    else {\n        this._stopStream();\n        removeStream(this.version.pc, localStream);\n        localStream.getAudioTracks().forEach(localStream.removeTrack, localStream);\n        newStream.getAudioTracks().forEach(localStream.addTrack, localStream);\n        addStream(this.version.pc, newStream);\n        this._updateInputStreamSource(this.stream);\n    }\n    // Apply mute settings to new input track\n    this.mute(this.isMuted);\n    if (!this.version) {\n        return Promise.resolve(this.stream);\n    }\n    return new Promise(function (resolve, reject) {\n        _this.version.createOffer(_this.options.maxAverageBitrate, { audio: true }, function () {\n            _this.version.processAnswer(_this.codecPreferences, _this._answerSdp, function () {\n                resolve(_this.stream);\n            }, reject);\n        }, reject);\n    });\n};\n/**\n * Replace the tracks of the current stream with new tracks using the 'unified-plan' method.\n * @param {Boolean} shouldClone - Whether the stream should be cloned if it is the first\n *   stream, or set directly. As a rule of thumb, streams that are passed in externally may have\n *   their lifecycle managed externally, and should be cloned so that we do not tear it or its tracks\n *   down when the call ends. Streams that we create internally (inside PeerConnection) should be set\n *   directly so that when the call ends it is disposed of.\n * @param {MediaStream} newStream - The new stream to copy the tracks over from.\n * @private\n */\nPeerConnection.prototype._setInputTracksForUnifiedPlan = function (shouldClone, newStream) {\n    var _this = this;\n    if (!newStream) {\n        return Promise.reject(new errors_1.InvalidArgumentError('Can not set input stream to null while in a call'));\n    }\n    if (!newStream.getAudioTracks().length) {\n        return Promise.reject(new errors_1.InvalidArgumentError('Supplied input stream has no audio tracks'));\n    }\n    var localStream = this.stream;\n    var getStreamPromise = function () {\n        // Apply mute settings to new input track\n        _this.mute(_this.isMuted);\n        return Promise.resolve(_this.stream);\n    };\n    if (!localStream) {\n        // We can't use MediaStream.clone() here because it stopped copying over tracks\n        //   as of Chrome 61. https://bugs.chromium.org/p/chromium/issues/detail?id=770908\n        this.stream = shouldClone ? cloneStream(newStream, this.options.MediaStream) : newStream;\n    }\n    else {\n        // If the call was started with gUM, and we are now replacing that track with an\n        // external stream's tracks, we should stop the old managed track.\n        if (this._shouldManageStream) {\n            this._stopStream();\n        }\n        if (!this._sender) {\n            this._sender = this.version.pc.getSenders()[0];\n        }\n        return this._sender.replaceTrack(newStream.getAudioTracks()[0]).then(function () {\n            _this._updateInputStreamSource(newStream);\n            _this.stream = shouldClone ? cloneStream(newStream, _this.options.MediaStream) : newStream;\n            return getStreamPromise();\n        });\n    }\n    return getStreamPromise();\n};\nPeerConnection.prototype._onInputDevicesChanged = function () {\n    if (!this.stream) {\n        return;\n    }\n    // If all of our active tracks are ended, then our active input was lost\n    var activeInputWasLost = this.stream.getAudioTracks().every(function (track) { return track.readyState === 'ended'; });\n    // We only want to act if we manage the stream in PeerConnection (It was created\n    // here, rather than passed in.)\n    if (activeInputWasLost && this._shouldManageStream) {\n        this.openDefaultDeviceWithConstraints({ audio: true });\n    }\n};\nPeerConnection.prototype._onIceGatheringFailure = function (type) {\n    this._hasIceGatheringFailures = true;\n    this.onicegatheringfailure(type);\n};\nPeerConnection.prototype._onMediaConnectionStateChange = function (newState) {\n    var previousState = this._iceState;\n    if (previousState === newState\n        || (newState !== 'connected'\n            && newState !== 'disconnected'\n            && newState !== 'failed')) {\n        return;\n    }\n    this._iceState = newState;\n    var message;\n    switch (newState) {\n        case 'connected':\n            if (previousState === 'disconnected' || previousState === 'failed') {\n                message = 'ICE liveliness check succeeded. Connection with Twilio restored';\n                this._log.info(message);\n                this.onreconnected(message);\n            }\n            else {\n                message = 'Media connection established.';\n                this._log.info(message);\n                this.onconnected(message);\n            }\n            this._stopIceGatheringTimeout();\n            this._hasIceGatheringFailures = false;\n            break;\n        case 'disconnected':\n            message = 'ICE liveliness check failed. May be having trouble connecting to Twilio';\n            this._log.warn(message);\n            this.ondisconnected(message);\n            break;\n        case 'failed':\n            message = 'Connection with Twilio was interrupted.';\n            this._log.warn(message);\n            this.onfailed(message);\n            break;\n    }\n};\nPeerConnection.prototype._setSinkIds = function (sinkIds) {\n    if (!this._isSinkSupported) {\n        return Promise.reject(new errors_1.NotSupportedError('Audio output selection is not supported by this browser'));\n    }\n    this.sinkIds = new Set(sinkIds.forEach ? sinkIds : [sinkIds]);\n    return this.version\n        ? this._updateAudioOutputs()\n        : Promise.resolve();\n};\n/**\n * Start timeout for ICE Gathering\n */\nPeerConnection.prototype._startIceGatheringTimeout = function startIceGatheringTimeout() {\n    var _this = this;\n    this._stopIceGatheringTimeout();\n    this._iceGatheringTimeoutId = setTimeout(function () {\n        _this._onIceGatheringFailure(ICE_GATHERING_FAIL_TIMEOUT);\n    }, ICE_GATHERING_TIMEOUT);\n};\n/**\n * Stop timeout for ICE Gathering\n */\nPeerConnection.prototype._stopIceGatheringTimeout = function stopIceGatheringTimeout() {\n    clearInterval(this._iceGatheringTimeoutId);\n};\nPeerConnection.prototype._updateAudioOutputs = function updateAudioOutputs() {\n    var addedOutputIds = Array.from(this.sinkIds).filter(function (id) {\n        return !this.outputs.has(id);\n    }, this);\n    var removedOutputIds = Array.from(this.outputs.keys()).filter(function (id) {\n        return !this.sinkIds.has(id);\n    }, this);\n    var self = this;\n    var createOutputPromises = addedOutputIds.map(this._createAudioOutput, this);\n    return Promise.all(createOutputPromises).then(function () { return Promise.all(removedOutputIds.map(self._removeAudioOutput, self)); });\n};\nPeerConnection.prototype._createAudio = function createAudio(arr) {\n    var audio = new Audio(arr);\n    this.onaudio(audio);\n    return audio;\n};\nPeerConnection.prototype._createAudioOutput = function createAudioOutput(id) {\n    var dest = null;\n    if (this._mediaStreamSource) {\n        dest = this._audioContext.createMediaStreamDestination();\n        this._mediaStreamSource.connect(dest);\n    }\n    var audio = this._createAudio();\n    setAudioSource(audio, dest && dest.stream ? dest.stream : this.pcStream);\n    var self = this;\n    return audio.setSinkId(id).then(function () { return audio.play(); }).then(function () {\n        self.outputs.set(id, {\n            audio: audio,\n            dest: dest,\n        });\n    });\n};\nPeerConnection.prototype._removeAudioOutputs = function removeAudioOutputs() {\n    if (this._masterAudio && typeof this._masterAudioDeviceId !== 'undefined') {\n        this._disableOutput(this, this._masterAudioDeviceId);\n        this.outputs.delete(this._masterAudioDeviceId);\n        this._masterAudioDeviceId = null;\n        // Release the audio resources before deleting the audio\n        if (!this._masterAudio.paused) {\n            this._masterAudio.pause();\n        }\n        if (typeof this._masterAudio.srcObject !== 'undefined') {\n            this._masterAudio.srcObject = null;\n        }\n        else {\n            this._masterAudio.src = '';\n        }\n        this._masterAudio = null;\n    }\n    return Array.from(this.outputs.keys()).map(this._removeAudioOutput, this);\n};\nPeerConnection.prototype._disableOutput = function disableOutput(pc, id) {\n    var output = pc.outputs.get(id);\n    if (!output) {\n        return;\n    }\n    if (output.audio) {\n        output.audio.pause();\n        output.audio.src = '';\n    }\n    if (output.dest) {\n        output.dest.disconnect();\n    }\n};\n/**\n * Disable a non-master output, and update the master output to assume its state. This\n *   is called when the device ID assigned to the master output has been removed from\n *   active devices. We can not simply remove the master audio output, so we must\n *   instead reassign it.\n * @private\n * @param {PeerConnection} pc\n * @param {string} masterId - The current device ID assigned to the master audio element.\n */\nPeerConnection.prototype._reassignMasterOutput = function reassignMasterOutput(pc, masterId) {\n    var masterOutput = pc.outputs.get(masterId);\n    pc.outputs.delete(masterId);\n    var self = this;\n    var activeDeviceId = Array.from(pc.outputs.keys())[0];\n    // The audio device key could also be '' on Chrome if no media device permissions are allowed\n    var idToReplace = typeof activeDeviceId === 'string' ? activeDeviceId : 'default';\n    return masterOutput.audio.setSinkId(idToReplace).then(function () {\n        self._disableOutput(pc, idToReplace);\n        pc.outputs.set(idToReplace, masterOutput);\n        pc._masterAudioDeviceId = idToReplace;\n    }).catch(function rollback() {\n        pc.outputs.set(masterId, masterOutput);\n        self._log.info('Could not reassign master output. Attempted to roll back.');\n    });\n};\nPeerConnection.prototype._removeAudioOutput = function removeAudioOutput(id) {\n    if (this._masterAudioDeviceId === id) {\n        return this._reassignMasterOutput(this, id);\n    }\n    this._disableOutput(this, id);\n    this.outputs.delete(id);\n    return Promise.resolve();\n};\n/**\n * Use an AudioContext to potentially split our audio output stream to multiple\n *   audio devices. This is only available to browsers with AudioContext and\n *   HTMLAudioElement.setSinkId() available. We save the source stream in\n *   _masterAudio, and use it for one of the active audio devices. We keep\n *   track of its ID because we must replace it if we lose its initial device.\n */\nPeerConnection.prototype._onAddTrack = function onAddTrack(pc, stream) {\n    var audio = pc._masterAudio = this._createAudio();\n    setAudioSource(audio, stream);\n    audio.play();\n    // Assign the initial master audio element to a random active output device\n    var activeDeviceId = Array.from(pc.outputs.keys())[0];\n    // The audio device key could also be '' on Chrome if no media device permissions are allowed\n    var deviceId = typeof activeDeviceId === 'string' ? activeDeviceId : 'default';\n    pc._masterAudioDeviceId = deviceId;\n    pc.outputs.set(deviceId, { audio: audio });\n    try {\n        pc._mediaStreamSource = pc._audioContext.createMediaStreamSource(stream);\n    }\n    catch (ex) {\n        this._log.warn('Unable to create a MediaStreamSource from onAddTrack', ex);\n        this._mediaStreamSource = null;\n    }\n    pc.pcStream = stream;\n    pc._updateAudioOutputs();\n};\n/**\n * Use a single audio element to play the audio output stream. This does not\n *   support multiple output devices, and is a fallback for when AudioContext\n *   and/or HTMLAudioElement.setSinkId() is not available to the client.\n */\nPeerConnection.prototype._fallbackOnAddTrack = function fallbackOnAddTrack(pc, stream) {\n    var audio = document && document.createElement('audio');\n    audio.autoplay = true;\n    if (!setAudioSource(audio, stream)) {\n        pc._log.info('Error attaching stream to element.');\n    }\n    pc.outputs.set('default', { audio: audio });\n};\nPeerConnection.prototype._setEncodingParameters = function (enableDscp) {\n    if (!enableDscp\n        || !this._sender\n        || typeof this._sender.getParameters !== 'function'\n        || typeof this._sender.setParameters !== 'function') {\n        return;\n    }\n    var params = this._sender.getParameters();\n    if (!params.priority && !(params.encodings && params.encodings.length)) {\n        return;\n    }\n    // This is how MDN's RTPSenderParameters defines priority\n    params.priority = 'high';\n    // And this is how it's currently implemented in Chrome M72+\n    if (params.encodings && params.encodings.length) {\n        params.encodings.forEach(function (encoding) {\n            encoding.priority = 'high';\n            encoding.networkPriority = 'high';\n        });\n    }\n    this._sender.setParameters(params);\n};\nPeerConnection.prototype._setupPeerConnection = function (rtcConfiguration) {\n    var _this = this;\n    var self = this;\n    var version = new (this.options.rtcpcFactory || rtcpc_1.default)({ RTCPeerConnection: this.options.RTCPeerConnection });\n    version.create(rtcConfiguration);\n    addStream(version.pc, this.stream);\n    var supportedCodecs = RTCRtpReceiver.getCapabilities('audio').codecs;\n    this._log.debug('sorting codecs', supportedCodecs, this.codecPreferences);\n    var sortedCodecs = util.sortByMimeTypes(supportedCodecs, this.codecPreferences);\n    var transceiver = version.pc.getTransceivers()[0];\n    this._log.debug('setting sorted codecs', sortedCodecs);\n    transceiver.setCodecPreferences(sortedCodecs);\n    var eventName = 'ontrack' in version.pc\n        ? 'ontrack' : 'onaddstream';\n    version.pc[eventName] = function (event) {\n        var stream = self._remoteStream = event.stream || event.streams[0];\n        if (typeof version.pc.getSenders === 'function') {\n            _this._sender = version.pc.getSenders()[0];\n        }\n        if (self._isSinkSupported) {\n            self._onAddTrack(self, stream);\n        }\n        else {\n            self._fallbackOnAddTrack(self, stream);\n        }\n        self._startPollingVolume();\n    };\n    return version;\n};\nPeerConnection.prototype._maybeSetIceAggressiveNomination = function (sdp) {\n    return this.options.forceAggressiveIceNomination ? (0, sdp_1.setIceAggressiveNomination)(sdp) : sdp;\n};\nPeerConnection.prototype._setupChannel = function () {\n    var _this = this;\n    var pc = this.version.pc;\n    // Chrome 25 supports onopen\n    this.version.pc.onopen = function () {\n        _this.status = 'open';\n        _this.onopen();\n    };\n    // Chrome 26 doesn't support onopen so must detect state change\n    this.version.pc.onstatechange = function () {\n        if (_this.version.pc && _this.version.pc.readyState === 'stable') {\n            _this.status = 'open';\n            _this.onopen();\n        }\n    };\n    // Chrome 27 changed onstatechange to onsignalingstatechange\n    this.version.pc.onsignalingstatechange = function () {\n        var state = pc.signalingState;\n        _this._log.info(\"signalingState is \\\"\".concat(state, \"\\\"\"));\n        if (_this.version.pc && _this.version.pc.signalingState === 'stable') {\n            _this.status = 'open';\n            _this.onopen();\n        }\n        _this.onsignalingstatechange(pc.signalingState);\n    };\n    // Chrome 72+\n    pc.onconnectionstatechange = function (event) {\n        var state = pc.connectionState;\n        if (!state && event && event.target) {\n            // VDI environment\n            var targetPc = event.target;\n            state = targetPc.connectionState || targetPc.connectionState_;\n            _this._log.info(\"pc.connectionState not detected. Using target PC. State=\".concat(state));\n        }\n        if (!state) {\n            _this._log.warn(\"onconnectionstatechange detected but state is \\\"\".concat(state, \"\\\"\"));\n        }\n        else {\n            _this._log.info(\"pc.connectionState is \\\"\".concat(state, \"\\\"\"));\n        }\n        _this.onpcconnectionstatechange(state);\n        _this._onMediaConnectionStateChange(state);\n    };\n    pc.onicecandidate = function (event) {\n        var candidate = event.candidate;\n        if (candidate) {\n            _this._hasIceCandidates = true;\n            _this.onicecandidate(candidate);\n            _this._setupRTCIceTransportListener();\n        }\n        _this._log.info(\"ICE Candidate: \".concat(JSON.stringify(candidate)));\n    };\n    pc.onicegatheringstatechange = function () {\n        var state = pc.iceGatheringState;\n        if (state === 'gathering') {\n            _this._startIceGatheringTimeout();\n        }\n        else if (state === 'complete') {\n            _this._stopIceGatheringTimeout();\n            // Fail if no candidates found\n            if (!_this._hasIceCandidates) {\n                _this._onIceGatheringFailure(ICE_GATHERING_FAIL_NONE);\n            }\n            // There was a failure mid-gathering phase. We want to start our timer and issue\n            // an ice restart if we don't get connected after our timeout\n            if (_this._hasIceCandidates && _this._hasIceGatheringFailures) {\n                _this._startIceGatheringTimeout();\n            }\n        }\n        _this._log.info(\"pc.iceGatheringState is \\\"\".concat(pc.iceGatheringState, \"\\\"\"));\n        _this.onicegatheringstatechange(state);\n    };\n    pc.oniceconnectionstatechange = function () {\n        _this._log.info(\"pc.iceConnectionState is \\\"\".concat(pc.iceConnectionState, \"\\\"\"));\n        _this.oniceconnectionstatechange(pc.iceConnectionState);\n        _this._onMediaConnectionStateChange(pc.iceConnectionState);\n    };\n};\nPeerConnection.prototype._initializeMediaStream = function (rtcConfiguration) {\n    // if mediastream already open then do nothing\n    if (this.status === 'open') {\n        return false;\n    }\n    if (this.pstream.status === 'disconnected') {\n        this.onerror({ info: {\n                code: 31000,\n                message: 'Cannot establish connection. Client is disconnected',\n                twilioError: new errors_1.SignalingErrors.ConnectionDisconnected(),\n            } });\n        this.close();\n        return false;\n    }\n    this.version = this._setupPeerConnection(rtcConfiguration);\n    this._setupChannel();\n    return true;\n};\n/**\n * Remove reconnection-related listeners\n * @private\n */\nPeerConnection.prototype._removeReconnectionListeners = function () {\n    if (this.pstream) {\n        this.pstream.removeListener('answer', this._onAnswerOrRinging);\n        this.pstream.removeListener('hangup', this._onHangup);\n    }\n};\n/**\n * Setup a listener for RTCDtlsTransport to capture state changes events\n * @private\n */\nPeerConnection.prototype._setupRTCDtlsTransportListener = function () {\n    var _this = this;\n    var dtlsTransport = this.getRTCDtlsTransport();\n    if (!dtlsTransport || dtlsTransport.onstatechange) {\n        return;\n    }\n    var handler = function () {\n        _this._log.info(\"dtlsTransportState is \\\"\".concat(dtlsTransport.state, \"\\\"\"));\n        _this.ondtlstransportstatechange(dtlsTransport.state);\n    };\n    // Publish initial state\n    handler();\n    dtlsTransport.onstatechange = handler;\n};\n/**\n * Setup a listener for RTCIceTransport to capture selected candidate pair changes\n * @private\n */\nPeerConnection.prototype._setupRTCIceTransportListener = function () {\n    var _this = this;\n    var iceTransport = this._getRTCIceTransport();\n    if (!iceTransport || iceTransport.onselectedcandidatepairchange) {\n        return;\n    }\n    iceTransport.onselectedcandidatepairchange = function () {\n        return _this.onselectedcandidatepairchange(iceTransport.getSelectedCandidatePair());\n    };\n};\n/**\n * Restarts ICE for the current connection\n * ICE Restart failures are ignored. Retries are managed in Connection\n * @private\n */\nPeerConnection.prototype.iceRestart = function () {\n    var _this = this;\n    this._log.info('Attempting to restart ICE...');\n    this._hasIceCandidates = false;\n    this.version.createOffer(this.options.maxAverageBitrate, { iceRestart: true }).then(function () {\n        _this._removeReconnectionListeners();\n        _this._onAnswerOrRinging = function (payload) {\n            _this._removeReconnectionListeners();\n            if (!payload.sdp || _this.version.pc.signalingState !== 'have-local-offer') {\n                var message = 'Invalid state or param during ICE Restart:'\n                    + \"hasSdp:\".concat(!!payload.sdp, \", signalingState:\").concat(_this.version.pc.signalingState);\n                _this._log.warn(message);\n                return;\n            }\n            var sdp = _this._maybeSetIceAggressiveNomination(payload.sdp);\n            _this._answerSdp = sdp;\n            if (_this.status !== 'closed') {\n                _this.version.processAnswer(_this.codecPreferences, sdp, null, function (err) {\n                    var message = err && err.message ? err.message : err;\n                    _this._log.error(\"Failed to process answer during ICE Restart. Error: \".concat(message));\n                });\n            }\n        };\n        _this._onHangup = function () {\n            _this._log.info('Received hangup during ICE Restart');\n            _this._removeReconnectionListeners();\n        };\n        _this.pstream.on('answer', _this._onAnswerOrRinging);\n        _this.pstream.on('hangup', _this._onHangup);\n        _this.pstream.reinvite(_this.version.getSDP(), _this.callSid);\n    }).catch(function (err) {\n        var message = err && err.message ? err.message : err;\n        _this._log.error(\"Failed to createOffer during ICE Restart. Error: \".concat(message));\n        // CreateOffer failures doesn't transition ice state to failed\n        // We need trigger it so it can be picked up by retries\n        _this.onfailed(message);\n    });\n};\nPeerConnection.prototype.makeOutgoingCall = function (params, signalingReconnectToken, callsid, rtcConfiguration, onMediaStarted) {\n    var _this = this;\n    if (!this._initializeMediaStream(rtcConfiguration)) {\n        return;\n    }\n    var self = this;\n    this.callSid = callsid;\n    function onAnswerSuccess() {\n        if (self.options) {\n            self._setEncodingParameters(self.options.dscp);\n        }\n        onMediaStarted(self.version.pc);\n    }\n    function onAnswerError(err) {\n        var errMsg = err.message || err;\n        self.onerror({ info: {\n                code: 31000,\n                message: \"Error processing answer: \".concat(errMsg),\n                twilioError: new errors_1.MediaErrors.ClientRemoteDescFailed(),\n            } });\n    }\n    this._onAnswerOrRinging = function (payload) {\n        if (!payload.sdp) {\n            return;\n        }\n        var sdp = _this._maybeSetIceAggressiveNomination(payload.sdp);\n        self._answerSdp = sdp;\n        if (self.status !== 'closed') {\n            self.version.processAnswer(_this.codecPreferences, sdp, onAnswerSuccess, onAnswerError);\n        }\n        self.pstream.removeListener('answer', self._onAnswerOrRinging);\n        self.pstream.removeListener('ringing', self._onAnswerOrRinging);\n    };\n    this.pstream.on('answer', this._onAnswerOrRinging);\n    this.pstream.on('ringing', this._onAnswerOrRinging);\n    function onOfferSuccess() {\n        if (self.status !== 'closed') {\n            if (signalingReconnectToken) {\n                self.pstream.reconnect(self.version.getSDP(), self.callSid, signalingReconnectToken);\n            }\n            else {\n                self.pstream.invite(self.version.getSDP(), self.callSid, params);\n            }\n            self._setupRTCDtlsTransportListener();\n        }\n    }\n    function onOfferError(err) {\n        var errMsg = err.message || err;\n        self.onerror({ info: {\n                code: 31000,\n                message: \"Error creating the offer: \".concat(errMsg),\n                twilioError: new errors_1.MediaErrors.ClientLocalDescFailed(),\n            } });\n    }\n    this.version.createOffer(this.options.maxAverageBitrate, { audio: true }, onOfferSuccess, onOfferError);\n};\nPeerConnection.prototype.answerIncomingCall = function (callSid, sdp, rtcConfiguration, onMediaStarted) {\n    if (!this._initializeMediaStream(rtcConfiguration)) {\n        return;\n    }\n    sdp = this._maybeSetIceAggressiveNomination(sdp);\n    this._answerSdp = sdp.replace(/^a=setup:actpass$/gm, 'a=setup:passive');\n    this.callSid = callSid;\n    var self = this;\n    function onAnswerSuccess() {\n        if (self.status !== 'closed') {\n            self.pstream.answer(self.version.getSDP(), callSid);\n            if (self.options) {\n                self._setEncodingParameters(self.options.dscp);\n            }\n            onMediaStarted(self.version.pc);\n            self._setupRTCDtlsTransportListener();\n        }\n    }\n    function onAnswerError(err) {\n        var errMsg = err.message || err;\n        self.onerror({ info: {\n                code: 31000,\n                message: \"Error creating the answer: \".concat(errMsg),\n                twilioError: new errors_1.MediaErrors.ClientRemoteDescFailed(),\n            } });\n    }\n    this.version.processSDP(this.options.maxAverageBitrate, this.codecPreferences, sdp, { audio: true }, onAnswerSuccess, onAnswerError);\n};\nPeerConnection.prototype.close = function () {\n    if (this.version && this.version.pc) {\n        if (this.version.pc.signalingState !== 'closed') {\n            this.version.pc.close();\n        }\n        this.version.pc = null;\n    }\n    if (this.stream) {\n        this.mute(false);\n        this._stopStream();\n    }\n    this.stream = null;\n    this._removeReconnectionListeners();\n    this._stopIceGatheringTimeout();\n    Promise.all(this._removeAudioOutputs()).catch(function () {\n        // We don't need to alert about failures here.\n    });\n    if (this._mediaStreamSource) {\n        this._mediaStreamSource.disconnect();\n    }\n    if (this._inputAnalyser) {\n        this._inputAnalyser.disconnect();\n    }\n    if (this._outputAnalyser) {\n        this._outputAnalyser.disconnect();\n    }\n    if (this._inputAnalyser2) {\n        this._inputAnalyser2.disconnect();\n    }\n    if (this._outputAnalyser2) {\n        this._outputAnalyser2.disconnect();\n    }\n    this.status = 'closed';\n    this.onclose();\n};\nPeerConnection.prototype.reject = function (callSid) {\n    this.callSid = callSid;\n};\nPeerConnection.prototype.ignore = function (callSid) {\n    this.callSid = callSid;\n};\n/**\n * Mute or unmute input audio. If the stream is not yet present, the setting\n *   is saved and applied to future streams/tracks.\n * @params {boolean} shouldMute - Whether the input audio should\n *   be muted or unmuted.\n */\nPeerConnection.prototype.mute = function (shouldMute) {\n    this.isMuted = shouldMute;\n    if (!this.stream) {\n        return;\n    }\n    if (this._sender && this._sender.track) {\n        this._sender.track.enabled = !shouldMute;\n    }\n    else {\n        var audioTracks = typeof this.stream.getAudioTracks === 'function'\n            ? this.stream.getAudioTracks()\n            : this.stream.audioTracks;\n        audioTracks.forEach(function (track) {\n            track.enabled = !shouldMute;\n        });\n    }\n};\n/**\n * Get or create an RTCDTMFSender for the first local audio MediaStreamTrack\n * we can get from the RTCPeerConnection. Return null if unsupported.\n * @instance\n * @returns ?RTCDTMFSender\n */\nPeerConnection.prototype.getOrCreateDTMFSender = function getOrCreateDTMFSender() {\n    if (this._dtmfSender || this._dtmfSenderUnsupported) {\n        return this._dtmfSender || null;\n    }\n    var self = this;\n    var pc = this.version.pc;\n    if (!pc) {\n        this._log.warn('No RTCPeerConnection available to call createDTMFSender on');\n        return null;\n    }\n    if (typeof pc.getSenders === 'function' && (typeof RTCDTMFSender === 'function' || typeof RTCDtmfSender === 'function')) {\n        var chosenSender = pc.getSenders().find(function (sender) { return sender.dtmf; });\n        if (chosenSender) {\n            this._log.info('Using RTCRtpSender#dtmf');\n            this._dtmfSender = chosenSender.dtmf;\n            return this._dtmfSender;\n        }\n    }\n    if (typeof pc.createDTMFSender === 'function' && typeof pc.getLocalStreams === 'function') {\n        var track = pc.getLocalStreams().map(function (stream) {\n            var tracks = self._getAudioTracks(stream);\n            return tracks && tracks[0];\n        })[0];\n        if (!track) {\n            this._log.warn('No local audio MediaStreamTrack available on the RTCPeerConnection to pass to createDTMFSender');\n            return null;\n        }\n        this._log.info('Creating RTCDTMFSender');\n        this._dtmfSender = pc.createDTMFSender(track);\n        return this._dtmfSender;\n    }\n    this._log.info('RTCPeerConnection does not support RTCDTMFSender');\n    this._dtmfSenderUnsupported = true;\n    return null;\n};\n/**\n * Get the RTCDtlTransport object from the PeerConnection\n * @returns RTCDtlTransport\n */\nPeerConnection.prototype.getRTCDtlsTransport = function getRTCDtlsTransport() {\n    var sender = this.version && this.version.pc\n        && typeof this.version.pc.getSenders === 'function'\n        && this.version.pc.getSenders()[0];\n    return sender && sender.transport || null;\n};\nPeerConnection.prototype._canStopMediaStreamTrack = function () { return typeof MediaStreamTrack.prototype.stop === 'function'; };\nPeerConnection.prototype._getAudioTracks = function (stream) { return typeof stream.getAudioTracks === 'function' ?\n    stream.getAudioTracks() : stream.audioTracks; };\n/**\n * Get the RTCIceTransport object from the PeerConnection\n * @returns RTCIceTransport\n */\nPeerConnection.prototype._getRTCIceTransport = function _getRTCIceTransport() {\n    var dtlsTransport = this.getRTCDtlsTransport();\n    return dtlsTransport && dtlsTransport.iceTransport || null;\n};\n// Is PeerConnection.protocol used outside of our SDK? We should remove this if not.\nPeerConnection.protocol = ((function () { return rtcpc_1.default.test() ? new rtcpc_1.default() : null; }))();\nfunction addStream(pc, stream) {\n    if (typeof pc.addTrack === 'function') {\n        stream.getAudioTracks().forEach(function (track) {\n            // The second parameters, stream, should not be necessary per the latest editor's\n            //   draft, but FF requires it. https://bugzilla.mozilla.org/show_bug.cgi?id=1231414\n            pc.addTrack(track, stream);\n        });\n    }\n    else {\n        pc.addStream(stream);\n    }\n}\nfunction cloneStream(oldStream, _MediaStream) {\n    var newStream;\n    if (_MediaStream) {\n        newStream = new _MediaStream();\n    }\n    else if (typeof MediaStream !== 'undefined') {\n        newStream = new MediaStream();\n    }\n    else {\n        newStream = new webkitMediaStream();\n    }\n    oldStream.getAudioTracks().forEach(newStream.addTrack, newStream);\n    return newStream;\n}\nfunction removeStream(pc, stream) {\n    if (typeof pc.removeTrack === 'function') {\n        pc.getSenders().forEach(function (sender) { pc.removeTrack(sender); });\n    }\n    else {\n        pc.removeStream(stream);\n    }\n}\n/**\n * Set the source of an HTMLAudioElement to the specified MediaStream\n * @param {HTMLAudioElement} audio\n * @param {MediaStream} stream\n * @returns {boolean} Whether the audio source was set successfully\n */\nfunction setAudioSource(audio, stream) {\n    if (typeof audio.srcObject !== 'undefined') {\n        audio.srcObject = stream;\n    }\n    else if (typeof audio.mozSrcObject !== 'undefined') {\n        audio.mozSrcObject = stream;\n    }\n    else if (typeof audio.src !== 'undefined') {\n        var _window = audio.options.window || window;\n        audio.src = (_window.URL || _window.webkitURL).createObjectURL(stream);\n    }\n    else {\n        return false;\n    }\n    return true;\n}\nPeerConnection.enabled = rtcpc_1.default.test();\nexports.default = PeerConnection;\n\n},{\"../errors\":15,\"../log\":18,\"../util\":37,\"./rtcpc\":30,\"./sdp\":31}],30:[function(require,module,exports){\n\"use strict\";\n// @ts-nocheck\n// tslint:disable only-arrow-functions\n/* global webkitRTCPeerConnection, mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar log_1 = require(\"../log\");\nvar util = require(\"../util\");\nvar sdp_1 = require(\"./sdp\");\nfunction RTCPC(options) {\n    this.log = new log_1.default('RTCPC');\n    if (typeof window === 'undefined') {\n        this.log.info('No RTCPeerConnection implementation available. The window object was not found.');\n        return;\n    }\n    if (options && options.RTCPeerConnection) {\n        this.RTCPeerConnection = options.RTCPeerConnection;\n    }\n    else if (typeof window.RTCPeerConnection === 'function') {\n        this.RTCPeerConnection = window.RTCPeerConnection;\n    }\n    else if (typeof window.webkitRTCPeerConnection === 'function') {\n        this.RTCPeerConnection = webkitRTCPeerConnection;\n    }\n    else if (typeof window.mozRTCPeerConnection === 'function') {\n        this.RTCPeerConnection = mozRTCPeerConnection;\n        window.RTCSessionDescription = mozRTCSessionDescription;\n        window.RTCIceCandidate = mozRTCIceCandidate;\n    }\n    else {\n        this.log.info('No RTCPeerConnection implementation available');\n    }\n}\nRTCPC.prototype.create = function (rtcConfiguration) {\n    this.pc = new this.RTCPeerConnection(rtcConfiguration);\n};\nRTCPC.prototype.createModernConstraints = function (c) {\n    // createOffer differs between Chrome 23 and Chrome 24+.\n    // See https://groups.google.com/forum/?fromgroups=#!topic/discuss-webrtc/JBDZtrMumyU\n    // Unfortunately I haven't figured out a way to detect which format\n    // is required ahead of time, so we'll first try the old way, and\n    // if we get an exception, then we'll try the new way.\n    if (typeof c === 'undefined') {\n        return null;\n    }\n    // NOTE(mroberts): As of Chrome 38, Chrome still appears to expect\n    // constraints under the 'mandatory' key, and with the first letter of each\n    // constraint capitalized. Firefox, on the other hand, has deprecated the\n    // 'mandatory' key and does not expect the first letter of each constraint\n    // capitalized.\n    var nc = Object.assign({}, c);\n    if (typeof webkitRTCPeerConnection !== 'undefined' && !util.isLegacyEdge()) {\n        nc.mandatory = {};\n        if (typeof c.audio !== 'undefined') {\n            nc.mandatory.OfferToReceiveAudio = c.audio;\n        }\n        if (typeof c.video !== 'undefined') {\n            nc.mandatory.OfferToReceiveVideo = c.video;\n        }\n    }\n    else {\n        if (typeof c.audio !== 'undefined') {\n            nc.offerToReceiveAudio = c.audio;\n        }\n        if (typeof c.video !== 'undefined') {\n            nc.offerToReceiveVideo = c.video;\n        }\n    }\n    delete nc.audio;\n    delete nc.video;\n    return nc;\n};\nRTCPC.prototype.createOffer = function (maxAverageBitrate, constraints, onSuccess, onError) {\n    var _this = this;\n    constraints = this.createModernConstraints(constraints);\n    return promisifyCreate(this.pc.createOffer, this.pc)(constraints).then(function (offer) {\n        if (!_this.pc) {\n            return Promise.resolve();\n        }\n        var sdp = (0, sdp_1.setMaxAverageBitrate)(offer.sdp, maxAverageBitrate);\n        return promisifySet(_this.pc.setLocalDescription, _this.pc)(new RTCSessionDescription({\n            sdp: sdp,\n            type: 'offer',\n        }));\n    }).then(onSuccess, onError);\n};\nRTCPC.prototype.createAnswer = function (maxAverageBitrate, constraints, onSuccess, onError) {\n    var _this = this;\n    constraints = this.createModernConstraints(constraints);\n    return promisifyCreate(this.pc.createAnswer, this.pc)(constraints).then(function (answer) {\n        if (!_this.pc) {\n            return Promise.resolve();\n        }\n        var sdp = (0, sdp_1.setMaxAverageBitrate)(answer.sdp, maxAverageBitrate);\n        return promisifySet(_this.pc.setLocalDescription, _this.pc)(new RTCSessionDescription({\n            sdp: sdp,\n            type: 'answer',\n        }));\n    }).then(onSuccess, onError);\n};\nRTCPC.prototype.processSDP = function (maxAverageBitrate, codecPreferences, sdp, constraints, onSuccess, onError) {\n    var _this = this;\n    sdp = (0, sdp_1.setCodecPreferences)(sdp, codecPreferences);\n    var desc = new RTCSessionDescription({ sdp: sdp, type: 'offer' });\n    return promisifySet(this.pc.setRemoteDescription, this.pc)(desc).then(function () {\n        _this.createAnswer(maxAverageBitrate, constraints, onSuccess, onError);\n    });\n};\nRTCPC.prototype.getSDP = function () {\n    return this.pc.localDescription.sdp;\n};\nRTCPC.prototype.processAnswer = function (codecPreferences, sdp, onSuccess, onError) {\n    if (!this.pc) {\n        return Promise.resolve();\n    }\n    sdp = (0, sdp_1.setCodecPreferences)(sdp, codecPreferences);\n    return promisifySet(this.pc.setRemoteDescription, this.pc)(new RTCSessionDescription({ sdp: sdp, type: 'answer' })).then(onSuccess, onError);\n};\n/* NOTE(mroberts): Firefox 18 through 21 include a `mozRTCPeerConnection`\n   object, but attempting to instantiate it will throw the error\n\n       Error: PeerConnection not enabled (did you set the pref?)\n\n   unless the `media.peerconnection.enabled` pref is enabled. So we need to test\n   if we can actually instantiate `mozRTCPeerConnection`; however, if the user\n   *has* enabled `media.peerconnection.enabled`, we need to perform the same\n   test that we use to detect Firefox 24 and above, namely:\n\n       typeof (new mozRTCPeerConnection()).getLocalStreams === 'function'\n\n    NOTE(rrowland): We no longer support Legacy Edge as of Sep 1, 2020.\n*/\nRTCPC.test = function () {\n    if (typeof navigator === 'object') {\n        var getUserMedia = (navigator.mediaDevices && navigator.mediaDevices.getUserMedia)\n            || navigator.webkitGetUserMedia\n            || navigator.mozGetUserMedia\n            || navigator.getUserMedia;\n        if (util.isLegacyEdge(navigator)) {\n            return false;\n        }\n        if (getUserMedia && typeof window.RTCPeerConnection === 'function') {\n            return true;\n        }\n        else if (getUserMedia && typeof window.webkitRTCPeerConnection === 'function') {\n            return true;\n        }\n        else if (getUserMedia && typeof window.mozRTCPeerConnection === 'function') {\n            try {\n                var test_1 = new window.mozRTCPeerConnection();\n                if (typeof test_1.getLocalStreams !== 'function') {\n                    return false;\n                }\n            }\n            catch (e) {\n                return false;\n            }\n            return true;\n        }\n        else if (typeof RTCIceGatherer !== 'undefined') {\n            return true;\n        }\n    }\n    return false;\n};\nfunction promisify(fn, ctx, areCallbacksFirst, checkRval) {\n    return function () {\n        var args = Array.prototype.slice.call(arguments);\n        return new Promise(function (resolve) {\n            var returnValue = fn.apply(ctx, args);\n            if (!checkRval) {\n                resolve(returnValue);\n                return;\n            }\n            if (typeof returnValue === 'object' && typeof returnValue.then === 'function') {\n                resolve(returnValue);\n            }\n            else {\n                throw new Error();\n            }\n        }).catch(function () { return new Promise(function (resolve, reject) {\n            fn.apply(ctx, areCallbacksFirst\n                ? [resolve, reject].concat(args)\n                : args.concat([resolve, reject]));\n        }); });\n    };\n}\nfunction promisifyCreate(fn, ctx) {\n    return promisify(fn, ctx, true, true);\n}\nfunction promisifySet(fn, ctx) {\n    return promisify(fn, ctx, false, false);\n}\nexports.default = RTCPC;\n\n},{\"../log\":18,\"../util\":37,\"./sdp\":31}],31:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPreferredCodecInfo = getPreferredCodecInfo;\nexports.setCodecPreferences = setCodecPreferences;\nexports.setIceAggressiveNomination = setIceAggressiveNomination;\nexports.setMaxAverageBitrate = setMaxAverageBitrate;\n// @ts-nocheck\nvar util = require(\"../util\");\nvar ptToFixedBitrateAudioCodecName = {\n    0: 'PCMU',\n    8: 'PCMA',\n};\nvar defaultOpusId = 111;\nvar BITRATE_MAX = 510000;\nvar BITRATE_MIN = 6000;\nfunction getPreferredCodecInfo(sdp) {\n    var _a = /a=rtpmap:(\\d+) (\\S+)/m.exec(sdp) || [null, '', ''], codecId = _a[1], codecName = _a[2];\n    var regex = new RegExp(\"a=fmtp:\".concat(codecId, \" (\\\\S+)\"), 'm');\n    var _b = regex.exec(sdp) || [null, ''], codecParams = _b[1];\n    return { codecName: codecName, codecParams: codecParams };\n}\nfunction setIceAggressiveNomination(sdp) {\n    // This only works on Chrome. We don't want any side effects on other browsers\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=1024096\n    // https://issues.corp.twilio.com/browse/CLIENT-6911\n    if (!util.isChrome(window, window.navigator)) {\n        return sdp;\n    }\n    return sdp.split('\\n')\n        .filter(function (line) { return line.indexOf('a=ice-lite') === -1; })\n        .join('\\n');\n}\nfunction setMaxAverageBitrate(sdp, maxAverageBitrate) {\n    if (typeof maxAverageBitrate !== 'number'\n        || maxAverageBitrate < BITRATE_MIN\n        || maxAverageBitrate > BITRATE_MAX) {\n        return sdp;\n    }\n    var matches = /a=rtpmap:(\\d+) opus/m.exec(sdp);\n    var opusId = matches && matches.length ? matches[1] : defaultOpusId;\n    var regex = new RegExp(\"a=fmtp:\".concat(opusId));\n    var lines = sdp.split('\\n').map(function (line) { return regex.test(line)\n        ? line + \";maxaveragebitrate=\".concat(maxAverageBitrate)\n        : line; });\n    return lines.join('\\n');\n}\n/**\n * Return a new SDP string with the re-ordered codec preferences.\n * @param {string} sdp\n * @param {Array<AudioCodec>} preferredCodecs - If empty, the existing order\n *   of audio codecs is preserved\n * @returns {string} Updated SDP string\n */\nfunction setCodecPreferences(sdp, preferredCodecs) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        // Codec preferences should not be applied to m=application sections.\n        if (!/^m=(audio|video)/.test(section)) {\n            return section;\n        }\n        var kind = section.match(/^m=(audio|video)/)[1];\n        var codecMap = createCodecMapForMediaSection(section);\n        var payloadTypes = getReorderedPayloadTypes(codecMap, preferredCodecs);\n        var newSection = setPayloadTypesInMediaSection(payloadTypes, section);\n        var pcmaPayloadTypes = codecMap.get('pcma') || [];\n        var pcmuPayloadTypes = codecMap.get('pcmu') || [];\n        var fixedBitratePayloadTypes = kind === 'audio'\n            ? new Set(pcmaPayloadTypes.concat(pcmuPayloadTypes))\n            : new Set();\n        return fixedBitratePayloadTypes.has(payloadTypes[0])\n            ? newSection.replace(/\\r\\nb=(AS|TIAS):([0-9]+)/g, '')\n            : newSection;\n    })).join('\\r\\n');\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - SDP string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array<string>} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n    return sdp.replace(/\\r\\n\\r\\n$/, '\\r\\n').split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\".concat(mediaSection); }).filter(function (mediaSection) {\n        var kindPattern = new RegExp(\"m=\".concat(kind || '.*'), 'gm');\n        var directionPattern = new RegExp(\"a=\".concat(direction || '.*'), 'gm');\n        return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n    });\n}\n/**\n * Create a Codec Map for the given m= section.\n * @param {string} section - The given m= section\n * @returns {Map<Codec, Array<PT>>}\n */\nfunction createCodecMapForMediaSection(section) {\n    return Array.from(createPtToCodecName(section)).reduce(function (codecMap, pair) {\n        var pt = pair[0];\n        var codecName = pair[1];\n        var pts = codecMap.get(codecName) || [];\n        return codecMap.set(codecName, pts.concat(pt));\n    }, new Map());\n}\n/**\n * Create the reordered Codec Payload Types based on the preferred Codec Names.\n * @param {Map<Codec, Array<PT>>} codecMap - Codec Map\n * @param {Array<Codec>} preferredCodecs - Preferred Codec Names\n * @returns {Array<PT>} Reordered Payload Types\n */\nfunction getReorderedPayloadTypes(codecMap, preferredCodecs) {\n    preferredCodecs = preferredCodecs.map(function (codecName) { return codecName.toLowerCase(); });\n    var preferredPayloadTypes = util.flatMap(preferredCodecs, function (codecName) { return codecMap.get(codecName) || []; });\n    var remainingCodecs = util.difference(Array.from(codecMap.keys()), preferredCodecs);\n    var remainingPayloadTypes = util.flatMap(remainingCodecs, function (codecName) { return codecMap.get(codecName); });\n    return preferredPayloadTypes.concat(remainingPayloadTypes);\n}\n/**\n * Set the given Codec Payload Types in the first line of the given m= section.\n * @param {Array<PT>} payloadTypes - Payload Types\n * @param {string} section - Given m= section\n * @returns {string} - Updated m= section\n */\nfunction setPayloadTypesInMediaSection(payloadTypes, section) {\n    var lines = section.split('\\r\\n');\n    var mLine = lines[0];\n    var otherLines = lines.slice(1);\n    mLine = mLine.replace(/([0-9]+\\s?)+$/, payloadTypes.join(' '));\n    return [mLine].concat(otherLines).join('\\r\\n');\n}\n/**\n * Create a Map from PTs to codec names for the given m= section.\n * @param {string} mediaSection - The given m= section.\n * @returns {Map<PT, Codec>} ptToCodecName\n */\nfunction createPtToCodecName(mediaSection) {\n    return getPayloadTypesInMediaSection(mediaSection).reduce(function (ptToCodecName, pt) {\n        var rtpmapPattern = new RegExp(\"a=rtpmap:\".concat(pt, \" ([^/]+)\"));\n        var matches = mediaSection.match(rtpmapPattern);\n        var codecName = matches\n            ? matches[1].toLowerCase()\n            : ptToFixedBitrateAudioCodecName[pt]\n                ? ptToFixedBitrateAudioCodecName[pt].toLowerCase()\n                : '';\n        return ptToCodecName.set(pt, codecName);\n    }, new Map());\n}\n/**\n * Get the Codec Payload Types present in the first line of the given m= section\n * @param {string} section - The m= section\n * @returns {Array<PT>} Payload Types\n */\nfunction getPayloadTypesInMediaSection(section) {\n    var mLine = section.split('\\r\\n')[0];\n    // In \"m=<kind> <port> <proto> <payload_type_1> <payload_type_2> ... <payload_type_n>\",\n    // the regex matches <port> and the PayloadTypes.\n    var matches = mLine.match(/([0-9]+)/g);\n    // This should not happen, but in case there are no PayloadTypes in\n    // the m= line, return an empty array.\n    if (!matches) {\n        return [];\n    }\n    // Since only the PayloadTypes are needed, we discard the <port>.\n    return matches.slice(1).map(function (match) { return parseInt(match, 10); });\n}\n\n},{\"../util\":37}],32:[function(require,module,exports){\n\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRTCStats = getRTCStats;\nexports.getRTCIceCandidateStatsReport = getRTCIceCandidateStatsReport;\n// @ts-nocheck\n// tslint:disable no-empty\nvar errors_1 = require(\"../errors\");\nvar mockrtcstatsreport_1 = require(\"./mockrtcstatsreport\");\nvar ERROR_PEER_CONNECTION_NULL = 'PeerConnection is null';\nvar ERROR_WEB_RTC_UNSUPPORTED = 'WebRTC statistics are unsupported';\n/**\n * Helper function to find a specific stat from a report.\n * Some environment provide the stats report as a map (regular browsers)\n * but some provide stats report as an array (citrix vdi)\n * @private\n */\nfunction findStatById(report, id) {\n    if (typeof report.get === 'function') {\n        return report.get(id);\n    }\n    return report.find(function (s) { return s.id === id; });\n}\n/**\n * Generate WebRTC statistics report for the given {@link PeerConnection}\n * @param {PeerConnection} peerConnection - Target connection.\n * @return {Promise<RTCStatsReport>} WebRTC RTCStatsReport object\n */\nfunction getRTCStatsReport(peerConnection) {\n    if (!peerConnection) {\n        return Promise.reject(new errors_1.InvalidArgumentError(ERROR_PEER_CONNECTION_NULL));\n    }\n    if (typeof peerConnection.getStats !== 'function') {\n        return Promise.reject(new errors_1.NotSupportedError(ERROR_WEB_RTC_UNSUPPORTED));\n    }\n    var promise;\n    try {\n        promise = peerConnection.getStats();\n    }\n    catch (e) {\n        promise = new Promise(function (resolve) { return peerConnection.getStats(resolve); }).then(mockrtcstatsreport_1.default.fromRTCStatsResponse);\n    }\n    return promise;\n}\n/**\n * @typedef {Object} StatsOptions\n * Used for testing to inject and extract methods.\n * @property {function} [createRTCSample] - Method for parsing an RTCStatsReport\n */\n/**\n * Collects any WebRTC statistics for the given {@link PeerConnection}\n * @param {PeerConnection} peerConnection - Target connection.\n * @param {StatsOptions} options - List of custom options.\n * @return {Promise<RTCSample>} Universally-formatted version of RTC stats.\n */\nfunction getRTCStats(peerConnection, options) {\n    options = Object.assign({ createRTCSample: createRTCSample }, options);\n    return getRTCStatsReport(peerConnection).then(options.createRTCSample);\n}\n/**\n * Generate WebRTC stats report containing relevant information about ICE candidates for the given {@link PeerConnection}\n * @param {PeerConnection} peerConnection - Target connection.\n * @return {Promise<RTCIceCandidateStatsReport>} RTCIceCandidateStatsReport object\n */\nfunction getRTCIceCandidateStatsReport(peerConnection) {\n    return getRTCStatsReport(peerConnection).then(function (report) {\n        // Find the relevant information needed to determine selected candidates later\n        var _a = Array.from(report.values()).reduce(function (rval, stat) {\n            ['candidatePairs', 'localCandidates', 'remoteCandidates'].forEach(function (prop) {\n                if (!rval[prop]) {\n                    rval[prop] = [];\n                }\n            });\n            switch (stat.type) {\n                case 'candidate-pair':\n                    rval.candidatePairs.push(stat);\n                    break;\n                case 'local-candidate':\n                    rval.localCandidates.push(stat);\n                    break;\n                case 'remote-candidate':\n                    rval.remoteCandidates.push(stat);\n                    break;\n                case 'transport':\n                    // This transport is the one being used if selectedCandidatePairId is populated\n                    if (stat.selectedCandidatePairId) {\n                        rval.transport = stat;\n                    }\n                    break;\n            }\n            return rval;\n        }, {}), candidatePairs = _a.candidatePairs, localCandidates = _a.localCandidates, remoteCandidates = _a.remoteCandidates, transport = _a.transport;\n        // This is a report containing information about the selected candidates, such as IDs\n        // This is coming from WebRTC stats directly and doesn't contain the actual ICE Candidates info\n        var selectedCandidatePairReport = candidatePairs.find(function (pair) {\n            // Firefox\n            return pair.selected ||\n                // Spec-compliant way\n                (transport && pair.id === transport.selectedCandidatePairId);\n        });\n        var selectedIceCandidatePairStats;\n        if (selectedCandidatePairReport) {\n            selectedIceCandidatePairStats = {\n                localCandidate: localCandidates.find(function (candidate) { return candidate.id === selectedCandidatePairReport.localCandidateId; }),\n                remoteCandidate: remoteCandidates.find(function (candidate) { return candidate.id === selectedCandidatePairReport.remoteCandidateId; }),\n            };\n        }\n        // Build the return object\n        return {\n            iceCandidateStats: __spreadArray(__spreadArray([], localCandidates, true), remoteCandidates, true),\n            selectedIceCandidatePairStats: selectedIceCandidatePairStats,\n        };\n    });\n}\n/**\n * @typedef {Object} RTCSample - A sample containing relevant WebRTC stats information.\n * @property {Number} [timestamp]\n * @property {String} [codecName] - MimeType name of the codec being used by the outbound audio stream\n * @property {Number} [rtt] - Round trip time\n * @property {Number} [jitter]\n * @property {Number} [packetsSent]\n * @property {Number} [packetsLost]\n * @property {Number} [packetsReceived]\n * @property {Number} [bytesReceived]\n * @property {Number} [bytesSent]\n * @property {Number} [localAddress]\n * @property {Number} [remoteAddress]\n */\nfunction RTCSample() { }\n/**\n * Create an RTCSample object from an RTCStatsReport\n * @private\n * @param {RTCStatsReport} statsReport\n * @returns {RTCSample}\n */\nfunction createRTCSample(statsReport) {\n    var activeTransportId = null;\n    var sample = new RTCSample();\n    var fallbackTimestamp;\n    Array.from(statsReport.values()).forEach(function (stats) {\n        // Skip isRemote tracks which will be phased out completely and break in FF66.\n        if (stats.isRemote) {\n            return;\n        }\n        // Firefox hack -- Older firefox doesn't have dashes in type names\n        var type = stats.type.replace('-', '');\n        fallbackTimestamp = fallbackTimestamp || stats.timestamp;\n        // (rrowland) As I understand it, this is supposed to come in on remote-inbound-rtp but it's\n        // currently coming in on remote-outbound-rtp, so I'm leaving this outside the switch until\n        // the appropriate place to look is cleared up.\n        if (stats.remoteId) {\n            var remote = findStatById(statsReport, stats.remoteId);\n            if (remote && remote.roundTripTime) {\n                sample.rtt = remote.roundTripTime * 1000;\n            }\n        }\n        switch (type) {\n            case 'inboundrtp':\n                sample.timestamp = sample.timestamp || stats.timestamp;\n                sample.jitter = stats.jitter * 1000;\n                sample.packetsLost = stats.packetsLost;\n                sample.packetsReceived = stats.packetsReceived;\n                sample.bytesReceived = stats.bytesReceived;\n                break;\n            case 'outboundrtp':\n                sample.timestamp = stats.timestamp;\n                sample.packetsSent = stats.packetsSent;\n                sample.bytesSent = stats.bytesSent;\n                if (stats.codecId) {\n                    var codec = findStatById(statsReport, stats.codecId);\n                    sample.codecName = codec\n                        ? codec.mimeType && codec.mimeType.match(/(.*\\/)?(.*)/)[2]\n                        : stats.codecId;\n                }\n                break;\n            case 'transport':\n                activeTransportId = stats.id;\n                break;\n        }\n    });\n    if (!sample.timestamp) {\n        sample.timestamp = fallbackTimestamp;\n    }\n    var activeTransport = findStatById(statsReport, activeTransportId);\n    if (!activeTransport) {\n        return sample;\n    }\n    var selectedCandidatePair = findStatById(statsReport, activeTransport.selectedCandidatePairId);\n    if (!selectedCandidatePair) {\n        return sample;\n    }\n    var localCandidate = findStatById(statsReport, selectedCandidatePair.localCandidateId);\n    var remoteCandidate = findStatById(statsReport, selectedCandidatePair.remoteCandidateId);\n    if (!sample.rtt) {\n        sample.rtt = selectedCandidatePair &&\n            (selectedCandidatePair.currentRoundTripTime * 1000);\n    }\n    Object.assign(sample, {\n        // ip is deprecated. use address first then ip if on older versions of browser\n        localAddress: localCandidate && (localCandidate.address || localCandidate.ip),\n        remoteAddress: remoteCandidate && (remoteCandidate.address || remoteCandidate.ip),\n    });\n    return sample;\n}\n\n},{\"../errors\":15,\"./mockrtcstatsreport\":27}],33:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar MediaDeviceInfoShim = /** @class */ (function () {\n    function MediaDeviceInfoShim(options) {\n        Object.defineProperties(this, {\n            deviceId: { get: function () { return options.deviceId; } },\n            groupId: { get: function () { return options.groupId; } },\n            kind: { get: function () { return options.kind; } },\n            label: { get: function () { return options.label; } },\n        });\n    }\n    return MediaDeviceInfoShim;\n}());\nexports.default = MediaDeviceInfoShim;\n\n},{}],34:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateVoiceEventSid = generateVoiceEventSid;\nvar errors_1 = require(\"./errors\");\n/**\n * Generates a 128-bit long random string that is formatted as a 32 long string\n * of characters where each character is from the set:\n * [0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f].\n */\nfunction generateRandomizedString() {\n    if (typeof window !== 'object') {\n        throw new errors_1.NotSupportedError('This platform is not supported.');\n    }\n    var crypto = window.crypto;\n    if (typeof crypto !== 'object') {\n        throw new errors_1.NotSupportedError('The `crypto` module is not available on this platform.');\n    }\n    if (typeof crypto.getRandomValues !== 'function') {\n        throw new errors_1.NotSupportedError('The function `crypto.getRandomValues` is not available on this ' +\n            'platform.');\n    }\n    if (typeof window.Uint8Array !== 'function') {\n        throw new errors_1.NotSupportedError('The `Uint8Array` module is not available on this platform.');\n    }\n    return crypto\n        .getRandomValues(new window.Uint8Array(16))\n        .reduce(function (r, n) { return \"\".concat(r).concat(n.toString(16).padStart(2, '0')); }, '');\n}\nfunction generateVoiceEventSid() {\n    return \"KX\".concat(generateRandomizedString());\n}\n\n},{\"./errors\":15}],35:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-nocheck\nvar asyncQueue_1 = require(\"./asyncQueue\");\nvar audioplayer_1 = require(\"./audioplayer/audioplayer\");\nvar errors_1 = require(\"./errors\");\n/**\n * @class\n * @param {string} name - Name of the sound\n * @param {string} url - URL of the sound\n * @param {Sound#ConstructorOptions} options\n * @property {boolean} isPlaying - Whether the Sound is currently playing audio.\n * @property {string} name - Name of the sound\n * @property {string} url - URL of the sound\n * @property {AudioContext} audioContext - The AudioContext to use if available for AudioPlayer.\n */\n/**\n * @typedef {Object} Sound#ConstructorOptions\n * @property {number} [maxDuration=0] - The maximum length of time to play the sound\n *   before stopping it.\n * @property {Boolean} [shouldLoop=false] - Whether the sound should be looped.\n */\nfunction Sound(name, url, options) {\n    if (!(this instanceof Sound)) {\n        return new Sound(name, url, options);\n    }\n    if (!name || !url) {\n        throw new errors_1.InvalidArgumentError('name and url are required arguments');\n    }\n    options = Object.assign({\n        AudioFactory: typeof Audio !== 'undefined' ? Audio : null,\n        maxDuration: 0,\n        shouldLoop: false,\n    }, options);\n    options.AudioPlayer = options.audioContext\n        ? audioplayer_1.default.bind(audioplayer_1.default, options.audioContext)\n        : options.AudioFactory;\n    Object.defineProperties(this, {\n        _Audio: { value: options.AudioPlayer },\n        _activeEls: { value: new Map() },\n        _isSinkSupported: {\n            value: options.AudioFactory !== null\n                && typeof options.AudioFactory.prototype.setSinkId === 'function',\n        },\n        _maxDuration: { value: options.maxDuration },\n        _maxDurationTimeout: {\n            value: null,\n            writable: true,\n        },\n        _operations: { value: new asyncQueue_1.AsyncQueue() },\n        _playPromise: {\n            value: null,\n            writable: true,\n        },\n        _shouldLoop: { value: options.shouldLoop },\n        _sinkIds: { value: ['default'] },\n        isPlaying: {\n            enumerable: true,\n            get: function () {\n                return !!this._playPromise;\n            },\n        },\n        name: {\n            enumerable: true,\n            value: name,\n        },\n        url: {\n            enumerable: true,\n            value: url,\n        },\n    });\n    if (this._Audio) {\n        // Play it (muted and should not loop) as soon as possible so that it does not get incorrectly caught by Chrome's\n        // \"gesture requirement for media playback\" feature.\n        // https://plus.google.com/+FrancoisBeaufort/posts/6PiJQqJzGqX\n        this._play(true, false);\n    }\n}\nfunction destroyAudioElement(audioElement) {\n    if (audioElement) {\n        audioElement.pause();\n        audioElement.src = '';\n        audioElement.srcObject = null;\n        audioElement.load();\n    }\n}\n/**\n * Plays the audio element that was initialized using the speficied sinkId\n */\nSound.prototype._playAudioElement = function _playAudioElement(sinkId, isMuted, shouldLoop) {\n    var _this = this;\n    var audioElement = this._activeEls.get(sinkId);\n    if (!audioElement) {\n        throw new errors_1.InvalidArgumentError(\"sinkId: \\\"\".concat(sinkId, \"\\\" doesn't have an audio element\"));\n    }\n    audioElement.muted = !!isMuted;\n    audioElement.loop = !!shouldLoop;\n    return audioElement.play()\n        .then(function () { return audioElement; })\n        .catch(function (reason) {\n        destroyAudioElement(audioElement);\n        _this._activeEls.delete(sinkId);\n        throw reason;\n    });\n};\n/**\n * Start playing the sound. Will stop the currently playing sound first.\n * If it exists, the audio element that was initialized for the sinkId will be used\n */\nSound.prototype._play = function _play(forceIsMuted, forceShouldLoop) {\n    if (this.isPlaying) {\n        this._stop();\n    }\n    if (this._maxDuration > 0) {\n        this._maxDurationTimeout = setTimeout(this._stop.bind(this), this._maxDuration);\n    }\n    forceShouldLoop = typeof forceShouldLoop === 'boolean' ? forceShouldLoop : this._shouldLoop;\n    var self = this;\n    var playPromise = this._playPromise = Promise.all(this._sinkIds.map(function createAudioElement(sinkId) {\n        if (!self._Audio) {\n            return Promise.resolve();\n        }\n        var audioElement = self._activeEls.get(sinkId);\n        if (audioElement) {\n            return self._playAudioElement(sinkId, forceIsMuted, forceShouldLoop);\n        }\n        audioElement = new self._Audio(self.url);\n        // Make sure the browser always retrieves the resource using CORS.\n        // By default when using media tags, origin header is not sent to server\n        // which causes the server to not return CORS headers. When this caches\n        // on the CDN or browser, it causes issues to future requests that needs CORS,\n        // which is true when using AudioContext. Please note that we won't have to do this\n        // once we migrate to CloudFront.\n        if (typeof audioElement.setAttribute === 'function') {\n            audioElement.setAttribute('crossorigin', 'anonymous');\n        }\n        /**\n         * (rrowland) Bug in Chrome 53 & 54 prevents us from calling Audio.setSinkId without\n         *   crashing the tab. https://bugs.chromium.org/p/chromium/issues/detail?id=655342\n         */\n        return new Promise(function (resolve) {\n            audioElement.addEventListener('canplaythrough', resolve);\n        }).then(function () {\n            return (self._isSinkSupported\n                ? audioElement.setSinkId(sinkId)\n                : Promise.resolve()).then(function setSinkIdSuccess() {\n                self._activeEls.set(sinkId, audioElement);\n                // Stop has been called, bail out\n                if (!self._playPromise) {\n                    return Promise.resolve();\n                }\n                return self._playAudioElement(sinkId, forceIsMuted, forceShouldLoop);\n            });\n        });\n    }));\n    return playPromise;\n};\n/**\n * Stop playing the sound.\n */\nSound.prototype._stop = function _stop() {\n    var _this = this;\n    this._activeEls.forEach(function (audioEl, sinkId) {\n        if (_this._sinkIds.includes(sinkId)) {\n            audioEl.pause();\n            audioEl.currentTime = 0;\n        }\n        else {\n            // Destroy the ones that are not used anymore\n            destroyAudioElement(audioEl);\n            _this._activeEls.delete(sinkId);\n        }\n    });\n    clearTimeout(this._maxDurationTimeout);\n    this._playPromise = null;\n    this._maxDurationTimeout = null;\n};\n/**\n * Update the sinkIds of the audio output devices this sound should play through.\n */\nSound.prototype.setSinkIds = function setSinkIds(ids) {\n    if (!this._isSinkSupported) {\n        return;\n    }\n    ids = ids.forEach ? ids : [ids];\n    [].splice.apply(this._sinkIds, [0, this._sinkIds.length].concat(ids));\n};\n/**\n * Add a stop operation to the queue\n */\nSound.prototype.stop = function stop() {\n    var _this = this;\n    this._operations.enqueue(function () {\n        _this._stop();\n        return Promise.resolve();\n    });\n};\n/**\n * Add a play operation to the queue\n */\nSound.prototype.play = function play() {\n    var _this = this;\n    return this._operations.enqueue(function () { return _this._play(); });\n};\nexports.default = Sound;\n\n},{\"./asyncQueue\":2,\"./audioplayer/audioplayer\":4,\"./errors\":15}],36:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar events_1 = require(\"events\");\nvar errors_1 = require(\"./errors\");\nvar mos_1 = require(\"./rtc/mos\");\nvar stats_1 = require(\"./rtc/stats\");\nvar util_1 = require(\"./util\");\n// How many samples we use when testing metric thresholds\nvar SAMPLE_COUNT_METRICS = 5;\n// How many samples that need to cross the threshold to\n// raise or clear a warning.\nvar SAMPLE_COUNT_CLEAR = 0;\nvar SAMPLE_COUNT_RAISE = 3;\nvar SAMPLE_INTERVAL = 1000;\nvar WARNING_TIMEOUT = 5 * 1000;\nvar DEFAULT_THRESHOLDS = {\n    audioInputLevel: { minStandardDeviation: 327.67, sampleCount: 10 },\n    audioOutputLevel: { minStandardDeviation: 327.67, sampleCount: 10 },\n    bytesReceived: { clearCount: 2, min: 1, raiseCount: 3, sampleCount: 3 },\n    bytesSent: { clearCount: 2, min: 1, raiseCount: 3, sampleCount: 3 },\n    jitter: { max: 30 },\n    mos: { min: 3 },\n    packetsLostFraction: [{\n            max: 1,\n        }, {\n            clearValue: 1,\n            maxAverage: 3,\n            sampleCount: 7,\n        }],\n    rtt: { max: 400 },\n};\n/**\n * Count the number of values that cross the max threshold.\n * @private\n * @param max - The max allowable value.\n * @param values - The values to iterate over.\n * @returns The amount of values in which the stat crossed the threshold.\n */\nfunction countHigh(max, values) {\n    return values.reduce(function (highCount, value) { return highCount += (value > max) ? 1 : 0; }, 0);\n}\n/**\n * Count the number of values that cross the min threshold.\n * @private\n * @param min - The minimum allowable value.\n * @param values - The values to iterate over.\n * @returns The amount of values in which the stat crossed the threshold.\n */\nfunction countLow(min, values) {\n    return values.reduce(function (lowCount, value) { return lowCount += (value < min) ? 1 : 0; }, 0);\n}\n/**\n * Calculate the standard deviation from a list of numbers.\n * @private\n * @param values The list of numbers to calculate the standard deviation from.\n * @returns The standard deviation of a list of numbers.\n */\nfunction calculateStandardDeviation(values) {\n    if (values.length <= 0) {\n        return null;\n    }\n    var valueAverage = values.reduce(function (partialSum, value) { return partialSum + value; }, 0) / values.length;\n    var diffSquared = values.map(function (value) { return Math.pow(value - valueAverage, 2); });\n    var stdDev = Math.sqrt(diffSquared.reduce(function (partialSum, value) { return partialSum + value; }, 0) / diffSquared.length);\n    return stdDev;\n}\n/**\n * Flatten a set of numerical sample sets into a single array of samples.\n * @param sampleSets\n */\nfunction flattenSamples(sampleSets) {\n    return sampleSets.reduce(function (flat, current) { return __spreadArray(__spreadArray([], flat, true), current, true); }, []);\n}\n/**\n * {@link StatsMonitor} polls a peerConnection via PeerConnection.getStats\n * and emits warnings when stats cross the specified threshold values.\n */\nvar StatsMonitor = /** @class */ (function (_super) {\n    __extends(StatsMonitor, _super);\n    /**\n     * @constructor\n     * @param [options] - Optional settings\n     */\n    function StatsMonitor(options) {\n        var _this = _super.call(this) || this;\n        /**\n         * A map of warnings with their raised time\n         */\n        _this._activeWarnings = new Map();\n        /**\n         * A map of stats with the number of exceeded thresholds\n         */\n        _this._currentStreaks = new Map();\n        /**\n         * Keeps track of input volumes in the last second\n         */\n        _this._inputVolumes = [];\n        /**\n         * Keeps track of output volumes in the last second\n         */\n        _this._outputVolumes = [];\n        /**\n         * Sample buffer. Saves most recent samples\n         */\n        _this._sampleBuffer = [];\n        /**\n         * Keeps track of supplemental sample values.\n         *\n         * Currently used for constant audio detection. Contains an array of volume\n         * samples for each sample interval.\n         */\n        _this._supplementalSampleBuffers = {\n            audioInputLevel: [],\n            audioOutputLevel: [],\n        };\n        /**\n         * Whether warnings should be enabled\n         */\n        _this._warningsEnabled = true;\n        options = options || {};\n        _this._getRTCStats = options.getRTCStats || stats_1.getRTCStats;\n        _this._mos = options.Mos || mos_1.default;\n        _this._peerConnection = options.peerConnection;\n        _this._thresholds = __assign(__assign({}, DEFAULT_THRESHOLDS), options.thresholds);\n        var thresholdSampleCounts = Object.values(_this._thresholds)\n            .map(function (threshold) { return threshold.sampleCount; })\n            .filter(function (sampleCount) { return !!sampleCount; });\n        _this._maxSampleCount = Math.max.apply(Math, __spreadArray([SAMPLE_COUNT_METRICS], thresholdSampleCounts, false));\n        if (_this._peerConnection) {\n            _this.enable(_this._peerConnection);\n        }\n        return _this;\n    }\n    /**\n     * Called when a volume sample is available\n     * @param inputVolume - Input volume level from 0 to 32767\n     * @param outputVolume - Output volume level from 0 to 32767\n     */\n    StatsMonitor.prototype.addVolumes = function (inputVolume, outputVolume) {\n        this._inputVolumes.push(inputVolume);\n        this._outputVolumes.push(outputVolume);\n    };\n    /**\n     * Stop sampling RTC statistics for this {@link StatsMonitor}.\n     * @returns The current {@link StatsMonitor}.\n     */\n    StatsMonitor.prototype.disable = function () {\n        if (this._sampleInterval) {\n            clearInterval(this._sampleInterval);\n            delete this._sampleInterval;\n        }\n        return this;\n    };\n    /**\n     * Disable warnings for this {@link StatsMonitor}.\n     * @returns The current {@link StatsMonitor}.\n     */\n    StatsMonitor.prototype.disableWarnings = function () {\n        if (this._warningsEnabled) {\n            this._activeWarnings.clear();\n        }\n        this._warningsEnabled = false;\n        return this;\n    };\n    /**\n     * Start sampling RTC statistics for this {@link StatsMonitor}.\n     * @param peerConnection - A PeerConnection to monitor.\n     * @returns The current {@link StatsMonitor}.\n     */\n    StatsMonitor.prototype.enable = function (peerConnection) {\n        if (peerConnection) {\n            if (this._peerConnection && peerConnection !== this._peerConnection) {\n                throw new errors_1.InvalidArgumentError('Attempted to replace an existing PeerConnection in StatsMonitor.enable');\n            }\n            this._peerConnection = peerConnection;\n        }\n        if (!this._peerConnection) {\n            throw new errors_1.InvalidArgumentError('Can not enable StatsMonitor without a PeerConnection');\n        }\n        this._sampleInterval = this._sampleInterval ||\n            setInterval(this._fetchSample.bind(this), SAMPLE_INTERVAL);\n        return this;\n    };\n    /**\n     * Enable warnings for this {@link StatsMonitor}.\n     * @returns The current {@link StatsMonitor}.\n     */\n    StatsMonitor.prototype.enableWarnings = function () {\n        this._warningsEnabled = true;\n        return this;\n    };\n    /**\n     * Check if there is an active warning for a specific stat and threshold\n     * @param statName - The name of the stat to check\n     * @param thresholdName - The name of the threshold to check\n     * @returns Whether there is an active warning for a specific stat and threshold\n     */\n    StatsMonitor.prototype.hasActiveWarning = function (statName, thresholdName) {\n        var warningId = \"\".concat(statName, \":\").concat(thresholdName);\n        return !!this._activeWarnings.get(warningId);\n    };\n    /**\n     * Add a sample to our sample buffer and remove the oldest if we are over the limit.\n     * @param sample - Sample to add\n     */\n    StatsMonitor.prototype._addSample = function (sample) {\n        var samples = this._sampleBuffer;\n        samples.push(sample);\n        // We store 1 extra sample so that we always have (current, previous)\n        // available for all {sampleBufferSize} threshold validations.\n        if (samples.length > this._maxSampleCount) {\n            samples.splice(0, samples.length - this._maxSampleCount);\n        }\n    };\n    /**\n     * Clear an active warning.\n     * @param statName - The name of the stat to clear.\n     * @param thresholdName - The name of the threshold to clear\n     * @param [data] - Any relevant sample data.\n     */\n    StatsMonitor.prototype._clearWarning = function (statName, thresholdName, data) {\n        var warningId = \"\".concat(statName, \":\").concat(thresholdName);\n        var activeWarning = this._activeWarnings.get(warningId);\n        if (!activeWarning || Date.now() - activeWarning.timeRaised < WARNING_TIMEOUT) {\n            return;\n        }\n        this._activeWarnings.delete(warningId);\n        this.emit('warning-cleared', __assign(__assign({}, data), { name: statName, threshold: {\n                name: thresholdName,\n                value: this._thresholds[statName][thresholdName],\n            } }));\n    };\n    /**\n     * Create a sample object from a stats object using the previous sample, if available.\n     * @param stats - Stats retrieved from getStatistics\n     * @param [previousSample=null] - The previous sample to use to calculate deltas.\n     * @returns A universally-formatted version of RTC stats.\n     */\n    StatsMonitor.prototype._createSample = function (stats, previousSample) {\n        var previousBytesSent = previousSample && previousSample.totals.bytesSent || 0;\n        var previousBytesReceived = previousSample && previousSample.totals.bytesReceived || 0;\n        var previousPacketsSent = previousSample && previousSample.totals.packetsSent || 0;\n        var previousPacketsReceived = previousSample && previousSample.totals.packetsReceived || 0;\n        var previousPacketsLost = previousSample && previousSample.totals.packetsLost || 0;\n        var currentBytesSent = stats.bytesSent - previousBytesSent;\n        var currentBytesReceived = stats.bytesReceived - previousBytesReceived;\n        var currentPacketsSent = stats.packetsSent - previousPacketsSent;\n        var currentPacketsReceived = stats.packetsReceived - previousPacketsReceived;\n        var currentPacketsLost = stats.packetsLost - previousPacketsLost;\n        var currentInboundPackets = currentPacketsReceived + currentPacketsLost;\n        var currentPacketsLostFraction = (currentInboundPackets > 0) ?\n            (currentPacketsLost / currentInboundPackets) * 100 : 0;\n        var totalInboundPackets = stats.packetsReceived + stats.packetsLost;\n        var totalPacketsLostFraction = (totalInboundPackets > 0) ?\n            (stats.packetsLost / totalInboundPackets) * 100 : 100;\n        var rttValue = (typeof stats.rtt === 'number' || !previousSample) ? stats.rtt : previousSample.rtt;\n        var audioInputLevelValues = this._inputVolumes.splice(0);\n        this._supplementalSampleBuffers.audioInputLevel.push(audioInputLevelValues);\n        var audioOutputLevelValues = this._outputVolumes.splice(0);\n        this._supplementalSampleBuffers.audioOutputLevel.push(audioOutputLevelValues);\n        return {\n            audioInputLevel: Math.round((0, util_1.average)(audioInputLevelValues)),\n            audioOutputLevel: Math.round((0, util_1.average)(audioOutputLevelValues)),\n            bytesReceived: currentBytesReceived,\n            bytesSent: currentBytesSent,\n            codecName: stats.codecName,\n            jitter: stats.jitter,\n            mos: this._mos.calculate(rttValue, stats.jitter, previousSample && currentPacketsLostFraction),\n            packetsLost: currentPacketsLost,\n            packetsLostFraction: currentPacketsLostFraction,\n            packetsReceived: currentPacketsReceived,\n            packetsSent: currentPacketsSent,\n            rtt: rttValue,\n            timestamp: stats.timestamp,\n            totals: {\n                bytesReceived: stats.bytesReceived,\n                bytesSent: stats.bytesSent,\n                packetsLost: stats.packetsLost,\n                packetsLostFraction: totalPacketsLostFraction,\n                packetsReceived: stats.packetsReceived,\n                packetsSent: stats.packetsSent,\n            },\n        };\n    };\n    /**\n     * Get stats from the PeerConnection and add it to our list of samples.\n     */\n    StatsMonitor.prototype._fetchSample = function () {\n        var _this = this;\n        this._getSample().then(function (sample) {\n            _this._addSample(sample);\n            _this._raiseWarnings();\n            _this.emit('sample', sample);\n        }).catch(function (error) {\n            _this.disable();\n            // We only bubble up any errors coming from pc.getStats()\n            // No need to attach a twilioError\n            _this.emit('error', error);\n        });\n    };\n    /**\n     * Get stats from the PeerConnection.\n     * @returns A universally-formatted version of RTC stats.\n     */\n    StatsMonitor.prototype._getSample = function () {\n        var _this = this;\n        return this._getRTCStats(this._peerConnection).then(function (stats) {\n            var previousSample = null;\n            if (_this._sampleBuffer.length) {\n                previousSample = _this._sampleBuffer[_this._sampleBuffer.length - 1];\n            }\n            return _this._createSample(stats, previousSample);\n        });\n    };\n    /**\n     * Raise a warning and log its raised time.\n     * @param statName - The name of the stat to raise.\n     * @param thresholdName - The name of the threshold to raise\n     * @param [data] - Any relevant sample data.\n     */\n    StatsMonitor.prototype._raiseWarning = function (statName, thresholdName, data) {\n        var warningId = \"\".concat(statName, \":\").concat(thresholdName);\n        if (this._activeWarnings.has(warningId)) {\n            return;\n        }\n        this._activeWarnings.set(warningId, { timeRaised: Date.now() });\n        var thresholds = this._thresholds[statName];\n        var thresholdValue;\n        if (Array.isArray(thresholds)) {\n            var foundThreshold = thresholds.find(function (threshold) { return thresholdName in threshold; });\n            if (foundThreshold) {\n                thresholdValue = foundThreshold[thresholdName];\n            }\n        }\n        else {\n            thresholdValue = this._thresholds[statName][thresholdName];\n        }\n        this.emit('warning', __assign(__assign({}, data), { name: statName, threshold: {\n                name: thresholdName,\n                value: thresholdValue,\n            } }));\n    };\n    /**\n     * Apply our thresholds to our array of RTCStat samples.\n     */\n    StatsMonitor.prototype._raiseWarnings = function () {\n        var _this = this;\n        if (!this._warningsEnabled) {\n            return;\n        }\n        Object.keys(this._thresholds).forEach(function (name) { return _this._raiseWarningsForStat(name); });\n    };\n    /**\n     * Apply thresholds for a given stat name to our array of\n     * RTCStat samples and raise or clear any associated warnings.\n     * @param statName - Name of the stat to compare.\n     */\n    StatsMonitor.prototype._raiseWarningsForStat = function (statName) {\n        var _this = this;\n        var limits = Array.isArray(this._thresholds[statName])\n            ? this._thresholds[statName]\n            : [this._thresholds[statName]];\n        limits.forEach(function (limit) {\n            var samples = _this._sampleBuffer;\n            var clearCount = limit.clearCount || SAMPLE_COUNT_CLEAR;\n            var raiseCount = limit.raiseCount || SAMPLE_COUNT_RAISE;\n            var sampleCount = limit.sampleCount || _this._maxSampleCount;\n            var relevantSamples = samples.slice(-sampleCount);\n            var values = relevantSamples.map(function (sample) { return sample[statName]; });\n            // (rrowland) If we have a bad or missing value in the set, we don't\n            // have enough information to throw or clear a warning. Bail out.\n            var containsNull = values.some(function (value) { return typeof value === 'undefined' || value === null; });\n            if (containsNull) {\n                return;\n            }\n            var count;\n            if (typeof limit.max === 'number') {\n                count = countHigh(limit.max, values);\n                if (count >= raiseCount) {\n                    _this._raiseWarning(statName, 'max', { values: values, samples: relevantSamples });\n                }\n                else if (count <= clearCount) {\n                    _this._clearWarning(statName, 'max', { values: values, samples: relevantSamples });\n                }\n            }\n            if (typeof limit.min === 'number') {\n                count = countLow(limit.min, values);\n                if (count >= raiseCount) {\n                    _this._raiseWarning(statName, 'min', { values: values, samples: relevantSamples });\n                }\n                else if (count <= clearCount) {\n                    _this._clearWarning(statName, 'min', { values: values, samples: relevantSamples });\n                }\n            }\n            if (typeof limit.maxDuration === 'number' && samples.length > 1) {\n                relevantSamples = samples.slice(-2);\n                var prevValue = relevantSamples[0][statName];\n                var curValue = relevantSamples[1][statName];\n                var prevStreak = _this._currentStreaks.get(statName) || 0;\n                var streak = (prevValue === curValue) ? prevStreak + 1 : 0;\n                _this._currentStreaks.set(statName, streak);\n                if (streak >= limit.maxDuration) {\n                    _this._raiseWarning(statName, 'maxDuration', { value: streak });\n                }\n                else if (streak === 0) {\n                    _this._clearWarning(statName, 'maxDuration', { value: prevStreak });\n                }\n            }\n            if (typeof limit.minStandardDeviation === 'number') {\n                var sampleSets = _this._supplementalSampleBuffers[statName];\n                if (!sampleSets || sampleSets.length < limit.sampleCount) {\n                    return;\n                }\n                if (sampleSets.length > limit.sampleCount) {\n                    sampleSets.splice(0, sampleSets.length - limit.sampleCount);\n                }\n                var flatSamples = flattenSamples(sampleSets.slice(-sampleCount));\n                var stdDev = calculateStandardDeviation(flatSamples);\n                if (typeof stdDev !== 'number') {\n                    return;\n                }\n                if (stdDev < limit.minStandardDeviation) {\n                    _this._raiseWarning(statName, 'minStandardDeviation', { value: stdDev });\n                }\n                else {\n                    _this._clearWarning(statName, 'minStandardDeviation', { value: stdDev });\n                }\n            }\n            [\n                ['maxAverage', function (x, y) { return x > y; }],\n                ['minAverage', function (x, y) { return x < y; }],\n            ].forEach(function (_a) {\n                var thresholdName = _a[0], comparator = _a[1];\n                if (typeof limit[thresholdName] === 'number' && values.length >= sampleCount) {\n                    var avg = (0, util_1.average)(values);\n                    if (comparator(avg, limit[thresholdName])) {\n                        _this._raiseWarning(statName, thresholdName, { values: values, samples: relevantSamples });\n                    }\n                    else if (!comparator(avg, limit.clearValue || limit[thresholdName])) {\n                        _this._clearWarning(statName, thresholdName, { values: values, samples: relevantSamples });\n                    }\n                }\n            });\n        });\n    };\n    return StatsMonitor;\n}(events_1.EventEmitter));\nexports.default = StatsMonitor;\n\n},{\"./errors\":15,\"./rtc/mos\":28,\"./rtc/stats\":32,\"./util\":37,\"events\":39}],37:[function(require,module,exports){\n(function (global){(function (){\n\"use strict\";\n// @ts-nocheck\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Exception = void 0;\nexports.average = average;\nexports.difference = difference;\nexports.isElectron = isElectron;\nexports.isChrome = isChrome;\nexports.isFirefox = isFirefox;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isSafari = isSafari;\nexports.isUnifiedPlanDefault = isUnifiedPlanDefault;\nexports.queryToJson = queryToJson;\nexports.flatMap = flatMap;\nexports.promisifyEvents = promisifyEvents;\nexports.sortByMimeTypes = sortByMimeTypes;\n/**\n * Exception class.\n * @class\n * @name Exception\n * @exports Exception as Twilio.Exception\n * @memberOf Twilio\n * @param {string} message The exception message\n */\nfunction TwilioException(message) {\n    if (!(this instanceof TwilioException)) {\n        return new TwilioException(message);\n    }\n    this.message = message;\n}\n/**\n * Returns the exception message.\n *\n * @return {string} The exception message.\n */\nTwilioException.prototype.toString = function () {\n    return \"Twilio.Exception: \".concat(this.message);\n};\nfunction average(values) {\n    return values && values.length ? values.reduce(function (t, v) { return t + v; }) / values.length : 0;\n}\nfunction difference(lefts, rights, getKey) {\n    getKey = getKey || (function (a) { return a; });\n    var rightKeys = new Set(rights.map(getKey));\n    return lefts.filter(function (left) { return !rightKeys.has(getKey(left)); });\n}\nfunction isElectron(navigator) {\n    return !!navigator.userAgent.match('Electron');\n}\nfunction isChrome(window, navigator) {\n    var isCriOS = !!navigator.userAgent.match('CriOS');\n    var isHeadlessChrome = !!navigator.userAgent.match('HeadlessChrome');\n    var isGoogle = typeof window.chrome !== 'undefined'\n        && navigator.vendor === 'Google Inc.'\n        && navigator.userAgent.indexOf('OPR') === -1\n        && navigator.userAgent.indexOf('Edge') === -1;\n    return isCriOS || isElectron(navigator) || isGoogle || isHeadlessChrome;\n}\nfunction isFirefox(navigator) {\n    navigator = navigator || (typeof window === 'undefined'\n        ? global.navigator : window.navigator);\n    return !!(navigator) && typeof navigator.userAgent === 'string'\n        && /firefox|fxios/i.test(navigator.userAgent);\n}\n/**\n * Chromium-based Edge has a user-agent of \"Edg/\" where legacy Edge has a\n * user-agent of \"Edge/\".\n */\nfunction isLegacyEdge(navigator) {\n    navigator = navigator || (typeof window === 'undefined'\n        ? global.navigator : window.navigator);\n    return !!(navigator) && typeof navigator.userAgent === 'string'\n        && /edge\\/\\d+/i.test(navigator.userAgent);\n}\nfunction isSafari(navigator) {\n    return !!(navigator.vendor) && navigator.vendor.indexOf('Apple') !== -1\n        && navigator.userAgent\n        && navigator.userAgent.indexOf('CriOS') === -1\n        && navigator.userAgent.indexOf('FxiOS') === -1;\n}\nfunction isUnifiedPlanDefault(window, navigator, PeerConnection, RtpTransceiver) {\n    if (typeof window === 'undefined'\n        || typeof navigator === 'undefined'\n        || typeof PeerConnection === 'undefined'\n        || typeof RtpTransceiver === 'undefined'\n        || typeof PeerConnection.prototype === 'undefined'\n        || typeof RtpTransceiver.prototype === 'undefined') {\n        return false;\n    }\n    if (isChrome(window, navigator) && PeerConnection.prototype.addTransceiver) {\n        var pc = new PeerConnection();\n        var isUnifiedPlan = true;\n        try {\n            pc.addTransceiver('audio');\n        }\n        catch (e) {\n            isUnifiedPlan = false;\n        }\n        pc.close();\n        return isUnifiedPlan;\n    }\n    else if (isFirefox(navigator)) {\n        return true;\n    }\n    else if (isSafari(navigator)) {\n        return 'currentDirection' in RtpTransceiver.prototype;\n    }\n    // Edge currently does not support unified plan.\n    // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/17733189/\n    // https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/34451998-sdp-unified-plan\n    return false;\n}\nfunction queryToJson(params) {\n    if (!params) {\n        return '';\n    }\n    return params.split('&').reduce(function (output, pair) {\n        var parts = pair.split('=');\n        var key = parts[0];\n        var value = decodeURIComponent((parts[1] || '').replace(/\\+/g, '%20'));\n        if (key) {\n            output[key] = value;\n        }\n        return output;\n    }, {});\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} [mapFn]\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n    var listArray = list instanceof Map || list instanceof Set\n        ? Array.from(list.values())\n        : list;\n    mapFn = mapFn || (function (item) { return item; });\n    return listArray.reduce(function (flattened, item) {\n        var mapped = mapFn(item);\n        return flattened.concat(mapped);\n    }, []);\n}\n/**\n * Converts an EventEmitter's events into a promise and automatically\n * cleans up handlers once the promise is resolved or rejected.\n */\nfunction promisifyEvents(emitter, resolveEventName, rejectEventName) {\n    return new Promise(function (resolve, reject) {\n        function resolveHandler() {\n            emitter.removeListener(rejectEventName, rejectHandler);\n            resolve();\n        }\n        function rejectHandler() {\n            emitter.removeListener(resolveEventName, resolveHandler);\n            reject();\n        }\n        emitter.once(resolveEventName, resolveHandler);\n        emitter.once(rejectEventName, rejectHandler);\n    });\n}\nfunction sortByMimeTypes(codecs, preferredOrder) {\n    var preferredCodecs = preferredOrder.map(function (codec) { return 'audio/' + codec.toLowerCase(); });\n    return codecs.sort(function (a, b) {\n        var indexA = preferredCodecs.indexOf(a.mimeType.toLowerCase());\n        var indexB = preferredCodecs.indexOf(b.mimeType.toLowerCase());\n        var orderA = indexA >= 0 ? indexA : Number.MAX_VALUE;\n        var orderB = indexB >= 0 ? indexB : Number.MAX_VALUE;\n        return orderA - orderB;\n    });\n}\nvar Exception = TwilioException;\nexports.Exception = Exception;\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],38:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WSTransportState = void 0;\nvar events_1 = require(\"events\");\nvar backoff_1 = require(\"./backoff\");\nvar errors_1 = require(\"./errors\");\nvar log_1 = require(\"./log\");\nvar WebSocket = globalThis.WebSocket;\nvar CONNECT_SUCCESS_TIMEOUT = 10000;\nvar CONNECT_TIMEOUT = 5000;\nvar HEARTBEAT_TIMEOUT = 15000;\nvar MAX_PREFERRED_DURATION = 15000;\nvar MAX_PRIMARY_DURATION = Infinity;\nvar MAX_PREFERRED_DELAY = 1000;\nvar MAX_PRIMARY_DELAY = 20000;\n/**\n * All possible states of WSTransport.\n */\nvar WSTransportState;\n(function (WSTransportState) {\n    /**\n     * The WebSocket is not open but is trying to connect.\n     */\n    WSTransportState[\"Connecting\"] = \"connecting\";\n    /**\n     * The WebSocket is not open and is not trying to connect.\n     */\n    WSTransportState[\"Closed\"] = \"closed\";\n    /**\n     * The underlying WebSocket is open and active.\n     */\n    WSTransportState[\"Open\"] = \"open\";\n})(WSTransportState || (exports.WSTransportState = WSTransportState = {}));\n/**\n * WebSocket Transport\n */\nvar WSTransport = /** @class */ (function (_super) {\n    __extends(WSTransport, _super);\n    /**\n     * @constructor\n     * @param uris - List of URI of the endpoints to connect to.\n     * @param [options] - Constructor options.\n     */\n    function WSTransport(uris, options) {\n        if (options === void 0) { options = {}; }\n        var _this = _super.call(this) || this;\n        /**\n         * The current state of the WSTransport.\n         */\n        _this.state = WSTransportState.Closed;\n        /**\n         * Start timestamp values for backoffs.\n         */\n        _this._backoffStartTime = {\n            preferred: null,\n            primary: null,\n        };\n        /**\n         * The URI that the transport is connecting or connected to. The value of this\n         * property is `null` if a connection attempt has not been made yet.\n         */\n        _this._connectedUri = null;\n        /**\n         * An instance of Logger to use.\n         */\n        _this._log = new log_1.default('WSTransport');\n        /**\n         * Whether we should attempt to fallback if we receive an applicable error\n         * when trying to connect to a signaling endpoint.\n         */\n        _this._shouldFallback = false;\n        /**\n         * The current uri index that the transport is connected to.\n         */\n        _this._uriIndex = 0;\n        /**\n         * Move the uri index to the next index\n         * If the index is at the end, the index goes back to the first one.\n         */\n        _this._moveUriIndex = function () {\n            _this._uriIndex++;\n            if (_this._uriIndex >= _this._uris.length) {\n                _this._uriIndex = 0;\n            }\n        };\n        /**\n         * Called in response to WebSocket#close event.\n         */\n        _this._onSocketClose = function (event) {\n            _this._log.error(\"Received websocket close event code: \".concat(event.code, \". Reason: \").concat(event.reason));\n            // 1006: Abnormal close. When the server is unreacheable\n            // 1015: TLS Handshake error\n            if (event.code === 1006 || event.code === 1015) {\n                _this.emit('error', {\n                    code: 31005,\n                    message: event.reason ||\n                        'Websocket connection to Twilio\\'s signaling servers were ' +\n                            'unexpectedly ended. If this is happening consistently, there may ' +\n                            'be an issue resolving the hostname provided. If a region or an ' +\n                            'edge is being specified in Device setup, ensure it is valid.',\n                    twilioError: new errors_1.SignalingErrors.ConnectionError(),\n                });\n                var wasConnected = (\n                // Only in Safari and certain Firefox versions, on network interruption, websocket drops right away with 1006\n                // Let's check current state if it's open, meaning we should not fallback\n                // because we're coming from a previously connected session\n                _this.state === WSTransportState.Open ||\n                    // But on other browsers, websocket doesn't drop\n                    // but our heartbeat catches it, setting the internal state to \"Connecting\".\n                    // With this, we should check the previous state instead.\n                    _this._previousState === WSTransportState.Open);\n                // Only fallback if this is not the first error\n                // and if we were not connected previously\n                if (_this._shouldFallback || !wasConnected) {\n                    _this._moveUriIndex();\n                }\n                _this._shouldFallback = true;\n            }\n            _this._closeSocket();\n        };\n        /**\n         * Called in response to WebSocket#error event.\n         */\n        _this._onSocketError = function (err) {\n            _this._log.error(\"WebSocket received error: \".concat(err.message));\n            _this.emit('error', {\n                code: 31000,\n                message: err.message || 'WSTransport socket error',\n                twilioError: new errors_1.SignalingErrors.ConnectionDisconnected(),\n            });\n        };\n        /**\n         * Called in response to WebSocket#message event.\n         */\n        _this._onSocketMessage = function (message) {\n            // Clear heartbeat timeout on any incoming message, as they\n            // all indicate an active connection.\n            _this._setHeartbeatTimeout();\n            // Filter and respond to heartbeats\n            if (_this._socket && message.data === '\\n') {\n                _this._socket.send('\\n');\n                _this._log.debug('heartbeat');\n                return;\n            }\n            if (message && typeof message.data === 'string') {\n                _this._log.debug(\"Received: \".concat(message.data));\n            }\n            _this.emit('message', message);\n        };\n        /**\n         * Called in response to WebSocket#open event.\n         */\n        _this._onSocketOpen = function () {\n            _this._log.info('WebSocket opened successfully.');\n            _this._timeOpened = Date.now();\n            _this._shouldFallback = false;\n            _this._setState(WSTransportState.Open);\n            clearTimeout(_this._connectTimeout);\n            _this._resetBackoffs();\n            _this._setHeartbeatTimeout();\n            _this.emit('open');\n        };\n        _this._options = __assign(__assign({}, WSTransport.defaultConstructorOptions), options);\n        _this._uris = uris;\n        _this._backoff = _this._setupBackoffs();\n        return _this;\n    }\n    /**\n     * Close the WebSocket, and don't try to reconnect.\n     */\n    WSTransport.prototype.close = function () {\n        this._log.info('WSTransport.close() called...');\n        this._close();\n    };\n    /**\n     * Attempt to open a WebSocket connection.\n     */\n    WSTransport.prototype.open = function () {\n        this._log.info('WSTransport.open() called...');\n        if (this._socket &&\n            (this._socket.readyState === WebSocket.CONNECTING ||\n                this._socket.readyState === WebSocket.OPEN)) {\n            this._log.info('WebSocket already open.');\n            return;\n        }\n        if (this._preferredUri) {\n            this._connect(this._preferredUri);\n        }\n        else {\n            this._connect(this._uris[this._uriIndex]);\n        }\n    };\n    /**\n     * Send a message through the WebSocket connection.\n     * @param message - A message to send to the endpoint.\n     * @returns Whether the message was sent.\n     */\n    WSTransport.prototype.send = function (message) {\n        this._log.debug(\"Sending: \".concat(message));\n        // We can't send the message if the WebSocket isn't open\n        if (!this._socket || this._socket.readyState !== WebSocket.OPEN) {\n            this._log.debug('Cannot send message. WebSocket is not open.');\n            return false;\n        }\n        try {\n            this._socket.send(message);\n        }\n        catch (e) {\n            // Some unknown error occurred. Reset the socket to get a fresh session.\n            this._log.error('Error while sending message:', e.message);\n            this._closeSocket();\n            return false;\n        }\n        return true;\n    };\n    /**\n     * Update the preferred URI to connect to. Useful for Call signaling\n     * reconnection, which requires connecting on the same edge. If `null` is\n     * passed, the preferred URI is unset and the original `uris` array and\n     * `uriIndex` is used to determine the signaling URI to connect to.\n     * @param uri\n     */\n    WSTransport.prototype.updatePreferredURI = function (uri) {\n        this._preferredUri = uri;\n    };\n    /**\n     * Update acceptable URIs to reconnect to. Resets the URI index to 0.\n     */\n    WSTransport.prototype.updateURIs = function (uris) {\n        if (typeof uris === 'string') {\n            uris = [uris];\n        }\n        this._uris = uris;\n        this._uriIndex = 0;\n    };\n    /**\n     * Close the WebSocket, and don't try to reconnect.\n     */\n    WSTransport.prototype._close = function () {\n        this._setState(WSTransportState.Closed);\n        this._closeSocket();\n    };\n    /**\n     * Close the WebSocket and remove all event listeners.\n     */\n    WSTransport.prototype._closeSocket = function () {\n        clearTimeout(this._connectTimeout);\n        clearTimeout(this._heartbeatTimeout);\n        this._log.info('Closing and cleaning up WebSocket...');\n        if (!this._socket) {\n            this._log.info('No WebSocket to clean up.');\n            return;\n        }\n        this._socket.removeEventListener('close', this._onSocketClose);\n        this._socket.removeEventListener('error', this._onSocketError);\n        this._socket.removeEventListener('message', this._onSocketMessage);\n        this._socket.removeEventListener('open', this._onSocketOpen);\n        if (this._socket.readyState === WebSocket.CONNECTING ||\n            this._socket.readyState === WebSocket.OPEN) {\n            this._socket.close();\n        }\n        // Reset backoff counter if connection was open for long enough to be considered successful\n        if (this._timeOpened && Date.now() - this._timeOpened > CONNECT_SUCCESS_TIMEOUT) {\n            this._resetBackoffs();\n        }\n        if (this.state !== WSTransportState.Closed) {\n            this._performBackoff();\n        }\n        delete this._socket;\n        this.emit('close');\n    };\n    /**\n     * Attempt to connect to the endpoint via WebSocket.\n     * @param [uri] - URI string to connect to.\n     * @param [retryCount] - Retry number, if this is a retry. Undefined if\n     *   first attempt, 1+ if a retry.\n     */\n    WSTransport.prototype._connect = function (uri, retryCount) {\n        var _this = this;\n        this._log.info(typeof retryCount === 'number'\n            ? \"Attempting to reconnect (retry #\".concat(retryCount, \")...\")\n            : 'Attempting to connect...');\n        this._closeSocket();\n        this._setState(WSTransportState.Connecting);\n        this._connectedUri = uri;\n        try {\n            this._socket = new this._options.WebSocket(this._connectedUri);\n        }\n        catch (e) {\n            this._log.error('Could not connect to endpoint:', e.message);\n            this._close();\n            this.emit('error', {\n                code: 31000,\n                message: e.message || \"Could not connect to \".concat(this._connectedUri),\n                twilioError: new errors_1.SignalingErrors.ConnectionDisconnected(),\n            });\n            return;\n        }\n        this._socket.addEventListener('close', this._onSocketClose);\n        this._socket.addEventListener('error', this._onSocketError);\n        this._socket.addEventListener('message', this._onSocketMessage);\n        this._socket.addEventListener('open', this._onSocketOpen);\n        delete this._timeOpened;\n        this._connectTimeout = setTimeout(function () {\n            _this._log.info('WebSocket connection attempt timed out.');\n            _this._moveUriIndex();\n            _this._closeSocket();\n        }, this._options.connectTimeoutMs);\n    };\n    /**\n     * Perform a backoff. If a preferred URI is set (not null), then backoff\n     * using the preferred mechanism. Otherwise, use the primary mechanism.\n     */\n    WSTransport.prototype._performBackoff = function () {\n        if (this._preferredUri) {\n            this._log.info('Preferred URI set; backing off.');\n            this._backoff.preferred.backoff();\n        }\n        else {\n            this._log.info('Preferred URI not set; backing off.');\n            this._backoff.primary.backoff();\n        }\n    };\n    /**\n     * Reset both primary and preferred backoff mechanisms.\n     */\n    WSTransport.prototype._resetBackoffs = function () {\n        this._backoff.preferred.reset();\n        this._backoff.primary.reset();\n        this._backoffStartTime.preferred = null;\n        this._backoffStartTime.primary = null;\n    };\n    /**\n     * Set a timeout to reconnect after HEARTBEAT_TIMEOUT milliseconds\n     *   have passed without receiving a message over the WebSocket.\n     */\n    WSTransport.prototype._setHeartbeatTimeout = function () {\n        var _this = this;\n        clearTimeout(this._heartbeatTimeout);\n        this._heartbeatTimeout = setTimeout(function () {\n            _this._log.info(\"No messages received in \".concat(HEARTBEAT_TIMEOUT / 1000, \" seconds. Reconnecting...\"));\n            _this._shouldFallback = true;\n            _this._closeSocket();\n        }, HEARTBEAT_TIMEOUT);\n    };\n    /**\n     * Set the current and previous state\n     */\n    WSTransport.prototype._setState = function (state) {\n        this._previousState = this.state;\n        this.state = state;\n    };\n    /**\n     * Set up the primary and preferred backoff mechanisms.\n     */\n    WSTransport.prototype._setupBackoffs = function () {\n        var _this = this;\n        var preferredBackoffConfig = {\n            factor: 2.0,\n            jitter: 0.40,\n            max: this._options.maxPreferredDelayMs,\n            min: 100,\n        };\n        this._log.info('Initializing preferred transport backoff using config: ', preferredBackoffConfig);\n        var preferredBackoff = new backoff_1.default(preferredBackoffConfig);\n        preferredBackoff.on('backoff', function (attempt, delay) {\n            if (_this.state === WSTransportState.Closed) {\n                _this._log.info('Preferred backoff initiated but transport state is closed; not attempting a connection.');\n                return;\n            }\n            _this._log.info(\"Will attempt to reconnect Websocket to preferred URI in \".concat(delay, \"ms\"));\n            if (attempt === 0) {\n                _this._backoffStartTime.preferred = Date.now();\n                _this._log.info(\"Preferred backoff start; \".concat(_this._backoffStartTime.preferred));\n            }\n        });\n        preferredBackoff.on('ready', function (attempt, _delay) {\n            if (_this.state === WSTransportState.Closed) {\n                _this._log.info('Preferred backoff ready but transport state is closed; not attempting a connection.');\n                return;\n            }\n            if (_this._backoffStartTime.preferred === null) {\n                _this._log.info('Preferred backoff start time invalid; not attempting a connection.');\n                return;\n            }\n            if (Date.now() - _this._backoffStartTime.preferred > _this._options.maxPreferredDurationMs) {\n                _this._log.info('Max preferred backoff attempt time exceeded; falling back to primary backoff.');\n                _this._preferredUri = null;\n                _this._backoff.primary.backoff();\n                return;\n            }\n            if (typeof _this._preferredUri !== 'string') {\n                _this._log.info('Preferred URI cleared; falling back to primary backoff.');\n                _this._preferredUri = null;\n                _this._backoff.primary.backoff();\n                return;\n            }\n            _this._connect(_this._preferredUri, attempt + 1);\n        });\n        var primaryBackoffConfig = {\n            factor: 2.0,\n            jitter: 0.40,\n            max: this._options.maxPrimaryDelayMs,\n            // We only want a random initial delay if there are any fallback edges\n            // Initial delay between 1s and 5s both inclusive\n            min: this._uris && this._uris.length > 1\n                ? Math.floor(Math.random() * (5000 - 1000 + 1)) + 1000\n                : 100,\n        };\n        this._log.info('Initializing primary transport backoff using config: ', primaryBackoffConfig);\n        var primaryBackoff = new backoff_1.default(primaryBackoffConfig);\n        primaryBackoff.on('backoff', function (attempt, delay) {\n            if (_this.state === WSTransportState.Closed) {\n                _this._log.info('Primary backoff initiated but transport state is closed; not attempting a connection.');\n                return;\n            }\n            _this._log.info(\"Will attempt to reconnect WebSocket in \".concat(delay, \"ms\"));\n            if (attempt === 0) {\n                _this._backoffStartTime.primary = Date.now();\n                _this._log.info(\"Primary backoff start; \".concat(_this._backoffStartTime.primary));\n            }\n        });\n        primaryBackoff.on('ready', function (attempt, _delay) {\n            if (_this.state === WSTransportState.Closed) {\n                _this._log.info('Primary backoff ready but transport state is closed; not attempting a connection.');\n                return;\n            }\n            if (_this._backoffStartTime.primary === null) {\n                _this._log.info('Primary backoff start time invalid; not attempting a connection.');\n                return;\n            }\n            if (Date.now() - _this._backoffStartTime.primary > _this._options.maxPrimaryDurationMs) {\n                _this._log.info('Max primary backoff attempt time exceeded; not attempting a connection.');\n                return;\n            }\n            _this._connect(_this._uris[_this._uriIndex], attempt + 1);\n        });\n        return {\n            preferred: preferredBackoff,\n            primary: primaryBackoff,\n        };\n    };\n    Object.defineProperty(WSTransport.prototype, \"uri\", {\n        /**\n         * The uri the transport is currently connected to\n         */\n        get: function () {\n            return this._connectedUri;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    WSTransport.defaultConstructorOptions = {\n        WebSocket: WebSocket,\n        connectTimeoutMs: CONNECT_TIMEOUT,\n        maxPreferredDelayMs: MAX_PREFERRED_DELAY,\n        maxPreferredDurationMs: MAX_PREFERRED_DURATION,\n        maxPrimaryDelayMs: MAX_PRIMARY_DELAY,\n        maxPrimaryDurationMs: MAX_PRIMARY_DURATION,\n    };\n    return WSTransport;\n}(events_1.EventEmitter));\nexports.default = WSTransport;\n\n},{\"./backoff\":8,\"./errors\":15,\"./log\":18,\"events\":39}],39:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar objectCreate = Object.create || objectCreatePolyfill\nvar objectKeys = Object.keys || objectKeysPolyfill\nvar bind = Function.prototype.bind || functionBindPolyfill\n\nfunction EventEmitter() {\n  if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n    this._events = objectCreate(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nvar hasDefineProperty;\ntry {\n  var o = {};\n  if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n  hasDefineProperty = o.x === 0;\n} catch (err) { hasDefineProperty = false }\nif (hasDefineProperty) {\n  Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n    enumerable: true,\n    get: function() {\n      return defaultMaxListeners;\n    },\n    set: function(arg) {\n      // check whether the input is a positive number (whose value is zero or\n      // greater and not a NaN).\n      if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n        throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n      defaultMaxListeners = arg;\n    }\n  });\n} else {\n  EventEmitter.defaultMaxListeners = defaultMaxListeners;\n}\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || isNaN(n))\n    throw new TypeError('\"n\" argument must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nfunction $getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n  if (isFn)\n    handler.call(self);\n  else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      listeners[i].call(self);\n  }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n  if (isFn)\n    handler.call(self, arg1);\n  else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      listeners[i].call(self, arg1);\n  }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n  if (isFn)\n    handler.call(self, arg1, arg2);\n  else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      listeners[i].call(self, arg1, arg2);\n  }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n  if (isFn)\n    handler.call(self, arg1, arg2, arg3);\n  else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      listeners[i].call(self, arg1, arg2, arg3);\n  }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n  if (isFn)\n    handler.apply(self, args);\n  else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      listeners[i].apply(self, args);\n  }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n  var er, handler, len, args, i, events;\n  var doError = (type === 'error');\n\n  events = this._events;\n  if (events)\n    doError = (doError && events.error == null);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    if (arguments.length > 1)\n      er = arguments[1];\n    if (er instanceof Error) {\n      throw er; // Unhandled 'error' event\n    } else {\n      // At least give some kind of context to the user\n      var err = new Error('Unhandled \"error\" event. (' + er + ')');\n      err.context = er;\n      throw err;\n    }\n    return false;\n  }\n\n  handler = events[type];\n\n  if (!handler)\n    return false;\n\n  var isFn = typeof handler === 'function';\n  len = arguments.length;\n  switch (len) {\n      // fast cases\n    case 1:\n      emitNone(handler, isFn, this);\n      break;\n    case 2:\n      emitOne(handler, isFn, this, arguments[1]);\n      break;\n    case 3:\n      emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n      break;\n    case 4:\n      emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n      break;\n      // slower\n    default:\n      args = new Array(len - 1);\n      for (i = 1; i < len; i++)\n        args[i - 1] = arguments[i];\n      emitMany(handler, isFn, this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  if (typeof listener !== 'function')\n    throw new TypeError('\"listener\" argument must be a function');\n\n  events = target._events;\n  if (!events) {\n    events = target._events = objectCreate(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener) {\n      target.emit('newListener', type,\n          listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (!existing) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n          prepend ? [listener, existing] : [existing, listener];\n    } else {\n      // If we've already got an array, just append.\n      if (prepend) {\n        existing.unshift(listener);\n      } else {\n        existing.push(listener);\n      }\n    }\n\n    // Check for listener leak\n    if (!existing.warned) {\n      m = $getMaxListeners(target);\n      if (m && m > 0 && existing.length > m) {\n        existing.warned = true;\n        var w = new Error('Possible EventEmitter memory leak detected. ' +\n            existing.length + ' \"' + String(type) + '\" listeners ' +\n            'added. Use emitter.setMaxListeners() to ' +\n            'increase limit.');\n        w.name = 'MaxListenersExceededWarning';\n        w.emitter = target;\n        w.type = type;\n        w.count = existing.length;\n        if (typeof console === 'object' && console.warn) {\n          console.warn('%s: %s', w.name, w.message);\n        }\n      }\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    switch (arguments.length) {\n      case 0:\n        return this.listener.call(this.target);\n      case 1:\n        return this.listener.call(this.target, arguments[0]);\n      case 2:\n        return this.listener.call(this.target, arguments[0], arguments[1]);\n      case 3:\n        return this.listener.call(this.target, arguments[0], arguments[1],\n            arguments[2]);\n      default:\n        var args = new Array(arguments.length);\n        for (var i = 0; i < args.length; ++i)\n          args[i] = arguments[i];\n        this.listener.apply(this.target, args);\n    }\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = bind.call(onceWrapper, state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  if (typeof listener !== 'function')\n    throw new TypeError('\"listener\" argument must be a function');\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      if (typeof listener !== 'function')\n        throw new TypeError('\"listener\" argument must be a function');\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      if (typeof listener !== 'function')\n        throw new TypeError('\"listener\" argument must be a function');\n\n      events = this._events;\n      if (!events)\n        return this;\n\n      list = events[type];\n      if (!list)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = objectCreate(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else\n          spliceOne(list, position);\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (!events)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (!events.removeListener) {\n        if (arguments.length === 0) {\n          this._events = objectCreate(null);\n          this._eventsCount = 0;\n        } else if (events[type]) {\n          if (--this._eventsCount === 0)\n            this._events = objectCreate(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = objectKeys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = objectCreate(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (!events)\n    return [];\n\n  var evlistener = events[type];\n  if (!evlistener)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n    list[i] = list[k];\n  list.pop();\n}\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction objectCreatePolyfill(proto) {\n  var F = function() {};\n  F.prototype = proto;\n  return new F;\n}\nfunction objectKeysPolyfill(obj) {\n  var keys = [];\n  for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) {\n    keys.push(k);\n  }\n  return k;\n}\nfunction functionBindPolyfill(context) {\n  var fn = this;\n  return function () {\n    return fn.apply(context, arguments);\n  };\n}\n\n},{}],40:[function(require,module,exports){\n/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n    \"use strict\";\n    if (typeof define === 'function' && define.amd) {\n        define(definition);\n    } else if (typeof module === 'object' && module.exports) {\n        module.exports = definition();\n    } else {\n        root.log = definition();\n    }\n}(this, function () {\n    \"use strict\";\n\n    // Slightly dubious tricks to cut down minimized file size\n    var noop = function() {};\n    var undefinedType = \"undefined\";\n    var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n        /Trident\\/|MSIE /.test(window.navigator.userAgent)\n    );\n\n    var logMethods = [\n        \"trace\",\n        \"debug\",\n        \"info\",\n        \"warn\",\n        \"error\"\n    ];\n\n    // Cross-browser bind equivalent that works at least back to IE6\n    function bindMethod(obj, methodName) {\n        var method = obj[methodName];\n        if (typeof method.bind === 'function') {\n            return method.bind(obj);\n        } else {\n            try {\n                return Function.prototype.bind.call(method, obj);\n            } catch (e) {\n                // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n                return function() {\n                    return Function.prototype.apply.apply(method, [obj, arguments]);\n                };\n            }\n        }\n    }\n\n    // Trace() doesn't print the message in IE, so for that case we need to wrap it\n    function traceForIE() {\n        if (console.log) {\n            if (console.log.apply) {\n                console.log.apply(console, arguments);\n            } else {\n                // In old IE, native console methods themselves don't have apply().\n                Function.prototype.apply.apply(console.log, [console, arguments]);\n            }\n        }\n        if (console.trace) console.trace();\n    }\n\n    // Build the best logging method possible for this env\n    // Wherever possible we want to bind, not wrap, to preserve stack traces\n    function realMethod(methodName) {\n        if (methodName === 'debug') {\n            methodName = 'log';\n        }\n\n        if (typeof console === undefinedType) {\n            return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n        } else if (methodName === 'trace' && isIE) {\n            return traceForIE;\n        } else if (console[methodName] !== undefined) {\n            return bindMethod(console, methodName);\n        } else if (console.log !== undefined) {\n            return bindMethod(console, 'log');\n        } else {\n            return noop;\n        }\n    }\n\n    // These private functions always need `this` to be set properly\n\n    function replaceLoggingMethods(level, loggerName) {\n        /*jshint validthis:true */\n        for (var i = 0; i < logMethods.length; i++) {\n            var methodName = logMethods[i];\n            this[methodName] = (i < level) ?\n                noop :\n                this.methodFactory(methodName, level, loggerName);\n        }\n\n        // Define log.log as an alias for log.debug\n        this.log = this.debug;\n    }\n\n    // In old IE versions, the console isn't present until you first open it.\n    // We build realMethod() replacements here that regenerate logging methods\n    function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n        return function () {\n            if (typeof console !== undefinedType) {\n                replaceLoggingMethods.call(this, level, loggerName);\n                this[methodName].apply(this, arguments);\n            }\n        };\n    }\n\n    // By default, we use closely bound real methods wherever possible, and\n    // otherwise we wait for a console to appear, and then try again.\n    function defaultMethodFactory(methodName, level, loggerName) {\n        /*jshint validthis:true */\n        return realMethod(methodName) ||\n               enableLoggingWhenConsoleArrives.apply(this, arguments);\n    }\n\n    function Logger(name, defaultLevel, factory) {\n      var self = this;\n      var currentLevel;\n      var storageKey = \"loglevel\";\n      if (name) {\n        storageKey += \":\" + name;\n      }\n\n      function persistLevelIfPossible(levelNum) {\n          var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n          if (typeof window === undefinedType) return;\n\n          // Use localStorage if available\n          try {\n              window.localStorage[storageKey] = levelName;\n              return;\n          } catch (ignore) {}\n\n          // Use session cookie as fallback\n          try {\n              window.document.cookie =\n                encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n          } catch (ignore) {}\n      }\n\n      function getPersistedLevel() {\n          var storedLevel;\n\n          if (typeof window === undefinedType) return;\n\n          try {\n              storedLevel = window.localStorage[storageKey];\n          } catch (ignore) {}\n\n          // Fallback to cookies if local storage gives us nothing\n          if (typeof storedLevel === undefinedType) {\n              try {\n                  var cookie = window.document.cookie;\n                  var location = cookie.indexOf(\n                      encodeURIComponent(storageKey) + \"=\");\n                  if (location !== -1) {\n                      storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n                  }\n              } catch (ignore) {}\n          }\n\n          // If the stored level is not valid, treat it as if nothing was stored.\n          if (self.levels[storedLevel] === undefined) {\n              storedLevel = undefined;\n          }\n\n          return storedLevel;\n      }\n\n      /*\n       *\n       * Public logger API - see https://github.com/pimterry/loglevel for details\n       *\n       */\n\n      self.name = name;\n\n      self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n          \"ERROR\": 4, \"SILENT\": 5};\n\n      self.methodFactory = factory || defaultMethodFactory;\n\n      self.getLevel = function () {\n          return currentLevel;\n      };\n\n      self.setLevel = function (level, persist) {\n          if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n              level = self.levels[level.toUpperCase()];\n          }\n          if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n              currentLevel = level;\n              if (persist !== false) {  // defaults to true\n                  persistLevelIfPossible(level);\n              }\n              replaceLoggingMethods.call(self, level, name);\n              if (typeof console === undefinedType && level < self.levels.SILENT) {\n                  return \"No console available for logging\";\n              }\n          } else {\n              throw \"log.setLevel() called with invalid level: \" + level;\n          }\n      };\n\n      self.setDefaultLevel = function (level) {\n          if (!getPersistedLevel()) {\n              self.setLevel(level, false);\n          }\n      };\n\n      self.enableAll = function(persist) {\n          self.setLevel(self.levels.TRACE, persist);\n      };\n\n      self.disableAll = function(persist) {\n          self.setLevel(self.levels.SILENT, persist);\n      };\n\n      // Initialize with the right level\n      var initialLevel = getPersistedLevel();\n      if (initialLevel == null) {\n          initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n      }\n      self.setLevel(initialLevel, false);\n    }\n\n    /*\n     *\n     * Top-level API\n     *\n     */\n\n    var defaultLogger = new Logger();\n\n    var _loggersByName = {};\n    defaultLogger.getLogger = function getLogger(name) {\n        if (typeof name !== \"string\" || name === \"\") {\n          throw new TypeError(\"You must supply a name when creating a logger.\");\n        }\n\n        var logger = _loggersByName[name];\n        if (!logger) {\n          logger = _loggersByName[name] = new Logger(\n            name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n        }\n        return logger;\n    };\n\n    // Grab the current global log variable in case of overwrite\n    var _log = (typeof window !== undefinedType) ? window.log : undefined;\n    defaultLogger.noConflict = function() {\n        if (typeof window !== undefinedType &&\n               window.log === defaultLogger) {\n            window.log = _log;\n        }\n\n        return defaultLogger;\n    };\n\n    defaultLogger.getLoggers = function getLoggers() {\n        return _loggersByName;\n    };\n\n    return defaultLogger;\n}));\n\n},{}]},{},[1]);\n;\n  var Voice = bundle(1);\n  /* globals define */\n  if (typeof define === 'function' && define.amd) {\n    define([], function() { return Voice; });\n  } else {\n    var Twilio = root.Twilio = root.Twilio || {};\n    Twilio.Call = Twilio.Call || Voice.Call;\n    Twilio.Device = Twilio.Device || Voice.Device;\n    Twilio.PStream = Twilio.PStream || Voice.PStream;\n    Twilio.PreflightTest = Twilio.PreflightTest || Voice.PreflightTest;\n    Twilio.Logger = Twilio.Logger || Voice.Logger;\n  }\n})(globalThis);\n\n/*! twilio-video.js 2.33.0\n\nThe following license applies to all parts of this software except as\ndocumented below.\n\n    Copyright (C) 2019-2025 Twilio, inc.\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are\n    met:\n\n      1. Redistributions of source code must retain the above copyright\n         notice, this list of conditions and the following disclaimer.\n\n      2. Redistributions in binary form must reproduce the above copyright\n         notice, this list of conditions and the following disclaimer in\n         the documentation and/or other materials provided with the\n         distribution.\n\n      3. Neither the name of Twilio nor the names of its contributors may\n         be used to endorse or promote products derived from this software\n         without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n    \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n    HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n */\n/* eslint strict:0 */\n(function(root) {\n  var bundle = (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n'use strict';\nvar CancelablePromise = require('./util/cancelablepromise');\n/**\n * Create a {@link CancelablePromise<Room>}.\n * @param {function(function(Array<LocalTrack>): CancelablePromise<RoomSignaling>):\n *   Promise<function(): CancelablePromise<RoomSignaling>>} getLocalTracks\n * @param {function(Array<LocalTrack>): LocalParticipant} createLocalParticipant\n * @param {function(Array<LocalTrack>): CancelablePromise<RoomSignaling>} createRoomSignaling\n * @param {function(LocalParticipant, RoomSignaling): Room} createRoom\n * @returns CancelablePromise<Room>\n */\nfunction createCancelableRoomPromise(getLocalTracks, createLocalParticipant, createRoomSignaling, createRoom) {\n    var cancelableRoomSignalingPromise;\n    var cancellationError = new Error('Canceled');\n    return new CancelablePromise(function onCreate(resolve, reject, isCanceled) {\n        var localParticipant;\n        getLocalTracks(function getLocalTracksSucceeded(localTracks) {\n            if (isCanceled()) {\n                return CancelablePromise.reject(cancellationError);\n            }\n            localParticipant = createLocalParticipant(localTracks);\n            return createRoomSignaling(localParticipant).then(function createRoomSignalingSucceeded(getCancelableRoomSignalingPromise) {\n                if (isCanceled()) {\n                    throw cancellationError;\n                }\n                cancelableRoomSignalingPromise = getCancelableRoomSignalingPromise();\n                return cancelableRoomSignalingPromise;\n            });\n        }).then(function roomSignalingConnected(roomSignaling) {\n            if (isCanceled()) {\n                roomSignaling.disconnect();\n                throw cancellationError;\n            }\n            resolve(createRoom(localParticipant, roomSignaling));\n        }).catch(function onError(error) {\n            reject(error);\n        });\n    }, function onCancel() {\n        if (cancelableRoomSignalingPromise) {\n            cancelableRoomSignalingPromise.cancel();\n        }\n    });\n}\nmodule.exports = createCancelableRoomPromise;\n\n},{\"./util/cancelablepromise\":139}],2:[function(require,module,exports){\n'use strict';\nvar MediaStreamTrack = require('./webrtc').MediaStreamTrack;\nvar _a = require('./webrtc/util'), guessBrowser = _a.guessBrowser, guessBrowserVersion = _a.guessBrowserVersion, isCodecSupported = _a.isCodecSupported;\nvar createCancelableRoomPromise = require('./cancelableroompromise');\nvar EncodingParametersImpl = require('./encodingparameters');\nvar LocalParticipant = require('./localparticipant');\nvar InsightsPublisher = require('./util/insightspublisher');\nvar NullInsightsPublisher = require('./util/insightspublisher/null');\nvar _b = require('./media/track/es5'), LocalAudioTrack = _b.LocalAudioTrack, LocalDataTrack = _b.LocalDataTrack, LocalVideoTrack = _b.LocalVideoTrack;\nvar NetworkQualityConfigurationImpl = require('./networkqualityconfiguration');\nvar Room = require('./room');\nvar SignalingV2 = require('./signaling/v2');\nvar _c = require('./util'), asLocalTrack = _c.asLocalTrack, buildLogLevels = _c.buildLogLevels, createRoomConnectedEventPayload = _c.createRoomConnectedEventPayload, filterObject = _c.filterObject, isNonArrayObject = _c.isNonArrayObject;\nvar _d = require('./util/constants'), DEFAULT_ENVIRONMENT = _d.DEFAULT_ENVIRONMENT, DEFAULT_LOG_LEVEL = _d.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _d.DEFAULT_LOGGER_NAME, DEFAULT_REALM = _d.DEFAULT_REALM, DEFAULT_REGION = _d.DEFAULT_REGION, WS_SERVER = _d.WS_SERVER, SDK_NAME = _d.SDK_NAME, SDK_VERSION = _d.SDK_VERSION, E = _d.typeErrors;\nvar CancelablePromise = require('./util/cancelablepromise');\nvar EventObserver = require('./util/eventobserver');\nvar DefaultLog = require('./util/log');\nvar validateBandwidthProfile = require('./util/validate').validateBandwidthProfile;\nvar telemetry = require('./insights/telemetry');\nvar safariVersion = guessBrowser() === 'safari' && guessBrowserVersion();\n// This is used to make out which connect() call a particular Log statement\n// belongs to. Each call to connect() increments this counter.\nvar connectCalls = 0;\nvar didPrintSafariWarning = false;\nvar isSafariWithoutVP8Support = false;\nif (safariVersion) {\n    var safariMajorVersion = safariVersion.major, safariMinorVersion = safariVersion.minor;\n    isSafariWithoutVP8Support = safariMajorVersion < 12 || (safariMajorVersion === 12 && safariMinorVersion < 1);\n}\nvar deprecatedConnectOptionsProps = new Set([\n    { didWarn: false, shouldDelete: true, name: 'abortOnIceServersTimeout' },\n    { didWarn: false, shouldDelete: true, name: 'dscpTagging', newName: 'enableDscp' },\n    { didWarn: false, shouldDelete: true, name: 'iceServersTimeout' },\n    { didWarn: false, shouldDelete: false, name: 'eventListener', newName: 'Video.Logger' },\n    { didWarn: false, shouldDelete: false, name: 'logLevel', newName: 'Video.Logger' },\n]);\nvar deprecatedBandwidthProfileOptions = new Set([\n    { didWarn: false, shouldDelete: false, name: 'maxTracks', newName: 'bandwidthProfile.video.clientTrackSwitchOffControl' },\n    { didWarn: false, shouldDelete: false, name: 'renderDimensions', newName: 'bandwidthProfile.video.contentPreferencesMode' },\n]);\n/**\n * Connect to a {@link Room}.\n *   <br><br>\n *   By default, this will automatically acquire an array containing a\n *   {@link LocalAudioTrack} and {@link LocalVideoTrack} before connecting to\n *   the {@link Room}. These will be stopped when you disconnect from the\n *   {@link Room}.\n *   <br><br>\n *   You can override the default behavior by specifying\n *   <code>options</code>. For example, rather than acquiring a\n *   {@link LocalAudioTrack} and {@link LocalVideoTrack} automatically, you can\n *   pass your own array which you can stop yourself. See {@link ConnectOptions}\n *   for more information.\n * @alias module:twilio-video.connect\n * @param {string} token - The Access Token string\n * @param {ConnectOptions} [options] - Options to override the default behavior, invalid options are ignored.\n * @returns {CancelablePromise<Room>}\n * @throws {RangeError}\n * @throws {TwilioError}\n * @throws {TypeError}\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n * Video.connect(token, {\n *   name: 'my-cool-room'\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n\n *   room.once('disconnected', function() {\n *     console.log('You left the Room:', room.name);\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with audio-only\n * Video.connect(token, {\n *   name: 'my-cool-room',\n *   audio: true\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n *\n *   room.once('disconnected', function() {\n *     console.log('You left the Room:', room.name);\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with media acquired using getUserMedia()\n * navigator.mediaDevices.getUserMedia({\n *   audio: true,\n *   video: true\n * }).then(function(mediaStream) {\n *   return Video.connect(token, {\n *     name: 'my-cool-room',\n *     tracks: mediaStream.getTracks()\n *   });\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n *\n *   room.once('disconnected', function() {\n *     console.log('You left the Room:', room.name);\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with custom names for LocalAudioTrack and LocalVideoTrack\n * Video.connect(token, {\n *   name: 'my-cool-room'\n *   audio: { name: 'microphone' },\n *   video: { name: 'camera' }\n * }).then(function(room) {\n *   room.localParticipants.trackPublications.forEach(function(publication) {\n *     console.log('The LocalTrack \"' + publication.trackName + '\" was successfully published');\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * // Accessing the SDK logger\n * var { Logger, connect } = require('twilio-video');\n * var token = getAccessToken();\n *\n * var logger = Logger.getLogger('twilio-video');\n *\n * // Listen for logs\n * var originalFactory = logger.methodFactory;\n * logger.methodFactory = function (methodName, logLevel, loggerName) {\n *   var method = originalFactory(methodName, logLevel, loggerName);\n *\n *   return function (datetime, logLevel, component, message, data) {\n *     method(datetime, logLevel, component, message, data);\n *     // Send to your own server\n *     postDataToServer(arguments);\n *   };\n * };\n * logger.setLevel('debug');\n *\n * connect(token, {\n *   name: 'my-cool-room'\n * }).then(function(room) {\n *   room.on('participantConnected', function(participant) {\n *     console.log(participant.identity + ' has connected');\n *   });\n * }).catch(error => {\n *   console.log('Could not connect to the Room:', error.message);\n * });\n */\nfunction connect(token, options) {\n    if (typeof options === 'undefined') {\n        options = {};\n    }\n    if (!isNonArrayObject(options)) {\n        return CancelablePromise.reject(E.INVALID_TYPE('options', 'object'));\n    }\n    var Log = options.Log || DefaultLog;\n    var loggerName = options.loggerName || DEFAULT_LOGGER_NAME;\n    var logLevel = options.logLevel || DEFAULT_LOG_LEVEL;\n    var logLevels = buildLogLevels(logLevel);\n    var logComponentName = \"[connect #\".concat(++connectCalls, \"]\");\n    var log;\n    try {\n        log = new Log('default', logComponentName, logLevels, loggerName);\n    }\n    catch (error) {\n        return CancelablePromise.reject(error);\n    }\n    // NOTE(csantos): Log a warning for the deprecated ConnectOptions properties.\n    // The warning is displayed only for the first call to connect() per browser session.\n    // Additionally, the options that are no longer needed will be removed.\n    deprecateOptions(options, log, deprecatedConnectOptionsProps);\n    var adaptiveSimulcast = options.preferredVideoCodecs === 'auto';\n    if (adaptiveSimulcast) {\n        // NOTE(mpatwardhan): enable adaptiveSimulcast.\n        options.preferredVideoCodecs = [{ codec: 'VP8', simulcast: true, adaptiveSimulcast: true }];\n    }\n    if (options.maxVideoBitrate && adaptiveSimulcast) {\n        log.error('ConnectOptions \"maxVideoBitrate\" is not compatible with \"preferredVideoCodecs=auto\"');\n        return CancelablePromise.reject(E.ILLEGAL_INVOKE('connect', 'ConnectOptions \"maxVideoBitrate\" is not compatible with \"preferredVideoCodecs=auto\"'));\n    }\n    options = Object.assign({\n        automaticSubscription: true,\n        dominantSpeaker: false,\n        enableDscp: false,\n        receiveTranscriptions: false,\n        environment: DEFAULT_ENVIRONMENT,\n        eventListener: null,\n        insights: true,\n        LocalAudioTrack: LocalAudioTrack,\n        LocalDataTrack: LocalDataTrack,\n        LocalParticipant: LocalParticipant,\n        LocalVideoTrack: LocalVideoTrack,\n        Log: Log,\n        MediaStreamTrack: MediaStreamTrack,\n        loggerName: loggerName,\n        logLevel: logLevel,\n        maxAudioBitrate: null,\n        maxVideoBitrate: null,\n        name: null,\n        networkMonitor: true,\n        networkQuality: false,\n        preferredAudioCodecs: [],\n        preferredVideoCodecs: [],\n        realm: DEFAULT_REALM,\n        region: DEFAULT_REGION,\n        signaling: SignalingV2\n    }, filterObject(options));\n    /* eslint new-cap:0 */\n    var eventPublisherOptions = {};\n    if (typeof options.wsServerInsights === 'string') {\n        eventPublisherOptions.gateway = options.wsServerInsights;\n    }\n    var EventPublisher = options.insights ? InsightsPublisher : NullInsightsPublisher;\n    var eventPublisher = new EventPublisher(token, SDK_NAME, SDK_VERSION, options.environment, options.realm, eventPublisherOptions);\n    var wsServer = WS_SERVER(options.environment, options.region);\n    var connectTimestamp = Date.now();\n    var eventObserver = new EventObserver(eventPublisher, connectTimestamp, log, options.eventListener);\n    options = Object.assign({ eventObserver: eventObserver, wsServer: wsServer }, options);\n    options.log = log;\n    // NOTE(mroberts): Print the Safari warning once if the log-level is at least\n    // \"warn\", i.e. neither \"error\" nor \"off\".\n    // NOTE(mmalavalli): Print the Safari warning only for versions 12.0 and below.\n    if (isSafariWithoutVP8Support\n        && !didPrintSafariWarning\n        && (log.logLevel !== 'error' && log.logLevel !== 'off')) {\n        didPrintSafariWarning = true;\n        log.warn([\n            'Support for Safari 12.0 and below is limited because it does not support VP8.',\n            'This means you may experience codec issues in Group Rooms. You may also',\n            'experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or',\n            'iOS-based Participants who do not support H.264. However, P2P Rooms',\n            'with browser-based Participants should work. For more information, please',\n            'refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11'\n        ].join(' '));\n    }\n    if (typeof token !== 'string') {\n        return CancelablePromise.reject(E.INVALID_TYPE('token', 'string'));\n    }\n    if (options.insights && eventPublisher) {\n        telemetry.configure({ publisher: eventPublisher, log: log, connectTimestamp: connectTimestamp });\n    }\n    // NOTE(mmalavalli): The Room \"name\" in \"options\" was being used\n    // as the LocalTrack name in asLocalTrack(). So we pass a copy of\n    // \"options\" without the \"name\".\n    var localTrackOptions = Object.assign({}, options);\n    delete localTrackOptions.name;\n    if ('tracks' in options) {\n        if (!Array.isArray(options.tracks)) {\n            return CancelablePromise.reject(E.INVALID_TYPE('options.tracks', 'Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack'));\n        }\n        try {\n            options.tracks = options.tracks.map(function (track) { return asLocalTrack(track, localTrackOptions); });\n        }\n        catch (error) {\n            return CancelablePromise.reject(error);\n        }\n    }\n    var error = validateBandwidthProfile(options.bandwidthProfile);\n    if (error) {\n        return CancelablePromise.reject(error);\n    }\n    // Note(mpatwardhan): \"clientTrackSwitchOffControl\" allows tracks to be switched off\n    // and \"contentPreferencesMode\" allows track dimensions to be specified dynamically.\n    // The properties can have one of the three values internally:\n    // 1) \"auto\" = sdk will decide and send the hints.\n    // 2) \"manual\" - app can use api to send the hints.\n    // 3) \"disabled\" = do not enable this feature. (this is internal only value)\n    // 'disabled' is needed because clientTrackSwitchOffControl and contentPreferencesMode are incompatible with\n    // deprecated properties maxTracks and renderDimensions respectively. once we make @breaking_version_change\n    // we can remove 'disabled' state along with maxTracks and renderDimensions.\n    options.clientTrackSwitchOffControl = 'disabled'; // should sdk turn off idle tracks automatically?\n    options.contentPreferencesMode = 'disabled'; // should sdk  use video element dimensions for content hints?\n    if (options.bandwidthProfile) {\n        options.clientTrackSwitchOffControl = 'auto';\n        options.contentPreferencesMode = 'auto';\n        if (options.bandwidthProfile.video) {\n            // log any warnings about deprecated bwp options\n            deprecateOptions(options.bandwidthProfile.video, log, deprecatedBandwidthProfileOptions);\n            if ('maxTracks' in options.bandwidthProfile.video) {\n                // when deprecated maxTracks is specified. disable clientTrackSwitchOffControl\n                options.clientTrackSwitchOffControl = 'disabled';\n            }\n            else if (options.bandwidthProfile.video.clientTrackSwitchOffControl === 'manual') {\n                options.clientTrackSwitchOffControl = 'manual';\n            }\n            else {\n                options.clientTrackSwitchOffControl = 'auto';\n            }\n            if ('renderDimensions' in options.bandwidthProfile.video) {\n                options.contentPreferencesMode = 'disabled';\n            }\n            else if (options.bandwidthProfile.video.contentPreferencesMode === 'manual') {\n                options.contentPreferencesMode = 'manual';\n            }\n            else {\n                options.contentPreferencesMode = 'auto';\n            }\n        }\n    }\n    var Signaling = options.signaling;\n    var signaling = new Signaling(options.wsServer, options);\n    log.info('Connecting to a Room');\n    log.debug('Options:', options);\n    var encodingParameters = new EncodingParametersImpl({\n        maxAudioBitrate: options.maxAudioBitrate,\n        maxVideoBitrate: options.maxVideoBitrate\n    }, adaptiveSimulcast);\n    var preferredCodecs = {\n        audio: options.preferredAudioCodecs.map(normalizeCodecSettings),\n        video: options.preferredVideoCodecs.map(normalizeCodecSettings)\n    };\n    var networkQualityConfiguration = new NetworkQualityConfigurationImpl(isNonArrayObject(options.networkQuality) ? options.networkQuality : {});\n    // Log warnings for any unsupported preferred codecs.\n    ['audio', 'video'].forEach(function (kind) { return preferredCodecs[kind].forEach(function (_a) {\n        var codec = _a.codec;\n        return isCodecSupported(codec, kind).then(function (isSupported) { return !isSupported && log.warn(\"The preferred \".concat(kind, \" codec \\\"\").concat(codec, \"\\\" will be ignored as it is not supported by the browser.\")); });\n    }); });\n    // Create a CancelableRoomPromise<Room> that resolves after these steps:\n    // 1 - Get the LocalTracks.\n    // 2 - Create the LocalParticipant using options.tracks.\n    // 3 - Connect to rtc-room-service and create the RoomSignaling.\n    // 4 - Create the Room and then resolve the CancelablePromise.\n    var cancelableRoomPromise = createCancelableRoomPromise(getLocalTracks.bind(null, options), createLocalParticipant.bind(null, signaling, log, encodingParameters, networkQualityConfiguration, options), createRoomSignaling.bind(null, token, options, signaling, encodingParameters, preferredCodecs), createRoom.bind(null, options));\n    cancelableRoomPromise.then(function (room) {\n        eventPublisher.connect(room.sid, room.localParticipant.sid);\n        var connectedEventPayload = createRoomConnectedEventPayload(options);\n        options.eventObserver.emit('event', connectedEventPayload);\n        log.info('Connected to Room:', room.toString());\n        log.info('Room name:', room.name);\n        log.debug('Room:', room);\n        room.once('disconnected', function () {\n            telemetry.reset();\n            eventPublisher.disconnect();\n        });\n        return room;\n    }, function (error) {\n        telemetry.reset();\n        eventPublisher.disconnect();\n        if (cancelableRoomPromise._isCanceled) {\n            log.info('Attempt to connect to a Room was canceled');\n        }\n        else {\n            log.info('Error while connecting to a Room:', error);\n        }\n    });\n    return cancelableRoomPromise;\n}\n/**\n * You may pass these options to {@link connect} in order to override the\n * default behavior.\n * @typedef {object} ConnectOptions\n * @property {boolean|CreateLocalTracksOptions|CreateLocalAudioTrackOptions} [audio=true] - Whether or not to\n *   get local audio with <code>getUserMedia</code> when <code>tracks</code>\n *   are not provided.\n * @property {boolean} [automaticSubscription=true] - By default, you will subscribe\n *   to all RemoteTracks shared by other Participants in a Room. You can now override this\n *   behavior by setting this flag to <code>false</code>. It will make sure that you will\n *   not subscribe to any RemoteTrack in a Group or Small Group Room. Setting it to\n *   <code>true</code>, or not setting it at all preserves the default behavior. This\n *   flag does not have any effect in a Peer-to-Peer Room.\n * @property {BandwidthProfileOptions} [bandwidthProfile] - You can optionally configure\n *   how your available downlink bandwidth is shared among the RemoteTracks you have subscribed\n *   to in a Group Room. By default, bandwidth is shared equally among the RemoteTracks.\n *   This has no effect in Peer-to-Peer Rooms.\n * @property {function} [disposeMediaElement] - Callback triggered after a media track is detached from an audio or video element.\n * @property {boolean} [dominantSpeaker=false] - Whether to enable the Dominant\n *   Speaker API or not. This only takes effect in Group Rooms.\n * @property {boolean} [dscpTagging=false] - <code>(deprecated: use \"enableDscp\" instead)</code>\n *   DSCP tagging allows you to request enhanced QoS treatment for RTP media packets from any\n *   firewall that the client may be behind. Setting this option to <code>true</code> will\n *   request DSCP tagging for media packets on supported browsers (only Chrome supports this\n *   as of now). Audio packets will be sent with DSCP header value set to 0xb8 which corresponds\n *   to Expedited Forwarding (EF). Video packets will be sent with DSCP header value set to 0x88\n *   which corresponds to Assured Forwarding (AF41).\n * @property {boolean} [enableDscp=false] - DSCP tagging allows you to request enhanced\n *   QoS treatment for RTP media packets from any firewall that the client may be behind.\n *   Setting this option to <code>true</code> will request DSCP tagging for media packets\n *   on supported browsers (only Chrome supports this as of now). Audio packets will be\n *   sent with DSCP header value set to 0xb8 which corresponds to Expedited Forwarding (EF).\n *   Video packets will be sent with DSCP header value set to 0x88 which corresponds to\n *   Assured Forwarding (AF41).\n * @property {function} [enumerateDevices] - Overrides the native MediaDevices.enumerateDevices API.\n * @property {EventListener} [eventListener] - <code>(deprecated: use [Video.Logger](module-twilio-video.html)</code>\n *   you can listen to fine-grained events related to signaling and media that are\n *   not available in the public APIs. These events might be useful for your own reporting\n *   and diagnostics.\n * @property {function} [getUserMedia] - Overrides the native MediaDevices.getUserMedia API.\n * @property {Array<RTCIceServer>} iceServers - Override the STUN and TURN\n *   servers used when connecting to {@link Room}s\n * @property {RTCIceTransportPolicy} [iceTransportPolicy=\"all\"] - Override the\n *   ICE transport policy to be one of \"relay\" or \"all\"\n * @property {boolean} [insights=true] - Whether publishing events\n *   to the Insights gateway is enabled or not\n  * @property {LogLevel|LogLevels} [logLevel='warn'] - <code>(deprecated: use [Video.Logger](module-twilio-video.html) instead.\n *   See [examples](module-twilio-video.html#.connect) for details)</code>\n *   Set the default log verbosity\n *   of logging. Passing a {@link LogLevel} string will use the same\n *   level for all components. Pass a {@link LogLevels} to set specific log\n *   levels.\n * @property {string} [loggerName='twilio-video'] - The name of the logger. Use this name when accessing the logger used by the SDK.\n *   See [examples](module-twilio-video.html#.connect) for details.\n * @property {function} [mapMediaElement] - Callback triggered after a media track is attached to an audio or video element.\n * @property {?number} [maxAudioBitrate=null] - Max outgoing audio bitrate (bps);\n *   A <code>null</code> or a <code>0</code> value does not set any bitrate limit;\n *   This value is set as a hint for variable bitrate codecs, but will not take\n *   effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari\n *   support a bitrate range of 12000 bps to 256000 bps for Opus codec; This parameter\n *   has no effect on iSAC, PCMU and PCMA codecs\n * @property {?number} [maxVideoBitrate=null] - Max outgoing video bitrate (bps);\n *   A <code>null</code> or <code>0</code> value does not set any bitrate limit;\n *   This value is set as a hint for variable bitrate codecs, but will not take\n *   effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari\n *   all seem to support an average bitrate range of 20000 bps (20 kbps) to\n *   8000000 bps (8 mbps) for a 720p VideoTrack\n *   This parameter must not be set when when preferredVideoCodecs is set to `auto`.\n * @property {MediaStream.constructor} [MediaStream] - Overrides the native MediaStream class.\n * @property {?string} [name=null] - Set to connect to a {@link Room} by name\n * @property {boolean|NetworkQualityConfiguration} [networkQuality=false] - Whether to enable the Network\n *   Quality API or not. This only takes effect in Group Rooms. Pass a {@link NetworkQualityConfiguration}\n *   to configure verbosity levels for network quality information for {@link LocalParticipant}\n *   and {@link RemoteParticipant}s. A <code>true</code> value will set the {@link NetworkQualityVerbosity}\n *   for the {@link LocalParticipant} to {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n *   and the {@link NetworkQualityVerbosity} for {@link RemoteParticipant}s to\n *   {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#none</code>.\n * @property {Array<string>} [notifyWarnings=[]] - The SDK raises warning events when it\n *   detects certain conditions. You can implement callbacks on these events to act on them, or to alert\n *   the user of an issue. Subsequently, \"warningsCleared\" event is raised when conditions have returned\n *   to normal. You can listen to these events by specifying an array of warning. By default,\n *   this array is empty and no warning events will be raised.\n *   Possible values include <code>recording-media-lost</code>, which is raised when the media server\n *   has not detected any media on the published track that is being recorded in the past 30 seconds.\n *   This usually happens when there are network interruptions or when the track has stopped.\n *   This warning is raised by {@link LocalTrackPublication}, {@link LocalParticipant}, and {@link Room} object.\n * @property {boolean} [receiveTranscriptions=false] - Whether to enable transcription in the {@link Room}.\n *   When set to <code>true</code>, the {@link Room} will emit <code>transcription</code> events containing transcription data.\n * @property {string} [region='gll'] - Preferred signaling region; By default, you will be connected to the\n *   nearest signaling server determined by latency based routing. Setting a value other\n *   than <code style=\"padding:0 0\">gll</code> bypasses routing and guarantees that signaling traffic will be\n *   terminated in the region that you prefer. Please refer to this <a href=\"https://www.twilio.com/docs/video/ip-address-whitelisting#signaling-communication\" target=\"_blank\">table</a>\n *   for the list of supported signaling regions.\n * @property {RTCConfiguration} [rtcConfiguration] - An optional RTCConfiguration to pass to the RTCPeerConnection constructor.\n * This allows you to configure the WebRTC connection between your local machine and the remote peer.\n * @property {RTCPeerConnection.constructor} [RTCPeerConnection] - Allows overriding the native RTCPeerConnection class.\n * @property {Array<AudioCodec|AudioCodecSettings>} [preferredAudioCodecs=[]] - Preferred audio codecs;\n *  An empty array preserves the current audio codec preference order.\n * @property {Array<VideoCodec|VideoCodecSettings>|VideoEncodingMode} [preferredVideoCodecs=[]] -\n *  Preferred video codecs; when set to 'VideoEncodingMode.Auto', SDK manages the video codec,\n *  by preferring VP8 simulcast in group rooms. It also enables adaptive simulcast, which allows SDK\n *  to turn off simulcast layers that are not needed for efficient bandwidth and CPU usage.\n *  An empty array preserves the current video codec.\n *  preference order. If you want to set a preferred video codec on a Group Room,\n *  you will need to create the Room using the REST API and set the\n *  <code>VideoCodecs</code> property.\n *  See <a href=\"https://www.twilio.com/docs/api/video/rooms-resource#create-room\">\n *  here</a> for more information.\n * @property {Array<LocalTrack|MediaStreamTrack>} [tracks] - The\n *   {@link LocalTrack}s or MediaStreamTracks with which to join the\n *   {@link Room}. These tracks can be obtained either by calling\n *   {@link createLocalTracks}, or by constructing them from the MediaStream\n *   obtained by calling <code>getUserMedia()</code>.\n * @property {boolean|CreateLocalTrackOptions} [video=true] - Whether or not to\n *   get local video with <code>getUserMedia</code> when <code>tracks</code>\n *   are not provided.\n */\n/**\n * {@link BandwidthProfileOptions} allows you to configure how your available downlink\n * bandwidth is shared among the RemoteTracks you have subscribed to in a Group Room.\n * @typedef {object} BandwidthProfileOptions\n * @property {VideoBandwidthProfileOptions} [video] - Optional parameter to configure\n *   how your available downlink bandwidth is shared among the {@link RemoteVideoTrack}s you\n *   have subscribed to in a Group Room.\n */\n/**\n * {@link VideoBandwidthProfileOptions} allows you to configure how your available downlink\n * bandwidth is shared among the {@link RemoteVideoTrack}s you have subscribed to in a Group Room.\n * @typedef {object} VideoBandwidthProfileOptions\n * @property {Track.Priority} [dominantSpeakerPriority=\"standard\"] - Optional parameter to\n *   specify the minimum subscribe {@link Track.Priority} of the Dominant Speaker's {@link RemoteVideoTrack}s.\n *   This means that the Dominant Speaker's {@link RemoteVideoTrack}s that are published with\n *   lower {@link Track.Priority} will be subscribed to with the {@link Track.Priority} specified here.\n *   This has no effect on {@link RemoteVideoTrack}s published with higher {@link Track.Priority}, which will\n *   still be subscribed to with with the same {@link Track.Priority}. If not specified, this defaults to \"standard\".\n *   This parameter only applies to a Group Room Participant when {@link ConnectOptions}.dominantSpeaker is set to true.\n * @property {number} [maxSubscriptionBitrate] - Optional parameter to specify the maximum\n *   downlink video bandwidth in bits per second (bps). By default, there are no limits on\n *   the downlink video bandwidth.\n * @property {ClientTrackSwitchOffControl} [clientTrackSwitchOffControl=\"auto\"] - Optional parameter that determines\n *    when to turn the {@link RemoteVideoTrack} on or off. When set to \"auto\", SDK will use the visibility of the\n *    attached elements to determine if the {@link RemoteVideoTrack} should be turned off or on. When the attached video elements become invisible the {@link RemoteVideoTrack} will\n *    be turned off, and when elements become visible they will be turned on. When set to \"manual\" you can turn the {@link RemoteVideoTrack}\n *    on and off using the api {@link RemoteVideoTrack#switchOn} and {@link RemoteVideoTrack#switchOff} respectively.\n * @property {VideoContentPreferencesMode} [contentPreferencesMode=\"auto\"] - This Optional parameter configures\n *    the mode for specifying content preferences for the {@link RemoteVideoTrack}. When set to \"auto\" the\n *    SDK determines the render dimensions by inspecting the attached video elements. {@link RemoteVideoTrack}s rendered in smaller video elements\n *    will receive a lower resolution stream compared to the video rendered in larger video elements. When set to \"manual\" you can set\n *    the dimensions programmatically by calling {@link RemoteVideoTrack#setContentPreferences}.\n * @property {number} [maxTracks] - <code>(deprecated: use \"clientTrackSwitchOffControl\" instead)</code>. Optional\n *   parameter to specify the maximum number of visible {@link RemoteVideoTrack}s, which will be selected based on\n *   {@link Track.Priority} and an N-Loudest policy. By default there are no limits on the number of visible {@link RemoteVideoTrack}s.\n *   0 or a negative value will remove any limit on the maximum number of visible {@link RemoteVideoTrack}s.\n * @property {BandwidthProfileMode} [mode=\"grid\"] - Optional parameter to specify how the {@link RemoteVideoTrack}s'\n *   TrackPriority values are mapped to bandwidth allocation in Group Rooms. This defaults to \"grid\",\n *   which results in equal bandwidth share allocation to all {@link RemoteVideoTrack}s.\n * @property {VideoRenderDimensions} [renderDimensions] - <code>(deprecated: use \"contentPreferencesMode\" instead)</code>. Optional\n * parameter to specify the desired render dimensions of {@link RemoteVideoTrack}s.\n * @property {TrackSwitchOffMode} [trackSwitchOffMode=\"predicted\"] - Optional parameter to configure\n *   how {@link RemoteVideoTrack}s are switched off in response to bandwidth pressure. Defaults to \"predicted\".\n */\n/**\n * @deprecated\n * {@link VideoRenderDimensions} allows you to specify the desired render dimensions of {@link RemoteVideoTrack}s.\n * You can specify 'auto' for this field - which is also default value -  based on {@link Track.Priority}. The bandwidth allocation algorithm will distribute the available downlink bandwidth\n * proportional to the requested render dimensions. This is just an input for calculating the bandwidth to be allocated\n * and does not affect the actual resolution of the {@link RemoteVideoTrack}s.\n * @typedef {object} VideoRenderDimensions\n * @property {VideoTrack.Dimensions} [high] - Optional parameter to specify the desired rendering dimensions of\n *   {@link RemoteVideoTrack} whose {@link Track.Priority} is \"high\". 0 or a negative value will result in the lowest\n *   possible resolution. This defaults to 1280 x 720 (HD).\n * @property {VideoTrack.Dimensions} [low] - Optional parameter to specify the desired rendering dimensions of\n *   {@link RemoteVideoTrack} whose {@link Track.Priority} is \"low\". 0 or a negative value will result in the lowest\n *   possible resolution. This defaults to 176 x 144 (QCIF).\n * @property {VideoTrack.Dimensions} [standard] - Optional parameter to specify the desired rendering dimensions of\n *   {@link RemoteVideoTrack} whose {@link Track.Priority} is \"standard\". 0 or a negative value will result in the lowest\n *   possible resolution. This defaults to 640 x 480 (VGA).\n */\n/**\n * Configure verbosity levels for network quality information for\n * {@link LocalParticipant} and {@link RemoteParticipant}s.\n * @typedef {object} NetworkQualityConfiguration\n * @property {NetworkQualityVerbosity} [local=1] - Verbosity level for {@link LocalParticipant}\n * @property {NetworkQualityVerbosity} [remote=0] - Verbosity level for {@link RemoteParticipant}s\n */\n/**\n * You may pass these levels to {@link ConnectOptions} to override\n * log levels for individual components.\n * @typedef {object} LogLevels\n * @property {LogLevel} [default='warn'] - Log level for 'default' modules.\n * @property {LogLevel} [media='warn'] - Log level for 'media' modules.\n * @property {LogLevel} [signaling='warn'] - Log level for 'signaling' modules.\n * @property {LogLevel} [webrtc='warn'] - Log level for 'webrtc' modules.\n */\n/**\n * Audio codec settings.\n * @typedef {object} AudioCodecSettings\n * @property {AudioCodec} codec - Audio codec name\n */\n/**\n * Opus codec settings.\n * @typedef {AudioCodecSettings} OpusCodecSettings\n * @property {AudioCodec} name - \"opus\"\n * @property {boolean} [dtx=true] - Enable/disable discontinuous transmission (DTX);\n *   If enabled all published {@link LocalAudioTrack}s will reduce the outgoing bitrate\n *   to near-zero whenever speech is not detected, resulting in bandwidth and CPU savings;\n *   It defaults to true.\n */\n/**\n * Video codec settings.\n * @typedef {object} VideoCodecSettings\n * @property {VideoCodec} codec - Video codec name\n */\n/**\n * VP8 codec settings.\n * @typedef {VideoCodecSettings} VP8CodecSettings\n * @property {VideoCodec} name - \"VP8\"\n * @property {boolean} [simulcast=false] - Enable/disable VP8 simulcast; If\n *   enabled, Twilio's Video SDK will send three video streams of different\n *   qualities\n */\n/**\n * Names of the supported audio codecs.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar AudioCodec = {\n    isac: 'isac',\n    opus: 'opus',\n    PCMA: 'PCMA',\n    PCMU: 'PCMU'\n};\n/**\n * Names of the supported VideoEncodingMode.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoEncodingMode = {\n    Auto: 'auto',\n};\n/**\n * Names of the supported video codecs.\n * @enum {string}\n */\nvar VideoCodec = {\n    H264: 'H264',\n    VP8: 'VP8'\n};\n// VP9 is supported by most browsers, but backend doesn't at the moment.\n// Hide it from public documentation until then.\nVideoCodec.VP9 = 'VP9';\n/**\n * Levels for logging verbosity.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar LogLevel = {\n    debug: 'debug',\n    info: 'info',\n    warn: 'warn',\n    error: 'error',\n    off: 'off'\n};\n/**\n * The verbosity level of network quality information of a {@link Participant}.\n * @enum {number}\n */\n// eslint-disable-next-line\nvar NetworkQualityVerbosity = {\n    /**\n     * Nothing is reported for the {@link Participant}. This has no effect and\n     * defaults to {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n     * for the {@link LocalParticipant}.\n     */\n    none: 0,\n    /**\n     * Reports {@link NetworkQualityLevel} for the {@link Participant}.\n     */\n    minimal: 1,\n    /**\n     * Reports {@link NetworkQualityLevel} and {@link NetworkQualityStats} for the {@link Participant}.\n     * {@link NetworkQualityStats} is populated with audio and video {@link NetworkQualityLevel}s\n     * based on which the {@link Participant}'s {@link NetworkQualityLevel} is calculated.\n     */\n    moderate: 2,\n    /**\n     * Reports {@link NetworkQualityLevel} and {@link NetworkQualityStats} for the {@link Participant}.\n     * {@link NetworkQualityStats} is populated with audio and Video {@link NetworkQualityLevel}s\n     * and their corresponding {@link NetworkQualityMediaStats} based on which the\n     * {@link Participant}'s {@link NetworkQualityLevel} is calculated.\n     */\n    detailed: 3\n};\n/**\n * {@link TrackSwitchOffMode} specifies when {@link RemoteVideoTrack}s' are switched off.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar TrackSwitchOffMode = {\n    /**\n     * In this mode, {@link RemoteVideoTrack}s are switched off only when network congestion\n     * is detected.\n     */\n    detected: 'detected',\n    /**\n     * In this mode, {@link RemoteVideoTrack}s are pro-actively switched off when network\n     * congestion is predicted by the bandwidth estimation mechanism.\n     */\n    predicted: 'predicted',\n    /**\n     * In this mode, {@link RemoteVideoTrack}s are not switched off. Instead in response to network\n     * congestion, tracks will be adjusted to lower quality.\n     */\n    disabled: 'disabled'\n};\n/**\n * {@link BandwidthProfileMode} specifies how {@link RemoteVideoTrack}s' {@link Track.Priority} values\n * are mapped to bandwidth allocation in Group Rooms.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar BandwidthProfileMode = {\n    /**\n     * This mode is for use cases where all the subscribed {@link RemoteVideoTrack}s are\n     * equally important. The bandwidth allocation algorithm will share the available\n     * downlink bandwidth equally among the subscribed {@link RemoteVideoTrack}s, irrespective\n     * of their {@link Track.Priority}. In case of insufficient downlink bandwidth, the lower\n     * priority {@link RemoteVideoTrack}s are switched off.\n     */\n    grid: 'grid',\n    /**\n     * This mode is for use cases where some {@link RemoteVideoTrack}s are prioritized more than\n     * others. However, the lower priority {@link RemoteVideoTrack}s still need to be visible.\n     * The bandwidth allocation algorithm will share the available downlink bandwidth proportional\n     * to the requested {@link VideoRenderDimensions} corresponding to their {@link Track.Priority}.\n     * In case of insufficient downlink bandwidth, the quality of higher priority {@link RemoteVideoTrack}s\n     * may be degraded to avoid switching off lower priority {@link RemoteVideoTrack}s.\n     */\n    collaboration: 'collaboration',\n    /**\n     * This mode is for use cases where some {@link RemoteVideoTrack}s are deemed critical and must\n     * be preserved at any cost over the other {@link RemoteVideoTrack}s. The bandwidth allocation\n     * algorithm will allocate as big a share of the available downlink bandwidth as it possibly\n     * can to the higher priority {@link RemoteVideoTrack}s, and only then consider the lower priority\n     * {@link RemoteVideoTrack}s. In case of insufficient downlink bandwidth, the lower priority\n     * {@link RemoteVideoTrack}s are switched off in order to preserve the quality of the higher\n     * priority {@link RemoteVideoTrack}s.\n     */\n    presentation: 'presentation'\n};\n/**\n * {@link VideoContentPreferencesMode} specifies how {@link RemoteVideoTrack}s' render dimensions are\n * decided by the SDK.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoContentPreferencesMode = {\n    /**\n     * when set to auto, SDK uses the sizes of the video elements attached to the to the  {@link RemoteVideoTrack} dynamically to\n     * decide the render dimensions. {@link RemoteVideoTrack}s rendered in smaller video elements will be given smaller bandwidth allocation\n     * compared to the tracks rendered in large video elements.\n     */\n    auto: 'auto',\n    /**\n     * When set to manual, application can use {@link RemoteVideoTrack#setContentPreference} to set the\n     * desired render dimensions for the {@link RemoteVideoTrack}.\n     */\n    manual: 'manual'\n};\n/**\n * {@link ClientTrackSwitchOffControl} specifies how {@link RemoteVideoTrack}s' turned on and off\n * @enum {string}\n */\n// eslint-disable-next-line\nvar ClientTrackSwitchOffControl = {\n    /**\n     * when set to auto, SDK uses the visibility of the video elements attached to the to the  {@link RemoteVideoTrack} to decide.\n     * on turning tracks on or off. The track that are not attached to any video elements or not visible on the screen will be turned\n     * off automatically.\n     */\n    auto: 'auto',\n    /**\n     * When set to manual, application can use {@link RemoteVideoTrack}s switchOff and switchOn apis to control turn the track on or off.\n     */\n    manual: 'manual'\n};\n/**\n * Names of the supported levels for {@link EventListenerEvent}s.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar EventListenerLevel = {\n    debug: 'debug',\n    error: 'error',\n    info: 'info',\n    warning: 'warning'\n};\n/**\n * Names of the supported groups for {@link EventListenerEvent}s.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar EventListenerGroup = {\n    /**\n     * Events associated with the connection to Twilio's signaling server\n     */\n    signaling: 'signaling'\n};\n/**\n * An {@link EventListener} allows you to listen to fine-grained {@link EventListenerEvent}s related\n * to signaling and media that are not available in the public APIs, which might be useful for your own\n * reporting and diagnostics.\n * @typedef {EventEmitter} EventListener\n * @example\n * const { EventEmitter } = require('events');\n * const { connect } = require('twilio-video');\n *\n * const eventListener = new EventEmitter();\n * eventListener.on('event', function(event) {\n *   console.log('The SDK raised an event:', event);\n * });\n *\n * connect('token', {\n *   eventListener: eventListener\n * });\n */\n/**\n * The SDK raised an {@link EventListenerEvent}.\n * @event EventListener#event\n * @param {EventListenerEvent} event - Context about the event raised by the SDK.\n * This can be one of the following:\n *  * {@link EventListenerClosedEvent}\n *  * {@link EventListenerConnectingEvent}\n *  * {@link EventListenerEarlyEvent}\n *  * {@link EventListenerOpenEvent}\n *  * {@link EventListenerWaitingEvent}\n */\n/**\n * An {@link EventListenerEvent} provides context about an event raised by the SDK on the\n * {@link EventListener}. Apart from the properties listed here, it may also include some\n * event-specific data within an optional \"payload\" property. The different types of\n * {@link EventListenerEvent}s are listed below:\n *  * {@link EventListenerClosedEvent}\n *  * {@link EventListenerConnectingEvent}\n *  * {@link EventListenerEarlyEvent}\n *  * {@link EventListenerOpenEvent}\n *  * {@link EventListenerWaitingEvent}\n * @typedef {object} EventListenerEvent\n * @property {number} elapsedTime - The time elapsed in milliseconds since connect() was called\n * @property {EventListenerGroup} group - The group under which the event is classified\n * @property {EventListenerLevel} level - The verbosity level of the event, which can be one of \"debug\", \"error\", \"info\", \"warning\"\n * @property {string} name - The name of the event\n * @property {*} [payload] - Optional event-specific data\n * @property {number} timestamp - The time in milliseconds relative to the Unix Epoch when the event was raised\n */\n/**\n * The connection to Twilio's signaling server was closed.\n * @typedef {EventListenerEvent} EventListenerClosedEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level - 'info' if the connection was closed by the client, 'error' otherwise\n * @property {string} name='closed'\n * @property {{reason: string}} payload - Reason for the connection being closed. It can be one of\n *   'busy', 'failed', 'local', 'remote' or 'timeout'\n */\n/**\n * The SDK is connecting to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerConnectingEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='connecting'\n */\n/**\n * The SDK is about to connect to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerEarlyEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='early'\n */\n/**\n * The SDK has established a signaling connection to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerOpenEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='open'\n */\n/**\n * The SDK is waiting to retry connecting th Twilio's signaling server. This can\n * happen if the server is busy with too many connection requests.\n * @typedef {EventListenerEvent} EventListenerWaitingEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='warning'\n * @property {string} name='waiting'\n */\nfunction deprecateOptions(options, log, deprecationTable) {\n    deprecationTable.forEach(function (prop) {\n        var didWarn = prop.didWarn, name = prop.name, newName = prop.newName, shouldDelete = prop.shouldDelete;\n        if (name in options && typeof options[name] !== 'undefined') {\n            if (newName && shouldDelete) {\n                options[newName] = options[name];\n            }\n            if (shouldDelete) {\n                delete options[name];\n            }\n            if (!didWarn && !['error', 'off'].includes(log.level)) {\n                log.warn(\"The ConnectOptions \\\"\".concat(name, \"\\\" is \").concat(newName\n                    ? \"deprecated and scheduled for removal. Please use \\\"\".concat(newName, \"\\\" instead.\")\n                    : 'no longer applicable and will be ignored.'));\n                prop.didWarn = true;\n            }\n        }\n    });\n}\nfunction createLocalParticipant(signaling, log, encodingParameters, networkQualityConfiguration, options, localTracks) {\n    var localParticipantSignaling = signaling.createLocalParticipantSignaling(encodingParameters, networkQualityConfiguration);\n    log.debug('Creating a new LocalParticipant:', localParticipantSignaling);\n    return new options.LocalParticipant(localParticipantSignaling, localTracks, options);\n}\nfunction createRoom(options, localParticipant, roomSignaling) {\n    var room = new Room(localParticipant, roomSignaling, options);\n    var log = options.log;\n    log.debug('Creating a new Room:', room);\n    roomSignaling.on('stateChanged', function stateChanged(state) {\n        if (state === 'disconnected') {\n            log.info('Disconnected from Room:', room.toString());\n            roomSignaling.removeListener('stateChanged', stateChanged);\n        }\n    });\n    return room;\n}\nfunction createRoomSignaling(token, options, signaling, encodingParameters, preferredCodecs, localParticipant) {\n    options.log.debug('Creating a new RoomSignaling');\n    return signaling.connect(localParticipant._signaling, token, encodingParameters, preferredCodecs, options);\n}\nfunction getLocalTracks(options, handleLocalTracks) {\n    var log = options.log;\n    options.shouldStopLocalTracks = !options.tracks;\n    if (options.shouldStopLocalTracks) {\n        log.info('LocalTracks were not provided, so they will be acquired '\n            + 'automatically before connecting to the Room. LocalTracks will '\n            + 'be released if connecting to the Room fails or if the Room '\n            + 'is disconnected');\n    }\n    else {\n        log.info('Getting LocalTracks');\n        log.debug('Options:', options);\n    }\n    return options.createLocalTracks(options).then(function getLocalTracksSucceeded(localTracks) {\n        var promise = handleLocalTracks(localTracks);\n        promise.catch(function handleLocalTracksFailed() {\n            if (options.shouldStopLocalTracks) {\n                log.info('The automatically acquired LocalTracks will now be stopped');\n                localTracks.forEach(function (track) {\n                    track.stop();\n                });\n            }\n        });\n        return promise;\n    });\n}\nfunction normalizeCodecSettings(nameOrSettings) {\n    var settings = typeof nameOrSettings === 'string'\n        ? { codec: nameOrSettings }\n        : nameOrSettings;\n    switch (settings.codec.toLowerCase()) {\n        case 'opus': {\n            return Object.assign({ dtx: true }, settings);\n        }\n        case 'vp8': {\n            return Object.assign({ simulcast: false }, settings);\n        }\n        default: {\n            return settings;\n        }\n    }\n}\nmodule.exports = connect;\n\n},{\"./cancelableroompromise\":1,\"./encodingparameters\":9,\"./insights/telemetry\":25,\"./localparticipant\":26,\"./media/track/es5\":29,\"./networkqualityconfiguration\":58,\"./room\":71,\"./signaling/v2\":85,\"./util\":147,\"./util/cancelablepromise\":139,\"./util/constants\":140,\"./util/eventobserver\":145,\"./util/insightspublisher\":148,\"./util/insightspublisher/null\":149,\"./util/log\":151,\"./util/validate\":165,\"./webrtc\":173,\"./webrtc/util\":185}],3:[function(require,module,exports){\n'use strict';\nvar _a = require('./util/constants'), DEFAULT_LOG_LEVEL = _a.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _a.DEFAULT_LOGGER_NAME;\n/**\n * Request a {@link LocalAudioTrack} or {@link LocalVideoTrack}.\n * @param {Track.Kind} kind - \"audio\" or \"video\"\n * @param {CreateLocalTrackOptions} [options]\n * @returns {Promise<LocalAudioTrack|LocalVideoTrack>}\n * @private\n */\nfunction createLocalTrack(kind, options) {\n    options = Object.assign({\n        loggerName: DEFAULT_LOGGER_NAME,\n        logLevel: DEFAULT_LOG_LEVEL,\n    }, options);\n    var createOptions = {};\n    createOptions.loggerName = options.loggerName;\n    createOptions.logLevel = options.logLevel;\n    delete options.loggerName;\n    delete options.logLevel;\n    // NOTE(lrivas): These createLocalTrack options override the default media handling and should be passed as createOptions\n    var customMediaHandling = ['getUserMedia', 'enumerateDevices', 'MediaStream', 'mapMediaElement', 'disposeMediaElement'];\n    customMediaHandling.forEach(function (override) {\n        if (override in options) {\n            createOptions[override] = options[override];\n            delete options[override];\n        }\n    });\n    var createLocalTracks = options.createLocalTracks;\n    delete options.createLocalTracks;\n    createOptions[kind] = Object.keys(options).length > 0 ? options : true;\n    return createLocalTracks(createOptions).then(function (localTracks) { return localTracks[0]; });\n}\n/**\n * Request a {@link LocalAudioTrack}.\n * @alias module:twilio-video.createLocalAudioTrack\n * @param {CreateLocalTracksOptions|CreateLocalAudioTrackOptions} [options] - Options for requesting a {@link LocalAudioTrack}\n * @returns {Promise<LocalAudioTrack>}\n * @example\n * var Video = require('twilio-video');\n *\n * // Connect to the Room with just video\n * Video.connect('my-token', {\n *   name: 'my-cool-room',\n *   video: true\n * }).then(function(room) {\n *   // Add audio after connecting to the Room\n *   Video.createLocalAudioTrack().then(function(localTrack) {\n *     room.localParticipant.publishTrack(localTrack);\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n *\n * // Request the LocalAudioTrack with a custom name\n * // and krisp noise cancellation\n * Video.createLocalAudioTrack({\n *   name: 'microphone',\n *   noiseCancellationOptions: {\n *      vendor: 'krisp',\n *      sdkAssetsPath: '/twilio-krisp-audio-plugin/1.0.0/dist'\n *   }\n * });\n */\nfunction createLocalAudioTrack(options) {\n    return createLocalTrack('audio', options);\n}\n/**\n * Request a {@link LocalVideoTrack}. Note that on mobile browsers,\n * the camera can be reserved by only one {@link LocalVideoTrack} at any given\n * time. If you attempt to create a second {@link LocalVideoTrack}, video frames\n * will no longer be supplied to the first {@link LocalVideoTrack}.\n * @alias module:twilio-video.createLocalVideoTrack\n * @param {CreateLocalTrackOptions} [options] - Options for requesting a {@link LocalVideoTrack}\n * @returns {Promise<LocalVideoTrack>}\n * @example\n * var Video = require('twilio-video');\n *\n * // Connect to the Room with just audio\n * Video.connect('my-token', {\n *   name: 'my-cool-room',\n *   audio: true\n * }).then(function(room) {\n *   // Add video after connecting to the Room\n *   Video.createLocalVideoTrack().then(function(localTrack) {\n *     room.localParticipant.publishTrack(localTrack);\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n *\n * // Request the default LocalVideoTrack with a custom name\n * Video.createLocalVideoTrack({ name: 'camera' }).then(function(localTrack) {\n *   console.log(localTrack.name); // 'camera'\n * });\n */\nfunction createLocalVideoTrack(options) {\n    return createLocalTrack('video', options);\n}\n/**\n * {@link NoiseCancellationVendor} specifies the 3rd party plugin to use for noise cancellation.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar NoiseCancellationVendor = {\n    /**\n     * This plugin can be found by requesting access with this form {@link https://forms.gle/eeFyoGJj1mgMrxN88}\n     */\n    krisp: 'krisp',\n};\n/**\n * You can use 3rd party noise cancellation plugin when creating {@link LocalAudioTrack}\n * By specifying these options. This is a beta feature.\n * @typedef {object} NoiseCancellationOptions\n * @property {NoiseCancellationVendor} vendor - Specifies the vendor library to use\n *   You need to obtain and host the library files on your web server.\n * @property {string} sdkAssetsPath - Specifies path where vendor library files are\n *   hosted on your web server.\n */\n/**\n * Create {@link LocalAudioTrack} options.\n * @typedef {CreateLocalTrackOptions} CreateLocalAudioTrackOptions\n * @property {boolean} [workaroundWebKitBug180748=false] - setting this\n *   attempts to workaround WebKit Bug 180748, where, in Safari, getUserMedia may return a silent audio\n *   MediaStreamTrack.\n * @property {DefaultDeviceCaptureMode} [defaultDeviceCaptureMode=\"auto\"] - This optional property only applies if the\n *   {@link LocalAudioTrack} is capturing from the default audio input device connected to a desktop or laptop. When the\n *   property is set to \"auto\", the LocalAudioTrack restarts whenever the default audio input device changes, in order to\n *   capture audio from the new default audio input device. For example, when a bluetooth audio headset is connected to a\n *   Macbook, the LocalAudioTrack will start capturing audio from the headset microphone. When the headset is disconnected,\n *   the LocalAudioTrack will start capturing audio from the Macbook microphone. When the property is set to \"manual\", the\n *   LocalAudioTrack continues to capture from the same audio input device even after the default audio input device changes.\n *   When the property is not specified, it defaults to \"auto\".\n * @property {NoiseCancellationOptions} [noiseCancellationOptions] - This optional property enables using 3rd party plugins\n *   for noise cancellation.\n */\n/**\n * Create {@link LocalTrack} options. Apart from the properties listed here, you can\n * also specify any of the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\" target=\"_blank\">MediaTrackConstraints</a>\n * properties.\n * @typedef {MediaTrackConstraints} CreateLocalTrackOptions\n * @property {LogLevel|LogLevels} [logLevel='warn'] - <code>(deprecated: use [Video.Logger](module-twilio-video.html) instead.\n *   See [examples](module-twilio-video.html#.connect) for details)</code>\n *   Set the default log verbosity\n *   of logging. Passing a {@link LogLevel} string will use the same\n *   level for all components. Pass a {@link LogLevels} to set specific log\n *   levels.\n * @property {string} [loggerName='twilio-video'] - The name of the logger. Use this name when accessing the logger used by the SDK.\n *   See [examples](module-twilio-video.html#.connect) for details.\n * @property {string} [name] - The {@link LocalTrack}'s name; by default,\n *   it is set to the {@link LocalTrack}'s ID.\n */\nmodule.exports = {\n    audio: createLocalAudioTrack,\n    video: createLocalVideoTrack\n};\n\n},{\"./util/constants\":140}],4:[function(require,module,exports){\n'use strict';\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLocalTracks = createLocalTracks;\nvar noisecancellationimpl_1 = require(\"./media/track/noisecancellationimpl\");\nvar buildLogLevels = require('./util').buildLogLevels;\nvar _a = require('./webrtc'), getUserMedia = _a.getUserMedia, MediaStreamTrack = _a.MediaStreamTrack;\nvar _b = require('./media/track/es5'), LocalAudioTrack = _b.LocalAudioTrack, LocalDataTrack = _b.LocalDataTrack, LocalVideoTrack = _b.LocalVideoTrack;\nvar Log = require('./util/log');\nvar _c = require('./util/constants'), DEFAULT_LOG_LEVEL = _c.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _c.DEFAULT_LOGGER_NAME, INVALID_VALUE = _c.typeErrors.INVALID_VALUE;\nvar workaround180748 = require('./webaudio/workaround180748');\nvar telemetry = require('./insights/telemetry');\n// This is used to make out which createLocalTracks() call a particular Log\n// statement belongs to. Each call to createLocalTracks() increments this\n// counter.\nvar createLocalTrackCalls = 0;\n/**\n * Request {@link LocalTrack}s. By default, it requests a\n * {@link LocalAudioTrack} and a {@link LocalVideoTrack}.\n * Note that on mobile browsers, the camera can be reserved by only one {@link LocalVideoTrack}\n * at any given time. If you attempt to create a second {@link LocalVideoTrack}, video frames\n * will no longer be supplied to the first {@link LocalVideoTrack}.\n * @alias module:twilio-video.createLocalTracks\n * @param {CreateLocalTracksOptions} [options]\n * @returns {Promise<Array<LocalTrack>>}\n * @example\n * var Video = require('twilio-video');\n * // Request audio and video tracks\n * Video.createLocalTracks().then(function(localTracks) {\n *   var localMediaContainer = document.getElementById('local-media-container-id');\n *   localTracks.forEach(function(track) {\n *     localMediaContainer.appendChild(track.attach());\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n * // Request just the default audio track\n * Video.createLocalTracks({ audio: true }).then(function(localTracks) {\n *   return Video.connect('my-token', {\n *     name: 'my-cool-room',\n *     tracks: localTracks\n *   });\n * });\n * @example\n * var Video = require('twilio-video');\n * // Request the audio and video tracks with custom names\n * Video.createLocalTracks({\n *   audio: { name: 'microphone' },\n *   video: { name: 'camera' }\n * }).then(function(localTracks) {\n *   localTracks.forEach(function(localTrack) {\n *     console.log(localTrack.name);\n *   });\n * });\n *\n * @example\n * var Video = require('twilio-video');\n * var localTracks;\n *\n * // Pre-acquire tracks to display camera preview.\n * Video.createLocalTracks().then(function(tracks) {\n *  localTracks = tracks;\n *  var localVideoTrack = localTracks.find(track => track.kind === 'video');\n *  divContainer.appendChild(localVideoTrack.attach());\n * })\n *\n * // Later, join the Room with the pre-acquired LocalTracks.\n * Video.connect('token', {\n *   name: 'my-cool-room',\n *   tracks: localTracks\n * });\n *\n */\nfunction createLocalTracks(options) {\n    return __awaiter(this, void 0, void 0, function () {\n        var isAudioVideoAbsent, fullOptions, logComponentName, logLevels, log, localTrackOptions, extraLocalTrackOptions, noiseCancellationOptions, mediaStreamConstraints, workaroundWebKitBug180748, mediaStream, mediaStreamTracks, error_1;\n        var _this = this;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    isAudioVideoAbsent = !(options && ('audio' in options || 'video' in options));\n                    fullOptions = __assign({ audio: isAudioVideoAbsent, getUserMedia: getUserMedia, loggerName: DEFAULT_LOGGER_NAME, logLevel: DEFAULT_LOG_LEVEL, LocalAudioTrack: LocalAudioTrack, LocalDataTrack: LocalDataTrack, LocalVideoTrack: LocalVideoTrack, MediaStreamTrack: MediaStreamTrack, Log: Log, video: isAudioVideoAbsent }, options);\n                    logComponentName = \"[createLocalTracks #\".concat(++createLocalTrackCalls, \"]\");\n                    logLevels = buildLogLevels(fullOptions.logLevel);\n                    log = new fullOptions.Log('default', logComponentName, logLevels, fullOptions.loggerName);\n                    localTrackOptions = Object.assign({ log: log }, fullOptions);\n                    // NOTE(mmalavalli): The Room \"name\" in \"options\" was being used\n                    // as the LocalTrack name in asLocalTrack(). So we pass a copy of\n                    // \"options\" without the \"name\".\n                    // NOTE(joma): CreateLocalTracksOptions type does not really have a \"name\" property when used publicly by customers.\n                    // But we are passing this property when used internally by other JS files.\n                    // We can update this \"any\" type once those JS files are converted to TS.\n                    delete localTrackOptions.name;\n                    if (fullOptions.audio === false && fullOptions.video === false) {\n                        log.info('Neither audio nor video requested, so returning empty LocalTracks');\n                        return [2 /*return*/, []];\n                    }\n                    if (fullOptions.tracks) {\n                        log.info('Adding user-provided LocalTracks');\n                        log.debug('LocalTracks:', fullOptions.tracks);\n                        return [2 /*return*/, fullOptions.tracks];\n                    }\n                    extraLocalTrackOptions = {\n                        audio: typeof fullOptions.audio === 'object' && fullOptions.audio.name\n                            ? { name: fullOptions.audio.name }\n                            : { defaultDeviceCaptureMode: 'auto' },\n                        video: typeof fullOptions.video === 'object' && fullOptions.video.name\n                            ? { name: fullOptions.video.name }\n                            : {}\n                    };\n                    extraLocalTrackOptions.audio.isCreatedByCreateLocalTracks = true;\n                    extraLocalTrackOptions.video.isCreatedByCreateLocalTracks = true;\n                    if (typeof fullOptions.audio === 'object') {\n                        if (typeof fullOptions.audio.workaroundWebKitBug1208516 === 'boolean') {\n                            extraLocalTrackOptions.audio.workaroundWebKitBug1208516 = fullOptions.audio.workaroundWebKitBug1208516;\n                        }\n                        if ('noiseCancellationOptions' in fullOptions.audio) {\n                            noiseCancellationOptions = fullOptions.audio.noiseCancellationOptions;\n                            delete fullOptions.audio.noiseCancellationOptions;\n                        }\n                        if (!('defaultDeviceCaptureMode' in fullOptions.audio)) {\n                            extraLocalTrackOptions.audio.defaultDeviceCaptureMode = 'auto';\n                        }\n                        else if (['auto', 'manual'].every(function (mode) { return mode !== fullOptions.audio.defaultDeviceCaptureMode; })) {\n                            // eslint-disable-next-line new-cap\n                            throw INVALID_VALUE('CreateLocalAudioTrackOptions.defaultDeviceCaptureMode', ['auto', 'manual']);\n                        }\n                        else {\n                            extraLocalTrackOptions.audio.defaultDeviceCaptureMode = fullOptions.audio.defaultDeviceCaptureMode;\n                        }\n                    }\n                    if (typeof fullOptions.video === 'object' && typeof fullOptions.video.workaroundWebKitBug1208516 === 'boolean') {\n                        extraLocalTrackOptions.video.workaroundWebKitBug1208516 = fullOptions.video.workaroundWebKitBug1208516;\n                    }\n                    if (typeof fullOptions.audio === 'object') {\n                        delete fullOptions.audio.name;\n                    }\n                    if (typeof fullOptions.video === 'object') {\n                        delete fullOptions.video.name;\n                    }\n                    mediaStreamConstraints = {\n                        audio: fullOptions.audio,\n                        video: fullOptions.video\n                    };\n                    workaroundWebKitBug180748 = typeof fullOptions.audio === 'object' && fullOptions.audio.workaroundWebKitBug180748;\n                    _a.label = 1;\n                case 1:\n                    _a.trys.push([1, 4, , 5]);\n                    return [4 /*yield*/, (workaroundWebKitBug180748\n                            ? workaround180748(log, fullOptions.getUserMedia, mediaStreamConstraints)\n                            : fullOptions.getUserMedia(mediaStreamConstraints))];\n                case 2:\n                    mediaStream = _a.sent();\n                    telemetry.getUserMedia.succeeded();\n                    mediaStreamTracks = __spreadArray(__spreadArray([], __read(mediaStream.getAudioTracks()), false), __read(mediaStream.getVideoTracks()), false);\n                    log.info('Call to getUserMedia successful; got tracks:', mediaStreamTracks);\n                    return [4 /*yield*/, Promise.all(mediaStreamTracks.map(function (mediaStreamTrack) { return __awaiter(_this, void 0, void 0, function () {\n                            var _a, cleanTrack, noiseCancellation;\n                            return __generator(this, function (_b) {\n                                switch (_b.label) {\n                                    case 0:\n                                        if (!(mediaStreamTrack.kind === 'audio' && noiseCancellationOptions)) return [3 /*break*/, 2];\n                                        return [4 /*yield*/, (0, noisecancellationimpl_1.applyNoiseCancellation)(mediaStreamTrack, noiseCancellationOptions, log)];\n                                    case 1:\n                                        _a = _b.sent(), cleanTrack = _a.cleanTrack, noiseCancellation = _a.noiseCancellation;\n                                        return [2 /*return*/, new localTrackOptions.LocalAudioTrack(cleanTrack, __assign(__assign(__assign({}, extraLocalTrackOptions.audio), localTrackOptions), { noiseCancellation: noiseCancellation }))];\n                                    case 2:\n                                        if (mediaStreamTrack.kind === 'audio') {\n                                            return [2 /*return*/, new localTrackOptions.LocalAudioTrack(mediaStreamTrack, __assign(__assign({}, extraLocalTrackOptions.audio), localTrackOptions))];\n                                        }\n                                        _b.label = 3;\n                                    case 3: return [2 /*return*/, new localTrackOptions.LocalVideoTrack(mediaStreamTrack, __assign(__assign({}, extraLocalTrackOptions.video), localTrackOptions))];\n                                }\n                            });\n                        }); }))];\n                case 3: return [2 /*return*/, _a.sent()];\n                case 4:\n                    error_1 = _a.sent();\n                    if (error_1.name === 'NotAllowedError' || error_1.name === 'PermissionDeniedError') {\n                        telemetry.getUserMedia.denied();\n                    }\n                    else {\n                        telemetry.getUserMedia.failed(error_1);\n                    }\n                    log.warn('Call to getUserMedia failed:', error_1);\n                    throw error_1;\n                case 5: return [2 /*return*/];\n            }\n        });\n    });\n}\n\n},{\"./insights/telemetry\":25,\"./media/track/es5\":29,\"./media/track/noisecancellationimpl\":43,\"./util\":147,\"./util/constants\":140,\"./util/log\":151,\"./webaudio/workaround180748\":170,\"./webrtc\":173}],5:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar DataTrackTransceiver = require('./transceiver');\nvar DataTransport = require('./transport');\n/**\n * A {@link DataTrackReceiver} represents a {@link DataTrackTransceiver} over\n * which data can be received. Internally, it users a single RTCDataChannel to\n * receive data.\n * @extends DataTrackTransceiver\n * @emits DataTrackReceiver#message\n * @emits DataTrackReceiver#close\n */\nvar DataTrackReceiver = /** @class */ (function (_super) {\n    __extends(DataTrackReceiver, _super);\n    /**\n     * Construct an {@link DataTrackReceiver}.\n     * @param {RTCDataChannel} dataChannel\n     */\n    function DataTrackReceiver(dataChannel) {\n        var _this = _super.call(this, dataChannel.label, dataChannel.maxPacketLifeTime, dataChannel.maxRetransmits, dataChannel.ordered) || this;\n        Object.defineProperties(_this, {\n            _dataChannel: {\n                value: dataChannel\n            }\n        });\n        // NOTE(mmalavalli): In Firefox, the default value for \"binaryType\" is \"blob\".\n        // So, we set it to \"arraybuffer\" to ensure that it is consistent with Chrome\n        // and Safari.\n        dataChannel.binaryType = 'arraybuffer';\n        dataChannel.addEventListener('message', function (event) {\n            _this.emit('message', event.data);\n        });\n        dataChannel.addEventListener('close', function () {\n            _this.emit('close');\n        });\n        return _this;\n    }\n    DataTrackReceiver.prototype.stop = function () {\n        this._dataChannel.close();\n        _super.prototype.stop.call(this);\n    };\n    /**\n     * Create a {@link DataTransport} from the {@link DataTrackReceiver}.\n     * @returns {DataTransport}\n     */\n    DataTrackReceiver.prototype.toDataTransport = function () {\n        return new DataTransport(this._dataChannel);\n    };\n    return DataTrackReceiver;\n}(DataTrackTransceiver));\n/**\n * @event DataTrackReceiver#message\n * @param {string|ArrayBuffer} data\n */\n/**\n * @event DataTrackReceiver#close\n */\nmodule.exports = DataTrackReceiver;\n\n},{\"./transceiver\":7,\"./transport\":8}],6:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar DataTrackTransceiver = require('./transceiver');\nvar makeUUID = require('../util').makeUUID;\n/**\n * A {@link DataTrackSender} represents a {@link DataTrackTransceiver} over\n * which data can be sent. Internally, it uses a collection of RTCDataChannels\n * to send data.\n * @extends DataTrackTransceiver\n */\nvar DataTrackSender = /** @class */ (function (_super) {\n    __extends(DataTrackSender, _super);\n    /**\n     * Construct a {@link DataTrackSender}.\n     * @param {?number} maxPacketLifeTime\n     * @param {?number} maxRetransmits\n     * @param {boolean} ordered\n     */\n    function DataTrackSender(maxPacketLifeTime, maxRetransmtis, ordered) {\n        var _this = _super.call(this, makeUUID(), maxPacketLifeTime, maxRetransmtis, ordered) || this;\n        Object.defineProperties(_this, {\n            _clones: {\n                value: new Set()\n            },\n            _dataChannels: {\n                value: new Set()\n            }\n        });\n        return _this;\n    }\n    /**\n     * Add a cloned {@link DataTrackSender}.\n     * @private\n     * @returns {void}\n     */\n    DataTrackSender.prototype._addClone = function (clone) {\n        this._clones.add(clone);\n    };\n    /**\n     * Remove a cloned {@link DataTrackSender}.\n     * @returns {void}\n     */\n    DataTrackSender.prototype.removeClone = function (clone) {\n        this._clones.delete(clone);\n    };\n    /**\n     * Add an RTCDataChannel to the {@link DataTrackSender}.\n     * @param {RTCDataChannel} dataChannel\n     * @returns {this}\n     */\n    DataTrackSender.prototype.addDataChannel = function (dataChannel) {\n        this._dataChannels.add(dataChannel);\n        return this;\n    };\n    /**\n     * Return a new {@link DataTrackSender}. Any message sent over this\n     * {@link DataTrackSender} will also be sent over the clone. Whenever this\n     * {@link DataTrackSender} is stopped, so to will the clone.\n     * @returns {DataTrackSender}\n     */\n    DataTrackSender.prototype.clone = function () {\n        var _this = this;\n        var clone = new DataTrackSender(this.maxPacketLifeTime, this.maxRetransmits, this.ordered);\n        this._addClone(clone);\n        clone.once('stopped', function () { return _this.removeClone(clone); });\n        return clone;\n    };\n    /**\n     * Remove an RTCDataChannel from the {@link DataTrackSender}.\n     * @param {RTCDataChannel} dataChannel\n     * @returns {this}\n     */\n    DataTrackSender.prototype.removeDataChannel = function (dataChannel) {\n        this._dataChannels.delete(dataChannel);\n        return this;\n    };\n    /**\n     * Send data over the {@link DataTrackSender}. Internally, this calls\n     * <code>send</code> over each of the underlying RTCDataChannels.\n     * @param {string|Blob|ArrayBuffer|ArrayBufferView} data\n     * @returns {this}\n     */\n    DataTrackSender.prototype.send = function (data) {\n        this._dataChannels.forEach(function (dataChannel) {\n            try {\n                dataChannel.send(data);\n            }\n            catch (error) {\n                // Do nothing.\n            }\n        });\n        this._clones.forEach(function (clone) {\n            try {\n                clone.send(data);\n            }\n            catch (error) {\n                // Do nothing.\n            }\n        });\n        return this;\n    };\n    DataTrackSender.prototype.stop = function () {\n        this._dataChannels.forEach(function (dataChannel) { return dataChannel.close(); });\n        this._clones.forEach(function (clone) { return clone.stop(); });\n        _super.prototype.stop.call(this);\n    };\n    return DataTrackSender;\n}(DataTrackTransceiver));\nmodule.exports = DataTrackSender;\n\n},{\"../util\":147,\"./transceiver\":7}],7:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackTransceiver = require('../transceiver');\n/**\n * A {@link DataTrackTransceiver} represents either one or more local\n * RTCDataChannels or a single remote RTCDataChannel. It can be used to send or\n * receive data.\n * @extends TrackTransceiver\n * @property {string} id\n * @property {string} kind - \"data\"\n * @property {?number} maxPacketLifeTime\n * @property {?number} maxRetransmits\n * @property {boolean} ordered\n */\nvar DataTrackTransceiver = /** @class */ (function (_super) {\n    __extends(DataTrackTransceiver, _super);\n    /**\n     * Construct a {@link DataTrackTransceiver}.\n     * @param {string} id\n     * @param {?number} maxPacketLifeTime\n     * @param {?number} maxRetransmits\n     * @param {boolean} ordered\n     */\n    function DataTrackTransceiver(id, maxPacketLifeTime, maxRetransmits, ordered) {\n        var _this = _super.call(this, id, 'data') || this;\n        Object.defineProperties(_this, {\n            maxPacketLifeTime: {\n                enumerable: true,\n                value: maxPacketLifeTime\n            },\n            maxRetransmits: {\n                enumerable: true,\n                value: maxRetransmits\n            },\n            ordered: {\n                enumerable: true,\n                value: ordered\n            }\n        });\n        return _this;\n    }\n    return DataTrackTransceiver;\n}(TrackTransceiver));\nmodule.exports = DataTrackTransceiver;\n\n},{\"../transceiver\":134}],8:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * @classdesc A {@link DataTransport} implements {@link MediaSignalingTransport}\n *   in terms of an RTCDataChannel.\n * @extends EventEmitter\n * @implements MediaSignalingTransport\n * @emits DataTransport#message\n */\nvar DataTransport = /** @class */ (function (_super) {\n    __extends(DataTransport, _super);\n    /**\n     * Construct a {@link DataTransport}.\n     * @param {RTCDataChannel} dataChannel\n     */\n    function DataTransport(dataChannel) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _dataChannel: {\n                value: dataChannel\n            },\n            _messageQueue: {\n                value: []\n            }\n        });\n        dataChannel.addEventListener('open', function () {\n            _this._messageQueue.splice(0).forEach(function (message) { return _this._publish(message); });\n        });\n        dataChannel.addEventListener('message', function (_a) {\n            var data = _a.data;\n            try {\n                var message = JSON.parse(data);\n                _this.emit('message', message);\n            }\n            catch (error) {\n                // Do nothing.\n            }\n        });\n        _this.publish({ type: 'ready' });\n        return _this;\n    }\n    /**\n     * @param message\n     * @private\n     */\n    DataTransport.prototype._publish = function (message) {\n        var data = JSON.stringify(message);\n        try {\n            this._dataChannel.send(data);\n        }\n        catch (error) {\n            // Do nothing.\n        }\n    };\n    /**\n     * Publish a message. Returns true if calling the method resulted in\n     * publishing (or eventually publishing) the update.\n     * @param {object} message\n     * @returns {boolean}\n     */\n    DataTransport.prototype.publish = function (message) {\n        var dataChannel = this._dataChannel;\n        if (dataChannel.readyState === 'closing' || dataChannel.readyState === 'closed') {\n            return false;\n        }\n        if (dataChannel.readyState === 'connecting') {\n            this._messageQueue.push(message);\n            return true;\n        }\n        this._publish(message);\n        return true;\n    };\n    return DataTransport;\n}(EventEmitter));\n/**\n * The {@link DataTransport} received a message.\n * @event DataTransport#message\n * @param {object} message\n */\nmodule.exports = DataTransport;\n\n},{\"events\":188}],9:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * {@link EncodingParametersImpl} represents an object which notifies its\n * listeners of any changes in the values of its properties.\n * @extends EventEmitter\n * @implements EncodingParameters\n * @emits EncodingParametersImpl#changed\n * @property {?number} maxAudioBitrate\n * @property {?number} maxVideoBitrate\n */\nvar EncodingParametersImpl = /** @class */ (function (_super) {\n    __extends(EncodingParametersImpl, _super);\n    /**\n     * Construct an {@link EncodingParametersImpl}.\n     * @param {EncodingParamters} encodingParameters - Initial {@link EncodingParameters}\n     * @param {Boolean} adaptiveSimulcast - true if adaptive simulcast was enabled by connect options.\n     */\n    function EncodingParametersImpl(encodingParameters, adaptiveSimulcast) {\n        var _this = _super.call(this) || this;\n        encodingParameters = Object.assign({\n            maxAudioBitrate: null,\n            maxVideoBitrate: null\n        }, encodingParameters);\n        Object.defineProperties(_this, {\n            maxAudioBitrate: {\n                value: encodingParameters.maxAudioBitrate,\n                writable: true\n            },\n            maxVideoBitrate: {\n                value: encodingParameters.maxVideoBitrate,\n                writable: true\n            },\n            adaptiveSimulcast: {\n                value: adaptiveSimulcast\n            }\n        });\n        return _this;\n    }\n    /**\n     * Returns the bitrate values in an {@link EncodingParameters}.\n     * @returns {EncodingParameters}\n     */\n    EncodingParametersImpl.prototype.toJSON = function () {\n        return {\n            maxAudioBitrate: this.maxAudioBitrate,\n            maxVideoBitrate: this.maxVideoBitrate\n        };\n    };\n    /**\n     * Update the bitrate values with those in the given {@link EncodingParameters}.\n     * @param {EncodingParameters} encodingParameters - The new {@link EncodingParameters}\n     * @fires EncodingParametersImpl#changed\n     */\n    EncodingParametersImpl.prototype.update = function (encodingParameters) {\n        var _this = this;\n        encodingParameters = Object.assign({\n            maxAudioBitrate: this.maxAudioBitrate,\n            maxVideoBitrate: this.maxVideoBitrate\n        }, encodingParameters);\n        var shouldEmitChanged = [\n            'maxAudioBitrate',\n            'maxVideoBitrate'\n        ].reduce(function (shouldEmitChanged, maxKindBitrate) {\n            if (_this[maxKindBitrate] !== encodingParameters[maxKindBitrate]) {\n                _this[maxKindBitrate] = encodingParameters[maxKindBitrate];\n                shouldEmitChanged = true;\n            }\n            return shouldEmitChanged;\n        }, false);\n        if (shouldEmitChanged) {\n            this.emit('changed');\n        }\n    };\n    return EncodingParametersImpl;\n}(EventEmitter));\n/**\n * At least one of the {@link EncodingParametersImpl}'s bitrate values changed.\n * @event EncodingParametersImpl#changed\n */\nmodule.exports = EncodingParametersImpl;\n\n},{\"events\":188}],10:[function(require,module,exports){\n'use strict';\nvar EventEmitter = require('events').EventEmitter;\nvar hidePrivateAndCertainPublicPropertiesInClass = require('./util').hidePrivateAndCertainPublicPropertiesInClass;\nmodule.exports = hidePrivateAndCertainPublicPropertiesInClass(EventEmitter, ['domain']);\n\n},{\"./util\":147,\"events\":188}],11:[function(require,module,exports){\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventEmitter = require('events').EventEmitter;\nvar EventTarget = /** @class */ (function () {\n    function EventTarget() {\n        Object.defineProperties(this, {\n            _eventEmitter: {\n                value: new EventEmitter()\n            }\n        });\n    }\n    EventTarget.prototype.dispatchEvent = function (event) {\n        return this._eventEmitter.emit(event.type, event);\n    };\n    EventTarget.prototype.addEventListener = function () {\n        var _a;\n        return (_a = this._eventEmitter).addListener.apply(_a, __spreadArray([], __read(arguments), false));\n    };\n    EventTarget.prototype.removeEventListener = function () {\n        var _a;\n        return (_a = this._eventEmitter).removeListener.apply(_a, __spreadArray([], __read(arguments), false));\n    };\n    return EventTarget;\n}());\nmodule.exports = EventTarget;\n\n},{\"events\":188}],12:[function(require,module,exports){\n'use strict';\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar createlocaltracks_1 = require(\"./createlocaltracks\");\nvar preflighttest_1 = require(\"./preflight/preflighttest\");\nvar internals = {\n    connect: require('./connect'),\n    createLocalAudioTrack: require('./createlocaltrack').audio,\n    createLocalVideoTrack: require('./createlocaltrack').video,\n    isSupported: require('./util/support')(),\n    version: require('../package.json').version,\n    Logger: require('./vendor/loglevel'),\n    LocalAudioTrack: require('./media/track/es5').LocalAudioTrack,\n    LocalDataTrack: require('./media/track/es5').LocalDataTrack,\n    LocalVideoTrack: require('./media/track/es5').LocalVideoTrack\n};\nfunction connect(token, options) {\n    var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n    return internals.connect(token, internalOptions);\n}\nfunction createLocalAudioTrack(options) {\n    var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n    return internals.createLocalAudioTrack(internalOptions);\n}\nfunction createLocalVideoTrack(options) {\n    var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n    return internals.createLocalVideoTrack(internalOptions);\n}\n/**\n * @module twilio-video\n * @property {boolean} isSupported - true if the current browser is officially\n *   supported by twilio-video.js; In this context, \"supported\" means that\n *   twilio-video.js has been extensively tested with this browser; This\n *   <a href=\"https://www.twilio.com/docs/video/javascript#supported-browsers\" target=\"_blank\">table</a>\n *   specifies the list of officially supported browsers.\n *\n * @property {object} Logger - The <a href=\"https://www.npmjs.com/package/loglevel\" target=\"_blank\">loglevel</a>\n *    module used by the SDK. Use this object to access the internal loggers and perform actions as defined by the\n *   <a href=\"https://www.npmjs.com/package/loglevel\" target=\"_blank\">loglevel</a> APIs.\n *   See [connect](#.connect) for examples.\n *\n * @property {string} version - current version of twilio-video.js.\n */\nvar isSupported = internals.isSupported;\nvar version = internals.version;\nvar Logger = internals.Logger;\nvar LocalAudioTrack = internals.LocalAudioTrack;\nvar LocalVideoTrack = internals.LocalVideoTrack;\nvar LocalDataTrack = internals.LocalDataTrack;\nmodule.exports = {\n    connect: connect,\n    createLocalAudioTrack: createLocalAudioTrack,\n    createLocalVideoTrack: createLocalVideoTrack,\n    createLocalTracks: createlocaltracks_1.createLocalTracks,\n    runPreflight: preflighttest_1.runPreflight,\n    isSupported: isSupported,\n    version: version,\n    Logger: Logger,\n    LocalAudioTrack: LocalAudioTrack,\n    LocalVideoTrack: LocalVideoTrack,\n    LocalDataTrack: LocalDataTrack,\n};\n\n},{\"../package.json\":189,\"./connect\":2,\"./createlocaltrack\":3,\"./createlocaltracks\":4,\"./media/track/es5\":29,\"./preflight/preflighttest\":65,\"./util/support\":160,\"./vendor/loglevel\":167}],13:[function(require,module,exports){\n'use strict';\nvar documentVisibilityMonitor = require('../util/documentvisibilitymonitor');\nvar telemetry = require('./telemetry');\n/**\n * ApplicationMonitor handles publishing application lifecycle events to the Insights gateway.\n * @internal\n */\nvar ApplicationMonitor = /** @class */ (function () {\n    /**\n     * Create an ApplicationMonitor\n     * @param {Log} log - Logger instance\n     */\n    function ApplicationMonitor(log) {\n        if (!log) {\n            throw new Error('ApplicationMonitor requires a log instance');\n        }\n        this._log = log;\n        this._visibilityChangeHandler = null;\n        this._boundHandleBeforeUnload = this._handleBeforeUnload.bind(this);\n        this._setupVisibilityMonitoring();\n        this._setupBeforeUnloadMonitoring();\n    }\n    /**\n     * Setup application visibility monitoring\n     * @private\n     */\n    ApplicationMonitor.prototype._setupVisibilityMonitoring = function () {\n        var _this = this;\n        if (typeof window === 'undefined' || typeof document === 'undefined') {\n            this._log.debug('Not in browser environment, skipping setup of ApplicationMonitor');\n            return;\n        }\n        this._visibilityChangeHandler = function (isVisible) { return _this._handleVisibilityChange(isVisible); };\n        try {\n            documentVisibilityMonitor.onVisibilityChange(1, this._visibilityChangeHandler);\n            this._log.debug('ApplicationMonitor visibility monitoring initialized');\n        }\n        catch (error) {\n            this._log.error('Error initializing ApplicationMonitor visibility monitoring:', error);\n        }\n    };\n    /**\n     * Setup application beforeunload monitoring\n     * @private\n     */\n    ApplicationMonitor.prototype._setupBeforeUnloadMonitoring = function () {\n        try {\n            window.addEventListener('beforeunload', this._boundHandleBeforeUnload);\n            this._log.debug('ApplicationMonitor beforeunload monitoring initialized');\n        }\n        catch (error) {\n            this._log.error('Error initializing ApplicationMonitor beforeunload monitoring:', error);\n        }\n    };\n    /**\n     * Cleanup all application event monitors\n     */\n    ApplicationMonitor.prototype.cleanup = function () {\n        this._log.debug('Cleaning up application event monitors');\n        if (this._visibilityChangeHandler) {\n            documentVisibilityMonitor.offVisibilityChange(1, this._visibilityChangeHandler);\n            this._visibilityChangeHandler = null;\n        }\n        if (typeof window !== 'undefined' && this._boundHandleBeforeUnload) {\n            window.removeEventListener('beforeunload', this._boundHandleBeforeUnload);\n        }\n    };\n    /**\n     * Handle document visibility changes.\n     * @private\n     * @param {boolean} isVisible - Whether the application is visible or not\n     * @returns {void}\n     */\n    ApplicationMonitor.prototype._handleVisibilityChange = function (isVisible) {\n        if (isVisible) {\n            telemetry.application.resumed();\n        }\n        else {\n            telemetry.application.backgrounded();\n        }\n    };\n    /**\n     * Handle beforeunload event\n     * @private\n     * @returns {void}\n     */\n    ApplicationMonitor.prototype._handleBeforeUnload = function () {\n        telemetry.application.terminated();\n    };\n    return ApplicationMonitor;\n}());\nmodule.exports = ApplicationMonitor;\n\n},{\"../util/documentvisibilitymonitor\":143,\"./telemetry\":25}],14:[function(require,module,exports){\n/**\n * @fileOverview\n * Custom Compute Pressure monitor using the Compute Pressure API.\n * @internal\n */\n'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n/**\n * @typedef {'cpu' | 'gpu'} PressureSource\n * @typedef {'nominal' | 'fair' | 'serious' | 'critical'} PressureState\n *\n * NOTE(lrivas): Remove once we update to a TypeScript version with definitions for the Compute Pressure API types.\n */\n/**\n * @typedef {{\n *   source: PressureSource,\n *   state: PressureState,\n *   time: DOMHighResTimeStamp\n * }} PressureRecord\n */\n/**\n * @typedef {{ sampleInterval?: number }} PressureObserverOptions\n */\n/**\n * @callback PressureObserverCallback\n * @param {PressureRecord[]} records\n * @param {PressureObserver} observer\n */\n/**\n * @typedef {{\n *   disconnect(): void,\n *   observe(source: PressureSource, options?: PressureObserverOptions): Promise<void>,\n *   unobserve(source: PressureSource): void,\n *   takeRecords(): PressureRecord[]\n * }} PressureObserver\n */\n/**\n * @typedef {new (callback: PressureObserverCallback) => PressureObserver} PressureObserverConstructor\n */\n/**\n * @callback PressureChangeCallback\n * @param {PressureRecord} record\n * @returns {void}\n */\n/**\n * Helper to get the PressureObserver constructor from the global scope.\n * @returns {PressureObserverConstructor | null}\n */\nfunction getPressureObserver() {\n    if (typeof globalThis !== 'undefined' && typeof globalThis.PressureObserver === 'function') {\n        return /** @type {PressureObserverConstructor} */ (globalThis.PressureObserver);\n    }\n    return null;\n}\nvar ComputePressureMonitor = /** @class */ (function () {\n    function ComputePressureMonitor() {\n        /** @type {PressureState | null} */\n        this._lastCpuPressure = null;\n        /** @type {PressureObserver | null} */\n        this._cpuPressureObserver = null;\n        /** @type {number} */\n        this._sampleInterval = 2000; // 2 seconds\n        /** @type {PressureChangeCallback[]} */\n        this._cpuPressureChangeListeners = [];\n        /** @type {PressureObserverConstructor | null} */\n    }\n    /**\n     * Start watching CPU pressure changes. This is an asynchronous operation.\n     * @param {PressureChangeCallback} callback - The callback function to call when the pressure changes.\n     * @returns {Promise<void>}\n     */\n    ComputePressureMonitor.prototype.watchCpuPressure = function (callback) {\n        return __awaiter(this, void 0, void 0, function () {\n            var PressureObserver;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (typeof callback !== 'function') {\n                            throw new Error('The CPU pressure change callback must be a function');\n                        }\n                        PressureObserver = getPressureObserver();\n                        if (!PressureObserver) {\n                            throw new Error('PressureObserver is not supported in this environment');\n                        }\n                        this._cpuPressureChangeListeners.push(callback);\n                        if (!!this._cpuPressureObserver) return [3 /*break*/, 2];\n                        this._cpuPressureObserver = new PressureObserver(function (records) { return _this._handleCpuPressureRecords(records); });\n                        return [4 /*yield*/, this._cpuPressureObserver.observe('cpu', {\n                                sampleInterval: this._sampleInterval,\n                            })];\n                    case 1:\n                        _a.sent();\n                        _a.label = 2;\n                    case 2: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * @returns {boolean}\n     */\n    ComputePressureMonitor.prototype.isSupported = function () {\n        return !!getPressureObserver();\n    };\n    /**\n     * Stop watching CPU pressure changes for the given callback.\n     * @param {PressureChangeCallback} callback - The callback function to stop listening to.\n     * @returns {void}\n     */\n    ComputePressureMonitor.prototype.unwatchCpuPressure = function (callback) {\n        this._cpuPressureChangeListeners = this._cpuPressureChangeListeners.filter(function (cb) { return cb !== callback; });\n        if (this._cpuPressureChangeListeners.length === 0) {\n            this.cleanup();\n        }\n    };\n    /**\n     * @param {PressureRecord[]} records - An array containing all the PressureRecords observed since the last callback.\n     * @returns {void}\n     */\n    ComputePressureMonitor.prototype._handleCpuPressureRecords = function (records) {\n        if (!Array.isArray(records) || records.length === 0) {\n            return;\n        }\n        var lastRecord = records[records.length - 1];\n        if (!lastRecord) {\n            return;\n        }\n        var hasChanged = lastRecord.state !== this._lastCpuPressure;\n        if (hasChanged) {\n            this._lastCpuPressure = lastRecord.state;\n            this._cpuPressureChangeListeners.forEach(function (callback) { return callback(lastRecord); });\n        }\n    };\n    /**\n     * Clean up all the resources created by the monitor.\n     * @returns {void}\n     */\n    ComputePressureMonitor.prototype.cleanup = function () {\n        if (this._cpuPressureObserver) {\n            this._cpuPressureObserver.disconnect();\n            this._cpuPressureObserver = null;\n        }\n        this._cpuPressureChangeListeners = [];\n        this._lastCpuPressure = null;\n    };\n    return ComputePressureMonitor;\n}());\nmodule.exports = new ComputePressureMonitor();\n\n},{}],15:[function(require,module,exports){\n'use strict';\n/**\n * Application lifecycle telemetry events\n * @internal\n */\nvar ApplicationEvents = /** @class */ (function () {\n    /**\n     * @param {import('../telemetry')} telemetry - The telemetry instance\n     */\n    function ApplicationEvents(telemetry) {\n        this._telemetry = telemetry;\n    }\n    /**\n     * Emit when application becomes visible (resumed from background)\n     * @returns {void}\n     */\n    ApplicationEvents.prototype.resumed = function () {\n        this._telemetry.info({\n            group: 'application',\n            name: 'resumed'\n        });\n    };\n    /**\n     * Emit when application becomes hidden (sent to background)\n     * @returns {void}\n     */\n    ApplicationEvents.prototype.backgrounded = function () {\n        this._telemetry.info({\n            group: 'application',\n            name: 'backgrounded'\n        });\n    };\n    /**\n     * Emit when application is about to be terminated (beforeunload)\n     * @returns {void}\n     */\n    ApplicationEvents.prototype.terminated = function () {\n        this._telemetry.info({\n            group: 'application',\n            name: 'terminated'\n        });\n    };\n    return ApplicationEvents;\n}());\nmodule.exports = ApplicationEvents;\n\n},{}],16:[function(require,module,exports){\n'use strict';\n/**\n * GetUserMedia telemetry events\n * @internal\n */\nvar GetUserMediaEvents = /** @class */ (function () {\n    /**\n     * @param {import('../telemetry')} telemetry - The telemetry instance\n     */\n    function GetUserMediaEvents(telemetry) {\n        this._telemetry = telemetry;\n    }\n    /**\n     * Emit when getUserMedia succeeds\n     * @returns {void}\n     */\n    GetUserMediaEvents.prototype.succeeded = function () {\n        this._telemetry.info({\n            group: 'get-user-media',\n            name: 'succeeded'\n        });\n    };\n    /**\n     * Emit when getUserMedia is denied by user\n     * @returns {void}\n     */\n    GetUserMediaEvents.prototype.denied = function () {\n        this._telemetry.info({\n            group: 'get-user-media',\n            name: 'denied'\n        });\n    };\n    /**\n     * Emit when getUserMedia fails (non-permission error)\n     * @param {Error} error - The error from getUserMedia\n     * @returns {void}\n     */\n    GetUserMediaEvents.prototype.failed = function (error) {\n        this._telemetry.info({\n            group: 'get-user-media',\n            name: 'failed',\n            payload: {\n                name: error.name,\n                message: error.message\n            }\n        });\n    };\n    return GetUserMediaEvents;\n}());\nmodule.exports = GetUserMediaEvents;\n\n},{}],17:[function(require,module,exports){\n'use strict';\n/**\n * Network telemetry events\n * @internal\n */\nvar NetworkEvents = /** @class */ (function () {\n    /**\n     * @param {import('../telemetry')} telemetry - The telemetry instance\n     */\n    function NetworkEvents(telemetry) {\n        this._telemetry = telemetry;\n    }\n    /**\n     * Emit when network type changes (from ICE candidate)\n     * @param {string} networkType - Network type: 'wifi', 'cellular', 'ethernet', 'vpn', etc.\n     * @returns {void}\n     */\n    NetworkEvents.prototype.typeChanged = function (networkType) {\n        this._telemetry.info({\n            group: 'network',\n            name: 'network-type-changed',\n            payload: { networkType: networkType }\n        });\n    };\n    /**\n     * Emit when network information changes (from Network Information API)\n     * @param {Object} info - Network information\n     * @param {number} [info.downlink] - Downlink speed in Mbps\n     * @param {number} [info.downlinkMax] - Maximum downlink speed in Mbps\n     * @param {('slow-2g'|'2g'|'3g'|'4g')} [info.effectiveType] - Effective connection type\n     * @param {number} [info.rtt] - Round-trip time in milliseconds\n     * @param {string} [info.saveData] - Data saver mode: 'true' or 'false'\n     * @param {('bluetooth'|'cellular'|'ethernet'|'none'|'wifi'|'wimax'|'other'|'unknown')} [info.type] - Connection type\n     * @returns {void}\n     */\n    NetworkEvents.prototype.informationChanged = function (_a) {\n        var downlink = _a.downlink, downlinkMax = _a.downlinkMax, effectiveType = _a.effectiveType, rtt = _a.rtt, saveData = _a.saveData, type = _a.type;\n        this._telemetry.info({\n            group: 'network',\n            name: 'network-information-changed',\n            payload: {\n                downlink: downlink,\n                downlinkMax: downlinkMax,\n                effectiveType: effectiveType,\n                rtt: rtt,\n                saveData: saveData,\n                type: type\n            }\n        });\n    };\n    return NetworkEvents;\n}());\nmodule.exports = NetworkEvents;\n\n},{}],18:[function(require,module,exports){\n'use strict';\n/**\n * Quality telemetry events\n * @internal\n */\nvar QualityEvents = /** @class */ (function () {\n    /**\n     * @param {import('../telemetry')} telemetry - The telemetry instance\n     */\n    function QualityEvents(telemetry) {\n        this._telemetry = telemetry;\n    }\n    /**\n     * Emit when quality limitation reason changes for a track\n     * @param {string} trackSid - Track SID\n     * @param {('none'|'cpu'|'bandwidth'|'other')} qualityLimitationReason - Limitation reason\n     * @returns {void}\n     */\n    QualityEvents.prototype.limitationChanged = function (trackSid, qualityLimitationReason) {\n        this._telemetry.info({\n            group: 'quality',\n            name: 'quality-limitation-state-changed',\n            payload: {\n                trackSid: trackSid,\n                qualityLimitationReason: qualityLimitationReason\n            }\n        });\n    };\n    /**\n     * Emit stats report\n     * @param {Record<string, any>} payload - Stats report payload\n     * @returns {void}\n     */\n    QualityEvents.prototype.statsReport = function (payload) {\n        this._telemetry.info({\n            group: 'quality',\n            name: 'stats-report',\n            payload: payload\n        });\n    };\n    /**\n     * Emit active ICE candidate pair\n     * @param {Record<string, any>} payload - ICE candidate pair payload\n     * @returns {void}\n     */\n    QualityEvents.prototype.iceCandidatePair = function (payload) {\n        this._telemetry.info({\n            group: 'quality',\n            name: 'active-ice-candidate-pair',\n            payload: payload\n        });\n    };\n    return QualityEvents;\n}());\nmodule.exports = QualityEvents;\n\n},{}],19:[function(require,module,exports){\n'use strict';\n/**\n * System resource telemetry events\n * @internal\n */\nvar SystemEvents = /** @class */ (function () {\n    /**\n     * @param {import('../telemetry')} telemetry - The telemetry instance\n     */\n    function SystemEvents(telemetry) {\n        this._telemetry = telemetry;\n    }\n    /**\n     * Emit when CPU pressure state changes\n     * @param {('nominal'|'fair'|'serious'|'critical')} pressure - Pressure state\n     * @returns {void}\n     */\n    SystemEvents.prototype.cpuPressureChanged = function (pressure) {\n        this._telemetry.info({\n            group: 'system',\n            name: 'cpu-pressure-changed',\n            payload: {\n                resourceType: 'cpu',\n                pressure: pressure\n            }\n        });\n    };\n    return SystemEvents;\n}());\nmodule.exports = SystemEvents;\n\n},{}],20:[function(require,module,exports){\n'use strict';\n/**\n * Track telemetry events\n * @internal\n */\nvar TrackEvents = /** @class */ (function () {\n    /**\n     * @param {import('../telemetry')} telemetry - The telemetry instance\n     */\n    function TrackEvents(telemetry) {\n        this._telemetry = telemetry;\n    }\n    /**\n     * Emit when a track stalls (frame rate drops below threshold)\n     * @param {string} trackSid - Track SID\n     * @param {number} frameRate - Current frame rate\n     * @param {number} threshold - Stall threshold\n     * @param {('video'|'audio')} [trackType='video'] - Track type\n     * @returns {void}\n     */\n    TrackEvents.prototype.stalled = function (trackSid, frameRate, threshold, trackType) {\n        if (trackType === void 0) { trackType = 'video'; }\n        this._telemetry.warning({\n            group: 'track-warning-raised',\n            name: 'track-stalled',\n            payload: {\n                trackSid: trackSid,\n                frameRate: frameRate,\n                threshold: threshold,\n                trackType: trackType\n            }\n        });\n    };\n    /**\n     * Emit when a stalled track resumes (frame rate rises above threshold)\n     * @param {string} trackSid - Track SID\n     * @param {number} frameRate - Current frame rate\n     * @param {number} threshold - Resume threshold\n     * @param {('video'|'audio')} [trackType='video'] - Track type\n     * @returns {void}\n     */\n    TrackEvents.prototype.resumed = function (trackSid, frameRate, threshold, trackType) {\n        if (trackType === void 0) { trackType = 'video'; }\n        this._telemetry.info({\n            group: 'track-warning-cleared',\n            name: 'track-stalled',\n            payload: {\n                trackSid: trackSid,\n                frameRate: frameRate,\n                threshold: threshold,\n                trackType: trackType\n            }\n        });\n    };\n    return TrackEvents;\n}());\nmodule.exports = TrackEvents;\n\n},{}],21:[function(require,module,exports){\n'use strict';\nvar ApplicationMonitor = require('./applicationmonitor');\nvar NetworkMonitor = require('./networkmonitor');\nvar ResourceMonitor = require('./resourcemonitor');\n/**\n * MonitorRegistry manages insight monitors for a Room.\n * @internal\n */\nvar MonitorRegistry = /** @class */ (function () {\n    /**\n     * Create a MonitorRegistry with standard room monitors\n     * @param {Log} log - Logger instance\n     */\n    function MonitorRegistry(log) {\n        if (!log) {\n            throw new Error('MonitorRegistry requires a log instance');\n        }\n        this._log = log;\n        this._monitors = [\n            new ApplicationMonitor(log),\n            new NetworkMonitor(log),\n            new ResourceMonitor(log)\n        ];\n    }\n    /**\n     * Clean up all monitors\n     * Continues cleanup even if individual monitors throw errors\n     */\n    MonitorRegistry.prototype.cleanup = function () {\n        var _this = this;\n        this._monitors.forEach(function (monitor) {\n            try {\n                monitor.cleanup();\n            }\n            catch (err) {\n                _this._log.warn('Failed to cleanup monitor:', err);\n            }\n        });\n    };\n    return MonitorRegistry;\n}());\nmodule.exports = MonitorRegistry;\n\n},{\"./applicationmonitor\":13,\"./networkmonitor\":22,\"./resourcemonitor\":23}],22:[function(require,module,exports){\n'use strict';\nvar boolToString = require('../util').boolToString;\nvar telemetry = require('./telemetry');\n/**\n * NetworkMonitor handles publishing network events from the Network Information API\n * to the Insights gateway.\n * @internal\n */\nvar NetworkMonitor = /** @class */ (function () {\n    /**\n     * Create a NetworkMonitor\n     * @param {Log} log - Logger instance\n     */\n    function NetworkMonitor(log) {\n        if (!log) {\n            throw new Error('NetworkMonitor requires a log instance');\n        }\n        this._log = log;\n        this._networkInformationHandler = null;\n        this._setupNetworkInformationAPI();\n    }\n    /**\n     * Setup Network Information API monitoring for connection changes\n     * @private\n     */\n    NetworkMonitor.prototype._setupNetworkInformationAPI = function () {\n        if (typeof globalThis.navigator === 'undefined' || !globalThis.navigator.connection) {\n            this._log.debug('Network Information API not supported');\n            return;\n        }\n        var networkChangeHandler = function () {\n            var connection = /** @type {any} */ (navigator).connection;\n            telemetry.network.informationChanged({\n                downlink: connection.downlink,\n                downlinkMax: connection.downlinkMax,\n                effectiveType: connection.effectiveType,\n                rtt: connection.rtt,\n                saveData: typeof connection.saveData === 'boolean' ? boolToString(connection.saveData) : undefined,\n                type: connection.type\n            });\n        };\n        try {\n            var connection_1 = /** @type {any} */ (navigator).connection;\n            ['change', 'typechange'].forEach(function (eventType) {\n                connection_1.addEventListener(eventType, networkChangeHandler);\n            });\n            this._networkInformationHandler = {\n                stop: function () {\n                    ['change', 'typechange'].forEach(function (eventType) {\n                        connection_1.removeEventListener(eventType, networkChangeHandler);\n                    });\n                }\n            };\n            this._log.debug('Network Information API monitoring initialized');\n        }\n        catch (error) {\n            this._log.error('Error initializing Network Information API monitoring:', error);\n        }\n    };\n    /**\n     * Cleanup network monitoring\n     */\n    NetworkMonitor.prototype.cleanup = function () {\n        this._log.debug('Cleaning up network monitoring');\n        if (this._networkInformationHandler) {\n            this._networkInformationHandler.stop();\n            this._networkInformationHandler = null;\n        }\n    };\n    return NetworkMonitor;\n}());\nmodule.exports = NetworkMonitor;\n\n},{\"../util\":147,\"./telemetry\":25}],23:[function(require,module,exports){\n'use strict';\nvar computePressureMonitor = require('./computepressuremonitor');\nvar telemetry = require('./telemetry');\n/**\n * ResourceMonitor handles publishing system resource events to the Insights gateway.\n * @internal\n */\nvar ResourceMonitor = /** @class */ (function () {\n    /**\n     * Create a ResourceMonitor\n     * @param {Log} log - Logger instance\n     */\n    function ResourceMonitor(log) {\n        if (!log) {\n            throw new Error('ResourceMonitor requires a log instance');\n        }\n        this._log = log;\n        this._cpuPressureHandler = null;\n        this._setupCPUMonitoring();\n    }\n    /**\n     * Setup CPU pressure monitoring\n     * @private\n     */\n    ResourceMonitor.prototype._setupCPUMonitoring = function () {\n        var _this = this;\n        if (!computePressureMonitor.isSupported()) {\n            this._log.debug('CPU pressure monitoring not supported');\n            return;\n        }\n        this._cpuPressureHandler = function (pressureRecord) {\n            _this._log.debug('CPU pressure changed:', pressureRecord);\n            telemetry.system.cpuPressureChanged(pressureRecord.state);\n        };\n        computePressureMonitor.watchCpuPressure(this._cpuPressureHandler)\n            .then(function () {\n            _this._log.debug('CPU pressure monitoring initialized');\n        })\n            .catch(function (error) {\n            _this._log.error('Error initializing CPU pressure monitoring:', error);\n        });\n    };\n    /**\n     * Cleanup all resource monitors\n     */\n    ResourceMonitor.prototype.cleanup = function () {\n        this._log.debug('Cleaning up resource monitors');\n        if (this._cpuPressureHandler) {\n            computePressureMonitor.unwatchCpuPressure(this._cpuPressureHandler);\n            this._cpuPressureHandler = null;\n        }\n    };\n    return ResourceMonitor;\n}());\nmodule.exports = ResourceMonitor;\n\n},{\"./computepressuremonitor\":14,\"./telemetry\":25}],24:[function(require,module,exports){\n'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar StatsReport = require('../stats/statsreport');\nvar MovingAverageDelta = require('../util/movingaveragedelta');\nvar _a = require('../util'), filterObject = _a.filterObject, flatMap = _a.flatMap, difference = _a.difference;\nvar telemetry = require('./telemetry');\n/**\n * StatsMonitor analyzes WebRTC statistics and publishes insights events.\n * @internal\n */\nvar StatsMonitor = /** @class */ (function () {\n    /**\n     * Create a StatsMonitor\n     * @param {Object} statsSource - An object that provides getStats() method\n     * @param {Log} log - Logger instance\n     * @param {Object} [options] - Configuration options\n     * @param {number} [options.publishIntervalMs=10000] - Interval for publishing stats reports\n     * @param {number} [options.collectionIntervalMs=1000] - Interval for collecting stats\n     */\n    function StatsMonitor(statsSource, log, options) {\n        if (options === void 0) { options = {}; }\n        if (!statsSource || typeof statsSource.getStats !== 'function') {\n            throw new Error('StatsMonitor requires a stats source with getStats() method');\n        }\n        if (!log) {\n            throw new Error('StatsMonitor requires a log instance');\n        }\n        this._statsSource = statsSource;\n        this._log = log;\n        this._publishIntervalMs = options.publishIntervalMs || 10000;\n        this._collectionIntervalMs = options.collectionIntervalMs || 1000;\n        this._collectionsPerPublish = Math.floor(this._publishIntervalMs / this._collectionIntervalMs);\n        this._stallThreshold = 0.5;\n        this._resumeThreshold = 5;\n        this._initializeState();\n        this._startStatsCollection();\n    }\n    /**\n     * Initialize monitoring state\n     * @private\n     */\n    StatsMonitor.prototype._initializeState = function () {\n        this._movingAverageDeltas = new Map();\n        this._interval = null;\n        this._statsCollectionCount = 0;\n        this._iceCandidatePublishToggle = false;\n        this._hasSeenActivePair = false;\n        this._lastNetworkType = null;\n        this._lastQualityLimitationReasonByTrackSid = new Map();\n        this._stalledTrackSids = new Set();\n    };\n    /**\n     * Start periodic stats collection and analysis\n     * @private\n     */\n    StatsMonitor.prototype._startStatsCollection = function () {\n        var _this = this;\n        if (this._interval) {\n            this._log.warn('StatsMonitor already started');\n            return;\n        }\n        this._interval = setInterval(function () { return __awaiter(_this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this._collectAndAnalyzeStats()];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        }); }, this._collectionIntervalMs);\n        this._log.debug('StatsMonitor started');\n    };\n    /**\n     * Stop stats collection\n     * @private\n     */\n    StatsMonitor.prototype._stopStatsCollection = function () {\n        if (this._interval) {\n            clearInterval(this._interval);\n            this._interval = null;\n        }\n        this._log.debug('StatsMonitor stopped');\n    };\n    /**\n     * Collect stats and analyze them\n     * @private\n     */\n    StatsMonitor.prototype._collectAndAnalyzeStats = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var stats, shouldPublishStatsReport, shouldPublishIceCandidate, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this._statsSource.getStats()];\n                    case 1:\n                        stats = _b.sent();\n                        this._statsCollectionCount++;\n                        shouldPublishStatsReport = (this._statsCollectionCount % this._collectionsPerPublish) === 0;\n                        if (shouldPublishStatsReport) {\n                            this._iceCandidatePublishToggle = !this._iceCandidatePublishToggle;\n                        }\n                        shouldPublishIceCandidate = shouldPublishStatsReport && this._iceCandidatePublishToggle;\n                        this._analyzeStats(stats, shouldPublishStatsReport, shouldPublishIceCandidate);\n                        return [3 /*break*/, 3];\n                    case 2:\n                        _a = _b.sent();\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Analyze WebRTC stats and publish insights\n     * @private\n     * @param {Map|Array} stats - Map or Array of StandardizedStatsResponse objects\n     * @param {boolean} shouldPublishStatsReport - Whether to publish stats-report events this cycle\n     * @param {boolean} shouldPublishIceCandidate - Whether to publish ICE candidate pair this cycle\n     */\n    StatsMonitor.prototype._analyzeStats = function (stats, shouldPublishStatsReport, shouldPublishIceCandidate) {\n        var _this = this;\n        if (!stats || (stats instanceof Map && stats.size === 0) || (Array.isArray(stats) && stats.length === 0)) {\n            return;\n        }\n        stats.forEach(function (response, id) {\n            _this._checkNetworkTypeChanges(response);\n            _this._checkQualityLimitations(response.localVideoTrackStats);\n            _this._checkTrackStalls(response.remoteVideoTrackStats);\n            if (shouldPublishStatsReport) {\n                _this._publishStatsReport(id, response);\n                if (shouldPublishIceCandidate) {\n                    _this._publishActiveIceCandidatePair(id, response);\n                }\n            }\n        });\n    };\n    /**\n     * Check for network type changes from active ICE candidate pair\n     * @private\n     * @param {Object} response - StandardizedStatsResponse\n     */\n    StatsMonitor.prototype._checkNetworkTypeChanges = function (response) {\n        var activeIceCandidatePair = response.activeIceCandidatePair;\n        if (!activeIceCandidatePair || !activeIceCandidatePair.localCandidate) {\n            return;\n        }\n        var networkType = activeIceCandidatePair.localCandidate.networkType;\n        if (!networkType) {\n            return;\n        }\n        if (!this._hasSeenActivePair) {\n            this._hasSeenActivePair = true;\n            this._lastNetworkType = networkType;\n            telemetry.network.typeChanged(networkType);\n            return;\n        }\n        if (this._lastNetworkType !== networkType) {\n            this._log.debug(\"Network type changed: \".concat(this._lastNetworkType, \" -> \").concat(networkType));\n            this._lastNetworkType = networkType;\n            telemetry.network.typeChanged(networkType);\n        }\n    };\n    /**\n     * Check for quality limitation reason changes\n     * @private\n     * @param {Array} localVideoTrackStats - Local video track statistics\n     */\n    StatsMonitor.prototype._checkQualityLimitations = function (localVideoTrackStats) {\n        var _this = this;\n        if (!Array.isArray(localVideoTrackStats)) {\n            return;\n        }\n        localVideoTrackStats.forEach(function (_a) {\n            var trackSid = _a.trackSid, qualityLimitationReason = _a.qualityLimitationReason;\n            if (!trackSid || typeof qualityLimitationReason !== 'string') {\n                return;\n            }\n            var lastReason = _this._lastQualityLimitationReasonByTrackSid.get(trackSid);\n            if (lastReason !== qualityLimitationReason) {\n                _this._log.debug(\"Quality limitation reason changed for track \".concat(trackSid, \": \").concat(lastReason || 'none', \" -> \").concat(qualityLimitationReason));\n                _this._lastQualityLimitationReasonByTrackSid.set(trackSid, qualityLimitationReason);\n                telemetry.quality.limitationChanged(trackSid, qualityLimitationReason);\n            }\n        });\n    };\n    /**\n     * Check for track stalls (low frame rates)\n     * @private\n     * @param {Array} remoteVideoTrackStats - Remote video track statistics\n     */\n    StatsMonitor.prototype._checkTrackStalls = function (remoteVideoTrackStats) {\n        var _this = this;\n        if (!Array.isArray(remoteVideoTrackStats)) {\n            return;\n        }\n        remoteVideoTrackStats.forEach(function (_a) {\n            var trackSid = _a.trackSid, frameRateReceived = _a.frameRateReceived;\n            if (frameRateReceived === undefined) {\n                return;\n            }\n            var frameRate = (typeof frameRateReceived === 'number' && !isNaN(frameRateReceived)) ? frameRateReceived : 0;\n            var isStalled = _this._stalledTrackSids.has(trackSid);\n            if (!isStalled && frameRate < _this._stallThreshold) {\n                _this._stalledTrackSids.add(trackSid);\n                _this._log.debug(\"Track \".concat(trackSid, \" stalled: frame rate \").concat(frameRate, \" below threshold \").concat(_this._stallThreshold));\n                telemetry.track.stalled(trackSid, frameRate, _this._stallThreshold);\n            }\n            else if (isStalled && frameRate >= _this._resumeThreshold) {\n                _this._stalledTrackSids.delete(trackSid);\n                _this._log.debug(\"Track \".concat(trackSid, \" resumed: frame rate \").concat(frameRate, \" above threshold \").concat(_this._resumeThreshold));\n                telemetry.track.resumed(trackSid, frameRate, _this._resumeThreshold);\n            }\n        });\n    };\n    /**\n     * Add A/V sync metrics to local track stats\n     * @private\n     * @param {Object} trackStats - The track stats from StatsReport\n     * @param {Object} trackResponse - The original track response\n     * @returns {Object} Augmented track stats with A/V sync metrics\n     */\n    StatsMonitor.prototype._addLocalTrackMetrics = function (trackStats, trackResponse) {\n        var framesEncoded = trackResponse.framesEncoded, packetsSent = trackResponse.packetsSent, totalEncodeTime = trackResponse.totalEncodeTime, totalPacketSendDelay = trackResponse.totalPacketSendDelay;\n        var augmentedTrackStats = Object.assign({}, trackStats);\n        var key = \"\".concat(trackStats.trackSid, \"+\").concat(trackStats.ssrc);\n        var trackMovingAverageDeltas = this._movingAverageDeltas.get(key) || new Map();\n        if (typeof totalEncodeTime === 'number' && typeof framesEncoded === 'number') {\n            var trackAvgEncodeDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgEncodeDelay')\n                || new MovingAverageDelta();\n            trackAvgEncodeDelayMovingAverageDelta.putSample(totalEncodeTime * 1000, framesEncoded);\n            augmentedTrackStats.avgEncodeDelay = Math.round(trackAvgEncodeDelayMovingAverageDelta.get());\n            trackMovingAverageDeltas.set('avgEncodeDelay', trackAvgEncodeDelayMovingAverageDelta);\n        }\n        if (typeof totalPacketSendDelay === 'number' && typeof packetsSent === 'number') {\n            var trackAvgPacketSendDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgPacketSendDelay')\n                || new MovingAverageDelta();\n            trackAvgPacketSendDelayMovingAverageDelta.putSample(totalPacketSendDelay * 1000, packetsSent);\n            augmentedTrackStats.avgPacketSendDelay = Math.round(trackAvgPacketSendDelayMovingAverageDelta.get());\n            trackMovingAverageDeltas.set('avgPacketSendDelay', trackAvgPacketSendDelayMovingAverageDelta);\n        }\n        this._movingAverageDeltas.set(key, trackMovingAverageDeltas);\n        return augmentedTrackStats;\n    };\n    /**\n     * Add A/V sync metrics to remote track stats\n     * @private\n     * @param {Object} trackStats - The track stats from StatsReport\n     * @param {Object} trackResponse - The original track response\n     * @returns {Object} Augmented track stats with A/V sync metrics\n     */\n    StatsMonitor.prototype._addRemoteTrackMetrics = function (trackStats, trackResponse) {\n        var estimatedPlayoutTimestamp = trackResponse.estimatedPlayoutTimestamp, framesDecoded = trackResponse.framesDecoded, jitterBufferDelay = trackResponse.jitterBufferDelay, jitterBufferEmittedCount = trackResponse.jitterBufferEmittedCount, totalDecodeTime = trackResponse.totalDecodeTime;\n        var augmentedTrackStats = Object.assign({}, trackStats);\n        var key = \"\".concat(trackStats.trackSid, \"+\").concat(trackStats.ssrc);\n        var trackMovingAverageDeltas = this._movingAverageDeltas.get(key) || new Map();\n        if (typeof estimatedPlayoutTimestamp === 'number') {\n            augmentedTrackStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n        }\n        if (typeof framesDecoded === 'number' && typeof totalDecodeTime === 'number') {\n            var trackAvgDecodeDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgDecodeDelay')\n                || new MovingAverageDelta();\n            trackAvgDecodeDelayMovingAverageDelta.putSample(totalDecodeTime * 1000, framesDecoded);\n            augmentedTrackStats.avgDecodeDelay = Math.round(trackAvgDecodeDelayMovingAverageDelta.get());\n            trackMovingAverageDeltas.set('avgDecodeDelay', trackAvgDecodeDelayMovingAverageDelta);\n        }\n        if (typeof jitterBufferDelay === 'number' && typeof jitterBufferEmittedCount === 'number') {\n            var trackAvgJitterBufferDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgJitterBufferDelay')\n                || new MovingAverageDelta();\n            trackAvgJitterBufferDelayMovingAverageDelta.putSample(jitterBufferDelay * 1000, jitterBufferEmittedCount);\n            augmentedTrackStats.avgJitterBufferDelay = Math.round(trackAvgJitterBufferDelayMovingAverageDelta.get());\n            trackMovingAverageDeltas.set('avgJitterBufferDelay', trackAvgJitterBufferDelayMovingAverageDelta);\n        }\n        this._movingAverageDeltas.set(key, trackMovingAverageDeltas);\n        return augmentedTrackStats;\n    };\n    /**\n     * Clean up moving average delta entries for tracks that are no longer active\n     * @private\n     * @param {Object} report - The stats report with track stats arrays\n     */\n    StatsMonitor.prototype._cleanupMovingAverageDeltas = function (report) {\n        var _this = this;\n        var keys = flatMap([\n            'localAudioTrackStats',\n            'localVideoTrackStats',\n            'remoteAudioTrackStats',\n            'remoteVideoTrackStats'\n        ], function (prop) { return report[prop].map(function (_a) {\n            var ssrc = _a.ssrc, trackSid = _a.trackSid;\n            return \"\".concat(trackSid, \"+\").concat(ssrc);\n        }); });\n        var movingAverageDeltaKeysToBeRemoved = difference(Array.from(this._movingAverageDeltas.keys()), keys);\n        movingAverageDeltaKeysToBeRemoved.forEach(function (key) { return _this._movingAverageDeltas.delete(key); });\n    };\n    /**\n     * Publish stats-report event\n     * @private\n     * @param {number|string} id - Peer connection ID\n     * @param {Object} response - StandardizedStatsResponse\n     */\n    StatsMonitor.prototype._publishStatsReport = function (id, response) {\n        var _this = this;\n        // NOTE(mmalavalli): A StatsReport is used to publish a \"stats-report\"\n        // event instead of using StandardizedStatsResponse directly because\n        // StatsReport will add zeros to properties that do not exist.\n        var report = new StatsReport(id, response, true /* prepareForInsights */);\n        // NOTE(mmalavalli): Since A/V sync metrics are not part of the StatsReport class,\n        // we add them to the insights payload here.\n        telemetry.quality.statsReport({\n            audioTrackStats: report.remoteAudioTrackStats.map(function (trackStat, i) {\n                return _this._addRemoteTrackMetrics(trackStat, response.remoteAudioTrackStats[i]);\n            }),\n            localAudioTrackStats: report.localAudioTrackStats.map(function (trackStat, i) {\n                return _this._addLocalTrackMetrics(trackStat, response.localAudioTrackStats[i]);\n            }),\n            localVideoTrackStats: report.localVideoTrackStats.map(function (trackStat, i) {\n                return _this._addLocalTrackMetrics(trackStat, response.localVideoTrackStats[i]);\n            }),\n            peerConnectionId: report.peerConnectionId,\n            videoTrackStats: report.remoteVideoTrackStats.map(function (trackStat, i) {\n                return _this._addRemoteTrackMetrics(trackStat, response.remoteVideoTrackStats[i]);\n            })\n        });\n        this._cleanupMovingAverageDeltas(report);\n    };\n    /**\n     * Publish active-ice-candidate-pair event\n     * @private\n     * @param {string|number} peerConnectionId - Peer connection ID\n     * @param {Object} response - StandardizedStatsResponse\n     */\n    StatsMonitor.prototype._publishActiveIceCandidatePair = function (peerConnectionId, response) {\n        var activeIceCandidatePair = this._replaceNullsWithDefaults(response.activeIceCandidatePair, peerConnectionId);\n        telemetry.quality.iceCandidatePair(activeIceCandidatePair);\n    };\n    /**\n     * Replace null values in activeIceCandidatePair with defaults.\n     *\n     * NOTE(mmalavalli): null properties of the \"active-ice-candidate-pair\"\n     * payload are assigned default values until the Insights gateway\n     * accepts null values.\n     *\n     * @private\n     * @param {Object} activeIceCandidatePair - The active ICE candidate pair\n     * @param {string} peerConnectionId - The peer connection ID\n     * @returns {Object} Active ICE candidate pair with null values replaced\n     */\n    StatsMonitor.prototype._replaceNullsWithDefaults = function (activeIceCandidatePair, peerConnectionId) {\n        activeIceCandidatePair = Object.assign({\n            availableIncomingBitrate: 0,\n            availableOutgoingBitrate: 0,\n            bytesReceived: 0,\n            bytesSent: 0,\n            consentRequestsSent: 0,\n            currentRoundTripTime: 0,\n            lastPacketReceivedTimestamp: 0,\n            lastPacketSentTimestamp: 0,\n            nominated: false,\n            peerConnectionId: peerConnectionId,\n            priority: 0,\n            readable: false,\n            requestsReceived: 0,\n            requestsSent: 0,\n            responsesReceived: 0,\n            responsesSent: 0,\n            retransmissionsReceived: 0,\n            retransmissionsSent: 0,\n            state: 'failed',\n            totalRoundTripTime: 0,\n            transportId: '',\n            writable: false\n        }, filterObject(activeIceCandidatePair || {}, null));\n        activeIceCandidatePair.localCandidate = Object.assign({\n            candidateType: 'host',\n            deleted: false,\n            ip: '',\n            port: 0,\n            priority: 0,\n            protocol: 'udp',\n            url: ''\n        }, filterObject(activeIceCandidatePair.localCandidate || {}, null));\n        activeIceCandidatePair.remoteCandidate = Object.assign({\n            candidateType: 'host',\n            ip: '',\n            port: 0,\n            priority: 0,\n            protocol: 'udp',\n            url: ''\n        }, filterObject(activeIceCandidatePair.remoteCandidate || {}, null));\n        return activeIceCandidatePair;\n    };\n    /**\n     * Cleanup all monitoring state\n     */\n    StatsMonitor.prototype.cleanup = function () {\n        this._stopStatsCollection();\n        this._movingAverageDeltas.clear();\n        this._lastQualityLimitationReasonByTrackSid.clear();\n        this._stalledTrackSids.clear();\n    };\n    return StatsMonitor;\n}());\nmodule.exports = StatsMonitor;\n\n},{\"../stats/statsreport\":131,\"../util\":147,\"../util/movingaveragedelta\":152,\"./telemetry\":25}],25:[function(require,module,exports){\n'use strict';\nvar NetworkEvents = require('./events/network');\nvar GetUserMediaEvents = require('./events/getusermedia');\nvar QualityEvents = require('./events/quality');\nvar TrackEvents = require('./events/track');\nvar ApplicationEvents = require('./events/application');\nvar SystemEvents = require('./events/system');\n/**\n * @typedef {Object} InsightsPublisher\n * @property {(group: string, name: string, payload: Record<string, any>) => void} publish\n */\n/**\n * @typedef {Object} TelemetryEventOptions\n * @property {string} group - Event group\n * @property {string} name - Event name\n * @property {Record<string, any>} [payload] - Optional event payload\n */\n/**\n * @typedef {Object} TelemetryConfig\n * @property {InsightsPublisher} publisher - The insights publisher to register\n * @property {import('../util/log')} log - Logger instance\n * @property {number} connectTimestamp - Connection timestamp\n */\n/**\n * Telemetry is a singleton for emitting telemetry events throughout the SDK.\n * It decouples event emission from publisher management, allowing different parts of the SDK\n * to emit events without direct coupling.\n * @internal\n */\nvar Telemetry = /** @class */ (function () {\n    function Telemetry() {\n        /** @type {InsightsPublisher | null} */\n        this._publisher = null;\n        /** @type {number | null} */\n        this._connectTimestamp = null;\n        /** @type {import('../util/log') | null} */\n        this._log = null;\n        /** @type {NetworkEvents} */\n        this.network = new NetworkEvents(this);\n        /** @type {GetUserMediaEvents} */\n        this.getUserMedia = new GetUserMediaEvents(this);\n        /** @type {QualityEvents} */\n        this.quality = new QualityEvents(this);\n        /** @type {TrackEvents} */\n        this.track = new TrackEvents(this);\n        /** @type {ApplicationEvents} */\n        this.application = new ApplicationEvents(this);\n        /** @type {SystemEvents} */\n        this.system = new SystemEvents(this);\n    }\n    /**\n     * Configure telemetry with a publisher.\n     * Only one publisher can be active at a time. Calling configure again\n     * will automatically reset the previous configuration.\n     *\n     * @param {TelemetryConfig} config - Configuration options\n     * @returns {Telemetry}\n     */\n    Telemetry.prototype.configure = function (_a) {\n        var publisher = _a.publisher, log = _a.log, connectTimestamp = _a.connectTimestamp;\n        if (!publisher || !log || typeof connectTimestamp !== 'number') {\n            throw new Error('Telemetry.configure requires publisher, log, and connectTimestamp');\n        }\n        if (this._publisher) {\n            this.reset();\n        }\n        this._publisher = publisher;\n        this._log = log;\n        this._connectTimestamp = connectTimestamp;\n        return this;\n    };\n    /**\n     * Reset telemetry configuration and stop publishing events.\n     * @returns {Telemetry}\n     */\n    Telemetry.prototype.reset = function () {\n        this._publisher = null;\n        this._connectTimestamp = null;\n        this._log = null;\n        return this;\n    };\n    Object.defineProperty(Telemetry.prototype, \"isEnabled\", {\n        /**\n         * Check if a publisher is currently registered.\n         * @returns {boolean} True if a publisher is registered\n         */\n        get: function () {\n            return this._publisher !== null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Internal method to emit a telemetry event. If no publisher is registered, the event is ignored.\n     * Used by the public info/warning/error methods.\n     * @private\n     * @param {string} group - Event group (e.g., 'get-user-media', 'quality', 'network')\n     * @param {string} name - Event name (e.g., 'succeeded', 'failed')\n     * @param {('info'|'warning'|'error'|'debug')} level - Event level\n     * @param {Record<string, any>} [payload] - Optional event payload\n     * @returns {void}\n     */\n    Telemetry.prototype._emit = function (group, name, level, payload) {\n        if (!this._publisher || !this._log || this._connectTimestamp === null) {\n            return;\n        }\n        var timestamp = Date.now();\n        var elapsedTime = timestamp - this._connectTimestamp;\n        var publisherPayload = Object.assign({ elapsedTime: elapsedTime, level: level }, payload || {});\n        this._publisher.publish(group, name, publisherPayload);\n        var event = Object.assign({\n            elapsedTime: elapsedTime,\n            group: group,\n            level: level,\n            name: name,\n            timestamp: timestamp\n        }, payload ? { payload: payload } : {});\n        /** @type {'debug' | 'error' | 'info' | 'warn'} */\n        var logLevel = /** @type {const} */ ({\n            debug: 'debug',\n            error: 'error',\n            info: 'info',\n            warning: 'warn'\n        })[level];\n        this._log[logLevel]('telemetry', event);\n    };\n    /**\n     * Emit an info-level telemetry event.\n     *\n     * @param {TelemetryEventOptions} options - Event options\n     * @returns {void}\n     */\n    Telemetry.prototype.info = function (_a) {\n        var group = _a.group, name = _a.name, payload = _a.payload;\n        return this._emit(group, name, 'info', payload);\n    };\n    /**\n     * Emit a warning-level telemetry event.\n     *\n     * @param {TelemetryEventOptions} options - Event options\n     * @returns {void}\n     */\n    Telemetry.prototype.warning = function (_a) {\n        var group = _a.group, name = _a.name, payload = _a.payload;\n        return this._emit(group, name, 'warning', payload);\n    };\n    /**\n     * Emit an error-level telemetry event.\n     *\n     * @param {TelemetryEventOptions} options - Event options\n     * @returns {void}\n     */\n    Telemetry.prototype.error = function (_a) {\n        var group = _a.group, name = _a.name, payload = _a.payload;\n        return this._emit(group, name, 'error', payload);\n    };\n    return Telemetry;\n}());\nmodule.exports = new Telemetry();\n\n},{\"./events/application\":15,\"./events/getusermedia\":16,\"./events/network\":17,\"./events/quality\":18,\"./events/system\":19,\"./events/track\":20}],26:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaStreamTrack = require('./webrtc').MediaStreamTrack;\nvar _a = require('./util'), asLocalTrack = _a.asLocalTrack, asLocalTrackPublication = _a.asLocalTrackPublication, trackClass = _a.trackClass;\nvar _b = require('./util/constants'), E = _b.typeErrors, trackPriority = _b.trackPriority;\nvar validateLocalTrack = require('./util/validate').validateLocalTrack;\nvar _c = require('./media/track/es5'), LocalAudioTrack = _c.LocalAudioTrack, LocalDataTrack = _c.LocalDataTrack, LocalVideoTrack = _c.LocalVideoTrack;\nvar LocalAudioTrackPublication = require('./media/track/localaudiotrackpublication');\nvar LocalDataTrackPublication = require('./media/track/localdatatrackpublication');\nvar LocalVideoTrackPublication = require('./media/track/localvideotrackpublication');\nvar Participant = require('./participant');\n/**\n * A {@link LocalParticipant} represents the local {@link Participant} in a\n * {@link Room}.\n * @extends Participant\n * @property {Map<Track.SID, LocalAudioTrackPublication>} audioTracks -\n *    The {@link LocalParticipant}'s {@link LocalAudioTrackPublication}s\n * @property {Map<Track.SID, LocalDataTrackPublication>} dataTracks -\n *    The {@link LocalParticipant}'s {@link LocalDataTrackPublication}s\n * @property {Map<Track.SID, LocalTrackPublication>} tracks -\n *    The {@link LocalParticipant}'s {@link LocalTrackPublication}s\n * @property {Map<Track.SID, LocalVideoTrackPublication>} videoTracks -\n *    The {@link LocalParticipant}'s {@link LocalVideoTrackPublication}s\n * @property {string} signalingRegion - The geographical region of the\n *     signaling edge the {@link LocalParticipant} is connected to.\n *\n * @emits RemoteParticipant#reconnected\n * @emits RemoteParticipant#reconnecting\n * @emits LocalParticipant#trackDimensionsChanged\n * @emits LocalParticipant#trackDisabled\n * @emits LocalParticipant#trackEnabled\n * @emits LocalParticipant#trackPublicationFailed\n * @emits LocalParticipant#trackPublished\n * @emits LocalParticipant#trackStarted\n * @emits LocalParticipant#trackStopped\n * @emits LocalParticipant#trackWarning\n * @emits LocalParticipant#trackWarningsCleared\n */\nvar LocalParticipant = /** @class */ (function (_super) {\n    __extends(LocalParticipant, _super);\n    /**\n     * Construct a {@link LocalParticipant}.\n     * @param {ParticipantSignaling} signaling\n     * @param {Array<LocalTrack>} localTracks\n     * @param {Object} options\n     */\n    function LocalParticipant(signaling, localTracks, options) {\n        var _this = this;\n        options = Object.assign({\n            LocalAudioTrack: LocalAudioTrack,\n            LocalVideoTrack: LocalVideoTrack,\n            LocalDataTrack: LocalDataTrack,\n            MediaStreamTrack: MediaStreamTrack,\n            LocalAudioTrackPublication: LocalAudioTrackPublication,\n            LocalVideoTrackPublication: LocalVideoTrackPublication,\n            LocalDataTrackPublication: LocalDataTrackPublication,\n            shouldStopLocalTracks: false,\n            tracks: localTracks\n        }, options);\n        var tracksToStop = options.shouldStopLocalTracks\n            ? new Set(localTracks.filter(function (localTrack) { return localTrack.kind !== 'data'; }))\n            : new Set();\n        _this = _super.call(this, signaling, options) || this;\n        Object.defineProperties(_this, {\n            _eventObserver: {\n                value: options.eventObserver\n            },\n            _LocalAudioTrack: {\n                value: options.LocalAudioTrack\n            },\n            _LocalDataTrack: {\n                value: options.LocalDataTrack\n            },\n            _LocalVideoTrack: {\n                value: options.LocalVideoTrack\n            },\n            _MediaStreamTrack: {\n                value: options.MediaStreamTrack\n            },\n            _LocalAudioTrackPublication: {\n                value: options.LocalAudioTrackPublication\n            },\n            _LocalDataTrackPublication: {\n                value: options.LocalDataTrackPublication\n            },\n            _LocalVideoTrackPublication: {\n                value: options.LocalVideoTrackPublication\n            },\n            _tracksToStop: {\n                value: tracksToStop\n            },\n            signalingRegion: {\n                enumerable: true,\n                get: function () {\n                    return signaling.signalingRegion;\n                }\n            }\n        });\n        _this._handleTrackSignalingEvents();\n        return _this;\n    }\n    /**\n     * @private\n     * @param {LocalTrack} track\n     * @param {Track.ID} id\n     * @param {Track.Priority} priority\n     * @returns {?LocalTrack}\n     */\n    LocalParticipant.prototype._addTrack = function (track, id, priority) {\n        var addedTrack = _super.prototype._addTrack.call(this, track, id);\n        if (addedTrack && this.state !== 'disconnected') {\n            this._addLocalTrack(track, priority);\n        }\n        return addedTrack;\n    };\n    /**\n     * @private\n     * @param {LocalTrack} track\n     * @param {Track.Priority} priority\n     * @returns {void}\n     */\n    LocalParticipant.prototype._addLocalTrack = function (track, priority) {\n        var _a;\n        // check if track has noise cancellation enabled.\n        var vendor = (_a = track.noiseCancellation) === null || _a === void 0 ? void 0 : _a.vendor;\n        this._signaling.addTrack(track._trackSender, track.name, priority, vendor);\n        this._log.info(\"Added a new \".concat(trackClass(track, true), \":\"), track.id);\n        this._log.debug(\"\".concat(trackClass(track, true), \":\"), track);\n    };\n    /**\n     * @private\n     * @param {LocalTrack} track\n     * @param {Track.ID} id\n     * @returns {?LocalTrack}\n     */\n    LocalParticipant.prototype._removeTrack = function (track, id) {\n        var removedTrack = _super.prototype._removeTrack.call(this, track, id);\n        if (removedTrack && this.state !== 'disconnected') {\n            this._signaling.removeTrack(track._trackSender);\n            this._log.info(\"Removed a \".concat(trackClass(track, true), \":\"), track.id);\n            this._log.debug(\"\".concat(trackClass(track, true), \":\"), track);\n        }\n        return removedTrack;\n    };\n    /**\n     * Get the {@link LocalTrack} events to re-emit.\n     * @private\n     * @returns {Array<Array<string>>} events\n     */\n    LocalParticipant.prototype._getTrackEvents = function () {\n        return _super.prototype._getTrackEvents.call(this).concat([\n            ['disabled', 'trackDisabled'],\n            ['enabled', 'trackEnabled'],\n            ['stopped', 'trackStopped']\n        ]);\n    };\n    LocalParticipant.prototype.toString = function () {\n        return \"[LocalParticipant #\".concat(this._instanceId).concat(this.sid ? \": \".concat(this.sid) : '', \"]\");\n    };\n    /**\n     * @private\n     */\n    LocalParticipant.prototype._handleTrackSignalingEvents = function () {\n        var _this = this;\n        var log = this._log;\n        if (this.state === 'disconnected') {\n            return;\n        }\n        var localTrackDisabled = function (localTrack) {\n            var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n            if (trackSignaling) {\n                trackSignaling.disable();\n                log.debug(\"Disabled the \".concat(trackClass(localTrack, true), \":\"), localTrack.id);\n            }\n        };\n        var localTrackEnabled = function (localTrack) {\n            var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n            if (trackSignaling) {\n                trackSignaling.enable();\n                log.debug(\"Enabled the \".concat(trackClass(localTrack, true), \":\"), localTrack.id);\n            }\n        };\n        var localTrackStopped = function (localTrack) {\n            // NOTE(mroberts): We shouldn't need to check for `stop`, since DataTracks\n            // do not emit \"stopped\".\n            var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n            if (trackSignaling) {\n                trackSignaling.stop();\n            }\n            return trackSignaling;\n        };\n        var stateChanged = function (state) {\n            log.debug('Transitioned to state:', state);\n            if (state === 'disconnected') {\n                log.debug('Removing LocalTrack event listeners');\n                _this._signaling.removeListener('stateChanged', stateChanged);\n                _this.removeListener('trackDisabled', localTrackDisabled);\n                _this.removeListener('trackEnabled', localTrackEnabled);\n                _this.removeListener('trackStopped', localTrackStopped);\n                // NOTE(mmalavalli): Remove the stale MediaTrackSender clones so that we\n                // do not call replaceTrack() on their RTCRtpSenders.\n                _this._tracks.forEach(function (track) {\n                    var trackSignaling = localTrackStopped(track);\n                    if (trackSignaling) {\n                        track._trackSender.removeClone(trackSignaling._trackTransceiver);\n                    }\n                });\n                log.info(\"LocalParticipant disconnected. Stopping \".concat(_this._tracksToStop.size, \" automatically-acquired LocalTracks\"));\n                _this._tracksToStop.forEach(function (track) {\n                    track.stop();\n                });\n            }\n            else if (state === 'connected') {\n                // NOTE(mmalavalli): Any transition to \"connected\" here is a result of\n                // successful signaling reconnection, and not a first-time establishment\n                // of the signaling connection.\n                log.info('reconnected');\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return _this.emit('reconnected'); }, 0);\n            }\n        };\n        this.on('trackDisabled', localTrackDisabled);\n        this.on('trackEnabled', localTrackEnabled);\n        this.on('trackStopped', localTrackStopped);\n        this._signaling.on('stateChanged', stateChanged);\n        this._tracks.forEach(function (track) {\n            _this._addLocalTrack(track, trackPriority.PRIORITY_STANDARD);\n            _this._getOrCreateLocalTrackPublication(track).catch(function (error) {\n                // Just log a warning for now.\n                log.warn(\"Failed to get or create LocalTrackPublication for \".concat(track, \":\"), error);\n            });\n        });\n    };\n    /**\n     * @private\n     * @param {LocalTrack} localTrack\n     * @returns {Promise<LocalTrackPublication>}\n     */\n    LocalParticipant.prototype._getOrCreateLocalTrackPublication = function (localTrack) {\n        var localTrackPublication = getTrackPublication(this.tracks, localTrack);\n        if (localTrackPublication) {\n            return Promise.resolve(localTrackPublication);\n        }\n        var log = this._log;\n        var self = this;\n        var trackSignaling = this._signaling.getPublication(localTrack._trackSender);\n        if (!trackSignaling) {\n            return Promise.reject(new Error(\"Unexpected error: The \".concat(localTrack, \" cannot be published\")));\n        }\n        return new Promise(function (resolve, reject) {\n            function updated() {\n                var error = trackSignaling.error;\n                if (error) {\n                    trackSignaling.removeListener('updated', updated);\n                    log.warn(\"Failed to publish the \".concat(trackClass(localTrack, true), \": \").concat(error.message));\n                    self._removeTrack(localTrack, localTrack.id);\n                    setTimeout(function () {\n                        self.emit('trackPublicationFailed', error, localTrack);\n                    });\n                    reject(error);\n                    return;\n                }\n                if (!self._tracks.has(localTrack.id)) {\n                    trackSignaling.removeListener('updated', updated);\n                    reject(new Error(\"The \".concat(localTrack, \" was unpublished\")));\n                    return;\n                }\n                var sid = trackSignaling.sid;\n                if (!sid) {\n                    return;\n                }\n                trackSignaling.removeListener('updated', updated);\n                var options = {\n                    log: log,\n                    LocalAudioTrackPublication: self._LocalAudioTrackPublication,\n                    LocalDataTrackPublication: self._LocalDataTrackPublication,\n                    LocalVideoTrackPublication: self._LocalVideoTrackPublication\n                };\n                localTrackPublication = getTrackPublication(self.tracks, localTrack);\n                var warningHandler = function (twilioWarningName) {\n                    return self.emit('trackWarning', twilioWarningName, localTrackPublication);\n                };\n                var warningsClearedHandler = function () {\n                    return self.emit('trackWarningsCleared', localTrackPublication);\n                };\n                var unpublish = function (publication) {\n                    localTrackPublication.removeListener('trackWarning', warningHandler);\n                    localTrackPublication.removeListener('trackWarningsCleared', warningsClearedHandler);\n                    self.unpublishTrack(publication.track);\n                };\n                if (!localTrackPublication) {\n                    localTrackPublication = asLocalTrackPublication(localTrack, trackSignaling, unpublish, options);\n                    self._addTrackPublication(localTrackPublication);\n                }\n                localTrackPublication.on('warning', warningHandler);\n                localTrackPublication.on('warningsCleared', warningsClearedHandler);\n                var state = self._signaling.state;\n                if (state === 'connected' || state === 'connecting') {\n                    if (localTrack._processorEventObserver) {\n                        localTrack._processorEventObserver.on('event', function (event) {\n                            self._eventObserver.emit('event', {\n                                name: event.name,\n                                payload: event.data,\n                                group: 'video-processor',\n                                level: 'info'\n                            });\n                        });\n                    }\n                    // NOTE(csantos): For tracks created before joining a room or already joined but about to publish it\n                    if (localTrack.processedTrack) {\n                        localTrack._captureFrames();\n                        localTrack._setSenderMediaStreamTrack(true);\n                    }\n                }\n                if (state === 'connected') {\n                    setTimeout(function () {\n                        self.emit('trackPublished', localTrackPublication);\n                    });\n                }\n                resolve(localTrackPublication);\n            }\n            trackSignaling.on('updated', updated);\n        });\n    };\n    /**\n     * Publishes a {@link LocalTrack} to the {@link Room}.\n     * @param {LocalTrack} localTrack - The {@link LocalTrack} to publish\n     * @param {LocalTrackPublishOptions} [options] - The {@link LocalTrackPublishOptions}\n     *   for publishing the {@link LocalTrack}\n     * @returns {Promise<LocalTrackPublication>} - Resolves with the corresponding\n     *   {@link LocalTrackPublication} if successful; In a Large Group Room (Maximum\n     *   Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n     *   if either the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}\n     *   is part of a set of {@link LocalTrack}s which along with the published Tracks exceeds 16.\n     * @throws {TypeError}\n     * @throws {RangeError}\n     * @example\n     * var Video = require('twilio-video');\n     *\n     * Video.connect(token, {\n     *   name: 'my-cool-room',\n     *   audio: true\n     * }).then(function(room) {\n     *   return Video.createLocalVideoTrack({\n     *     name: 'camera'\n     *   }).then(function(localVideoTrack) {\n     *     return room.localParticipant.publishTrack(localVideoTrack, {\n     *       priority: 'high'\n     *     });\n     *   });\n     * }).then(function(publication) {\n     *   console.log('The LocalTrack \"' + publication.trackName\n     *     + '\" was successfully published with priority \"'\n     *     * publication.priority + '\"');\n     * });\n    */ /**\n     * Publishes a MediaStreamTrack to the {@link Room}.\n     * @param {MediaStreamTrack} mediaStreamTrack - The MediaStreamTrack\n     *   to publish; if a corresponding {@link LocalAudioTrack} or\n     *   {@link LocalVideoTrack} has not yet been published, this method will\n     *   construct one\n     * @param {MediaStreamTrackPublishOptions} [options] - The options for publishing\n     *   the MediaStreamTrack\n     * @returns {Promise<LocalTrackPublication>} - Resolves with the corresponding\n     *   {@link LocalTrackPublication} if successful; In a Large Group Room (Maximum\n     *   Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n     *   if the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}\n     *   is part of a set of {@link LocalTrack}s which along with the published Tracks exceeds 16.\n     * @throws {TypeError}\n     * @throws {RangeError}\n     * @example\n     * var Video = require('twilio-video');\n     *\n     * Video.connect(token, {\n     *   name: 'my-cool-room',\n     *   audio: true\n     * }).then(function(room) {\n     *   return navigator.mediaDevices.getUserMedia({\n     *     video: true\n     *   }).then(function(mediaStream) {\n     *     var mediaStreamTrack = mediaStream.getTracks()[0];\n     *     return room.localParticipant.publishTrack(mediaStreamTrack, {\n     *       name: 'camera',\n     *       priority: 'high'\n     *     });\n     *   });\n     * }).then(function(publication) {\n     *   console.log('The LocalTrack \"' + publication.trackName\n     *     + '\" was successfully published with priority \"'\n     *     * publication.priority + '\"');\n     * });\n     */\n    LocalParticipant.prototype.publishTrack = function (localTrackOrMediaStreamTrack, options) {\n        var trackPublication = getTrackPublication(this.tracks, localTrackOrMediaStreamTrack);\n        if (trackPublication) {\n            return Promise.resolve(trackPublication);\n        }\n        options = Object.assign({\n            log: this._log,\n            priority: trackPriority.PRIORITY_STANDARD,\n            LocalAudioTrack: this._LocalAudioTrack,\n            LocalDataTrack: this._LocalDataTrack,\n            LocalVideoTrack: this._LocalVideoTrack,\n            MediaStreamTrack: this._MediaStreamTrack\n        }, options);\n        var localTrack;\n        try {\n            localTrack = asLocalTrack(localTrackOrMediaStreamTrack, options);\n        }\n        catch (error) {\n            return Promise.reject(error);\n        }\n        var noiseCancellation = localTrack.noiseCancellation;\n        var allowedAudioProcessors = this._signaling.audioProcessors;\n        if (noiseCancellation && !allowedAudioProcessors.includes(noiseCancellation.vendor)) {\n            this._log.warn(\"\".concat(noiseCancellation.vendor, \" is not supported in this room. disabling it permanently\"));\n            noiseCancellation.disablePermanently();\n        }\n        var priorityValues = Object.values(trackPriority);\n        if (!priorityValues.includes(options.priority)) {\n            // eslint-disable-next-line new-cap\n            return Promise.reject(E.INVALID_VALUE('LocalTrackPublishOptions.priority', priorityValues));\n        }\n        var addedLocalTrack = this._addTrack(localTrack, localTrack.id, options.priority)\n            || this._tracks.get(localTrack.id);\n        return this._getOrCreateLocalTrackPublication(addedLocalTrack);\n    };\n    /**\n     * Publishes multiple {@link LocalTrack}s to the {@link Room}.\n     * @param {Array<LocalTrack|MediaStreamTrack>} tracks - The {@link LocalTrack}s\n     *   to publish; for any MediaStreamTracks provided, if a corresponding\n     *   {@link LocalAudioTrack} or {@link LocalVideoTrack} has not yet been\n     *   published, this method will construct one\n     * @returns {Promise<Array<LocalTrackPublication>>} - The resulting\n     *   {@link LocalTrackPublication}s if successful; In a Large Group Room (Maximum\n     *   Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n     *   if the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}s\n     *   along with the published Tracks exceeds 16.\n     * @throws {TypeError}\n     */\n    LocalParticipant.prototype.publishTracks = function (tracks) {\n        if (!Array.isArray(tracks)) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('tracks', 'Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n        }\n        return Promise.all(tracks.map(this.publishTrack, this));\n    };\n    LocalParticipant.prototype.setBandwidthProfile = function () {\n        this._log.warn('setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js');\n    };\n    /**\n     * Sets the {@link NetworkQualityVerbosity} for the {@link LocalParticipant} and\n     * {@link RemoteParticipant}s. It does nothing if Network Quality is not enabled\n     * while calling {@link connect}.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration - The new\n     *   {@link NetworkQualityConfiguration}; If either or both of the local and\n     *   remote {@link NetworkQualityVerbosity} values are absent, then the corresponding\n     *   existing values are retained\n     * @returns {this}\n     * @example\n     * // Update verbosity levels for both LocalParticipant and RemoteParticipants\n     * localParticipant.setNetworkQualityConfiguration({\n     *   local: 1,\n     *   remote: 2\n     * });\n     * @example\n     * // Update verbosity level for only the LocalParticipant\n     * localParticipant.setNetworkQualityConfiguration({\n     *   local: 1\n     * });\n     *  @example\n     * // Update verbosity level for only the RemoteParticipants\n     * localParticipant.setNetworkQualityConfiguration({\n     *   remote: 2\n     * });\n     */\n    LocalParticipant.prototype.setNetworkQualityConfiguration = function (networkQualityConfiguration) {\n        if (typeof networkQualityConfiguration !== 'object'\n            || networkQualityConfiguration === null) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('networkQualityConfiguration', 'NetworkQualityConfiguration');\n        }\n        ['local', 'remote'].forEach(function (prop) {\n            if (prop in networkQualityConfiguration && (typeof networkQualityConfiguration[prop] !== 'number' || isNaN(networkQualityConfiguration[prop]))) {\n                // eslint-disable-next-line new-cap\n                throw E.INVALID_TYPE(\"networkQualityConfiguration.\".concat(prop), 'number');\n            }\n        });\n        this._signaling.setNetworkQualityConfiguration(networkQualityConfiguration);\n        return this;\n    };\n    /**\n     * Set the {@link LocalParticipant}'s {@link EncodingParameters}.\n     * @param {?EncodingParameters} [encodingParameters] - The new\n     *   {@link EncodingParameters}; If null, then the bitrate limits are removed;\n     *   If not specified, then the existing bitrate limits are preserved\n     * @returns {this}\n     * @throws {TypeError}\n     */\n    LocalParticipant.prototype.setParameters = function (encodingParameters) {\n        if (typeof encodingParameters !== 'undefined'\n            && typeof encodingParameters !== 'object') {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('encodingParameters', 'EncodingParameters, null or undefined');\n        }\n        if (encodingParameters) {\n            if (this._signaling.getParameters().adaptiveSimulcast && encodingParameters.maxVideoBitrate) {\n                // eslint-disable-next-line new-cap\n                throw E.INVALID_TYPE('encodingParameters', 'encodingParameters.maxVideoBitrate is not compatible with \"preferredVideoCodecs=auto\"');\n            }\n            ['maxAudioBitrate', 'maxVideoBitrate'].forEach(function (prop) {\n                if (typeof encodingParameters[prop] !== 'undefined'\n                    && typeof encodingParameters[prop] !== 'number'\n                    && encodingParameters[prop] !== null) {\n                    // eslint-disable-next-line new-cap\n                    throw E.INVALID_TYPE(\"encodingParameters.\".concat(prop), 'number, null or undefined');\n                }\n            });\n        }\n        else if (encodingParameters === null) {\n            encodingParameters = { maxAudioBitrate: null, maxVideoBitrate: null };\n        }\n        this._signaling.setParameters(encodingParameters);\n        return this;\n    };\n    /**\n     * Stops publishing a {@link LocalTrack} to the {@link Room}.\n     * @param {LocalTrack|MediaStreamTrack} track - The {@link LocalTrack}\n     *   to stop publishing; if a MediaStreamTrack is provided, this method\n     *   looks up the corresponding {@link LocalAudioTrack} or\n     *   {@link LocalVideoTrack} to stop publishing\n     * @returns {?LocalTrackPublication} - The corresponding\n     *   {@link LocalTrackPublication} if the {@link LocalTrack} was previously\n     *   published, null otherwise\n     * @throws {TypeError}\n    */\n    LocalParticipant.prototype.unpublishTrack = function (track) {\n        validateLocalTrack(track, {\n            LocalAudioTrack: this._LocalAudioTrack,\n            LocalDataTrack: this._LocalDataTrack,\n            LocalVideoTrack: this._LocalVideoTrack,\n            MediaStreamTrack: this._MediaStreamTrack\n        });\n        var localTrack = this._tracks.get(track.id);\n        if (!localTrack) {\n            return null;\n        }\n        var trackSignaling = this._signaling.getPublication(localTrack._trackSender);\n        trackSignaling.publishFailed(new Error(\"The \".concat(localTrack, \" was unpublished\")));\n        localTrack = this._removeTrack(localTrack, localTrack.id);\n        if (!localTrack) {\n            return null;\n        }\n        var localTrackPublication = getTrackPublication(this.tracks, localTrack);\n        if (localTrackPublication) {\n            this._removeTrackPublication(localTrackPublication);\n        }\n        return localTrackPublication;\n    };\n    /**\n     * Stops publishing multiple {@link LocalTrack}s to the {@link Room}.\n     * @param {Array<LocalTrack|MediaStreamTrack>} tracks - The {@link LocalTrack}s\n     *   to stop publishing; for any MediaStreamTracks provided, this method looks\n     *   up the corresponding {@link LocalAudioTrack} or {@link LocalVideoTrack} to\n     *   stop publishing\n     * @returns {Array<LocalTrackPublication>} - The corresponding\n     *   {@link LocalTrackPublication}s that were successfully unpublished\n     * @throws {TypeError}\n     */\n    LocalParticipant.prototype.unpublishTracks = function (tracks) {\n        var _this = this;\n        if (!Array.isArray(tracks)) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_TYPE('tracks', 'Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n        }\n        return tracks.reduce(function (unpublishedTracks, track) {\n            var unpublishedTrack = _this.unpublishTrack(track);\n            return unpublishedTrack ? unpublishedTracks.concat(unpublishedTrack) : unpublishedTracks;\n        }, []);\n    };\n    return LocalParticipant;\n}(Participant));\n/**\n * The {@link LocalParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event LocalParticipant#reconnected\n */\n/**\n * The {@link LocalParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event LocalParticipant#reconnecting\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalVideoTrack}'s dimensions changed.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} whose dimensions changed\n * @event LocalParticipant#trackDimensionsChanged\n */\n/**\n * A {@link LocalTrack} was disabled by the {@link LocalParticipant}.\n * @param {LocalTrack} track - The {@link LocalTrack} that was disabled\n * @event LocalParticipant#trackDisabled\n */\n/**\n * A {@link LocalTrack} was enabled by the {@link LocalParticipant}.\n * @param {LocalTrack} track - The {@link LocalTrack} that was enabled\n * @event LocalParticipant#trackEnabled\n */\n/**\n * A {@link LocalTrack} failed to publish. Check the error message for more\n * information. In a Large Group Room (Maximum Participants greater than 50),\n * this event is raised with a {@link ParticipantMaxTracksExceededError} either\n * when attempting to publish the {@link LocalTrack} will exceed the Maximum Published\n * Tracks limit of 16, or the {@link LocalTrack} is part of a set of {@link LocalTrack}s\n * which along with the published Tracks exceeds 16.\n * @param {TwilioError} error - A {@link TwilioError} explaining why publication\n *   failed\n * @param {LocalTrack} localTrack - The {@link LocalTrack} that failed to\n *   publish\n * @event LocalParticipant#trackPublicationFailed\n */\n/**\n * A {@link LocalTrack} that was added using {@link LocalParticipant#publishTrack} was successfully published. This event\n * is not raised for {@link LocalTrack}s added in {@link ConnectOptions}<code>.tracks</code> or auto-created within\n * <a href=\"module-twilio-video.html#.connect__anchor\"><code>{@link connect}</code></a>.\n * @param {LocalTrackPublication} publication - The resulting\n *   {@link LocalTrackPublication} for the published {@link LocalTrack}\n * @event LocalParticipant#trackPublished\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrack}s started.\n * @param {LocalTrack} track - The {@link LocalTrack} that started\n * @event LocalParticipant#trackStarted\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrack}s stopped, either\n * because {@link LocalTrack#stop} was called or because the underlying\n * MediaStreamTrack ended).\n * @param {LocalTrack} track - The {@link LocalTrack} that stopped\n * @event LocalParticipant#trackStopped\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s encountered a warning.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {string} name - The warning that was raised.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that encountered the warning.\n * @event LocalParticipant#trackWarning\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s cleared all warnings.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that cleared all warnings.\n * @event LocalParticipant#trackWarningsCleared\n */\n/**\n * Outgoing media encoding parameters.\n * @typedef {object} EncodingParameters\n * @property {?number} [maxAudioBitrate] - Max outgoing audio bitrate (bps);\n *   If not specified, retains the existing bitrate limit; A <code>null</code> or a\n *   <code>0</code> value removes any previously set bitrate limit; This value is set\n *   as a hint for variable bitrate codecs, but will not take effect for fixed bitrate\n *   codecs; Based on our tests, Chrome, Firefox and Safari support a bitrate range of\n *   12000 bps to 256000 bps for Opus codec; This parameter has no effect on iSAC, PCMU\n *   and PCMA codecs\n * @property {?number} [maxVideoBitrate] - Max outgoing video bitrate (bps);\n *   If not specified, retains the existing bitrate limit; A <code>null</code> or\n *   a <code>0</code> value removes any previously set bitrate limit; This value is\n *   set as a hint for variable bitrate codecs, but will not take effect for fixed\n *   bitrate codecs; Based on our tests, Chrome, Firefox and Safari all seem to support\n *   an average bitrate range of 20000 bps (20 kbps) to 8000000 bps (8 mbps) for a\n *   720p VideoTrack.\n *   Note: this limit is not applied for screen share tracks published on Chrome.\n */\n/**\n * Options for publishing a {@link LocalTrack}.\n * @typedef {object} LocalTrackPublishOptions\n * @property {Track.Priority} [priority='standard'] - The priority with which the {@link LocalTrack}\n *   is to be published; In Group or Small Group Rooms, the appropriate bandwidth is\n *   allocated to the {@link LocalTrack} based on its {@link Track.Priority}; It has no\n *   effect in Peer-to-Peer Rooms; It defaults to \"standard\" when not provided\n */\n/**\n * Options for publishing a {@link MediaStreamTrack}.\n * @typedef {LocalTrackOptions} MediaStreamTrackPublishOptions\n * @property {Track.Priority} [priority='standard'] - The priority with which the {@link LocalTrack}\n *   is to be published; In Group or Small Group Rooms, the appropriate bandwidth is\n *   allocated to the {@link LocalTrack} based on its {@link Track.Priority}; It has no\n *   effect in Peer-to-Peer Rooms; It defaults to \"standard\" when not provided\n */\n/**\n * @private\n * @param {Map<Track.SID, LocalTrackPublication>} trackPublications\n * @param {LocalTrack|MediaStreamTrack} track\n * @returns {?LocalTrackPublication} trackPublication\n */\nfunction getTrackPublication(trackPublications, track) {\n    return Array.from(trackPublications.values()).find(function (trackPublication) { return trackPublication.track === track\n        || trackPublication.track.mediaStreamTrack === track; }) || null;\n}\nmodule.exports = LocalParticipant;\n\n},{\"./media/track/es5\":29,\"./media/track/localaudiotrackpublication\":35,\"./media/track/localdatatrackpublication\":37,\"./media/track/localvideotrackpublication\":41,\"./participant\":60,\"./util\":147,\"./util/constants\":140,\"./util/validate\":165,\"./webrtc\":173}],27:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaTrack = require('./mediatrack');\n/**\n * An {@link AudioTrack} is a {@link Track} representing audio.\n * @extends Track\n * @property {boolean} isStarted - Whether or not the {@link AudioTrack} has\n *   started; if the {@link AudioTrack} started, there is enough audio data to\n *   begin playback\n * @property {boolean} isEnabled - Whether or not the {@link AudioTrack} is\n *   enabled; if the {@link AudioTrack} is not enabled, it is \"muted\"\n * @property {Track.Kind} kind - \"audio\"\n * @property {MediaStreamTrack} mediaStreamTrack - An audio MediaStreamTrack\n * @property {?MediaStreamTrack} processedTrack - The source of processed audio samples.\n * It is always null as audio processing is not currently supported.\n * @emits AudioTrack#disabled\n * @emits AudioTrack#enabled\n * @emits AudioTrack#started\n */\nvar AudioTrack = /** @class */ (function (_super) {\n    __extends(AudioTrack, _super);\n    /**\n     * Construct an {@link AudioTrack}.\n     * @param {MediaTrackTransceiver} mediaTrackTransceiver\n     * @param {{log: Log}} options\n     */\n    function AudioTrack(mediaTrackTransceiver, options) {\n        return _super.call(this, mediaTrackTransceiver, options) || this;\n    }\n    /**\n     * Create an HTMLAudioElement and attach the {@link AudioTrack} to it.\n     *\n     * The HTMLAudioElement's <code>srcObject</code> will be set to a new\n     * MediaStream containing the {@link AudioTrack}'s MediaStreamTrack.\n     *\n     * @returns {HTMLAudioElement} audioElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * Video.createLocalAudioTrack().then(function(audioTrack) {\n     *   const audioElement = audioTrack.attach();\n     *   document.body.appendChild(audioElement);\n     * });\n    */ /**\n     * Attach the {@link AudioTrack} to an existing HTMLMediaElement. The\n     * HTMLMediaElement could be an HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link AudioTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link MediaTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {HTMLMediaElement} mediaElement - The HTMLMediaElement to attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalAudioTrack().then(function(audioTrack) {\n     *   audioTrack.attach(videoElement);\n     * });\n    */ /**\n     * Attach the {@link AudioTrack} to an HTMLMediaElement selected by\n     * <code>document.querySelector</code>. The HTMLMediaElement could be an\n     * HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link AudioTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link AudioTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {string} selector - A query selector for the HTMLMediaElement to\n     *   attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * videoElement.id = 'my-video-element';\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalAudioTrack().then(function(track) {\n     *   track.attach('#my-video-element');\n     * });\n     */\n    AudioTrack.prototype.attach = function () {\n        return _super.prototype.attach.apply(this, arguments);\n    };\n    /**\n     * Detach the {@link AudioTrack} from all previously attached HTMLMediaElements.\n     * @returns {Array<HTMLMediaElement>} mediaElements\n     * @example\n     * const mediaElements = audioTrack.detach();\n     * mediaElements.forEach(mediaElement => mediaElement.remove());\n    */ /**\n     * Detach the {@link AudioTrack} from a previously attached HTMLMediaElement.\n     * @param {HTMLMediaElement} mediaElement - One of the HTMLMediaElements to\n     *   which the {@link AudioTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const videoElement = document.getElementById('my-video-element');\n     * audioTrack.detach(videoElement).remove();\n    */ /**\n     * Detach the {@link AudioTrack} from a previously attached HTMLMediaElement\n     *   specified by <code>document.querySelector</code>.\n     * @param {string} selector - The query selector of HTMLMediaElement to which\n     *    the {@link AudioTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * audioTrack.detach('#my-video-element').remove();\n     */\n    AudioTrack.prototype.detach = function () {\n        return _super.prototype.detach.apply(this, arguments);\n    };\n    return AudioTrack;\n}(MediaTrack));\n/**\n * The {@link AudioTrack} was disabled, i.e. \"muted\".\n * @param {AudioTrack} track - The {@link AudioTrack} that was disabled\n * @event AudioTrack#disabled\n */\n/**\n * The {@link AudioTrack} was enabled, i.e. \"unmuted\".\n * @param {AudioTrack} track - The {@link AudioTrack} that was enabled\n * @event AudioTrack#enabled\n */\n/**\n * The {@link AudioTrack} started. This means there is enough audio data to\n * begin playback.\n * @param {AudioTrack} track - The {@link AudioTrack} that started\n * @event AudioTrack#started\n */\nmodule.exports = AudioTrack;\n\n},{\"./mediatrack\":42}],28:[function(require,module,exports){\n/* globals MediaStreamTrackGenerator, MediaStreamTrackProcessor, TransformStream */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar DEFAULT_FRAME_RATE = require('../../util/constants').DEFAULT_FRAME_RATE;\nfunction captureVideoFramesSetInterval(videoEl, processVideoFrame) {\n    var _a = __read(videoEl.srcObject.getVideoTracks(), 1), track = _a[0];\n    var _b = track.getSettings().frameRate, frameRate = _b === void 0 ? DEFAULT_FRAME_RATE : _b;\n    var sampleInterval;\n    var readable = new ReadableStream({\n        start: function (controller) {\n            sampleInterval = setInterval(function () { return controller.enqueue(); }, 1000 / frameRate);\n        }\n    });\n    var transformer = new TransformStream({\n        transform: function () {\n            return processVideoFrame();\n        }\n    });\n    readable\n        .pipeThrough(transformer)\n        .pipeTo(new WritableStream())\n        .then(function () { });\n    return function () {\n        clearInterval(sampleInterval);\n    };\n}\nfunction captureVideoFramesInsertableStreams(videoEl, processVideoFrame, videoFrameType) {\n    var _a = __read(videoEl.srcObject.getVideoTracks(), 1), track = _a[0];\n    var readable = new MediaStreamTrackProcessor({ track: track }).readable;\n    var generator = new MediaStreamTrackGenerator({ kind: 'video' });\n    var shouldStop = false;\n    var transformer = new TransformStream({\n        transform: function (videoFrame, controller) {\n            var promise = videoFrameType === 'videoframe'\n                ? processVideoFrame(videoFrame)\n                : Promise.resolve(videoFrame.close())\n                    .then(processVideoFrame);\n            return promise.finally(function () {\n                if (shouldStop) {\n                    controller.terminate();\n                }\n            });\n        }\n    });\n    readable\n        .pipeThrough(transformer)\n        .pipeTo(generator.writable)\n        .then(function () { });\n    return function () {\n        shouldStop = true;\n    };\n}\nmodule.exports = typeof MediaStreamTrackGenerator === 'function' && typeof MediaStreamTrackProcessor === 'function'\n    ? captureVideoFramesInsertableStreams\n    : captureVideoFramesSetInterval;\n\n},{\"../../util/constants\":140}],29:[function(require,module,exports){\n'use strict';\nmodule.exports = {\n    LocalAudioTrack: require('./localaudiotrack'),\n    LocalVideoTrack: require('./localvideotrack'),\n    LocalDataTrack: require('./localdatatrack')\n};\n\n},{\"./localaudiotrack\":30,\"./localdatatrack\":31,\"./localvideotrack\":32}],30:[function(require,module,exports){\n// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalAudioTrackClass = require('../localaudiotrack');\nfunction LocalAudioTrack(mediaStreamTrack, options) {\n    var track = new LocalAudioTrackClass(mediaStreamTrack, options);\n    Object.setPrototypeOf(track, LocalAudioTrack.prototype);\n    return track;\n}\ninherits(LocalAudioTrack, LocalAudioTrackClass);\nmodule.exports = LocalAudioTrack;\n\n},{\"../../../vendor/inherits\":166,\"../localaudiotrack\":34}],31:[function(require,module,exports){\n// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalDataTrackClass = require('../localdatatrack');\nfunction LocalDataTrack(options) {\n    var track = new LocalDataTrackClass(options);\n    Object.setPrototypeOf(track, LocalDataTrack.prototype);\n    return track;\n}\ninherits(LocalDataTrack, LocalDataTrackClass);\nmodule.exports = LocalDataTrack;\n\n},{\"../../../vendor/inherits\":166,\"../localdatatrack\":36}],32:[function(require,module,exports){\n// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalVideoTrackClass = require('../localvideotrack');\nfunction LocalVideoTrack(mediaStreamTrack, options) {\n    var track = new LocalVideoTrackClass(mediaStreamTrack, options);\n    Object.setPrototypeOf(track, LocalVideoTrack.prototype);\n    return track;\n}\ninherits(LocalVideoTrack, LocalVideoTrackClass);\nmodule.exports = LocalVideoTrack;\n\n},{\"../../../vendor/inherits\":166,\"../localvideotrack\":40}],33:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('../../eventemitter');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, valueToJSON = _a.valueToJSON;\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar nInstances = 0;\n/**\n * A {@link Track} represents a stream of audio, video, or data.\n * @extends EventEmitter\n * @property {Track.Kind} kind - The {@link Track}'s kind\n * @property {string} name - The {@link Track}'s name\n */\nvar Track = /** @class */ (function (_super) {\n    __extends(Track, _super);\n    /**\n     * Construct a {@link Track}.\n     * @param {Track.ID} id - The {@link Track}'s ID\n     * @param {Track.Kind} kind - The {@link Track}'s kind\n     * @param {{ log: Log, name: ?string }} options\n     */\n    function Track(id, kind, options) {\n        var _this = this;\n        options = Object.assign({\n            name: id,\n            log: null,\n            logLevel: DEFAULT_LOG_LEVEL\n        }, options);\n        _this = _super.call(this) || this;\n        var name = String(options.name);\n        var logLevels = buildLogLevels(options.logLevel);\n        var log = options.log\n            ? options.log.createLog('media', _this)\n            : new Log('media', _this, logLevels, options.loggerName);\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: ++nInstances\n            },\n            _log: {\n                value: log\n            },\n            kind: {\n                enumerable: true,\n                value: kind\n            },\n            name: {\n                enumerable: true,\n                value: name\n            }\n        });\n        return _this;\n    }\n    Track.prototype.toJSON = function () {\n        return valueToJSON(this);\n    };\n    return Track;\n}(EventEmitter));\n/**\n * The {@link Track} ID is a string identifier for the {@link Track}.\n * @typedef {string} Track.ID\n */\n/**\n * The {@link Track} kind is either \"audio\", \"video\", or \"data\".\n * @typedef {string} Track.Kind\n */\n/**\n * The {@link Track}'s priority can be \"low\", \"standard\", or \"high\".\n * @typedef {string} Track.Priority\n */\n/**\n * The {@link Track} SID is a unique string identifier for the {@link Track}\n * that is published to a {@link Room}.\n * @typedef {string} Track.SID\n */\n/**\n * A {@link DataTrack} is a {@link LocalDataTrack} or {@link RemoteDataTrack}.\n * @typedef {LocalDataTrack|RemoteDataTrack} DataTrack\n */\n/**\n * A {@link LocalTrack} is a {@link LocalAudioTrack}, {@link LocalVideoTrack},\n * or {@link LocalDataTrack}.\n * @typedef {LocalAudioTrack|LocalVideoTrack|LocalDataTrack} LocalTrack\n */\n/**\n * {@link LocalTrack} options\n * @typedef {object} LocalTrackOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n * @property {string} [name] - The {@link LocalTrack}'s name; by default,\n *   it is set to the {@link LocalTrack}'s ID.\n */\n/**\n * A {@link RemoteTrack} is a {@link RemoteAudioTrack},\n * {@link RemoteVideoTrack}, or {@link RemoteDataTrack}.\n * @typedef {RemoteAudioTrack|RemoteVideoTrack|RemoteDataTrack} RemoteTrack\n */\nmodule.exports = Track;\n\n},{\"../../eventemitter\":10,\"../../util\":147,\"../../util/constants\":140,\"../../util/log\":151}],34:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar detectSilentAudio = require('../../util/detectsilentaudio');\nvar isIOSChrome = require('../../webrtc/util').isIOSChrome;\nvar AudioTrack = require('./audiotrack');\nvar mixinLocalMediaTrack = require('./localmediatrack');\nvar LocalMediaAudioTrack = mixinLocalMediaTrack(AudioTrack);\n/**\n * A {@link LocalAudioTrack} is an {@link AudioTrack} representing audio that\n * your {@link LocalParticipant} can publish to a {@link Room}. It can be\n * enabled and disabled with {@link LocalAudioTrack#enable} and\n * {@link LocalAudioTrack#disable} or stopped completely with\n * {@link LocalAudioTrack#stop}.\n * @extends AudioTrack\n * @property {Track.ID} id - The {@link LocalAudioTrack}'s ID\n * @property {boolean} isMuted - Whether or not the audio source has stopped sending samples to the\n *   {@link LocalAudioTrack}; This can happen when the microphone is taken over by another application,\n *   mainly on mobile devices; When this property toggles, then <code>muted</code> and <code>unmuted</code>\n *   events are fired appropriately\n * @property {boolean} isStopped - Whether or not the {@link LocalAudioTrack} is\n *   stopped\n * @property {NoiseCancellation?} noiseCancellation - When a LocalAudioTrack is created\n *   with {@link NoiseCancellationOptions}, this property provides interface\n *   to enable or disable the noise cancellation at runtime.\n * @emits LocalAudioTrack#disabled\n * @emits LocalAudioTrack#enabled\n * @emits LocalAudioTrack#muted\n * @emits LocalAudioTrack#started\n * @emits LocalAudioTrack#stopped\n * @emits LocalAudioTrack#unmuted\n */\nvar LocalAudioTrack = /** @class */ (function (_super) {\n    __extends(LocalAudioTrack, _super);\n    /**\n     * Construct a {@link LocalAudioTrack} from a MediaStreamTrack.\n     * @param {MediaStreamTrack} mediaStreamTrack - An audio MediaStreamTrack\n     * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n     */\n    function LocalAudioTrack(mediaStreamTrack, options) {\n        var _this = this;\n        var noiseCancellation = (options === null || options === void 0 ? void 0 : options.noiseCancellation) || null;\n        _this = _super.call(this, mediaStreamTrack, options) || this;\n        var log = _this._log;\n        var _a = mediaStreamTrack.label, defaultDeviceLabel = _a === void 0 ? '' : _a;\n        var _b = mediaStreamTrack.getSettings(), _c = _b.deviceId, defaultDeviceId = _c === void 0 ? '' : _c, _d = _b.groupId, defaultGroupId = _d === void 0 ? '' : _d;\n        Object.defineProperties(_this, {\n            _currentDefaultDeviceInfo: {\n                value: { deviceId: defaultDeviceId, groupId: defaultGroupId, label: defaultDeviceLabel },\n                writable: true\n            },\n            _enumerateDevices: {\n                value: typeof (options === null || options === void 0 ? void 0 : options.enumerateDevices) === 'function'\n                    ? options.enumerateDevices\n                    : navigator.mediaDevices.enumerateDevices\n            },\n            _defaultDeviceCaptureMode: {\n                value: (!isIOS() || !!noiseCancellation)\n                    && _this._isCreatedByCreateLocalTracks\n                    && typeof navigator === 'object'\n                    && typeof navigator.mediaDevices === 'object'\n                    && typeof navigator.mediaDevices.addEventListener === 'function'\n                    && (typeof (options === null || options === void 0 ? void 0 : options.enumerateDevices) === 'function' || typeof navigator.mediaDevices.enumerateDevices === 'function')\n                    ? (options === null || options === void 0 ? void 0 : options.defaultDeviceCaptureMode) || 'auto'\n                    : 'manual'\n            },\n            _onDeviceChange: {\n                value: function () {\n                    _this._enumerateDevices().then(function (deviceInfos) {\n                        // NOTE(mmalavalli): In Chrome, when the default device changes, and we restart the LocalAudioTrack with\n                        // device ID \"default\", it will not switch to the new default device unless all LocalAudioTracks capturing\n                        // from the old default device are stopped. So, we restart the LocalAudioTrack with the actual device ID of\n                        // the new default device instead.\n                        var defaultDeviceInfo = deviceInfos.find(function (_a) {\n                            var deviceId = _a.deviceId, kind = _a.kind;\n                            return kind === 'audioinput' && deviceId !== 'default';\n                        });\n                        if (defaultDeviceInfo && ['deviceId', 'groupId'].some(function (prop) {\n                            return defaultDeviceInfo[prop] !== _this._currentDefaultDeviceInfo[prop];\n                        })) {\n                            log.info('Default device changed, restarting the LocalAudioTrack');\n                            log.debug(\"Old default device: \\\"\".concat(_this._currentDefaultDeviceInfo.deviceId, \"\\\" => \\\"\").concat(_this._currentDefaultDeviceInfo.label, \"\\\"\"));\n                            log.debug(\"New default device: \\\"\".concat(defaultDeviceInfo.deviceId, \"\\\" => \\\"\").concat(defaultDeviceInfo.label, \"\\\"\"));\n                            _this._currentDefaultDeviceInfo = defaultDeviceInfo;\n                            _this._restartDefaultDevice().catch(function (error) { return log.warn(\"Failed to restart: \".concat(error.message)); });\n                        }\n                    }, function (error) {\n                        log.warn(\"Failed to run enumerateDevices(): \".concat(error.message));\n                    });\n                }\n            },\n            _restartOnDefaultDeviceChangeCleanup: {\n                value: null,\n                writable: true\n            },\n            noiseCancellation: {\n                enumerable: true,\n                value: noiseCancellation,\n                writable: false\n            },\n        });\n        log.debug('defaultDeviceCaptureMode:', _this._defaultDeviceCaptureMode);\n        _this._maybeRestartOnDefaultDeviceChange();\n        return _this;\n    }\n    LocalAudioTrack.prototype.toString = function () {\n        return \"[LocalAudioTrack #\".concat(this._instanceId, \": \").concat(this.id, \"]\");\n    };\n    LocalAudioTrack.prototype.attach = function (el) {\n        el = _super.prototype.attach.call(this, el);\n        el.muted = true;\n        return el;\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._end = function () {\n        return _super.prototype._end.apply(this, arguments);\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._maybeRestartOnDefaultDeviceChange = function () {\n        var _this = this;\n        var _a = this, constraints = _a._constraints, defaultDeviceCaptureMode = _a._defaultDeviceCaptureMode, log = _a._log;\n        var mediaStreamTrack = this.noiseCancellation ? this.noiseCancellation.sourceTrack : this.mediaStreamTrack;\n        var deviceId = mediaStreamTrack.getSettings().deviceId;\n        var isNotEqualToCapturedDeviceIdOrEqualToDefault = function (requestedDeviceId) {\n            return requestedDeviceId !== deviceId || requestedDeviceId === 'default';\n        };\n        var isCapturingFromDefaultDevice = (function checkIfCapturingFromDefaultDevice(deviceIdConstraint) {\n            if (deviceIdConstraint === void 0) { deviceIdConstraint = {}; }\n            if (typeof deviceIdConstraint === 'string') {\n                return isNotEqualToCapturedDeviceIdOrEqualToDefault(deviceIdConstraint);\n            }\n            else if (Array.isArray(deviceIdConstraint)) {\n                return deviceIdConstraint.every(isNotEqualToCapturedDeviceIdOrEqualToDefault);\n            }\n            else if (deviceIdConstraint.exact) {\n                return checkIfCapturingFromDefaultDevice(deviceIdConstraint.exact);\n            }\n            else if (deviceIdConstraint.ideal) {\n                return checkIfCapturingFromDefaultDevice(deviceIdConstraint.ideal);\n            }\n            return true;\n        }(constraints.deviceId));\n        if (defaultDeviceCaptureMode === 'auto' && isCapturingFromDefaultDevice) {\n            if (!this._restartOnDefaultDeviceChangeCleanup) {\n                log.info('LocalAudioTrack will be restarted if the default device changes');\n                navigator.mediaDevices.addEventListener('devicechange', this._onDeviceChange);\n                this._restartOnDefaultDeviceChangeCleanup = function () {\n                    log.info('Cleaning up the listener to restart the LocalAudioTrack if the default device changes');\n                    navigator.mediaDevices.removeEventListener('devicechange', _this._onDeviceChange);\n                    _this._restartOnDefaultDeviceChangeCleanup = null;\n                };\n            }\n        }\n        else {\n            log.info('LocalAudioTrack will NOT be restarted if the default device changes');\n            if (this._restartOnDefaultDeviceChangeCleanup) {\n                this._restartOnDefaultDeviceChangeCleanup();\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._reacquireTrack = function (constraints) {\n        var _this = this;\n        this._log.debug('_reacquireTrack: ', constraints);\n        if (this.noiseCancellation) {\n            return this.noiseCancellation.reacquireTrack(function () {\n                return _super.prototype._reacquireTrack.call(_this, constraints);\n            });\n        }\n        return _super.prototype._reacquireTrack.call(this, constraints);\n    };\n    /**\n     * @private\n     */\n    LocalAudioTrack.prototype._restartDefaultDevice = function () {\n        var _this = this;\n        var constraints = Object.assign({}, this._constraints);\n        var restartConstraints = Object.assign({}, constraints, { deviceId: this._currentDefaultDeviceInfo.deviceId });\n        return this.restart(restartConstraints).then(function () {\n            // NOTE(mmalavalli): Since we used the new default device's ID while restarting the LocalAudioTrack,\n            // we reset the constraints to the original constraints so that the default device detection logic in\n            // _maybeRestartOnDefaultDeviceChange() still works.\n            _this._constraints = constraints;\n            _this._maybeRestartOnDefaultDeviceChange();\n        });\n    };\n    /**\n     * NOTE(mmalavalli): On iOS 17 Chrome, a LocalAudioTrack with Krisp Noise Cancellation\n     * enabled that is restarted due to foregrounding the browser is silent for as-of-yet\n     * unknown reason. We work around this by discarding the Krisp MediaStreamTrack and using\n     * the source MediaStreamTrack. (VIDEO-13006)\n     * @private\n     */\n    LocalAudioTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {\n        var _this = this;\n        var _a = this, log = _a._log, noiseCancellation = _a.noiseCancellation;\n        var promise = _super.prototype._setMediaStreamTrack.call(this, mediaStreamTrack);\n        if (isIOSChrome() && !!noiseCancellation) {\n            log.debug('iOS Chrome detected, checking if the restarted Krisp audio is silent');\n            promise = promise.then(function () { return detectSilentAudio(_this._dummyEl); }).then(function (isSilent) {\n                log.debug(\"Krisp audio is \".concat(isSilent ? 'silent, using source audio' : 'not silent'));\n                return isSilent && noiseCancellation.disablePermanently().then(function () {\n                    return _super.prototype._setMediaStreamTrack.call(_this, noiseCancellation.sourceTrack);\n                });\n            });\n        }\n        return promise;\n    };\n    /**\n     * Disable the {@link LocalAudioTrack}. This is equivalent to muting the audio source.\n     * @returns {this}\n     * @fires LocalAudioTrack#disabled\n     */\n    LocalAudioTrack.prototype.disable = function () {\n        return _super.prototype.disable.apply(this, arguments);\n    };\n    /**\n     * Enable the {@link LocalAudioTrack}. This is equivalent to unmuting the audio source.\n     * @returns {this}\n     * @fires LocalAudioTrack#enabled\n    */ /**\n     * Enable or disable the {@link LocalAudioTrack}. This is equivalent to unmuting or muting\n     * the audio source respectively.\n     * @param {boolean} [enabled] - Specify false to disable the\n     *   {@link LocalAudioTrack}\n     * @returns {this}\n     * @fires LocalAudioTrack#disabled\n     * @fires LocalAudioTrack#enabled\n     */\n    LocalAudioTrack.prototype.enable = function () {\n        return _super.prototype.enable.apply(this, arguments);\n    };\n    /**\n     * Restart the {@link LocalAudioTrack}. This stops the existing MediaStreamTrack\n     * and creates a new MediaStreamTrack. If the {@link LocalAudioTrack} is being published\n     * to a {@link Room}, then all the {@link RemoteParticipant}s will start receiving media\n     * from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via\n     * the <code>mediaStreamTrack</code> property. If you want to listen to events on\n     * the MediaStreamTrack directly, please do so in the \"started\" event handler. Also,\n     * the {@link LocalAudioTrack}'s ID is no longer guaranteed to be the same as the\n     * underlying MediaStreamTrack's ID.\n     * @param {MediaTrackConstraints} [constraints] - The optional <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\" target=\"_blank\">MediaTrackConstraints</a>\n     *   for restarting the {@link LocalAudioTrack}; If not specified, then the current MediaTrackConstraints\n     *   will be used; If <code>{}</code> (empty object) is specified, then the default MediaTrackConstraints\n     *   will be used\n     * @returns {Promise<void>} Rejects with a TypeError if the {@link LocalAudioTrack} was not created\n     *   using an one of <code>createLocalAudioTrack</code>, <code>createLocalTracks</code> or <code>connect</code>;\n     *   Also rejects with the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Exceptions\" target=\"_blank\">DOMException</a>\n     *   raised by <code>getUserMedia</code> when it fails\n     * @fires LocalAudioTrack#stopped\n     * @fires LocalAudioTrack#started\n     * @example\n     * const { connect, createLocalAudioTrack } = require('twilio-video');\n     *\n     * // Create a LocalAudioTrack that captures audio from a USB microphone.\n     * createLocalAudioTrack({ deviceId: 'usb-mic-id' }).then(function(localAudioTrack) {\n     *   return connect('token', {\n     *     name: 'my-cool-room',\n     *     tracks: [localAudioTrack]\n     *   });\n     * }).then(function(room) {\n     *   // Restart the LocalAudioTrack to capture audio from the default microphone.\n     *   const localAudioTrack = Array.from(room.localParticipant.audioTracks.values())[0].track;\n     *   return localAudioTrack.restart({ deviceId: 'default-mic-id' });\n     * });\n     */\n    LocalAudioTrack.prototype.restart = function () {\n        return _super.prototype.restart.apply(this, arguments);\n    };\n    /**\n     * Calls stop on the underlying MediaStreamTrack. If you choose to stop a\n     * {@link LocalAudioTrack}, you should unpublish it after stopping.\n     * @returns {this}\n     * @fires LocalAudioTrack#stopped\n     */\n    LocalAudioTrack.prototype.stop = function () {\n        if (this.noiseCancellation) {\n            this.noiseCancellation.stop();\n        }\n        if (this._restartOnDefaultDeviceChangeCleanup) {\n            this._restartOnDefaultDeviceChangeCleanup();\n        }\n        return _super.prototype.stop.apply(this, arguments);\n    };\n    return LocalAudioTrack;\n}(LocalMediaAudioTrack));\n/**\n * The {@link LocalAudioTrack} was disabled, i.e. the audio source was muted by the user.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was\n *   disabled\n * @event LocalAudioTrack#disabled\n */\n/**\n * The {@link LocalAudioTrack} was enabled, i.e. the audio source was unmuted by the user.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was enabled\n * @event LocalAudioTrack#enabled\n */\n/**\n * The {@link LocalAudioTrack} was muted because the audio source stopped sending samples, most\n * likely due to another application taking said audio source, especially on mobile devices.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was muted\n * @event LocalAudioTrack#muted\n */\n/**\n * The {@link LocalAudioTrack} started. This means there is enough audio data to\n * begin playback.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that started\n * @event LocalAudioTrack#started\n */\n/**\n * The {@link LocalAudioTrack} stopped, either because {@link LocalAudioTrack#stop}\n * or {@link LocalAudioTrack#restart} was called or because the underlying\n * MediaStreamTrack ended.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that stopped\n * @event LocalAudioTrack#stopped\n */\n/**\n * The {@link LocalAudioTrack} was unmuted because the audio source resumed sending samples,\n * most likely due to the application that took over the said audio source has released it\n * back to the application, especially on mobile devices. This event is also fired when\n * {@link LocalAudioTrack#restart} is called on a muted {@link LocalAudioTrack} with a\n * new audio source.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was unmuted\n * @event LocalAudioTrack#unmuted\n */\nmodule.exports = LocalAudioTrack;\n\n},{\"../../util/browserdetection\":138,\"../../util/detectsilentaudio\":141,\"../../webrtc/util\":185,\"./audiotrack\":27,\"./localmediatrack\":38}],35:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalAudioTrackPublication} is a {@link LocalAudioTrack} that has\n * been published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"audio\"\n * @property {LocalAudioTrack} track - the {@link LocalAudioTrack}\n */\nvar LocalAudioTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalAudioTrackPublication, _super);\n    /**\n     * Construct a {@link LocalAudioTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalAudioTrack} track - the {@link LocalAudioTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *    that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n     */\n    function LocalAudioTrackPublication(signaling, track, unpublish, options) {\n        return _super.call(this, signaling, track, unpublish, options) || this;\n    }\n    LocalAudioTrackPublication.prototype.toString = function () {\n        return \"[LocalAudioTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return LocalAudioTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalAudioTrackPublication;\n\n},{\"./localtrackpublication\":39}],36:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar Track = require('./');\nvar DefaultDataTrackSender = require('../../data/sender');\n/**\n * A {@link LocalDataTrack} is a {@link Track} representing data that your\n * {@link LocalParticipant} can publish to a {@link Room}.\n * @extends Track\n * @property {Track.ID} id - The {@link LocalDataTrack}'s ID\n * @property {Track.Kind} kind - \"data\"\n * @property {?number} maxPacketLifeTime - If non-null, this represents a time\n *   limit (in milliseconds) during which the {@link LocalDataTrack} will send\n *   or re-send data if not acknowledged on the underlying RTCDataChannel(s).\n * @property {?number} maxRetransmits - If non-null, this represents the number\n *   of times the {@link LocalDataTrack} will resend data if not successfully\n *   delivered on the underlying RTCDataChannel(s).\n * @property {boolean} ordered - true if data on the {@link LocalDataTrack} is\n *   guaranteed to be sent in order.\n * @property {boolean} reliable - This is true if both\n *   <code>maxPacketLifeTime</code> and <code>maxRetransmits</code> are set to\n *   null. In other words, if this is true, there is no bound on packet lifetime\n *   or the number of times the {@link LocalDataTrack} will attempt to send\n *   data, ensuring \"reliable\" transmission.\n * @example\n * var Video = require('twilio-video');\n *\n * var localDataTrack = new Video.LocalDataTrack();\n * window.addEventListener('mousemove', function(event) {\n *   localDataTrack.send(JSON.stringify({\n *     x: e.clientX,\n *     y: e.clientY\n *   }));\n * });\n *\n * var token1 = getAccessToken();\n * Video.connect(token1, {\n *   name: 'my-cool-room',\n *   tracks: [localDataTrack]\n * });\n *\n * var token2 = getAccessToken();\n * Video.connect(token2, {\n *   name: 'my-cool-room',\n *   tracks: []\n * }).then(function(room) {\n *   room.on('trackSubscribed', function(track) {\n *     track.on('message', function(message) {\n *       console.log(JSON.parse(message)); // { x: <number>, y: <number> }\n *     });\n *   });\n * });\n */\nvar LocalDataTrack = /** @class */ (function (_super) {\n    __extends(LocalDataTrack, _super);\n    /**\n     * Construct a {@link LocalDataTrack}.\n     * @param {LocalDataTrackOptions} [options] - {@link LocalDataTrack} options\n     */\n    function LocalDataTrack(options) {\n        var _this = this;\n        options = Object.assign({\n            DataTrackSender: DefaultDataTrackSender,\n            maxPacketLifeTime: null,\n            maxRetransmits: null,\n            ordered: true\n        }, options);\n        var DataTrackSender = options.DataTrackSender;\n        var dataTrackSender = new DataTrackSender(options.maxPacketLifeTime, options.maxRetransmits, options.ordered);\n        _this = _super.call(this, dataTrackSender.id, 'data', options) || this;\n        Object.defineProperties(_this, {\n            _trackSender: {\n                value: dataTrackSender\n            },\n            id: {\n                enumerable: true,\n                value: dataTrackSender.id\n            },\n            maxPacketLifeTime: {\n                enumerable: true,\n                value: options.maxPacketLifeTime\n            },\n            maxRetransmits: {\n                enumerable: true,\n                value: options.maxRetransmits\n            },\n            ordered: {\n                enumerable: true,\n                value: options.ordered\n            },\n            reliable: {\n                enumerable: true,\n                value: options.maxPacketLifeTime === null\n                    && options.maxRetransmits === null\n            }\n        });\n        return _this;\n    }\n    /**\n     * Send a message over the {@link LocalDataTrack}.\n     * @param {string|Blob|ArrayBuffer|ArrayBufferView} data\n     * @returns {void}\n     */\n    LocalDataTrack.prototype.send = function (data) {\n        this._trackSender.send(data);\n    };\n    return LocalDataTrack;\n}(Track));\n/**\n * {@link LocalDataTrack} options\n * @typedef {LocalTrackOptions} LocalDataTrackOptions\n * @property {?number} [maxPacketLifeTime=null] - Set this to limit the time\n *   (in milliseconds) during which the LocalDataTrack will send or re-send data\n *   if not successfully delivered on the underlying RTCDataChannel(s). It is an\n *   error to specify both this and <code>maxRetransmits</code>.\n * @property {?number} [maxRetransmits=null] - Set this to limit the number of\n *   times the {@link LocalDataTrack} will send or re-send data if not\n *   acknowledged on the underlying RTCDataChannel(s). It is an error to specify\n *   both this and <code>maxPacketLifeTime</code>.\n * @property {boolean} [ordered=true] - Set this to false to allow data on the\n *   LocalDataTrack to be sent out-of-order.\n */\nmodule.exports = LocalDataTrack;\n\n},{\"../../data/sender\":6,\"./\":33}],37:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalDataTrackPublication} is a {@link LocalDataTrack} that has been\n * published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"data\"\n * @property {LocalDataTrack} track - the {@link LocalDataTrack}\n */\nvar LocalDataTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalDataTrackPublication, _super);\n    /**\n     * Construct a {@link LocalDataTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalDataTrack} track - the {@link LocalDataTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *    that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n     */\n    function LocalDataTrackPublication(signaling, track, unpublish, options) {\n        return _super.call(this, signaling, track, unpublish, options) || this;\n    }\n    LocalDataTrackPublication.prototype.toString = function () {\n        return \"[LocalDataTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return LocalDataTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalDataTrackPublication;\n\n},{\"./localtrackpublication\":39}],38:[function(require,module,exports){\n/* eslint new-cap:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar getUserMedia = require('../../webrtc').getUserMedia;\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar _a = require('../../util'), capitalize = _a.capitalize, defer = _a.defer, waitForSometime = _a.waitForSometime, waitForEvent = _a.waitForEvent;\nvar ILLEGAL_INVOKE = require('../../util/constants').typeErrors.ILLEGAL_INVOKE;\nvar detectSilentAudio = require('../../util/detectsilentaudio');\nvar detectSilentVideo = require('../../util/detectsilentvideo');\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nvar localMediaRestartDeferreds = require('../../util/localmediarestartdeferreds');\nvar gUMSilentTrackWorkaround = require('../../webaudio/workaround180748');\nvar MediaTrackSender = require('./sender');\nfunction mixinLocalMediaTrack(AudioOrVideoTrack) {\n    /**\n     * A {@link LocalMediaTrack} represents audio or video that your\n     * {@link LocalParticipant} is sending to a {@link Room}. As such, it can be\n     * enabled and disabled with {@link LocalMediaTrack#enable} and\n     * {@link LocalMediaTrack#disable} or stopped completely with\n     * {@link LocalMediaTrack#stop}.\n     * @emits LocalMediaTrack#muted\n     * @emits LocalMediaTrack#stopped\n     * @emits LocalMediaTrack#unmuted\n     */\n    return /** @class */ (function (_super) {\n        __extends(LocalMediaTrack, _super);\n        /**\n         * Construct a {@link LocalMediaTrack} from a MediaStreamTrack.\n         * @param {MediaStreamTrack} mediaStreamTrack - The underlying MediaStreamTrack\n         * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n         */\n        function LocalMediaTrack(mediaStreamTrack, options) {\n            var _this = this;\n            var workaroundWebKitBug1208516 = isIOS()\n                && typeof document === 'object'\n                && typeof document.addEventListener === 'function'\n                && typeof document.visibilityState === 'string';\n            options = Object.assign({\n                getUserMedia: getUserMedia,\n                isCreatedByCreateLocalTracks: false,\n                workaroundWebKitBug1208516: workaroundWebKitBug1208516,\n                gUMSilentTrackWorkaround: gUMSilentTrackWorkaround\n            }, options);\n            var mediaTrackSender = new MediaTrackSender(mediaStreamTrack);\n            var kind = mediaTrackSender.kind;\n            _this = _super.call(this, mediaTrackSender, options) || this;\n            Object.defineProperties(_this, {\n                _constraints: {\n                    value: typeof options[kind] === 'object'\n                        ? options[kind]\n                        : {},\n                    writable: true\n                },\n                _getUserMedia: {\n                    value: options.getUserMedia\n                },\n                _gUMSilentTrackWorkaround: {\n                    value: options.gUMSilentTrackWorkaround\n                },\n                _eventsToReemitters: {\n                    value: new Map([\n                        ['muted', function () { return _this.emit('muted', _this); }],\n                        ['unmuted', function () { return _this.emit('unmuted', _this); }]\n                    ])\n                },\n                _workaroundWebKitBug1208516: {\n                    value: options.workaroundWebKitBug1208516\n                },\n                _workaroundWebKitBug1208516Cleanup: {\n                    value: null,\n                    writable: true\n                },\n                _didCallEnd: {\n                    value: false,\n                    writable: true\n                },\n                _isCreatedByCreateLocalTracks: {\n                    value: options.isCreatedByCreateLocalTracks\n                },\n                _noiseCancellation: {\n                    value: options.noiseCancellation || null\n                },\n                _trackSender: {\n                    value: mediaTrackSender\n                },\n                id: {\n                    enumerable: true,\n                    value: mediaTrackSender.id\n                },\n                isEnabled: {\n                    enumerable: true,\n                    get: function () {\n                        return mediaTrackSender.enabled;\n                    }\n                },\n                isMuted: {\n                    enumerable: true,\n                    get: function () {\n                        return mediaTrackSender.muted;\n                    }\n                },\n                isStopped: {\n                    enumerable: true,\n                    get: function () {\n                        return mediaTrackSender.readyState === 'ended';\n                    }\n                }\n            });\n            // NOTE(mpatwardhan): As a workaround for WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=208516,\n            // upon foregrounding, re-acquire new MediaStreamTrack if the existing one is ended or muted.\n            if (_this._workaroundWebKitBug1208516) {\n                _this._workaroundWebKitBug1208516Cleanup = restartWhenInadvertentlyStopped(_this);\n            }\n            _this._reemitTrackSenderEvents();\n            return _this;\n        }\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._end = function () {\n            var _this = this;\n            if (this._didCallEnd) {\n                return;\n            }\n            _super.prototype._end.call(this);\n            this._didCallEnd = true;\n            this._eventsToReemitters.forEach(function (reemitter, event) { return _this._trackSender.removeListener(event, reemitter); });\n            this.emit('stopped', this);\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._initialize = function () {\n            if (this._didCallEnd) {\n                this._didCallEnd = false;\n            }\n            if (this._eventsToReemitters) {\n                this._reemitTrackSenderEvents();\n            }\n            _super.prototype._initialize.call(this);\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._reacquireTrack = function (constraints) {\n            var _a;\n            var _b = this, getUserMedia = _b._getUserMedia, gUMSilentTrackWorkaround = _b._gUMSilentTrackWorkaround, log = _b._log, kind = _b.mediaStreamTrack.kind;\n            log.info('Re-acquiring the MediaStreamTrack');\n            log.debug('Constraints:', constraints);\n            var gUMConstraints = Object.assign({\n                audio: false,\n                video: false\n            }, (_a = {}, _a[kind] = constraints, _a));\n            var gUMPromise = this._workaroundWebKitBug1208516Cleanup\n                ? gUMSilentTrackWorkaround(log, getUserMedia, gUMConstraints)\n                : getUserMedia(gUMConstraints);\n            return gUMPromise.then(function (mediaStream) {\n                return mediaStream.getTracks()[0];\n            });\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._reemitTrackSenderEvents = function () {\n            var _this = this;\n            this._eventsToReemitters.forEach(function (reemitter, event) { return _this._trackSender.on(event, reemitter); });\n            this._trackSender.dequeue('muted');\n            this._trackSender.dequeue('unmuted');\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._restart = function (constraints) {\n            var _this = this;\n            var log = this._log;\n            constraints = constraints || this._constraints;\n            // NOTE(mmalavalli): If we try and restart a silent MediaStreamTrack\n            // without stopping it first, then a NotReadableError is raised in case of\n            // video, or the restarted audio will still be silent. Hence, we stop the\n            // MediaStreamTrack here.\n            this._stop();\n            return this._reacquireTrack(constraints).catch(function (error) {\n                log.error('Failed to re-acquire the MediaStreamTrack:', { error: error, constraints: constraints });\n                throw error;\n            }).then(function (newMediaStreamTrack) {\n                log.info('Re-acquired the MediaStreamTrack');\n                log.debug('MediaStreamTrack:', newMediaStreamTrack);\n                _this._constraints = Object.assign({}, constraints);\n                return _this._setMediaStreamTrack(newMediaStreamTrack);\n            });\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {\n            var _this = this;\n            // NOTE(mpatwardhan): Preserve the value of the \"enabled\" flag.\n            mediaStreamTrack.enabled = this.mediaStreamTrack.enabled;\n            // NOTE(mmalavalli): Stop the current MediaStreamTrack. If not already\n            // stopped, this should fire a \"stopped\" event.\n            this._stop();\n            // NOTE(csantos): If there's an unprocessedTrack, this means RTCRtpSender has\n            // the processedTrack already set, we don't want to replace that.\n            return (this._unprocessedTrack ? Promise.resolve().then(function () {\n                _this._unprocessedTrack = mediaStreamTrack;\n            }) : this._trackSender.setMediaStreamTrack(mediaStreamTrack).catch(function (error) {\n                _this._log.warn('setMediaStreamTrack failed:', { error: error, mediaStreamTrack: mediaStreamTrack });\n            })).then(function () {\n                _this._initialize();\n                _this._getAllAttachedElements().forEach(function (el) { return _this._attach(el); });\n            });\n        };\n        /**\n         * @private\n         */\n        LocalMediaTrack.prototype._stop = function () {\n            this.mediaStreamTrack.stop();\n            this._end();\n            return this;\n        };\n        LocalMediaTrack.prototype.enable = function (enabled) {\n            enabled = typeof enabled === 'boolean' ? enabled : true;\n            if (enabled !== this.mediaStreamTrack.enabled) {\n                this._log.info(\"\".concat(enabled ? 'En' : 'Dis', \"abling\"));\n                this.mediaStreamTrack.enabled = enabled;\n                this.emit(enabled ? 'enabled' : 'disabled', this);\n            }\n            return this;\n        };\n        LocalMediaTrack.prototype.disable = function () {\n            return this.enable(false);\n        };\n        LocalMediaTrack.prototype.restart = function (constraints) {\n            var _this = this;\n            var kind = this.kind;\n            if (!this._isCreatedByCreateLocalTracks) {\n                return Promise.reject(ILLEGAL_INVOKE('restart', 'can only be called on a'\n                    + \" Local\".concat(capitalize(kind), \"Track that is created using createLocalTracks\")\n                    + \" or createLocal\".concat(capitalize(kind), \"Track.\")));\n            }\n            if (this._workaroundWebKitBug1208516Cleanup) {\n                this._workaroundWebKitBug1208516Cleanup();\n                this._workaroundWebKitBug1208516Cleanup = null;\n            }\n            var promise = this._restart(constraints);\n            if (this._workaroundWebKitBug1208516) {\n                promise = promise.finally(function () {\n                    _this._workaroundWebKitBug1208516Cleanup = restartWhenInadvertentlyStopped(_this);\n                });\n            }\n            return promise;\n        };\n        LocalMediaTrack.prototype.stop = function () {\n            this._log.info('Stopping');\n            if (this._workaroundWebKitBug1208516Cleanup) {\n                this._workaroundWebKitBug1208516Cleanup();\n                this._workaroundWebKitBug1208516Cleanup = null;\n            }\n            return this._stop();\n        };\n        return LocalMediaTrack;\n    }(AudioOrVideoTrack));\n}\n/**\n * Restart the given {@link LocalMediaTrack} if it has been inadvertently stopped.\n * @private\n * @param {LocalAudioTrack|LocalVideoTrack} localMediaTrack\n * @returns {function} Clean up listeners attached by the workaround\n */\nfunction restartWhenInadvertentlyStopped(localMediaTrack) {\n    var log = localMediaTrack._log, kind = localMediaTrack.kind, noiseCancellation = localMediaTrack._noiseCancellation;\n    var detectSilence = {\n        audio: detectSilentAudio,\n        video: detectSilentVideo\n    }[kind];\n    var getSourceMediaStreamTrack = function () { return noiseCancellation\n        ? noiseCancellation.sourceTrack\n        : localMediaTrack.mediaStreamTrack; };\n    var el = localMediaTrack._dummyEl;\n    var mediaStreamTrack = getSourceMediaStreamTrack();\n    var trackChangeInProgress = null;\n    function checkSilence() {\n        // The dummy element is paused, so play it and then detect silence.\n        return el.play().then(function () { return detectSilence(el); }).then(function (isSilent) {\n            if (isSilent) {\n                log.warn('Silence detected');\n            }\n            else {\n                log.info('Non-silence detected');\n            }\n            return isSilent;\n        }).catch(function (error) {\n            log.warn('Failed to detect silence:', error);\n        }).finally(function () {\n            // Pause the dummy element again, if there is no processed track.\n            if (!localMediaTrack.processedTrack) {\n                el.pause();\n            }\n        });\n    }\n    function shouldReacquireTrack() {\n        var _workaroundWebKitBug1208516Cleanup = localMediaTrack._workaroundWebKitBug1208516Cleanup, isStopped = localMediaTrack.isStopped;\n        var isInadvertentlyStopped = isStopped && !!_workaroundWebKitBug1208516Cleanup;\n        var muted = getSourceMediaStreamTrack().muted;\n        // NOTE(mmalavalli): Restart the LocalMediaTrack if:\n        // 1. The app is foregrounded, and\n        // 2. A restart is not already in progress, and\n        // 3. The LocalMediaTrack is either muted, inadvertently stopped or silent\n        return Promise.resolve().then(function () {\n            return document.visibilityState === 'visible'\n                && !trackChangeInProgress\n                && (muted || isInadvertentlyStopped || checkSilence());\n        });\n    }\n    function maybeRestart() {\n        return Promise.race([\n            waitForEvent(mediaStreamTrack, 'unmute'),\n            waitForSometime(50)\n        ]).then(function () { return shouldReacquireTrack(); }).then(function (shouldReacquire) {\n            if (shouldReacquire && !trackChangeInProgress) {\n                trackChangeInProgress = defer();\n                localMediaTrack._restart().finally(function () {\n                    el = localMediaTrack._dummyEl;\n                    removeMediaStreamTrackListeners();\n                    mediaStreamTrack = getSourceMediaStreamTrack();\n                    addMediaStreamTrackListeners();\n                    trackChangeInProgress.resolve();\n                    trackChangeInProgress = null;\n                }).catch(function (error) {\n                    log.error('failed to restart track: ', error);\n                });\n            }\n            // NOTE(mmalavalli): If the MediaStreamTrack ends before the DOM is visible,\n            // then this makes sure that visibility callback for phase 2 is called only\n            // after the MediaStreamTrack is re-acquired.\n            var promise = (trackChangeInProgress && trackChangeInProgress.promise) || Promise.resolve();\n            return promise.finally(function () { return localMediaRestartDeferreds.resolveDeferred(kind); });\n        }).catch(function (ex) {\n            log.error(\"error in maybeRestart: \".concat(ex.message));\n        });\n    }\n    function onMute() {\n        var log = localMediaTrack._log, kind = localMediaTrack.kind;\n        log.info('Muted');\n        log.debug('LocalMediaTrack:', localMediaTrack);\n        // NOTE(mmalavalli): When a LocalMediaTrack is muted without the app being\n        // backgrounded, and the inadvertently paused elements are played before it\n        // is restarted, it never gets unmuted due to the WebKit Bug 213853. Hence,\n        // setting this Deferred will make sure that the inadvertently paused elements\n        // are played only after the LocalMediaTrack is unmuted.\n        //\n        // Bug: https://bugs.webkit.org/show_bug.cgi?id=213853\n        //\n        localMediaRestartDeferreds.startDeferred(kind);\n    }\n    function addMediaStreamTrackListeners() {\n        if (mediaStreamTrack.addEventListener) {\n            mediaStreamTrack.addEventListener('ended', maybeRestart);\n            mediaStreamTrack.addEventListener('mute', onMute);\n            mediaStreamTrack.addEventListener('unmute', maybeRestart);\n        }\n        else {\n            mediaStreamTrack.onended = maybeRestart;\n            mediaStreamTrack.onmute = onMute;\n            mediaStreamTrack.onunmute = maybeRestart;\n        }\n    }\n    function removeMediaStreamTrackListeners() {\n        if (mediaStreamTrack.removeEventListener) {\n            mediaStreamTrack.removeEventListener('ended', maybeRestart);\n            mediaStreamTrack.removeEventListener('mute', onMute);\n            mediaStreamTrack.removeEventListener('unmute', maybeRestart);\n        }\n        else {\n            mediaStreamTrack.onended = null;\n            mediaStreamTrack.onmute = null;\n            mediaStreamTrack.onunmute = null;\n        }\n    }\n    // NOTE(mpatwardhan): listen for document visibility callback on phase 1.\n    // this ensures that we acquire media tracks before RemoteMediaTrack\n    // tries to `play` them (in phase 2). This order is important because\n    // play can fail on safari if audio is not being captured.\n    var onVisibilityChange = function (isVisible) {\n        return isVisible ? maybeRestart() : false;\n    };\n    documentVisibilityMonitor.onVisibilityChange(1, onVisibilityChange);\n    addMediaStreamTrackListeners();\n    return function () {\n        documentVisibilityMonitor.offVisibilityChange(1, onVisibilityChange);\n        removeMediaStreamTrackListeners();\n    };\n}\nmodule.exports = mixinLocalMediaTrack;\n\n},{\"../../util\":147,\"../../util/browserdetection\":138,\"../../util/constants\":140,\"../../util/detectsilentaudio\":141,\"../../util/detectsilentvideo\":142,\"../../util/documentvisibilitymonitor.js\":143,\"../../util/localmediarestartdeferreds\":150,\"../../webaudio/workaround180748\":170,\"../../webrtc\":173,\"./sender\":53}],39:[function(require,module,exports){\n/* eslint new-cap:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar TrackPublication = require('./trackpublication');\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\n/**\n * A {@link LocalTrackPublication} is a {@link LocalTrack} that has been\n * published to a {@link Room}.\n * @extends TrackPublication\n * @property {boolean} isTrackEnabled - whether the published {@link LocalTrack}\n *   is enabled\n * @property {Track.Kind} kind - kind of the published {@link LocalTrack}\n * @property {Track.Priority} priority - the publish priority of the {@link LocalTrack}\n * @property {LocalTrack} track - the {@link LocalTrack}\n * @emits LocalTrackPublication#warning\n * @emits LocalTrackPublication#warningsCleared\n */\nvar LocalTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalTrackPublication, _super);\n    /**\n     * Construct a {@link LocalTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalTrack} track - The {@link LocalTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *   that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication}\n     *   options\n     */\n    function LocalTrackPublication(signaling, track, unpublish, options) {\n        var _this = _super.call(this, track.name, signaling.sid, options) || this;\n        Object.defineProperties(_this, {\n            _reemitSignalingEvent: {\n                value: function () {\n                    var args = [];\n                    for (var _i = 0; _i < arguments.length; _i++) {\n                        args[_i] = arguments[_i];\n                    }\n                    return _this.emit.apply(_this, __spreadArray([args && args.length ? 'warning' : 'warningsCleared'], __read(args), false));\n                }\n            },\n            _reemitTrackEvent: {\n                value: function () { return _this.emit(_this.isTrackEnabled\n                    ? 'trackEnabled'\n                    : 'trackDisabled'); }\n            },\n            _signaling: {\n                value: signaling\n            },\n            _unpublish: {\n                value: unpublish\n            },\n            isTrackEnabled: {\n                enumerable: true,\n                get: function () {\n                    return this.track.kind === 'data' ? true : this.track.isEnabled;\n                }\n            },\n            kind: {\n                enumerable: true,\n                value: track.kind\n            },\n            priority: {\n                enumerable: true,\n                get: function () {\n                    return signaling.updatedPriority;\n                }\n            },\n            track: {\n                enumerable: true,\n                value: track\n            }\n        });\n        ['disabled', 'enabled'].forEach(function (name) {\n            return track.on(name, _this._reemitTrackEvent);\n        });\n        ['warning', 'warningsCleared'].forEach(function (name) {\n            return signaling.on(name, _this._reemitSignalingEvent);\n        });\n        return _this;\n    }\n    LocalTrackPublication.prototype.toString = function () {\n        return \"[LocalTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    /**\n     * Update the {@link Track.Priority} of the published {@link LocalTrack}.\n     * @param {Track.Priority} priority - the new {@link Track.priority}\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    LocalTrackPublication.prototype.setPriority = function (priority) {\n        var priorityValues = Object.values(trackPriority);\n        if (!priorityValues.includes(priority)) {\n            throw E.INVALID_VALUE('priority', priorityValues);\n        }\n        this._signaling.setPriority(priority);\n        return this;\n    };\n    /**\n     * Unpublish a {@link LocalTrackPublication}. This means that the media\n     * from this {@link LocalTrackPublication} is no longer available to the\n     * {@link Room}'s {@link RemoteParticipant}s.\n     * @returns {this}\n     */\n    LocalTrackPublication.prototype.unpublish = function () {\n        var _this = this;\n        ['disabled', 'enabled'].forEach(function (name) {\n            return _this.track.removeListener(name, _this._reemitTrackEvent);\n        });\n        ['warning', 'warningsCleared'].forEach(function (name) {\n            return _this._signaling.removeListener(name, _this._reemitSignalingEvent);\n        });\n        this._unpublish(this);\n        return this;\n    };\n    return LocalTrackPublication;\n}(TrackPublication));\n/**\n * The published {@link LocalTrack} encountered a warning.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @event LocalTrackPublication#warning\n * @param {string} name - The warning that was raised.\n */\n/**\n * The published {@link LocalTrack} cleared all warnings.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @event LocalTrackPublication#warningsCleared\n */\nmodule.exports = LocalTrackPublication;\n\n},{\"../../util/constants\":140,\"./trackpublication\":54}],40:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar detectSilentVideo = require('../../util/detectsilentvideo');\nvar mixinLocalMediaTrack = require('./localmediatrack');\nvar VideoTrack = require('./videotrack');\nvar LocalMediaVideoTrack = mixinLocalMediaTrack(VideoTrack);\n/**\n * A {@link LocalVideoTrack} is a {@link VideoTrack} representing video that\n * your {@link LocalParticipant} can publish to a {@link Room}. It can be\n * enabled and disabled with {@link LocalVideoTrack#enable} and\n * {@link LocalVideoTrack#disable} or stopped completely with\n * {@link LocalVideoTrack#stop}.\n * @extends VideoTrack\n * @property {Track.ID} id - The {@link LocalVideoTrack}'s ID\n * @property {boolean} isMuted - Whether or not the video source has stopped sending frames to the\n *   {@link LocalVideoTrack}; This can happen when the camera is taken over by another application,\n *   mainly on mobile devices; When this property toggles, then <code>muted</code> and <code>unmuted</code>\n *   events are fired appropriately\n * @property {boolean} isStopped - Whether or not the {@link LocalVideoTrack} is\n *   stopped\n * @emits LocalVideoTrack#disabled\n * @emits LocalVideoTrack#enabled\n * @emits LocalVideoTrack#muted\n * @emits LocalVideoTrack#started\n * @emits LocalVideoTrack#stopped\n * @emits LocalVideoTrack#unmuted\n */\nvar LocalVideoTrack = /** @class */ (function (_super) {\n    __extends(LocalVideoTrack, _super);\n    /**\n     * Construct a {@link LocalVideoTrack} from a MediaStreamTrack.\n     * @param {MediaStreamTrack} mediaStreamTrack - The underlying MediaStreamTrack\n     * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n     */\n    function LocalVideoTrack(mediaStreamTrack, options) {\n        var _this = this;\n        options = Object.assign({\n            workaroundSilentLocalVideo: isIOS()\n                && typeof document !== 'undefined'\n                && typeof document.createElement === 'function'\n        }, options);\n        _this = _super.call(this, mediaStreamTrack, options) || this;\n        Object.defineProperties(_this, {\n            _workaroundSilentLocalVideo: {\n                value: options.workaroundSilentLocalVideo\n                    ? workaroundSilentLocalVideo\n                    : null\n            },\n            _workaroundSilentLocalVideoCleanup: {\n                value: null,\n                writable: true\n            },\n            _pipIntersectionObserver: {\n                value: null,\n                writable: true\n            }\n        });\n        // NOTE(mmalavalli): In iOS Safari, we work around a bug where local video\n        // MediaStreamTracks are silent (even though they are enabled, live and unmuted)\n        // after accepting/rejecting a phone call.\n        if (_this._workaroundSilentLocalVideo) {\n            _this._workaroundSilentLocalVideoCleanup = _this._workaroundSilentLocalVideo(_this, document);\n        }\n        return _this;\n    }\n    LocalVideoTrack.prototype.toString = function () {\n        return \"[LocalVideoTrack #\".concat(this._instanceId, \": \").concat(this.id, \"]\");\n    };\n    /**\n     * Handle document PiP enter event - set up intersection observer for PiP-specific visibility tracking\n     *\n     * NOTE(lrivas): This is only created if we are in document PiP mode and should be considered deprecated\n     * if Chrome's native PiP fixes the issue in the future.\n     * @private\n     */\n    LocalVideoTrack.prototype._onDocumentPipEnter = function () {\n        this._log.debug('LocalVideoTrack: Setting up PiP intersection observer');\n        this._setupPipIntersectionObserver();\n    };\n    /**\n     * Handle document PiP exit event - clean up intersection observer\n     * NOTE(lrivas): This is only created if we are in document PiP mode and should be considered deprecated\n     * if Chrome's native PiP fixes the issue in the future.\n     * @private\n     */\n    LocalVideoTrack.prototype._onDocumentPipExit = function () {\n        this._log.debug('LocalVideoTrack: Cleaning up PiP intersection observer');\n        this._cleanupPipIntersectionObserver();\n    };\n    /**\n     * Set up an IntersectionObserver to track visibility of elements attached in document PiP.\n     * This ensures that videos in PiP play when visible.\n     *\n     * NOTE(lrivas): This is only created if we are in document PiP mode and should be considered deprecated\n     * if Chrome's native PiP fixes the issue in the future.\n     * @private\n     */\n    LocalVideoTrack.prototype._setupPipIntersectionObserver = function () {\n        var _this = this;\n        if (!this._pipIntersectionObserver && this._documentPipWindow) {\n            this._log.debug('LocalVideoTrack: Creating PiP intersection observer');\n            this._pipIntersectionObserver = new IntersectionObserver(function (entries) {\n                var hasVisibleElements = entries.some(function (entry) { return entry.isIntersecting; });\n                if (hasVisibleElements) {\n                    _this._log.debug('LocalVideoTrack: Element visible in PiP, ensuring videos are playing');\n                    VideoTrack._ensureDocumentPipVideosPlaying(_this);\n                }\n            }, { threshold: 0.25 });\n            this._attachments.forEach(function (el) {\n                _this._log.debug('LocalVideoTrack: Observing element for PiP visibility');\n                _this._pipIntersectionObserver.observe(el);\n            });\n        }\n    };\n    /**\n     * Clean up PiP-specific intersection observer\n     *\n     * NOTE(lrivas): This is only created if we are in document PiP mode and should be considered deprecated\n     * if Chrome's native PiP fixes the issue in the future.\n     * @private\n     */\n    LocalVideoTrack.prototype._cleanupPipIntersectionObserver = function () {\n        if (this._pipIntersectionObserver) {\n            this._log.debug('LocalVideoTrack: Disconnecting PiP intersection observer');\n            this._pipIntersectionObserver.disconnect();\n            this._pipIntersectionObserver = null;\n        }\n    };\n    /**\n     * Attach the {@link LocalVideoTrack} to an HTMLMediaElement.\n     * @returns {HTMLMediaElement} mediaElement\n     */\n    LocalVideoTrack.prototype.attach = function () {\n        var result = _super.prototype.attach.apply(this, arguments);\n        // If we're in document PiP, new elements should be observed for visibility\n        if (this._pipIntersectionObserver) {\n            this._log.debug('LocalVideoTrack: Observing newly attached element for PiP visibility');\n            this._pipIntersectionObserver.observe(result);\n        }\n        return result;\n    };\n    /**\n     * Detach the {@link LocalVideoTrack} from HTMLMediaElement(s).\n     * @returns {HTMLMediaElement|Array<HTMLMediaElement>} mediaElement(s)\n     */\n    LocalVideoTrack.prototype.detach = function () {\n        var _this = this;\n        var result = _super.prototype.detach.apply(this, arguments);\n        var elements = Array.isArray(result) ? result : [result];\n        // Stop observing detached elements if we're in document PiP\n        if (this._pipIntersectionObserver) {\n            elements.forEach(function (el) {\n                _this._log.debug('LocalVideoTrack: Unobserving detached element from PiP visibility');\n                _this._pipIntersectionObserver.unobserve(el);\n            });\n        }\n        return result;\n    };\n    /**\n     * @private\n     */\n    LocalVideoTrack.prototype._checkIfCanCaptureFrames = function () {\n        return _super.prototype._checkIfCanCaptureFrames.call(this, this._trackSender.isPublishing);\n    };\n    /**\n     * @private\n     */\n    LocalVideoTrack.prototype._end = function () {\n        return _super.prototype._end.apply(this, arguments);\n    };\n    /**\n     * @param {boolean} useProcessed - Whether to use the processed track or the unprocessed track.\n     * @returns {Promise<void>}\n     * @private\n     */\n    LocalVideoTrack.prototype._setSenderMediaStreamTrack = function (useProcessed) {\n        var _this = this;\n        var unprocessedTrack = this.mediaStreamTrack;\n        var mediaStreamTrack = useProcessed ? this.processedTrack : unprocessedTrack;\n        return this._trackSender.setMediaStreamTrack(mediaStreamTrack)\n            .catch(function (error) { return _this._log.warn('setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender', { error: error, mediaStreamTrack: mediaStreamTrack }); })\n            .then(function () {\n            _this._unprocessedTrack = useProcessed ? unprocessedTrack : null;\n        });\n    };\n    /**\n     * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n     * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n     * localVideoTrack.addProcessor(new GrayScaleProcessor(100));\n     */\n    LocalVideoTrack.prototype.addProcessor = function () {\n        this._log.debug('Adding VideoProcessor to the LocalVideoTrack');\n        var result = _super.prototype.addProcessor.apply(this, arguments);\n        if (!this.processedTrack) {\n            return this._log.warn('Unable to add a VideoProcessor to the LocalVideoTrack');\n        }\n        this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the processed MediaStreamTrack', this.processedTrack);\n        this._setSenderMediaStreamTrack(true);\n        return result;\n    };\n    /**\n     * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n     * const grayScaleProcessor = new GrayScaleProcessor(100);\n     * localVideoTrack.addProcessor(grayScaleProcessor);\n     *\n     * document.getElementById('remove-button').onclick = () => localVideoTrack.removeProcessor(grayScaleProcessor);\n     */\n    LocalVideoTrack.prototype.removeProcessor = function () {\n        var _this = this;\n        this._log.debug('Removing VideoProcessor from the LocalVideoTrack');\n        var result = _super.prototype.removeProcessor.apply(this, arguments);\n        this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the original MediaStreamTrack');\n        this._setSenderMediaStreamTrack()\n            .then(function () { return _this._updateElementsMediaStreamTrack(); });\n        return result;\n    };\n    /**\n     * Disable the {@link LocalVideoTrack}. This is equivalent to pausing a video source.\n     * If a {@link VideoProcessor} is added, then <code>processedTrack</code> is also disabled.\n     * @returns {this}\n     * @fires VideoTrack#disabled\n     */\n    LocalVideoTrack.prototype.disable = function () {\n        var result = _super.prototype.disable.apply(this, arguments);\n        if (this.processedTrack) {\n            this.processedTrack.enabled = false;\n        }\n        return result;\n    };\n    /**\n     * Enable the {@link LocalVideoTrack}. This is equivalent to unpausing the video source.\n     * If a {@link VideoProcessor} is added, then <code>processedTrack</code> is also enabled.\n     * @returns {this}\n     * @fires VideoTrack#enabled\n    */ /**\n     * Enable or disable the {@link LocalVideoTrack}. This is equivalent to unpausing or pausing\n     * the video source respectively. If a {@link VideoProcessor} is added, then <code>processedTrack</code>\n     * is also enabled or disabled.\n     * @param {boolean} [enabled] - Specify false to disable the\n     *   {@link LocalVideoTrack}\n     * @returns {this}\n     * @fires VideoTrack#disabled\n     * @fires VideoTrack#enabled\n     */\n    LocalVideoTrack.prototype.enable = function (enabled) {\n        if (enabled === void 0) { enabled = true; }\n        var result = _super.prototype.enable.apply(this, arguments);\n        if (this.processedTrack) {\n            this.processedTrack.enabled = enabled;\n            if (enabled) {\n                this._captureFrames();\n                this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the processed MediaStreamTrack', this.processedTrack);\n                this._setSenderMediaStreamTrack(true);\n            }\n        }\n        return result;\n    };\n    /**\n     * Restart the {@link LocalVideoTrack}. This stops the existing MediaStreamTrack\n     * and creates a new MediaStreamTrack. If the {@link LocalVideoTrack} is being published\n     * to a {@link Room}, then all the {@link RemoteParticipant}s will start receiving media\n     * from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via\n     * the <code>mediaStreamTrack</code> property. If you want to listen to events on\n     * the MediaStreamTrack directly, please do so in the \"started\" event handler. Also,\n     * the {@link LocalVideoTrack}'s ID is no longer guaranteed to be the same as the\n     * underlying MediaStreamTrack's ID.\n     *\n     * If a {@link VideoProcessor} is applied to this track, it will be automatically\n     * restarted after the new MediaStreamTrack is created to ensure proper processing\n     * continues with the new video source.\n     *\n     * @param {MediaTrackConstraints} [constraints] - The optional <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints\" target=\"_blank\">MediaTrackConstraints</a>\n     *   for restarting the {@link LocalVideoTrack}; If not specified, then the current MediaTrackConstraints\n     *   will be used; If <code>{}</code> (empty object) is specified, then the default MediaTrackConstraints\n     *   will be used\n     * @returns {Promise<void>} Resolves when the restart is complete, including any processor restart operations.\n     *   Rejects with a TypeError if the {@link LocalVideoTrack} was not created\n     *   using one of <code>createLocalVideoTrack</code>, <code>createLocalTracks</code> or <code>connect</code>;\n     *   Also rejects with the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#Exceptions\" target=\"_blank\">DOMException</a>\n     *   raised by <code>getUserMedia</code> when it fails\n     * @fires LocalVideoTrack#stopped\n     * @fires LocalVideoTrack#started\n     * @example\n     * const { connect, createLocalVideoTrack } = require('twilio-video');\n     *\n     * // Create a LocalVideoTrack that captures video from the front-facing camera.\n     * createLocalVideoTrack({ facingMode: 'user' }).then(function(localVideoTrack) {\n     *   return connect('token', {\n     *     name: 'my-cool-room',\n     *     tracks: [localVideoTrack]\n     *   });\n     * }).then(function(room) {\n     *   // Restart the LocalVideoTrack to capture video from the back-facing camera.\n     *   const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n     *   return localVideoTrack.restart({ facingMode: 'environment' });\n     * });\n     */\n    LocalVideoTrack.prototype.restart = function () {\n        var _this = this;\n        if (this._workaroundSilentLocalVideoCleanup) {\n            this._workaroundSilentLocalVideoCleanup();\n            this._workaroundSilentLocalVideoCleanup = null;\n        }\n        var promise = _super.prototype.restart.apply(this, arguments);\n        if (this.processor) {\n            promise = promise.then(function () { return _this._restartProcessor(); });\n        }\n        if (this._workaroundSilentLocalVideo) {\n            promise.finally(function () {\n                _this._workaroundSilentLocalVideoCleanup = _this._workaroundSilentLocalVideo(_this, document);\n            });\n        }\n        return promise;\n    };\n    /**\n     * Restarts the video processor by removing and re-adding it with the same options,\n     * then updates the sender to use the newly processed MediaStreamTrack.\n     *\n     * This operations are done synchronously to ensure the processor is restarted before the\n     * sender is updated to avoid race conditions.\n     *\n     * @returns {Promise<void>}\n     * @private\n     */\n    LocalVideoTrack.prototype._restartProcessor = function () {\n        var processor = this.processor;\n        var processorOptions = Object.assign({}, this._processorOptions);\n        // Local video track's removeProcessor and addProcessor call setSenderMediaStreamTrack async,\n        // but we need to wait for that operation to finish for a successful restart.\n        // So we call the parent's removeProcessor and addProcessor, then setSenderMediaStreamTrack right after.\n        _super.prototype.removeProcessor.apply(this, [processor]);\n        _super.prototype.addProcessor.apply(this, [processor, processorOptions]);\n        return this._setSenderMediaStreamTrack(true);\n    };\n    /**\n     * Calls stop on the underlying MediaStreamTrack. If you choose to stop a\n     * {@link LocalVideoTrack}, you should unpublish it after stopping.\n     * @returns {this}\n     * @fires LocalVideoTrack#stopped\n     */\n    LocalVideoTrack.prototype.stop = function () {\n        if (this._workaroundSilentLocalVideoCleanup) {\n            this._workaroundSilentLocalVideoCleanup();\n            this._workaroundSilentLocalVideoCleanup = null;\n        }\n        // Clean up PiP intersection observer when stopping\n        this._cleanupPipIntersectionObserver();\n        return _super.prototype.stop.apply(this, arguments);\n    };\n    return LocalVideoTrack;\n}(LocalMediaVideoTrack));\n/**\n * Work around a bug where local video MediaStreamTracks are silent (even though\n * they are enabled, live and unmuted) after accepting/rejecting a phone call.\n * @private\n * @param {LocalVideoTrack} localVideoTrack\n * @param {HTMLDocument} doc\n * @returns {function} Cleans up listeners attached by the workaround\n */\nfunction workaroundSilentLocalVideo(localVideoTrack, doc) {\n    var log = localVideoTrack._log;\n    var el = localVideoTrack._dummyEl, mediaStreamTrack = localVideoTrack.mediaStreamTrack;\n    function onUnmute() {\n        if (!localVideoTrack.isEnabled) {\n            return;\n        }\n        log.info('Unmuted, checking silence');\n        // The dummy element is paused, so play it and then detect silence.\n        el.play().then(function () { return detectSilentVideo(el, doc); }).then(function (isSilent) {\n            if (!isSilent) {\n                log.info('Non-silent frames detected, so no need to restart');\n                return;\n            }\n            log.warn('Silence detected, restarting');\n            // NOTE(mmalavalli): If we try and restart a silent MediaStreamTrack\n            // without stopping it first, then a NotReadableError is raised. Hence,\n            // we stop the MediaStreamTrack here.\n            localVideoTrack._stop();\n            // Restart the LocalVideoTrack.\n            // eslint-disable-next-line consistent-return\n            return localVideoTrack._restart();\n        }).catch(function (error) {\n            log.warn('Failed to detect silence and restart:', error);\n        }).finally(function () {\n            // If silent frames were not detected, then pause the dummy element again,\n            // if there is no processed track.\n            el = localVideoTrack._dummyEl;\n            if (el && !el.paused && !localVideoTrack.processedTrack) {\n                el.pause();\n            }\n            // Reset the unmute handler.\n            mediaStreamTrack.removeEventListener('unmute', onUnmute);\n            mediaStreamTrack = localVideoTrack.mediaStreamTrack;\n            if (mediaStreamTrack.addEventListener) {\n                mediaStreamTrack.addEventListener('unmute', onUnmute);\n            }\n            else {\n                mediaStreamTrack.onunmute = onUnmute;\n            }\n        });\n    }\n    // Set the unmute handler.\n    if (mediaStreamTrack.addEventListener) {\n        mediaStreamTrack.addEventListener('unmute', onUnmute);\n    }\n    else {\n        mediaStreamTrack.onunmute = onUnmute;\n    }\n    return function () {\n        if (mediaStreamTrack.removeEventListener) {\n            mediaStreamTrack.removeEventListener('unmute', onUnmute);\n        }\n        else {\n            mediaStreamTrack.onunmute = null;\n        }\n    };\n}\n/**\n * The {@link LocalVideoTrack} was disabled, i.e. the video source was paused by the user.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was\n *   disabled\n * @event LocalVideoTrack#disabled\n */\n/**\n * The {@link LocalVideoTrack} was enabled, i.e. the video source was unpaused by the user.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was enabled\n * @event LocalVideoTrack#enabled\n */\n/**\n * The {@link LocalVideoTrack} was muted because the video source stopped sending frames, most\n * likely due to another application taking said video source, especially on mobile devices.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was muted\n * @event LocalVideoTrack#muted\n */\n/**\n * The {@link LocalVideoTrack} started. This means there is enough video data\n * to begin playback.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that started\n * @event LocalVideoTrack#started\n */\n/**\n * The {@link LocalVideoTrack} stopped, either because {@link LocalVideoTrack#stop}\n * or {@link LocalVideoTrack#restart} was called or because the underlying\n * MediaStreamTrack ended.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that stopped\n * @event LocalVideoTrack#stopped\n */\n/**\n * The {@link LocalVideoTrack} was unmuted because the video source resumed sending frames,\n * most likely due to the application that took over the said video source has released it\n * back to the application, especially on mobile devices. This event is also fired when\n * {@link LocalVideoTrack#restart} is called on a muted {@link LocalVideoTrack} with a\n * new video source.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was unmuted\n * @event LocalVideoTrack#unmuted\n */\nmodule.exports = LocalVideoTrack;\n\n},{\"../../util/browserdetection\":138,\"../../util/detectsilentvideo\":142,\"./localmediatrack\":38,\"./videotrack\":57}],41:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalVideoTrackPublication} is a {@link LocalVideoTrack} that has\n * been published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"video\"\n * @property {LocalVideoTrack} track - the {@link LocalVideoTrack}\n */\nvar LocalVideoTrackPublication = /** @class */ (function (_super) {\n    __extends(LocalVideoTrackPublication, _super);\n    /**\n     * Construct a {@link LocalVideoTrackPublication}.\n     * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n     *   {@link LocalTrackPublicationSignaling}\n     * @param {LocalVideoTrack} track - the {@link LocalVideoTrack}\n     * @param {function(LocalTrackPublication): void} unpublish - The callback\n     *    that unpublishes the {@link LocalTrackPublication}\n     * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n     */\n    function LocalVideoTrackPublication(signaling, track, unpublish, options) {\n        return _super.call(this, signaling, track, unpublish, options) || this;\n    }\n    LocalVideoTrackPublication.prototype.toString = function () {\n        return \"[LocalVideoTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return LocalVideoTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalVideoTrackPublication;\n\n},{\"./localtrackpublication\":39}],42:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar MediaStream = require('../../webrtc').MediaStream;\nvar _a = require('../../util'), waitForEvent = _a.waitForEvent, waitForSometime = _a.waitForSometime;\nvar localMediaRestartDeferreds = require('../../util/localmediarestartdeferreds');\nvar Track = require('./');\n/**\n * A {@link MediaTrack} represents audio or video that can be sent to or\n * received from a {@link Room}.\n * @extends Track\n * @property {Track.ID} id - This {@link Track}'s ID\n * @property {boolean} isStarted - Whether or not the {@link MediaTrack} has\n *   started\n * @property {boolean} isEnabled - Whether or not the {@link MediaTrack} is\n *   enabled (i.e., whether it is paused or muted)\n * @property {Track.Kind} kind - The kind of the underlying\n *   MediaStreamTrack, \"audio\" or \"video\"\n * @property {MediaStreamTrack} mediaStreamTrack - The underlying\n *   MediaStreamTrack\n * @emits MediaTrack#disabled\n * @emits MediaTrack#enabled\n * @emits MediaTrack#started\n */\nvar MediaTrack = /** @class */ (function (_super) {\n    __extends(MediaTrack, _super);\n    /**\n     * Construct a {@link MediaTrack}.\n     * @param {MediaTrackTransceiver} mediaTrackTransceiver\n     * @param {{log: Log}} options\n     */\n    function MediaTrack(mediaTrackTransceiver, options) {\n        var _this = this;\n        options = Object.assign({\n            playPausedElementsIfNotBackgrounded: isIOS()\n                && typeof document === 'object'\n                && typeof document.addEventListener === 'function'\n                && typeof document.visibilityState === 'string'\n        }, options);\n        _this = _super.call(this, mediaTrackTransceiver.id, mediaTrackTransceiver.kind, options) || this;\n        var isStarted = false;\n        options = Object.assign({\n            MediaStream: MediaStream\n        }, options);\n        if (typeof options.MediaStream !== 'function') {\n            throw new Error('MediaTrack received an invalid MediaStream constructor: ' + options.MediaStream);\n        }\n        /* istanbul ignore next */\n        Object.defineProperties(_this, {\n            _attachments: {\n                value: new Set()\n            },\n            _dummyEl: {\n                value: null,\n                writable: true\n            },\n            _elShims: {\n                value: new WeakMap()\n            },\n            _isStarted: {\n                get: function () {\n                    return isStarted;\n                },\n                set: function (_isStarted) {\n                    isStarted = _isStarted;\n                }\n            },\n            _playPausedElementsIfNotBackgrounded: {\n                value: options.playPausedElementsIfNotBackgrounded\n            },\n            _shouldShimAttachedElements: {\n                value: options.workaroundWebKitBug212780\n                    || options.playPausedElementsIfNotBackgrounded\n            },\n            _unprocessedTrack: {\n                value: null,\n                writable: true\n            },\n            _MediaStream: {\n                value: options.MediaStream\n            },\n            _mapMediaElement: {\n                value: options.mapMediaElement\n            },\n            _disposeMediaElement: {\n                value: options.disposeMediaElement\n            },\n            isStarted: {\n                enumerable: true,\n                get: function () {\n                    return isStarted;\n                }\n            },\n            mediaStreamTrack: {\n                enumerable: true,\n                get: function () {\n                    return this._unprocessedTrack || mediaTrackTransceiver.track;\n                }\n            },\n            processedTrack: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        _this._initialize();\n        return _this;\n    }\n    /**\n     * @private\n     */\n    MediaTrack.prototype._start = function () {\n        this._log.debug('Started');\n        this._isStarted = true;\n        if (this._dummyEl) {\n            this._dummyEl.oncanplay = null;\n        }\n        this.emit('started', this);\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._initialize = function () {\n        var self = this;\n        this._log.debug('Initializing');\n        this._dummyEl = this._createElement();\n        if (this.mediaStreamTrack && this.mediaStreamTrack.addEventListener) {\n            this.mediaStreamTrack.addEventListener('ended', function onended() {\n                self._end();\n                self.mediaStreamTrack.removeEventListener('ended', onended);\n            });\n        }\n        else if (this.mediaStreamTrack) {\n            this.mediaStreamTrack.onended = function onended() {\n                self._end();\n                self.mediaStreamTrack.onended = null;\n            };\n        }\n        if (this._dummyEl) {\n            this._dummyEl.muted = true;\n            this._dummyEl.oncanplay = this._start.bind(this, this._dummyEl);\n            // NOTE(csantos): We always want to attach the original mediaStreamTrack for dummyEl\n            this._attach(this._dummyEl, this.mediaStreamTrack);\n            this._attachments.delete(this._dummyEl);\n        }\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._end = function () {\n        this._log.debug('Ended');\n        if (this._dummyEl) {\n            this._dummyEl.remove();\n            if (this._disposeMediaElement) {\n                this._disposeMediaElement(this._dummyEl);\n            }\n            else {\n                this._dummyEl.srcObject = null;\n            }\n            this._dummyEl.oncanplay = null;\n            this._dummyEl = null;\n        }\n    };\n    MediaTrack.prototype.attach = function (el) {\n        var _this = this;\n        if (typeof el === 'string') {\n            el = this._selectElement(el);\n        }\n        else if (!el) {\n            el = this._createElement();\n        }\n        this._log.debug('Attempting to attach to element:', el);\n        el = this._attach(el);\n        if (this._shouldShimAttachedElements && !this._elShims.has(el)) {\n            var onUnintentionallyPaused = this._playPausedElementsIfNotBackgrounded\n                ? function () { return playIfPausedAndNotBackgrounded(el, _this._log); }\n                : null;\n            this._elShims.set(el, shimMediaElement(el, onUnintentionallyPaused));\n        }\n        return el;\n    };\n    /**\n     * Attach the provided MediaStreamTrack to the media element.\n     * @param el - The media element to attach to\n     * @param mediaStreamTrack - The MediaStreamTrack to attach. If this is\n     * not provided, it uses the processedTrack if it exists\n     * or it defaults to the current mediaStreamTrack\n     * @private\n     */\n    MediaTrack.prototype._attach = function (el, mediaStreamTrack) {\n        if (mediaStreamTrack === void 0) { mediaStreamTrack = this.processedTrack || this.mediaStreamTrack; }\n        var mediaStream = el.srcObject;\n        if (!(mediaStream instanceof this._MediaStream)) {\n            mediaStream = new this._MediaStream();\n        }\n        var getTracks = mediaStreamTrack.kind === 'audio'\n            ? 'getAudioTracks'\n            : 'getVideoTracks';\n        mediaStream[getTracks]().forEach(function (track) {\n            mediaStream.removeTrack(track);\n        });\n        mediaStream.addTrack(mediaStreamTrack);\n        // Map the element if a custom mapping function is provided\n        if (this._mapMediaElement) {\n            this._log.debug('Mapping element using mapMediaElement before attaching media to element');\n            this._mapMediaElement(el);\n        }\n        // NOTE(mpatwardhan): resetting `srcObject` here, causes flicker (JSDK-2641), but it lets us\n        // to sidestep the a chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1052353\n        el.srcObject = mediaStream;\n        el.autoplay = true;\n        el.playsInline = true;\n        if (!this._attachments.has(el)) {\n            this._attachments.add(el);\n        }\n        return el;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._selectElement = function (selector) {\n        var el = document.querySelector(selector);\n        if (!el) {\n            throw new Error(\"Selector matched no element: \".concat(selector));\n        }\n        return el;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._updateElementsMediaStreamTrack = function () {\n        var _this = this;\n        this._log.debug('Reattaching all elements to update mediaStreamTrack');\n        this._getAllAttachedElements().forEach(function (el) { return _this._attach(el); });\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._createElement = function () {\n        return typeof document !== 'undefined'\n            ? document.createElement(this.kind)\n            : null;\n    };\n    MediaTrack.prototype.detach = function (el) {\n        var els;\n        if (typeof el === 'string') {\n            els = [this._selectElement(el)];\n        }\n        else if (!el) {\n            els = this._getAllAttachedElements();\n        }\n        else {\n            els = [el];\n        }\n        this._log.debug('Attempting to detach from elements:', els);\n        this._detachElements(els);\n        return el ? els[0] : els;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._detachElements = function (elements) {\n        return elements.map(this._detachElement.bind(this));\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._detachElement = function (el) {\n        if (!this._attachments.has(el)) {\n            return el;\n        }\n        var mediaStream = el.srcObject;\n        if (mediaStream instanceof this._MediaStream) {\n            mediaStream.removeTrack(this.processedTrack || this.mediaStreamTrack);\n        }\n        if (this._disposeMediaElement) {\n            this._log.debug('Disposing element using disposeMediaElement after removing media from element');\n            this._disposeMediaElement(el);\n        }\n        this._attachments.delete(el);\n        if (this._shouldShimAttachedElements && this._elShims.has(el)) {\n            var shim = this._elShims.get(el);\n            shim.unShim();\n            this._elShims.delete(el);\n        }\n        return el;\n    };\n    /**\n     * @private\n     */\n    MediaTrack.prototype._getAllAttachedElements = function () {\n        var els = [];\n        this._attachments.forEach(function (el) {\n            els.push(el);\n        });\n        return els;\n    };\n    return MediaTrack;\n}(Track));\n/**\n * Play an HTMLMediaElement if it is paused and not backgrounded.\n * @private\n * @param {HTMLMediaElement} el\n * @param {Log} log\n * @returns {void}\n */\nfunction playIfPausedAndNotBackgrounded(el, log) {\n    var tag = el.tagName.toLowerCase();\n    log.warn('Unintentionally paused:', el);\n    // NOTE(mmalavalli): When the element is unintentionally paused, we wait one\n    // second for the \"onvisibilitychange\" event on the HTMLDocument to see if the\n    // app will be backgrounded. If not, then the element can be safely played.\n    Promise.race([\n        waitForEvent(document, 'visibilitychange'),\n        waitForSometime(1000)\n    ]).then(function () {\n        if (document.visibilityState === 'visible') {\n            // NOTE(mmalavalli): We play the inadvertently paused elements only after\n            // the LocalAudioTrack is unmuted to work around WebKit Bug 213853.\n            //\n            // Bug: https://bugs.webkit.org/show_bug.cgi?id=213853\n            //\n            localMediaRestartDeferreds.whenResolved('audio').then(function () {\n                log.info(\"Playing unintentionally paused <\".concat(tag, \"> element\"));\n                log.debug('Element:', el);\n                return el.play();\n            }).then(function () {\n                log.info(\"Successfully played unintentionally paused <\".concat(tag, \"> element\"));\n                log.debug('Element:', el);\n            }).catch(function (error) {\n                log.warn(\"Error while playing unintentionally paused <\".concat(tag, \"> element:\"), { error: error, el: el });\n            });\n        }\n    });\n}\n/**\n * Shim the pause() and play() methods of the given HTMLMediaElement so that\n * we can detect if it was paused unintentionally.\n * @param {HTMLMediaElement} el\n * @param {?function} [onUnintentionallyPaused=null]\n * @returns {{pausedIntentionally: function, unShim: function}}\n */\nfunction shimMediaElement(el, onUnintentionallyPaused) {\n    if (onUnintentionallyPaused === void 0) { onUnintentionallyPaused = null; }\n    var origPause = el.pause;\n    var origPlay = el.play;\n    var pausedIntentionally = false;\n    el.pause = function () {\n        pausedIntentionally = true;\n        return origPause.call(el);\n    };\n    el.play = function () {\n        pausedIntentionally = false;\n        return origPlay.call(el);\n    };\n    var onPause = onUnintentionallyPaused ? function () {\n        if (!pausedIntentionally) {\n            onUnintentionallyPaused();\n        }\n    } : null;\n    if (onPause) {\n        el.addEventListener('pause', onPause);\n    }\n    return {\n        pausedIntentionally: function () {\n            return pausedIntentionally;\n        },\n        unShim: function () {\n            el.pause = origPause;\n            el.play = origPlay;\n            if (onPause) {\n                el.removeEventListener('pause', onPause);\n            }\n        }\n    };\n}\nmodule.exports = MediaTrack;\n\n},{\"../../util\":147,\"../../util/browserdetection\":138,\"../../util/localmediarestartdeferreds\":150,\"../../webrtc\":173,\"./\":33}],43:[function(require,module,exports){\n'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoiseCancellationImpl = void 0;\nexports.applyNoiseCancellation = applyNoiseCancellation;\nvar noisecancellationadapter_1 = require(\"../../noisecancellationadapter\");\nvar Log = require('../../util/log');\n/**\n * {@link NoiseCancellation} interface provides methods to control noise cancellation at runtime. This interface is exposed\n * on {@link LocalAudioTrack} property `noiseCancellation`. It is available only when {@link NoiseCancellationOptions} are\n * specified when creating a {@link LocalAudioTrack}, and the plugin is successfully loaded.\n * @alias NoiseCancellation\n * @interface\n *\n * @example\n * const { connect, createLocalAudioTrack } = require('twilio-video');\n *\n * // Create a LocalAudioTrack with Krisp noise cancellation enabled.\n * const localAudioTrack = await createLocalAudioTrack({\n *   noiseCancellationOptions: {\n *     sdkAssetsPath: 'path/to/hosted/twilio/krisp/audio/plugin/1.0.0/dist',\n *     vendor: 'krisp'\n *   }\n * });\n *\n * if (!localAudioTrack.noiseCancellation) {\n *   // If the Krisp audio plugin fails to load, then a warning message will be logged\n *   // in the browser console, and the \"noiseCancellation\" property will be set to null.\n *   // You can still use the LocalAudioTrack to join a Room. However, it will use the\n *   // browser's noise suppression instead of the Krisp noise cancellation. Make sure\n *   // the \"sdkAssetsPath\" provided in \"noiseCancellationOptions\" points to the correct\n *   // hosted path of the plugin assets.\n * } else {\n *   // Join a Room with the LocalAudioTrack.\n *   const room = await connect('token', {\n *     name: 'my-cool-room',\n *     tracks: [localAudioTrack]\n *   });\n *\n *   if (!localAudioTrack.noiseCancellation.isEnabled) {\n *     // Krisp noise cancellation is permanently disabled in Peer-to-Peer and Go Rooms.\n *   }\n * }\n *\n * //\n * // Enable/disable noise cancellation.\n * // @param {boolean} enable - whether noise cancellation should be enabled\n * //\n * function setNoiseCancellation(enable) {\n *   const { noiseCancellation } = localAudioTrack;\n *   if (noiseCancellation) {\n *     if (enable) {\n *       // If enabled, then the LocalAudioTrack will use the Krisp noise\n *       // cancellation instead of the browser's noise suppression.\n *       noiseCancellation.enable();\n *     } else {\n *       // If disabled, then the LocalAudioTrack will use the browser's\n *       // noise suppression instead of the Krisp noise cancellation.\n *       noiseCancellation.disable();\n *     }\n *   }\n * }\n */\nvar NoiseCancellationImpl = /** @class */ (function () {\n    function NoiseCancellationImpl(processor, originalTrack) {\n        this._processor = processor;\n        this._sourceTrack = originalTrack;\n        this._disabledPermanent = false;\n    }\n    Object.defineProperty(NoiseCancellationImpl.prototype, \"vendor\", {\n        /**\n         * Name of the noise cancellation vendor.\n         * @type {NoiseCancellationVendor}\n         */\n        get: function () {\n            return this._processor.vendor;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NoiseCancellationImpl.prototype, \"sourceTrack\", {\n        /**\n         * The underlying MediaStreamTrack of the {@link LocalAudioTrack}.\n         * @type {MediaStreamTrack}\n         */\n        get: function () {\n            return this._sourceTrack;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NoiseCancellationImpl.prototype, \"isEnabled\", {\n        /**\n         * Whether noise cancellation is enabled.\n         * @type {boolean}\n         */\n        get: function () {\n            return this._processor.isEnabled();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Enable noise cancellation.\n     * @returns {Promise<void>} Promise that resolves when the operation is complete\n     * @throws {Error} Throws an error if noise cancellation is disabled permanently\n     *   for the {@link LocalAudioTrack}\n     */\n    NoiseCancellationImpl.prototype.enable = function () {\n        if (this._disabledPermanent) {\n            throw new Error(\"\".concat(this.vendor, \" noise cancellation is disabled permanently for this track\"));\n        }\n        this._processor.enable();\n        return Promise.resolve();\n    };\n    /**\n     * Disable noise cancellation.\n     * @returns {Promise<void>} Promise that resolves when the operation is complete\n     */\n    NoiseCancellationImpl.prototype.disable = function () {\n        this._processor.disable();\n        return Promise.resolve();\n    };\n    /**\n     * @private\n     */\n    NoiseCancellationImpl.prototype.reacquireTrack = function (reacquire) {\n        return __awaiter(this, void 0, void 0, function () {\n            var processorWasEnabled, track, processedTrack;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        processorWasEnabled = this._processor.isEnabled();\n                        this._processor.disconnect();\n                        return [4 /*yield*/, reacquire()];\n                    case 1:\n                        track = _a.sent();\n                        this._sourceTrack = track;\n                        return [4 /*yield*/, this._processor.connect(track)];\n                    case 2:\n                        processedTrack = _a.sent();\n                        if (processorWasEnabled) {\n                            this._processor.enable();\n                        }\n                        else {\n                            this._processor.disable();\n                        }\n                        return [2 /*return*/, processedTrack];\n                }\n            });\n        });\n    };\n    /**\n     * @private\n     */\n    NoiseCancellationImpl.prototype.disablePermanently = function () {\n        this._disabledPermanent = true;\n        return this.disable();\n    };\n    /**\n     * @private\n     */\n    NoiseCancellationImpl.prototype.stop = function () {\n        this._processor.disconnect();\n        this._sourceTrack.stop();\n    };\n    return NoiseCancellationImpl;\n}());\nexports.NoiseCancellationImpl = NoiseCancellationImpl;\nfunction applyNoiseCancellation(mediaStreamTrack, noiseCancellationOptions, log) {\n    return __awaiter(this, void 0, void 0, function () {\n        var processor, cleanTrack, noiseCancellation, ex_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 2, , 3]);\n                    return [4 /*yield*/, (0, noisecancellationadapter_1.createNoiseCancellationAudioProcessor)(noiseCancellationOptions, log)];\n                case 1:\n                    processor = _a.sent();\n                    cleanTrack = processor.connect(mediaStreamTrack);\n                    noiseCancellation = new NoiseCancellationImpl(processor, mediaStreamTrack);\n                    return [2 /*return*/, { cleanTrack: cleanTrack, noiseCancellation: noiseCancellation }];\n                case 2:\n                    ex_1 = _a.sent();\n                    // in case of failures to load noise cancellation library just return original media stream.\n                    log.warn(\"Failed to create noise cancellation. Returning normal audio track: \".concat(ex_1));\n                    return [2 /*return*/, { cleanTrack: mediaStreamTrack }];\n                case 3: return [2 /*return*/];\n            }\n        });\n    });\n}\n\n},{\"../../noisecancellationadapter\":59,\"../../util/log\":151}],44:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaTrackTransceiver = require('./transceiver');\n/**\n * A {@link MediaTrackReceiver} represents a remote MediaStreamTrack.\n * @extends MediaTrackTransceiver\n */\nvar MediaTrackReceiver = /** @class */ (function (_super) {\n    __extends(MediaTrackReceiver, _super);\n    /**\n     * Construct a {@link MediaTrackReceiver}.\n     * @param {Track.ID} id - The MediaStreamTrack ID signaled through RSP/SDP\n     * @param {MediaStreamTrack} mediaStreamTrack - The remote MediaStreamTrack\n     */\n    function MediaTrackReceiver(id, mediaStreamTrack) {\n        return _super.call(this, id, mediaStreamTrack) || this;\n    }\n    return MediaTrackReceiver;\n}(MediaTrackTransceiver));\nmodule.exports = MediaTrackReceiver;\n\n},{\"./transceiver\":55}],45:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar AudioTrack = require('./audiotrack');\nvar mixinRemoteMediaTrack = require('./remotemediatrack');\nvar RemoteMediaAudioTrack = mixinRemoteMediaTrack(AudioTrack);\n/**\n * A {@link RemoteAudioTrack} represents an {@link AudioTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @extends AudioTrack\n * @property {boolean} isEnabled - Whether the {@link RemoteAudioTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteAudioTrack} is switched off\n * @property {Track.SID} sid - The {@link RemoteAudioTrack}'s SID\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteAudioTrack}\n * @emits RemoteAudioTrack#disabled\n * @emits RemoteAudioTrack#enabled\n * @emits RemoteAudioTrack#started\n * @emits RemoteAudioTrack#switchedOff\n * @emits RemoteAudioTrack#switchedOn\n */\nvar RemoteAudioTrack = /** @class */ (function (_super) {\n    __extends(RemoteAudioTrack, _super);\n    /**\n     * Construct a {@link RemoteAudioTrack}.\n     * @param {Track.SID} sid - The {@link RemoteAudioTrack}'s SID\n     * @param {MediaTrackReceiver} mediaTrackReceiver - An audio MediaStreamTrack container\n     * @param {boolean} isEnabled - Whether the {@link RemoteAudioTrack} is enabled\n     * @param {boolean} isSwitchedOff - Whether the {@link RemoteAudioTrack} is switched off\n     * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n     *  {@link Track.Priority} of the {@link RemoteAudioTrack}\n     * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n     * @param {{log: Log}} options - The {@link RemoteTrack} options\n     */\n    function RemoteAudioTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n        return _super.call(this, sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) || this;\n    }\n    RemoteAudioTrack.prototype.toString = function () {\n        return \"[RemoteAudioTrack #\".concat(this._instanceId, \": \").concat(this.sid, \"]\");\n    };\n    /**\n     * @private\n     */\n    RemoteAudioTrack.prototype._start = function () {\n        _super.prototype._start.call(this);\n        if (this._dummyEl) {\n            // NOTE(mpatwardhan): To fix VIDEO-6336, clear dummy element after the\n            // RemoteAudioTrack has started.\n            if (this._disposeMediaElement) {\n                this._disposeMediaElement(this._dummyEl);\n            }\n            else {\n                this._dummyEl.srcObject = null;\n            }\n            this._dummyEl = null;\n        }\n    };\n    /**\n     * Update the subscribe {@link Track.Priority} of the {@link RemoteAudioTrack}.\n     * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n     *   Currently setPriority has no effect on audio tracks.\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    RemoteAudioTrack.prototype.setPriority = function (priority) {\n        return _super.prototype.setPriority.call(this, priority);\n    };\n    return RemoteAudioTrack;\n}(RemoteMediaAudioTrack));\n/**\n * The {@link RemoteAudioTrack} was disabled, i.e. \"muted\".\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   disabled\n * @event RemoteAudioTrack#disabled\n */\n/**\n * The {@link RemoteAudioTrack} was enabled, i.e. \"unmuted\".\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   enabled\n * @event RemoteAudioTrack#enabled\n */\n/**\n * The {@link RemoteAudioTrack} started. This means there is enough audio data\n * to begin playback.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that started\n * @event RemoteAudioTrack#started\n */\n/**\n * A {@link RemoteAudioTrack} was switched off.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   switched off\n * @event RemoteAudioTrack#switchedOff\n */\n/**\n * A {@link RemoteAudioTrack} was switched on.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n *   switched on\n * @event RemoteAudioTrack#switchedOn\n */\nmodule.exports = RemoteAudioTrack;\n\n},{\"./audiotrack\":27,\"./remotemediatrack\":49}],46:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteAudioTrackPublication} represents a {@link RemoteAudioTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"audio\"\n * @property {?RemoteAudioTrack} track - unless you have subscribed to the\n *   {@link RemoteAudioTrack}, this property is null\n * @emits RemoteAudioTrackPublication#subscribed\n * @emits RemoteAudioTrackPublication#subscriptionFailed\n * @emits RemoteAudioTrackPublication#trackDisabled\n * @emits RemoteAudioTrackPublication#trackEnabled\n * @emits RemoteAudioTrackPublication#unsubscribed\n */\nvar RemoteAudioTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteAudioTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteAudioTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteAudioTrackPublication(signaling, options) {\n        return _super.call(this, signaling, options) || this;\n    }\n    RemoteAudioTrackPublication.prototype.toString = function () {\n        return \"[RemoteAudioTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return RemoteAudioTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteAudioTrack}.\n * @param {RemoteAudioTrack} track - the {@link RemoteAudioTrack} that was subscribed to\n * @event RemoteAudioTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteAudioTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteAudioTrack} could not be\n *   subscribed to\n * @event RemoteAudioTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteAudioTrack} was disabled.\n * @event RemoteAudioTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteAudioTrack} was enabled.\n * @event RemoteAudioTrackPublication#trackEnabled\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteAudioTrack}.\n * @param {RemoteAudioTrack} track - the {@link RemoteAudioTrack} that was unsubscribed from\n * @event RemoteAudioTrackPublication#unsubscribed\n */\nmodule.exports = RemoteAudioTrackPublication;\n\n},{\"./remotetrackpublication\":50}],47:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar Track = require('./');\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\n/**\n * A {@link RemoteDataTrack} represents data published to a {@link Room} by a\n * {@link RemoteParticipant}.\n * @extends Track\n * @property {boolean} isEnabled - true\n * @property {boolean} isSubscribed - Whether the {@link RemoteDataTrack} is\n *   subscribed to\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteDataTrack} is\n *   switched off\n * @property {Track.Kind} kind - \"data\"\n * @property {?number} maxPacketLifeTime - If non-null, this represents a time\n *   limit (in milliseconds) during which data will be transmitted or\n *   retransmitted if not acknowledged on the underlying RTCDataChannel.\n * @property {?number} maxRetransmits - If non-null, this represents the number\n *   of times the data will be retransmitted if not successfully received on the\n *   underlying RTCDataChannel.\n * @property {boolean} ordered - true if data on the {@link RemoteDataTrack} can\n *   be received out-of-order.\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteDataTrack}\n * @property {boolean} reliable - This is true if both\n *   <code>maxPacketLifeTime</code> and <code>maxRetransmits</code> are set to\n *   null. In other words, if this is true, there is no bound on packet lifetime\n *   or the number of retransmits that will be attempted, ensuring \"reliable\"\n *   transmission.\n * @property {Track.SID} sid - The SID assigned to the {@link RemoteDataTrack}\n * @emits RemoteDataTrack#message\n * @emits RemoteDataTrack#switchedOff\n * @emits RemoteDataTrack#switchedOn\n */\nvar RemoteDataTrack = /** @class */ (function (_super) {\n    __extends(RemoteDataTrack, _super);\n    /**\n     * Construct a {@link RemoteDataTrack} from a {@link DataTrackReceiver}.\n     * @param {Track.SID} sid\n     * @param {DataTrackReceiver} dataTrackReceiver\n     * @param {{log: Log, name: ?string}} options\n     */\n    function RemoteDataTrack(sid, dataTrackReceiver, options) {\n        var _this = _super.call(this, dataTrackReceiver.id, 'data', options) || this;\n        Object.defineProperties(_this, {\n            _isSwitchedOff: {\n                value: false,\n                writable: true\n            },\n            _priority: {\n                value: null,\n                writable: true\n            },\n            isEnabled: {\n                enumerable: true,\n                value: true\n            },\n            isSwitchedOff: {\n                enumerable: true,\n                get: function () {\n                    return this._isSwitchedOff;\n                }\n            },\n            maxPacketLifeTime: {\n                enumerable: true,\n                value: dataTrackReceiver.maxPacketLifeTime\n            },\n            maxRetransmits: {\n                enumerable: true,\n                value: dataTrackReceiver.maxRetransmits\n            },\n            ordered: {\n                enumerable: true,\n                value: dataTrackReceiver.ordered\n            },\n            priority: {\n                enumerable: true,\n                get: function () {\n                    return this._priority;\n                }\n            },\n            reliable: {\n                enumerable: true,\n                value: dataTrackReceiver.maxPacketLifeTime === null\n                    && dataTrackReceiver.maxRetransmits === null\n            },\n            sid: {\n                enumerable: true,\n                value: sid\n            }\n        });\n        dataTrackReceiver.on('message', function (data) {\n            _this.emit('message', data, _this);\n        });\n        return _this;\n    }\n    /**\n     * Update the subscriber {@link Track.Priority} of the {@link RemoteDataTrack}.\n     * @param {?Track.Priority} priority - the new {@link Track.priority};\n     *   Currently setPriority has no effect on data tracks.\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    RemoteDataTrack.prototype.setPriority = function (priority) {\n        var priorityValues = __spreadArray([null], __read(Object.values(trackPriority)), false);\n        if (!priorityValues.includes(priority)) {\n            // eslint-disable-next-line new-cap\n            throw E.INVALID_VALUE('priority', priorityValues);\n        }\n        // Note: priority has no real effect on the data tracks.\n        this._priority = priority;\n        return this;\n    };\n    /**\n     * @private\n     */\n    RemoteDataTrack.prototype._setEnabled = function () {\n        // Do nothing.\n    };\n    /**\n     * @private\n     * @param {boolean} isSwitchedOff\n     */\n    RemoteDataTrack.prototype._setSwitchedOff = function (isSwitchedOff) {\n        if (this._isSwitchedOff !== isSwitchedOff) {\n            this._isSwitchedOff = isSwitchedOff;\n            this.emit(isSwitchedOff ? 'switchedOff' : 'switchedOn', this);\n        }\n    };\n    return RemoteDataTrack;\n}(Track));\n/**\n * A message was received over the {@link RemoteDataTrack}.\n * @event RemoteDataTrack#message\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that received\n *   the message\n */\n/**\n * A {@link RemoteDataTrack} was switched off.\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that was\n *   switched off\n * @event RemoteDataTrack#switchedOff\n */\n/**\n * A {@link RemoteDataTrack} was switched on.\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that was\n *   switched on\n * @event RemoteDataTrack#switchedOn\n */\nmodule.exports = RemoteDataTrack;\n\n},{\"../../util/constants\":140,\"./\":33}],48:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteDataTrackPublication} represents a {@link RemoteDataTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"data\"\n * @property {?RemoteDataTrack} track - unless you have subscribed to the\n *   {@link RemoteDataTrack}, this property is null\n * @emits RemoteDataTrackPublication#subscribed\n * @emits RemoteDataTrackPublication#subscriptionFailed\n * @emits RemoteDataTrackPublication#unsubscribed\n */\nvar RemoteDataTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteDataTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteDataTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteDataTrackPublication(signaling, options) {\n        return _super.call(this, signaling, options) || this;\n    }\n    RemoteDataTrackPublication.prototype.toString = function () {\n        return \"[RemoteDataTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return RemoteDataTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteDataTrack}.\n * @param {RemoteDataTrack} track - the {@link RemoteDataTrack} that was subscribed to\n * @event RemoteDataTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteDataTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteDataTrack} could not be\n *   subscribed to\n * @event RemoteDataTrackPublication#subscriptionFailed\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteDataTrack}.\n * @param {RemoteDataTrack} track - the {@link RemoteDataTrack} that was unsubscribed from\n * @event RemoteDataTrackPublication#unsubscribed\n */\nmodule.exports = RemoteDataTrackPublication;\n\n},{\"./remotetrackpublication\":50}],49:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nfunction mixinRemoteMediaTrack(AudioOrVideoTrack) {\n    /**\n     * A {@link RemoteMediaTrack} represents a {@link MediaTrack} published to a\n     * {@link Room} by a {@link RemoteParticipant}.\n     * @property {boolean} isEnabled - Whether the {@link RemoteMediaTrack} is enabled\n     * @property {boolean} isSwitchedOff - Whether the {@link RemoteMediaTrack} is switched off\n     * @property {Track.SID} sid - The SID assigned to the {@link RemoteMediaTrack}\n     * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteMediaTrack}\n     * @emits RemoteMediaTrack#disabled\n     * @emits RemoteMediaTrack#enabled\n     * @emits RemoteMediaTrack#switchedOff\n     * @emits RemoteMediaTrack#switchedOn\n     */\n    return /** @class */ (function (_super) {\n        __extends(RemoteMediaTrack, _super);\n        /**\n         * Construct a {@link RemoteMediaTrack}.\n         * @param {Track.SID} sid\n         * @param {MediaTrackReceiver} mediaTrackReceiver\n         * @param {boolean} isEnabled\n          @param {boolean} isSwitchedOff\n         * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n         *  {@link Track.Priority} of the {@link RemoteMediaTrack}\n         * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n         * @param {{log: Log, name: ?string}} options\n         */\n        function RemoteMediaTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n            var _this = this;\n            options = Object.assign({\n                // NOTE(mpatwardhan): WebKit bug: 212780 sometimes causes the audio/video elements to stay paused when safari\n                // regains foreground. To workaround it, when safari gains foreground - we will play any elements that were\n                // playing before safari lost foreground.\n                workaroundWebKitBug212780: isIOS()\n                    && typeof document === 'object'\n                    && typeof document.addEventListener === 'function'\n                    && typeof document.visibilityState === 'string'\n            }, options);\n            _this = _super.call(this, mediaTrackReceiver, options) || this;\n            Object.defineProperties(_this, {\n                _isEnabled: {\n                    value: isEnabled,\n                    writable: true\n                },\n                _isSwitchedOff: {\n                    value: isSwitchedOff,\n                    writable: true\n                },\n                _priority: {\n                    value: null,\n                    writable: true\n                },\n                _setPriority: {\n                    value: setPriority\n                },\n                _setRenderHint: {\n                    value: function (renderHint) {\n                        _this._log.debug('updating render hint:', renderHint);\n                        setRenderHint(renderHint);\n                    }\n                },\n                isEnabled: {\n                    enumerable: true,\n                    get: function () {\n                        return this._isEnabled;\n                    }\n                },\n                isSwitchedOff: {\n                    enumerable: true,\n                    get: function () {\n                        return this._isSwitchedOff;\n                    }\n                },\n                priority: {\n                    enumerable: true,\n                    get: function () {\n                        return this._priority;\n                    }\n                },\n                sid: {\n                    enumerable: true,\n                    value: sid\n                },\n                _workaroundWebKitBug212780: {\n                    value: options.workaroundWebKitBug212780\n                },\n                _workaroundWebKitBug212780Cleanup: {\n                    value: null,\n                    writable: true\n                }\n            });\n            return _this;\n        }\n        /**\n         * Update the subscribe {@link Track.Priority} of the {@link RemoteMediaTrack}.\n         * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n         *   If <code>null</code>, then the subscribe {@link Track.Priority} is cleared, which\n         *   means the {@link Track.Priority} set by the publisher is now the effective priority.\n         * @returns {this}\n         * @throws {RangeError}\n         */\n        RemoteMediaTrack.prototype.setPriority = function (priority) {\n            var priorityValues = __spreadArray([null], __read(Object.values(trackPriority)), false);\n            if (!priorityValues.includes(priority)) {\n                // eslint-disable-next-line new-cap\n                throw E.INVALID_VALUE('priority', priorityValues);\n            }\n            if (this._priority !== priority) {\n                this._priority = priority;\n                this._setPriority(priority);\n            }\n            return this;\n        };\n        /**\n         * @private\n         * @param {boolean} isEnabled\n         */\n        RemoteMediaTrack.prototype._setEnabled = function (isEnabled) {\n            if (this._isEnabled !== isEnabled) {\n                this._isEnabled = isEnabled;\n                this.emit(this._isEnabled ? 'enabled' : 'disabled', this);\n            }\n        };\n        /**\n         * @private\n         * @param {boolean} isSwitchedOff\n         */\n        RemoteMediaTrack.prototype._setSwitchedOff = function (isSwitchedOff) {\n            if (this._isSwitchedOff !== isSwitchedOff) {\n                this._isSwitchedOff = isSwitchedOff;\n                this.emit(isSwitchedOff ? 'switchedOff' : 'switchedOn', this);\n            }\n        };\n        RemoteMediaTrack.prototype.attach = function (el) {\n            var result = _super.prototype.attach.call(this, el);\n            if (this.mediaStreamTrack.enabled !== true) {\n                // NOTE(mpatwardhan): we disable mediaStreamTrack when there\n                // are no attachments to it (see notes below). Now that there\n                // are attachments re-enable the track.\n                this.mediaStreamTrack.enabled = true;\n                if (this.processedTrack) {\n                    this.processedTrack.enabled = true;\n                }\n                // NOTE(csantos): since remote tracks disables/enables the mediaStreamTrack,\n                // captureFrames stops along with it. We need to start it again after re-enabling.\n                // See attach/detach methods in this class and in VideoTrack class.\n                if (this.processor) {\n                    this._captureFrames();\n                }\n            }\n            if (this._workaroundWebKitBug212780) {\n                this._workaroundWebKitBug212780Cleanup = this._workaroundWebKitBug212780Cleanup\n                    || playIfPausedWhileInBackground(this);\n            }\n            return result;\n        };\n        RemoteMediaTrack.prototype.detach = function (el) {\n            var result = _super.prototype.detach.call(this, el);\n            if (this._attachments.size === 0) {\n                // NOTE(mpatwardhan): chrome continues playing webrtc audio\n                // track even after audio element is removed from the DOM.\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=749928\n                // to workaround: here disable the track when\n                // there are no elements attached to it.\n                this.mediaStreamTrack.enabled = false;\n                if (this.processedTrack) {\n                    this.processedTrack.enabled = false;\n                }\n                if (this._workaroundWebKitBug212780Cleanup) {\n                    // unhook visibility change\n                    this._workaroundWebKitBug212780Cleanup();\n                    this._workaroundWebKitBug212780Cleanup = null;\n                }\n            }\n            return result;\n        };\n        return RemoteMediaTrack;\n    }(AudioOrVideoTrack));\n}\nfunction playIfPausedWhileInBackground(remoteMediaTrack) {\n    var log = remoteMediaTrack._log, kind = remoteMediaTrack.kind;\n    function onVisibilityChanged(isVisible) {\n        if (!isVisible) {\n            return;\n        }\n        remoteMediaTrack._attachments.forEach(function (el) {\n            var shim = remoteMediaTrack._elShims.get(el);\n            var isInadvertentlyPaused = el.paused && shim && !shim.pausedIntentionally();\n            if (isInadvertentlyPaused) {\n                log.info(\"Playing inadvertently paused <\".concat(kind, \"> element\"));\n                log.debug('Element:', el);\n                log.debug('RemoteMediaTrack:', remoteMediaTrack);\n                el.play().then(function () {\n                    log.info(\"Successfully played inadvertently paused <\".concat(kind, \"> element\"));\n                    log.debug('Element:', el);\n                    log.debug('RemoteMediaTrack:', remoteMediaTrack);\n                }).catch(function (err) {\n                    log.warn(\"Error while playing inadvertently paused <\".concat(kind, \"> element:\"), { err: err, el: el, remoteMediaTrack: remoteMediaTrack });\n                });\n            }\n        });\n    }\n    // NOTE(mpatwardhan): listen for document visibility callback on phase 2.\n    // this ensures that any LocalMediaTrack's restart (which listen on phase 1) gets executed\n    // first. This order is important because we `play` tracks in the callback, and\n    // play can fail on safari if audio is not being captured.\n    documentVisibilityMonitor.onVisibilityChange(2, onVisibilityChanged);\n    return function () {\n        documentVisibilityMonitor.offVisibilityChange(2, onVisibilityChanged);\n    };\n}\n/**\n * A {@link RemoteMediaTrack} was disabled.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   disabled\n * @event RemoteMediaTrack#disabled\n */\n/**\n * A {@link RemoteMediaTrack} was enabled.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   enabled\n * @event RemoteMediaTrack#enabled\n */\n/**\n * A {@link RemoteMediaTrack} was switched off.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   switched off\n * @event RemoteMediaTrack#switchedOff\n */\n/**\n * A {@link RemoteMediaTrack} was switched on.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n *   switched on\n * @event RemoteMediaTrack#switchedOn\n */\n/**\n * A {@link ClientRenderHint} object specifies track dimensions and /enabled disable state.\n * This state will be used by the server(SFU) to determine bandwidth allocation for the track,\n * and turn it on or off as needed.\n * @typedef {object} ClientRenderHint\n * @property {boolean} [enabled] - track is enabled or disabled. defaults to disabled.\n * @property {VideoTrack.Dimensions} [renderDimensions] - Optional parameter to specify the desired\n *   render dimensions of {@link RemoteVideoTrack}s. This property must be specified if enabled=true\n */\nmodule.exports = mixinRemoteMediaTrack;\n\n},{\"../../util/browserdetection\":138,\"../../util/constants\":140,\"../../util/documentvisibilitymonitor.js\":143}],50:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackPublication = require('./trackpublication');\n/**\n * A {@link RemoteTrackPublication} represents a {@link RemoteTrack} that has\n * been published to a {@link Room}.\n * @extends TrackPublication\n * @property {boolean} isSubscribed - whether the published {@link RemoteTrack}\n *   is subscribed to\n * @property {boolean} isTrackEnabled - whether the published\n *   {@link RemoteTrack} is enabled\n * @property {Track.Kind} kind - kind of the published {@link RemoteTrack}\n * @property {Track.Priority} publishPriority - the {@link Track.Priority} of the published\n *   {@link RemoteTrack} set by the {@link RemoteParticipant}\n * @property {?RemoteTrack} track - Unless you have subscribed to the\n *   {@link RemoteTrack}, this property is null\n * @emits RemoteTrackPublication#publishPriorityChanged\n * @emits RemoteTrackPublication#subscribed\n * @emits RemoteTrackPublication#subscriptionFailed\n * @emits RemoteTrackPublication#trackDisabled\n * @emits RemoteTrackPublication#trackEnabled\n * @emits RemoteTrackPublication#trackSwitchedOff\n * @emits RemoteTrackPublication#trackSwitchedOn\n * @emits RemoteTrackPublication#unsubscribed\n *\n */\nvar RemoteTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteTrackPublication(signaling, options) {\n        var _this = _super.call(this, signaling.name, signaling.sid, options) || this;\n        Object.defineProperties(_this, {\n            _signaling: {\n                value: signaling\n            },\n            _track: {\n                value: null,\n                writable: true\n            },\n            isSubscribed: {\n                enumerable: true,\n                get: function () {\n                    return !!this._track;\n                }\n            },\n            isTrackEnabled: {\n                enumerable: true,\n                get: function () {\n                    return signaling.isEnabled;\n                }\n            },\n            kind: {\n                enumerable: true,\n                value: signaling.kind\n            },\n            publishPriority: {\n                enumerable: true,\n                get: function () {\n                    return signaling.priority;\n                }\n            },\n            track: {\n                enumerable: true,\n                get: function () {\n                    return this._track;\n                }\n            }\n        });\n        // remember original state, and fire events only on change.\n        var error = signaling.error, isEnabled = signaling.isEnabled, isSwitchedOff = signaling.isSwitchedOff, priority = signaling.priority;\n        signaling.on('updated', function () {\n            if (error !== signaling.error) {\n                error = signaling.error;\n                _this.emit('subscriptionFailed', signaling.error);\n                return;\n            }\n            if (isEnabled !== signaling.isEnabled) {\n                isEnabled = signaling.isEnabled;\n                if (_this.track) {\n                    _this.track._setEnabled(signaling.isEnabled);\n                }\n                _this.emit(signaling.isEnabled ? 'trackEnabled' : 'trackDisabled');\n            }\n            if (isSwitchedOff !== signaling.isSwitchedOff) {\n                _this._log.debug(\"\".concat(_this.trackSid, \": \").concat(isSwitchedOff ? 'OFF' : 'ON', \" => \").concat(signaling.isSwitchedOff ? 'OFF' : 'ON'));\n                isSwitchedOff = signaling.isSwitchedOff;\n                if (_this.track) {\n                    _this.track._setSwitchedOff(signaling.isSwitchedOff);\n                    _this.emit(isSwitchedOff ? 'trackSwitchedOff' : 'trackSwitchedOn', _this.track);\n                }\n                else if (isSwitchedOff) {\n                    _this._log.warn('Track was not subscribed when switched Off.');\n                }\n            }\n            if (priority !== signaling.priority) {\n                priority = signaling.priority;\n                _this.emit('publishPriorityChanged', priority);\n            }\n        });\n        return _this;\n    }\n    RemoteTrackPublication.prototype.toString = function () {\n        return \"[RemoteTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} track\n     */\n    RemoteTrackPublication.prototype._subscribed = function (track) {\n        if (!this._track && track) {\n            this._track = track;\n            this.emit('subscribed', track);\n        }\n    };\n    /**\n     * @private\n     */\n    RemoteTrackPublication.prototype._unsubscribe = function () {\n        if (this._track) {\n            var track = this._track;\n            this._track = null;\n            this.emit('unsubscribed', track);\n        }\n    };\n    return RemoteTrackPublication;\n}(TrackPublication));\n/**\n * The {@link RemoteTrack}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n *   {@link Track.Priority}; RemoteTrackPublication#publishPriority is also\n *   updated accordingly\n * @event RemoteTrackPublication#publishPriorityChanged\n */\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteTrack}.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was subscribed to\n * @event RemoteTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteTrack} could not be\n *   subscribed to\n * @event RemoteTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteTrack} was disabled.\n * @event RemoteTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteTrack} was enabled.\n * @event RemoteTrackPublication#trackEnabled\n */\n/**\n * The {@link RemoteTrack} was switched off.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was switched off\n * @event RemoteTrackPublication#trackSwitchedOff\n */\n/**\n * The {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was switched on\n * @event RemoteTrackPublication#trackSwitchedOn\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteTrack}.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was unsubscribed from\n * @event RemoteTrackPublication#unsubscribed\n */\n/**\n * {@link RemoteTrackPublication} options\n * @typedef {object} RemoteTrackPublicationOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n */\nmodule.exports = RemoteTrackPublication;\n\n},{\"./trackpublication\":54}],51:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar mixinRemoteMediaTrack = require('./remotemediatrack');\nvar VideoTrack = require('./videotrack');\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nvar NullObserver = require('../../util/nullobserver.js').NullObserver;\nvar Timeout = require('../../util/timeout');\nvar RemoteMediaVideoTrack = mixinRemoteMediaTrack(VideoTrack);\nvar TRACK_TURN_OFF_DELAY_MS = 50;\n/**\n * A {@link RemoteVideoTrack} represents a {@link VideoTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @extends VideoTrack\n * @property {boolean} isEnabled - Whether the {@link RemoteVideoTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteVideoTrack} is switched off\n * @property {Track.SID} sid - The {@link RemoteVideoTrack}'s SID\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteVideoTrack}\n * @emits RemoteVideoTrack#dimensionsChanged\n * @emits RemoteVideoTrack#disabled\n * @emits RemoteVideoTrack#enabled\n * @emits RemoteVideoTrack#started\n * @emits RemoteVideoTrack#switchedOff\n * @emits RemoteVideoTrack#switchedOn\n */\nvar RemoteVideoTrack = /** @class */ (function (_super) {\n    __extends(RemoteVideoTrack, _super);\n    /**\n     * Construct a {@link RemoteVideoTrack}.\n     * @param {Track.SID} sid - The {@link RemoteVideoTrack}'s SID\n     * @param {MediaTrackReceiver} mediaTrackReceiver - A video MediaStreamTrack container\n     * @param {boolean} isEnabled - whether the {@link RemoteVideoTrack} is enabled\n     * @param {boolean} isSwitchedOff - Whether the {@link RemoteVideoTrack} is switched off\n     * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n     *  {@link Track.Priority} of the {@link RemoteVideoTrack}\n     * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n     * @param {{log: Log}} options - The {@link RemoteTrack} options\n     */\n    function RemoteVideoTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n        var _this = this;\n        options = Object.assign({\n            clientTrackSwitchOffControl: 'auto',\n            contentPreferencesMode: 'auto',\n            enableDocumentVisibilityTurnOff: true,\n        }, options);\n        options = Object.assign({\n            IntersectionObserver: typeof IntersectionObserver === 'undefined' || options.clientTrackSwitchOffControl !== 'auto' ? NullObserver : IntersectionObserver,\n            ResizeObserver: typeof ResizeObserver === 'undefined' || options.contentPreferencesMode !== 'auto' ? NullObserver : ResizeObserver,\n        }, options);\n        _this = _super.call(this, sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) || this;\n        Object.defineProperties(_this, {\n            _enableDocumentVisibilityTurnOff: {\n                value: options.enableDocumentVisibilityTurnOff === true && options.clientTrackSwitchOffControl === 'auto',\n            },\n            _documentVisibilityTurnOffCleanup: {\n                value: null,\n                writable: true\n            },\n            _clientTrackSwitchOffControl: {\n                value: options.clientTrackSwitchOffControl,\n            },\n            _contentPreferencesMode: {\n                value: options.contentPreferencesMode,\n            },\n            _invisibleElements: {\n                value: new WeakSet(),\n            },\n            _elToPipCallbacks: {\n                value: new WeakMap(),\n            },\n            _elToPipWindows: {\n                value: new WeakMap(),\n            },\n            _turnOffTimer: {\n                value: new Timeout(function () {\n                    _this._setRenderHint({ enabled: false });\n                }, TRACK_TURN_OFF_DELAY_MS, false),\n            },\n            _resizeObserver: {\n                value: new options.ResizeObserver(function (entries) {\n                    // NOTE(mpatwardhan): we ignore elements in _invisibleElements\n                    // to ensure that ResizeObserver does not end-up turning off a track when a fresh Video element is\n                    // attached and IntersectionObserver has not had its callback executed yet.\n                    var visibleElementResized = entries.find(function (entry) { return !_this._invisibleElements.has(entry.target); });\n                    if (visibleElementResized) {\n                        maybeUpdateDimensionHint(_this);\n                    }\n                })\n            },\n            _intersectionObserver: {\n                value: new options.IntersectionObserver(function (entries) {\n                    var shouldSetRenderHint = false;\n                    entries.forEach(function (entry) {\n                        var wasVisible = !_this._invisibleElements.has(entry.target);\n                        if (wasVisible !== entry.isIntersecting) {\n                            if (entry.isIntersecting) {\n                                _this._log.debug('intersectionObserver detected: Off => On');\n                                _this._invisibleElements.delete(entry.target);\n                            }\n                            else {\n                                _this._log.debug('intersectionObserver detected: On => Off');\n                                _this._invisibleElements.add(entry.target);\n                            }\n                            shouldSetRenderHint = true;\n                        }\n                    });\n                    if (shouldSetRenderHint) {\n                        maybeUpdateEnabledHint(_this);\n                        // when visibility of an element changes that may cause the \"biggest\" element to change,\n                        // update dimensions as well. since dimensions are cached and de-duped at signaling layer,\n                        // its okay if they got  resent.\n                        maybeUpdateDimensionHint(_this);\n                    }\n                }, { threshold: 0.25 })\n            },\n        });\n        return _this;\n    }\n    /**\n     * @private\n     */\n    RemoteVideoTrack.prototype._start = function (dummyEl) {\n        var result = _super.prototype._start.call(this, dummyEl);\n        // NOTE(mpatwardhan): after emitting started, update turn off track if not visible.\n        maybeUpdateEnabledHint(this);\n        return result;\n    };\n    /**\n     * Request to switch on a {@link RemoteVideoTrack}, This method is applicable only for the group rooms and only when connected with\n     * clientTrackSwitchOffControl in video bandwidth profile options set to 'manual'\n     * @returns {this}\n     */\n    RemoteVideoTrack.prototype.switchOn = function () {\n        if (this._clientTrackSwitchOffControl !== 'manual') {\n            throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to \"manual\"');\n        }\n        this._setRenderHint({ enabled: true });\n        return this;\n    };\n    /**\n     * Request to switch off a {@link RemoteVideoTrack}, This method is applicable only for the group rooms and only when connected with\n     * clientTrackSwitchOffControl in video bandwidth profile options set to 'manual'\n     * @returns {this}\n     */\n    RemoteVideoTrack.prototype.switchOff = function () {\n        if (this._clientTrackSwitchOffControl !== 'manual') {\n            throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to \"manual\"');\n        }\n        this._setRenderHint({ enabled: false });\n        return this;\n    };\n    /**\n     * Set the {@link RemoteVideoTrack}'s content preferences. This method is applicable only for the group rooms and only when connected with\n     * videoContentPreferencesMode in video bandwidth profile options set to 'manual'\n     * @param {VideoContentPreferences} contentPreferences - requested preferences.\n     * @returns {this}\n     */\n    RemoteVideoTrack.prototype.setContentPreferences = function (contentPreferences) {\n        if (this._contentPreferencesMode !== 'manual') {\n            throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to \"manual\"');\n        }\n        if (contentPreferences.renderDimensions) {\n            this._setRenderHint({ renderDimensions: contentPreferences.renderDimensions });\n        }\n        return this;\n    };\n    RemoteVideoTrack.prototype._unObservePip = function (el) {\n        var pipCallbacks = this._elToPipCallbacks.get(el);\n        if (pipCallbacks) {\n            el.removeEventListener('enterpictureinpicture', pipCallbacks.onEnterPip);\n            el.removeEventListener('leavepictureinpicture', pipCallbacks.onLeavePip);\n            this._elToPipCallbacks.delete(el);\n        }\n    };\n    RemoteVideoTrack.prototype._observePip = function (el) {\n        var _this = this;\n        var pipCallbacks = this._elToPipCallbacks.get(el);\n        if (!pipCallbacks) {\n            var onEnterPip = function (event) { return _this._onEnterPip(event, el); };\n            var onLeavePip = function (event) { return _this._onLeavePip(event, el); };\n            var onResizePip = function (event) { return _this._onResizePip(event, el); };\n            el.addEventListener('enterpictureinpicture', onEnterPip);\n            el.addEventListener('leavepictureinpicture', onLeavePip);\n            this._elToPipCallbacks.set(el, { onEnterPip: onEnterPip, onLeavePip: onLeavePip, onResizePip: onResizePip });\n        }\n    };\n    RemoteVideoTrack.prototype._onEnterPip = function (event, videoEl) {\n        this._log.debug('onEnterPip');\n        var pipWindow = event.pictureInPictureWindow;\n        this._elToPipWindows.set(videoEl, pipWindow);\n        var onResizePip = this._elToPipCallbacks.get(videoEl).onResizePip;\n        pipWindow.addEventListener('resize', onResizePip);\n        maybeUpdateEnabledHint(this);\n    };\n    RemoteVideoTrack.prototype._onLeavePip = function (event, videoEl) {\n        this._log.debug('onLeavePip');\n        this._elToPipWindows.delete(videoEl);\n        var onResizePip = this._elToPipCallbacks.get(videoEl).onResizePip;\n        var pipWindow = event.pictureInPictureWindow;\n        pipWindow.removeEventListener('resize', onResizePip);\n        maybeUpdateEnabledHint(this);\n    };\n    RemoteVideoTrack.prototype._onResizePip = function () {\n        maybeUpdateDimensionHint(this);\n    };\n    RemoteVideoTrack.prototype.attach = function (el) {\n        var result = _super.prototype.attach.call(this, el);\n        if (this._clientTrackSwitchOffControl === 'auto') {\n            // start off the element as invisible. will mark it\n            // visible (and update render hints) once intersection observer calls back.\n            this._invisibleElements.add(result);\n        }\n        this._intersectionObserver.observe(result);\n        this._resizeObserver.observe(result);\n        if (this._enableDocumentVisibilityTurnOff) {\n            this._documentVisibilityTurnOffCleanup = this._documentVisibilityTurnOffCleanup || setupDocumentVisibilityTurnOff(this);\n        }\n        this._observePip(result);\n        return result;\n    };\n    RemoteVideoTrack.prototype.detach = function (el) {\n        var _this = this;\n        var result = _super.prototype.detach.call(this, el);\n        var elements = Array.isArray(result) ? result : [result];\n        elements.forEach(function (element) {\n            _this._intersectionObserver.unobserve(element);\n            _this._resizeObserver.unobserve(element);\n            _this._invisibleElements.delete(element);\n            _this._unObservePip(element);\n        });\n        if (this._attachments.size === 0) {\n            if (this._documentVisibilityTurnOffCleanup) {\n                this._documentVisibilityTurnOffCleanup();\n                this._documentVisibilityTurnOffCleanup = null;\n            }\n        }\n        maybeUpdateEnabledHint(this);\n        maybeUpdateDimensionHint(this);\n        return result;\n    };\n    /**\n     * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n     * When a Participant un-publishes and re-publishes a VideoTrack, a new RemoteVideoTrack is created and\n     * any VideoProcessors attached to the previous RemoteVideoTrack would have to be re-added again.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n     * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const grayscaleProcessor = new GrayScaleProcessor(100);\n     *\n     * Array.from(room.participants.values()).forEach(participant => {\n     *   const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n     *   remoteVideoTrack.addProcessor(grayscaleProcessor);\n     * });\n     */\n    RemoteVideoTrack.prototype.addProcessor = function () {\n        return _super.prototype.addProcessor.apply(this, arguments);\n    };\n    /**\n     * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * const grayscaleProcessor = new GrayScaleProcessor(100);\n     *\n     * Array.from(room.participants.values()).forEach(participant => {\n     *   const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n     *   remoteVideoTrack.addProcessor(grayscaleProcessor);\n     * });\n     *\n     * document.getElementById('remove-button').onclick = () => {\n     *   Array.from(room.participants.values()).forEach(participant => {\n     *     const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n     *     remoteVideoTrack.removeProcessor(grayscaleProcessor);\n     *   });\n     * }\n     */\n    RemoteVideoTrack.prototype.removeProcessor = function () {\n        return _super.prototype.removeProcessor.apply(this, arguments);\n    };\n    RemoteVideoTrack.prototype.toString = function () {\n        return \"[RemoteVideoTrack #\".concat(this._instanceId, \": \").concat(this.sid, \"]\");\n    };\n    /**\n     * Update the subscribe {@link Track.Priority} of the {@link RemoteVideoTrack}.\n     * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n     *   If <code>null</code>, then the subscribe {@link Track.Priority} is cleared, which\n     *   means the {@link Track.Priority} set by the publisher is now the effective priority.\n     * @returns {this}\n     * @throws {RangeError}\n     */\n    RemoteVideoTrack.prototype.setPriority = function (priority) {\n        return _super.prototype.setPriority.call(this, priority);\n    };\n    return RemoteVideoTrack;\n}(RemoteMediaVideoTrack));\nfunction isAttachedToDocumentPip(remoteVideoTrack) {\n    if (!('documentPictureInPicture' in globalThis)) {\n        return false;\n    }\n    var pipWindow = globalThis.documentPictureInPicture.window;\n    if (!pipWindow) {\n        return false;\n    }\n    var pipEls = new WeakSet(pipWindow.document.querySelectorAll('video'));\n    return remoteVideoTrack._getAllAttachedElements().some(function (el) { return pipEls.has(el); });\n}\nfunction maybeUpdateEnabledHint(remoteVideoTrack) {\n    if (remoteVideoTrack._clientTrackSwitchOffControl !== 'auto') {\n        return;\n    }\n    var visibleElements = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return !remoteVideoTrack._invisibleElements.has(el); });\n    var pipWindows = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return remoteVideoTrack._elToPipWindows.has(el); });\n    // even when document is invisible we may have track playing in pip window.\n    var enabled = pipWindows.length > 0 ||\n        isAttachedToDocumentPip(remoteVideoTrack) ||\n        (document.visibilityState === 'visible' && visibleElements.length > 0);\n    if (enabled === true) {\n        remoteVideoTrack._turnOffTimer.clear();\n        remoteVideoTrack._setRenderHint({ enabled: true });\n        // Check if videos in document PiP are actually playing\n        VideoTrack._ensureDocumentPipVideosPlaying(remoteVideoTrack);\n    }\n    else if (!remoteVideoTrack._turnOffTimer.isSet) {\n        // set the track to be turned off after some delay.\n        remoteVideoTrack._turnOffTimer.start();\n    }\n}\nfunction maybeUpdateDimensionHint(remoteVideoTrack) {\n    if (remoteVideoTrack._contentPreferencesMode !== 'auto') {\n        return;\n    }\n    var visibleElements = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return !remoteVideoTrack._invisibleElements.has(el); });\n    var pipElements = remoteVideoTrack._getAllAttachedElements().map(function (el) {\n        var pipWindow = remoteVideoTrack._elToPipWindows.get(el);\n        return pipWindow ? { clientHeight: pipWindow.height, clientWidth: pipWindow.width } : { clientHeight: 0, clientWidth: 0 };\n    });\n    var totalElements = visibleElements.concat(pipElements);\n    if (totalElements.length > 0) {\n        var _a = __read(totalElements.sort(function (el1, el2) {\n            return el2.clientHeight + el2.clientWidth - el1.clientHeight - el1.clientWidth - 1;\n        }), 1), _b = _a[0], clientHeight = _b.clientHeight, clientWidth = _b.clientWidth;\n        var renderDimensions = { height: clientHeight, width: clientWidth };\n        remoteVideoTrack._setRenderHint({ renderDimensions: renderDimensions });\n    }\n}\nfunction setupDocumentVisibilityTurnOff(removeVideoTrack) {\n    function onVisibilityChanged() {\n        maybeUpdateEnabledHint(removeVideoTrack);\n    }\n    documentVisibilityMonitor.onVisibilityChange(1, onVisibilityChanged);\n    return function () {\n        documentVisibilityMonitor.offVisibilityChange(1, onVisibilityChanged);\n    };\n}\n/**\n * @typedef {object} VideoContentPreferences\n * @property {VideoTrack.Dimensions} [renderDimensions] - Render Dimensions to request for the {@link RemoteVideoTrack}.\n */\n/**\n * The {@link RemoteVideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose\n *   dimensions changed\n * @event RemoteVideoTrack#dimensionsChanged\n */\n/**\n * The {@link RemoteVideoTrack} was disabled, i.e. \"paused\".\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   disabled\n * @event RemoteVideoTrack#disabled\n */\n/**\n * The {@link RemoteVideoTrack} was enabled, i.e. \"resumed\".\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   enabled\n * @event RemoteVideoTrack#enabled\n */\n/**\n * The {@link RemoteVideoTrack} started. This means there is enough video data\n * to begin playback.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that started\n * @event RemoteVideoTrack#started\n */\n/**\n * A {@link RemoteVideoTrack} was switched off.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   switched off\n * @event RemoteVideoTrack#switchedOff\n */\n/**\n * A {@link RemoteVideoTrack} was switched on.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n *   switched on\n * @event RemoteVideoTrack#switchedOn\n */\nmodule.exports = RemoteVideoTrack;\n\n},{\"../../util/documentvisibilitymonitor.js\":143,\"../../util/nullobserver.js\":154,\"../../util/timeout\":161,\"./remotemediatrack\":49,\"./videotrack\":57}],52:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteVideoTrackPublication} represents a {@link RemoteVideoTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"video\"\n * @property {?RemoteVideoTrack} track - unless you have subscribed to the\n *   {@link RemoteVideoTrack}, this property is null\n * @emits RemoteVideoTrackPublication#subscribed\n * @emits RemoteVideoTrackPublication#subscriptionFailed\n * @emits RemoteVideoTrackPublication#trackDisabled\n * @emits RemoteVideoTrackPublication#trackEnabled\n * @emits RemoteVideoTrackPublication#unsubscribed\n */\nvar RemoteVideoTrackPublication = /** @class */ (function (_super) {\n    __extends(RemoteVideoTrackPublication, _super);\n    /**\n     * Construct a {@link RemoteVideoTrackPublication}.\n     * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n     * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n     *   options\n     */\n    function RemoteVideoTrackPublication(signaling, options) {\n        return _super.call(this, signaling, options) || this;\n    }\n    RemoteVideoTrackPublication.prototype.toString = function () {\n        return \"[RemoteVideoTrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return RemoteVideoTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteVideoTrack}.\n * @param {RemoteVideoTrack} track - the {@link RemoteVideoTrack} that was subscribed to\n * @event RemoteVideoTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteVideoTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteVideoTrack} could not be\n *   subscribed to\n * @event RemoteVideoTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteVideoTrack} was disabled.\n * @event RemoteVideoTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteVideoTrack} was enabled.\n * @event RemoteVideoTrackPublication#trackEnabled\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteVideoTrack}.\n * @param {RemoteVideoTrack} track - the {@link RemoteVideoTrack} that was unsubscribed from\n * @event RemoteVideoTrackPublication#unsubscribed\n */\nmodule.exports = RemoteVideoTrackPublication;\n\n},{\"./remotetrackpublication\":50}],53:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar MediaTrackTransceiver = require('./transceiver');\n/**\n * A {@link MediaTrackSender} represents one or more local RTCRtpSenders.\n * @extends MediaTrackTransceiver\n * @emits MediaTrackSender#replaced\n */\nvar MediaTrackSender = /** @class */ (function (_super) {\n    __extends(MediaTrackSender, _super);\n    /**\n     * Construct a {@link MediaTrackSender}.\n     * @param {MediaStreamTrack} mediaStreamTrack\n     */\n    function MediaTrackSender(mediaStreamTrack) {\n        var _this = _super.call(this, mediaStreamTrack.id, mediaStreamTrack) || this;\n        Object.defineProperties(_this, {\n            _clones: {\n                value: new Set()\n            },\n            _eventsToReemitters: {\n                value: new Map([\n                    ['mute', function () { return _this.queue('muted'); }],\n                    ['unmute', function () { return _this.queue('unmuted'); }]\n                ])\n            },\n            _senders: {\n                value: new Set()\n            },\n            _senderToPublisherHintCallbacks: {\n                value: new Map()\n            },\n            isPublishing: {\n                enumerable: true,\n                get: function () {\n                    return !!this._clones.size;\n                }\n            },\n            muted: {\n                enumerable: true,\n                get: function () {\n                    return this._track.muted;\n                }\n            }\n        });\n        _this._reemitMediaStreamTrackEvents();\n        return _this;\n    }\n    /**\n     * @private\n     */\n    MediaTrackSender.prototype._reemitMediaStreamTrackEvents = function (mediaStreamTrack) {\n        if (mediaStreamTrack === void 0) { mediaStreamTrack = this._track; }\n        var _a = this, eventsToReemitters = _a._eventsToReemitters, track = _a._track;\n        if (mediaStreamTrack.addEventListener) {\n            eventsToReemitters.forEach(function (reemitter, event) { return mediaStreamTrack.addEventListener(event, reemitter); });\n        }\n        else {\n            eventsToReemitters.forEach(function (reemitter, event) {\n                mediaStreamTrack[\"on\".concat(event)] = reemitter;\n            });\n        }\n        if (track !== mediaStreamTrack) {\n            eventsToReemitters.forEach(function (reemitter, event) { return track.removeEventListener(event, reemitter); });\n            if (track.muted !== mediaStreamTrack.muted) {\n                var reemitter = eventsToReemitters.get(mediaStreamTrack.muted ? 'mute' : 'unmute');\n                reemitter();\n            }\n        }\n    };\n    /**\n     * Return a new {@link MediaTrackSender} containing a clone of the underlying\n     * MediaStreamTrack. No RTCRtpSenders are copied.\n     * @returns {MediaTrackSender}\n     */\n    MediaTrackSender.prototype.clone = function () {\n        var clone = new MediaTrackSender(this.track.clone());\n        this._clones.add(clone);\n        return clone;\n    };\n    /**\n     * Remove a cloned {@link MediaTrackSender}.\n     * @returns {void}\n     */\n    MediaTrackSender.prototype.removeClone = function (clone) {\n        this._clones.delete(clone);\n    };\n    /**\n     * Set the given MediaStreamTrack.\n     * @param {MediaStreamTrack} mediaStreamTrack\n     * @returns {Promise<void>}\n     */\n    MediaTrackSender.prototype.setMediaStreamTrack = function (mediaStreamTrack) {\n        var _this = this;\n        var clones = Array.from(this._clones);\n        var senders = Array.from(this._senders);\n        return Promise.all(clones.map(function (clone) {\n            return clone.setMediaStreamTrack(mediaStreamTrack.clone());\n        }).concat(senders.map(function (sender) {\n            return _this._replaceTrack(sender, mediaStreamTrack);\n        }))).finally(function () {\n            _this._reemitMediaStreamTrackEvents(mediaStreamTrack);\n            _this._track = mediaStreamTrack;\n        });\n    };\n    /**\n     * Add an RTCRtpSender.\n     * @param {RTCRtpSender} sender\n     * @param {?()=>Promise<string>} publisherHintCallback\n     * @returns {this}\n     */\n    MediaTrackSender.prototype.addSender = function (sender, publisherHintCallback) {\n        this._senders.add(sender);\n        if (publisherHintCallback) {\n            this._senderToPublisherHintCallbacks.set(sender, publisherHintCallback);\n        }\n        return this;\n    };\n    /**\n     * Remove an RTCRtpSender.\n     * @param {RTCRtpSender} sender\n     * @returns {this}\n     */\n    MediaTrackSender.prototype.removeSender = function (sender) {\n        this._senders.delete(sender);\n        this._senderToPublisherHintCallbacks.delete(sender);\n        return this;\n    };\n    /**\n     * Applies given encodings, or resets encodings if none specified.\n     * @param {Array<{enabled: boolean, layer_index: number}>|null} encodings\n     * @returns {Promise<string>}\n     */\n    MediaTrackSender.prototype.setPublisherHint = function (encodings) {\n        // Note(mpatwardhan): since publisher hint applies only to group rooms we only look at 1st call callback.\n        var _a = __read(Array.from(this._senderToPublisherHintCallbacks.values()), 1), publisherHintCallback = _a[0];\n        return publisherHintCallback ? publisherHintCallback(encodings) : Promise.resolve('COULD_NOT_APPLY_HINT');\n    };\n    MediaTrackSender.prototype._replaceTrack = function (sender, mediaStreamTrack) {\n        var _this = this;\n        return sender.replaceTrack(mediaStreamTrack).then(function (replaceTrackResult) {\n            // clear any publisherHints and apply default encodings.\n            _this.setPublisherHint(null).catch(function () { });\n            _this.emit('replaced');\n            return replaceTrackResult;\n        });\n    };\n    return MediaTrackSender;\n}(MediaTrackTransceiver));\n/**\n * The {@link MediaTrackSender}'s underlying MediaStreamTrack was muted.\n * @event MediaTrackSender#muted\n */\n/**\n * The {@link MediaTrackSender} replaced the underlying MediaStreamTrack.\n * @event MediaTrackSender#replaced\n */\n/**\n * The {@link MediaTrackSender}'s underlying MediaStreamTrack was unmuted.\n * @event MediaTrackSender#unmuted\n */\nmodule.exports = MediaTrackSender;\n\n},{\"./transceiver\":55}],54:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('../../eventemitter');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, valueToJSON = _a.valueToJSON;\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar nInstances = 0;\n/**\n * A {@link TrackPublication} represents a {@link Track} that\n * has been published to a {@link Room}.\n * @property {string} trackName - the published {@link Track}'s name\n * @property {Track.SID} trackSid - SID assigned to the published {@link Track}\n * @emits TrackPublication#trackDisabled\n * @emits TrackPublication#trackEnabled\n */\nvar TrackPublication = /** @class */ (function (_super) {\n    __extends(TrackPublication, _super);\n    /**\n     * Construct a {@link TrackPublication}.\n     * @param {string} trackName - the published {@link Track}'s name\n     * @param {Track.SID} trackSid - SID assigned to the {@link Track}\n     * @param {TrackPublicationOptions} options - {@link TrackPublication} options\n     */\n    function TrackPublication(trackName, trackSid, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            logLevel: DEFAULT_LOG_LEVEL\n        }, options);\n        var logLevels = buildLogLevels(options.logLevel);\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: nInstances++\n            },\n            _log: {\n                value: options.log ? options.log.createLog('default', _this) : new Log('default', _this, logLevels, options.loggerName)\n            },\n            trackName: {\n                enumerable: true,\n                value: trackName\n            },\n            trackSid: {\n                enumerable: true,\n                value: trackSid\n            }\n        });\n        return _this;\n    }\n    TrackPublication.prototype.toJSON = function () {\n        return valueToJSON(this);\n    };\n    TrackPublication.prototype.toString = function () {\n        return \"[TrackPublication #\".concat(this._instanceId, \": \").concat(this.trackSid, \"]\");\n    };\n    return TrackPublication;\n}(EventEmitter));\n/**\n * The published {@link Track} was disabled.\n * @event TrackPublication#trackDisabled\n */\n/**\n * The published {@link Track} was enabled.\n * @event TrackPublication#trackEnabled\n */\n/**\n * A {@link LocalAudioTrackPublication} or a {@link RemoteAudioTrackPublication}.\n * @typedef {LocalAudioTrackPublication|RemoteAudioTrackPublication} AudioTrackPublication\n */\n/**\n * A {@link LocalDataTrackPublication} or a {@link RemoteDataTrackPublication}.\n * @typedef {LocalDataTrackPublication|RemoteDataTrackPublication} DataTrackPublication\n */\n/**\n * A {@link LocalVideoTrackPublication} or a {@link RemoteVideoTrackPublication}.\n * @typedef {LocalVideoTrackPublication|RemoteVideoTrackPublication} VideoTrackPublication\n */\n/**\n * {@link TrackPublication} options\n * @typedef {object} TrackPublicationOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n */\nmodule.exports = TrackPublication;\n\n},{\"../../eventemitter\":10,\"../../util\":147,\"../../util/constants\":140,\"../../util/log\":151}],55:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackTransceiver = require('../../transceiver');\n/**\n * A {@link MediaTrackTransceiver} represents either one or more local\n * RTCRtpSenders, or a single RTCRtpReceiver.\n * @extends TrackTransceiver\n * @property {MediaStreamTrack} track\n */\nvar MediaTrackTransceiver = /** @class */ (function (_super) {\n    __extends(MediaTrackTransceiver, _super);\n    /**\n     * Construct a {@link MediaTrackTransceiver}.\n     * @param {Track.ID} id - The MediaStreamTrack ID signaled through RSP/SDP\n     * @param {MediaStreamTrack} mediaStreamTrack\n     */\n    function MediaTrackTransceiver(id, mediaStreamTrack) {\n        var _this = _super.call(this, id, mediaStreamTrack.kind) || this;\n        Object.defineProperties(_this, {\n            _track: {\n                value: mediaStreamTrack,\n                writable: true\n            },\n            enabled: {\n                enumerable: true,\n                get: function () {\n                    return this._track.enabled;\n                }\n            },\n            readyState: {\n                enumerable: true,\n                get: function () {\n                    return this._track.readyState;\n                }\n            },\n            track: {\n                enumerable: true,\n                get: function () {\n                    return this._track;\n                }\n            }\n        });\n        return _this;\n    }\n    MediaTrackTransceiver.prototype.stop = function () {\n        this.track.stop();\n        _super.prototype.stop.call(this);\n    };\n    return MediaTrackTransceiver;\n}(TrackTransceiver));\nmodule.exports = MediaTrackTransceiver;\n\n},{\"../../transceiver\":134}],56:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\nvar DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS = require('../../util/constants').DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS;\n/**\n * VideoProcessorEventObserver listens to {@link VideoProcessor} related events\n * and re-emits them as a generic event with some additional information.\n * @extends EventEmitter\n * @emits VideoProcessorEventObserver#event\n */\nvar VideoProcessorEventObserver = /** @class */ (function (_super) {\n    __extends(VideoProcessorEventObserver, _super);\n    /**\n     * Constructor.\n     * @param {Log} log\n     */\n    function VideoProcessorEventObserver(log) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _lastStatsSaveTime: {\n                value: null,\n                writable: true\n            },\n            _lastStatsPublishTime: {\n                value: null,\n                writable: true\n            },\n            _log: {\n                value: log\n            },\n            _processorInfo: {\n                value: null,\n                writable: true\n            },\n            _stats: {\n                value: null,\n                writable: true\n            }\n        });\n        _this.on('add', function (info) {\n            _this._lastStatsSaveTime = Date.now();\n            _this._lastStatsPublishTime = Date.now();\n            _this._processorInfo = info;\n            _this._stats = [];\n            _this._reemitEvent('add', _this._getEventData());\n        });\n        _this.on('remove', function () {\n            var data = _this._getEventData();\n            _this._lastStatsSaveTime = null;\n            _this._lastStatsPublishTime = null;\n            _this._processorInfo = null;\n            _this._stats = null;\n            _this._reemitEvent('remove', data);\n        });\n        _this.on('start', function () {\n            _this._reemitEvent('start', _this._getEventData());\n        });\n        _this.on('stop', function (message) {\n            _this._reemitEvent('stop', Object.assign({ message: message }, _this._getEventData()));\n        });\n        _this.on('stats', function () { return _this._maybeEmitStats(); });\n        return _this;\n    }\n    /**\n     * @private\n     */\n    VideoProcessorEventObserver.prototype._getEventData = function () {\n        if (!this._processorInfo) {\n            return {};\n        }\n        var _a = this._processorInfo, processor = _a.processor, captureHeight = _a.captureHeight, captureWidth = _a.captureWidth, inputFrameRate = _a.inputFrameRate, isRemoteVideoTrack = _a.isRemoteVideoTrack, inputFrameBufferType = _a.inputFrameBufferType, outputFrameBufferContextType = _a.outputFrameBufferContextType;\n        var data = { captureHeight: captureHeight, captureWidth: captureWidth, inputFrameRate: inputFrameRate, isRemoteVideoTrack: isRemoteVideoTrack, inputFrameBufferType: inputFrameBufferType, outputFrameBufferContextType: outputFrameBufferContextType };\n        data.name = processor._name || 'VideoProcessor';\n        ['assetsPath', 'blurFilterRadius', 'debounce', 'fitType', 'isSimdEnabled', 'maskBlurRadius', 'pipeline', 'version'].forEach(function (prop) {\n            var val = processor[\"_\".concat(prop)];\n            if (typeof val !== 'undefined') {\n                data[prop] = val;\n            }\n        });\n        Object.keys(data).forEach(function (prop) {\n            var val = data[prop];\n            if (typeof val === 'boolean') {\n                data[prop] = val ? 'true' : 'false';\n            }\n        });\n        return data;\n    };\n    /**\n     * Save stats every second. If a specific time interval has elapsed,\n     * the stats event will be emitted\n     * @private\n     */\n    VideoProcessorEventObserver.prototype._maybeEmitStats = function () {\n        if (!this._stats || !this._processorInfo) {\n            return;\n        }\n        var benchmark = this._processorInfo.processor._benchmark;\n        if (!benchmark) {\n            return;\n        }\n        var now = Date.now();\n        if (now - this._lastStatsSaveTime < 1000) {\n            return;\n        }\n        var entry = { outputFrameRate: benchmark.getRate('totalProcessingDelay') };\n        ['captureFrameDelay', 'imageCompositionDelay', 'inputImageResizeDelay', 'processFrameDelay', 'segmentationDelay'].forEach(function (name) {\n            entry[name] = benchmark.getAverageDelay(name);\n        });\n        this._lastStatsSaveTime = now;\n        this._stats.push(entry);\n        if (now - this._lastStatsPublishTime < DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS) {\n            return;\n        }\n        this._lastStatsPublishTime = now;\n        var stats = this._stats.splice(0);\n        var averages = stats.reduce(function (averages, current, n) {\n            Object.keys(entry).forEach(function (name) {\n                if (!averages[name]) {\n                    averages[name] = 0;\n                }\n                averages[name] = ((averages[name] * n) + current[name]) / (n + 1);\n            });\n            return averages;\n        }, {});\n        Object.keys(averages).forEach(function (name) {\n            averages[name] = parseFloat(averages[name].toFixed(2));\n        });\n        this._reemitEvent('stats', Object.assign({}, averages, this._getEventData()));\n    };\n    /**\n     * @private\n     */\n    VideoProcessorEventObserver.prototype._reemitEvent = function (name, data) {\n        this._log.debug(\"VideoProcessor:\".concat(name), data);\n        this.emit('event', { name: name, data: data });\n    };\n    return VideoProcessorEventObserver;\n}(EventEmitter));\nmodule.exports = VideoProcessorEventObserver;\n\n},{\"../../util/constants\":140,\"events\":188}],57:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaTrack = require('./mediatrack');\nvar captureVideoFrames = require('./capturevideoframes');\nvar VideoProcessorEventObserver = require('./videoprocessoreventobserver');\nvar DEFAULT_FRAME_RATE = require('../../util/constants').DEFAULT_FRAME_RATE;\n/**\n * A {@link VideoTrack} is a {@link Track} representing video.\n * @extends Track\n * @property {boolean} isStarted - Whether or not the {@link VideoTrack} has\n *   started; if the {@link VideoTrack} started, there is enough video data to\n *   begin playback\n * @property {boolean} isEnabled - Whether or not the {@link VideoTrack} is\n *   enabled; if the {@link VideoTrack} is not enabled, it is \"paused\"\n * @property {VideoTrack.Dimensions} dimensions - The {@link VideoTrack}'s\n *   {@link VideoTrack.Dimensions}\n * @property {Track.Kind} kind - \"video\"\n * @property {MediaStreamTrack} mediaStreamTrack - A video MediaStreamTrack\n * @property {?MediaStreamTrack} processedTrack - The source of processed video frames.\n * It is null if no VideoProcessor has been added.\n * @property {?VideoProcessor} processor - A {@link VideoProcessor} that is currently\n *   processing video frames. It is null if video frames are not being processed.\n * @emits VideoTrack#dimensionsChanged\n * @emits VideoTrack#disabled\n * @emits VideoTrack#enabled\n * @emits VideoTrack#started\n */\nvar VideoTrack = /** @class */ (function (_super) {\n    __extends(VideoTrack, _super);\n    /**\n     * Construct a {@link VideoTrack}.\n     * @param {MediaTrackTransceiver} mediaTrackTransceiver\n     * @param {{log: Log}} options\n     */\n    function VideoTrack(mediaTrackTransceiver, options) {\n        var _this = _super.call(this, mediaTrackTransceiver, options) || this;\n        Object.defineProperties(_this, {\n            _isCapturing: {\n                value: false,\n                writable: true\n            },\n            _inputFrame: {\n                value: null,\n                writable: true\n            },\n            _outputFrame: {\n                value: null,\n                writable: true\n            },\n            _processorEventObserver: {\n                value: null,\n                writable: true,\n            },\n            _processorOptions: {\n                value: {},\n                writable: true,\n            },\n            _stopCapture: {\n                value: function () { },\n                writable: true\n            },\n            _unmuteHandler: {\n                value: null,\n                writable: true\n            },\n            dimensions: {\n                enumerable: true,\n                value: {\n                    width: null,\n                    height: null\n                }\n            },\n            processor: {\n                enumerable: true,\n                value: null,\n                writable: true\n            },\n            _documentPipWindow: {\n                value: null,\n                writable: true\n            },\n            _documentPipEnterListener: {\n                value: null,\n                writable: true\n            },\n            _documentPipExitListener: {\n                value: null,\n                writable: true\n            }\n        });\n        _this._processorEventObserver = new (options.VideoProcessorEventObserver || VideoProcessorEventObserver)(_this._log);\n        return _this;\n    }\n    /**\n     * @private\n     */\n    VideoTrack.prototype._checkIfCanCaptureFrames = function (isPublishing) {\n        if (isPublishing === void 0) { isPublishing = false; }\n        var canCaptureFrames = true;\n        var message = '';\n        var _a = this.mediaStreamTrack, enabled = _a.enabled, readyState = _a.readyState;\n        if (!enabled) {\n            canCaptureFrames = false;\n            message = 'MediaStreamTrack is disabled';\n        }\n        if (readyState === 'ended') {\n            canCaptureFrames = false;\n            message = 'MediaStreamTrack is ended';\n        }\n        if (!this.processor) {\n            canCaptureFrames = false;\n            message = 'VideoProcessor not detected.';\n        }\n        if (!this._attachments.size && !isPublishing) {\n            canCaptureFrames = false;\n            message = 'VideoTrack is not publishing and there is no attached element.';\n        }\n        if (message) {\n            this._log.debug(message);\n        }\n        return { canCaptureFrames: canCaptureFrames, message: message };\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._captureFrames = function () {\n        var _this = this;\n        if (this._isCapturing) {\n            this._log.debug('Ignoring captureFrames call. Capture is already in progress');\n            return;\n        }\n        if (!this._checkIfCanCaptureFrames().canCaptureFrames) {\n            this._isCapturing = false;\n            this._log.debug('Cannot capture frames. Ignoring captureFrames call.');\n            return;\n        }\n        this._isCapturing = true;\n        this._processorEventObserver.emit('start');\n        this._log.debug('Start capturing frames');\n        var inputFrameBufferType = this._processorOptions.inputFrameBufferType;\n        this._dummyEl.play().then(function () {\n            var process = function (videoFrame) {\n                var checkResult = _this._checkIfCanCaptureFrames();\n                if (!checkResult.canCaptureFrames) {\n                    if (videoFrame) {\n                        videoFrame.close();\n                    }\n                    _this._isCapturing = false;\n                    _this._stopCapture();\n                    _this._processorEventObserver.emit('stop', checkResult.message);\n                    _this._log.debug('Cannot capture frames. Stopping capturing frames.');\n                    return Promise.resolve();\n                }\n                var _a = _this.mediaStreamTrack.getSettings(), _b = _a.width, width = _b === void 0 ? 0 : _b, _c = _a.height, height = _c === void 0 ? 0 : _c;\n                // Setting the canvas' dimension triggers a redraw.\n                // Only set it if it has changed.\n                if (_this._outputFrame && _this._outputFrame.width !== width) {\n                    _this._outputFrame.width = width;\n                    _this._outputFrame.height = height;\n                }\n                if (_this._inputFrame) {\n                    if (_this._inputFrame.width !== width) {\n                        _this._inputFrame.width = width;\n                        _this._inputFrame.height = height;\n                    }\n                    _this._inputFrame.getContext('2d').drawImage(_this._dummyEl, 0, 0, width, height);\n                }\n                var input = videoFrame || (['video', 'videoframe'].includes(inputFrameBufferType)\n                    ? _this._dummyEl\n                    : _this._inputFrame);\n                var result = null;\n                try {\n                    result = _this.processor.processFrame(input, _this._outputFrame);\n                }\n                catch (ex) {\n                    _this._log.debug('Exception detected after calling processFrame.', ex);\n                }\n                return ((result instanceof Promise) ? result : Promise.resolve(result))\n                    .then(function () {\n                    if (_this._outputFrame) {\n                        if (typeof _this.processedTrack.requestFrame === 'function') {\n                            _this.processedTrack.requestFrame();\n                        }\n                        _this._processorEventObserver.emit('stats');\n                    }\n                });\n            };\n            _this._stopCapture = captureVideoFrames(_this._dummyEl, process, inputFrameBufferType);\n        }).catch(function (error) { return _this._log.error('Video element cannot be played', { error: error, track: _this }); });\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._initialize = function () {\n        var _this = this;\n        _super.prototype._initialize.call(this);\n        if (this._dummyEl) {\n            this._dummyEl.onloadedmetadata = function () {\n                if (dimensionsChanged(_this, _this._dummyEl)) {\n                    _this.dimensions.width = _this._dummyEl.videoWidth;\n                    _this.dimensions.height = _this._dummyEl.videoHeight;\n                }\n            };\n            this._dummyEl.onresize = function () {\n                if (dimensionsChanged(_this, _this._dummyEl)) {\n                    _this.dimensions.width = _this._dummyEl.videoWidth;\n                    _this.dimensions.height = _this._dummyEl.videoHeight;\n                    if (_this.isStarted) {\n                        _this._log.debug('Dimensions changed:', _this.dimensions);\n                        _this.emit(VideoTrack.DIMENSIONS_CHANGED, _this);\n                    }\n                }\n            };\n        }\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._restartProcessor = function () {\n        var processor = this.processor;\n        if (processor) {\n            var processorOptions = Object.assign({}, this._processorOptions);\n            this.removeProcessor(processor);\n            this.addProcessor(processor, processorOptions);\n        }\n    };\n    /**\n     * @private\n     */\n    VideoTrack.prototype._start = function (dummyEl) {\n        this.dimensions.width = dummyEl.videoWidth;\n        this.dimensions.height = dummyEl.videoHeight;\n        this._log.debug('Dimensions:', this.dimensions);\n        this.emit(VideoTrack.DIMENSIONS_CHANGED, this);\n        return _super.prototype._start.call(this, dummyEl);\n    };\n    /**\n     * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n     * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   videoTrack.addProcessor(new GrayScaleProcessor(100));\n     * });\n     */\n    VideoTrack.prototype.addProcessor = function (processor, options) {\n        var _this = this;\n        if (!processor || typeof processor.processFrame !== 'function') {\n            throw new Error('Received an invalid VideoProcessor from addProcessor.');\n        }\n        if (this.processor) {\n            throw new Error('A VideoProcessor has already been added.');\n        }\n        if (!this._dummyEl) {\n            throw new Error('VideoTrack has not been initialized.');\n        }\n        this._log.debug('Adding VideoProcessor to the VideoTrack', processor);\n        if (!this._unmuteHandler) {\n            this._unmuteHandler = function () {\n                _this._log.debug('mediaStreamTrack unmuted');\n                // NOTE(csantos): On certain scenarios where mediaStreamTrack is coming from muted to unmuted state,\n                // the processedTrack doesn't unmutes automatically although enabled is already set to true.\n                // This is a terminal state for the processedTrack and should be restarted. (VIDEO-4176)\n                if (_this.processedTrack.muted) {\n                    _this._log.debug('mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor.');\n                    _this._restartProcessor();\n                }\n            };\n            if (this.mediaStreamTrack.addEventListener) {\n                this.mediaStreamTrack.addEventListener('unmute', this._unmuteHandler);\n            }\n            else {\n                this.mediaStreamTrack.onunmute = this._unmuteHandler.bind(this);\n            }\n        }\n        this._processorOptions = options || {};\n        var _a = this._processorOptions, inputFrameBufferType = _a.inputFrameBufferType, outputFrameBufferContextType = _a.outputFrameBufferContextType;\n        if (typeof OffscreenCanvas === 'undefined' && inputFrameBufferType === 'offscreencanvas') {\n            throw new Error('OffscreenCanvas is not supported by this browser.');\n        }\n        if (inputFrameBufferType\n            && inputFrameBufferType !== 'videoframe'\n            && inputFrameBufferType !== 'video'\n            && inputFrameBufferType !== 'canvas'\n            && inputFrameBufferType !== 'offscreencanvas') {\n            throw new Error(\"Invalid inputFrameBufferType of \".concat(inputFrameBufferType));\n        }\n        if (!inputFrameBufferType) {\n            inputFrameBufferType = typeof OffscreenCanvas === 'undefined' ? 'canvas' : 'offscreencanvas';\n        }\n        var _b = this.mediaStreamTrack.getSettings(), _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d, _e = _b.frameRate, frameRate = _e === void 0 ? DEFAULT_FRAME_RATE : _e;\n        if (inputFrameBufferType === 'offscreencanvas') {\n            this._inputFrame = new OffscreenCanvas(width, height);\n        }\n        if (inputFrameBufferType === 'canvas') {\n            this._inputFrame = document.createElement('canvas');\n        }\n        if (this._inputFrame) {\n            this._inputFrame.width = width;\n            this._inputFrame.height = height;\n        }\n        this._outputFrame = document.createElement('canvas');\n        this._outputFrame.width = width;\n        this._outputFrame.height = height;\n        // NOTE(csantos): Initialize the rendering context for future renders. This also ensures\n        // that the correct type is used and on Firefox, it throws an exception if you try to capture\n        // frames prior calling getContext https://bugzilla.mozilla.org/show_bug.cgi?id=1572422\n        outputFrameBufferContextType = outputFrameBufferContextType || '2d';\n        var ctx = this._outputFrame.getContext(outputFrameBufferContextType);\n        if (!ctx) {\n            throw new Error(\"Cannot get outputFrameBufferContextType: \".concat(outputFrameBufferContextType, \".\"));\n        }\n        // NOTE(csantos): Zero FPS means we can control when to render the next frame by calling requestFrame.\n        // Some browsers such as Firefox doesn't support requestFrame so we will use default, which is an undefined value.\n        // This means, the browser will use the highest FPS available.\n        var targetFps = typeof CanvasCaptureMediaStreamTrack !== 'undefined' && CanvasCaptureMediaStreamTrack.prototype &&\n            // eslint-disable-next-line\n            typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame === 'function' ? 0 : undefined;\n        this.processedTrack = this._outputFrame.captureStream(targetFps).getTracks()[0];\n        this.processedTrack.enabled = this.mediaStreamTrack.enabled;\n        this.processor = processor;\n        this._processorEventObserver.emit('add', {\n            processor: processor,\n            captureHeight: height,\n            captureWidth: width,\n            inputFrameRate: frameRate,\n            isRemoteVideoTrack: this.toString().includes('RemoteVideoTrack'),\n            inputFrameBufferType: inputFrameBufferType,\n            outputFrameBufferContextType: outputFrameBufferContextType\n        });\n        this._updateElementsMediaStreamTrack();\n        this._captureFrames();\n        return this;\n    };\n    /**\n     * Create an HTMLVideoElement and attach the {@link VideoTrack} to it.\n     *\n     * The HTMLVideoElement's <code>srcObject</code> will be set to a new\n     * MediaStream containing the {@link VideoTrack}'s MediaStreamTrack.\n     *\n     * @returns {HTMLVideoElement} videoElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   const videoElement = videoTrack.attach();\n     *   document.body.appendChild(videoElement);\n     * });\n    */ /**\n     * Attach the {@link VideoTrack} to an existing HTMLMediaElement. The\n     * HTMLMediaElement could be an HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link VideoTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link MediaTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {HTMLMediaElement} mediaElement - The HTMLMediaElement to attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   videoTrack.attach(videoElement);\n     * });\n    */ /**\n     * Attach the {@link VideoTrack} to an HTMLMediaElement selected by\n     * <code>document.querySelector</code>. The HTMLMediaElement could be an\n     * HTMLAudioElement or an HTMLVideoElement.\n     *\n     * If the HTMLMediaElement's <code>srcObject</code> is not set to a MediaStream,\n     * this method sets it to a new MediaStream containing the {@link VideoTrack}'s\n     * MediaStreamTrack; otherwise, it adds the {@link VideoTrack}'s\n     * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n     * MediaStreamTracks of the same kind on the MediaStream, this method removes\n     * them.\n     *\n     * @param {string} selector - A query selector for the HTMLMediaElement to\n     *   attach to\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const Video = require('twilio-video');\n     *\n     * const videoElement = document.createElement('video');\n     * videoElement.id = 'my-video-element';\n     * document.body.appendChild(videoElement);\n     *\n     * Video.createLocalVideoTrack().then(function(track) {\n     *   track.attach('#my-video-element');\n     * });\n     */\n    VideoTrack.prototype.attach = function () {\n        var result = _super.prototype.attach.apply(this, arguments);\n        // Set up document PiP listener on first attach\n        if (this._attachments.size === 1) {\n            setupDocumentPipListener(this);\n        }\n        if (this.processor) {\n            this._captureFrames();\n        }\n        return result;\n    };\n    /**\n     * Detach the {@link VideoTrack} from all previously attached HTMLMediaElements.\n     * @returns {Array<HTMLMediaElement>} mediaElements\n     * @example\n     * const mediaElements = videoTrack.detach();\n     * mediaElements.forEach(mediaElement => mediaElement.remove());\n    */ /**\n     * Detach the {@link VideoTrack} from a previously attached HTMLMediaElement.\n     * @param {HTMLMediaElement} mediaElement - One of the HTMLMediaElements to\n     *   which the {@link VideoTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * const videoElement = document.getElementById('my-video-element');\n     * videoTrack.detach(videoElement).remove();\n    */ /**\n     * Detach the {@link VideoTrack} from a previously attached HTMLMediaElement\n     *   specified by <code>document.querySelector</code>.\n     * @param {string} selector - The query selector of HTMLMediaElement to which\n     *    the {@link VideoTrack} is attached\n     * @returns {HTMLMediaElement} mediaElement\n     * @example\n     * videoTrack.detach('#my-video-element').remove();\n     */\n    VideoTrack.prototype.detach = function () {\n        var result = _super.prototype.detach.apply(this, arguments);\n        // Clean up document PiP listener when no attachments remain\n        if (this._attachments.size === 0) {\n            cleanupDocumentPipListener(this);\n        }\n        return result;\n    };\n    /**\n     * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n     * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n     * @returns {this}\n     * @example\n     * class GrayScaleProcessor {\n     *   constructor(percentage) {\n     *     this.percentage = percentage;\n     *   }\n     *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n     *     const context = outputFrameBuffer.getContext('2d');\n     *     context.filter = `grayscale(${this.percentage}%)`;\n     *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n     *   }\n     * }\n     *\n     * Video.createLocalVideoTrack().then(function(videoTrack) {\n     *   const grayScaleProcessor = new GrayScaleProcessor(100);\n     *   videoTrack.addProcessor(grayScaleProcessor);\n     *   document.getElementById('remove-button').onclick = () => videoTrack.removeProcessor(grayScaleProcessor);\n     * });\n     */\n    VideoTrack.prototype.removeProcessor = function (processor) {\n        if (!processor) {\n            throw new Error('Received an invalid VideoProcessor from removeProcessor.');\n        }\n        if (!this.processor) {\n            throw new Error('No existing VideoProcessor detected.');\n        }\n        if (processor !== this.processor) {\n            throw new Error('The provided VideoProcessor is different than the existing one.');\n        }\n        this._processorEventObserver.emit('remove');\n        this._log.debug('Removing VideoProcessor from the VideoTrack', processor);\n        this._stopCapture();\n        this._stopCapture = function () { };\n        this.mediaStreamTrack.removeEventListener('unmute', this._unmuteHandler);\n        this._processorOptions = {};\n        this._unmuteHandler = null;\n        this._isCapturing = false;\n        this.processor = null;\n        this.processedTrack = null;\n        this._inputFrame = null;\n        this._outputFrame = null;\n        this._updateElementsMediaStreamTrack();\n        return this;\n    };\n    return VideoTrack;\n}(MediaTrack));\nVideoTrack.DIMENSIONS_CHANGED = 'dimensionsChanged';\nfunction dimensionsChanged(track, elem) {\n    return track.dimensions.width !== elem.videoWidth\n        || track.dimensions.height !== elem.videoHeight;\n}\n/**\n * Set up document PiP listener for a VideoTrack.\n *\n * The received VideoTrack can define `_onDocumentPipEnter` and `_onDocumentPipExit`\n * to handle PiP-specific setup and cleanup.\n * @param {VideoTrack} videoTrack - The VideoTrack to set up the listener for\n * @private\n */\nfunction setupDocumentPipListener(videoTrack) {\n    if (!videoTrack._documentPipEnterListener && 'documentPictureInPicture' in globalThis &&\n        globalThis.documentPictureInPicture &&\n        typeof globalThis.documentPictureInPicture.addEventListener === 'function') {\n        videoTrack._documentPipEnterListener = function (event) {\n            videoTrack._log.debug('document pip entered');\n            videoTrack._documentPipWindow = event.window;\n            // Set up exit listener on the PiP window\n            videoTrack._documentPipExitListener = function () {\n                videoTrack._log.debug('document pip exited');\n                videoTrack._documentPipWindow = null;\n                if (typeof videoTrack._onDocumentPipExit === 'function') {\n                    videoTrack._onDocumentPipExit();\n                }\n            };\n            // Listen for window close on the PiP window\n            if (event.window && typeof event.window.addEventListener === 'function') {\n                event.window.addEventListener('pagehide', videoTrack._documentPipExitListener);\n            }\n            // Immediate fix for any paused videos\n            ensureDocumentPipVideosPlaying(videoTrack);\n            if (typeof videoTrack._onDocumentPipEnter === 'function') {\n                videoTrack._onDocumentPipEnter(event);\n            }\n        };\n        globalThis.documentPictureInPicture.addEventListener('enter', videoTrack._documentPipEnterListener);\n    }\n}\n/**\n * Clean up document PiP listener for VideoTrack\n * @private\n */\nfunction cleanupDocumentPipListener(videoTrack) {\n    if (videoTrack._documentPipEnterListener) {\n        if (globalThis.documentPictureInPicture && typeof globalThis.documentPictureInPicture.removeEventListener === 'function') {\n            globalThis.documentPictureInPicture.removeEventListener('enter', videoTrack._documentPipEnterListener);\n        }\n        // Clean up exit listener from PiP window if it exists\n        if (videoTrack._documentPipWindow && videoTrack._documentPipExitListener &&\n            typeof videoTrack._documentPipWindow.removeEventListener === 'function') {\n            videoTrack._documentPipWindow.removeEventListener('pagehide', videoTrack._documentPipExitListener);\n        }\n        videoTrack._documentPipEnterListener = null;\n        videoTrack._documentPipExitListener = null;\n        videoTrack._documentPipWindow = null;\n    }\n}\n/**\n * This is a workaround to ensure that videos rendered in a document PIP continue playing after being enabled\n * by the Intersection Observer. It appears to be a bug in Chrome, and we should revisit this issue once the\n * Document Picture-in-Picture feature is more reliably supported.\n * @private\n */\nfunction ensureDocumentPipVideosPlaying(videoTrack) {\n    if (!videoTrack._documentPipWindow) {\n        return;\n    }\n    try {\n        var pipEls_1 = new WeakSet(videoTrack._documentPipWindow.document.querySelectorAll('video'));\n        videoTrack._attachments.forEach(function (el) {\n            if (pipEls_1.has(el) && el.paused) {\n                el.play().then(function () {\n                    videoTrack._log.debug('Successfully played inadvertently paused video element in document PiP window');\n                }).catch(function (error) {\n                    videoTrack._log.debug('Failed to play inadvertently paused video element in document PiP window', error);\n                });\n            }\n        });\n    }\n    catch (error) {\n        videoTrack._log.debug('Error checking document PiP video playback:', error);\n    }\n}\n/**\n * A {@link VideoTrack}'s width and height.\n * @typedef {object} VideoTrack.Dimensions\n * @property {?number} width - The {@link VideoTrack}'s width or null if the\n *   {@link VideoTrack} has not yet started\n * @property {?number} height - The {@link VideoTrack}'s height or null if the\n *   {@link VideoTrack} has not yet started\n */\n/**\n * A {@link VideoProcessor}, when added via {@link VideoTrack#addProcessor},\n * is used to process incoming video frames before\n * sending to the encoder or renderer.\n * @typedef {object} VideoProcessor\n * @property {function} processFrame - A callback to receive input and output frame buffers for processing.\n * The input frame buffer contains the original video frame which can be used for additional processing\n * such as applying filters to it. The output frame buffer is used to receive the processed video frame\n * before sending to the encoder or renderer.\n *\n * Any exception raised (either synchronously or asynchronously) in `processFrame` will result in the frame being dropped.\n * This callback has the following signature:<br/><br/>\n * <code>processFrame(</code><br/>\n * &nbsp;&nbsp;<code>inputFrameBuffer: OffscreenCanvas | HTMLCanvasElement | HTMLVideoElement | VideoFrame,</code><br/>\n * &nbsp;&nbsp;<code>outputFrameBuffer: HTMLCanvasElement</code><br/>\n * <code>): Promise&lt;void&gt; | void;</code>\n *\n * @example\n * class GrayScaleProcessor {\n *   constructor(percentage) {\n *     this.percentage = percentage;\n *   }\n *   processFrame(inputFrameBuffer, outputFrameBuffer) {\n *     const context = outputFrameBuffer.getContext('2d');\n *     context.filter = `grayscale(${this.percentage}%)`;\n *     context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n *   }\n * }\n */\n/**\n * Possible options to provide to {@link LocalVideoTrack#addProcessor} and {@link RemoteVideoTrack#addProcessor}.\n * @typedef {object} AddProcessorOptions\n * @property {string} [inputFrameBufferType=\"offscreencanvas\"] - This option allows you to specify what kind of input you want to receive in your\n * Video Processor. The default is `offscreencanvas` and will fallback to a regular `canvas` if the browser does not support it.\n * Possible values include the following.\n * <br/>\n * <br/>\n * `videoframe` - Your Video Processor will receive a [VideoFrame](https://developer.mozilla.org/en-US/docs/Web/API/VideoFrame).\n * On browsers that do not support `VideoFrame`, it will receive an [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) instead.\n * <br/>\n * <br/>\n * `offscreencanvas` - Your Video Processor will receive an [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)\n * which is good for canvas-related processing that can be rendered off screen.\n * <br/>\n * <br/>\n * `canvas` - Your Video Processor will receive an [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement).\n * This is recommended on browsers that doesn't support `OffscreenCanvas`, or if you need to render the frame on the screen.\n * <br/>\n * <br/>\n * `video` - Your Video Processor will receive an [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement).\n * Use this option if you are processing the frame using WebGL or if you only need to [draw](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage)\n * the frame directly to your output canvas.\n * @property {string} [outputFrameBufferContextType=\"2d\"] - The SDK needs the [context type](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext)\n * that your Video Processor uses in order to properly generate the processed track. For example, if your Video Processor uses WebGL2 (`canvas.getContext('webgl2')`),\n * you should set `outputFrameBufferContextType` to `webgl2`. If you're using Canvas 2D processing (`canvas.getContext('2d')`),\n * you should set `outputFrameBufferContextType` to `2d`. If the output frame is an [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap),\n * you should set `outputFrameBufferContextType` to `bitmaprenderer`.\n */\n/**\n * The {@link VideoTrack}'s dimensions changed.\n * @param {VideoTrack} track - The {@link VideoTrack} whose dimensions changed\n * @event VideoTrack#dimensionsChanged\n */\n/**\n * The {@link VideoTrack} was disabled, i.e. \"paused\".\n * @param {VideoTrack} track - The {@link VideoTrack} that was disabled\n * @event VideoTrack#disabled\n */\n/**\n * The {@link VideoTrack} was enabled, i.e. \"unpaused\".\n * @param {VideoTrack} track - The {@link VideoTrack} that was enabled\n * @event VideoTrack#enabled\n */\n/**\n * The {@link VideoTrack} started. This means there is enough video data to\n * begin playback.\n * @param {VideoTrack} track - The {@link VideoTrack} that started\n * @event VideoTrack#started\n */\nVideoTrack._ensureDocumentPipVideosPlaying = ensureDocumentPipVideosPlaying;\nmodule.exports = VideoTrack;\n\n},{\"../../util/constants\":140,\"./capturevideoframes\":28,\"./mediatrack\":42,\"./videoprocessoreventobserver\":56}],58:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar _a = require('./util/constants'), DEFAULT_NQ_LEVEL_LOCAL = _a.DEFAULT_NQ_LEVEL_LOCAL, DEFAULT_NQ_LEVEL_REMOTE = _a.DEFAULT_NQ_LEVEL_REMOTE, MAX_NQ_LEVEL = _a.MAX_NQ_LEVEL;\nvar inRange = require('./util').inRange;\n/**\n * {@link NetworkQualityConfigurationImpl} represents an object which notifies its\n * listeners of any changes in the values of its properties.\n * @extends EventEmitter\n * @implements NetworkQualityConfiguration\n * @property {?NetworkQualityVerbosity} local - Verbosity level for {@link LocalParticipant}\n * @property {?NetworkQualityVerbosity} remote - Verbosity level for {@link RemoteParticipant}s\n */\nvar NetworkQualityConfigurationImpl = /** @class */ (function (_super) {\n    __extends(NetworkQualityConfigurationImpl, _super);\n    /**\n     * Construct an {@link NetworkQualityConfigurationImpl}.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration - Initial {@link NetworkQualityConfiguration}\n     */\n    function NetworkQualityConfigurationImpl(networkQualityConfiguration) {\n        var _this = _super.call(this) || this;\n        networkQualityConfiguration = Object.assign({\n            local: DEFAULT_NQ_LEVEL_LOCAL,\n            remote: DEFAULT_NQ_LEVEL_REMOTE\n        }, networkQualityConfiguration);\n        Object.defineProperties(_this, {\n            local: {\n                value: inRange(networkQualityConfiguration.local, DEFAULT_NQ_LEVEL_LOCAL, MAX_NQ_LEVEL)\n                    ? networkQualityConfiguration.local\n                    : DEFAULT_NQ_LEVEL_LOCAL,\n                writable: true\n            },\n            remote: {\n                value: inRange(networkQualityConfiguration.remote, DEFAULT_NQ_LEVEL_REMOTE, MAX_NQ_LEVEL)\n                    ? networkQualityConfiguration.remote\n                    : DEFAULT_NQ_LEVEL_REMOTE,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * Update the verbosity levels for network quality information for\n     * {@link LocalParticipant} and {@link RemoteParticipant} with those\n     * in the given {@link NetworkQualityConfiguration}.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration - The new {@link NetworkQualityConfiguration}\n     */\n    NetworkQualityConfigurationImpl.prototype.update = function (networkQualityConfiguration) {\n        var _this = this;\n        networkQualityConfiguration = Object.assign({\n            local: this.local,\n            remote: this.remote\n        }, networkQualityConfiguration);\n        [\n            ['local', DEFAULT_NQ_LEVEL_LOCAL, 3],\n            ['remote', DEFAULT_NQ_LEVEL_REMOTE, 3]\n        ].forEach(function (_a) {\n            var _b = __read(_a, 3), localOrRemote = _b[0], min = _b[1], max = _b[2];\n            _this[localOrRemote] = typeof networkQualityConfiguration[localOrRemote] === 'number'\n                && inRange(networkQualityConfiguration[localOrRemote], min, max)\n                ? networkQualityConfiguration[localOrRemote]\n                : min;\n        });\n    };\n    return NetworkQualityConfigurationImpl;\n}(EventEmitter));\nmodule.exports = NetworkQualityConfigurationImpl;\n\n},{\"./util\":147,\"./util/constants\":140,\"events\":188}],59:[function(require,module,exports){\n'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoiseCancellationAudioProcessor = createNoiseCancellationAudioProcessor;\nvar dynamicImport = require('./util/dynamicimport');\nvar Log = require('./util/log');\nvar PLUGIN_CONFIG = {\n    krisp: {\n        supportedVersion: '1.0.0',\n        pluginFile: 'krispsdk.mjs'\n    },\n    rnnoise: {\n        supportedVersion: '0.6.0',\n        pluginFile: 'rnnoise_sdk.mjs'\n    }\n};\nvar ensureVersionSupported = function (_a) {\n    var supportedVersion = _a.supportedVersion, plugin = _a.plugin, log = _a.log;\n    if (!plugin.getVersion || !plugin.isSupported) {\n        throw new Error('Plugin does not export getVersion/isSupported api. Are you using old version of the plugin ?');\n    }\n    var pluginVersion = plugin.getVersion();\n    log.debug(\"Plugin Version = \".concat(pluginVersion));\n    var supportedVersions = supportedVersion.split('.').map(function (version) { return Number(version); });\n    var pluginVersions = pluginVersion.split('.').map(function (version) { return Number(version); });\n    if (supportedVersions.length !== 3 || pluginVersions.length !== 3) {\n        throw new Error(\"Unsupported Plugin version format: \".concat(supportedVersion, \", \").concat(pluginVersion));\n    }\n    if (supportedVersions[0] !== pluginVersions[0]) {\n        throw new Error(\"Major version mismatch: [Plugin version \".concat(pluginVersion, \"],  [Supported Version \").concat(supportedVersion, \"]\"));\n    }\n    if (pluginVersions[1] < supportedVersions[1]) {\n        throw new Error(\"Minor version mismatch: [Plugin version \".concat(pluginVersion, \"] < [Supported Version \").concat(supportedVersion, \"]\"));\n    }\n    var tempContext = new AudioContext();\n    var isSupported = plugin.isSupported(tempContext);\n    tempContext.close();\n    if (!isSupported) {\n        throw new Error('Noise Cancellation plugin is not supported on your browser');\n    }\n};\nvar audioProcessors = new Map();\nfunction createNoiseCancellationAudioProcessor(noiseCancellationOptions, log) {\n    return __awaiter(this, void 0, void 0, function () {\n        var audioProcessor, pluginConfig, supportedVersion, pluginFile, rootDir, sdkFilePath, dynamicModule, plugin_1, er_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    audioProcessor = audioProcessors.get(noiseCancellationOptions.vendor);\n                    if (!!audioProcessor) return [3 /*break*/, 6];\n                    pluginConfig = PLUGIN_CONFIG[noiseCancellationOptions.vendor];\n                    if (!pluginConfig) {\n                        throw new Error(\"Unsupported NoiseCancellationOptions.vendor: \".concat(noiseCancellationOptions.vendor));\n                    }\n                    supportedVersion = pluginConfig.supportedVersion, pluginFile = pluginConfig.pluginFile;\n                    rootDir = noiseCancellationOptions.sdkAssetsPath;\n                    sdkFilePath = \"\".concat(rootDir, \"/\").concat(pluginFile);\n                    _a.label = 1;\n                case 1:\n                    _a.trys.push([1, 5, , 6]);\n                    log.debug('loading noise cancellation sdk: ', sdkFilePath);\n                    return [4 /*yield*/, dynamicImport(sdkFilePath)];\n                case 2:\n                    dynamicModule = _a.sent();\n                    log.debug('Loaded noise cancellation sdk:', dynamicModule);\n                    plugin_1 = dynamicModule.default;\n                    ensureVersionSupported({\n                        supportedVersion: supportedVersion,\n                        plugin: plugin_1,\n                        log: log\n                    });\n                    if (!!plugin_1.isInitialized()) return [3 /*break*/, 4];\n                    log.debug('initializing noise cancellation sdk: ', rootDir);\n                    return [4 /*yield*/, plugin_1.init({ rootDir: rootDir })];\n                case 3:\n                    _a.sent();\n                    log.debug('noise cancellation sdk initialized!');\n                    _a.label = 4;\n                case 4:\n                    audioProcessor = {\n                        vendor: noiseCancellationOptions.vendor,\n                        isInitialized: function () { return plugin_1.isInitialized(); },\n                        isConnected: function () { return plugin_1.isConnected(); },\n                        isEnabled: function () { return plugin_1.isEnabled(); },\n                        disconnect: function () { return plugin_1.disconnect(); },\n                        enable: function () { return plugin_1.enable(); },\n                        disable: function () { return plugin_1.disable(); },\n                        destroy: function () { return plugin_1.destroy(); },\n                        setLogging: function (enable) { return plugin_1.setLogging(enable); },\n                        connect: function (sourceTrack) {\n                            log.debug('connect: ', sourceTrack.id);\n                            if (plugin_1.isConnected()) {\n                                plugin_1.disconnect();\n                            }\n                            var mediaStream = plugin_1.connect(new MediaStream([sourceTrack]));\n                            if (!mediaStream) {\n                                throw new Error('Error connecting with noise cancellation sdk');\n                            }\n                            var cleanTrack = mediaStream.getAudioTracks()[0];\n                            if (!cleanTrack) {\n                                throw new Error('Error getting clean track from noise cancellation sdk');\n                            }\n                            plugin_1.enable();\n                            return cleanTrack;\n                        },\n                    };\n                    audioProcessors.set(noiseCancellationOptions.vendor, audioProcessor);\n                    return [3 /*break*/, 6];\n                case 5:\n                    er_1 = _a.sent();\n                    log.error(\"Error loading noise cancellation sdk:\".concat(sdkFilePath), er_1);\n                    throw er_1;\n                case 6: return [2 /*return*/, audioProcessor];\n            }\n        });\n    });\n}\n\n},{\"./util/dynamicimport\":144,\"./util/log\":151}],60:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventEmitter = require('./eventemitter');\nvar RemoteAudioTrack = require('./media/track/remoteaudiotrack');\nvar RemoteAudioTrackPublication = require('./media/track/remoteaudiotrackpublication');\nvar RemoteDataTrack = require('./media/track/remotedatatrack');\nvar RemoteDataTrackPublication = require('./media/track/remotedatatrackpublication');\nvar RemoteVideoTrack = require('./media/track/remotevideotrack');\nvar RemoteVideoTrackPublication = require('./media/track/remotevideotrackpublication');\nvar util = require('./util');\nvar nInstances = 0;\n/**\n * {@link NetworkQualityLevel} is a value from 0–5, inclusive, representing the\n * quality of a network connection.\n * @typedef {number} NetworkQualityLevel\n */\n/**\n * @extends EventEmitter\n * @property {Map<Track.SID, AudioTrackPublication>} audioTracks -\n *    The {@link Participant}'s {@link AudioTrackPublication}s\n * @property {Map<Track.SID, DataTrackPublication>} dataTracks -\n *    The {@link Participant}'s {@link DataTrackPublication}s.\n * @property {Participant.Identity} identity - The identity of the {@link Participant}\n * @property {?NetworkQualityLevel} networkQualityLevel - The\n *    {@link Participant}'s current {@link NetworkQualityLevel}, if any\n * @property {?NetworkQualityStats} networkQualityStats - The\n *    {@link Participant}'s current {@link NetworkQualityStats}, if any\n * @property {Participant.SID} sid - The {@link Participant}'s SID\n * @property {string} state - \"connected\", \"disconnected\" or \"reconnecting\"\n * @property {Map<Track.SID, TrackPublication>} tracks -\n *    The {@link Participant}'s {@link TrackPublication}s\n * @property {Map<Track.SID, VideoTrackPublication>} videoTracks -\n *    The {@link Participant}'s {@link VideoTrackPublication}s\n * @emits Participant#disconnected\n * @emits Participant#networkQualityLevelChanged\n * @emits Participant#reconnected\n * @emits Participant#reconnecting\n * @emits Participant#trackDimensionsChanged\n * @emits Participant#trackStarted\n */\nvar Participant = /** @class */ (function (_super) {\n    __extends(Participant, _super);\n    /**\n     * Construct a {@link Participant}.\n     * @param {ParticipantSignaling} signaling\n     * @param {object} [options]\n     */\n    function Participant(signaling, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            RemoteAudioTrack: RemoteAudioTrack,\n            RemoteAudioTrackPublication: RemoteAudioTrackPublication,\n            RemoteDataTrack: RemoteDataTrack,\n            RemoteDataTrackPublication: RemoteDataTrackPublication,\n            RemoteVideoTrack: RemoteVideoTrack,\n            RemoteVideoTrackPublication: RemoteVideoTrackPublication,\n            tracks: []\n        }, options);\n        var indexed = indexTracksById(options.tracks);\n        var log = options.log.createLog('default', _this);\n        var audioTracks = new Map(indexed.audioTracks);\n        var dataTracks = new Map(indexed.dataTracks);\n        var tracks = new Map(indexed.tracks);\n        var videoTracks = new Map(indexed.videoTracks);\n        Object.defineProperties(_this, {\n            _RemoteAudioTrack: {\n                value: options.RemoteAudioTrack\n            },\n            _RemoteAudioTrackPublication: {\n                value: options.RemoteAudioTrackPublication\n            },\n            _RemoteDataTrack: {\n                value: options.RemoteDataTrack\n            },\n            _RemoteDataTrackPublication: {\n                value: options.RemoteDataTrackPublication\n            },\n            _RemoteVideoTrack: {\n                value: options.RemoteVideoTrack\n            },\n            _RemoteVideoTrackPublication: {\n                value: options.RemoteVideoTrackPublication\n            },\n            _audioTracks: {\n                value: audioTracks\n            },\n            _dataTracks: {\n                value: dataTracks\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _clientTrackSwitchOffControl: {\n                value: options.clientTrackSwitchOffControl,\n            },\n            _contentPreferencesMode: {\n                value: options.contentPreferencesMode,\n            },\n            _log: {\n                value: log\n            },\n            _signaling: {\n                value: signaling\n            },\n            _tracks: {\n                value: tracks\n            },\n            _trackEventReemitters: {\n                value: new Map()\n            },\n            _trackPublicationEventReemitters: {\n                value: new Map()\n            },\n            _trackSignalingUpdatedEventCallbacks: {\n                value: new Map()\n            },\n            _videoTracks: {\n                value: videoTracks\n            },\n            audioTracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            dataTracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            identity: {\n                enumerable: true,\n                get: function () {\n                    return signaling.identity;\n                }\n            },\n            networkQualityLevel: {\n                enumerable: true,\n                get: function () {\n                    return signaling.networkQualityLevel;\n                }\n            },\n            networkQualityStats: {\n                enumerable: true,\n                get: function () {\n                    return signaling.networkQualityStats;\n                }\n            },\n            sid: {\n                enumerable: true,\n                get: function () {\n                    return signaling.sid;\n                }\n            },\n            state: {\n                enumerable: true,\n                get: function () {\n                    return signaling.state;\n                }\n            },\n            tracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            videoTracks: {\n                enumerable: true,\n                value: new Map()\n            },\n            _MediaStream: {\n                value: options.MediaStream\n            },\n            _mapMediaElement: {\n                value: options.mapMediaElement\n            },\n            _disposeMediaElement: {\n                value: options.disposeMediaElement\n            }\n        });\n        _this._tracks.forEach(reemitTrackEvents.bind(null, _this));\n        signaling.on('networkQualityLevelChanged', function () {\n            return _this.emit('networkQualityLevelChanged', _this.networkQualityLevel, _this.networkQualityStats &&\n                (_this.networkQualityStats.audio || _this.networkQualityStats.video)\n                ? _this.networkQualityStats\n                : null);\n        });\n        reemitSignalingStateChangedEvents(_this, signaling);\n        log.info(\"Created a new Participant\".concat(_this.identity ? \": \".concat(_this.identity) : ''));\n        return _this;\n    }\n    /**\n     * Get the {@link RemoteTrack} events to re-emit.\n     * @private\n     * @returns {Array<Array<string>>} events\n     */\n    Participant.prototype._getTrackEvents = function () {\n        return [\n            ['dimensionsChanged', 'trackDimensionsChanged'],\n            ['message', 'trackMessage'],\n            ['started', 'trackStarted']\n        ];\n    };\n    /**\n     * @private\n     */\n    Participant.prototype._getTrackPublicationEvents = function () {\n        return [];\n    };\n    Participant.prototype.toString = function () {\n        return \"[Participant #\".concat(this._instanceId, \": \").concat(this.sid, \"]\");\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} track\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    Participant.prototype._addTrack = function (track, id) {\n        var log = this._log;\n        if (this._tracks.has(id)) {\n            return null;\n        }\n        this._tracks.set(id, track);\n        var tracksByKind = {\n            audio: this._audioTracks,\n            video: this._videoTracks,\n            data: this._dataTracks\n        }[track.kind];\n        tracksByKind.set(id, track);\n        reemitTrackEvents(this, track, id);\n        log.info(\"Added a new \".concat(util.trackClass(track), \":\"), id);\n        log.debug(\"\".concat(util.trackClass(track), \":\"), track);\n        return track;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    Participant.prototype._addTrackPublication = function (publication) {\n        var log = this._log;\n        if (this.tracks.has(publication.trackSid)) {\n            return null;\n        }\n        this.tracks.set(publication.trackSid, publication);\n        var trackPublicationsByKind = {\n            audio: this.audioTracks,\n            data: this.dataTracks,\n            video: this.videoTracks\n        }[publication.kind];\n        trackPublicationsByKind.set(publication.trackSid, publication);\n        reemitTrackPublicationEvents(this, publication);\n        log.info(\"Added a new \".concat(util.trackPublicationClass(publication), \":\"), publication.trackSid);\n        log.debug(\"\".concat(util.trackPublicationClass(publication), \":\"), publication);\n        return publication;\n    };\n    /**\n     * @private\n     */\n    Participant.prototype._handleTrackSignalingEvents = function () {\n        var _a = this, log = _a._log, clientTrackSwitchOffControl = _a._clientTrackSwitchOffControl, contentPreferencesMode = _a._contentPreferencesMode, MediaStream = _a._MediaStream, mapMediaElement = _a._mapMediaElement, disposeMediaElement = _a._disposeMediaElement;\n        var self = this;\n        if (this.state === 'disconnected') {\n            return;\n        }\n        var RemoteAudioTrack = this._RemoteAudioTrack;\n        var RemoteAudioTrackPublication = this._RemoteAudioTrackPublication;\n        var RemoteVideoTrack = this._RemoteVideoTrack;\n        var RemoteVideoTrackPublication = this._RemoteVideoTrackPublication;\n        var RemoteDataTrack = this._RemoteDataTrack;\n        var RemoteDataTrackPublication = this._RemoteDataTrackPublication;\n        var participantSignaling = this._signaling;\n        function trackSignalingAdded(signaling) {\n            var RemoteTrackPublication = {\n                audio: RemoteAudioTrackPublication,\n                data: RemoteDataTrackPublication,\n                video: RemoteVideoTrackPublication\n            }[signaling.kind];\n            var publication = new RemoteTrackPublication(signaling, { log: log });\n            self._addTrackPublication(publication);\n            var isSubscribed = signaling.isSubscribed;\n            if (isSubscribed) {\n                trackSignalingSubscribed(signaling);\n            }\n            self._trackSignalingUpdatedEventCallbacks.set(signaling.sid, function () {\n                if (isSubscribed !== signaling.isSubscribed) {\n                    isSubscribed = signaling.isSubscribed;\n                    if (isSubscribed) {\n                        trackSignalingSubscribed(signaling);\n                        return;\n                    }\n                    trackSignalingUnsubscribed(signaling);\n                }\n            });\n            signaling.on('updated', self._trackSignalingUpdatedEventCallbacks.get(signaling.sid));\n        }\n        function trackSignalingRemoved(signaling) {\n            if (signaling.isSubscribed) {\n                signaling.setTrackTransceiver(null);\n            }\n            var updated = self._trackSignalingUpdatedEventCallbacks.get(signaling.sid);\n            if (updated) {\n                signaling.removeListener('updated', updated);\n                self._trackSignalingUpdatedEventCallbacks.delete(signaling.sid);\n            }\n            var publication = self.tracks.get(signaling.sid);\n            if (publication) {\n                self._removeTrackPublication(publication);\n            }\n        }\n        function trackSignalingSubscribed(signaling) {\n            var isEnabled = signaling.isEnabled, name = signaling.name, kind = signaling.kind, sid = signaling.sid, trackTransceiver = signaling.trackTransceiver, isSwitchedOff = signaling.isSwitchedOff;\n            var RemoteTrack = {\n                audio: RemoteAudioTrack,\n                video: RemoteVideoTrack,\n                data: RemoteDataTrack\n            }[kind];\n            var publication = self.tracks.get(sid);\n            // NOTE(mroberts): It should never be the case that the TrackSignaling and\n            // MediaStreamTrack or DataTrackReceiver kinds disagree; however, just in\n            // case, we handle it here.\n            if (!RemoteTrack || kind !== trackTransceiver.kind) {\n                return;\n            }\n            var options = { log: log, name: name, clientTrackSwitchOffControl: clientTrackSwitchOffControl, contentPreferencesMode: contentPreferencesMode, mapMediaElement: mapMediaElement, disposeMediaElement: disposeMediaElement };\n            if (MediaStream) {\n                options.MediaStream = MediaStream;\n            }\n            var setPriority = function (newPriority) { return participantSignaling.updateSubscriberTrackPriority(sid, newPriority); };\n            var setRenderHint = function (renderHint) {\n                if (signaling.isSubscribed) {\n                    participantSignaling.updateTrackRenderHint(sid, renderHint);\n                }\n            };\n            var track = kind === 'data'\n                ? new RemoteTrack(sid, trackTransceiver, options)\n                : new RemoteTrack(sid, trackTransceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options);\n            self._addTrack(track, publication, trackTransceiver.id);\n        }\n        function trackSignalingUnsubscribed(signaling) {\n            var _a = __read(Array.from(self._tracks.entries()).find(function (_a) {\n                var _b = __read(_a, 2), track = _b[1];\n                return track.sid === signaling.sid;\n            }), 2), id = _a[0], track = _a[1];\n            var publication = self.tracks.get(signaling.sid);\n            if (track) {\n                self._removeTrack(track, publication, id);\n            }\n        }\n        participantSignaling.on('trackAdded', trackSignalingAdded);\n        participantSignaling.on('trackRemoved', trackSignalingRemoved);\n        participantSignaling.tracks.forEach(trackSignalingAdded);\n        participantSignaling.on('stateChanged', function stateChanged(state) {\n            if (state === 'disconnected') {\n                log.debug('Removing event listeners');\n                participantSignaling.removeListener('stateChanged', stateChanged);\n                participantSignaling.removeListener('trackAdded', trackSignalingAdded);\n                participantSignaling.removeListener('trackRemoved', trackSignalingRemoved);\n            }\n            else if (state === 'connected') {\n                // NOTE(mmalavalli): Any transition to \"connected\" here is a result of\n                // successful signaling reconnection, and not a first-time establishment\n                // of the signaling connection.\n                log.info('reconnected');\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return self.emit('reconnected'); }, 0);\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} track\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    Participant.prototype._removeTrack = function (track, id) {\n        if (!this._tracks.has(id)) {\n            return null;\n        }\n        this._tracks.delete(id);\n        var tracksByKind = {\n            audio: this._audioTracks,\n            video: this._videoTracks,\n            data: this._dataTracks\n        }[track.kind];\n        tracksByKind.delete(id);\n        var reemitters = this._trackEventReemitters.get(id) || new Map();\n        reemitters.forEach(function (reemitter, event) {\n            track.removeListener(event, reemitter);\n        });\n        var log = this._log;\n        log.info(\"Removed a \".concat(util.trackClass(track), \":\"), id);\n        log.debug(\"\".concat(util.trackClass(track), \":\"), track);\n        return track;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    Participant.prototype._removeTrackPublication = function (publication) {\n        publication = this.tracks.get(publication.trackSid);\n        if (!publication) {\n            return null;\n        }\n        this.tracks.delete(publication.trackSid);\n        var trackPublicationsByKind = {\n            audio: this.audioTracks,\n            data: this.dataTracks,\n            video: this.videoTracks\n        }[publication.kind];\n        trackPublicationsByKind.delete(publication.trackSid);\n        var reemitters = this._trackPublicationEventReemitters.get(publication.trackSid) || new Map();\n        reemitters.forEach(function (reemitter, event) {\n            publication.removeListener(event, reemitter);\n        });\n        var log = this._log;\n        log.info(\"Removed a \".concat(util.trackPublicationClass(publication), \":\"), publication.trackSid);\n        log.debug(\"\".concat(util.trackPublicationClass(publication), \":\"), publication);\n        return publication;\n    };\n    Participant.prototype.toJSON = function () {\n        return util.valueToJSON(this);\n    };\n    return Participant;\n}(EventEmitter));\n/**\n * A {@link Participant.SID} is a 34-character string starting with \"PA\"\n * that uniquely identifies a {@link Participant}.\n * @type string\n * @typedef Participant.SID\n */\n/**\n * A {@link Participant.Identity} is a string that identifies a\n * {@link Participant}. You can think of it like a name.\n * @typedef {string} Participant.Identity\n */\n/**\n * The {@link Participant} has disconnected.\n * @param {Participant} participant - The {@link Participant} that disconnected.\n * @event Participant#disconnected\n */\n/**\n * The {@link Participant}'s {@link NetworkQualityLevel} changed.\n * @param {NetworkQualityLevel} networkQualityLevel - The new\n *   {@link NetworkQualityLevel}\n * @param {?NetworkQualityStats} networkQualityStats - The {@link NetworkQualityStats}\n *   based on which {@link NetworkQualityLevel} is calculated, if any\n * @event Participant#networkQualityLevelChanged\n */\n/**\n * The {@link Participant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event Participant#reconnected\n */\n/**\n * The {@link Participant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event Participant#reconnecting\n */\n/**\n * One of the {@link Participant}'s {@link VideoTrack}'s dimensions changed.\n * @param {VideoTrack} track - The {@link VideoTrack} whose dimensions changed\n * @event Participant#trackDimensionsChanged\n */\n/**\n * One of the {@link Participant}'s {@link Track}s started.\n * @param {Track} track - The {@link Track} that started\n * @event Participant#trackStarted\n */\n/**\n * Indexed {@link Track}s by {@link Track.ID}.\n * @typedef {object} IndexedTracks\n * @property {Array<{0: Track.ID, 1: AudioTrack}>} audioTracks - Indexed\n *   {@link AudioTrack}s\n * @property {Array<{0: Track.ID, 1: DataTrack}>} dataTracks - Indexed\n *   {@link DataTrack}s\n * @property {Array<{0: Track.ID, 1: Track}>} tracks - Indexed {@link Track}s\n * @property {Array<{0: Track.ID, 1: VideoTrack}>} videoTracks - Indexed\n *   {@link VideoTrack}s\n * @private\n */\n/**\n * Index tracks by {@link Track.ID}.\n * @param {Array<Track>} tracks\n * @returns {IndexedTracks}\n * @private\n */\nfunction indexTracksById(tracks) {\n    var indexedTracks = tracks.map(function (track) { return [track.id, track]; });\n    var indexedAudioTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'audio'; });\n    var indexedVideoTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'video'; });\n    var indexedDataTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'data'; });\n    return {\n        audioTracks: indexedAudioTracks,\n        dataTracks: indexedDataTracks,\n        tracks: indexedTracks,\n        videoTracks: indexedVideoTracks\n    };\n}\n/**\n * Re-emit {@link ParticipantSignaling} 'stateChanged' events.\n * @param {Participant} participant\n * @param {ParticipantSignaling} signaling\n * @private\n */\nfunction reemitSignalingStateChangedEvents(participant, signaling) {\n    var log = participant._log;\n    if (participant.state === 'disconnected') {\n        return;\n    }\n    // Reemit state transition events from the ParticipantSignaling.\n    signaling.on('stateChanged', function stateChanged(state) {\n        log.debug('Transitioned to state:', state);\n        participant.emit(state, participant);\n        if (state === 'disconnected') {\n            log.debug('Removing Track event reemitters');\n            signaling.removeListener('stateChanged', stateChanged);\n            participant._tracks.forEach(function (track) {\n                var reemitters = participant._trackEventReemitters.get(track.id);\n                if (track && reemitters) {\n                    reemitters.forEach(function (reemitter, event) {\n                        track.removeListener(event, reemitter);\n                    });\n                }\n            });\n            // eslint-disable-next-line no-warning-comments\n            // TODO(joma): Removing this introduced unit test failures in the RemoteParticipant.\n            // Investigate further before removing.\n            signaling.tracks.forEach(function (trackSignaling) {\n                var track = participant._tracks.get(trackSignaling.id);\n                var reemitters = participant._trackEventReemitters.get(trackSignaling.id);\n                if (track && reemitters) {\n                    reemitters.forEach(function (reemitter, event) {\n                        track.removeListener(event, reemitter);\n                    });\n                }\n            });\n            participant._trackEventReemitters.clear();\n            participant.tracks.forEach(function (publication) {\n                participant._trackPublicationEventReemitters.get(publication.trackSid)\n                    .forEach(function (reemitter, event) {\n                    publication.removeListener(event, reemitter);\n                });\n            });\n            participant._trackPublicationEventReemitters.clear();\n        }\n    });\n}\n/**\n * Re-emit {@link Track} events.\n * @param {Participant} participant\n * @param {Track} track\n * @param {Track.ID} id\n * @private\n */\nfunction reemitTrackEvents(participant, track, id) {\n    var trackEventReemitters = new Map();\n    if (participant.state === 'disconnected') {\n        return;\n    }\n    participant._getTrackEvents().forEach(function (eventPair) {\n        var trackEvent = eventPair[0];\n        var participantEvent = eventPair[1];\n        trackEventReemitters.set(trackEvent, function () {\n            var args = [participantEvent].concat([].slice.call(arguments));\n            return participant.emit.apply(participant, __spreadArray([], __read(args), false));\n        });\n        track.on(trackEvent, trackEventReemitters.get(trackEvent));\n    });\n    participant._trackEventReemitters.set(id, trackEventReemitters);\n}\n/**\n * Re-emit {@link TrackPublication} events.\n * @private\n * @param {Participant} participant\n * @param {TrackPublication} publication\n */\nfunction reemitTrackPublicationEvents(participant, publication) {\n    var publicationEventReemitters = new Map();\n    if (participant.state === 'disconnected') {\n        return;\n    }\n    participant._getTrackPublicationEvents().forEach(function (_a) {\n        var _b = __read(_a, 2), publicationEvent = _b[0], participantEvent = _b[1];\n        publicationEventReemitters.set(publicationEvent, function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            participant.emit.apply(participant, __spreadArray(__spreadArray([participantEvent], __read(args), false), [publication], false));\n        });\n        publication.on(publicationEvent, publicationEventReemitters.get(publicationEvent));\n    });\n    participant._trackPublicationEventReemitters.set(publication.trackSid, publicationEventReemitters);\n}\nmodule.exports = Participant;\n\n},{\"./eventemitter\":10,\"./media/track/remoteaudiotrack\":45,\"./media/track/remoteaudiotrackpublication\":46,\"./media/track/remotedatatrack\":47,\"./media/track/remotedatatrackpublication\":48,\"./media/track/remotevideotrack\":51,\"./media/track/remotevideotrackpublication\":52,\"./util\":147}],61:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCombinedConnectionStats = getCombinedConnectionStats;\nfunction getStatValues(report, statName, kind, reportTypes) {\n    var results = [];\n    report.forEach(function (stat) {\n        if ((reportTypes.length === 0 || reportTypes.includes(stat.type)) &&\n            (kind.length === 0 || kind.includes(stat.kind)) &&\n            typeof stat[statName] === 'number') {\n            results.push(stat[statName]);\n        }\n    });\n    return results;\n}\nfunction getCombinedConnectionStats(_a) {\n    return __awaiter(this, arguments, void 0, function (_b) {\n        var _c, publisherStats, subscriberStats, timestamps, timestamp, jitter, packets, packetsLost, trackRoundTripTime, currentRoundTripTime, roundTripTime, bytesSent, bytesReceived, selectedIceCandidatePairStats, iceCandidateStats;\n        var publisher = _b.publisher, subscriber = _b.subscriber;\n        return __generator(this, function (_d) {\n            switch (_d.label) {\n                case 0: return [4 /*yield*/, Promise.all([publisher, subscriber].map(function (pc) { return pc.getStats(); }))];\n                case 1:\n                    _c = __read.apply(void 0, [_d.sent(), 2]), publisherStats = _c[0], subscriberStats = _c[1];\n                    timestamps = getStatValues(subscriberStats, 'timestamp', ['audio'], ['inbound-rtp']);\n                    timestamp = timestamps.length > 0 ? timestamps[0] : 0;\n                    jitter = getStatValues(subscriberStats, 'jitter', ['audio'], ['inbound-rtp']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n                    packets = getStatValues(subscriberStats, 'packetsReceived', ['audio', 'video'], ['inbound-rtp']).reduce(function (a, b) { return a + b; }, 0);\n                    packetsLost = getStatValues(subscriberStats, 'packetsLost', ['audio', 'video'], ['inbound-rtp']).reduce(function (a, b) { return a + b; }, 0);\n                    trackRoundTripTime = getStatValues(publisherStats, 'roundTripTime', ['audio', 'video'], ['remote-inbound-rtp']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n                    currentRoundTripTime = getStatValues(subscriberStats, 'currentRoundTripTime', [], ['candidate-pair']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n                    roundTripTime = (currentRoundTripTime || trackRoundTripTime) * 1000;\n                    bytesSent = getStatValues(publisherStats, 'bytesSent', [], ['candidate-pair']).reduce(function (a, b) { return a + b; }, 0);\n                    bytesReceived = getStatValues(subscriberStats, 'bytesReceived', [], ['candidate-pair']).reduce(function (a, b) { return a + b; }, 0);\n                    selectedIceCandidatePairStats = extractSelectedActiveCandidatePair(subscriberStats);\n                    iceCandidateStats = [];\n                    subscriberStats.forEach(function (stat) {\n                        if (stat.type === 'local-candidate' || stat.type === 'remote-candidate') {\n                            iceCandidateStats.push(makeStandardCandidateStats(stat));\n                        }\n                    });\n                    return [2 /*return*/, { timestamp: timestamp, jitter: jitter, packets: packets, packetsLost: packetsLost, roundTripTime: roundTripTime, bytesSent: bytesSent, bytesReceived: bytesReceived, selectedIceCandidatePairStats: selectedIceCandidatePairStats, iceCandidateStats: iceCandidateStats }];\n            }\n        });\n    });\n}\nfunction makeStandardCandidateStats(input) {\n    var standardizedCandidateStatsKeys = [\n        { key: 'transportId', type: 'string' },\n        { key: 'candidateType', type: 'string' },\n        { key: 'port', altKeys: ['portNumber'], type: 'number' },\n        { key: 'address', altKeys: ['ip', 'ipAddress'], type: 'string' },\n        { key: 'priority', type: 'number' },\n        { key: 'protocol', altKeys: ['transport'], type: 'string' },\n        { key: 'url', type: 'string' },\n        { key: 'relayProtocol', type: 'string' },\n    ];\n    return standardizedCandidateStatsKeys.reduce(function (report, keyInfo) {\n        var keysToLookFor = [keyInfo.key];\n        if (keyInfo.altKeys) {\n            keysToLookFor = keysToLookFor.concat(keyInfo.altKeys);\n        }\n        var key = keysToLookFor.find(function (key) { return key in input; });\n        if (key && typeof input[key] === keyInfo.type) {\n            report[keyInfo.key] = input[key];\n        }\n        return report;\n    }, {});\n}\nfunction extractSelectedActiveCandidatePair(stats) {\n    var selectedCandidatePairId = null;\n    var candidatePairs = [];\n    stats.forEach(function (stat) {\n        if (stat.type === 'transport' && stat.selectedCandidatePairId) {\n            selectedCandidatePairId = stat.selectedCandidatePairId;\n        }\n        else if (stat.type === 'candidate-pair') {\n            candidatePairs.push(stat);\n        }\n    });\n    var activeCandidatePairStatsFound = candidatePairs.find(function (pair) {\n        // Firefox\n        return pair.selected ||\n            // Spec-compliant way\n            (selectedCandidatePairId && pair.id === selectedCandidatePairId);\n    });\n    if (!activeCandidatePairStatsFound) {\n        return null;\n    }\n    var activeCandidatePairStats = activeCandidatePairStatsFound;\n    var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n    var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n    if (!activeLocalCandidateStats || !activeRemoteCandidateStats) {\n        return null;\n    }\n    return {\n        localCandidate: makeStandardCandidateStats(activeLocalCandidateStats),\n        remoteCandidate: makeStandardCandidateStats(activeRemoteCandidateStats)\n    };\n}\n\n},{}],62:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTurnCredentials = getTurnCredentials;\n/* eslint-disable camelcase */\nvar TwilioConnection = require('../twilioconnection.js');\nvar ICE_VERSION = require('../util/constants').ICE_VERSION;\nvar _a = require('../util/twilio-video-errors'), createTwilioError = _a.createTwilioError, SignalingConnectionError = _a.SignalingConnectionError;\nvar events_1 = require(\"events\");\nfunction getTurnCredentials(token, wsServer) {\n    return new Promise(function (resolve, reject) {\n        var eventObserver = new events_1.EventEmitter();\n        var connectionOptions = {\n            networkMonitor: null,\n            eventObserver: eventObserver,\n            helloBody: {\n                edge: 'roaming', // roaming here means use same edge as signaling.\n                preflight: true,\n                token: token,\n                type: 'ice',\n                version: ICE_VERSION\n            },\n        };\n        var twilioConnection = new TwilioConnection(wsServer, connectionOptions);\n        var done = false;\n        twilioConnection.once('close', function () {\n            if (!done) {\n                done = true;\n                reject(new SignalingConnectionError());\n            }\n        });\n        twilioConnection.on('message', function (messageData) {\n            var code = messageData.code, message = messageData.message, ice_servers = messageData.ice_servers, type = messageData.type;\n            if ((type === 'iced' || type === 'error') && !done) {\n                done = true;\n                if (type === 'iced') {\n                    resolve(ice_servers);\n                }\n                else {\n                    reject(createTwilioError(code, message));\n                }\n                twilioConnection.close();\n            }\n        });\n    });\n}\n\n},{\"../twilioconnection.js\":135,\"../util/constants\":140,\"../util/twilio-video-errors\":162,\"events\":188}],63:[function(require,module,exports){\n\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStat = makeStat;\n/**\n * Computes min, max, average for given array.\n * @param {Array<number>} values\n * @returns {{min: number, max: number: average: number}|null}\n */\nfunction makeStat(values) {\n    if (values && values.length) {\n        var min = Math.min.apply(Math, __spreadArray([], __read(values), false));\n        var max = Math.max.apply(Math, __spreadArray([], __read(values), false));\n        var average = values.reduce(function (total, value) { return total + value; }, 0) / values.length;\n        return { min: min, max: max, average: average };\n    }\n    return null;\n}\n\n},{}],64:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateMOS = calculateMOS;\nexports.mosToScore = mosToScore;\nvar r0 = 94.768; // Constant used in computing \"rFactor\".\n// copied from https://code.hq.twilio.com/client/sdk-frd/blob/master/voice/voice-mos-calculation.md\nfunction calculateMOS(rtt, jitter, fractionLost) {\n    // Compute the effective latency.\n    var effectiveLatency = rtt + (jitter * 2) + 10;\n    // Compute the initial \"rFactor\" from effective latency.\n    var rFactor = 0;\n    switch (true) {\n        case effectiveLatency < 160:\n            rFactor = r0 - (effectiveLatency / 40);\n            break;\n        case effectiveLatency < 1000:\n            rFactor = r0 - ((effectiveLatency - 120) / 10);\n            break;\n    }\n    // Adjust \"rFactor\" with the fraction of packets lost.\n    switch (true) {\n        case fractionLost <= (rFactor / 2.5):\n            rFactor = Math.max(rFactor - fractionLost * 2.5, 6.52);\n            break;\n        default:\n            rFactor = 0;\n            break;\n    }\n    // Compute MOS from \"rFactor\".\n    var mos = 1 +\n        (0.035 * rFactor) +\n        (0.000007 * rFactor) *\n            (rFactor - 60) *\n            (100 - rFactor);\n    return mos;\n}\nfunction mosToScore(mosValue) {\n    var score = 0;\n    if (!mosValue) {\n        score = 0;\n    }\n    else if (mosValue > 4.2) {\n        score = 5;\n    }\n    else if (mosValue > 4.0) {\n        score = 4;\n    }\n    else if (mosValue > 3.6) {\n        score = 3;\n    }\n    else if (mosValue > 3) {\n        score = 2;\n    }\n    else {\n        score = 1;\n    }\n    return score;\n}\n\n},{}],65:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PreflightTest = void 0;\nexports.runPreflight = runPreflight;\nvar constants_1 = require(\"../util/constants\");\nvar timer_1 = require(\"./timer\");\nvar mos_1 = require(\"./mos\");\nvar getCombinedConnectionStats_1 = require(\"./getCombinedConnectionStats\");\nvar getturncredentials_1 = require(\"./getturncredentials\");\nvar makestat_1 = require(\"./makestat\");\nvar syntheticaudio_1 = require(\"./syntheticaudio\");\nvar syntheticvideo_1 = require(\"./syntheticvideo\");\nvar index_1 = require(\"../util/index\");\nvar WS_SERVER = require('../util/constants').WS_SERVER;\nvar Log = require('../util/log');\nvar EventEmitter = require('../eventemitter');\nvar MovingAverageDelta = require('../util/movingaveragedelta');\nvar EventObserver = require('../util/eventobserver');\nvar InsightsPublisher = require('../util/insightspublisher');\nvar _a = require('../util/sid'), createSID = _a.createSID, sessionSID = _a.sessionSID;\nvar _b = require('../util/twilio-video-errors'), SignalingConnectionTimeoutError = _b.SignalingConnectionTimeoutError, MediaConnectionError = _b.MediaConnectionError;\nvar SECOND = 1000;\nvar DEFAULT_TEST_DURATION = 10 * SECOND;\n/**\n * progress values that are sent by {@link PreflightTest#event:progress}\n * @enum {string}\n */\nvar PreflightProgress = {\n    /**\n     * {@link PreflightTest} has successfully generated synthetic tracks\n     */\n    mediaAcquired: 'mediaAcquired',\n    /**\n     * {@link PreflightTest} has successfully connected to twilio server and obtained turn credentials\n     */\n    connected: 'connected',\n    /**\n     * SubscriberParticipant successfully subscribed to media tracks.\n     */\n    mediaSubscribed: 'mediaSubscribed',\n    /**\n     * Media flow was detected.\n     */\n    mediaStarted: 'mediaStarted',\n    /**\n     * Established DTLS connection. This is measured from RTCDtlsTransport `connecting` to `connected` state.\n     * On Safari, Support for measuring this is missing, this event will be not be emitted on Safari.\n     */\n    dtlsConnected: 'dtlsConnected',\n    /**\n     * Established a PeerConnection, This is measured from PeerConnection `connecting` to `connected` state.\n     * On Firefox, Support for measuring this is missing, this event will be not be emitted on Firefox.\n     */\n    peerConnectionConnected: 'peerConnectionConnected',\n    /**\n     * Established ICE connection. This is measured from ICE connection `checking` to `connected` state.\n     */\n    iceConnected: 'iceConnected'\n};\nfunction notEmpty(value) {\n    return value !== null && typeof value !== 'undefined';\n}\nvar nInstances = 0;\n/**\n * A {@link PreflightTest} monitors progress of an ongoing preflight test.\n * <br><br>\n * Instance of {@link PreflightTest} is returned by calling {@link module:twilio-video.runPreflight}\n * @extends EventEmitter\n * @emits PreflightTest#completed\n * @emits PreflightTest#failed\n * @emits PreflightTest#progress\n */\nvar PreflightTest = /** @class */ (function (_super) {\n    __extends(PreflightTest, _super);\n    /**\n     * Constructs {@link PreflightTest}.\n     * @param {string} token\n     * @param {?PreflightOptions} [options]\n     */\n    function PreflightTest(token, options) {\n        var _this = _super.call(this) || this;\n        _this._testTiming = new timer_1.Timer();\n        _this._dtlsTiming = new timer_1.Timer();\n        _this._iceTiming = new timer_1.Timer();\n        _this._peerConnectionTiming = new timer_1.Timer();\n        _this._mediaTiming = new timer_1.Timer();\n        _this._connectTiming = new timer_1.Timer();\n        _this._sentBytesMovingAverage = new MovingAverageDelta();\n        _this._packetLossMovingAverage = new MovingAverageDelta();\n        _this._progressEvents = [];\n        _this._receivedBytesMovingAverage = new MovingAverageDelta();\n        var internalOptions = options;\n        var _a = internalOptions.environment, environment = _a === void 0 ? 'prod' : _a, _b = internalOptions.region, region = _b === void 0 ? 'gll' : _b, _c = internalOptions.duration, duration = _c === void 0 ? DEFAULT_TEST_DURATION : _c;\n        // eslint-disable-next-line new-cap\n        var wsServer = internalOptions.wsServer || WS_SERVER(environment, region);\n        _this._log = new Log('default', _this, constants_1.DEFAULT_LOG_LEVEL, constants_1.DEFAULT_LOGGER_NAME);\n        _this._testDuration = duration;\n        _this._instanceId = nInstances++;\n        _this._testTiming.start();\n        _this._runPreflightTest(token, environment, wsServer);\n        return _this;\n    }\n    PreflightTest.prototype.toString = function () {\n        return \"[Preflight #\".concat(this._instanceId, \"]\");\n    };\n    /**\n     * stops ongoing tests and emits error\n     */\n    PreflightTest.prototype.stop = function () {\n        this._stopped = true;\n    };\n    PreflightTest.prototype._generatePreflightReport = function (collectedStats) {\n        this._testTiming.stop();\n        return {\n            testTiming: this._testTiming.getTimeMeasurement(),\n            networkTiming: {\n                dtls: this._dtlsTiming.getTimeMeasurement(),\n                ice: this._iceTiming.getTimeMeasurement(),\n                peerConnection: this._peerConnectionTiming.getTimeMeasurement(),\n                connect: this._connectTiming.getTimeMeasurement(),\n                media: this._mediaTiming.getTimeMeasurement()\n            },\n            stats: {\n                jitter: (0, makestat_1.makeStat)(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.jitter),\n                rtt: (0, makestat_1.makeStat)(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.rtt),\n                packetLoss: (0, makestat_1.makeStat)(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.packetLoss),\n            },\n            selectedIceCandidatePairStats: collectedStats ? collectedStats.selectedIceCandidatePairStats : null,\n            iceCandidateStats: collectedStats ? collectedStats.iceCandidateStats : [],\n            progressEvents: this._progressEvents,\n            // NOTE(mpatwardhan): internal properties.\n            mos: (0, makestat_1.makeStat)(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.mos),\n        };\n    };\n    PreflightTest.prototype._executePreflightStep = function (stepName, step, timeoutError) {\n        return __awaiter(this, void 0, void 0, function () {\n            var MAX_STEP_DURATION, stepPromise, timer, timeoutPromise, result;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this._log.debug('Executing step: ', stepName);\n                        MAX_STEP_DURATION = this._testDuration + 10 * SECOND;\n                        if (this._stopped) {\n                            throw new Error('stopped');\n                        }\n                        stepPromise = Promise.resolve().then(step);\n                        timer = null;\n                        timeoutPromise = new Promise(function (_resolve, reject) {\n                            timer = setTimeout(function () {\n                                reject(timeoutError || new Error(\"\".concat(stepName, \" timeout.\")));\n                            }, MAX_STEP_DURATION);\n                        });\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, , 3, 4]);\n                        return [4 /*yield*/, Promise.race([timeoutPromise, stepPromise])];\n                    case 2:\n                        result = _a.sent();\n                        return [2 /*return*/, result];\n                    case 3:\n                        if (timer !== null) {\n                            clearTimeout(timer);\n                        }\n                        return [7 /*endfinally*/];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._collectNetworkTimings = function (pc) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            var dtlsTransport;\n            pc.addEventListener('iceconnectionstatechange', function () {\n                if (pc.iceConnectionState === 'checking') {\n                    _this._iceTiming.start();\n                }\n                if (pc.iceConnectionState === 'connected') {\n                    _this._iceTiming.stop();\n                    _this._updateProgress(PreflightProgress.iceConnected);\n                    if (!dtlsTransport || dtlsTransport && dtlsTransport.state === 'connected') {\n                        resolve();\n                    }\n                }\n            });\n            // firefox does not support connectionstatechange.\n            pc.addEventListener('connectionstatechange', function () {\n                if (pc.connectionState === 'connecting') {\n                    _this._peerConnectionTiming.start();\n                }\n                if (pc.connectionState === 'connected') {\n                    _this._peerConnectionTiming.stop();\n                    _this._updateProgress(PreflightProgress.peerConnectionConnected);\n                }\n            });\n            // Safari does not expose sender.transport.\n            var senders = pc.getSenders();\n            var transport = senders.map(function (sender) { return sender.transport; }).find(notEmpty);\n            if (typeof transport !== 'undefined') {\n                dtlsTransport = transport;\n                dtlsTransport.addEventListener('statechange', function () {\n                    if (dtlsTransport.state === 'connecting') {\n                        _this._dtlsTiming.start();\n                    }\n                    if (dtlsTransport.state === 'connected') {\n                        _this._dtlsTiming.stop();\n                        _this._updateProgress(PreflightProgress.dtlsConnected);\n                        if (pc.iceConnectionState === 'connected') {\n                            resolve();\n                        }\n                    }\n                });\n            }\n        });\n    };\n    PreflightTest.prototype._setupInsights = function (_a) {\n        var token = _a.token, _b = _a.environment, environment = _b === void 0 ? constants_1.DEFAULT_ENVIRONMENT : _b, _c = _a.realm, realm = _c === void 0 ? constants_1.DEFAULT_REALM : _c;\n        var eventPublisherOptions = {};\n        var eventPublisher = new InsightsPublisher(token, constants_1.SDK_NAME, constants_1.SDK_VERSION, environment, realm, eventPublisherOptions);\n        // event publisher requires room sid/participant sid. supply fake ones.\n        eventPublisher.connect('PREFLIGHT_ROOM_SID', 'PREFLIGHT_PARTICIPANT');\n        var eventObserver = new EventObserver(eventPublisher, Date.now(), this._log);\n        // eslint-disable-next-line no-undefined\n        var undefinedValue = undefined;\n        return {\n            reportToInsights: function (_a) {\n                var _b, _c;\n                var report = _a.report;\n                var jitterStats = report.stats.jitter || undefinedValue;\n                var rttStats = report.stats.rtt || undefinedValue;\n                var packetLossStats = report.stats.packetLoss || undefinedValue;\n                var mosStats = report.mos || undefinedValue;\n                // stringify important info from ice candidates.\n                var candidateTypeToProtocols = new Map();\n                report.iceCandidateStats.forEach(function (candidateStats) {\n                    if (candidateStats.candidateType && candidateStats.protocol) {\n                        var protocols = candidateTypeToProtocols.get(candidateStats.candidateType) || [];\n                        if (protocols.indexOf(candidateStats.protocol) < 0) {\n                            protocols.push(candidateStats.protocol);\n                        }\n                        candidateTypeToProtocols.set(candidateStats.candidateType, protocols);\n                    }\n                });\n                var iceCandidateStats = JSON.stringify(Object.fromEntries(candidateTypeToProtocols));\n                var insightsReport = {\n                    name: 'report',\n                    group: 'preflight',\n                    level: report.error ? 'error' : 'info',\n                    payload: {\n                        sessionSID: sessionSID,\n                        preflightSID: createSID('PF'),\n                        progressEvents: JSON.stringify(report.progressEvents),\n                        testTiming: report.testTiming,\n                        dtlsTiming: report.networkTiming.dtls,\n                        iceTiming: report.networkTiming.ice,\n                        peerConnectionTiming: report.networkTiming.peerConnection,\n                        connectTiming: report.networkTiming.connect,\n                        mediaTiming: report.networkTiming.media,\n                        selectedLocalCandidate: (_b = report.selectedIceCandidatePairStats) === null || _b === void 0 ? void 0 : _b.localCandidate,\n                        selectedRemoteCandidate: (_c = report.selectedIceCandidatePairStats) === null || _c === void 0 ? void 0 : _c.remoteCandidate,\n                        iceCandidateStats: iceCandidateStats,\n                        jitterStats: jitterStats,\n                        rttStats: rttStats,\n                        packetLossStats: packetLossStats,\n                        mosStats: mosStats,\n                        error: report.error\n                    }\n                };\n                eventObserver.emit('event', insightsReport);\n                setTimeout(function () { return eventPublisher.disconnect(); }, 2000);\n            }\n        };\n    };\n    PreflightTest.prototype._runPreflightTest = function (token, environment, wsServer) {\n        return __awaiter(this, void 0, void 0, function () {\n            var localTracks, pcs, reportToInsights, elements_1, iceServers, senderPC_1, receiverPC_1, remoteTracks_1, collectedStats_1, report, error_1, preflightReport;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        localTracks = [];\n                        pcs = [];\n                        reportToInsights = this._setupInsights({ token: token, environment: environment }).reportToInsights;\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 8, 9, 10]);\n                        elements_1 = [];\n                        return [4 /*yield*/, this._executePreflightStep('Acquire media', function () { return [(0, syntheticaudio_1.syntheticAudio)(), (0, syntheticvideo_1.syntheticVideo)({ width: 640, height: 480 })]; })];\n                    case 2:\n                        localTracks = _a.sent();\n                        this._updateProgress(PreflightProgress.mediaAcquired);\n                        this.emit('debug', { localTracks: localTracks });\n                        this._connectTiming.start();\n                        return [4 /*yield*/, this._executePreflightStep('Get turn credentials', function () { return (0, getturncredentials_1.getTurnCredentials)(token, wsServer); }, new SignalingConnectionTimeoutError())];\n                    case 3:\n                        iceServers = _a.sent();\n                        this._connectTiming.stop();\n                        this._updateProgress(PreflightProgress.connected);\n                        senderPC_1 = new RTCPeerConnection({ iceServers: iceServers, iceTransportPolicy: 'relay', bundlePolicy: 'max-bundle' });\n                        receiverPC_1 = new RTCPeerConnection({ iceServers: iceServers, bundlePolicy: 'max-bundle' });\n                        pcs.push(senderPC_1);\n                        pcs.push(receiverPC_1);\n                        this._mediaTiming.start();\n                        return [4 /*yield*/, this._executePreflightStep('Setup Peer Connections', function () { return __awaiter(_this, void 0, void 0, function () {\n                                var remoteTracksPromise, offer, updatedOffer, answer;\n                                return __generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0:\n                                            senderPC_1.addEventListener('icecandidate', function (event) { return event.candidate && receiverPC_1.addIceCandidate(event.candidate); });\n                                            receiverPC_1.addEventListener('icecandidate', function (event) { return event.candidate && senderPC_1.addIceCandidate(event.candidate); });\n                                            localTracks.forEach(function (track) { return senderPC_1.addTrack(track); });\n                                            remoteTracksPromise = new Promise(function (resolve) {\n                                                var remoteTracks = [];\n                                                receiverPC_1.addEventListener('track', function (event) {\n                                                    remoteTracks.push(event.track);\n                                                    if (remoteTracks.length === localTracks.length) {\n                                                        resolve(remoteTracks);\n                                                    }\n                                                });\n                                            });\n                                            return [4 /*yield*/, senderPC_1.createOffer()];\n                                        case 1:\n                                            offer = _a.sent();\n                                            updatedOffer = offer;\n                                            return [4 /*yield*/, senderPC_1.setLocalDescription(updatedOffer)];\n                                        case 2:\n                                            _a.sent();\n                                            return [4 /*yield*/, receiverPC_1.setRemoteDescription(updatedOffer)];\n                                        case 3:\n                                            _a.sent();\n                                            return [4 /*yield*/, receiverPC_1.createAnswer()];\n                                        case 4:\n                                            answer = _a.sent();\n                                            return [4 /*yield*/, receiverPC_1.setLocalDescription(answer)];\n                                        case 5:\n                                            _a.sent();\n                                            return [4 /*yield*/, senderPC_1.setRemoteDescription(answer)];\n                                        case 6:\n                                            _a.sent();\n                                            return [4 /*yield*/, this._collectNetworkTimings(senderPC_1)];\n                                        case 7:\n                                            _a.sent();\n                                            return [2 /*return*/, remoteTracksPromise];\n                                    }\n                                });\n                            }); }, new MediaConnectionError())];\n                    case 4:\n                        remoteTracks_1 = _a.sent();\n                        this.emit('debug', { remoteTracks: remoteTracks_1 });\n                        remoteTracks_1.forEach(function (track) {\n                            track.addEventListener('ended', function () { return _this._log.warn(track.kind + ':ended'); });\n                            track.addEventListener('mute', function () { return _this._log.warn(track.kind + ':muted'); });\n                            track.addEventListener('unmute', function () { return _this._log.warn(track.kind + ':unmuted'); });\n                        });\n                        this._updateProgress(PreflightProgress.mediaSubscribed);\n                        return [4 /*yield*/, this._executePreflightStep('Wait for tracks to start', function () {\n                                return new Promise(function (resolve) {\n                                    var element = document.createElement('video');\n                                    element.autoplay = true;\n                                    element.playsInline = true;\n                                    element.muted = true;\n                                    element.srcObject = new MediaStream(remoteTracks_1);\n                                    elements_1.push(element);\n                                    _this.emit('debugElement', element);\n                                    element.oncanplay = resolve;\n                                });\n                            }, new MediaConnectionError())];\n                    case 5:\n                        _a.sent();\n                        this._mediaTiming.stop();\n                        this._updateProgress(PreflightProgress.mediaStarted);\n                        return [4 /*yield*/, this._executePreflightStep('Collect stats for duration', function () { return _this._collectRTCStatsForDuration(_this._testDuration, initCollectedStats(), senderPC_1, receiverPC_1); })];\n                    case 6:\n                        collectedStats_1 = _a.sent();\n                        return [4 /*yield*/, this._executePreflightStep('Generate report', function () { return _this._generatePreflightReport(collectedStats_1); })];\n                    case 7:\n                        report = _a.sent();\n                        reportToInsights({ report: report });\n                        this.emit('completed', report);\n                        return [3 /*break*/, 10];\n                    case 8:\n                        error_1 = _a.sent();\n                        preflightReport = this._generatePreflightReport();\n                        reportToInsights({ report: __assign(__assign({}, preflightReport), { error: error_1 === null || error_1 === void 0 ? void 0 : error_1.toString() }) });\n                        this.emit('failed', error_1, preflightReport);\n                        return [3 /*break*/, 10];\n                    case 9:\n                        pcs.forEach(function (pc) { return pc.close(); });\n                        localTracks.forEach(function (track) { return track.stop(); });\n                        return [7 /*endfinally*/];\n                    case 10: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._collectRTCStats = function (collectedStats, senderPC, receiverPC) {\n        return __awaiter(this, void 0, void 0, function () {\n            var combinedStats, timestamp, bytesSent, bytesReceived, packets, packetsLost, roundTripTime, jitter, selectedIceCandidatePairStats, iceCandidateStats, hasLastData, fractionPacketLost, percentPacketsLost, score;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, (0, getCombinedConnectionStats_1.getCombinedConnectionStats)({ publisher: senderPC, subscriber: receiverPC })];\n                    case 1:\n                        combinedStats = _a.sent();\n                        timestamp = combinedStats.timestamp, bytesSent = combinedStats.bytesSent, bytesReceived = combinedStats.bytesReceived, packets = combinedStats.packets, packetsLost = combinedStats.packetsLost, roundTripTime = combinedStats.roundTripTime, jitter = combinedStats.jitter, selectedIceCandidatePairStats = combinedStats.selectedIceCandidatePairStats, iceCandidateStats = combinedStats.iceCandidateStats;\n                        hasLastData = collectedStats.jitter.length > 0;\n                        collectedStats.jitter.push(jitter);\n                        collectedStats.rtt.push(roundTripTime);\n                        this._sentBytesMovingAverage.putSample(bytesSent, timestamp);\n                        this._receivedBytesMovingAverage.putSample(bytesReceived, timestamp);\n                        this._packetLossMovingAverage.putSample(packetsLost, packets);\n                        if (hasLastData) {\n                            // convert BytesMovingAverage which is in bytes/millisecond to bits/second\n                            collectedStats.outgoingBitrate.push(this._sentBytesMovingAverage.get() * 1000 * 8);\n                            collectedStats.incomingBitrate.push(this._receivedBytesMovingAverage.get() * 1000 * 8);\n                            fractionPacketLost = this._packetLossMovingAverage.get();\n                            percentPacketsLost = Math.min(100, fractionPacketLost * 100);\n                            collectedStats.packetLoss.push(percentPacketsLost);\n                            score = (0, mos_1.calculateMOS)(roundTripTime, jitter, fractionPacketLost);\n                            collectedStats.mos.push(score);\n                        }\n                        if (!collectedStats.selectedIceCandidatePairStats) {\n                            collectedStats.selectedIceCandidatePairStats = selectedIceCandidatePairStats;\n                        }\n                        if (collectedStats.iceCandidateStats.length === 0) {\n                            collectedStats.iceCandidateStats = iceCandidateStats;\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._collectRTCStatsForDuration = function (duration, collectedStats, senderPC, receiverPC) {\n        return __awaiter(this, void 0, void 0, function () {\n            var startTime, STAT_INTERVAL, remainingDuration;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        startTime = Date.now();\n                        STAT_INTERVAL = Math.min(1000, duration);\n                        return [4 /*yield*/, (0, index_1.waitForSometime)(STAT_INTERVAL)];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this._collectRTCStats(collectedStats, senderPC, receiverPC)];\n                    case 2:\n                        _a.sent();\n                        remainingDuration = duration - (Date.now() - startTime);\n                        if (!(remainingDuration > 0)) return [3 /*break*/, 4];\n                        return [4 /*yield*/, this._collectRTCStatsForDuration(remainingDuration, collectedStats, senderPC, receiverPC)];\n                    case 3:\n                        collectedStats = _a.sent();\n                        _a.label = 4;\n                    case 4: return [2 /*return*/, collectedStats];\n                }\n            });\n        });\n    };\n    PreflightTest.prototype._updateProgress = function (name) {\n        var duration = Date.now() - this._testTiming.getTimeMeasurement().start;\n        this._progressEvents.push({ duration: duration, name: name });\n        this.emit('progress', name);\n    };\n    return PreflightTest;\n}(EventEmitter));\nexports.PreflightTest = PreflightTest;\nfunction initCollectedStats() {\n    return {\n        mos: [],\n        jitter: [],\n        rtt: [],\n        outgoingBitrate: [],\n        incomingBitrate: [],\n        packetLoss: [],\n        selectedIceCandidatePairStats: null,\n        iceCandidateStats: [],\n    };\n}\n/**\n * Represents network timing measurements captured during preflight test\n * @typedef {object} NetworkTiming\n * @property {TimeMeasurement} [connect] - Time to establish signaling connection and acquire turn credentials\n * @property {TimeMeasurement} [media] - Time to start media. This is measured from calling connect to remote media getting started.\n * @property {TimeMeasurement} [dtls] - Time to establish dtls connection. This is measured from RTCDtlsTransport `connecting` to `connected` state. (Not available on Safari)\n * @property {TimeMeasurement} [ice] - Time to establish ice connectivity. This is measured from ICE connection `checking` to `connected` state.\n * @property {TimeMeasurement} [peerConnection] - Time to establish peer connectivity. This is measured from PeerConnection `connecting` to `connected` state. (Not available on Firefox)\n */\n/**\n * Represents stats for a numerical metric.\n * @typedef {object} Stats\n * @property  {number} [average] - Average value observed.\n * @property  {number} [max] - Max value observed.\n * @property  {number} [min] - Min value observed.\n */\n/**\n * Represents stats for a numerical metric.\n * @typedef {object} SelectedIceCandidatePairStats\n * @property  {RTCIceCandidateStats} [localCandidate] - Selected local ice candidate\n * @property  {RTCIceCandidateStats} [remoteCandidate] - Selected local ice candidate\n */\n/**\n * Represents RTC related stats that were observed during preflight test\n * @typedef {object} PreflightReportStats\n * @property {Stats} [jitter] - Packet delay variation in seconds\n * @property {Stats} [rtt] - Round trip time, to the server back to the client in milliseconds.\n * @property {Stats} [packetLoss] - Packet loss as a percent of total packets sent.\n*/\n/**\n * A {@link PreflightProgress} event with timing information.\n * @typedef {object} ProgressEvent\n * @property {number} [duration] - The duration of the event, measured from the start of the test.\n * @property {string} [name] - The {@link PreflightProgress} event name.\n */\n/**\n * Represents report generated by {@link PreflightTest}.\n * @typedef {object} PreflightTestReport\n * @property {TimeMeasurement} [testTiming] - Time measurements of test run time.\n * @property {NetworkTiming} [networkTiming] - Network related time measurements.\n * @property {PreflightReportStats} [stats] - RTC related stats captured during the test.\n * @property {Array<RTCIceCandidateStats>} [iceCandidateStats] - List of gathered ice candidates.\n * @property {SelectedIceCandidatePairStats} selectedIceCandidatePairStats - Stats for the ice candidates that were used for the connection.\n * @property {Array<ProgressEvent>} [progressEvents] - {@link ProgressEvent} events detected during the test.\n * Use this information to determine which steps were completed and which ones were not.\n */\n/**\n * You may pass these options to {@link module:twilio-video.testPreflight} in order to override the\n * default behavior.\n * @typedef {object} PreflightOptions\n * @property {string} [region='gll'] - Preferred signaling region; By default, you will be connected to the\n *   nearest signaling server determined by latency based routing. Setting a value other\n *   than <code style=\"padding:0 0\">gll</code> bypasses routing and guarantees that signaling traffic will be\n *   terminated in the region that you prefer. Please refer to this <a href=\"https://www.twilio.com/docs/video/ip-address-whitelisting#signaling-communication\" target=\"_blank\">table</a>\n *   for the list of supported signaling regions.\n * @property {number} [duration=10000] - number of milliseconds to run test for.\n *   once connected test will run for this duration before generating the stats report.\n */\n/**\n * Preflight test has completed successfully.\n * @param {PreflightTestReport} report - Results of the test.\n * @event PreflightTest#completed\n */\n/**\n * Preflight test has encountered a failure and is now stopped.\n * @param {TwilioError|Error} error - A TwilioError or a DOMException.\n * Possible TwilioErrors include Signaling and Media related errors which can be found\n * <a href=\"https://www.twilio.com/docs/video/build-js-video-application-recommendations-and-best-practices#connection-errors\" target=\"_blank\">here</a>.\n * @param {PreflightTestReport} report - Partial results gathered during the test. Use this information to help determine the cause of failure.\n * @event PreflightTest#failed\n */\n/**\n * Emitted to indicate progress of the test\n * @param {PreflightProgress} progress - Indicates the status completed.\n * @event PreflightTest#progress\n */\n/**\n * @method\n * @name runPreflight\n * @description Run a preflight test. This method will start a test to check the quality of network connection.\n * @memberof module:twilio-video\n * @param {string} token - The Access Token string\n * @param {PreflightOptions} options - Options for the test\n * @returns {PreflightTest} preflightTest - An instance to be used to monitor progress of the test.\n * @example\n * var { runPreflight } = require('twilio-video');\n * var preflight = runPreflight(token, preflightOptions);\n * preflightTest.on('progress', progress => {\n *   console.log('preflight progress:', progress);\n * });\n *\n * preflightTest.on('failed', (error, report) => {\n *   console.error('preflight error:', error, report);\n * });\n *\n * preflightTest.on('completed', report => {\n *   console.log('preflight completed:', report));\n * });\n*/\nfunction runPreflight(token, options) {\n    if (options === void 0) { options = {}; }\n    var preflight = new PreflightTest(token, options);\n    return preflight;\n}\n\n},{\"../eventemitter\":10,\"../util/constants\":140,\"../util/eventobserver\":145,\"../util/index\":147,\"../util/insightspublisher\":148,\"../util/log\":151,\"../util/movingaveragedelta\":152,\"../util/sid\":159,\"../util/twilio-video-errors\":162,\"./getCombinedConnectionStats\":61,\"./getturncredentials\":62,\"./makestat\":63,\"./mos\":64,\"./syntheticaudio\":66,\"./syntheticvideo\":67,\"./timer\":68}],66:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syntheticAudio = syntheticAudio;\nfunction syntheticAudio() {\n    // NOTE(mpatwardhan): We have to delay require-ing AudioContextFactory, because\n    // it exports a default instance whose constructor calls Object.assign.\n    var audioContextFactory = require('../webaudio/audiocontext');\n    var holder = {};\n    var audioContext = audioContextFactory.getOrCreate(holder);\n    var oscillator = audioContext.createOscillator();\n    var dst = oscillator.connect(audioContext.createMediaStreamDestination());\n    oscillator.start();\n    var track = dst.stream.getAudioTracks()[0];\n    var originalStop = track.stop;\n    track.stop = function () {\n        originalStop.call(track);\n        audioContextFactory.release(holder);\n    };\n    return track;\n}\n\n},{\"../webaudio/audiocontext\":168}],67:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syntheticVideo = syntheticVideo;\nfunction syntheticVideo(_a) {\n    var _b = _a === void 0 ? {} : _a, _c = _b.width, width = _c === void 0 ? 640 : _c, _d = _b.height, height = _d === void 0 ? 480 : _d;\n    var canvas = Object.assign(document.createElement('canvas'), { width: width, height: height });\n    var ctx = canvas.getContext('2d');\n    ctx.fillStyle = 'green';\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n    var stopped = false;\n    requestAnimationFrame(function animate() {\n        if (!stopped) {\n            // draw random rect/circle.\n            var r = Math.round(Math.random() * 255);\n            var g = Math.round(Math.random() * 255);\n            var b = Math.round(Math.random() * 255);\n            var a = Math.round(Math.random() * 255);\n            ctx.fillStyle = \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(a, \")\");\n            ctx.fillRect(Math.random() * width, Math.random() * height, 50, 50);\n            requestAnimationFrame(animate);\n        }\n    });\n    var stream = canvas.captureStream(30);\n    var track = stream.getTracks()[0];\n    var originalStop = track.stop;\n    track.stop = function () {\n        stopped = true;\n        originalStop.call(track);\n    };\n    return track;\n}\n\n},{}],68:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Timer = void 0;\nvar Timer = /** @class */ (function () {\n    function Timer() {\n        // eslint-disable-next-line no-undefined\n        this._end = undefined;\n        this.start();\n    }\n    Timer.prototype.start = function () {\n        this._start = Date.now();\n        return this;\n    };\n    Timer.prototype.stop = function () {\n        this._end = Date.now();\n        return this;\n    };\n    Timer.prototype.getTimeMeasurement = function () {\n        return {\n            start: this._start,\n            end: this._end,\n            // eslint-disable-next-line no-undefined\n            duration: this._end === undefined ? undefined : this._end - this._start\n        };\n    };\n    return Timer;\n}());\nexports.Timer = Timer;\n\n},{}],69:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventEmitter = require('events').EventEmitter;\n/**\n * A {@link QueueingEventEmitter} can queue events until a listener has been\n * added.\n * @extends EventEmitter\n */\nvar QueueingEventEmitter = /** @class */ (function (_super) {\n    __extends(QueueingEventEmitter, _super);\n    /**\n     * Construct a {@link QueueingEventEmitter}\n     */\n    function QueueingEventEmitter() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _queuedEvents: {\n                value: new Map()\n            }\n        });\n        return _this;\n    }\n    /**\n     * Emit any queued events.\n     * @returns {boolean} true if every event had listeners, false otherwise\n    */ /**\n     * Emit any queued events matching the event name.\n     * @param {string} event\n     * @returns {boolean} true if every event had listeners, false otherwise\n     */\n    QueueingEventEmitter.prototype.dequeue = function (event) {\n        var _this = this;\n        var result = true;\n        if (!event) {\n            this._queuedEvents.forEach(function (_, queuedEvent) {\n                result = this.dequeue(queuedEvent) && result;\n            }, this);\n            return result;\n        }\n        var queue = this._queuedEvents.get(event) || [];\n        this._queuedEvents.delete(event);\n        return queue.reduce(function (result, args) { return _this.emit.apply(_this, __spreadArray([], __read([event].concat(args)), false)) && result; }, result);\n    };\n    /**\n     * If the event has listeners, emit the event; otherwise, queue the event.\n     * @param {string} event\n     * @param {...*} args\n     * @returns {boolean} true if the event had listeners, false if the event was queued\n     */\n    QueueingEventEmitter.prototype.queue = function () {\n        var args = [].slice.call(arguments);\n        if (this.emit.apply(this, __spreadArray([], __read(args), false))) {\n            return true;\n        }\n        var event = args[0];\n        if (!this._queuedEvents.has(event)) {\n            this._queuedEvents.set(event, []);\n        }\n        this._queuedEvents.get(event).push(args.slice(1));\n        return false;\n    };\n    return QueueingEventEmitter;\n}(EventEmitter));\nmodule.exports = QueueingEventEmitter;\n\n},{\"events\":188}],70:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar Participant = require('./participant');\n/**\n * A {@link RemoteParticipant} represents a remote {@link Participant} in a\n * {@link Room}.\n * @extends Participant\n * @property {Map<Track.SID, RemoteAudioTrackPublication>} audioTracks -\n *    The {@link Participant}'s {@link RemoteAudioTrackPublication}s\n * @property {Map<Track.SID, RemoteDataTrackPublication>} dataTracks -\n *    The {@link Participant}'s {@link RemoteDataTrackPublication}s\n * @property {Map<Track.SID, RemoteTrackPublication>} tracks -\n *    The {@link Participant}'s {@link RemoteTrackPublication}s\n * @property {Map<Track.SID, RemoteVideoTrackPublication>} videoTracks -\n *    The {@link Participant}'s {@link RemoteVideoTrackPublication}s\n * @emits RemoteParticipant#reconnected\n * @emits RemoteParticipant#reconnecting\n * @emits RemoteParticipant#trackDimensionsChanged\n * @emits RemoteParticipant#trackDisabled\n * @emits RemoteParticipant#trackEnabled\n * @emits RemoteParticipant#trackMessage\n * @emits RemoteParticipant#trackPublished\n * @emits RemoteParticipant#trackPublishPriorityChanged\n * @emits RemoteParticipant#trackStarted\n * @emits RemoteParticipant#trackSubscribed\n * @emits RemoteParticipant#trackSubscriptionFailed\n * @emits RemoteParticipant#trackSwitchedOff\n * @emits RemoteParticipant#trackSwitchedOn\n * @emits RemoteParticipant#trackUnpublished\n * @emits RemoteParticipant#trackUnsubscribed\n */\nvar RemoteParticipant = /** @class */ (function (_super) {\n    __extends(RemoteParticipant, _super);\n    /**\n     * Construct a {@link RemoteParticipant}.\n     * @param {ParticipantSignaling} signaling\n     * @param {object} [options]\n     */\n    function RemoteParticipant(signaling, options) {\n        var _this = _super.call(this, signaling, options) || this;\n        _this._handleTrackSignalingEvents();\n        _this.once('disconnected', _this._unsubscribeTracks.bind(_this));\n        return _this;\n    }\n    RemoteParticipant.prototype.toString = function () {\n        return \"[RemoteParticipant #\".concat(this._instanceId).concat(this.sid ? \": \".concat(this.sid) : '', \"]\");\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} remoteTrack\n     * @param {RemoteTrackPublication} publication\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    RemoteParticipant.prototype._addTrack = function (remoteTrack, publication, id) {\n        if (!_super.prototype._addTrack.call(this, remoteTrack, id)) {\n            return null;\n        }\n        publication._subscribed(remoteTrack);\n        this.emit('trackSubscribed', remoteTrack, publication);\n        return remoteTrack;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    RemoteParticipant.prototype._addTrackPublication = function (publication) {\n        var addedPublication = _super.prototype._addTrackPublication.call(this, publication);\n        if (!addedPublication) {\n            return null;\n        }\n        this.emit('trackPublished', addedPublication);\n        return addedPublication;\n    };\n    /**\n     * @private\n     */\n    RemoteParticipant.prototype._getTrackPublicationEvents = function () {\n        return __spreadArray(__spreadArray([], __read(_super.prototype._getTrackPublicationEvents.call(this)), false), [\n            ['subscriptionFailed', 'trackSubscriptionFailed'],\n            ['trackDisabled', 'trackDisabled'],\n            ['trackEnabled', 'trackEnabled'],\n            ['publishPriorityChanged', 'trackPublishPriorityChanged'],\n            ['trackSwitchedOff', 'trackSwitchedOff'],\n            ['trackSwitchedOn', 'trackSwitchedOn']\n        ], false);\n    };\n    /**\n     * @private\n     */\n    RemoteParticipant.prototype._unsubscribeTracks = function () {\n        var _this = this;\n        this.tracks.forEach(function (publication) {\n            if (publication.isSubscribed) {\n                var track = publication.track;\n                publication._unsubscribe();\n                _this.emit('trackUnsubscribed', track, publication);\n            }\n        });\n    };\n    /**\n     * @private\n     * @param {RemoteTrack} remoteTrack\n     * @param {RemoteTrackPublication} publication\n     * @param {Track.ID} id\n     * @returns {?RemoteTrack}\n     */\n    RemoteParticipant.prototype._removeTrack = function (remoteTrack, publication, id) {\n        var unsubscribedTrack = this._tracks.get(id);\n        if (!unsubscribedTrack) {\n            return null;\n        }\n        _super.prototype._removeTrack.call(this, unsubscribedTrack, id);\n        publication._unsubscribe();\n        this.emit('trackUnsubscribed', unsubscribedTrack, publication);\n        return unsubscribedTrack;\n    };\n    /**\n     * @private\n     * @param {RemoteTrackPublication} publication\n     * @returns {?RemoteTrackPublication}\n     */\n    RemoteParticipant.prototype._removeTrackPublication = function (publication) {\n        this._signaling.clearTrackHint(publication.trackSid);\n        var removedPublication = _super.prototype._removeTrackPublication.call(this, publication);\n        if (!removedPublication) {\n            return null;\n        }\n        this.emit('trackUnpublished', removedPublication);\n        return removedPublication;\n    };\n    return RemoteParticipant;\n}(Participant));\n/**\n * The {@link RemoteParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event RemoteParticipant#reconnected\n */\n/**\n * The {@link RemoteParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event RemoteParticipant#reconnecting\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link RemoteVideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose dimensions changed\n * @event RemoteParticipant#trackDimensionsChanged\n */\n/**\n * A {@link RemoteTrack} was disabled by the {@link RemoteParticipant}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} associated with the disabled {@link RemoteTrack}\n * @event RemoteParticipant#trackDisabled\n */\n/**\n * A {@link RemoteTrack} was enabled by the {@link RemoteParticipant}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} associated with the enabled {@link RemoteTrack}\n * @event RemoteParticipant#trackEnabled\n */\n/**\n * A message was received over one of the {@link RemoteParticipant}'s\n * {@link RemoteDataTrack}s.\n * @event RemoteParticipant#trackMessage\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} over which the\n *   message was received\n */\n/**\n * A {@link RemoteTrack} was published by the {@link RemoteParticipant} after\n * connecting to the {@link Room}. This event is not emitted for\n * {@link RemoteTrack}s that were published while the {@link RemoteParticipant}\n * was connecting to the {@link Room}.\n * @event RemoteParticipant#trackPublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the published {@link RemoteTrack}\n * @example\n * function trackPublished(publication) {\n *   console.log(`Track ${publication.trackSid} was published`);\n * }\n *\n * room.on('participantConnected', participant => {\n *   // Handle RemoteTracks published while connecting to the Room.\n *   participant.trackPublications.forEach(trackPublished);\n *\n *   // Handle RemoteTracks published after connecting to the Room.\n *   participant.on('trackPublished', trackPublished);\n * });\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link RemoteTrack}s started.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that started\n * @event RemoteParticipant#trackStarted\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was subscribed to\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @event RemoteParticipant#trackSubscribed\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} could not be subscribed to.\n * @param {TwilioError} error - The reason the {@link RemoteTrack} could not be\n *   subscribed to\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that could not\n *   be subscribed to\n * @event RemoteParticipant#trackSubscriptionFailed\n */\n/**\n * The {@link RemoteTrackPublication}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n *   {@link Track.Priority};\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that changed priority\n * @event RemoteParticipant#trackPublishPriorityChanged\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched off\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was switched off\n * @event RemoteParticipant#trackSwitchedOff\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched on.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was switched on\n * @event RemoteParticipant#trackSwitchedOn\n */\n/**\n * A {@link RemoteTrack} was unpublished by the {@link RemoteParticipant}.\n * @event RemoteParticipant#trackUnpublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the unpublished {@link RemoteTrack}\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was unsubscribed from.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was unsubscribed from\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was unsubscribed from\n * @event RemoteParticipant#trackUnsubscribed\n */\nmodule.exports = RemoteParticipant;\n\n},{\"./participant\":60}],71:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventEmitter = require('./eventemitter');\nvar RemoteParticipant = require('./remoteparticipant');\nvar StatsReport = require('./stats/statsreport');\nvar MonitorRegistry = require('./insights/monitorregistry');\nvar _a = require('./util'), flatMap = _a.flatMap, valueToJSON = _a.valueToJSON;\nvar nInstances = 0;\n/**\n * A {@link Room} represents communication between you and one or more\n * {@link RemoteParticipant}s sharing {@link AudioTrack}s and\n * {@link VideoTrack}s.\n * <br><br>\n * You can connect to a {@link Room} by calling {@link module:twilio-video.connect}.\n * @extends EventEmitter\n * @property {?RemoteParticipant} dominantSpeaker - The Dominant Speaker in the\n *   {@link Room}, if any\n * @property {boolean} isRecording - Whether or not the {@link Room} is being\n *   recorded\n * @property {LocalParticipant} localParticipant - Your {@link LocalParticipant}\n *   in the {@link Room}\n * @property {string} mediaRegion - String indicating geographical region\n *    where  media is processed for the {@link Room}.\n * @property {string} name - The {@link Room}'s name\n * @property {Map<Participant.SID, RemoteParticipant>} participants -\n *   The {@link RemoteParticipant}s participating in this {@link Room}\n * @property {Room.SID} sid - The {@link Room}'s SID\n * @property {string} state - \"connected\", \"reconnecting\", or \"disconnected\"\n * @throws {SignalingConnectionDisconnectedError}\n * @emits Room#disconnected\n * @emits Room#transcription\n * @emits Room#participantConnected\n * @emits Room#participantDisconnected\n * @emits Room#participantReconnected\n * @emits Room#participantReconnecting\n * @emits Room#reconnected\n * @emits Room#reconnecting\n * @emits Room#recordingStarted\n * @emits Room#recordingStopped\n * @emits Room#trackDimensionsChanged\n * @emits Room#trackDisabled\n * @emits Room#trackEnabled\n * @emits Room#trackMessage\n * @emits Room#trackPublished\n * @emits Room#trackPublishPriorityChanged\n * @emits Room#trackStarted\n * @emits Room#trackSubscribed\n * @emits Room#trackSwitchedOff\n * @emits Room#trackSwitchedOn\n * @emits Room#trackUnpublished\n * @emits Room#trackUnsubscribed\n * @emits Room#trackWarning\n * @emits Room#trackWarningsCleared\n */\nvar Room = /** @class */ (function (_super) {\n    __extends(Room, _super);\n    /**\n     * Construct a {@link Room}.\n     * @param {RoomSignaling} signaling\n     * @param {?object} [options={}]\n     */\n    function Room(localParticipant, signaling, options) {\n        var _this = _super.call(this) || this;\n        var log = options.log.createLog('default', _this);\n        var participants = new Map();\n        /* istanbul ignore next */\n        Object.defineProperties(_this, {\n            _log: {\n                value: log\n            },\n            _clientTrackSwitchOffControl: {\n                value: options.clientTrackSwitchOffControl || 'disabled'\n            },\n            _contentPreferencesMode: {\n                value: options.contentPreferencesMode || 'disabled'\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _options: {\n                value: options\n            },\n            _participants: {\n                value: participants\n            },\n            _signaling: {\n                value: signaling\n            },\n            _insightsMonitors: {\n                value: options.eventObserver && options.insights\n                    ? new MonitorRegistry(log)\n                    : null\n            },\n            dominantSpeaker: {\n                enumerable: true,\n                get: function () {\n                    return this.participants.get(signaling.dominantSpeakerSid) || null;\n                }\n            },\n            isRecording: {\n                enumerable: true,\n                get: function () {\n                    return signaling.recording.isEnabled || false;\n                }\n            },\n            localParticipant: {\n                enumerable: true,\n                value: localParticipant\n            },\n            name: {\n                enumerable: true,\n                value: signaling.name\n            },\n            participants: {\n                enumerable: true,\n                value: participants\n            },\n            sid: {\n                enumerable: true,\n                value: signaling.sid\n            },\n            state: {\n                enumerable: true,\n                get: function () {\n                    return signaling.state;\n                }\n            },\n            mediaRegion: {\n                enumerable: true,\n                value: signaling.mediaRegion\n            }\n        });\n        handleLocalParticipantEvents(_this, localParticipant);\n        handleRecordingEvents(_this, signaling.recording);\n        handleSignalingEvents(_this, signaling);\n        verifyNoiseCancellation(_this);\n        log.info('Created a new Room:', _this.name);\n        log.debug('Initial RemoteParticipants:', Array.from(_this._participants.values()));\n        return _this;\n    }\n    Room.prototype.toString = function () {\n        if (!this._instanceId) {\n            return '[Room (uninitialized)]';\n        }\n        return \"[Room #\".concat(this._instanceId, \": \").concat(this.sid, \"]\");\n    };\n    /**\n     * Disconnect from the {@link Room}.\n     * @returns {this}\n     */\n    Room.prototype.disconnect = function () {\n        this._log.info('Disconnecting');\n        this._signaling.disconnect();\n        return this;\n    };\n    /**\n     * Get the {@link Room}'s media statistics. This is not supported in Safari 12.0 or below\n     * due to this bug : https://bugs.webkit.org/show_bug.cgi?id=192601\n     *\n     * @returns {Promise.<Array<StatsReport>>}\n     */\n    Room.prototype.getStats = function () {\n        var _this = this;\n        return this._signaling.getStats().then(function (responses) {\n            return Array.from(responses).map(function (_a) {\n                var _b = __read(_a, 2), id = _b[0], response = _b[1];\n                return new StatsReport(id, Object.assign({}, response, {\n                    localAudioTrackStats: rewriteLocalTrackIds(_this, response.localAudioTrackStats),\n                    localVideoTrackStats: rewriteLocalTrackIds(_this, response.localVideoTrackStats)\n                }));\n            });\n        });\n    };\n    /**\n     * Restart the muted local media {@link Track}s and play inadvertently paused HTMLMediaElements\n     * that are attached to local and remote media {@link Track}s. This method is useful mainly on\n     * mobile browsers (Safari and Chrome on iOS), where there is a possibility that the muted local\n     * media {@link Track}s are never unmuted and inadvertently paused HTMLMediaElements are never\n     * played again, especially after handling an incoming phone call.\n     * @returns {this}\n     */\n    Room.prototype.refreshInactiveMedia = function () {\n        var localTrackPublications = this.localParticipant.tracks;\n        var localMediaTracks = Array.from(localTrackPublications.values())\n            .filter(function (_a) {\n            var kind = _a.track.kind;\n            return kind !== 'data';\n        })\n            .map(function (_a) {\n            var track = _a.track;\n            return track;\n        });\n        var remoteMediaTracks = flatMap(this.participants, function (participants) { return Array.from(participants.tracks.values()); })\n            .filter(function (_a) {\n            var track = _a.track;\n            return track && track.kind !== 'data';\n        })\n            .map(function (_a) {\n            var track = _a.track;\n            return track;\n        });\n        var mediaTracks = localMediaTracks.concat(remoteMediaTracks);\n        var unmuteEvent = new Event('unmute');\n        localMediaTracks.forEach(function (_a) {\n            var isMuted = _a.isMuted, mediaStreamTrack = _a.mediaStreamTrack;\n            if (isMuted) {\n                mediaStreamTrack.dispatchEvent(unmuteEvent);\n            }\n        });\n        var pauseEvent = new Event('pause');\n        mediaTracks.forEach(function (_a) {\n            var attachments = _a._attachments, elShims = _a._elShims;\n            return attachments.forEach(function (el) {\n                var shim = elShims.get(el);\n                var isInadvertentlyPaused = el.paused && shim && !shim.pausedIntentionally();\n                if (isInadvertentlyPaused) {\n                    el.dispatchEvent(pauseEvent);\n                }\n            });\n        });\n        return this;\n    };\n    Room.prototype.toJSON = function () {\n        return valueToJSON(this);\n    };\n    return Room;\n}(EventEmitter));\nfunction verifyNoiseCancellation(room) {\n    var allowedAudioProcessors = room.localParticipant._signaling.audioProcessors;\n    room.localParticipant.audioTracks.forEach(function (_a) {\n        var track = _a.track;\n        var noiseCancellation = track.noiseCancellation;\n        if (noiseCancellation && !allowedAudioProcessors.includes(noiseCancellation.vendor)) {\n            room._log.warn(\"\".concat(noiseCancellation.vendor, \" is not supported in this room. disabling it permanently\"));\n            noiseCancellation.disablePermanently();\n        }\n    });\n}\nfunction rewriteLocalTrackIds(room, trackStats) {\n    var localParticipantSignaling = room.localParticipant._signaling;\n    return trackStats.reduce(function (trackStats, trackStat) {\n        var publication = localParticipantSignaling.tracks.get(trackStat.trackId);\n        var trackSender = localParticipantSignaling.getSender(publication);\n        return trackSender\n            ? [Object.assign({}, trackStat, { trackId: trackSender.id })].concat(trackStats)\n            : trackStats;\n    }, []);\n}\n/**\n * A {@link Room.SID} is a 34-character string starting with \"RM\"\n * that uniquely identifies a {@link Room}.\n * @type string\n * @typedef Room.SID\n */\n/**\n * The Dominant Speaker in the {@link Room} changed. Either the Dominant Speaker\n * is a new {@link RemoteParticipant} or the Dominant Speaker has been reset and\n * is now null.\n * @param {?RemoteParticipant} dominantSpeaker - The Dominant Speaker in the\n *   {@link Room}, if any\n * @event Room#dominantSpeakerChanged\n */\n/**\n * Your {@link LocalParticipant} was disconnected from the {@link Room} and all\n * other {@link RemoteParticipant}s.\n * @param {Room} room - The {@link Room} your\n *   {@link LocalParticipant} was disconnected from\n * @param {?TwilioError} error - Present when the {@link LocalParticipant} got\n *   disconnected from the {@link Room} unexpectedly\n * @event Room#disconnected\n * @example\n * myRoom.on('disconnected', function(room, error) {\n *   if (error) {\n *     console.log('Unexpectedly disconnected:', error);\n *   }\n *   myRoom.localParticipant.tracks.forEach(function(track) {\n *     track.stop();\n *     track.detach();\n *   });\n * });\n */\n/**\n * Emitted when transcription data is received.\n * This event is only emitted when the {@link Room} is configured for transcription.\n * @param {TranscriptionEvent} transcriptionEvent - The transcription event data.\n * @param {string} transcriptionEvent.language_code - The BCP-47 language code (e.g., 'en-US') of the transcribed text.\n * @param {boolean} transcriptionEvent.partial_results - Whether the transcription is a final or a partial result.\n * @param {string} transcriptionEvent.participant - The SID of the speaking participant.\n * @param {number} transcriptionEvent.sequence_number - Starts with one and increments monotonically.\n * @param {string} transcriptionEvent.timestamp - ISO 8601 timestamp of when the transcription was generated.\n * @param {string} transcriptionEvent.track - The SID of the audio track being transcribed.\n * @param {string} transcriptionEvent.transcription - The transcribed text.\n * @param {string} transcriptionEvent.type - Constant 'extension_transcriptions'.\n * @event Room#transcription\n * @example\n * room.on('transcription', transcriptionEvent => {\n *   console.log(`${transcriptionEvent.participant}: ${transcriptionEvent.transcription}`);\n * });\n */\n/**\n * A {@link RemoteParticipant} joined the {@link Room}. In Large Group Rooms (Maximum\n * Participants greater than 50), this event is raised only when a {@link RemoteParticipant}\n * publishes at least one {@link LocalTrack}.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who joined\n * @event Room#participantConnected\n * @example\n * myRoom.on('participantConnected', function(participant) {\n *   console.log(participant.identity + ' joined the Room');\n * });\n */\n/**\n * A {@link RemoteParticipant} left the {@link Room}. In Large Group Rooms (Maximum\n * Participants greater than 50), this event is raised only when a {@link RemoteParticipant}\n * unpublishes all its {@link LocalTrack}s.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who left\n * @event Room#participantDisconnected\n * @example\n * myRoom.on('participantDisconnected', function(participant) {\n *   console.log(participant.identity + ' left the Room');\n *   participant.tracks.forEach(function(track) {\n *     track.detach().forEach(function(mediaElement) {\n *       mediaElement.remove();\n *     });\n *   });\n * });\n */\n/**\n * A {@link RemoteParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} that has reconnected.\n * @event Room#participantReconnected\n * @example\n * myRoom.on('participantReconnected', participant => {\n *   console.log(participant.identity + ' reconnected to the Room');\n * });\n */\n/**\n * A {@link RemoteParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} that is reconnecting.\n * @event Room#participantReconnecting\n * @example\n * myRoom.on('participantReconnecting', participant => {\n *   console.log(participant.identity + ' is reconnecting to the Room');\n * });\n */\n/**\n * Your application successfully reconnected to the {@link Room}. When this\n * event is emitted, the {@link Room} is in state \"connected\".\n * @event Room#reconnected\n * @example\n * myRoom.on('reconnected', () => {\n *   console.log('Reconnected!');\n * });\n */\n/**\n * Your application is reconnecting to the {@link Room}. This happens when there\n * is a disruption in your signaling connection and/or your media connection. When\n * this event is emitted, the {@link Room} is in state \"reconnecting\". If reconnecting\n * succeeds, the {@link Room} will emit a \"reconnected\" event.\n * @param {MediaConnectionError|SignalingConnectionDisconnectedError} error - A\n *   {@link MediaConnectionError} if your application is reconnecting due to a\n *   disruption in your media connection, or a {@link SignalingConnectionDisconnectedError}\n *   if your application is reconnecting due to a disruption in your signaling connection\n * @event Room#reconnecting\n * @example\n * myRoom.on('reconnecting', error => {\n *   if (error.code === 53001) {\n *     console.log('Reconnecting your signaling connection!', error.message);\n *   } else if (error.code === 53405) {\n *     console.log('Reconnecting your media connection!', error.message);\n *   }\n * });\n */\n/**\n * The {@link Room} is now being recorded\n * @event Room#recordingStarted\n */\n/**\n * The {@link Room} is no longer being recorded\n * @event Room#recordingStopped\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link VideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose dimensions changed\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteVideoTrack}'s dimensions changed\n * @event Room#trackDimensionsChanged\n */\n/**\n * A {@link RemoteTrack} was disabled by a {@link RemoteParticipant} in the {@link Room}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} that represents disabled {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   disabled the {@link RemoteTrack}\n * @event Room#trackDisabled\n */\n/**\n * A {@link RemoteTrack} was enabled by a {@link RemoteParticipant} in the {@link Room}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} that represents enabled {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   enabled the {@link RemoteTrack}\n * @event Room#trackEnabled\n */\n/**\n * A message was received over one of the {@link RemoteParticipant}'s\n * {@link RemoteDataTrack}'s.\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} over which the\n *   message was received\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteDataTrack} received the message\n * @event Room#trackMessage\n */\n/**\n * A {@link RemoteTrack} was published by a {@link RemoteParticipant} after\n * connecting to the {@link Room}. This event is not emitted for\n * {@link RemoteTrack}s that were published while the {@link RemoteParticipant}\n * was connecting to the {@link Room}.\n * @event Room#trackPublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the published {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   published the {@link RemoteTrack}\n * @example\n * function trackPublished(publication, participant) {\n *   console.log(`RemoteParticipant ${participant.sid} published Track ${publication.trackSid}`);\n * }\n *\n * // Handle RemoteTracks published after connecting to the Room.\n * room.on('trackPublished', trackPublished);\n *\n * room.on('participantConnected', participant => {\n *   // Handle RemoteTracks published while connecting to the Room.\n *   participant.trackPublications.forEach(publication => trackPublished(publication, participant));\n * });\n */\n/**\n * One of a {@link RemoteParticipant}'s {@link RemoteTrack}s in the {@link Room} started.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that started\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} started\n * @event Room#trackStarted\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was subscribed\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was subscribed\n * @event Room#trackSubscribed\n * @example\n * room.on('trackSubscribed', function(track, publication, participant) {\n *   var participantView = document.getElementById('participant-view-' + participant.identity);\n *   participantView.appendChild(track.attach());\n * });\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched off.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched off\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was switched off\n * @event Room#trackSwitchedOff\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched on\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was switched on\n * @event Room#trackSwitchedOn\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} could not be subscribed to.\n * @param {TwilioError} error - The reason the {@link RemoteTrack} could not be\n *   subscribed to\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that could not\n *   be subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} could not be subscribed to\n * @event Room#trackSubscriptionFailed\n */\n/**\n * The {@link RemoteTrack}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n *   {@link Track.Priority};\n * @param {RemoteTrackPublication} publication - The\n *   {@link RemoteTrackPublication} for the {@link RemoteTrack} that changed priority\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} changed priority\n * @event Room#trackPublishPriorityChanged\n */\n/**\n * A {@link RemoteTrack} was unpublished by a {@link RemoteParticipant} to the {@link Room}.\n * @event Room#trackUnpublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   which represents the unpublished {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n *   unpublished the {@link RemoteTrack}\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was unsubscribed from.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was unsubscribed\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n *   for the {@link RemoteTrack} that was unsubscribed from\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n *   {@link RemoteTrack} was unsubscribed\n * @event Room#trackUnsubscribed\n * @example\n * room.on('trackUnsubscribed', function(track, publication, participant) {\n *   track.detach().forEach(function(mediaElement) {\n *     mediaElement.remove();\n *   });\n * });\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s in the {@link Room} encountered a warning.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {string} name - The warning that was raised.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that encountered the warning.\n * @param {LocalParticipant} participant - The {@link LocalParticipant}\n * @event Room#trackWarning\n * @example\n * room.on('trackWarning', (name, publication, participant) => {\n *   if (name === 'recording-media-lost') {\n *     log(`LocalTrack ${publication.track.name} is not recording media.`,\n *       name, publication, participant);\n *\n *     // Wait a reasonable amount of time to clear the warning.\n *     const timer = setTimeout(() => {\n *       // If the warning is not cleared, you can manually\n *       // reconnect to the room, or show a dialog to the user\n *     }, 5000);\n *\n *     room.once('trackWarningsCleared', (publication, participant) => {\n *       log('LocalTrack warnings have cleared!',\n *         publication, participant);\n *       clearTimeout(timer);\n *     });\n *   }\n});\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s in the {@link Room} cleared all warnings.\n * This event is only raised if you enabled warnings using <code>notifyWarnings</code> in <code>ConnectOptions</code>.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that cleared all warnings.\n * @param {LocalParticipant} participant - The {@link LocalParticipant}\n * @event Room#trackWarningsCleared\n */\nfunction connectParticipant(room, participantSignaling) {\n    var log = room._log, clientTrackSwitchOffControl = room._clientTrackSwitchOffControl, contentPreferencesMode = room._contentPreferencesMode, _a = room._options, MediaStream = _a.MediaStream, mapMediaElement = _a.mapMediaElement, disposeMediaElement = _a.disposeMediaElement;\n    var participant = new RemoteParticipant(participantSignaling, { log: log, clientTrackSwitchOffControl: clientTrackSwitchOffControl, contentPreferencesMode: contentPreferencesMode, MediaStream: MediaStream, mapMediaElement: mapMediaElement, disposeMediaElement: disposeMediaElement });\n    log.info('A new RemoteParticipant connected:', participant);\n    room._participants.set(participant.sid, participant);\n    room.emit('participantConnected', participant);\n    // Reemit Track and RemoteParticipant events.\n    var eventListeners = [\n        ['reconnected', 'participantReconnected'],\n        ['reconnecting', 'participantReconnecting'],\n        'trackDimensionsChanged',\n        'trackDisabled',\n        'trackEnabled',\n        'trackMessage',\n        'trackPublished',\n        'trackPublishPriorityChanged',\n        'trackStarted',\n        'trackSubscribed',\n        'trackSubscriptionFailed',\n        'trackSwitchedOff',\n        'trackSwitchedOn',\n        'trackUnpublished',\n        'trackUnsubscribed'\n    ].map(function (eventOrPair) {\n        var _a = __read(Array.isArray(eventOrPair)\n            ? eventOrPair\n            : [eventOrPair, eventOrPair], 2), event = _a[0], participantEvent = _a[1];\n        function reemit() {\n            var args = [].slice.call(arguments);\n            args.unshift(participantEvent);\n            args.push(participant);\n            room.emit.apply(room, __spreadArray([], __read(args), false));\n        }\n        participant.on(event, reemit);\n        return [event, reemit];\n    });\n    participant.once('disconnected', function participantDisconnected() {\n        var dominantSpeaker = room.dominantSpeaker;\n        log.info('RemoteParticipant disconnected:', participant);\n        room._participants.delete(participant.sid);\n        eventListeners.forEach(function (args) {\n            participant.removeListener(args[0], args[1]);\n        });\n        room.emit('participantDisconnected', participant);\n        if (participant === dominantSpeaker) {\n            room.emit('dominantSpeakerChanged', room.dominantSpeaker);\n        }\n    });\n}\nfunction handleLocalParticipantEvents(room, localParticipant) {\n    var events = ['trackWarning', 'trackWarningsCleared'].map(function (event) { return ({\n        eventName: event,\n        handler: function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return room.emit.apply(room, __spreadArray([event], __read(__spreadArray(__spreadArray([], __read(args), false), [localParticipant], false)), false));\n        },\n    }); });\n    events.forEach(function (_a) {\n        var eventName = _a.eventName, handler = _a.handler;\n        return localParticipant.on(eventName, handler);\n    });\n    room.once('disconnected', function () {\n        return events.forEach(function (_a) {\n            var eventName = _a.eventName, handler = _a.handler;\n            return localParticipant.removeListener(eventName, handler);\n        });\n    });\n}\nfunction handleRecordingEvents(room, recording) {\n    recording.on('updated', function updated() {\n        var started = recording.isEnabled;\n        room._log.info(\"Recording \".concat(started ? 'started' : 'stopped'));\n        room.emit(\"recording\".concat(started ? 'Started' : 'Stopped'));\n    });\n}\nfunction handleSignalingEvents(room, signaling) {\n    var log = room._log;\n    // Reemit RemoteParticipant events from the RoomSignaling.\n    log.debug('Creating a new RemoteParticipant for each ParticipantSignaling '\n        + 'in the RoomSignaling');\n    signaling.participants.forEach(connectParticipant.bind(null, room));\n    log.debug('Setting up RemoteParticipant creation for all subsequent '\n        + 'ParticipantSignalings that connect to the RoomSignaling');\n    signaling.on('participantConnected', connectParticipant.bind(null, room));\n    signaling.on('dominantSpeakerChanged', function () { return room.emit('dominantSpeakerChanged', room.dominantSpeaker); });\n    signaling.on('transcription', function (data) { return room.emit('transcription', data); });\n    // Reemit state transition events from the RoomSignaling.\n    signaling.on('stateChanged', function stateChanged(state, error) {\n        log.info('Transitioned to state:', state);\n        switch (state) {\n            case 'disconnected':\n                room.participants.forEach(function (participant) {\n                    participant._unsubscribeTracks();\n                });\n                room.emit(state, room, error);\n                room.localParticipant.tracks.forEach(function (publication) {\n                    publication.unpublish();\n                });\n                if (room._insightsMonitors) {\n                    room._insightsMonitors.cleanup();\n                }\n                signaling.removeListener('stateChanged', stateChanged);\n                break;\n            case 'reconnecting':\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return room.emit('reconnecting', error); }, 0);\n                break;\n            default:\n                // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n                // Do not signal  public events synchronously with lock held.\n                setTimeout(function () { return room.emit('reconnected'); }, 0);\n        }\n    });\n}\nmodule.exports = Room;\n\n},{\"./eventemitter\":10,\"./insights/monitorregistry\":21,\"./remoteparticipant\":70,\"./stats/statsreport\":131,\"./util\":147}],72:[function(require,module,exports){\n/* eslint consistent-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ParticipantSignaling = require('./participant');\nvar RoomSignaling = require('./room');\nvar StateMachine = require('../statemachine');\n/*\nSignaling States\n----------------\n\n              +---------+\n              |         |\n              | opening |\n         +--->|         |\n         |    +---------+\n    +--------+   |   |   +------+\n    |        |<--+   +-->|      |\n    | closed |<----------| open |\n    |        |<--+   +-->|      |\n    +--------+   |   |   +------+\n              +---------+   |\n              |         |<--+\n              | closing |\n              |         |\n              +---------+\n\n*/\nvar states = {\n    closed: [\n        'opening'\n    ],\n    opening: [\n        'closed',\n        'open'\n    ],\n    open: [\n        'closed',\n        'closing'\n    ],\n    closing: [\n        'closed',\n        'open'\n    ]\n};\n/**\n * @extends StateMachine\n * @property {string} state - one of \"closed\", \"opening\", \"open\", or \"closing\"\n */\nvar Signaling = /** @class */ (function (_super) {\n    __extends(Signaling, _super);\n    /**\n     * Construct {@link Signaling}.\n     */\n    function Signaling() {\n        return _super.call(this, 'closed', states) || this;\n    }\n    /**\n     * @private\n     */\n    // NOTE(mroberts): This is a dummy implementation suitable for testing.\n    Signaling.prototype._close = function (key) {\n        this.transition('closing', key);\n        this.transition('closed', key);\n        return Promise.resolve(this);\n    };\n    /**\n     * @private\n     */\n    // NOTE(mroberts): This is a dummy implementation suitable for testing.\n    Signaling.prototype._connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n        localParticipant.connect('PA00000000000000000000000000000000', 'test');\n        var sid = 'RM00000000000000000000000000000000';\n        var promise = Promise.resolve(new RoomSignaling(localParticipant, sid, options));\n        promise.cancel = function cancel() { };\n        return promise;\n    };\n    /**\n     * @private\n     */\n    // NOTE(mroberts): This is a dummy implementation suitable for testing.\n    Signaling.prototype._open = function (key) {\n        this.transition('opening', key);\n        this.transition('open', key);\n        return Promise.resolve(this);\n    };\n    /**\n     * Close the {@link Signaling}.\n     * @returns {Promise<this>}\n     */\n    Signaling.prototype.close = function () {\n        var _this = this;\n        return this.bracket('close', function (key) {\n            switch (_this.state) {\n                case 'closed':\n                    return _this;\n                case 'open':\n                    return _this._close(key);\n                default:\n                    throw new Error(\"Unexpected Signaling state \\\"\".concat(_this.state, \"\\\"\"));\n            }\n        });\n    };\n    /**\n     * Connect to a {@link RoomSignaling}.\n     * @param {ParticipantSignaling} localParticipant\n     * @param {string} token\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {PreferredCodecs} preferredCodecs\n     * @param {object} options\n     * @returns {Promise<function(): CancelablePromise<RoomSignaling>>}\n     */\n    Signaling.prototype.connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n        var self = this;\n        return this.bracket('connect', function transition(key) {\n            switch (self.state) {\n                case 'closed':\n                    return self._open(key).then(transition.bind(null, key));\n                case 'open':\n                    // NOTE(mroberts): We don't need to hold the lock in _connect. Instead,\n                    // we just need to ensure the Signaling remains open.\n                    self.releaseLockCompletely(key);\n                    return self._connect(localParticipant, token, encodingParameters, preferredCodecs, options);\n                default:\n                    throw new Error(\"Unexpected Signaling state \\\"\".concat(self.state, \"\\\"\"));\n            }\n        });\n    };\n    /**\n     * Create a local {@link ParticipantSignaling}.\n     * @returns {ParticipantSignaling}\n     */\n    Signaling.prototype.createLocalParticipantSignaling = function () {\n        return new ParticipantSignaling();\n    };\n    /**\n     * Open the {@link Signaling}.\n     * @returns {Promise<this>}\n     */\n    Signaling.prototype.open = function () {\n        var _this = this;\n        return this.bracket('open', function (key) {\n            switch (_this.state) {\n                case 'closed':\n                    return _this._open(key);\n                case 'open':\n                    return _this;\n                default:\n                    throw new Error(\"Unexpected Signaling state \\\"\".concat(_this.state, \"\\\"\"));\n            }\n        });\n    };\n    return Signaling;\n}(StateMachine));\nmodule.exports = Signaling;\n\n},{\"../statemachine\":103,\"./participant\":75,\"./room\":79}],73:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ParticipantSignaling = require('./participant');\nvar LocalParticipantSignaling = /** @class */ (function (_super) {\n    __extends(LocalParticipantSignaling, _super);\n    function LocalParticipantSignaling() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _publicationsToTrackSenders: {\n                value: new Map()\n            },\n            _trackSendersToPublications: {\n                value: new Map()\n            }\n        });\n        return _this;\n    }\n    /**\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @param {?NoiseCancellationVendor} noiseCancellationVendor\n     * @returns {LocalTrackPublicationSignaling} publication\n     */\n    LocalParticipantSignaling.prototype.addTrack = function (trackSender, name, priority, noiseCancellationVendor) {\n        if (noiseCancellationVendor === void 0) { noiseCancellationVendor = null; }\n        var publication = this._createLocalTrackPublicationSignaling(trackSender, name, priority, noiseCancellationVendor);\n        this._trackSendersToPublications.set(trackSender, publication);\n        this._publicationsToTrackSenders.set(publication, trackSender);\n        _super.prototype.addTrack.call(this, publication);\n        return this;\n    };\n    /**\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @returns {?LocalTrackPublicationSignaling}\n     */\n    LocalParticipantSignaling.prototype.getPublication = function (trackSender) {\n        return this._trackSendersToPublications.get(trackSender) || null;\n    };\n    /**\n     * @param {LocalTrackPublicationSignaling} trackPublication\n     * @returns {?DataTrackSender|MediaTrackSender}\n     */\n    LocalParticipantSignaling.prototype.getSender = function (trackPublication) {\n        return this._publicationsToTrackSenders.get(trackPublication) || null;\n    };\n    /**\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @returns {?LocalTrackPublicationSignaling}\n     */\n    LocalParticipantSignaling.prototype.removeTrack = function (trackSender) {\n        var publication = this._trackSendersToPublications.get(trackSender);\n        if (!publication) {\n            return null;\n        }\n        this._trackSendersToPublications.delete(trackSender);\n        this._publicationsToTrackSenders.delete(publication);\n        var didDelete = _super.prototype.removeTrack.call(this, publication);\n        if (didDelete) {\n            publication.stop();\n        }\n        return publication;\n    };\n    return LocalParticipantSignaling;\n}(ParticipantSignaling));\nmodule.exports = LocalParticipantSignaling;\n\n},{\"./participant\":75}],74:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackSignaling = require('./track');\n/**\n * A {@link LocalTrackPublication} implementation\n * @extends TrackSignaling\n * @property {Track.ID} id\n */\nvar LocalTrackPublicationSignaling = /** @class */ (function (_super) {\n    __extends(LocalTrackPublicationSignaling, _super);\n    /**\n     * Construct a {@link LocalTrackPublicationSignaling}. {@link TrackSenders}\n     * are always cloned.\n     * @param {DataTrackSender|MediaTrackSender} trackSender - the {@link TrackSender}\n     *   of the {@link LocalTrack} to be published\n     * @param {string} name - the name of the {@link LocalTrack} to be published\n     * @param {Track.Priority} priority - initial {@link Track.Priority}\n     */\n    function LocalTrackPublicationSignaling(trackSender, name, priority) {\n        var _this = this;\n        // NOTE(lrivas): Safely clone a media stream track while preserving the original\n        // enabled state. This is needed because Safari 18 incorrectly enables tracks\n        // during cloning. Bug report: https://bugs.webkit.org/show_bug.cgi?id=281758\n        var clonedTrackSender = trackSender.clone();\n        if (trackSender.kind !== 'data') {\n            clonedTrackSender.track.enabled = trackSender.track.enabled;\n        }\n        trackSender = clonedTrackSender;\n        var enabled = trackSender.kind === 'data' ? true : trackSender.track.enabled;\n        _this = _super.call(this, name, trackSender.kind, enabled, priority) || this;\n        _this.setTrackTransceiver(trackSender);\n        Object.defineProperties(_this, {\n            _updatedPriority: {\n                value: priority,\n                writable: true\n            },\n            id: {\n                enumerable: true,\n                value: trackSender.id\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(LocalTrackPublicationSignaling.prototype, \"updatedPriority\", {\n        /**\n         * The updated {@link Track.Priority} of the {@link LocalTrack}.\n         * @property {Track.priority}\n         */\n        get: function () {\n            return this._updatedPriority;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Enable (or disable) the {@link LocalTrackPublicationSignaling} if it is not\n     * already enabled (or disabled). This also updates the cloned\n     * {@link MediaTrackSender}'s MediaStreamTracks `enabled` state.\n     * @param {boolean} [enabled=true]\n     * @return {this}\n     */\n    LocalTrackPublicationSignaling.prototype.enable = function (enabled) {\n        enabled = typeof enabled === 'boolean' ? enabled : true;\n        this.trackTransceiver.track.enabled = enabled;\n        return _super.prototype.enable.call(this, enabled);\n    };\n    /**\n     * Rejects the SID's deferred promise with the given Error.\n     * @param {Error} error\n     * @returns {this}\n     */\n    LocalTrackPublicationSignaling.prototype.publishFailed = function (error) {\n        if (setError(this, error)) {\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Update the {@link Track.Priority} of the published {@link LocalTrack}.\n     * @param {Track.priority} priority\n     * @returns {this}\n     */\n    LocalTrackPublicationSignaling.prototype.setPriority = function (priority) {\n        if (this._updatedPriority !== priority) {\n            this._updatedPriority = priority;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Set the published {@link LocalTrack}'s {@link Track.SID}.\n     * @param {Track.SID} sid\n     * @returns {this}\n     */\n    LocalTrackPublicationSignaling.prototype.setSid = function (sid) {\n        if (this._error) {\n            return this;\n        }\n        return _super.prototype.setSid.call(this, sid);\n    };\n    /**\n     * Stop the cloned {@link TrackSender}.\n     * @returns {void}\n     */\n    LocalTrackPublicationSignaling.prototype.stop = function () {\n        this.trackTransceiver.stop();\n    };\n    return LocalTrackPublicationSignaling;\n}(TrackSignaling));\n/**\n * @param {LocalTrackPublication} publication\n * @param {Error} error\n * @returns {boolean} updated\n */\nfunction setError(publication, error) {\n    if (publication._sid !== null || publication._error) {\n        return false;\n    }\n    publication._error = error;\n    return true;\n}\nmodule.exports = LocalTrackPublicationSignaling;\n\n},{\"./track\":80}],75:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar StateMachine = require('../statemachine');\nvar NetworkQualityStats = require('../stats/networkqualitystats');\n/*\nParticipantSignaling States\n----------------------\n\n    +------------+     +-----------+     +--------------+\n    |            |     |           |     |              |\n    | connecting |---->| connected |---->| disconnected |\n    |            |     |           |     |              |\n    +------------+     +-----------+     +--------------+\n                           | ^                    ^\n                           | |  +--------------+  |\n                           | |--|              |  |\n                           |--->| reconnecting |--|\n                                |              |\n                                +--------------+\n*/\nvar states = {\n    connecting: [\n        'connected'\n    ],\n    connected: [\n        'disconnected',\n        'reconnecting'\n    ],\n    reconnecting: [\n        'connected',\n        'disconnected'\n    ],\n    disconnected: []\n};\n/**\n * A {@link Participant} implementation\n * @extends StateMachine\n * @property {?string} identity\n * @property {?Participant.SID} sid\n * @property {string} state - \"connecting\", \"connected\", or \"disconnected\"\n * @property {Map<Track.ID | Track.SID, TrackSignaling>} tracks\n * @emits ParticipantSignaling#networkQualityLevelChanged\n * @emits ParticipantSignaling#trackAdded\n * @emits ParticipantSignaling#trackRemoved\n */\nvar ParticipantSignaling = /** @class */ (function (_super) {\n    __extends(ParticipantSignaling, _super);\n    /**\n     * Construct a {@link ParticipantSignaling}.\n     */\n    function ParticipantSignaling() {\n        var _this = _super.call(this, 'connecting', states) || this;\n        Object.defineProperties(_this, {\n            _identity: {\n                writable: true,\n                value: null\n            },\n            _networkQualityLevel: {\n                value: null,\n                writable: true\n            },\n            _networkQualityStats: {\n                value: null,\n                writable: true\n            },\n            _sid: {\n                writable: true,\n                value: null\n            },\n            identity: {\n                enumerable: true,\n                get: function () {\n                    return this._identity;\n                }\n            },\n            sid: {\n                enumerable: true,\n                get: function () {\n                    return this._sid;\n                }\n            },\n            tracks: {\n                enumerable: true,\n                value: new Map()\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(ParticipantSignaling.prototype, \"networkQualityLevel\", {\n        /**\n         * Get the current {@link NetworkQualityLevel}, if any.\n         * @returns {?NetworkQualityLevel} networkQualityLevel - initially null\n         */\n        get: function () {\n            return this._networkQualityLevel;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ParticipantSignaling.prototype, \"networkQualityStats\", {\n        /**\n         * Get the current {@link NetworkQualityStats}\n         * @returns {?NetworkQualityStats} networkQualityStats - initially null\n         */\n        get: function () {\n            return this._networkQualityStats;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Add the {@link TrackSignaling}, MediaStreamTrack, or\n     * {@link DataTrackSender} to the {@link ParticipantSignaling}.\n     * @param {TrackSignaling|DataTrackSender|MediaTrackSender} track\n     * @returns {this}\n     * @fires ParticipantSignaling#trackAdded\n     */\n    ParticipantSignaling.prototype.addTrack = function (track) {\n        this.tracks.set(track.id || track.sid, track);\n        this.emit('trackAdded', track);\n        return this;\n    };\n    /**\n     * Disconnect the {@link ParticipantSignaling}.\n     * @returns {boolean}\n     */\n    ParticipantSignaling.prototype.disconnect = function () {\n        if (this.state !== 'disconnected') {\n            this.preempt('disconnected');\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Remove the {@link TrackSignaling}, MediaStreamTrack, or\n     * {@link DataTrackSender} from the {@link ParticipantSignaling}.\n     * @param {TrackSignaling|DataTrackSender|MediaTrackSender} track\n     * @returns {?TrackSignaling}\n     * @fires ParticipantSignaling#trackRemoved\n     */\n    ParticipantSignaling.prototype.removeTrack = function (track) {\n        var signaling = this.tracks.get(track.id || track.sid);\n        this.tracks.delete(track.id || track.sid);\n        if (signaling) {\n            this.emit('trackRemoved', track);\n        }\n        return signaling || null;\n    };\n    /**\n     * @param {NetworkQualityLevel} networkQualityLevel\n     * @param {?NetworkQualityLevels} [networkQualityLevels=null]\n     * @returns {void}\n     */\n    ParticipantSignaling.prototype.setNetworkQualityLevel = function (networkQualityLevel, networkQualityLevels) {\n        if (this._networkQualityLevel !== networkQualityLevel) {\n            this._networkQualityLevel = networkQualityLevel;\n            this._networkQualityStats = networkQualityLevels\n                && (networkQualityLevels.audio || networkQualityLevels.video)\n                ? new NetworkQualityStats(networkQualityLevels)\n                : null;\n            this.emit('networkQualityLevelChanged');\n        }\n    };\n    /**\n     * Connect the {@link ParticipantSignaling}.\n     * @param {Participant.SID} sid\n     * @param {string} identity\n     * @returns {boolean}\n     */\n    ParticipantSignaling.prototype.connect = function (sid, identity) {\n        if (this.state === 'connecting' || this.state === 'reconnecting') {\n            if (!this._sid) {\n                this._sid = sid;\n            }\n            if (!this._identity) {\n                this._identity = identity;\n            }\n            this.preempt('connected');\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Transition to \"reconnecting\" state.\n     * @returns {boolean}\n     */\n    ParticipantSignaling.prototype.reconnecting = function () {\n        if (this.state === 'connecting' || this.state === 'connected') {\n            this.preempt('reconnecting');\n            return true;\n        }\n        return false;\n    };\n    return ParticipantSignaling;\n}(StateMachine));\n/**\n * @event ParticipantSignaling#event:networkQualityLevelChanged\n */\n/**\n * {@link TrackSignaling} was added to the {@link ParticipantSignaling}.\n * @event ParticipantSignaling#trackAdded\n * @param {TrackSignaling} track\n */\n/**\n * {@link TrackSignaling} was removed from the {@link ParticipantSignaling}.\n * @event ParticipantSignaling#trackRemoved\n * @param {TrackSignaling} track\n */\nmodule.exports = ParticipantSignaling;\n\n},{\"../statemachine\":103,\"../stats/networkqualitystats\":118}],76:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * Represents recording state\n * @extends EventEmitter\n * @property {?boolean} isEnabled\n */\nvar RecordingSignaling = /** @class */ (function (_super) {\n    __extends(RecordingSignaling, _super);\n    /**\n     * Construct a {@link RecordingSignaling}.\n     */\n    function RecordingSignaling() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _isEnabled: {\n                value: null,\n                writable: true\n            },\n            isEnabled: {\n                enumerable: true,\n                get: function () {\n                    return this._isEnabled;\n                }\n            }\n        });\n        return _this;\n    }\n    /**\n     * Disable the {@link RecordingSignaling} if it is not already disabled.\n     * @return {this}\n     */\n    RecordingSignaling.prototype.disable = function () {\n        return this.enable(false);\n    };\n    /**\n     * Enable (or disable) the {@link RecordingSignaling} if it is not already enabled\n     * (or disabled).\n     * @param {boolean} [enabled=true]\n     * @return {this}\n     */\n    RecordingSignaling.prototype.enable = function (enabled) {\n        enabled = typeof enabled === 'boolean' ? enabled : true;\n        if (this.isEnabled !== enabled) {\n            this._isEnabled = enabled;\n            this.emit('updated');\n        }\n        return this;\n    };\n    return RecordingSignaling;\n}(EventEmitter));\n/**\n * Emitted whenever the {@link RecordingSignaling} is updated\n * @event RecordingSignaling#updated\n */\nmodule.exports = RecordingSignaling;\n\n},{\"events\":188}],77:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ParticipantSignaling = require('./participant');\n/**\n * A {@link Participant} implementation\n * @extends ParticipantSignaling\n * @property {string} identity\n * @property {Participant.SID} sid\n */\nvar RemoteParticipantSignaling = /** @class */ (function (_super) {\n    __extends(RemoteParticipantSignaling, _super);\n    /**\n     * Construct a {@link RemoteParticipantSignaling}.\n     * @param {Participant.SID} sid\n     * @param {string} identity\n     */\n    function RemoteParticipantSignaling(sid, identity) {\n        var _this = _super.call(this) || this;\n        _this.connect(sid, identity);\n        return _this;\n    }\n    return RemoteParticipantSignaling;\n}(ParticipantSignaling));\nmodule.exports = RemoteParticipantSignaling;\n\n},{\"./participant\":75}],78:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackSignaling = require('./track');\n/**\n * A {@link RemoteTrackPublication} implementation\n * @extends TrackSignaling\n */\nvar RemoteTrackPublicationSignaling = /** @class */ (function (_super) {\n    __extends(RemoteTrackPublicationSignaling, _super);\n    /**\n     * Construct a {@link RemoteTrackPublicationSignaling}.\n     * @param {Track.SID} sid\n     * @param {string} name\n     * @param {Track.Kind} kind\n     * @param {boolean} isEnabled\n     * @param {Track.Priority} priority\n     * @param {boolean} isSwitchedOff\n     */\n    function RemoteTrackPublicationSignaling(sid, name, kind, isEnabled, priority, isSwitchedOff) {\n        var _this = _super.call(this, name, kind, isEnabled, priority) || this;\n        Object.defineProperties(_this, {\n            _isSwitchedOff: {\n                value: isSwitchedOff,\n                writable: true\n            },\n        });\n        _this.setSid(sid);\n        return _this;\n    }\n    Object.defineProperty(RemoteTrackPublicationSignaling.prototype, \"isSubscribed\", {\n        /**\n         * Whether the {@link RemoteTrackPublicationSignaling} is subscribed to.\n         * @property {boolean}\n         */\n        get: function () {\n            return !!this.trackTransceiver;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RemoteTrackPublicationSignaling.prototype, \"isSwitchedOff\", {\n        /**\n         * Whether the {@link RemoteTrackPublicationSignaling} is switched off.\n         * @property {boolean}\n         */\n        get: function () {\n            return this._isSwitchedOff;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @param {Error} error\n     * @returns {this}\n     */\n    RemoteTrackPublicationSignaling.prototype.subscribeFailed = function (error) {\n        if (!this.error) {\n            this._error = error;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Update the publish {@link Track.Priority}.\n     * @param {Track.Priority} priority\n     * @returns {this}\n     */\n    RemoteTrackPublicationSignaling.prototype.setPriority = function (priority) {\n        if (this._priority !== priority) {\n            this._priority = priority;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Updates track switch on/off state.\n     * @param {boolean} isSwitchedOff\n     * @returns {this}\n     */\n    RemoteTrackPublicationSignaling.prototype.setSwitchedOff = function (isSwitchedOff) {\n        if (this._isSwitchedOff !== isSwitchedOff) {\n            this._isSwitchedOff = isSwitchedOff;\n            this.emit('updated');\n        }\n        return this;\n    };\n    return RemoteTrackPublicationSignaling;\n}(TrackSignaling));\nmodule.exports = RemoteTrackPublicationSignaling;\n\n},{\"./track\":80}],79:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar DefaultRecordingSignaling = require('./recording');\nvar StateMachine = require('../statemachine');\nvar DefaultTimeout = require('../util/timeout');\nvar buildLogLevels = require('../util').buildLogLevels;\nvar DEFAULT_LOG_LEVEL = require('../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../util/log');\nvar _a = require('../util/twilio-video-errors'), MediaConnectionError = _a.MediaConnectionError, MediaDTLSTransportFailedError = _a.MediaDTLSTransportFailedError, SignalingConnectionDisconnectedError = _a.SignalingConnectionDisconnectedError;\nvar nInstances = 0;\n/*\nRoomSignaling States\n-----------------------\n\n    +-----------+     +--------------+\n    |           |     |              |\n    | connected |---->| disconnected |\n    |           |     |              |\n    +-----------+     +--------------+\n          |  ^               ^\n          |  |               |\n          |  |   +--------------+\n          |  +---|              |\n          |      | reconnecting |\n          +----->|              |\n                 +--------------+\n\n*/\nvar states = {\n    connected: [\n        'reconnecting',\n        'disconnected'\n    ],\n    reconnecting: [\n        'connected',\n        'disconnected'\n    ],\n    disconnected: []\n};\n/**\n * A {@link Room} implementation\n * @extends StateMachine\n * @property {RTCPeerConnectionState} connectionState\n * @property {?Participant.SID} dominantSpeakerSid\n * @property {ParticipantSignaling} localParticipant\n * @property {RTCIceConnectionState} iceConnectionState\n * @property {string} name\n * @property {Map<string, RemoteParticipantSignaling>} participants\n * @property {RecordingSignaling} recording\n * @property {Room.SID} sid\n * @property {string} state - \"connected\", \"reconnecting\", or \"disconnected\"\n * @property {string} signalingConnectionState - \"connected\",\n *   \"reconnecting\", or \"disconnected\"\n * @emits RoomSignaling#connectionStateChanged\n * @emits RoomSignaling#dominantSpeakerChanged\n * @emits RoomSignaling#iceConnectionStateChanged\n * @emits RoomSignaling#signalingConnectionStateChanged\n */\nvar RoomSignaling = /** @class */ (function (_super) {\n    __extends(RoomSignaling, _super);\n    /**\n     * Construct a {@link RoomSignaling}.\n     * @param {ParticipantSignaling} localParticipant\n     * @param {Room.SID} sid\n     * @param {string} name\n     * @param {object} options\n     */\n    function RoomSignaling(localParticipant, sid, name, options) {\n        var _this = this;\n        options = Object.assign({\n            logLevel: DEFAULT_LOG_LEVEL,\n            RecordingSignaling: DefaultRecordingSignaling,\n            Timeout: DefaultTimeout\n        }, options);\n        var logLevels = buildLogLevels(options.logLevel);\n        _this = _super.call(this, 'connected', states) || this;\n        var RecordingSignaling = options.RecordingSignaling;\n        var sessionTimeout = new options.Timeout(function () {\n            _this._disconnect(_this._reconnectingError);\n        }, options.sessionTimeout, false);\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: nInstances++\n            },\n            _log: {\n                value: options.log\n                    ? options.log.createLog('default', _this)\n                    : new Log('default', _this, logLevels, options.loggerName)\n            },\n            _mediaConnectionIsReconnecting: {\n                writable: true,\n                value: false\n            },\n            _options: {\n                value: options\n            },\n            _reconnectingError: {\n                value: null,\n                writable: true\n            },\n            _sessionTimeout: {\n                value: sessionTimeout\n            },\n            dominantSpeakerSid: {\n                enumerable: true,\n                value: null,\n                writable: true\n            },\n            localParticipant: {\n                enumerable: true,\n                value: localParticipant\n            },\n            name: {\n                enumerable: true,\n                value: name\n            },\n            participants: {\n                enumerable: true,\n                value: new Map()\n            },\n            recording: {\n                enumerable: true,\n                value: new RecordingSignaling()\n            },\n            sid: {\n                enumerable: true,\n                value: sid\n            }\n        });\n        _this.on('connectionStateChanged', function () {\n            if (_this.connectionState === 'failed'\n                && !['disconnected', 'failed'].includes(_this.iceConnectionState)) {\n                _this._disconnect(new MediaDTLSTransportFailedError());\n            }\n        });\n        _this.on('iceConnectionStateChanged', function () { return maybeUpdateState(_this); });\n        _this.on('signalingConnectionStateChanged', function () { return maybeUpdateState(_this); });\n        // NOTE(mmalavalli): In case \"iceConnectionState\" is already failed, update\n        // the RoomSignaling state. setTimeout() ensures that the state is updated\n        // after RoomV2's constructor is fully executed, thereby making \"signalingConnectionState\"\n        // available here.\n        setTimeout(function () { return maybeUpdateState(_this); });\n        return _this;\n    }\n    /**\n     * Disconnect, possibly with an Error.\n     * @private\n     * @param {Error} [error]\n     * @returns {boolean}\n     */\n    RoomSignaling.prototype._disconnect = function (error) {\n        if (this.state !== 'disconnected') {\n            this.preempt('disconnected', null, [error]);\n            return true;\n        }\n        return false;\n    };\n    RoomSignaling.prototype.toString = function () {\n        return \"[RoomSignaling #\".concat(this._instanceId, \": \").concat(this.localParticipant ? this.localParticipant.sid : 'null', \"]\");\n    };\n    /**\n     * Connect {@link RemoteParticipantSignaling} to the {@link RoomSignaling}.\n     * @param {RemoteParticipantSignaling} participant\n     * @returns {boolean}\n     */\n    RoomSignaling.prototype.connectParticipant = function (participant) {\n        var self = this;\n        if (participant.state === 'disconnected') {\n            return false;\n        }\n        if (this.participants.has(participant.sid)) {\n            return false;\n        }\n        this.participants.set(participant.sid, participant);\n        participant.on('stateChanged', function stateChanged(state) {\n            if (state === 'disconnected') {\n                participant.removeListener('stateChanged', stateChanged);\n                self.participants.delete(participant.sid);\n                self.emit('participantDisconnected', participant);\n            }\n        });\n        this.emit('participantConnected', participant);\n        return true;\n    };\n    /**\n     * Disconnect.\n     * @returns {boolean}\n     */\n    RoomSignaling.prototype.disconnect = function () {\n        return this._disconnect();\n    };\n    /**\n     * Set (or unset) the Dominant Speaker.\n     * @param {?Participant.SID} dominantSpeakerSid\n     * @returns {void}\n     */\n    RoomSignaling.prototype.setDominantSpeaker = function (dominantSpeakerSid) {\n        this.dominantSpeakerSid = dominantSpeakerSid;\n        this.emit('dominantSpeakerChanged');\n    };\n    return RoomSignaling;\n}(StateMachine));\n/**\n * @event RoomSignaling#event:connectionStateChanged\n */\n/**\n * @event RoomSignaling#event:dominantSpeakerChanged\n */\n/**\n * {@link RemoteParticipantSignaling} connected to the {@link RoomSignaling}.\n * @event RoomSignaling#event:participantConnected\n * @param {RemoteParticipantSignaling} participantSignaling\n */\n/**\n * {@link RemoteParticipantSignaling} disconnected from the {@link RoomSignaling}.\n * @event RoomSignaling#event:participantDisconnected\n * @param {RemoteParticipantSignaling} participantSignaling\n */\n/**\n * @event RoomSignaling#event:iceConnectionStateChanged\n */\n/**\n * @event RoomSignaling#event:signalingConnectionStateChanged\n */\n/**\n * Maybe update the {@link RoomSignaling} state.\n * @param {RoomSignaling} roomSignaling\n */\nfunction maybeUpdateState(roomSignaling) {\n    if (roomSignaling.state === 'disconnected' || roomSignaling.signalingConnectionState === 'disconnected') {\n        roomSignaling._sessionTimeout.clear();\n        return;\n    }\n    var newState;\n    if (roomSignaling.signalingConnectionState === 'reconnecting') {\n        newState = roomSignaling.signalingConnectionState;\n    }\n    else if (roomSignaling.iceConnectionState === 'failed') {\n        roomSignaling._mediaConnectionIsReconnecting = true;\n        newState = 'reconnecting';\n    }\n    else if (roomSignaling.iceConnectionState === 'new' || roomSignaling.iceConnectionState === 'checking') {\n        newState = roomSignaling._mediaConnectionIsReconnecting ? 'reconnecting' : 'connected';\n    }\n    else {\n        roomSignaling._mediaConnectionIsReconnecting = false;\n        roomSignaling._reconnectingError = null;\n        roomSignaling._sessionTimeout.clear();\n        newState = 'connected';\n    }\n    if (newState === roomSignaling.state) {\n        return;\n    }\n    if (newState === 'reconnecting') {\n        roomSignaling._reconnectingError = roomSignaling.signalingConnectionState === 'reconnecting'\n            ? new SignalingConnectionDisconnectedError()\n            : new MediaConnectionError();\n        roomSignaling._sessionTimeout.start();\n        roomSignaling.preempt(newState, null, [roomSignaling._reconnectingError]);\n    }\n    else {\n        roomSignaling.preempt(newState);\n    }\n}\nmodule.exports = RoomSignaling;\n\n},{\"../statemachine\":103,\"../util\":147,\"../util/constants\":140,\"../util/log\":151,\"../util/timeout\":161,\"../util/twilio-video-errors\":162,\"./recording\":76}],80:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * A {@link Track} implementation\n * @extends EventEmitter\n * @property {Track.Kind} kind\n * @property {string} name\n */\nvar TrackSignaling = /** @class */ (function (_super) {\n    __extends(TrackSignaling, _super);\n    /**\n     * Construct a {@link TrackSignaling}.\n     * @param {string} name\n     * @param {Track.Kind} kind\n     * @param {boolean} isEnabled\n     * @param {Track.Priority} priority\n     */\n    function TrackSignaling(name, kind, isEnabled, priority) {\n        var _this = _super.call(this) || this;\n        var sid = null;\n        Object.defineProperties(_this, {\n            _error: {\n                value: null,\n                writable: true\n            },\n            _isEnabled: {\n                value: isEnabled,\n                writable: true\n            },\n            _priority: {\n                value: priority,\n                writable: true\n            },\n            _trackTransceiver: {\n                value: null,\n                writable: true\n            },\n            _sid: {\n                get: function () {\n                    return sid;\n                },\n                set: function (_sid) {\n                    if (sid === null) {\n                        sid = _sid;\n                    }\n                }\n            },\n            kind: {\n                enumerable: true,\n                value: kind\n            },\n            name: {\n                enumerable: true,\n                value: name\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(TrackSignaling.prototype, \"error\", {\n        /**\n         * Non-null if publication or subscription failed.\n         * @property {?Error} error\n         */\n        get: function () {\n            return this._error;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"isEnabled\", {\n        /**\n         * Whether the {@link TrackSignaling} is enabled.\n         * @property {boolean}\n         */\n        get: function () {\n            return this._isEnabled;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"priority\", {\n        /**\n         * The {@link TrackSignaling}'s priority.\n         * @property {Track.Priority}\n         */\n        get: function () {\n            return this._priority;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"sid\", {\n        /**\n         * The {@link TrackSignaling}'s {@link Track.SID}.\n         * @property {Track.SID}\n         */\n        get: function () {\n            return this._sid;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(TrackSignaling.prototype, \"trackTransceiver\", {\n        /**\n         * The {@link TrackSignaling}'s {@link TrackTransceiver}.\n         * @property {TrackTransceiver}\n         */\n        get: function () {\n            return this._trackTransceiver;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Disable the {@link TrackSignaling} if it is not already disabled.\n     * @return {this}\n     */\n    TrackSignaling.prototype.disable = function () {\n        return this.enable(false);\n    };\n    /**\n     * Enable (or disable) the {@link TrackSignaling} if it is not already enabled\n     * (or disabled).\n     * @param {boolean} [enabled=true]\n     * @return {this}\n     */\n    TrackSignaling.prototype.enable = function (enabled) {\n        enabled = typeof enabled === 'boolean' ? enabled : true;\n        if (this.isEnabled !== enabled) {\n            this._isEnabled = enabled;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Set the {@link TrackTransceiver} on the {@link TrackSignaling}.\n     * @param {TrackTransceiver} trackTransceiver\n     * @returns {this}\n     */\n    TrackSignaling.prototype.setTrackTransceiver = function (trackTransceiver) {\n        trackTransceiver = trackTransceiver || null;\n        if (this.trackTransceiver !== trackTransceiver) {\n            this._trackTransceiver = trackTransceiver;\n            this.emit('updated');\n        }\n        return this;\n    };\n    /**\n     * Set the SID on the {@link TrackSignaling} once.\n     * @param {string} sid\n     * @returns {this}\n     */\n    TrackSignaling.prototype.setSid = function (sid) {\n        if (this.sid === null) {\n            this._sid = sid;\n            this.emit('updated');\n        }\n        return this;\n    };\n    return TrackSignaling;\n}(EventEmitter));\n/**\n * Emitted whenever the {@link TrackSignaling} is updated\n * @event TrackSignaling#updated\n */\nmodule.exports = TrackSignaling;\n\n},{\"events\":188}],81:[function(require,module,exports){\n'use strict';\nvar CancelablePromise = require('../../util/cancelablepromise');\nvar DefaultPeerConnectionManager = require('./peerconnectionmanager');\nvar DefaultRoomV2 = require('./room');\nvar DefaultTransport = require('./twilioconnectiontransport');\nvar _a = require('../../util/twilio-video-errors'), SignalingConnectionDisconnectedError = _a.SignalingConnectionDisconnectedError, SignalingIncomingMessageInvalidError = _a.SignalingIncomingMessageInvalidError;\nvar _b = require('../../util'), flatMap = _b.flatMap, createRoomConnectingEventPayload = _b.createRoomConnectingEventPayload;\nfunction createCancelableRoomSignalingPromise(token, wsServer, localParticipant, encodingParameters, preferredCodecs, options) {\n    options = Object.assign({\n        PeerConnectionManager: DefaultPeerConnectionManager,\n        RoomV2: DefaultRoomV2,\n        Transport: DefaultTransport\n    }, options);\n    var adaptiveSimulcast = preferredCodecs.video[0] && preferredCodecs.video[0].adaptiveSimulcast === true;\n    var PeerConnectionManager = options.PeerConnectionManager, RoomV2 = options.RoomV2, Transport = options.Transport, iceServers = options.iceServers, log = options.log;\n    var peerConnectionManager = new PeerConnectionManager(encodingParameters, preferredCodecs, options);\n    var trackSenders = flatMap(localParticipant.tracks, function (trackV2) { return [trackV2.trackTransceiver]; });\n    peerConnectionManager.setTrackSenders(trackSenders);\n    var cancellationError = new Error('Canceled');\n    var transport;\n    var cancelablePromise = new CancelablePromise(function (resolve, reject, isCanceled) {\n        var onIced = function (iceServers) {\n            if (isCanceled()) {\n                reject(cancellationError);\n                return Promise.reject(cancellationError);\n            }\n            log.debug('Got ICE servers:', iceServers);\n            options.iceServers = iceServers;\n            peerConnectionManager.setConfiguration(options);\n            return peerConnectionManager.createAndOffer().then(function () {\n                if (isCanceled()) {\n                    reject(cancellationError);\n                    throw cancellationError;\n                }\n                log.debug('createAndOffer() succeeded.');\n                // NOTE(mmalavalli): PeerConnectionManager#createAndOffer() queues the\n                // initial offer in the event queue for the 'description' event. So,\n                // we are dequeueing to prevent the spurious 'update' message sent by\n                // the client after connecting to a room.\n                peerConnectionManager.dequeue('description');\n            }).catch(function (error) {\n                log.error('createAndOffer() failed:', error);\n                reject(error);\n                throw error;\n            });\n        };\n        var automaticSubscription = options.automaticSubscription, bandwidthProfile = options.bandwidthProfile, dominantSpeaker = options.dominantSpeaker, receiveTranscriptions = options.receiveTranscriptions, environment = options.environment, eventObserver = options.eventObserver, loggerName = options.loggerName, logLevel = options.logLevel, name = options.name, networkMonitor = options.networkMonitor, networkQuality = options.networkQuality, notifyWarnings = options.notifyWarnings, realm = options.realm, sdpSemantics = options.sdpSemantics;\n        // decide which msp channels to request\n        // dominantSpeaker, networkQuality\n        var trackPriority = !!bandwidthProfile;\n        var trackSwitchOff = !!bandwidthProfile;\n        var renderHints = !!bandwidthProfile &&\n            (options.clientTrackSwitchOffControl !== 'disabled' || options.contentPreferencesMode !== 'disabled');\n        var transportOptions = Object.assign({\n            adaptiveSimulcast: adaptiveSimulcast,\n            automaticSubscription: automaticSubscription,\n            dominantSpeaker: dominantSpeaker,\n            receiveTranscriptions: receiveTranscriptions,\n            environment: environment,\n            eventObserver: eventObserver,\n            loggerName: loggerName,\n            logLevel: logLevel,\n            networkMonitor: networkMonitor,\n            networkQuality: networkQuality,\n            notifyWarnings: notifyWarnings,\n            iceServers: iceServers,\n            onIced: onIced,\n            realm: realm,\n            renderHints: renderHints,\n            sdpSemantics: sdpSemantics,\n            trackPriority: trackPriority,\n            trackSwitchOff: trackSwitchOff\n        }, bandwidthProfile ? {\n            bandwidthProfile: bandwidthProfile\n        } : {});\n        transport = new Transport(name, token, localParticipant, peerConnectionManager, wsServer, transportOptions);\n        var connectingEventPayload = createRoomConnectingEventPayload(options);\n        eventObserver.emit('event', connectingEventPayload);\n        transport.once('connected', function (initialState) {\n            log.debug('Transport connected:', initialState);\n            if (isCanceled()) {\n                reject(cancellationError);\n                return;\n            }\n            var localParticipantState = initialState.participant;\n            if (!localParticipantState) {\n                reject(new SignalingIncomingMessageInvalidError());\n                return;\n            }\n            resolve(new RoomV2(localParticipant, initialState, transport, peerConnectionManager, options));\n        });\n        transport.once('stateChanged', function (state, error) {\n            if (state === 'disconnected') {\n                transport = null;\n                reject(error || new SignalingConnectionDisconnectedError());\n            }\n            else {\n                log.debug('Transport state changed:', state);\n            }\n        });\n    }, function () {\n        if (transport) {\n            transport.disconnect();\n            transport = null;\n        }\n    });\n    cancelablePromise.catch(function () {\n        if (transport) {\n            transport.disconnect();\n            transport = null;\n        }\n        peerConnectionManager.close();\n    });\n    return cancelablePromise;\n}\nmodule.exports = createCancelableRoomSignalingPromise;\n\n},{\"../../util\":147,\"../../util/cancelablepromise\":139,\"../../util/twilio-video-errors\":162,\"./peerconnectionmanager\":92,\"./room\":98,\"./twilioconnectiontransport\":102}],82:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @property {?Track.SID} loudestParticipantSid\n * @emits DominantSpeakerSignaling#updated\n */\nvar DominantSpeakerSignaling = /** @class */ (function (_super) {\n    __extends(DominantSpeakerSignaling, _super);\n    /**\n     * Construct an {@link DominantSpeakerSignaling}.\n     */\n    function DominantSpeakerSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'active_speaker', options) || this;\n        Object.defineProperties(_this, {\n            _loudestParticipantSid: {\n                value: null,\n                writable: true\n            },\n        });\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                switch (message.type) {\n                    case 'active_speaker':\n                        _this._setLoudestParticipantSid(message.participant);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    Object.defineProperty(DominantSpeakerSignaling.prototype, \"loudestParticipantSid\", {\n        /**\n         * Get the loudest {@link Track.SID}, if known.\n         * @returns {?Track.SID}\n         */\n        get: function () {\n            return this._loudestParticipantSid;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @private\n     * @param {Track.SID} loudestParticipantSid\n     * @returns {void}\n     */\n    DominantSpeakerSignaling.prototype._setLoudestParticipantSid = function (loudestParticipantSid) {\n        if (this.loudestParticipantSid === loudestParticipantSid) {\n            return;\n        }\n        this._loudestParticipantSid = loudestParticipantSid;\n        this.emit('updated');\n    };\n    return DominantSpeakerSignaling;\n}(MediaSignaling));\n/**\n * @event DominantSpeakerSignaling#updated\n */\nmodule.exports = DominantSpeakerSignaling;\n\n},{\"./mediasignaling\":88}],83:[function(require,module,exports){\n'use strict';\nvar Filter = require('../../util/filter');\n/**\n * An {@link IceBox} stores trickled ICE candidates. Candidates added to the\n * {@link IceBox} via {@link IceBox#update} are compared against previously\n * trickled candidates and only new candidates will be returned (assuming they\n * match the current ICE username fragment set by {@link IceBox#setUfrag}).\n * @property {?string} ufrag\n */\nvar IceBox = /** @class */ (function () {\n    /**\n     * Construct an {@link IceBox}.\n     */\n    function IceBox() {\n        Object.defineProperties(this, {\n            _filter: {\n                value: new Filter({\n                    getKey: function getKey(iceState) {\n                        return iceState.ufrag;\n                    },\n                    isLessThanOrEqualTo: function isLessThanOrEqualTo(a, b) {\n                        return a.revision <= b.revision;\n                    }\n                })\n            },\n            _ufrag: {\n                writable: true,\n                value: null\n            },\n            ufrag: {\n                enumerable: true,\n                get: function () {\n                    return this._ufrag;\n                }\n            }\n        });\n    }\n    /**\n     * Set the ICE username fragment on the {@link IceBox}. This method returns any\n     * ICE candidates associated with the username fragment.\n     * @param {string} ufrag\n     * @returns {Array<RTCIceCandidateInit>}\n     */\n    IceBox.prototype.setUfrag = function (ufrag) {\n        this._ufrag = ufrag;\n        var ice = this._filter.toMap().get(ufrag);\n        return ice ? ice.candidates : [];\n    };\n    /**\n     * Update the {@link IceBox}. This method returns any new ICE candidates\n     * associated with the current username fragment.\n     * @param {object} iceState\n     * @returns {Array<RTCIceCandidateInit>}\n     */\n    IceBox.prototype.update = function (iceState) {\n        // NOTE(mroberts): The Server sometimes does not set the candidates property.\n        iceState.candidates = iceState.candidates || [];\n        var oldIceState = this._filter.toMap().get(iceState.ufrag);\n        var oldCandidates = oldIceState ? oldIceState.candidates : [];\n        return this._filter.update(iceState) && this._ufrag === iceState.ufrag\n            ? iceState.candidates.slice(oldCandidates.length)\n            : [];\n    };\n    return IceBox;\n}());\nmodule.exports = IceBox;\n\n},{\"../../util/filter\":146}],84:[function(require,module,exports){\n'use strict';\nvar _a = require('../../util/constants'), ICE_ACTIVITY_CHECK_PERIOD_MS = _a.ICE_ACTIVITY_CHECK_PERIOD_MS, ICE_INACTIVITY_THRESHOLD_MS = _a.ICE_INACTIVITY_THRESHOLD_MS;\n/**\n * Monitors a {@link RTCPeerConnection}'s stats and notifies\n * caller when inactivity is detected.\n */\nvar IceConnectionMonitor = /** @class */ (function () {\n    /**\n     * Construct an {@link IceConnectionMonitor}.\n     * @param {RTCPeerConnection} peerConnection\n     * @param {object} [options]\n     */\n    function IceConnectionMonitor(peerConnection, options) {\n        options = Object.assign({\n            activityCheckPeriodMs: ICE_ACTIVITY_CHECK_PERIOD_MS,\n            inactivityThresholdMs: ICE_INACTIVITY_THRESHOLD_MS,\n        }, options);\n        Object.defineProperties(this, {\n            _activityCheckPeriodMs: {\n                value: options.activityCheckPeriodMs\n            },\n            _inactivityThresholdMs: {\n                value: options.inactivityThresholdMs\n            },\n            _lastActivity: {\n                value: null,\n                writable: true\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _timer: {\n                value: null,\n                writable: true,\n            },\n            _onIceConnectionStateChanged: {\n                value: null,\n                writable: true\n            }\n        });\n    }\n    IceConnectionMonitor.prototype._getActivePairStat = function (stats) {\n        var statsArray = Array.from(stats.values());\n        var activePairStats = statsArray.find(function (stat) { return stat.type === 'candidate-pair' && stat.nominated; });\n        // NOTE(mpatwardhan): sometimes (JSDK-2667) after getting disconnected while switching network\n        // we may not find active pair. Treat this as 0 bytesReceived so that we count it towards inactivity.\n        return activePairStats || {\n            bytesReceived: 0,\n            timestamp: Math.round((new Date()).getTime())\n        };\n    };\n    /**\n     * Get ICE connection stats, and extract received and send bytes.\n     * @returns Promise<?RTCIceCandidatePairStats>\n     */\n    IceConnectionMonitor.prototype._getIceConnectionStats = function () {\n        var _this = this;\n        return this._peerConnection.getStats().then(function (stats) { return _this._getActivePairStat(stats); }).catch(function () {\n            return null;\n        });\n    };\n    /**\n     * schedules/un-schedules inactivity callback.\n     */\n    IceConnectionMonitor.prototype._scheduleInactivityCallback = function (callback) {\n        var _this = this;\n        if (callback && this._onIceConnectionStateChanged === null) {\n            // schedule callback\n            this._onIceConnectionStateChanged = function () {\n                if (_this._peerConnection.iceConnectionState === 'disconnected') {\n                    callback();\n                }\n            };\n            if (this._peerConnection.addEventListener) {\n                this._peerConnection.addEventListener('iceconnectionstatechange', this._onIceConnectionStateChanged);\n            }\n            else {\n                this._peerConnection.oniceconnectionstatechange = this._onIceConnectionStateChanged;\n            }\n        }\n        else if (!callback && this._onIceConnectionStateChanged) {\n            // unschedule callback\n            if (this._peerConnection.removeEventListener) {\n                this._peerConnection.removeEventListener('iceconnectionstatechange', this._onIceConnectionStateChanged);\n            }\n            else {\n                this._peerConnection.oniceconnectionstatechange = null;\n            }\n            this._onIceConnectionStateChanged = null;\n        }\n    };\n    /**\n     * Start monitoring the ICE connection.\n     * Monitors bytes received on active ice connection pair,\n     * invokes onIceConnectionInactive when inactivity is detected.\n     * @param {function} onIceConnectionInactive\n     */\n    IceConnectionMonitor.prototype.start = function (onIceConnectionInactive) {\n        var _this = this;\n        this.stop();\n        this._timer = setInterval(function () {\n            _this._getIceConnectionStats().then(function (iceStats) {\n                if (!iceStats) {\n                    return;\n                }\n                // NOTE(mpatwardhan): We look at bytesReceived on active candidate pair as an indication of active ice connection.\n                // As per spec (https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-bytesreceived) this value\n                // includes RTCP traffic and is +ve even when there are no tracks subscribed to.\n                if (!_this._lastActivity || _this._lastActivity.bytesReceived !== iceStats.bytesReceived) {\n                    _this._lastActivity = iceStats;\n                    // detected activity, cancel scheduled callback if any.\n                    _this._scheduleInactivityCallback(null);\n                }\n                if (iceStats.timestamp - _this._lastActivity.timestamp >= _this._inactivityThresholdMs) {\n                    // detected inactivity.\n                    if (_this._peerConnection.iceConnectionState === 'disconnected') {\n                        onIceConnectionInactive();\n                    }\n                    else if (_this._onIceConnectionStateChanged === null) {\n                        _this._scheduleInactivityCallback(onIceConnectionInactive);\n                    }\n                }\n            });\n        }, this._activityCheckPeriodMs);\n    };\n    /**\n     * Stop monitoring the ICE connection state.\n     * @returns {void}\n     */\n    IceConnectionMonitor.prototype.stop = function () {\n        this._scheduleInactivityCallback(null);\n        if (this._timer !== null) {\n            clearInterval(this._timer);\n            this._timer = null;\n            this._lastActivity = null;\n        }\n    };\n    return IceConnectionMonitor;\n}());\nmodule.exports = IceConnectionMonitor;\n\n},{\"../../util/constants\":140}],85:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar defaultCreateCancelableRoomSignalingPromise = require('./cancelableroomsignalingpromise');\nvar LocalParticipantV2 = require('./localparticipant');\nvar Signaling = require('../');\n/**\n * {@link SignalingV2} implements version 2 of our signaling protocol.\n * @extends Signaling\n */\nvar SignalingV2 = /** @class */ (function (_super) {\n    __extends(SignalingV2, _super);\n    /**\n     * Construct {@link SignalingV2}.\n     * @param {string} wsServer\n     * @param {?object} [options={}]\n     */\n    function SignalingV2(wsServer, options) {\n        var _this = this;\n        /* eslint new-cap:0 */\n        options = Object.assign({\n            createCancelableRoomSignalingPromise: defaultCreateCancelableRoomSignalingPromise\n        }, options);\n        _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _createCancelableRoomSignalingPromise: {\n                value: options.createCancelableRoomSignalingPromise\n            },\n            _options: {\n                value: options\n            },\n            _wsServer: {\n                value: wsServer\n            }\n        });\n        return _this;\n    }\n    /**\n     * @private\n     */\n    SignalingV2.prototype._connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n        options = Object.assign({}, this._options, options);\n        return this._createCancelableRoomSignalingPromise.bind(null, token, this._wsServer, localParticipant, encodingParameters, preferredCodecs, options);\n    };\n    SignalingV2.prototype.createLocalParticipantSignaling = function (encodingParameters, networkQualityConfiguration) {\n        return new LocalParticipantV2(encodingParameters, networkQualityConfiguration);\n    };\n    return SignalingV2;\n}(Signaling));\nmodule.exports = SignalingV2;\n\n},{\"../\":72,\"./cancelableroomsignalingpromise\":81,\"./localparticipant\":86}],86:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalParticipantSignaling = require('../localparticipant');\nvar LocalTrackPublicationV2 = require('./localtrackpublication');\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, isDeepEqual = _a.isDeepEqual;\n/**\n * @extends ParticipantSignaling\n * @property {BandwidthProfileOptions} bandwidthProfile\n * @property {NetworkQualityConfigurationImpl} networkQualityConfiguration\n * @property {number} revision\n * @emits LocalParticipantV2#updated\n */\nvar LocalParticipantV2 = /** @class */ (function (_super) {\n    __extends(LocalParticipantV2, _super);\n    /**\n     * Construct a {@link LocalParticipantV2}.\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {NetworkQualityConfigurationImpl} networkQualityConfiguration\n     * @param {object} [options]\n     */\n    function LocalParticipantV2(encodingParameters, networkQualityConfiguration, options) {\n        var _this = this;\n        options = Object.assign({\n            logLevel: DEFAULT_LOG_LEVEL,\n            LocalTrackPublicationV2: LocalTrackPublicationV2\n        }, options);\n        _this = _super.call(this) || this;\n        var logLevels = buildLogLevels(options.logLevel);\n        Object.defineProperties(_this, {\n            _bandwidthProfile: {\n                value: null,\n                writable: true\n            },\n            _bandwidthProfileRevision: {\n                value: 0,\n                writable: true\n            },\n            _encodingParameters: {\n                value: encodingParameters\n            },\n            _removeListeners: {\n                value: new Map()\n            },\n            _LocalTrackPublicationV2: {\n                value: options.LocalTrackPublicationV2\n            },\n            _log: {\n                value: options.log\n                    ? options.log.createLog('default', _this)\n                    : new Log('default', _this, logLevels, options.loggerName)\n            },\n            _publishedRevision: {\n                writable: true,\n                value: 0\n            },\n            _revision: {\n                writable: true,\n                value: 1\n            },\n            _signalingRegion: {\n                value: null,\n                writable: true\n            },\n            audioProcessors: {\n                value: [],\n                writable: true\n            },\n            bandwidthProfile: {\n                enumerable: true,\n                get: function () {\n                    return this._bandwidthProfile;\n                }\n            },\n            bandwidthProfileRevision: {\n                enumerable: true,\n                get: function () {\n                    return this._bandwidthProfileRevision;\n                }\n            },\n            networkQualityConfiguration: {\n                enumerable: true,\n                value: networkQualityConfiguration\n            },\n            revision: {\n                enumerable: true,\n                get: function () {\n                    return this._revision;\n                }\n            },\n            signalingRegion: {\n                enumerable: true,\n                get: function () {\n                    return this._signalingRegion;\n                }\n            }\n        });\n        return _this;\n    }\n    LocalParticipantV2.prototype.toString = function () {\n        return \"[LocalParticipantSignaling: \".concat(this.sid, \"]\");\n    };\n    /**\n     * Set the signalingRegion.\n     * @param {string} signalingRegion.\n     */\n    LocalParticipantV2.prototype.setSignalingRegion = function (signalingRegion) {\n        if (!this._signalingRegion) {\n            this._signalingRegion = signalingRegion;\n        }\n    };\n    /**\n     * Update the {@link BandwidthProfileOptions}.\n     * @param {BandwidthProfileOptions} bandwidthProfile\n     */\n    LocalParticipantV2.prototype.setBandwidthProfile = function (bandwidthProfile) {\n        if (!isDeepEqual(this._bandwidthProfile, bandwidthProfile)) {\n            // NOTE(mmalavalli): Object.assign() copies the values of only\n            // the top level properties. In order to deep copy the object, we\n            // stringify and parse the object.\n            this._bandwidthProfile = JSON.parse(JSON.stringify(bandwidthProfile));\n            this._bandwidthProfileRevision++;\n            this.didUpdate();\n        }\n    };\n    /**\n     * Sets the AudioProcessors enabled for this room.\n     * @param {string[]} audioProcessors\n     */\n    LocalParticipantV2.prototype.setAudioProcessors = function (audioProcessors) {\n        this.audioProcessors = audioProcessors;\n    };\n    /**\n     * returns current {@link EncodingParametersImpl}.\n     * @returns {EncodingParametersImpl}\n     */\n    LocalParticipantV2.prototype.getParameters = function () {\n        return this._encodingParameters;\n    };\n    /**\n     * Set the {@link EncodingParameters}.\n     * @param {?EncodingParameters} encodingParameters\n     * @returns {this}\n     */\n    LocalParticipantV2.prototype.setParameters = function (encodingParameters) {\n        this._encodingParameters.update(encodingParameters);\n        return this;\n    };\n    /**\n     * Update the {@link LocalParticipantV2} with the new state.\n     * @param {Published} published\n     * @returns {this}\n     */\n    LocalParticipantV2.prototype.update = function (published) {\n        if (this._publishedRevision >= published.revision) {\n            return this;\n        }\n        this._publishedRevision = published.revision;\n        published.tracks.forEach(function (publicationState) {\n            var localTrackPublicationV2 = this.tracks.get(publicationState.id);\n            if (localTrackPublicationV2) {\n                localTrackPublicationV2.update(publicationState);\n            }\n        }, this);\n        return this;\n    };\n    LocalParticipantV2.prototype.updateMediaStates = function (mediaStates) {\n        if (!mediaStates || !mediaStates.tracks) {\n            return this;\n        }\n        Array.from(this.tracks.values()).forEach(function (publication) {\n            var states = mediaStates.tracks[publication.sid];\n            if (states) {\n                publication.updateMediaStates(states);\n            }\n        });\n        return this;\n    };\n    /**\n     * @protected\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @param {?NoiseCancellationVendor} noiseCancellationVendor\n     * @returns {LocalTrackPublicationV2}\n     */\n    LocalParticipantV2.prototype._createLocalTrackPublicationSignaling = function (trackSender, name, priority, noiseCancellationVendor) {\n        return new this._LocalTrackPublicationV2(trackSender, name, priority, noiseCancellationVendor, { log: this._log });\n    };\n    /**\n     * Add a {@link LocalTrackPublicationV2} for the given {@link DataTrackSender}\n     * or {@link MediaTrackSender} to the {@link LocalParticipantV2}.\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @returns {this}\n     */\n    LocalParticipantV2.prototype.addTrack = function (trackSender, name, priority, noiseCancellationVendor) {\n        var _this = this;\n        _super.prototype.addTrack.call(this, trackSender, name, priority, noiseCancellationVendor);\n        var publication = this.getPublication(trackSender);\n        var isEnabled = publication.isEnabled, updatedPriority = publication.updatedPriority;\n        var updated = function () {\n            // NOTE(mmalavalli): The LocalParticipantV2's state is only published if\n            // the \"updated\" event is emitted due to LocalTrackPublicationV2's\n            // .isEnabled or .updatedPriority being changed. We do not publish if it is fired due to the\n            // LocalTrackPublicationV2's .sid being set.\n            if (isEnabled !== publication.isEnabled || updatedPriority !== publication.updatedPriority) {\n                _this.didUpdate();\n                isEnabled = publication.isEnabled;\n                updatedPriority = publication.updatedPriority;\n            }\n        };\n        publication.on('updated', updated);\n        this._removeListener(publication);\n        this._removeListeners.set(publication, function () { return publication.removeListener('updated', updated); });\n        this.didUpdate();\n        return this;\n    };\n    /**\n     * @private\n     * @param {LocalTrackPublicationV2} publication\n     * @returns {void}\n     */\n    LocalParticipantV2.prototype._removeListener = function (publication) {\n        var removeListener = this._removeListeners.get(publication);\n        if (removeListener) {\n            removeListener();\n        }\n    };\n    /**\n     * Get the current state of the {@link LocalParticipantV2}.\n     * @returns {object}\n     */\n    LocalParticipantV2.prototype.getState = function () {\n        return {\n            revision: this.revision,\n            tracks: Array.from(this.tracks.values()).map(function (track) { return track.getState(); })\n        };\n    };\n    /**\n     * Increment the revision for the {@link LocalParticipantV2}.\n     * @private\n     * @returns {void}\n     */\n    LocalParticipantV2.prototype.didUpdate = function () {\n        this._revision++;\n        this.emit('updated');\n    };\n    /**\n     * Remove the {@link LocalTrackPublicationV2} for the given {@link DataTrackSender}\n     * or {@link MediaTrackSender} from the {@link LocalParticipantV2}.\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @returns {?LocalTrackPublicationV2}\n     */\n    LocalParticipantV2.prototype.removeTrack = function (trackSender) {\n        var publication = _super.prototype.removeTrack.call(this, trackSender);\n        if (publication) {\n            trackSender.removeClone(publication.trackTransceiver);\n            this._removeListener(publication);\n            this.didUpdate();\n        }\n        return publication;\n    };\n    /**\n     * Updates the verbosity of network quality information.\n     * @param {NetworkQualityConfiguration} networkQualityConfiguration\n     * @returns {void}\n     */\n    LocalParticipantV2.prototype.setNetworkQualityConfiguration = function (networkQualityConfiguration) {\n        this.networkQualityConfiguration.update(networkQualityConfiguration);\n    };\n    /**\n     * updates encodings for simulcast layers.\n     * @param {Track.SID} trackSid\n     * @param {Array<{enabled: boolean, layer_index: number}>} encodings\n     * @returns {Promise<string>} string indicating result of the operation. can be one of\n     *  \"OK\", \"INVALID_HINT\", \"COULD_NOT_APPLY_HINT\", \"UNKNOWN_TRACK\"\n     */\n    LocalParticipantV2.prototype.setPublisherHint = function (trackSid, encodings) {\n        var trackSignaling = Array.from(this.tracks.values()).find(function (trackPub) { return trackPub.sid === trackSid; });\n        if (!trackSignaling) {\n            this._log.warn(\"track:\".concat(trackSid, \" not found\"));\n            return Promise.resolve('UNKNOWN_TRACK');\n        }\n        return trackSignaling.trackTransceiver.setPublisherHint(encodings);\n    };\n    return LocalParticipantV2;\n}(LocalParticipantSignaling));\n/**\n * @interface Published\n * @property {number} revision\n * @property {Array<PublishedTrack>} tracks\n */\n/**\n * @typedef {CreatedTrack|ReadyTrack|FailedTrack} PublishedTrack\n */\n/**\n * @interface CreatedTrack\n * @property {Track.ID} id\n * @property {string} state - \"created\"\n */\n/**\n * @interface ReadyTrack\n * @property {Track.ID} id\n * @property {Track.SID} sid\n * @property {string} state - \"ready\"\n */\n/**\n * @interface FailedTrack\n * @property {Track.ID} id\n * @property {TrackError} error\n * @property {string} state - \"failed\"\n */\n/**\n * @interface TrackError\n * @property {number} code\n * @property {string} message\n */\n/**\n * @event LocalParticipantV2#updated\n */\nmodule.exports = LocalParticipantV2;\n\n},{\"../../util\":147,\"../../util/constants\":140,\"../../util/log\":151,\"../localparticipant\":73,\"./localtrackpublication\":87}],87:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackPublicationSignaling = require('../localtrackpublication');\nvar TwilioWarning = require('../../util/twiliowarning');\nvar createTwilioError = require('../../util/twilio-video-errors').createTwilioError;\n/**\n * @extends LocalTrackPublicationSignaling\n */\nvar LocalTrackPublicationV2 = /** @class */ (function (_super) {\n    __extends(LocalTrackPublicationV2, _super);\n    /**\n     * Construct a {@link LocalTrackPublicationV2}.\n     * @param {DataTrackSender|MediaTrackSender} trackSender\n     * @param {string} name\n     * @param {Track.Priority} priority\n     * @param {?NoiseCancellationVendor} noiseCancellationVendor\n     * @param {object} [options]\n     */\n    function LocalTrackPublicationV2(trackSender, name, priority, noiseCancellationVendor, options) {\n        var _this = _super.call(this, trackSender, name, priority) || this;\n        Object.defineProperties(_this, {\n            _log: {\n                value: options.log.createLog('default', _this)\n            },\n            _mediaStates: {\n                value: { recordings: null },\n                writable: true\n            },\n            _noiseCancellationVendor: {\n                value: noiseCancellationVendor,\n            }\n        });\n        return _this;\n    }\n    /**\n     * Get the {@link LocalTrackPublicationV2#Representation} of a given {@link TrackSignaling}.\n     * @returns {LocalTrackPublicationV2#Representation} - without the SID\n     */\n    LocalTrackPublicationV2.prototype.getState = function () {\n        var state = {\n            enabled: this.isEnabled,\n            id: this.id,\n            kind: this.kind,\n            name: this.name,\n            priority: this.updatedPriority,\n        };\n        if (this._noiseCancellationVendor) {\n            // eslint-disable-next-line camelcase\n            state.audio_processor = this._noiseCancellationVendor;\n        }\n        return state;\n    };\n    LocalTrackPublicationV2.prototype.toString = function () {\n        return \"[LocalTrackPublicationV2: \".concat(this.sid, \"]\");\n    };\n    /**\n     * Compare the {@link LocalTrackPublicationV2} to a {@link LocalTrackPublicationV2#Representation} of itself\n     * and perform any updates necessary.\n     * @param {PublishedTrack} track\n     * @returns {this}\n     * @fires TrackSignaling#updated\n     */\n    LocalTrackPublicationV2.prototype.update = function (track) {\n        switch (track.state) {\n            case 'ready':\n                this.setSid(track.sid);\n                break;\n            case 'failed': {\n                var error = track.error;\n                this.publishFailed(createTwilioError(error.code, error.message));\n                break;\n            }\n            default: // 'created'\n                break;\n        }\n        return this;\n    };\n    LocalTrackPublicationV2.prototype.updateMediaStates = function (mediaStates) {\n        if (!mediaStates || !mediaStates.recordings ||\n            this._mediaStates.recordings === mediaStates.recordings) {\n            return this;\n        }\n        this._mediaStates.recordings = mediaStates.recordings;\n        switch (this._mediaStates.recordings) {\n            case 'OK':\n                this._log.info('Warnings have cleared.');\n                this.emit('warningsCleared');\n                break;\n            case 'NO_MEDIA':\n                this._log.warn('Recording media lost.');\n                this.emit('warning', TwilioWarning.recordingMediaLost);\n                break;\n            default:\n                this._log.warn(\"Unknown media state detected: \".concat(this._mediaStates.recordings));\n                break;\n        }\n        return this;\n    };\n    return LocalTrackPublicationV2;\n}(LocalTrackPublicationSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link LocalTrackPublicationV2}.\n * @typedef {object} LocalTrackPublicationV2#Representation\n * @property {boolean} enabled\n * @property {Track.ID} id\n * @property {Track.Kind} kind\n * @property {string} name\n * @priority {Track.Priority} priority\n * @property {Track.SID} sid\n */\nmodule.exports = LocalTrackPublicationV2;\n\n},{\"../../util/twilio-video-errors\":162,\"../../util/twiliowarning\":164,\"../localtrackpublication\":74}],88:[function(require,module,exports){\n/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events');\nvar nInstances = 0;\nvar MediaSignaling = /** @class */ (function (_super) {\n    __extends(MediaSignaling, _super);\n    /**\n     * Construct a {@link MediaSignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceive\n     * @param {string} channel\n     */\n    function MediaSignaling(getReceiver, channel, options) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _instanceId: {\n                value: nInstances++\n            },\n            channel: {\n                value: channel,\n            },\n            _log: {\n                value: options.log.createLog('default', _this)\n            },\n            _getReceiver: {\n                value: getReceiver\n            },\n            _receiverPromise: {\n                value: null,\n                writable: true,\n            },\n            _transport: {\n                value: null,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    Object.defineProperty(MediaSignaling.prototype, \"isSetup\", {\n        get: function () {\n            return !!this._receiverPromise;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    MediaSignaling.prototype.toString = function () {\n        return \"[MediaSignaling #\".concat(this._instanceId, \":\").concat(this.channel, \"]\");\n    };\n    MediaSignaling.prototype.setup = function (id) {\n        var _this = this;\n        this._teardown();\n        this._log.info('setting up msp transport for id:', id);\n        var receiverPromise = this._getReceiver(id).then(function (receiver) {\n            if (receiver.kind !== 'data') {\n                _this._log.error('Expected a DataTrackReceiver');\n            }\n            if (_this._receiverPromise !== receiverPromise) {\n                return;\n            }\n            try {\n                _this._transport = receiver.toDataTransport();\n                _this.emit('ready', _this._transport);\n            }\n            catch (ex) {\n                _this._log.error(\"Failed to toDataTransport: \".concat(ex.message));\n            }\n            receiver.once('close', function () { return _this._teardown(); });\n        });\n        this._receiverPromise = receiverPromise;\n    };\n    MediaSignaling.prototype._teardown = function () {\n        if (this._transport) {\n            this._log.info('Tearing down');\n            this._transport = null;\n            this._receiverPromise = null;\n            this.emit('teardown');\n        }\n    };\n    return MediaSignaling;\n}(EventEmitter));\nmodule.exports = MediaSignaling;\n\n},{\"events\":188}],89:[function(require,module,exports){\n/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar EventEmitter = require('events');\nvar PeerConnectionReportFactory = require('../../stats/peerconnectionreportfactory');\n/**\n * @emits NetworkQualityMonitor#updated\n */\nvar NetworkQualityMonitor = /** @class */ (function (_super) {\n    __extends(NetworkQualityMonitor, _super);\n    /**\n     * Construct a {@link NetworkQualityMonitor}.\n     * @param {PeerConnectionManager} manager\n     * @param {NetworkQualitySignaling} signaling\n     */\n    function NetworkQualityMonitor(manager, signaling) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _factories: {\n                value: new WeakMap()\n            },\n            _manager: {\n                value: manager\n            },\n            _signaling: {\n                value: signaling\n            }\n        });\n        signaling.on('updated', function () { return _this.emit('updated'); });\n        return _this;\n    }\n    Object.defineProperty(NetworkQualityMonitor.prototype, \"level\", {\n        /**\n         * Get the current {@link NetworkQualityLevel}, if any.\n         * @returns {?NetworkQualityLevel} level - initially null\n         */\n        get: function () {\n            return this._signaling.level;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualityMonitor.prototype, \"levels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels}, if any.\n         * @returns {?NetworkQualityLevels} levels - initially null\n         */\n        get: function () {\n            return this._signaling.levels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualityMonitor.prototype, \"remoteLevels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels} of remote participants, if any.\n         * @returns {Map<String, NetworkQualityLevels>} remoteLevels\n         */\n        get: function () {\n            return this._signaling.remoteLevels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Start monitoring.\n     * @returns {void}\n     */\n    NetworkQualityMonitor.prototype.start = function () {\n        var _this = this;\n        this.stop();\n        var timeout = setTimeout(function () {\n            if (_this._timeout !== timeout) {\n                return;\n            }\n            next(_this).then(function (reports) {\n                if (_this._timeout !== timeout) {\n                    return;\n                }\n                if (reports.length) {\n                    var _a = __read(reports, 1), report = _a[0];\n                    _this._signaling.put(report);\n                }\n                _this.start();\n            });\n        }, 200);\n        this._timeout = timeout;\n    };\n    /**\n     * Stop monitoring.\n     * @returns {void}\n     */\n    NetworkQualityMonitor.prototype.stop = function () {\n        clearTimeout(this._timeout);\n        this._timeout = null;\n    };\n    return NetworkQualityMonitor;\n}(EventEmitter));\n/**\n * @param {NetworkQualityMonitor}\n * @returns {Promise<NetworkQualityInputs>}\n */\nfunction next(monitor) {\n    var pcv2s = monitor._manager._peerConnections\n        ? Array.from(monitor._manager._peerConnections.values())\n        : [];\n    var pcs = pcv2s\n        .map(function (pcv2) { return pcv2._peerConnection; })\n        .filter(function (pc) { return pc.signalingState !== 'closed'; });\n    var factories = pcs.map(function (pc) {\n        if (monitor._factories.has(pc)) {\n            return monitor._factories.get(pc);\n        }\n        var factory = new PeerConnectionReportFactory(pc);\n        monitor._factories.set(pc, factory);\n        return factory;\n    });\n    var reportsOrNullPromises = factories.map(function (factory) { return factory.next().catch(function () { return null; }); });\n    return Promise.all(reportsOrNullPromises).then(function (reportsOrNull) { return reportsOrNull\n        .filter(function (reportOrNull) { return reportOrNull; })\n        .map(function (report) { return report.summarize(); }); });\n}\n/**\n * The {@link NetworkQualityLevel} changed.\n * @event NetworkQualityMonitor#updated\n */\nmodule.exports = NetworkQualityMonitor;\n\n},{\"../../stats/peerconnectionreportfactory\":121,\"events\":188}],90:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar AsyncVar = require('../../util/asyncvar');\nvar Timeout = require('../../util/timeout');\nvar NETWORK_QUALITY_RESPONSE_TIME_MS = 5000;\n/**\n * @interface MediaSignalingTransport\n * @property {function(object): boolean} send\n * @emits MediaSignalingTransport#message\n */\n/**\n * The {@link MediaSignalingTransport} received a message.\n * @event MediaSignalingTransport#message\n * @param {object} message\n */\n/**\n * @interface LatencyStats\n * @property {number} jitter\n * @property {number} rtt\n * @property {number} level\n */\n/**\n * @interface FractionLostStats\n * @property {number} fractionLost\n * @property {number} level\n */\n/**\n * @interface BandwidthStats\n * @property {number} actual\n * @property {number} available\n * @property {number} level\n */\n/**\n * @interface SendOrRecvStats\n * @property {BandwidthStats} bandwidth\n * @property {FractionLostStats} fractionLost\n * @property {LatencyStats} latency\n */\n/**\n * @interface MediaLevels\n * @property {number} send\n * @property {SendOrRecvStats} sendStats\n * @property {number} recv\n * @property {SendOrRecvStats} recvStats\n */\n/**\n * @interface NetworkQualityLevels\n * @property {number} level\n * @property {MediaLevels} audio\n * @property {MediaLevels} video\n */\n/**\n * @typedef {PeerConnectionSummary} NetworkQualityInputs\n */\n/**\n * @classdesc The {@link NetworkQualitySignaling} class allows submitting\n *   {@link NetworkQualityInputs} for computing {@link NetworkQualityLevel}. It\n *   does so by sending and receiving messages over a\n *   {@link MediaSignalingTransport}. The exact transport used depends on the\n *   topology of the {@link Room} that {@link NetworkQualitySignaling} is being\n *   used within: for P2P Rooms, we re-use the {@link TransportV2}; and for\n *   Group Rooms, we use a {@link DataTransport}.\n * @emits NetworkQualitySignaling#updated\n */\nvar NetworkQualitySignaling = /** @class */ (function (_super) {\n    __extends(NetworkQualitySignaling, _super);\n    /**\n     * Construct a {@link NetworkQualitySignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceiver\n     * @param {NetworkQualityConfigurationImpl} networkQualityConfiguration\n     */\n    function NetworkQualitySignaling(getReceiver, networkQualityConfiguration, options) {\n        var _this = _super.call(this, getReceiver, 'network_quality', options) || this;\n        Object.defineProperties(_this, {\n            _level: {\n                value: null,\n                writable: true\n            },\n            _levels: {\n                value: null,\n                writable: true\n            },\n            _remoteLevels: {\n                value: new Map(),\n                writable: true\n            },\n            _networkQualityInputs: {\n                value: new AsyncVar()\n            },\n            _resendTimer: {\n                value: new Timeout(function () {\n                    // and schedule next timer at x1.5 the delay..\n                    _this._resendTimer.setDelay(_this._resendTimer.delay * 1.5);\n                    _this._sendNetworkQualityInputs();\n                }, NETWORK_QUALITY_RESPONSE_TIME_MS, false),\n            },\n            _networkQualityReportLevels: {\n                get: function () {\n                    return {\n                        reportLevel: networkQualityConfiguration.local,\n                        remoteReportLevel: networkQualityConfiguration.remote\n                    };\n                }\n            }\n        });\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                _this._log.debug('Incoming: ', message);\n                switch (message.type) {\n                    case 'network_quality':\n                        _this._handleNetworkQualityMessage(message);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        _this._sendNetworkQualityInputs();\n        return _this;\n    }\n    Object.defineProperty(NetworkQualitySignaling.prototype, \"level\", {\n        /**\n         * Get the current {@link NetworkQualityLevel}, if any.\n         * @returns {?NetworkQualityLevel} level - initially null\n         */\n        get: function () {\n            return this._level;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualitySignaling.prototype, \"levels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels}, if any.\n         * @returns {?NetworkQualityLevels} levels - initially null\n         */\n        get: function () {\n            return this._levels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(NetworkQualitySignaling.prototype, \"remoteLevels\", {\n        /**\n         * Get the current {@link NetworkQualityLevels} of remote participants, if any.\n         * @returns {Map<String, NetworkQualityLevels>} remoteLevels\n         */\n        get: function () {\n            return this._remoteLevels;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Check to see if the {@link NetworkQualityLevel} is new, and raise an\n     * event if necessary.\n     * @private\n     * @param {object} message\n     * @returns {void}\n     */\n    NetworkQualitySignaling.prototype._handleNetworkQualityMessage = function (message) {\n        var _this = this;\n        var updated = false;\n        var level = null;\n        var local = message ? message.local : null;\n        if (typeof local === 'number') {\n            // NOTE(mroberts): In prod, we plan to only send the level.\n            level = local;\n            this._levels = null;\n        }\n        else if (typeof local === 'object' && local) {\n            // NOTE(mroberts): In dev, we plan to send the decomposed levels. An early\n            // VMS version does not compute `level` for us, so we fallback to taking\n            // the minimum ourselves.\n            this._levels = local;\n            level = typeof local.level === 'number'\n                ? local.level\n                : Math.min(local.audio.send, local.audio.recv, local.video.send, local.video.recv);\n        }\n        if (level !== null && this.level !== level) {\n            this._level = level;\n            updated = true;\n        }\n        this._remoteLevels = message && message.remotes\n            ? message.remotes.reduce(function (levels, obj) {\n                var oldObj = _this._remoteLevels.get(obj.sid) || {};\n                if (oldObj.level !== obj.level) {\n                    updated = true;\n                }\n                return levels.set(obj.sid, obj);\n            }, new Map())\n            : this._remoteLevels;\n        if (updated) {\n            this.emit('updated');\n        }\n        // score is received. so reset the timer to default timeout.\n        this._resendTimer.setDelay(NETWORK_QUALITY_RESPONSE_TIME_MS);\n        // timer is cleared only while we are sending inputs.\n        // if we are already sending inputs do not send them again.\n        if (this._resendTimer.isSet) {\n            setTimeout(function () { return _this._sendNetworkQualityInputs(); }, 1000);\n        }\n    };\n    /**\n     * Start sending {@link NetworkQualityInputs}.\n     * @private\n     * @returns {Promise<void>}\n     */\n    NetworkQualitySignaling.prototype._sendNetworkQualityInputs = function () {\n        var _this = this;\n        this._resendTimer.clear();\n        return this._networkQualityInputs.take().then(function (networkQualityInputs) {\n            if (_this._transport) {\n                _this._transport.publish(createNetworkQualityInputsMessage(networkQualityInputs, _this._networkQualityReportLevels));\n            }\n        }).finally(function () {\n            _this._resendTimer.start();\n        });\n    };\n    /**\n     * Put {@link NetworkQualityInputs} to be used for computing\n     * {@link NetworkQualityLevel}.\n     * @param {NetworkQualityInputs} networkQualityInputs\n     * @returns {void}\n     */\n    NetworkQualitySignaling.prototype.put = function (networkQualityInputs) {\n        this._networkQualityInputs.put(networkQualityInputs);\n    };\n    return NetworkQualitySignaling;\n}(MediaSignaling));\n/**\n * The {@link NetworkQualityLevel} changed.\n * @event NetworkQualitySignaling#updated\n */\n/**\n * @typedef {object} NetworkQualityReportLevels\n * @param {number} reportLevel\n * @param {number} remoteReportLevel\n */\n/**\n * @param {NetworkQualityInputs} networkQualityInputs\n * @param {NetworkQualityReportLevels} networkQualityReportLevels\n * @returns {object} message\n */\nfunction createNetworkQualityInputsMessage(networkQualityInputs, networkQualityReportLevels) {\n    return Object.assign({ type: 'network_quality' }, networkQualityInputs, networkQualityReportLevels);\n}\nmodule.exports = NetworkQualitySignaling;\n\n},{\"../../util/asyncvar\":136,\"../../util/timeout\":161,\"./mediasignaling\":88}],91:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar DefaultBackoff = require('../../util/backoff');\nvar _a = require('../../webrtc'), DefaultRTCIceCandidate = _a.RTCIceCandidate, DefaultRTCPeerConnection = _a.RTCPeerConnection, DefaultRTCSessionDescription = _a.RTCSessionDescription, getStatistics = _a.getStats;\nvar util = require('../../webrtc/util');\nvar _b = require('../../util/constants'), DEFAULT_ICE_GATHERING_TIMEOUT_MS = _b.DEFAULT_ICE_GATHERING_TIMEOUT_MS, DEFAULT_LOG_LEVEL = _b.DEFAULT_LOG_LEVEL, DEFAULT_SESSION_TIMEOUT_SEC = _b.DEFAULT_SESSION_TIMEOUT_SEC, iceRestartBackoffConfig = _b.iceRestartBackoffConfig;\nvar _c = require('../../util/sdp'), addOrRewriteNewTrackIds = _c.addOrRewriteNewTrackIds, addOrRewriteTrackIds = _c.addOrRewriteTrackIds, createCodecMapForMediaSection = _c.createCodecMapForMediaSection, disableRtx = _c.disableRtx, enableDtxForOpus = _c.enableDtxForOpus, filterLocalCodecs = _c.filterLocalCodecs, getMediaSections = _c.getMediaSections, removeSSRCAttributes = _c.removeSSRCAttributes, revertSimulcast = _c.revertSimulcast, setCodecPreferences = _c.setCodecPreferences, setSimulcast = _c.setSimulcast;\nvar DefaultTimeout = require('../../util/timeout');\nvar _d = require('../../util/twilio-video-errors'), MediaClientLocalDescFailedError = _d.MediaClientLocalDescFailedError, MediaClientRemoteDescFailedError = _d.MediaClientRemoteDescFailedError;\nvar _e = require('../../util'), buildLogLevels = _e.buildLogLevels, getPlatform = _e.getPlatform, isChromeScreenShareTrack = _e.isChromeScreenShareTrack, oncePerTick = _e.oncePerTick, defer = _e.defer;\nvar IceBox = require('./icebox');\nvar DefaultIceConnectionMonitor = require('./iceconnectionmonitor.js');\nvar DataTrackReceiver = require('../../data/receiver');\nvar MediaTrackReceiver = require('../../media/track/receiver');\nvar StateMachine = require('../../statemachine');\nvar Log = require('../../util/log');\nvar TrackMatcher = require('../../util/sdp/trackmatcher');\nvar workaroundIssue8329 = require('../../util/sdp/issue8329');\nvar guess = util.guessBrowser();\nvar platform = getPlatform();\nvar isAndroid = /android/.test(platform);\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\nvar nInstances = 0;\n/*\nPeerConnectionV2 States\n-----------------------\n\n    +------+    +--------+\n    |      |    |        |\n    | open |--->| closed |\n    |      |    |        |\n    +------+    +--------+\n      |  ^          ^\n      |  |          |\n      |  |          |\n      v  |          |\n  +----------+      |\n  |          |      |\n  | updating |------+\n  |          |\n  +----------+\n\n*/\nvar states = {\n    open: [\n        'closed',\n        'updating'\n    ],\n    updating: [\n        'closed',\n        'open'\n    ],\n    closed: []\n};\n/**\n * @extends StateMachine\n * @property {id}\n * @emits PeerConnectionV2#connectionStateChanged\n * @emits PeerConnectionV2#iceConnectionStateChanged\n * @emits PeerConnectionV2#candidates\n * @emits PeerConnectionV2#description\n */\nvar PeerConnectionV2 = /** @class */ (function (_super) {\n    __extends(PeerConnectionV2, _super);\n    /**\n     * Construct a {@link PeerConnectionV2}.\n     * @param {string} id\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {PreferredCodecs} preferredCodecs\n     * @param {object} [options]\n     */\n    function PeerConnectionV2(id, encodingParameters, preferredCodecs, options) {\n        var _this = _super.call(this, 'open', states) || this;\n        options = Object.assign({\n            enableDscp: false,\n            dummyAudioMediaStreamTrack: null,\n            isChromeScreenShareTrack: isChromeScreenShareTrack,\n            iceServers: [],\n            logLevel: DEFAULT_LOG_LEVEL,\n            offerOptions: {},\n            revertSimulcast: revertSimulcast,\n            sessionTimeout: DEFAULT_SESSION_TIMEOUT_SEC * 1000,\n            setCodecPreferences: setCodecPreferences,\n            setSimulcast: setSimulcast,\n            Backoff: DefaultBackoff,\n            IceConnectionMonitor: DefaultIceConnectionMonitor,\n            RTCIceCandidate: DefaultRTCIceCandidate,\n            RTCPeerConnection: DefaultRTCPeerConnection,\n            RTCSessionDescription: DefaultRTCSessionDescription,\n            Timeout: DefaultTimeout\n        }, options);\n        // NOTE(lrivas): We intentionally include the options object for backward compatibility.\n        // The ConnectOptions 'iceServers' and 'iceTransportPolicy' are part of the 'RTCConfiguration' interface and should be passed\n        // as 'rtcConfiguration.iceServers' and 'rtcConfiguration.iceTransportPolicy' respectively.\n        var configuration = getConfiguration(Object.assign({}, options, options.rtcConfiguration));\n        var logLevels = buildLogLevels(options.logLevel);\n        var RTCPeerConnection = options.RTCPeerConnection;\n        if (options.enableDscp === true) {\n            options.chromeSpecificConstraints = options.chromeSpecificConstraints || {};\n            options.chromeSpecificConstraints.optional = options.chromeSpecificConstraints.optional || [];\n            options.chromeSpecificConstraints.optional.push({ googDscp: true });\n        }\n        var log = options.log ? options.log.createLog('webrtc', _this) : new Log('webrtc', _this, logLevels, options.loggerName);\n        var peerConnection = new RTCPeerConnection(configuration, options.chromeSpecificConstraints);\n        if (options.dummyAudioMediaStreamTrack) {\n            peerConnection.addTrack(options.dummyAudioMediaStreamTrack);\n        }\n        Object.defineProperties(_this, {\n            _appliedTrackIdsToAttributes: {\n                value: new Map(),\n                writable: true\n            },\n            _dataChannels: {\n                value: new Map()\n            },\n            _dataTrackReceivers: {\n                value: new Set()\n            },\n            _descriptionRevision: {\n                writable: true,\n                value: 0\n            },\n            _didGenerateLocalCandidates: {\n                writable: true,\n                value: false\n            },\n            _enableDscp: {\n                value: options.enableDscp\n            },\n            _encodingParameters: {\n                value: encodingParameters\n            },\n            _isChromeScreenShareTrack: {\n                value: options.isChromeScreenShareTrack,\n            },\n            _iceGatheringFailed: {\n                value: false,\n                writable: true\n            },\n            _iceGatheringTimeout: {\n                value: new options.Timeout(function () { return _this._handleIceGatheringTimeout(); }, DEFAULT_ICE_GATHERING_TIMEOUT_MS, false)\n            },\n            _iceRestartBackoff: {\n                value: new options.Backoff(iceRestartBackoffConfig)\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _isIceConnectionInactive: {\n                writable: true,\n                value: false\n            },\n            _isIceLite: {\n                writable: true,\n                value: false\n            },\n            _isIceRestartBackoffInProgress: {\n                writable: true,\n                value: false\n            },\n            _isRestartingIce: {\n                writable: true,\n                value: false\n            },\n            _lastIceConnectionState: {\n                writable: true,\n                value: null\n            },\n            _lastStableDescriptionRevision: {\n                writable: true,\n                value: 0\n            },\n            _localCandidates: {\n                writable: true,\n                value: []\n            },\n            _localCodecs: {\n                value: new Set()\n            },\n            _localCandidatesRevision: {\n                writable: true,\n                value: 1\n            },\n            _localDescriptionWithoutSimulcast: {\n                writable: true,\n                value: null\n            },\n            _localDescription: {\n                writable: true,\n                value: null\n            },\n            _localUfrag: {\n                writable: true,\n                value: null\n            },\n            _log: {\n                value: log\n            },\n            _eventObserver: {\n                value: options.eventObserver\n            },\n            _remoteCodecMaps: {\n                value: new Map()\n            },\n            _rtpSenders: {\n                value: new Map()\n            },\n            _rtpNewSenders: {\n                value: new Set()\n            },\n            _iceConnectionMonitor: {\n                value: new options.IceConnectionMonitor(peerConnection)\n            },\n            _mediaTrackReceivers: {\n                value: new Set()\n            },\n            _needsAnswer: {\n                writable: true,\n                value: false\n            },\n            _negotiationRole: {\n                writable: true,\n                value: null\n            },\n            _offerOptions: {\n                writable: true,\n                value: options.offerOptions\n            },\n            _onEncodingParametersChanged: {\n                value: oncePerTick(function () {\n                    if (!_this._needsAnswer) {\n                        updateEncodingParameters(_this);\n                    }\n                })\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _preferredAudioCodecs: {\n                value: preferredCodecs.audio\n            },\n            _preferredVideoCodecs: {\n                value: preferredCodecs.video\n            },\n            _shouldApplyDtx: {\n                value: preferredCodecs.audio.every(function (_a) {\n                    var codec = _a.codec;\n                    return codec !== 'opus';\n                })\n                    || preferredCodecs.audio.some(function (_a) {\n                        var codec = _a.codec, dtx = _a.dtx;\n                        return codec === 'opus' && dtx;\n                    })\n            },\n            _queuedDescription: {\n                writable: true,\n                value: null\n            },\n            _iceReconnectTimeout: {\n                value: new options.Timeout(function () {\n                    log.debug('ICE reconnect timed out');\n                    _this.close();\n                }, options.sessionTimeout, false)\n            },\n            _recycledTransceivers: {\n                value: {\n                    audio: [],\n                    video: []\n                }\n            },\n            _replaceTrackPromises: {\n                value: new Map()\n            },\n            _remoteCandidates: {\n                writable: true,\n                value: new IceBox()\n            },\n            _setCodecPreferences: {\n                // NOTE(mmalavalli): Re-ordering payload types in order to make sure a non-H264\n                // preferred codec is selected does not work on Android Firefox due to this behavior:\n                // https://bugzilla.mozilla.org/show_bug.cgi?id=1683258. So, we work around this by\n                // not applying any non-H264 preferred video codec.\n                value: isFirefox && isAndroid && preferredCodecs.video[0] && preferredCodecs.video[0].codec.toLowerCase() !== 'h264'\n                    ? function (sdp) { return sdp; }\n                    : options.setCodecPreferences\n            },\n            _setSimulcast: {\n                value: options.setSimulcast\n            },\n            _revertSimulcast: {\n                value: options.revertSimulcast\n            },\n            _RTCIceCandidate: {\n                value: options.RTCIceCandidate\n            },\n            _RTCPeerConnection: {\n                value: options.RTCPeerConnection\n            },\n            _RTCSessionDescription: {\n                value: options.RTCSessionDescription\n            },\n            _shouldOffer: {\n                writable: true,\n                value: false\n            },\n            _shouldRestartIce: {\n                writable: true,\n                value: false\n            },\n            _trackIdsToAttributes: {\n                value: new Map(),\n                writable: true\n            },\n            _trackMatcher: {\n                writable: true,\n                value: null\n            },\n            _mediaTrackSenderToPublisherHints: {\n                value: new Map()\n            },\n            id: {\n                enumerable: true,\n                value: id\n            }\n        });\n        encodingParameters.on('changed', _this._onEncodingParametersChanged);\n        peerConnection.addEventListener('connectionstatechange', _this._handleConnectionStateChange.bind(_this));\n        peerConnection.addEventListener('datachannel', _this._handleDataChannelEvent.bind(_this));\n        peerConnection.addEventListener('icecandidate', _this._handleIceCandidateEvent.bind(_this));\n        peerConnection.addEventListener('iceconnectionstatechange', _this._handleIceConnectionStateChange.bind(_this));\n        peerConnection.addEventListener('icegatheringstatechange', _this._handleIceGatheringStateChange.bind(_this));\n        peerConnection.addEventListener('signalingstatechange', _this._handleSignalingStateChange.bind(_this));\n        peerConnection.addEventListener('track', _this._handleTrackEvent.bind(_this));\n        var self = _this;\n        _this.on('stateChanged', function stateChanged(state) {\n            if (state !== 'closed') {\n                return;\n            }\n            self.removeListener('stateChanged', stateChanged);\n            self._dataChannels.forEach(function (dataChannel, dataTrackSender) {\n                self.removeDataTrackSender(dataTrackSender);\n            });\n        });\n        return _this;\n    }\n    PeerConnectionV2.prototype.toString = function () {\n        return \"[PeerConnectionV2 #\".concat(this._instanceId, \": \").concat(this.id, \"]\");\n    };\n    PeerConnectionV2.prototype.setEffectiveAdaptiveSimulcast = function (effectiveAdaptiveSimulcast) {\n        this._log.debug('Setting setEffectiveAdaptiveSimulcast: ', effectiveAdaptiveSimulcast);\n        // clear adaptive simulcast from codec preferences if it was set.\n        this._preferredVideoCodecs.forEach(function (cs) {\n            if ('adaptiveSimulcast' in cs) {\n                cs.adaptiveSimulcast = effectiveAdaptiveSimulcast;\n            }\n        });\n    };\n    Object.defineProperty(PeerConnectionV2.prototype, \"_shouldApplySimulcast\", {\n        get: function () {\n            if (!isChrome && !isSafari) {\n                return false;\n            }\n            // adaptiveSimulcast is set to false after connected message is received if other party does not support it.\n            var simulcast = this._preferredVideoCodecs.some(function (cs) {\n                return cs.codec.toLowerCase() === 'vp8' && cs.simulcast && cs.adaptiveSimulcast !== false;\n            });\n            return simulcast;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"connectionState\", {\n        /**\n         * The {@link PeerConnectionV2}'s underlying RTCPeerConnection's RTCPeerConnectionState\n         * if supported by the browser, its RTCIceConnectionState otherwise.\n         * @property {RTCPeerConnectionState}\n         */\n        get: function () {\n            return this.iceConnectionState === 'failed'\n                ? 'failed' : (this._peerConnection.connectionState || this.iceConnectionState);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"iceConnectionState\", {\n        /**\n         * The {@link PeerConnectionV2}'s underlying RTCPeerConnection's\n         * RTCIceConnectionState.\n         * @property {RTCIceConnectionState}\n         */\n        get: function () {\n            return ((this._isIceConnectionInactive && this._peerConnection.iceConnectionState === 'disconnected') || this._iceGatheringFailed)\n                ? 'failed' : this._peerConnection.iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"isApplicationSectionNegotiated\", {\n        /**\n         * Whether the {@link PeerConnectionV2} has negotiated or is in the process\n         * of negotiating the application m= section.\n         * @returns {boolean}\n         */\n        get: function () {\n            if (this._peerConnection.signalingState !== 'closed') {\n                // accessing .localDescription in 'closed' state causes it throw exceptions.\n                return this._peerConnection.localDescription\n                    ? getMediaSections(this._peerConnection.localDescription.sdp, 'application').length > 0\n                    : false;\n            }\n            return true;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionV2.prototype, \"_isAdaptiveSimulcastEnabled\", {\n        /**\n         * Whether adaptive simulcast is enabled.\n         * @returns {boolean}\n         */\n        get: function () {\n            var adaptiveSimulcastEntry = this._preferredVideoCodecs.find(function (cs) { return 'adaptiveSimulcast' in cs; });\n            return adaptiveSimulcastEntry && adaptiveSimulcastEntry.adaptiveSimulcast === true;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @param {MediaStreamTrack} track\n     * @param {Array<RTCRtpEncodingParameters>} encodings\n     * @param {boolean} trackReplaced\n     * @returns {boolean} true if encodings were updated.\n     */\n    PeerConnectionV2.prototype._maybeUpdateEncodings = function (track, encodings, trackReplaced) {\n        if (trackReplaced === void 0) { trackReplaced = false; }\n        if (track.kind !== 'video' || track.readyState === 'ended') {\n            return false;\n        }\n        // NOTE(mmalavalli): There is no guarantee that CanvasCaptureMediaStreamTracks will always have \"width\" and \"height\"\n        // in their settings. So, we don't update the encodings if they are not present.\n        // Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1367082\n        var _a = track.getSettings(), height = _a.height, width = _a.width;\n        if (typeof height !== 'number' || typeof width !== 'number') {\n            return false;\n        }\n        // Note(mpatwardhan): always configure encodings for safari.\n        // for chrome only when adaptive simulcast enabled.\n        var browser = util.guessBrowser();\n        if (browser === 'safari' || (browser === 'chrome' && this._isAdaptiveSimulcastEnabled)) {\n            this._updateEncodings(track, encodings, trackReplaced);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Configures with default encodings depending on track type and resolution.\n     * Default configuration sets some encodings to disabled, and for others set scaleResolutionDownBy\n     * values. When trackReplaced is set to true, it will clear 'active' for any encodings that\n     * needs to be enabled.\n     * @param {MediaStreamTrack} track\n     * @param {Array<RTCRtpEncodingParameters>} encodings\n     * @param {boolean} trackReplaced\n     */\n    PeerConnectionV2.prototype._updateEncodings = function (track, encodings, trackReplaced) {\n        if (this._isChromeScreenShareTrack(track)) {\n            var screenShareActiveLayerConfig_1 = [\n                { scaleResolutionDownBy: 1 },\n                { scaleResolutionDownBy: 1 }\n            ];\n            encodings.forEach(function (encoding, i) {\n                var activeLayerConfig = screenShareActiveLayerConfig_1[i];\n                if (activeLayerConfig) {\n                    encoding.scaleResolutionDownBy = activeLayerConfig.scaleResolutionDownBy;\n                    if (trackReplaced) {\n                        delete encoding.active;\n                    }\n                }\n                else {\n                    encoding.active = false;\n                    delete encoding.scaleResolutionDownBy;\n                }\n            });\n        }\n        else {\n            var _a = track.getSettings(), width = _a.width, height = _a.height;\n            // NOTE(mpatwardhan): for non-screen share tracks\n            // enable layers depending on track resolutions\n            var pixelsToMaxActiveLayers = [\n                { pixels: 960 * 540, maxActiveLayers: 3 },\n                { pixels: 480 * 270, maxActiveLayers: 2 },\n                { pixels: 0, maxActiveLayers: 1 }\n            ];\n            var trackPixels_1 = width * height;\n            var activeLayersInfo = pixelsToMaxActiveLayers.find(function (layer) { return trackPixels_1 >= layer.pixels; });\n            var activeLayers_1 = Math.min(encodings.length, activeLayersInfo.maxActiveLayers);\n            encodings.forEach(function (encoding, i) {\n                var enabled = i < activeLayers_1;\n                if (enabled) {\n                    encoding.scaleResolutionDownBy = 1 << (activeLayers_1 - i - 1);\n                    if (trackReplaced) {\n                        encoding.active = true;\n                    }\n                }\n                else {\n                    encoding.active = false;\n                    delete encoding.scaleResolutionDownBy;\n                }\n            });\n        }\n        this._log.debug('_updateEncodings:', encodings.map(function (_a, i) {\n            var active = _a.active, scaleResolutionDownBy = _a.scaleResolutionDownBy;\n            return \"[\".concat(i, \": \").concat(active, \", \").concat(scaleResolutionDownBy || 0, \"]\");\n        }).join(', '));\n    };\n    /**\n     * Add an ICE candidate to the {@link PeerConnectionV2}.\n     * @private\n     * @param {object} candidate\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._addIceCandidate = function (candidate) {\n        var _this = this;\n        return Promise.resolve().then(function () {\n            candidate = new _this._RTCIceCandidate(candidate);\n            return _this._peerConnection.addIceCandidate(candidate);\n        }).catch(function (error) {\n            // NOTE(mmalavalli): Firefox 68+ now generates an RTCIceCandidate with an\n            // empty candidate string to signal end-of-candidates, followed by a null\n            // candidate. As of now, Chrome and Safari reject this RTCIceCandidate. Since\n            // this does not affect the media connection between Firefox 68+ and Chrome/Safari\n            // in Peer-to-Peer Rooms, we suppress the Error and log a warning message.\n            //\n            // Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n            //\n            _this._log.warn(\"Failed to add RTCIceCandidate \".concat(candidate ? \"\\\"\".concat(candidate.candidate, \"\\\"\") : 'null', \": \")\n                + error.message);\n        });\n    };\n    /**\n     * Add ICE candidates to the {@link PeerConnectionV2}.\n     * @private\n     * @param {Array<object>} candidates\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._addIceCandidates = function (candidates) {\n        return Promise.all(candidates.map(this._addIceCandidate, this)).then(function () { });\n    };\n    /**\n     * Add a new RTCRtpTransceiver or update an existing RTCRtpTransceiver for the\n     * given MediaStreamTrack.\n     * @private\n     * @param {MediaStreamTrack} track\n     * @returns {RTCRtpTransceiver}\n     */\n    PeerConnectionV2.prototype._addOrUpdateTransceiver = function (track) {\n        var _this = this;\n        var transceiver = takeRecycledTransceiver(this, track.kind);\n        if (transceiver && transceiver.sender) {\n            var oldTrackId = transceiver.sender.track ? transceiver.sender.track.id : null;\n            if (oldTrackId) {\n                this._log.warn(\"Reusing transceiver: \".concat(transceiver.mid, \"] \").concat(oldTrackId, \" => \").concat(track.id));\n            }\n            // NOTE(mpatwardhan):remember this transceiver while we replace track.\n            // we recycle transceivers that are not in use after 'negotiationCompleted', but we want to prevent\n            // this one from getting recycled while replaceTrack is pending.\n            this._replaceTrackPromises.set(transceiver, transceiver.sender.replaceTrack(track).then(function () {\n                transceiver.direction = 'sendrecv';\n            }, function () {\n                // Do nothing.\n            }).finally(function () {\n                _this._replaceTrackPromises.delete(transceiver);\n            }));\n            return transceiver;\n        }\n        // NOTE(lrivas): The second argument {} is optional in the specification but required by the Citrix VDI implementations.\n        return this._peerConnection.addTransceiver(track, {});\n    };\n    /**\n     * Check the {@link IceBox}.\n     * @private\n     * @param {RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._checkIceBox = function (description) {\n        var ufrag = getUfrag(description);\n        if (!ufrag) {\n            return Promise.resolve();\n        }\n        var candidates = this._remoteCandidates.setUfrag(ufrag);\n        return this._addIceCandidates(candidates);\n    };\n    /**\n     * Create an answer and set it on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescriptionInit} offer\n     * @returns {Promise<boolean>}\n     */\n    PeerConnectionV2.prototype._answer = function (offer) {\n        var _this = this;\n        return Promise.resolve().then(function () {\n            if (!_this._negotiationRole) {\n                _this._negotiationRole = 'answerer';\n            }\n            return _this._setRemoteDescription(offer);\n        }).catch(function () {\n            throw new MediaClientRemoteDescFailedError();\n        }).then(function () {\n            return _this._peerConnection.createAnswer();\n        }).then(function (answer) {\n            if (isFirefox) {\n                // NOTE(mmalavalli): We work around Chromium bug 1106157 by disabling\n                // RTX in Firefox 79+. For more details about the bug, please go here:\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1106157\n                answer = new _this._RTCSessionDescription({\n                    sdp: disableRtx(answer.sdp),\n                    type: answer.type\n                });\n            }\n            else {\n                answer = workaroundIssue8329(answer);\n            }\n            // NOTE(mpatwardhan): Upcoming chrome versions are going to remove ssrc attributes\n            // mslabel and label. See this bug https://bugs.chromium.org/p/webrtc/issues/detail?id=7110\n            // and PSA: https://groups.google.com/forum/#!searchin/discuss-webrtc/PSA%7Csort:date/discuss-webrtc/jcZO-Wj0Wus/k2XvPCvoAwAJ\n            // We are not referencing those attributes, but this changes goes ahead and removes them to see if it works.\n            // this also helps reduce bytes on wires\n            var updatedSdp = removeSSRCAttributes(answer.sdp, ['mslabel', 'label']);\n            if (_this._shouldApplySimulcast) {\n                var sdpWithoutSimulcast = updatedSdp;\n                updatedSdp = _this._setSimulcast(sdpWithoutSimulcast, _this._trackIdsToAttributes);\n                // NOTE(syerrapragada): VMS does not support H264 simulcast. So,\n                // unset simulcast for sections in local offer where corresponding\n                // sections in answer doesn't have vp8 as preferred codec and reapply offer.\n                updatedSdp = _this._revertSimulcast(updatedSdp, sdpWithoutSimulcast, offer.sdp);\n            }\n            // NOTE(mmalavalli): Work around Chromium bug 1074421.\n            // https://bugs.chromium.org/p/chromium/issues/detail?id=1074421\n            updatedSdp = updatedSdp.replace(/42e015/g, '42e01f');\n            return _this._setLocalDescription({\n                type: answer.type,\n                sdp: updatedSdp\n            });\n        }).then(function () {\n            return _this._checkIceBox(offer);\n        }).then(function () {\n            return _this._queuedDescription\n                && _this._updateDescription(_this._queuedDescription);\n        }).then(function () {\n            _this._queuedDescription = null;\n            return _this._maybeReoffer(_this._peerConnection.localDescription);\n        }).catch(function (error) {\n            var errorToThrow = error instanceof MediaClientRemoteDescFailedError ? error : new MediaClientLocalDescFailedError();\n            _this._publishMediaWarning({\n                message: 'Failed to _answer',\n                code: errorToThrow.code,\n                error: error\n            });\n            throw errorToThrow;\n        });\n    };\n    /**\n     * Close the underlying RTCPeerConnection. Returns false if the\n     * RTCPeerConnection was already closed.\n     * @private\n     * @returns {boolean}\n     */\n    PeerConnectionV2.prototype._close = function () {\n        this._iceConnectionMonitor.stop();\n        if (this._peerConnection.signalingState !== 'closed') {\n            this._peerConnection.close();\n            this.preempt('closed');\n            this._encodingParameters.removeListener('changed', this._onEncodingParametersChanged);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Handle a \"connectionstatechange\" event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleConnectionStateChange = function () {\n        this.emit('connectionStateChanged');\n    };\n    /**\n     * Handle a \"datachannel\" event.\n     * @private\n     * @param {RTCDataChannelEvent} event\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleDataChannelEvent = function (event) {\n        var _this = this;\n        var dataChannel = event.channel;\n        var dataTrackReceiver = new DataTrackReceiver(dataChannel);\n        this._dataTrackReceivers.add(dataTrackReceiver);\n        dataChannel.addEventListener('close', function () {\n            _this._dataTrackReceivers.delete(dataTrackReceiver);\n        });\n        this.emit('trackAdded', dataTrackReceiver);\n    };\n    /**\n     * Handle a glare scenario on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescriptionInit} offer\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._handleGlare = function (offer) {\n        var _this = this;\n        this._log.debug('Glare detected; rolling back');\n        if (this._isRestartingIce) {\n            this._log.debug('An ICE restart was in progress; we\\'ll need to restart ICE again after rolling back');\n            this._isRestartingIce = false;\n            this._shouldRestartIce = true;\n        }\n        return Promise.resolve().then(function () {\n            _this._trackIdsToAttributes = new Map(_this._appliedTrackIdsToAttributes);\n            return _this._setLocalDescription({ type: 'rollback' });\n        }).then(function () {\n            _this._needsAnswer = false;\n            return _this._answer(offer);\n        }).then(function (didReoffer) {\n            return didReoffer ? Promise.resolve() : _this._offer();\n        });\n    };\n    PeerConnectionV2.prototype._publishMediaWarning = function (_a) {\n        var message = _a.message, code = _a.code, error = _a.error, sdp = _a.sdp;\n        this._eventObserver.emit('event', { level: 'warning', name: 'error', group: 'media', payload: {\n                message: message,\n                code: code,\n                context: JSON.stringify({ error: error.message, sdp: sdp })\n            } });\n    };\n    /**\n     * Handle an ICE candidate event.\n     * @private\n     * @param {Event} event\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceCandidateEvent = function (event) {\n        if (event.candidate) {\n            this._log.debug('Clearing ICE gathering timeout');\n            this._didGenerateLocalCandidates = true;\n            this._iceGatheringTimeout.clear();\n            this._localCandidates.push(event.candidate);\n        }\n        var peerConnectionState = {\n            ice: {\n                candidates: this._isIceLite ? [] : this._localCandidates.slice(),\n                ufrag: this._localUfrag\n            },\n            id: this.id\n        };\n        if (!event.candidate) {\n            peerConnectionState.ice.complete = true;\n        }\n        if (!(this._isIceLite && event.candidate)) {\n            peerConnectionState.ice.revision = this._localCandidatesRevision++;\n            this.emit('candidates', peerConnectionState);\n        }\n    };\n    /**\n     * Handle an ICE connection state change event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceConnectionStateChange = function () {\n        var _this = this;\n        var iceConnectionState = this._peerConnection.iceConnectionState;\n        var isIceConnectedOrComplete = ['connected', 'completed'].includes(iceConnectionState);\n        var log = this._log;\n        log.debug(\"ICE connection state is \\\"\".concat(iceConnectionState, \"\\\"\"));\n        if (isIceConnectedOrComplete) {\n            this._iceReconnectTimeout.clear();\n            this._iceRestartBackoff.reset();\n        }\n        if (this._lastIceConnectionState !== 'failed' && iceConnectionState === 'failed' && !this._shouldRestartIce && !this._isRestartingIce) {\n            // Case 1: Transition to \"failed\".\n            log.warn('ICE failed');\n            this._initiateIceRestartBackoff();\n        }\n        else if (['disconnected', 'failed'].includes(this._lastIceConnectionState) && isIceConnectedOrComplete) {\n            // Case 2: Transition from \"disconnected\" or \"failed\".\n            log.debug('ICE reconnected');\n        }\n        // start monitor media when connected, and continue to monitor while state is complete-disconnected-connected.\n        if (iceConnectionState === 'connected') {\n            this._isIceConnectionInactive = false;\n            this._iceConnectionMonitor.start(function () {\n                // note: iceConnection monitor waits for iceConnectionState=disconnected for\n                // detecting inactivity. Its possible that it may know about disconnected before _handleIceConnectionStateChange\n                _this._iceConnectionMonitor.stop();\n                if (!_this._shouldRestartIce && !_this._isRestartingIce) {\n                    log.warn('ICE Connection Monitor detected inactivity');\n                    _this._isIceConnectionInactive = true;\n                    _this._initiateIceRestartBackoff();\n                    _this.emit('iceConnectionStateChanged');\n                    _this.emit('connectionStateChanged');\n                }\n            });\n        }\n        else if (!['disconnected', 'completed'].includes(iceConnectionState)) { // don't stop monitoring for disconnected or completed.\n            this._iceConnectionMonitor.stop();\n            this._isIceConnectionInactive = false;\n        }\n        this._lastIceConnectionState = iceConnectionState;\n        this.emit('iceConnectionStateChanged');\n    };\n    /**\n     * Handle ICE gathering timeout.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceGatheringTimeout = function () {\n        this._log.warn('ICE failed to gather any local candidates');\n        this._iceGatheringFailed = true;\n        this._initiateIceRestartBackoff();\n        this.emit('iceConnectionStateChanged');\n        this.emit('connectionStateChanged');\n    };\n    /**\n     * Handle an ICE gathering state change event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleIceGatheringStateChange = function () {\n        var iceGatheringState = this._peerConnection.iceGatheringState;\n        var log = this._log;\n        log.debug(\"ICE gathering state is \\\"\".concat(iceGatheringState, \"\\\"\"));\n        // NOTE(mmalavalli): Start the ICE gathering timeout only if the RTCPeerConnection\n        // has started gathering candidates for the first time since the initial offer/answer\n        // or an offer/answer with ICE restart.\n        var _a = this._iceGatheringTimeout, delay = _a.delay, isSet = _a.isSet;\n        if (iceGatheringState === 'gathering' && !this._didGenerateLocalCandidates && !isSet) {\n            log.debug(\"Starting ICE gathering timeout: \".concat(delay));\n            this._iceGatheringFailed = false;\n            this._iceGatheringTimeout.start();\n        }\n    };\n    /**\n     * Handle a signaling state change event.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleSignalingStateChange = function () {\n        if (this._peerConnection.signalingState === 'stable') {\n            this._appliedTrackIdsToAttributes = new Map(this._trackIdsToAttributes);\n        }\n    };\n    /**\n     * Handle a track event.\n     * @private\n     * @param {RTCTrackEvent} event\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._handleTrackEvent = function (event) {\n        var _this = this;\n        var sdp = this._peerConnection.remoteDescription\n            ? this._peerConnection.remoteDescription.sdp\n            : null;\n        this._trackMatcher = this._trackMatcher || new TrackMatcher();\n        this._trackMatcher.update(sdp);\n        var mediaStreamTrack = event.track;\n        var signaledTrackId = this._trackMatcher.match(event) || mediaStreamTrack.id;\n        var mediaTrackReceiver = new MediaTrackReceiver(signaledTrackId, mediaStreamTrack);\n        // NOTE(mmalavalli): \"ended\" is not fired on the remote MediaStreamTrack when\n        // the remote peer removes a track. So, when this MediaStreamTrack is re-used\n        // for a different track due to the remote peer calling RTCRtpSender.replaceTrack(),\n        // we delete the previous MediaTrackReceiver that owned this MediaStreamTrack\n        // before adding the new MediaTrackReceiver.\n        this._mediaTrackReceivers.forEach(function (trackReceiver) {\n            if (trackReceiver.track.id === mediaTrackReceiver.track.id) {\n                _this._mediaTrackReceivers.delete(trackReceiver);\n            }\n        });\n        this._mediaTrackReceivers.add(mediaTrackReceiver);\n        if (mediaStreamTrack.addEventListener) {\n            mediaStreamTrack.addEventListener('ended', function () { return _this._mediaTrackReceivers.delete(mediaTrackReceiver); });\n        }\n        else {\n            mediaStreamTrack.onended = function () { return _this._mediaTrackReceivers.delete(mediaTrackReceiver); };\n        }\n        this.emit('trackAdded', mediaTrackReceiver);\n    };\n    /**\n     * Initiate ICE Restart.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._initiateIceRestart = function () {\n        if (this._peerConnection.signalingState === 'closed') {\n            return;\n        }\n        var log = this._log;\n        log.warn('Attempting to restart ICE');\n        this._didGenerateLocalCandidates = false;\n        this._isIceRestartBackoffInProgress = false;\n        this._shouldRestartIce = true;\n        var _a = this._iceReconnectTimeout, delay = _a.delay, isSet = _a.isSet;\n        if (!isSet) {\n            log.debug(\"Starting ICE reconnect timeout: \".concat(delay));\n            this._iceReconnectTimeout.start();\n        }\n        this.offer().catch(function (ex) {\n            log.error(\"offer failed in _initiateIceRestart with: \".concat(ex.message));\n        });\n    };\n    /**\n     * Schedule an ICE Restart.\n     * @private\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype._initiateIceRestartBackoff = function () {\n        var _this = this;\n        if (this._peerConnection.signalingState === 'closed' || this._isIceRestartBackoffInProgress) {\n            return;\n        }\n        this._log.warn('An ICE restart has been scheduled');\n        this._isIceRestartBackoffInProgress = true;\n        this._iceRestartBackoff.backoff(function () { return _this._initiateIceRestart(); });\n    };\n    /**\n     * Conditionally re-offer.\n     * @private\n     * @param {?RTCSessionDescriptionInit} localDescription\n     * @returns {Promise<boolean>}\n     */\n    PeerConnectionV2.prototype._maybeReoffer = function (localDescription) {\n        var shouldReoffer = this._shouldOffer;\n        if (localDescription && localDescription.sdp) {\n            // NOTE(mmalavalli): If the local RTCSessionDescription has fewer audio and/or\n            // video send* m= lines than the corresponding RTCRtpSenders with non-null\n            // MediaStreamTracks, it means that the newly added RTCRtpSenders require\n            // renegotiation.\n            var senders_1 = this._peerConnection.getSenders().filter(function (sender) { return sender.track; });\n            shouldReoffer = ['audio', 'video'].reduce(function (shouldOffer, kind) {\n                var mediaSections = getMediaSections(localDescription.sdp, kind, '(sendrecv|sendonly)');\n                var sendersOfKind = senders_1.filter(isSenderOfKind.bind(null, kind));\n                return shouldOffer || (mediaSections.length < sendersOfKind.length);\n            }, shouldReoffer);\n            // NOTE(mroberts): We also need to re-offer if we have a DataTrack to share\n            // but no m= application section.\n            var hasDataTrack = this._dataChannels.size > 0;\n            var hasApplicationMediaSection = getMediaSections(localDescription.sdp, 'application').length > 0;\n            var needsApplicationMediaSection = hasDataTrack && !hasApplicationMediaSection;\n            shouldReoffer = shouldReoffer || needsApplicationMediaSection;\n        }\n        var promise = shouldReoffer ? this._offer() : Promise.resolve();\n        return promise.then(function () { return shouldReoffer; });\n    };\n    /**\n     * Create an offer and set it on the {@link PeerConnectionV2}.\n     * @private\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._offer = function () {\n        var _this = this;\n        var offerOptions = Object.assign({}, this._offerOptions);\n        this._needsAnswer = true;\n        if (this._shouldRestartIce) {\n            this._shouldRestartIce = false;\n            this._isRestartingIce = true;\n            offerOptions.iceRestart = true;\n        }\n        return Promise.all(this._replaceTrackPromises.values()).then(function () {\n            return _this._peerConnection.createOffer(offerOptions);\n        }).catch(function (error) {\n            var errorToThrow = new MediaClientLocalDescFailedError();\n            _this._publishMediaWarning({\n                message: 'Failed to create offer',\n                code: errorToThrow.code,\n                error: error\n            });\n            throw errorToThrow;\n        }).then(function (offer) {\n            if (isFirefox) {\n                // NOTE(mmalavalli): We work around Chromium bug 1106157 by disabling\n                // RTX in Firefox 79+. For more details about the bug, please go here:\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=1106157\n                offer = new _this._RTCSessionDescription({\n                    sdp: disableRtx(offer.sdp),\n                    type: offer.type\n                });\n            }\n            else {\n                offer = workaroundIssue8329(offer);\n            }\n            // NOTE(mpatwardhan): upcoming chrome versions are going to remove ssrc attributes\n            // mslabel and label. See this bug https://bugs.chromium.org/p/webrtc/issues/detail?id=7110\n            // and PSA: https://groups.google.com/forum/#!searchin/discuss-webrtc/PSA%7Csort:date/discuss-webrtc/jcZO-Wj0Wus/k2XvPCvoAwAJ\n            // Looks like we are not referencing those attributes, but this changes goes ahead and removes them to see if it works.\n            // this also helps reduce bytes on wires\n            var sdp = removeSSRCAttributes(offer.sdp, ['mslabel', 'label']);\n            sdp = _this._peerConnection.remoteDescription\n                ? filterLocalCodecs(sdp, _this._peerConnection.remoteDescription.sdp)\n                : sdp;\n            var updatedSdp = _this._setCodecPreferences(sdp, _this._preferredAudioCodecs, _this._preferredVideoCodecs);\n            _this._shouldOffer = false;\n            if (!_this._negotiationRole) {\n                _this._negotiationRole = 'offerer';\n            }\n            if (_this._shouldApplySimulcast) {\n                _this._localDescriptionWithoutSimulcast = {\n                    type: 'offer',\n                    sdp: updatedSdp\n                };\n                updatedSdp = _this._setSimulcast(updatedSdp, _this._trackIdsToAttributes);\n            }\n            return _this._setLocalDescription({\n                type: 'offer',\n                sdp: updatedSdp\n            });\n        });\n    };\n    /**\n     * Get the MediaTrackSender ID of the given MediaStreamTrack ID.\n     * Since a MediaTrackSender's underlying MediaStreamTrack can be\n     * replaced, the corresponding IDs can mismatch.\n     * @private\n     * @param {Track.ID} id\n     * @returns {Track.ID}\n     */\n    PeerConnectionV2.prototype._getMediaTrackSenderId = function (trackId) {\n        var mediaTrackSender = Array.from(this._rtpSenders.keys()).find(function (_a) {\n            var id = _a.track.id;\n            return id === trackId;\n        });\n        return mediaTrackSender ? mediaTrackSender.id : trackId;\n    };\n    /**\n     * Add or rewrite local MediaStreamTrack IDs in the given RTCSessionDescription.\n     * @private\n     * @param {RTCSessionDescription} description\n     * @return {RTCSessionDescription}\n     */\n    PeerConnectionV2.prototype._addOrRewriteLocalTrackIds = function (description) {\n        var _this = this;\n        var transceivers = this._peerConnection.getTransceivers();\n        var activeTransceivers = transceivers.filter(function (_a) {\n            var sender = _a.sender, stopped = _a.stopped;\n            return !stopped && sender && sender.track;\n        });\n        // NOTE(mmalavalli): There is no guarantee that MediaStreamTrack IDs will be present in\n        // SDPs, and even if they are, there is no guarantee that they will be the same as the\n        // actual MediaStreamTrack IDs. So, we add or re-write the actual MediaStreamTrack IDs\n        // to the assigned m= sections here.\n        var assignedTransceivers = activeTransceivers.filter(function (_a) {\n            var mid = _a.mid;\n            return mid;\n        });\n        var midsToTrackIds = new Map(assignedTransceivers.map(function (_a) {\n            var mid = _a.mid, sender = _a.sender;\n            return [mid, _this._getMediaTrackSenderId(sender.track.id)];\n        }));\n        var sdp1 = addOrRewriteTrackIds(description.sdp, midsToTrackIds);\n        // NOTE(mmalavalli): Chrome and Safari do not apply the offer until they get an answer.\n        // So, we add or re-write the actual MediaStreamTrack IDs to the unassigned m= sections here.\n        var unassignedTransceivers = activeTransceivers.filter(function (_a) {\n            var mid = _a.mid;\n            return !mid;\n        });\n        var newTrackIdsByKind = new Map(['audio', 'video'].map(function (kind) { return [\n            kind,\n            unassignedTransceivers.filter(function (_a) {\n                var sender = _a.sender;\n                return sender.track.kind === kind;\n            }).map(function (_a) {\n                var sender = _a.sender;\n                return _this._getMediaTrackSenderId(sender.track.id);\n            })\n        ]; }));\n        var sdp2 = addOrRewriteNewTrackIds(sdp1, midsToTrackIds, newTrackIdsByKind);\n        return new this._RTCSessionDescription({\n            sdp: sdp2,\n            type: description.type\n        });\n    };\n    /**\n     * Rollback and apply the given offer.\n     * @private\n     * @param {RTCSessionDescriptionInit} offer\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._rollbackAndApplyOffer = function (offer) {\n        var _this = this;\n        return this._setLocalDescription({ type: 'rollback' }).then(function () { return _this._setLocalDescription(offer); });\n    };\n    /**\n     * Set a local description on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescription|RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._setLocalDescription = function (description) {\n        var _this = this;\n        if (description.type !== 'rollback' && this._shouldApplyDtx) {\n            description = new this._RTCSessionDescription({\n                sdp: enableDtxForOpus(description.sdp),\n                type: description.type\n            });\n        }\n        return this._peerConnection.setLocalDescription(description).catch(function (error) {\n            _this._log.warn(\"Calling setLocalDescription with an RTCSessionDescription of type \\\"\".concat(description.type, \"\\\" failed with the error \\\"\").concat(error.message, \"\\\".\"), error);\n            var errorToThrow = new MediaClientLocalDescFailedError();\n            var publishWarning = {\n                message: \"Calling setLocalDescription with an RTCSessionDescription of type \\\"\".concat(description.type, \"\\\" failed\"),\n                code: errorToThrow.code,\n                error: error\n            };\n            if (description.sdp) {\n                _this._log.warn(\"The SDP was \".concat(description.sdp));\n                publishWarning.sdp = description.sdp;\n            }\n            _this._publishMediaWarning(publishWarning);\n            throw errorToThrow;\n        }).then(function () {\n            if (description.type !== 'rollback') {\n                _this._localDescription = _this._addOrRewriteLocalTrackIds(description);\n                // NOTE(mmalavalli): In order for this feature to be backward compatible with older\n                // SDK versions which to not support opus DTX, we append \"usedtx=1\" to the local SDP\n                // only while applying it. We will not send it over the wire to prevent inadvertent\n                // enabling of opus DTX in older SDKs. Newer SDKs will append \"usedtx=1\" by themselves\n                // if the developer has requested opus DTX to be enabled. (JSDK-3063)\n                if (_this._shouldApplyDtx) {\n                    _this._localDescription = new _this._RTCSessionDescription({\n                        sdp: enableDtxForOpus(_this._localDescription.sdp, []),\n                        type: _this._localDescription.type\n                    });\n                }\n                _this._localCandidates = [];\n                if (description.type === 'offer') {\n                    _this._descriptionRevision++;\n                }\n                else if (description.type === 'answer') {\n                    _this._lastStableDescriptionRevision = _this._descriptionRevision;\n                    negotiationCompleted(_this);\n                }\n                _this._localUfrag = getUfrag(description);\n                _this.emit('description', _this.getState());\n            }\n        });\n    };\n    /**\n     * Set a remote RTCSessionDescription on the {@link PeerConnectionV2}.\n     * @private\n     * @param {RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._setRemoteDescription = function (description) {\n        var _this = this;\n        if (description.sdp) {\n            description.sdp = this._setCodecPreferences(description.sdp, this._preferredAudioCodecs, this._preferredVideoCodecs);\n            if (this._shouldApplyDtx) {\n                description.sdp = enableDtxForOpus(description.sdp);\n            }\n            else {\n                // NOTE(mmalavalli): Remove \"usedtx=1\" from opus's fmtp line if present\n                // since DTX is disabled.\n                description.sdp = enableDtxForOpus(description.sdp, []);\n            }\n            if (isFirefox) {\n                // NOTE(mroberts): Do this to reduce our MediaStream count in Firefox. By\n                // mapping MediaStream IDs in the SDP to \"-\", we ensure the \"track\" event\n                // doesn't include any new MediaStreams in Firefox. Its `streams` member\n                // will always be the empty Array.\n                description.sdp = filterOutMediaStreamIds(description.sdp);\n            }\n            if (!this._peerConnection.remoteDescription) {\n                this._isIceLite = /a=ice-lite/.test(description.sdp);\n            }\n        }\n        description = new this._RTCSessionDescription(description);\n        // eslint-disable-next-line consistent-return\n        return Promise.resolve().then(function () {\n            // NOTE(syerrapragada): VMS does not support H264 simulcast. So,\n            // unset simulcast for sections in local offer where corresponding\n            // sections in answer doesn't have vp8 as preferred codec and reapply offer.\n            if (description.type === 'answer' && _this._localDescriptionWithoutSimulcast) {\n                // NOTE(mpatwardhan):if we were using adaptive simulcast, and if its not supported by server\n                // revert simulcast even for vp8.\n                var adaptiveSimulcastEntry = _this._preferredVideoCodecs.find(function (cs) { return 'adaptiveSimulcast' in cs; });\n                var revertForAll = !!adaptiveSimulcastEntry && adaptiveSimulcastEntry.adaptiveSimulcast === false;\n                var sdpWithoutSimulcastForNonVP8MediaSections = _this._revertSimulcast(_this._localDescription.sdp, _this._localDescriptionWithoutSimulcast.sdp, description.sdp, revertForAll);\n                _this._localDescriptionWithoutSimulcast = null;\n                if (sdpWithoutSimulcastForNonVP8MediaSections !== _this._localDescription.sdp) {\n                    return _this._rollbackAndApplyOffer({\n                        type: _this._localDescription.type,\n                        sdp: sdpWithoutSimulcastForNonVP8MediaSections\n                    });\n                }\n            }\n        }).then(function () { return _this._peerConnection.setRemoteDescription(description); }).then(function () {\n            if (description.type === 'answer') {\n                if (_this._isRestartingIce) {\n                    _this._log.debug('An ICE restart was in-progress and is now completed');\n                    _this._isRestartingIce = false;\n                }\n                negotiationCompleted(_this);\n            }\n        }, function (error) {\n            _this._log.warn(\"Calling setRemoteDescription with an RTCSessionDescription of type \\\"\".concat(description.type, \"\\\" failed with the error \\\"\").concat(error.message, \"\\\".\"), error);\n            if (description.sdp) {\n                _this._log.warn(\"The SDP was \".concat(description.sdp));\n            }\n            throw error;\n        });\n    };\n    /**\n     * Update the {@link PeerConnectionV2}'s description.\n     * @private\n     * @param {RTCSessionDescriptionInit} description\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._updateDescription = function (description) {\n        var _this = this;\n        switch (description.type) {\n            case 'answer':\n            case 'pranswer':\n                if (description.revision !== this._descriptionRevision\n                    || this._peerConnection.signalingState !== 'have-local-offer') {\n                    return Promise.resolve();\n                }\n                this._descriptionRevision = description.revision;\n                break;\n            case 'close':\n                return this._close();\n            case 'create-offer':\n                if (description.revision <= this._lastStableDescriptionRevision) {\n                    return Promise.resolve();\n                }\n                else if (this._needsAnswer) {\n                    this._queuedDescription = description;\n                    return Promise.resolve();\n                }\n                this._descriptionRevision = description.revision;\n                return this._offer();\n            case 'offer':\n                if (description.revision <= this._lastStableDescriptionRevision\n                    || this._peerConnection.signalingState === 'closed') {\n                    return Promise.resolve();\n                }\n                if (this._peerConnection.signalingState === 'have-local-offer') {\n                    // NOTE(mpatwardhan): For a peer connection\n                    // 1) createOffer always generate SDP with `setup:actpass`\n                    // 2) when remote description is set `setup:active`  - the answer generated selects the dtls role of setup:passive\n                    // 3) when remote description is set `setup:passive` - the answer generated selects the dtls role of setup:active\n                    // 4) when remote description is set `setup:actpass` - the answer generated uses the previously negotiated role (if not negotiated previously setup:active is used)\n                    // This test shows the  behavior: https://github.com/twilio/twilio-webrtc.js/blob/master/test/integration/spec/rtcpeerconnection.js#L936\n                    // with glare handling (if dtls role was not negotiated before ) the generated answer will set setup:active.\n                    // we do not want that. lets wait for \"initial negotiation\" before attempting glare handling.\n                    if (this._needsAnswer && this._lastStableDescriptionRevision === 0) {\n                        this._queuedDescription = description;\n                        return Promise.resolve();\n                    }\n                    this._descriptionRevision = description.revision;\n                    return this._handleGlare(description);\n                }\n                this._descriptionRevision = description.revision;\n                return this._answer(description).then(function () { });\n            default:\n            // Do nothing.\n        }\n        // Handle answer or pranswer.\n        var revision = description.revision;\n        return Promise.resolve().then(function () {\n            return _this._setRemoteDescription(description);\n        }).catch(function (error) {\n            var errorToThrow = new MediaClientRemoteDescFailedError();\n            _this._publishMediaWarning({\n                message: \"Calling setRemoteDescription with an RTCSessionDescription of type \\\"\".concat(description.type, \"\\\" failed\"),\n                code: errorToThrow.code,\n                error: error,\n                sdp: description.sdp\n            });\n            throw errorToThrow;\n        }).then(function () {\n            _this._lastStableDescriptionRevision = revision;\n            _this._needsAnswer = false;\n            return _this._checkIceBox(description);\n        }).then(function () {\n            return _this._queuedDescription\n                && _this._updateDescription(_this._queuedDescription);\n        }).then(function () {\n            _this._queuedDescription = null;\n            return _this._maybeReoffer(_this._peerConnection.localDescription).then(function () { });\n        });\n    };\n    /**\n     * Update the {@link PeerConnectionV2}'s ICE candidates.\n     * @private\n     * @param {object} iceState\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype._updateIce = function (iceState) {\n        var candidates = this._remoteCandidates.update(iceState);\n        return this._addIceCandidates(candidates);\n    };\n    /**\n     * Add a {@link DataTrackSender} to the {@link PeerConnectionV2}.\n     * @param {DataTrackSender} dataTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.addDataTrackSender = function (dataTrackSender) {\n        if (this._dataChannels.has(dataTrackSender)) {\n            return;\n        }\n        try {\n            var dataChannelDict = {\n                ordered: dataTrackSender.ordered\n            };\n            if (dataTrackSender.maxPacketLifeTime !== null) {\n                dataChannelDict.maxPacketLifeTime = dataTrackSender.maxPacketLifeTime;\n            }\n            if (dataTrackSender.maxRetransmits !== null) {\n                dataChannelDict.maxRetransmits = dataTrackSender.maxRetransmits;\n            }\n            var dataChannel = this._peerConnection.createDataChannel(dataTrackSender.id, dataChannelDict);\n            dataTrackSender.addDataChannel(dataChannel);\n            this._dataChannels.set(dataTrackSender, dataChannel);\n        }\n        catch (error) {\n            this._log.warn(\"Error creating an RTCDataChannel for DataTrack \\\"\".concat(dataTrackSender.id, \"\\\": \").concat(error.message));\n        }\n    };\n    PeerConnectionV2.prototype._handleQueuedPublisherHints = function () {\n        var _this = this;\n        if (this._peerConnection.signalingState === 'stable') {\n            this._mediaTrackSenderToPublisherHints.forEach(function (_a, mediaTrackSender) {\n                var deferred = _a.deferred, encodings = _a.encodings;\n                _this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n                _this._setPublisherHint(mediaTrackSender, encodings)\n                    .then(function (result) { return deferred.resolve(result); })\n                    .catch(function (error) { return deferred.reject(error); });\n            });\n        }\n    };\n    /**\n     * updates encodings for simulcast layers of given sender.\n     * @param {RTCRtpSender} sender\n     * @param {Array<{enabled: boolean, layer_index: number}>|null} encodings\n     * @returns {Promise<string>} string indicating result of the operation. can be one of\n     *  \"OK\", \"INVALID_HINT\", \"COULD_NOT_APPLY_HINT\", \"UNKNOWN_TRACK\"\n     */\n    PeerConnectionV2.prototype._setPublisherHint = function (mediaTrackSender, encodings) {\n        var _this = this;\n        if (isFirefox) {\n            return Promise.resolve('COULD_NOT_APPLY_HINT');\n        }\n        if (this._mediaTrackSenderToPublisherHints.has(mediaTrackSender)) {\n            // skip any stale hint associated with the mediaTrackSender.\n            var queuedHint = this._mediaTrackSenderToPublisherHints.get(mediaTrackSender);\n            queuedHint.deferred.resolve('REQUEST_SKIPPED');\n            this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n        }\n        var sender = this._rtpSenders.get(mediaTrackSender);\n        if (!sender) {\n            this._log.warn('Could not apply publisher hint because RTCRtpSender was not found');\n            return Promise.resolve('UNKNOWN_TRACK');\n        }\n        if (this._peerConnection.signalingState === 'closed') {\n            this._log.warn('Could not apply publisher hint because signalingState was \"closed\"');\n            return Promise.resolve('COULD_NOT_APPLY_HINT');\n        }\n        if (this._peerConnection.signalingState !== 'stable') {\n            // enqueue this hint to be applied when pc becomes stable.\n            this._log.debug('Queuing up publisher hint because signalingState:', this._peerConnection.signalingState);\n            var deferred = defer();\n            this._mediaTrackSenderToPublisherHints.set(mediaTrackSender, { deferred: deferred, encodings: encodings });\n            return deferred.promise;\n        }\n        var parameters = sender.getParameters();\n        if (encodings !== null) {\n            encodings.forEach(function (_a) {\n                var enabled = _a.enabled, layerIndex = _a.layer_index;\n                if (parameters.encodings.length > layerIndex) {\n                    _this._log.debug(\"layer:\".concat(layerIndex, \", active:\").concat(parameters.encodings[layerIndex].active, \" => \").concat(enabled));\n                    parameters.encodings[layerIndex].active = enabled;\n                }\n                else {\n                    _this._log.warn(\"invalid layer:\".concat(layerIndex, \", active:\").concat(enabled));\n                }\n            });\n        }\n        // Note(mpatwardhan): after publisher hints are applied, overwrite with default encodings\n        // to disable any encoding that shouldn't have been enabled by publisher_hints.\n        // When encodings===null (that is we are asked to reset encodings for replaceTrack)\n        // along with disabling encodings, clear active flag for encodings that should not be disabled\n        this._maybeUpdateEncodings(sender.track, parameters.encodings, encodings === null /* trackReplaced */);\n        return sender.setParameters(parameters).then(function () { return 'OK'; }).catch(function (error) {\n            _this._log.error('Failed to apply publisher hints:', error);\n            return 'COULD_NOT_APPLY_HINT';\n        });\n    };\n    /**\n     * Add the {@link MediaTrackSender} to the {@link PeerConnectionV2}.\n     * @param {MediaTrackSender} mediaTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.addMediaTrackSender = function (mediaTrackSender) {\n        var _this = this;\n        if (this._peerConnection.signalingState === 'closed' || this._rtpSenders.has(mediaTrackSender)) {\n            return;\n        }\n        var transceiver = this._addOrUpdateTransceiver(mediaTrackSender.track);\n        var sender = transceiver.sender;\n        mediaTrackSender.addSender(sender, function (encodings) { return _this._setPublisherHint(mediaTrackSender, encodings); });\n        this._rtpNewSenders.add(sender);\n        this._rtpSenders.set(mediaTrackSender, sender);\n    };\n    /**\n     * Close the {@link PeerConnectionV2}.\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.close = function () {\n        if (this._close()) {\n            this._descriptionRevision++;\n            this._localDescription = { type: 'close' };\n            this.emit('description', this.getState());\n        }\n    };\n    /**\n     * Get the {@link DataTrackReceiver}s and the {@link MediaTrackReceiver}s on the\n     * {@link PeerConnectionV2}.\n     * @returns {Array<DataTrackReceiver|MediaTrackReceiver>} trackReceivers\n     */\n    PeerConnectionV2.prototype.getTrackReceivers = function () {\n        return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers));\n    };\n    /**\n     * Get the {@link PeerConnectionV2}'s state (specifically, its description).\n     * @returns {?object}\n     */\n    PeerConnectionV2.prototype.getState = function () {\n        if (!this._localDescription) {\n            return null;\n        }\n        // NOTE(mpatwardhan): Return most recent localDescription. If the most recent local description is an\n        // answer, and this method is called for sending a \"sync\" message while the next remote offer is being processed,\n        // we need to send the most recent stable description revision instead of the current description revision,\n        // which is supposed to be for the next local answer.\n        var localDescriptionRevision = this._localDescription.type === 'answer' ? this._lastStableDescriptionRevision : this._descriptionRevision;\n        var localDescription = {\n            type: this._localDescription.type,\n            revision: localDescriptionRevision\n        };\n        if (this._localDescription.sdp) {\n            localDescription.sdp = this._localDescription.sdp;\n        }\n        return {\n            description: localDescription,\n            id: this.id\n        };\n    };\n    /**\n     * Create an offer and set it on the {@link PeerConnectionV2}.\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype.offer = function () {\n        var _this = this;\n        if (this._needsAnswer || this._isRestartingIce) {\n            this._shouldOffer = true;\n            return Promise.resolve();\n        }\n        return this.bracket('offering', function (key) {\n            _this.transition('updating', key);\n            var promise = _this._needsAnswer || _this._isRestartingIce ? Promise.resolve() : _this._offer();\n            return promise.then(function () {\n                _this.tryTransition('open', key);\n            }, function (error) {\n                _this.tryTransition('open', key);\n                throw error;\n            });\n        });\n    };\n    /**\n     * Remove a {@link DataTrackSender} from the {@link PeerConnectionV2}.\n     * @param {DataTrackSender} dataTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.removeDataTrackSender = function (dataTrackSender) {\n        var dataChannel = this._dataChannels.get(dataTrackSender);\n        if (dataChannel) {\n            dataTrackSender.removeDataChannel(dataChannel);\n            this._dataChannels.delete(dataTrackSender);\n            dataChannel.close();\n        }\n    };\n    /**\n     * Remove the {@link MediaTrackSender} from the {@link PeerConnectionV2}.\n     * @param {MediaTrackSender} mediaTrackSender\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.removeMediaTrackSender = function (mediaTrackSender) {\n        var sender = this._rtpSenders.get(mediaTrackSender);\n        if (!sender) {\n            return;\n        }\n        if (this._peerConnection.signalingState !== 'closed') {\n            this._peerConnection.removeTrack(sender);\n        }\n        mediaTrackSender.removeSender(sender);\n        // clean up any pending publisher hints associated with this mediaTrackSender.\n        if (this._mediaTrackSenderToPublisherHints.has(mediaTrackSender)) {\n            var queuedHint = this._mediaTrackSenderToPublisherHints.get(mediaTrackSender);\n            queuedHint.deferred.resolve('UNKNOWN_TRACK');\n            this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n        }\n        this._rtpNewSenders.delete(sender);\n        this._rtpSenders.delete(mediaTrackSender);\n    };\n    /**\n     * Set the RTCConfiguration on the underlying RTCPeerConnection.\n     * @param {RTCConfiguration} configuration\n     * @returns {void}\n     */\n    PeerConnectionV2.prototype.setConfiguration = function (configuration) {\n        if (typeof this._peerConnection.setConfiguration === 'function') {\n            this._peerConnection.setConfiguration(getConfiguration(configuration));\n        }\n    };\n    /**\n     * Set the ICE reconnect timeout period.\n     * @param {number} period - Period in milliseconds.\n     * @returns {this}\n     */\n    PeerConnectionV2.prototype.setIceReconnectTimeout = function (period) {\n        this._iceReconnectTimeout.setDelay(period);\n        this._log.debug('Updated ICE reconnection timeout period:', this._iceReconnectTimeout.delay);\n        return this;\n    };\n    /**\n     * Update the {@link PeerConnectionV2}.\n     * @param {object} peerConnectionState\n     * @returns {Promise<void>}\n     */\n    PeerConnectionV2.prototype.update = function (peerConnectionState) {\n        var _this = this;\n        return this.bracket('updating', function (key) {\n            if (_this.state === 'closed') {\n                return Promise.resolve();\n            }\n            _this.transition('updating', key);\n            var updates = [];\n            if (peerConnectionState.ice) {\n                updates.push(_this._updateIce(peerConnectionState.ice));\n            }\n            if (peerConnectionState.description) {\n                updates.push(_this._updateDescription(peerConnectionState.description));\n            }\n            return Promise.all(updates).then(function () {\n                _this.tryTransition('open', key);\n            }, function (error) {\n                _this.tryTransition('open', key);\n                throw error;\n            });\n        });\n    };\n    /**\n     * Get the {@link PeerConnectionV2}'s media statistics.\n     * @returns {Promise<StandardizedStatsResponse>}\n     */\n    PeerConnectionV2.prototype.getStats = function () {\n        var _this = this;\n        return getStatistics(this._peerConnection, { log: this._log }).then(function (response) { return rewriteTrackIds(_this, response); });\n    };\n    return PeerConnectionV2;\n}(StateMachine));\nfunction rewriteLocalTrackId(pcv2, stats) {\n    var trackId = pcv2._getMediaTrackSenderId(stats.trackId);\n    return Object.assign(stats, { trackId: trackId });\n}\nfunction rewriteTrackId(pcv2, stats) {\n    var receiver = __spreadArray([], __read(pcv2._mediaTrackReceivers), false).find(function (receiver) { return receiver.track.id === stats.trackId; });\n    var trackId = receiver ? receiver.id : null;\n    return Object.assign(stats, { trackId: trackId });\n}\nfunction rewriteTrackIds(pcv2, response) {\n    return Object.assign(response, {\n        remoteAudioTrackStats: response.remoteAudioTrackStats.map(function (stats) { return rewriteTrackId(pcv2, stats); }),\n        remoteVideoTrackStats: response.remoteVideoTrackStats.map(function (stats) { return rewriteTrackId(pcv2, stats); }),\n        localAudioTrackStats: response.localAudioTrackStats.map(function (stats) { return rewriteLocalTrackId(pcv2, stats); }),\n        localVideoTrackStats: response.localVideoTrackStats.map(function (stats) { return rewriteLocalTrackId(pcv2, stats); }),\n    });\n}\n/**\n * @event PeerConnectionV2#candidates\n * @param {object} candidates\n */\n/**\n * @event PeerConnectionV2#connectionStateChanged\n */\n/**\n * @event PeerConnectionV2#description\n * @param {object} description\n */\n/**\n * @event PeerConnectionV2#iceConnectionStateChanged\n */\n/**\n * @event PeerConnectionV2#trackAdded\n * @param {DataTrackReceiver|MediaTrackReceiver} trackReceiver\n */\nfunction getUfrag(description) {\n    if (description.sdp) {\n        var match = description.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);\n        if (match) {\n            return match[1];\n        }\n    }\n    return null;\n}\n/**\n * Construct a {@link RTCConfiguration} for the {@link PeerConnectionV2} combining the provided configuration object with the default values.\n * Default values are:\n * - bundlePolicy: 'max-bundle'\n * - rtcpMuxPolicy: 'require'\n * @param {RTCConfiguration} [configuration={}] - Optional RTCConfiguration object\n * @returns {RTCConfiguration}\n */\nfunction getConfiguration(configuration) {\n    if (configuration === void 0) { configuration = {}; }\n    return Object.assign({\n        bundlePolicy: 'max-bundle',\n        rtcpMuxPolicy: 'require'\n    }, configuration);\n}\n/**\n * Whether the MediaStreamTrack of the given RTCRTPSender is a non-ended\n * MediaStreamTrack of a given kind.\n * @private\n * @param {string} kind\n * @param {RTCRtpSender} sender\n * @return {boolean}\n */\nfunction isSenderOfKind(kind, sender) {\n    var track = sender.track;\n    return track && track.kind === kind && track.readyState !== 'ended';\n}\n/**\n * Preferred codecs.\n * @typedef {object} PreferredCodecs\n * @property {Array<AudioCodec>} audio\n * @property {Array<VideoCodec>} video\n */\nfunction filterOutMediaStreamIds(sdp) {\n    return sdp.replace(/a=msid:[^ ]+ /g, 'a=msid:- ');\n}\n/**\n * Whether an RTCRtpTransceiver can be recycled.\n * @param {RTCRtpTransceiver} transceiver\n * @returns {boolean}\n */\nfunction shouldRecycleTransceiver(transceiver, pcv2) {\n    return !transceiver.stopped\n        && !pcv2._replaceTrackPromises.has(transceiver)\n        && ['inactive', 'recvonly'].includes(transceiver.direction);\n}\n/**\n * Take a recycled RTCRtpTransceiver if available.\n * @param {PeerConnectionV2} pcv2\n * @param {Track.Kind} kind\n * @returns {?RTCRtpTransceiver}\n */\nfunction takeRecycledTransceiver(pcv2, kind) {\n    var preferredCodecs = {\n        audio: pcv2._preferredAudioCodecs.map(function (_a) {\n            var codec = _a.codec;\n            return codec.toLowerCase();\n        }),\n        video: pcv2._preferredVideoCodecs.map(function (_a) {\n            var codec = _a.codec;\n            return codec.toLowerCase();\n        })\n    }[kind];\n    var recycledTransceivers = pcv2._recycledTransceivers[kind];\n    var localCodec = preferredCodecs.find(function (codec) { return pcv2._localCodecs.has(codec); });\n    if (!localCodec) {\n        return recycledTransceivers.shift();\n    }\n    var transceiver = recycledTransceivers.find(function (transceiver) {\n        var remoteCodecMap = pcv2._remoteCodecMaps.get(transceiver.mid);\n        return remoteCodecMap && remoteCodecMap.has(localCodec);\n    });\n    if (transceiver) {\n        recycledTransceivers.splice(recycledTransceivers.indexOf(transceiver), 1);\n    }\n    return transceiver;\n}\n/**\n * Update the set of locally supported {@link Codec}s.\n * @param pcv2\n * @returns {void}\n */\nfunction updateLocalCodecs(pcv2) {\n    var description = pcv2._peerConnection.localDescription;\n    if (!description || !description.sdp) {\n        return;\n    }\n    getMediaSections(description.sdp).forEach(function (section) {\n        var codecMap = createCodecMapForMediaSection(section);\n        codecMap.forEach(function (pts, codec) { return pcv2._localCodecs.add(codec); });\n    });\n}\n/**\n * Update the {@link Codec} maps for all m= sections in the remote {@link RTCSessionDescription}s.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction updateRemoteCodecMaps(pcv2) {\n    var description = pcv2._peerConnection.remoteDescription;\n    if (!description || !description.sdp) {\n        return;\n    }\n    getMediaSections(description.sdp).forEach(function (section) {\n        var matched = section.match(/^a=mid:(.+)$/m);\n        if (!matched || !matched[1]) {\n            return;\n        }\n        var mid = matched[1];\n        var codecMap = createCodecMapForMediaSection(section);\n        pcv2._remoteCodecMaps.set(mid, codecMap);\n    });\n}\n/**\n * Update the list of recycled RTCRtpTransceivers.\n * @param {PeerConnectionV2} pcv2\n */\nfunction updateRecycledTransceivers(pcv2) {\n    pcv2._recycledTransceivers.audio = [];\n    pcv2._recycledTransceivers.video = [];\n    pcv2._peerConnection.getTransceivers().forEach(function (transceiver) {\n        if (shouldRecycleTransceiver(transceiver, pcv2)) {\n            var track = transceiver.receiver.track;\n            pcv2._recycledTransceivers[track.kind].push(transceiver);\n        }\n    });\n}\n/**\n * Perform certain updates after an SDP negotiation is completed.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction negotiationCompleted(pcv2) {\n    updateRecycledTransceivers(pcv2);\n    updateLocalCodecs(pcv2);\n    updateRemoteCodecMaps(pcv2);\n    updateEncodingParameters(pcv2).then(function () {\n        // if there any any publisher hints queued, apply them now.\n        pcv2._handleQueuedPublisherHints();\n    });\n}\n/**\n * Update the RTCRtpEncodingParameters of all active RTCRtpSenders.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction updateEncodingParameters(pcv2) {\n    var _a = pcv2._encodingParameters, maxAudioBitrate = _a.maxAudioBitrate, maxVideoBitrate = _a.maxVideoBitrate;\n    var maxBitrates = new Map([\n        ['audio', maxAudioBitrate],\n        ['video', maxVideoBitrate]\n    ]);\n    var promises = [];\n    pcv2._peerConnection.getSenders().filter(function (sender) { return sender.track; }).forEach(function (sender) {\n        var maxBitrate = maxBitrates.get(sender.track.kind);\n        var params = sender.getParameters();\n        if (maxBitrate === null || maxBitrate === 0) {\n            removeMaxBitrate(params);\n        }\n        else if (pcv2._isChromeScreenShareTrack(sender.track)) {\n            // NOTE(mpatwardhan): Sometimes (JSDK-2557) chrome does not send any bytes on screen track if MaxBitRate is set on it via setParameters,\n            // To workaround this issue we will not apply maxBitrate if the track appears to be a screen share track created by chrome\n            pcv2._log.warn(\"Not setting maxBitrate for \".concat(sender.track.kind, \" Track \").concat(sender.track.id, \" because it appears to be screen share track: \").concat(sender.track.label));\n        }\n        else {\n            setMaxBitrate(params, maxBitrate);\n        }\n        if (!isFirefox && params.encodings.length > 0) {\n            if (sender.track.kind === 'audio') {\n                // NOTE(mmalavalli): \"priority\" is a per-sender property and not\n                // a per-encoding-layer property. So, we set the value only on the first\n                // encoding layer. Any attempt to set the value on subsequent encoding\n                // layers (in the case of simulcast) will result in the Promise returned\n                // by RTCRtpSender.setParameters() being rejected. With this, audio encoding\n                // is prioritized the most.\n                params.encodings[0].priority = 'high';\n            }\n            else if (pcv2._isChromeScreenShareTrack(sender.track)) {\n                // NOTE(mmalavalli): Screen share encodings are prioritized more than those\n                // of the camera.\n                params.encodings[0].priority = 'medium';\n            }\n            if (pcv2._enableDscp) {\n                // NOTE(mmalavalli): \"networkPriority\" is a per-sender property and not\n                // a per-encoding-layer property. So, we set the value only on the first\n                // encoding layer. Any attempt to set the value on subsequent encoding\n                // layers (in the case of simulcast) will result in the Promise returned\n                // by RTCRtpSender.setParameters() being rejected.\n                params.encodings[0].networkPriority = 'high';\n            }\n        }\n        // when a sender is reused, delete any active encodings set by server.\n        var trackReplaced = pcv2._rtpNewSenders.has(sender);\n        pcv2._maybeUpdateEncodings(sender.track, params.encodings, trackReplaced);\n        pcv2._rtpNewSenders.delete(sender);\n        var promise = sender.setParameters(params).catch(function (error) {\n            pcv2._log.warn(\"Error while setting encodings parameters for \".concat(sender.track.kind, \" Track \").concat(sender.track.id, \": \").concat(error.message || error.name));\n        });\n        promises.push(promise);\n    });\n    return Promise.all(promises);\n}\n/**\n * Remove maxBitrate from the RTCRtpSendParameters' encodings.\n * @param {RTCRtpSendParameters} params\n * @returns {void}\n */\nfunction removeMaxBitrate(params) {\n    if (Array.isArray(params.encodings)) {\n        params.encodings.forEach(function (encoding) { return delete encoding.maxBitrate; });\n    }\n}\n/**\n * Set the given maxBitrate in the RTCRtpSendParameters' encodings.\n * @param {RTCRtpSendParameters} params\n * @param {number} maxBitrate\n * @returns {void}\n */\nfunction setMaxBitrate(params, maxBitrate) {\n    if (isFirefox) {\n        params.encodings = [{ maxBitrate: maxBitrate }];\n    }\n    else {\n        params.encodings.forEach(function (encoding) {\n            encoding.maxBitrate = maxBitrate;\n        });\n    }\n}\nmodule.exports = PeerConnectionV2;\n\n},{\"../../data/receiver\":5,\"../../media/track/receiver\":44,\"../../statemachine\":103,\"../../util\":147,\"../../util/backoff\":137,\"../../util/constants\":140,\"../../util/log\":151,\"../../util/sdp\":155,\"../../util/sdp/issue8329\":156,\"../../util/sdp/trackmatcher\":158,\"../../util/timeout\":161,\"../../util/twilio-video-errors\":162,\"../../webrtc\":173,\"../../webrtc/util\":185,\"./icebox\":83,\"./iceconnectionmonitor.js\":84}],92:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar guessBrowser = require('../../webrtc/util').guessBrowser;\nvar PeerConnectionV2 = require('./peerconnection');\nvar MediaTrackSender = require('../../media/track/sender');\nvar QueueingEventEmitter = require('../../queueingeventemitter');\nvar util = require('../../util');\nvar MediaConnectionError = require('../../util/twilio-video-errors').MediaConnectionError;\nvar isFirefox = guessBrowser() === 'firefox';\n/**\n * {@link PeerConnectionManager} manages multiple {@link PeerConnectionV2}s.\n * @extends QueueingEventEmitter\n * @emits PeerConnectionManager#candidates\n * @emits PeerConnectionManager#connectionStateChanged\n * @emits PeerConnectionManager#description\n * @emits PeerConnectionManager#iceConnectionStateChanged\n * @emits PeerConnectionManager#trackAdded\n */\nvar PeerConnectionManager = /** @class */ (function (_super) {\n    __extends(PeerConnectionManager, _super);\n    /**\n     * Construct {@link PeerConnectionManager}.\n     * @param {EncodingParametersImpl} encodingParameters\n     * @param {PreferredCodecs} preferredCodecs\n     * @param {object} options\n     */\n    function PeerConnectionManager(encodingParameters, preferredCodecs, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            audioContextFactory: isFirefox\n                ? require('../../webaudio/audiocontext')\n                : null,\n            PeerConnectionV2: PeerConnectionV2\n        }, options);\n        var audioContext = options.audioContextFactory\n            ? options.audioContextFactory.getOrCreate(_this)\n            : null;\n        // NOTE(mroberts): If we're using an AudioContext, we don't need to specify\n        // `offerToReceiveAudio` in RTCOfferOptions.\n        var offerOptions = audioContext\n            ? { offerToReceiveVideo: true }\n            : { offerToReceiveAudio: true, offerToReceiveVideo: true };\n        Object.defineProperties(_this, {\n            _audioContextFactory: {\n                value: options.audioContextFactory\n            },\n            _closedPeerConnectionIds: {\n                value: new Set()\n            },\n            _configuration: {\n                writable: true,\n                value: null\n            },\n            _configurationDeferred: {\n                writable: true,\n                value: util.defer()\n            },\n            _connectionState: {\n                value: 'new',\n                writable: true\n            },\n            _dummyAudioTrackSender: {\n                value: audioContext\n                    ? new MediaTrackSender(createDummyAudioMediaStreamTrack(audioContext))\n                    : null\n            },\n            _encodingParameters: {\n                value: encodingParameters\n            },\n            _iceConnectionState: {\n                writable: true,\n                value: 'new'\n            },\n            _dataTrackSenders: {\n                writable: true,\n                value: new Set()\n            },\n            _lastConnectionState: {\n                value: 'new',\n                writable: true\n            },\n            _lastIceConnectionState: {\n                writable: true,\n                value: 'new'\n            },\n            _mediaTrackSenders: {\n                writable: true,\n                value: new Set()\n            },\n            _offerOptions: {\n                value: offerOptions\n            },\n            _peerConnections: {\n                value: new Map()\n            },\n            _preferredCodecs: {\n                value: preferredCodecs\n            },\n            _sessionTimeout: {\n                value: null,\n                writable: true\n            },\n            _PeerConnectionV2: {\n                value: options.PeerConnectionV2\n            }\n        });\n        return _this;\n    }\n    PeerConnectionManager.prototype.setEffectiveAdaptiveSimulcast = function (effectiveAdaptiveSimulcast) {\n        this._peerConnections.forEach(function (pc) { return pc.setEffectiveAdaptiveSimulcast(effectiveAdaptiveSimulcast); });\n        this._preferredCodecs.video.forEach(function (cs) {\n            if ('adaptiveSimulcast' in cs) {\n                cs.adaptiveSimulcast = effectiveAdaptiveSimulcast;\n            }\n        });\n    };\n    Object.defineProperty(PeerConnectionManager.prototype, \"connectionState\", {\n        /**\n         * A summarized RTCPeerConnectionState across all the\n         * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n         * @property {RTCPeerConnectionState}\n         */\n        get: function () {\n            return this._connectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PeerConnectionManager.prototype, \"iceConnectionState\", {\n        /**\n         * A summarized RTCIceConnectionState across all the\n         * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n         * @property {RTCIceConnectionState}\n         */\n        get: function () {\n            return this._iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Close the {@link PeerConnectionV2}s which are no longer relevant.\n     * @param {Array<object>} peerConnectionStates\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype._closeAbsentPeerConnections = function (peerConnectionStates) {\n        var peerConnectionIds = new Set(peerConnectionStates.map(function (peerConnectionState) { return peerConnectionState.id; }));\n        this._peerConnections.forEach(function (peerConnection) {\n            if (!peerConnectionIds.has(peerConnection.id)) {\n                peerConnection._close();\n            }\n        });\n        return this;\n    };\n    /**\n     * Get the {@link PeerConnectionManager}'s configuration.\n     * @private\n     * @returns {Promise<object>}\n     */\n    PeerConnectionManager.prototype._getConfiguration = function () {\n        return this._configurationDeferred.promise;\n    };\n    /**\n     * Get or create a {@link PeerConnectionV2}.\n     * @private\n     * @param {string} id\n     * @param {object} [configuration]\n     * @returns {PeerConnectionV2}\n     */\n    PeerConnectionManager.prototype._getOrCreate = function (id, configuration) {\n        var _this = this;\n        var self = this;\n        var peerConnection = this._peerConnections.get(id);\n        if (!peerConnection) {\n            var PeerConnectionV2_1 = this._PeerConnectionV2;\n            var options = Object.assign({\n                dummyAudioMediaStreamTrack: this._dummyAudioTrackSender\n                    ? this._dummyAudioTrackSender.track\n                    : null,\n                offerOptions: this._offerOptions\n            }, this._sessionTimeout ? {\n                sessionTimeout: this._sessionTimeout\n            } : {}, configuration);\n            try {\n                peerConnection = new PeerConnectionV2_1(id, this._encodingParameters, this._preferredCodecs, options);\n            }\n            catch (e) {\n                throw new MediaConnectionError();\n            }\n            this._peerConnections.set(peerConnection.id, peerConnection);\n            peerConnection.on('candidates', this.queue.bind(this, 'candidates'));\n            peerConnection.on('description', this.queue.bind(this, 'description'));\n            peerConnection.on('trackAdded', this.queue.bind(this, 'trackAdded'));\n            peerConnection.on('stateChanged', function stateChanged(state) {\n                if (state === 'closed') {\n                    peerConnection.removeListener('stateChanged', stateChanged);\n                    self._dataTrackSenders.forEach(function (sender) { return peerConnection.removeDataTrackSender(sender); });\n                    self._mediaTrackSenders.forEach(function (sender) { return peerConnection.removeMediaTrackSender(sender); });\n                    self._peerConnections.delete(peerConnection.id);\n                    self._closedPeerConnectionIds.add(peerConnection.id);\n                    updateConnectionState(self);\n                    updateIceConnectionState(self);\n                }\n            });\n            peerConnection.on('connectionStateChanged', function () { return updateConnectionState(_this); });\n            peerConnection.on('iceConnectionStateChanged', function () { return updateIceConnectionState(_this); });\n            this._dataTrackSenders.forEach(peerConnection.addDataTrackSender, peerConnection);\n            this._mediaTrackSenders.forEach(peerConnection.addMediaTrackSender, peerConnection);\n            updateIceConnectionState(this);\n        }\n        return peerConnection;\n    };\n    /**\n     * Close all the {@link PeerConnectionV2}s in this {@link PeerConnectionManager}.\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.close = function () {\n        this._peerConnections.forEach(function (peerConnection) {\n            peerConnection.close();\n        });\n        if (this._dummyAudioTrackSender) {\n            this._dummyAudioTrackSender.stop();\n        }\n        if (this._audioContextFactory) {\n            this._audioContextFactory.release(this);\n        }\n        updateIceConnectionState(this);\n        return this;\n    };\n    /**\n     * Create a new {@link PeerConnectionV2} on this {@link PeerConnectionManager}.\n     * Then, create a new offer with the newly-created {@link PeerConnectionV2}.\n     * @return {Promise<this>}\n     */\n    PeerConnectionManager.prototype.createAndOffer = function () {\n        var _this = this;\n        return this._getConfiguration().then(function (configuration) {\n            var id;\n            do {\n                id = util.makeUUID();\n            } while (_this._peerConnections.has(id));\n            return _this._getOrCreate(id, configuration);\n        }).then(function (peerConnection) {\n            return peerConnection.offer();\n        }).then(function () {\n            return _this;\n        });\n    };\n    /**\n     * Get the {@link DataTrackReceiver}s and {@link MediaTrackReceiver}s of all\n     * the {@link PeerConnectionV2}s.\n     * @returns {Array<DataTrackReceiver|MediaTrackReceiver>} trackReceivers\n     */\n    PeerConnectionManager.prototype.getTrackReceivers = function () {\n        return util.flatMap(this._peerConnections, function (peerConnection) { return peerConnection.getTrackReceivers(); });\n    };\n    /**\n     * Get the states of all {@link PeerConnectionV2}s.\n     * @returns {Array<object>}\n     */\n    PeerConnectionManager.prototype.getStates = function () {\n        var peerConnectionStates = [];\n        this._peerConnections.forEach(function (peerConnection) {\n            var peerConnectionState = peerConnection.getState();\n            if (peerConnectionState) {\n                peerConnectionStates.push(peerConnectionState);\n            }\n        });\n        return peerConnectionStates;\n    };\n    /**\n     * Set the {@link PeerConnectionManager}'s configuration.\n     * @param {object} configuration\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.setConfiguration = function (configuration) {\n        if (this._configuration) {\n            this._configurationDeferred = util.defer();\n            this._peerConnections.forEach(function (peerConnection) {\n                peerConnection.setConfiguration(configuration);\n            });\n        }\n        this._configuration = configuration;\n        this._configurationDeferred.resolve(configuration);\n        return this;\n    };\n    /**\n     * Set the ICE reconnect timeout period for all {@link PeerConnectionV2}s.\n     * @param {number} period - Period in milliseconds.\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.setIceReconnectTimeout = function (period) {\n        if (this._sessionTimeout === null) {\n            this._peerConnections.forEach(function (peerConnection) {\n                peerConnection.setIceReconnectTimeout(period);\n            });\n            this._sessionTimeout = period;\n        }\n        return this;\n    };\n    /**\n     * Set the {@link DataTrackSender}s and {@link MediaTrackSender}s on the\n     * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n     * @param {Array<DataTrackSender|MediaTrackSender>} trackSenders\n     * @returns {this}\n     */\n    PeerConnectionManager.prototype.setTrackSenders = function (trackSenders) {\n        var dataTrackSenders = new Set(trackSenders.filter(function (trackSender) { return trackSender.kind === 'data'; }));\n        var mediaTrackSenders = new Set(trackSenders\n            .filter(function (trackSender) { return trackSender && (trackSender.kind === 'audio' || trackSender.kind === 'video'); }));\n        var changes = getTrackSenderChanges(this, dataTrackSenders, mediaTrackSenders);\n        this._dataTrackSenders = dataTrackSenders;\n        this._mediaTrackSenders = mediaTrackSenders;\n        applyTrackSenderChanges(this, changes);\n        return this;\n    };\n    /**\n     * Update the {@link PeerConnectionManager}.\n     * @param {Array<object>} peerConnectionStates\n     * @param {boolean} [synced=false]\n     * @returns {Promise<this>}\n     */\n    PeerConnectionManager.prototype.update = function (peerConnectionStates, synced) {\n        var _this = this;\n        if (synced === void 0) { synced = false; }\n        if (synced) {\n            this._closeAbsentPeerConnections(peerConnectionStates);\n        }\n        return this._getConfiguration().then(function (configuration) {\n            return Promise.all(peerConnectionStates.map(function (peerConnectionState) {\n                if (_this._closedPeerConnectionIds.has(peerConnectionState.id)) {\n                    return null;\n                }\n                var peerConnection = _this._getOrCreate(peerConnectionState.id, configuration);\n                return peerConnection.update(peerConnectionState);\n            }));\n        }).then(function () {\n            return _this;\n        });\n    };\n    /**\n     * Get the {@link PeerConnectionManager}'s media statistics.\n     * @returns {Promise.<Map<PeerConnectionV2#id, StandardizedStatsResponse>>}\n     */\n    PeerConnectionManager.prototype.getStats = function () {\n        var peerConnections = Array.from(this._peerConnections.values());\n        return Promise.all(peerConnections.map(function (peerConnection) { return peerConnection.getStats().then(function (response) { return [\n            peerConnection.id,\n            response\n        ]; }); })).then(function (responses) { return new Map(responses); });\n    };\n    return PeerConnectionManager;\n}(QueueingEventEmitter));\n/**\n * Create a dummy audio MediaStreamTrack with the given AudioContext.\n * @private\n * @param {AudioContext} audioContext\n * @return {MediaStreamTrack}\n */\nfunction createDummyAudioMediaStreamTrack(audioContext) {\n    var mediaStreamDestination = audioContext.createMediaStreamDestination();\n    return mediaStreamDestination.stream.getAudioTracks()[0];\n}\n/**\n * @event {PeerConnectionManager#candidates}\n * @param {object} candidates\n */\n/**\n * @event {PeerConnectionManager#connectionStateChanged}\n */\n/**\n * @event {PeerConnectionManager#description}\n * @param {object} description\n */\n/**\n * @event {PeerConnectionManager#iceConnectionStateChanged}\n */\n/**\n * @event {PeerConnectionManager#trackAdded}\n * @param {MediaStreamTrack|DataTrackReceiver} mediaStreamTrackOrDataTrackReceiver\n */\n/**\n * Apply {@link TrackSenderChanges}.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {TrackSenderChanges} changes\n * @returns {void}\n */\nfunction applyTrackSenderChanges(peerConnectionManager, changes) {\n    if (changes.data.add.size\n        || changes.data.remove.size\n        || changes.media.add.size\n        || changes.media.remove.size) {\n        peerConnectionManager._peerConnections.forEach(function (peerConnection) {\n            changes.data.remove.forEach(peerConnection.removeDataTrackSender, peerConnection);\n            changes.media.remove.forEach(peerConnection.removeMediaTrackSender, peerConnection);\n            changes.data.add.forEach(peerConnection.addDataTrackSender, peerConnection);\n            changes.media.add.forEach(peerConnection.addMediaTrackSender, peerConnection);\n            if (changes.media.add.size\n                || changes.media.remove.size\n                || (changes.data.add.size && !peerConnection.isApplicationSectionNegotiated)) {\n                peerConnection.offer();\n            }\n        });\n    }\n}\n/**\n * @interface DataTrackSenderChanges\n * @property {Set<DataTrackSender>} add\n * @property {Set<DataTrackSender>} remove\n */\n/**\n * Get the {@Link DataTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array<DataTrackSender>} dataTrackSenders\n * @returns {DataTrackSenderChanges} changes\n */\nfunction getDataTrackSenderChanges(peerConnectionManager, dataTrackSenders) {\n    var dataTrackSendersToAdd = util.difference(dataTrackSenders, peerConnectionManager._dataTrackSenders);\n    var dataTrackSendersToRemove = util.difference(peerConnectionManager._dataTrackSenders, dataTrackSenders);\n    return {\n        add: dataTrackSendersToAdd,\n        remove: dataTrackSendersToRemove\n    };\n}\n/**\n * @interface TrackSenderChanges\n * @property {DataTrackSenderChanges} data\n * @property {MediaTrackSenderChanges} media\n */\n/**\n * Get {@link DataTrackSender} and {@link MediaTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array<DataTrackSender>} dataTrackSenders\n * @param {Array<MediaTrackSender>} mediaTrackSenders\n * @returns {TrackSenderChanges} changes\n */\nfunction getTrackSenderChanges(peerConnectionManager, dataTrackSenders, mediaTrackSenders) {\n    return {\n        data: getDataTrackSenderChanges(peerConnectionManager, dataTrackSenders),\n        media: getMediaTrackSenderChanges(peerConnectionManager, mediaTrackSenders)\n    };\n}\n/**\n * @interface MediaTrackSenderChanges\n * @property {Set<MediaTrackSender>} add\n * @property {Set<MediaTrackSender>} remove\n */\n/**\n * Get the {@link MediaTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array<MediaTrackSender>} mediaTrackSenders\n * @returns {MediaTrackSenderChanges} changes\n */\nfunction getMediaTrackSenderChanges(peerConnectionManager, mediaTrackSenders) {\n    var mediaTrackSendersToAdd = util.difference(mediaTrackSenders, peerConnectionManager._mediaTrackSenders);\n    var mediaTrackSendersToRemove = util.difference(peerConnectionManager._mediaTrackSenders, mediaTrackSenders);\n    return {\n        add: mediaTrackSendersToAdd,\n        remove: mediaTrackSendersToRemove\n    };\n}\n/**\n * This object maps RTCIceConnectionState and RTCPeerConnectionState values to a \"rank\".\n */\nvar toRank = {\n    new: 0,\n    checking: 1,\n    connecting: 2,\n    connected: 3,\n    completed: 4,\n    disconnected: -1,\n    failed: -2,\n    closed: -3\n};\n/**\n * This object maps \"rank\" back to RTCIceConnectionState or RTCPeerConnectionState values.\n */\nvar fromRank;\n/**\n * `Object.keys` is not supported in older browsers, so we can't just\n * synchronously call it in this module; we need to defer invoking it until we\n * know we're in a modern environment (i.e., anything that supports WebRTC).\n * @returns {object} fromRank\n */\nfunction createFromRank() {\n    return Object.keys(toRank).reduce(function (fromRank, state) {\n        var _a;\n        return Object.assign(fromRank, (_a = {}, _a[toRank[state]] = state, _a));\n    }, {});\n}\n/**\n * Summarize RTCIceConnectionStates or RTCPeerConnectionStates.\n * @param {Array<RTCIceConnectionState>|Array<RTCPeerConnectionState>} states\n * @returns {RTCIceConnectionState|RTCPeerConnectionState} summary\n */\nfunction summarizeIceOrPeerConnectionStates(states) {\n    if (!states.length) {\n        return 'new';\n    }\n    fromRank = fromRank || createFromRank();\n    return states.reduce(function (state1, state2) {\n        return fromRank[Math.max(toRank[state1], toRank[state2])];\n    });\n}\n/**\n * Update the {@link PeerConnectionManager}'s `iceConnectionState`, and emit an\n * \"iceConnectionStateChanged\" event, if necessary.\n * @param {PeerConnectionManager} pcm\n * @returns {void}\n */\nfunction updateIceConnectionState(pcm) {\n    pcm._lastIceConnectionState = pcm.iceConnectionState;\n    pcm._iceConnectionState = summarizeIceOrPeerConnectionStates(__spreadArray([], __read(pcm._peerConnections.values()), false).map(function (pcv2) { return pcv2.iceConnectionState; }));\n    if (pcm.iceConnectionState !== pcm._lastIceConnectionState) {\n        pcm.emit('iceConnectionStateChanged');\n    }\n}\n/**\n * Update the {@link PeerConnectionManager}'s `connectionState`, and emit a\n * \"connectionStateChanged\" event, if necessary.\n * @param {PeerConnectionManager} pcm\n * @returns {void}\n */\nfunction updateConnectionState(pcm) {\n    pcm._lastConnectionState = pcm.connectionState;\n    pcm._connectionState = summarizeIceOrPeerConnectionStates(__spreadArray([], __read(pcm._peerConnections.values()), false).map(function (pcv2) { return pcv2.connectionState; }));\n    if (pcm.connectionState !== pcm._lastConnectionState) {\n        pcm.emit('connectionStateChanged');\n    }\n}\nmodule.exports = PeerConnectionManager;\n\n},{\"../../media/track/sender\":53,\"../../queueingeventemitter\":69,\"../../util\":147,\"../../util/twilio-video-errors\":162,\"../../webaudio/audiocontext\":168,\"../../webrtc/util\":185,\"./peerconnection\":91}],93:[function(require,module,exports){\n/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar messageId = 1;\nvar PublisherHintsSignaling = /** @class */ (function (_super) {\n    __extends(PublisherHintsSignaling, _super);\n    /**\n     * Construct a {@link RenderHintsSignaling}.\n     */\n    function PublisherHintsSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'publisher_hints', options) || this;\n        _this.on('ready', function (transport) {\n            _this._log.debug('publisher_hints transport ready:', transport);\n            transport.on('message', function (message) {\n                _this._log.debug('Incoming: ', message);\n                switch (message.type) {\n                    case 'publisher_hints':\n                        if (message.publisher && message.publisher.hints && message.publisher.id) {\n                            _this._processPublisherHints(message.publisher.hints, message.publisher.id);\n                        }\n                        break;\n                    default:\n                        _this._log.warn('Unknown message type: ', message.type);\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    PublisherHintsSignaling.prototype.sendTrackReplaced = function (_a) {\n        var trackSid = _a.trackSid;\n        if (!this._transport) {\n            return;\n        }\n        var payLoad = {\n            type: 'client_reset',\n            track: trackSid,\n            id: messageId++\n        };\n        this._log.debug('Outgoing: ', payLoad);\n        this._transport.publish(payLoad);\n    };\n    PublisherHintsSignaling.prototype.sendHintResponse = function (_a) {\n        var id = _a.id, hints = _a.hints;\n        if (!this._transport) {\n            return;\n        }\n        var payLoad = {\n            type: 'publisher_hints',\n            id: id,\n            hints: hints\n        };\n        this._log.debug('Outgoing: ', payLoad);\n        this._transport.publish(payLoad);\n    };\n    /**\n     * @private\n     */\n    PublisherHintsSignaling.prototype._processPublisherHints = function (hints, id) {\n        try {\n            this.emit('updated', hints, id);\n        }\n        catch (ex) {\n            this._log.error('error processing hints:', ex);\n        }\n    };\n    return PublisherHintsSignaling;\n}(MediaSignaling));\nmodule.exports = PublisherHintsSignaling;\n\n},{\"./mediasignaling\":88}],94:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RecordingSignaling = require('../recording');\n/**\n * @extends RecordingSignaling\n */\nvar RecordingV2 = /** @class */ (function (_super) {\n    __extends(RecordingV2, _super);\n    /**\n     * Construct a {@link RecordingV2}.\n     */\n    function RecordingV2() {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            _revision: {\n                value: 1,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * Compare the {@link RecordingV2} to a {@link RecordingV2#Representation}\n     * of itself and perform any updates necessary.\n     * @param {RecordingV2#Representation} recording\n     * @returns {this}\n     * @fires RecordingSignaling#updated\n     */\n    RecordingV2.prototype.update = function (recording) {\n        if (recording.revision < this._revision) {\n            return this;\n        }\n        this._revision = recording.revision;\n        return this.enable(recording.is_recording);\n    };\n    return RecordingV2;\n}(RecordingSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link RecordingV2}\n * @typedef {object} RecordingV2#Representation\n * @property {boolean} enabled\n * @property {number} revision\n */\nmodule.exports = RecordingV2;\n\n},{\"../recording\":76}],95:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteParticipantSignaling = require('../remoteparticipant');\nvar RemoteTrackPublicationV2 = require('./remotetrackpublication');\n/**\n * @extends RemoteParticipantSignaling\n * @property {?number} revision\n */\nvar RemoteParticipantV2 = /** @class */ (function (_super) {\n    __extends(RemoteParticipantV2, _super);\n    /**\n     * Construct a {@link RemoteParticipantV2}.\n     * @param {object} participantState\n     * @param {function(Track.SID): boolean} getInitialTrackSwitchOffState\n     * @param {function(Track.SID, Track.Priority): boolean} setPriority\n     * @param {function(Track.SID, ClientRenderHint): Promise<void>} setRenderHint\n     * @param {function(Track.SID): void} clearTrackHint\n     * @param {object} [options]\n     */\n    function RemoteParticipantV2(participantState, getInitialTrackSwitchOffState, setPriority, setRenderHint, clearTrackHint, options) {\n        var _this = _super.call(this, participantState.sid, participantState.identity) || this;\n        options = Object.assign({\n            RemoteTrackPublicationV2: RemoteTrackPublicationV2\n        }, options);\n        Object.defineProperties(_this, {\n            _revision: {\n                writable: true,\n                value: null\n            },\n            _RemoteTrackPublicationV2: {\n                value: options.RemoteTrackPublicationV2\n            },\n            _getInitialTrackSwitchOffState: {\n                value: getInitialTrackSwitchOffState\n            },\n            updateSubscriberTrackPriority: {\n                value: function (trackSid, priority) { return setPriority(trackSid, priority); }\n            },\n            updateTrackRenderHint: {\n                value: function (trackSid, renderHint) { return setRenderHint(trackSid, renderHint); }\n            },\n            clearTrackHint: {\n                value: function (trackSid) { return clearTrackHint(trackSid); }\n            },\n            revision: {\n                enumerable: true,\n                get: function () {\n                    return this._revision;\n                }\n            }\n        });\n        return _this.update(participantState);\n    }\n    /**\n     * @private\n     */\n    RemoteParticipantV2.prototype._getOrCreateTrack = function (trackState) {\n        var RemoteTrackPublicationV2 = this._RemoteTrackPublicationV2;\n        var track = this.tracks.get(trackState.sid);\n        if (!track) {\n            var isSwitchedOff = this._getInitialTrackSwitchOffState(trackState.sid);\n            track = new RemoteTrackPublicationV2(trackState, isSwitchedOff);\n            this.addTrack(track);\n        }\n        return track;\n    };\n    /**\n     * Update the {@link RemoteParticipantV2} with the new state.\n     * @param {object} participantState\n     * @returns {this}\n     */\n    RemoteParticipantV2.prototype.update = function (participantState) {\n        var _this = this;\n        if (this.revision !== null && participantState.revision <= this.revision) {\n            return this;\n        }\n        this._revision = participantState.revision;\n        var tracksToKeep = new Set();\n        participantState.tracks.forEach(function (trackState) {\n            var track = _this._getOrCreateTrack(trackState);\n            track.update(trackState);\n            tracksToKeep.add(track);\n        });\n        this.tracks.forEach(function (track) {\n            if (!tracksToKeep.has(track)) {\n                _this.removeTrack(track);\n            }\n        });\n        switch (participantState.state) {\n            case 'disconnected':\n                this.disconnect();\n                break;\n            case 'reconnecting':\n                this.reconnecting();\n                break;\n            case 'connected':\n                this.connect(this.sid, this.identity);\n                break;\n        }\n        return this;\n    };\n    return RemoteParticipantV2;\n}(RemoteParticipantSignaling));\nmodule.exports = RemoteParticipantV2;\n\n},{\"../remoteparticipant\":77,\"./remotetrackpublication\":96}],96:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackPublicationSignaling = require('../remotetrackpublication');\n/**\n * @extends RemoteTrackPublicationSignaling\n */\nvar RemoteTrackPublicationV2 = /** @class */ (function (_super) {\n    __extends(RemoteTrackPublicationV2, _super);\n    /**\n     * Construct a {@link RemoteTrackPublicationV2}.\n     * @param {RemoteTrackPublicationV2#Representation} track\n     * @param {boolean} isSwitchedOff\n     *\n     */\n    function RemoteTrackPublicationV2(track, isSwitchedOff) {\n        return _super.call(this, track.sid, track.name, track.kind, track.enabled, track.priority, isSwitchedOff) || this;\n    }\n    /**\n     * Compare the {@link RemoteTrackPublicationV2} to a\n     * {@link RemoteTrackPublicationV2#Representation} of itself and perform any\n     * updates necessary.\n     * @param {RemoteTrackPublicationV2#Representation} track\n     * @returns {this}\n     * @fires TrackSignaling#updated\n     */\n    RemoteTrackPublicationV2.prototype.update = function (track) {\n        this.enable(track.enabled);\n        this.setPriority(track.priority);\n        return this;\n    };\n    return RemoteTrackPublicationV2;\n}(RemoteTrackPublicationSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link RemoteTrackPublicationV2}.\n * @typedef {LocalTrackPublicationV2#Representation} RemoteTrackPublicationV2#Representation\n * @property {boolean} subscribed\n */\nmodule.exports = RemoteTrackPublicationV2;\n\n},{\"../remotetrackpublication\":78}],97:[function(require,module,exports){\n/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar Timeout = require('../../util/timeout');\nvar isDeepEqual = require('../../util').isDeepEqual;\nvar RENDER_HINT_RESPONSE_TIME_MS = 2000; // time to wait for server response (before resending all hints.)\nvar messageId = 1;\nvar RenderHintsSignaling = /** @class */ (function (_super) {\n    __extends(RenderHintsSignaling, _super);\n    /**\n     * Construct a {@link RenderHintsSignaling}.\n     */\n    function RenderHintsSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'render_hints', options) || this;\n        Object.defineProperties(_this, {\n            _trackSidsToRenderHints: {\n                value: new Map()\n            },\n            _responseTimer: {\n                value: new Timeout(function () {\n                    _this._sendAllHints();\n                    // once timer fires, for next round double the delay.\n                    _this._responseTimer.setDelay(_this._responseTimer.delay * 2);\n                }, RENDER_HINT_RESPONSE_TIME_MS, false),\n            }\n        });\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                _this._log.debug('Incoming: ', message);\n                switch (message.type) {\n                    case 'render_hints':\n                        _this._processHintResults((message && message.subscriber && message.subscriber.hints) || []);\n                        break;\n                    default:\n                        _this._log.warn('Unknown message type: ', message.type);\n                        break;\n                }\n            });\n            // NOTE(mpatwardhan): When transport is set (either 1st time of after vms failover)\n            // resend all track states.\n            _this._sendAllHints();\n        });\n        return _this;\n    }\n    RenderHintsSignaling.prototype._sendAllHints = function () {\n        var _this = this;\n        // to force sending all hints simply mark all tracks as dirty.\n        Array.from(this._trackSidsToRenderHints.keys()).forEach(function (trackSid) {\n            var trackState = _this._trackSidsToRenderHints.get(trackSid);\n            if (trackState.renderDimensions) {\n                trackState.isDimensionDirty = true;\n            }\n            if ('enabled' in trackState) {\n                trackState.isEnabledDirty = true;\n            }\n        });\n        this._sendHints();\n    };\n    RenderHintsSignaling.prototype._processHintResults = function (hintResults) {\n        var _this = this;\n        this._responseTimer.clear();\n        this._responseTimer.setDelay(RENDER_HINT_RESPONSE_TIME_MS);\n        hintResults.forEach(function (hintResult) {\n            if (hintResult.result !== 'OK') {\n                _this._log.debug('Server error processing hint:', hintResult);\n            }\n        });\n        this._sendHints();\n    };\n    RenderHintsSignaling.prototype._sendHints = function () {\n        var _this = this;\n        if (!this._transport || this._responseTimer.isSet) {\n            return;\n        }\n        var hints = [];\n        Array.from(this._trackSidsToRenderHints.keys()).forEach(function (trackSid) {\n            var trackState = _this._trackSidsToRenderHints.get(trackSid);\n            if (trackState.isEnabledDirty || trackState.isDimensionDirty) {\n                var mspHint = {\n                    'track': trackSid,\n                };\n                if (trackState.isEnabledDirty) {\n                    mspHint.enabled = trackState.enabled;\n                    trackState.isEnabledDirty = false;\n                }\n                if (trackState.isDimensionDirty) {\n                    // eslint-disable-next-line camelcase\n                    mspHint.render_dimensions = trackState.renderDimensions;\n                    trackState.isDimensionDirty = false;\n                }\n                hints.push(mspHint);\n            }\n        });\n        if (hints.length > 0) {\n            var payLoad = {\n                type: 'render_hints',\n                subscriber: {\n                    id: messageId++,\n                    hints: hints\n                }\n            };\n            this._log.debug('Outgoing: ', payLoad);\n            this._transport.publish(payLoad);\n            this._responseTimer.start();\n        }\n    };\n    /**\n     * @param {Track.SID} trackSid\n     * @param {ClientRenderHint} renderHint\n     */\n    RenderHintsSignaling.prototype.setTrackHint = function (trackSid, renderHint) {\n        var trackState = this._trackSidsToRenderHints.get(trackSid) || { isEnabledDirty: false, isDimensionDirty: false };\n        if ('enabled' in renderHint && trackState.enabled !== renderHint.enabled) {\n            trackState.enabled = !!renderHint.enabled;\n            trackState.isEnabledDirty = true;\n        }\n        if (renderHint.renderDimensions && !isDeepEqual(renderHint.renderDimensions, trackState.renderDimensions)) {\n            trackState.renderDimensions = renderHint.renderDimensions;\n            trackState.isDimensionDirty = true;\n        }\n        this._trackSidsToRenderHints.set(trackSid, trackState);\n        this._sendHints();\n    };\n    /**\n     * must be called when track is unsubscribed.\n     * @param {Track.SID} trackSid\n     */\n    RenderHintsSignaling.prototype.clearTrackHint = function (trackSid) {\n        this._trackSidsToRenderHints.delete(trackSid);\n    };\n    return RenderHintsSignaling;\n}(MediaSignaling));\nmodule.exports = RenderHintsSignaling;\n\n},{\"../../util\":147,\"../../util/timeout\":161,\"./mediasignaling\":88}],98:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar DominantSpeakerSignaling = require('./dominantspeakersignaling');\nvar TranscriptionSignaling = require('./transcriptionsignaling');\nvar NetworkQualityMonitor = require('./networkqualitymonitor');\nvar NetworkQualitySignaling = require('./networkqualitysignaling');\nvar RecordingV2 = require('./recording');\nvar StatsMonitor = require('../../insights/statsmonitor');\nvar RoomSignaling = require('../room');\nvar RemoteParticipantV2 = require('./remoteparticipant');\nvar TrackPrioritySignaling = require('./trackprioritysignaling');\nvar TrackSwitchOffSignaling = require('./trackswitchoffsignaling');\nvar RenderHintsSignaling = require('./renderhintssignaling');\nvar PublisherHintsSignaling = require('./publisherhintsignaling.js');\nvar _a = require('../../util'), DEFAULT_SESSION_TIMEOUT_SEC = _a.constants.DEFAULT_SESSION_TIMEOUT_SEC, createBandwidthProfilePayload = _a.createBandwidthProfilePayload, defer = _a.defer, flatMap = _a.flatMap, oncePerTick = _a.oncePerTick;\nvar createTwilioError = require('../../util/twilio-video-errors').createTwilioError;\nvar STATS_PUBLISH_INTERVAL_MS = 10000;\nvar STATS_COLLECTION_INTERVAL_MS = 1000;\n/**\n * @extends RoomSignaling\n */\nvar RoomV2 = /** @class */ (function (_super) {\n    __extends(RoomV2, _super);\n    function RoomV2(localParticipant, initialState, transport, peerConnectionManager, options) {\n        var _this = this;\n        initialState.options = Object.assign({\n            session_timeout: DEFAULT_SESSION_TIMEOUT_SEC\n        }, initialState.options);\n        options = Object.assign({\n            DominantSpeakerSignaling: DominantSpeakerSignaling,\n            TranscriptionSignaling: TranscriptionSignaling,\n            NetworkQualityMonitor: NetworkQualityMonitor,\n            NetworkQualitySignaling: NetworkQualitySignaling,\n            RecordingSignaling: RecordingV2,\n            RemoteParticipantV2: RemoteParticipantV2,\n            TrackPrioritySignaling: TrackPrioritySignaling,\n            TrackSwitchOffSignaling: TrackSwitchOffSignaling,\n            bandwidthProfile: null,\n            sessionTimeout: initialState.options.session_timeout * 1000,\n            statsPublishIntervalMs: STATS_PUBLISH_INTERVAL_MS,\n            statsCollectionIntervalMs: STATS_COLLECTION_INTERVAL_MS\n        }, options);\n        localParticipant.setBandwidthProfile(options.bandwidthProfile);\n        var _a = initialState.options, signalingRegion = _a.signaling_region, _b = _a.audio_processors, audioProcessors = _b === void 0 ? [] : _b;\n        localParticipant.setSignalingRegion(signalingRegion);\n        if (audioProcessors.includes('krisp')) {\n            // Note(mpatwardhan): we add rnnoise as allowed_processor to enable testing our pipeline e2e.\n            audioProcessors.push('rnnoise');\n        }\n        localParticipant.setAudioProcessors(audioProcessors);\n        peerConnectionManager.setIceReconnectTimeout(options.sessionTimeout);\n        _this = _super.call(this, localParticipant, initialState.sid, initialState.name, options) || this;\n        var getTrackReceiver = function (id) { return _this._getTrackReceiver(id); };\n        var log = _this._log;\n        Object.defineProperties(_this, {\n            _disconnectedParticipantRevisions: {\n                value: new Map()\n            },\n            _NetworkQualityMonitor: {\n                value: options.NetworkQualityMonitor\n            },\n            _lastBandwidthProfileRevision: {\n                value: localParticipant.bandwidthProfileRevision,\n                writable: true\n            },\n            _mediaStatesWarningsRevision: {\n                value: 0,\n                writable: true\n            },\n            _networkQualityMonitor: {\n                value: null,\n                writable: true\n            },\n            _networkQualityConfiguration: {\n                value: localParticipant.networkQualityConfiguration\n            },\n            _peerConnectionManager: {\n                value: peerConnectionManager\n            },\n            _published: {\n                value: new Map()\n            },\n            _publishedRevision: {\n                value: 0,\n                writable: true\n            },\n            _RemoteParticipantV2: {\n                value: options.RemoteParticipantV2\n            },\n            _subscribed: {\n                value: new Map()\n            },\n            _subscribedRevision: {\n                value: 0,\n                writable: true\n            },\n            _subscriptionFailures: {\n                value: new Map()\n            },\n            _dominantSpeakerSignaling: {\n                value: new options.DominantSpeakerSignaling(getTrackReceiver, { log: log })\n            },\n            _transcriptionSignaling: {\n                value: new options.TranscriptionSignaling(getTrackReceiver, { log: log })\n            },\n            _networkQualitySignaling: {\n                value: new options.NetworkQualitySignaling(getTrackReceiver, localParticipant.networkQualityConfiguration, { log: log })\n            },\n            _renderHintsSignaling: {\n                value: new RenderHintsSignaling(getTrackReceiver, { log: log }),\n            },\n            _publisherHintsSignaling: {\n                value: new PublisherHintsSignaling(getTrackReceiver, { log: log }),\n            },\n            _trackPrioritySignaling: {\n                value: new options.TrackPrioritySignaling(getTrackReceiver, { log: log }),\n            },\n            _trackSwitchOffSignaling: {\n                value: new options.TrackSwitchOffSignaling(getTrackReceiver, { log: log }),\n            },\n            _pendingSwitchOffStates: {\n                value: new Map()\n            },\n            _statsMonitor: {\n                value: options.eventObserver && options.insights ? new StatsMonitor(_this, log, {\n                    publishIntervalMs: options.statsPublishIntervalMs,\n                    collectionIntervalMs: options.statsCollectionIntervalMs\n                }) : null\n            },\n            _transport: {\n                value: transport\n            },\n            _trackReceiverDeferreds: {\n                value: new Map()\n            },\n            mediaRegion: {\n                enumerable: true,\n                value: initialState.options.media_region || null\n            }\n        });\n        _this._initTrackSwitchOffSignaling();\n        _this._initDominantSpeakerSignaling();\n        _this._initTranscriptionSignaling();\n        _this._initNetworkQualityMonitorSignaling();\n        _this._initPublisherHintSignaling();\n        handleLocalParticipantEvents(_this, localParticipant);\n        handlePeerConnectionEvents(_this, peerConnectionManager);\n        handleTransportEvents(_this, transport);\n        if (_this._statsMonitor) {\n            _this.on('stateChanged', function (state) {\n                if (state === 'disconnected' && _this._statsMonitor) {\n                    _this._statsMonitor.cleanup();\n                }\n            });\n        }\n        _this._update(initialState);\n        // NOTE(mpatwardhan) after initial state we know if publisher_hints are enabled or not\n        // if they are not enabled. we need to undo simulcast that was enabled with initial offer.\n        _this._peerConnectionManager.setEffectiveAdaptiveSimulcast(_this._publisherHintsSignaling.isSetup);\n        return _this;\n    }\n    Object.defineProperty(RoomV2.prototype, \"connectionState\", {\n        /**\n         * The PeerConnection state.\n         * @property {RTCPeerConnectionState}\n         */\n        get: function () {\n            return this._peerConnectionManager.connectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RoomV2.prototype, \"signalingConnectionState\", {\n        /**\n         * The Signaling Connection State.\n         * @property {string} - \"connected\", \"reconnecting\", \"disconnected\"\n         */\n        get: function () {\n            return this._transport.state === 'syncing'\n                ? 'reconnecting'\n                : this._transport.state;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RoomV2.prototype, \"iceConnectionState\", {\n        /**\n         * The Ice Connection State.\n         * @property {RTCIceConnectionState}\n         */\n        get: function () {\n            return this._peerConnectionManager.iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * @private\n     */\n    RoomV2.prototype._deleteTrackReceiverDeferred = function (id) {\n        return this._trackReceiverDeferreds.delete(id);\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getOrCreateTrackReceiverDeferred = function (id) {\n        var deferred = this._trackReceiverDeferreds.get(id) || defer();\n        var trackReceivers = this._peerConnectionManager.getTrackReceivers();\n        // NOTE(mmalavalli): In Firefox, there can be instances where a MediaStreamTrack\n        // for the given Track ID already exists, for example, when a Track is removed\n        // and added back. If that is the case, then we should resolve 'deferred'.\n        var trackReceiver = trackReceivers.find(function (trackReceiver) { return trackReceiver.id === id && trackReceiver.readyState !== 'ended'; });\n        if (trackReceiver) {\n            deferred.resolve(trackReceiver);\n        }\n        else {\n            // NOTE(mmalavalli): Only add the 'deferred' to the map if it's not\n            // resolved. This will prevent old copies of the MediaStreamTrack from\n            // being used when the remote peer removes and re-adds a MediaStreamTrack.\n            this._trackReceiverDeferreds.set(id, deferred);\n        }\n        return deferred;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._addTrackReceiver = function (trackReceiver) {\n        var deferred = this._getOrCreateTrackReceiverDeferred(trackReceiver.id);\n        deferred.resolve(trackReceiver);\n        return this;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._disconnect = function (error) {\n        var didDisconnect = _super.prototype._disconnect.call(this, error);\n        if (didDisconnect) {\n            this._teardownNetworkQualityMonitor();\n            this._transport.disconnect();\n            this._peerConnectionManager.close();\n        }\n        this.localParticipant.tracks.forEach(function (track) {\n            track.publishFailed(error || new Error('LocalParticipant disconnected'));\n        });\n        return didDisconnect;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getTrackReceiver = function (id) {\n        var _this = this;\n        return this._getOrCreateTrackReceiverDeferred(id).promise.then(function (trackReceiver) {\n            _this._deleteTrackReceiverDeferred(id);\n            return trackReceiver;\n        });\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getInitialTrackSwitchOffState = function (trackSid) {\n        var initiallySwitchedOff = this._pendingSwitchOffStates.get(trackSid) || false;\n        this._pendingSwitchOffStates.delete(trackSid);\n        if (initiallySwitchedOff) {\n            this._log.warn(\"[\".concat(trackSid, \"] was initially switched off! \"));\n        }\n        return initiallySwitchedOff;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getTrackSidsToTrackSignalings = function () {\n        var trackSidsToTrackSignalings = flatMap(this.participants, function (participant) { return Array.from(participant.tracks); });\n        return new Map(trackSidsToTrackSignalings);\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getOrCreateRemoteParticipant = function (participantState) {\n        var _this = this;\n        var RemoteParticipantV2 = this._RemoteParticipantV2;\n        var participant = this.participants.get(participantState.sid);\n        var self = this;\n        if (!participant) {\n            participant = new RemoteParticipantV2(participantState, function (trackSid) { return _this._getInitialTrackSwitchOffState(trackSid); }, function (trackSid, priority) { return _this._trackPrioritySignaling.sendTrackPriorityUpdate(trackSid, 'subscribe', priority); }, function (trackSid, hint) { return _this._renderHintsSignaling.setTrackHint(trackSid, hint); }, function (trackSid) { return _this._renderHintsSignaling.clearTrackHint(trackSid); });\n            participant.on('stateChanged', function stateChanged(state) {\n                if (state === 'disconnected') {\n                    participant.removeListener('stateChanged', stateChanged);\n                    self.participants.delete(participant.sid);\n                    self._disconnectedParticipantRevisions.set(participant.sid, participant.revision);\n                }\n            });\n            this.connectParticipant(participant);\n        }\n        return participant;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._getState = function () {\n        return {\n            participant: this.localParticipant.getState()\n        };\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._maybeAddBandwidthProfile = function (update) {\n        var _a = this.localParticipant, bandwidthProfile = _a.bandwidthProfile, bandwidthProfileRevision = _a.bandwidthProfileRevision;\n        if (bandwidthProfile && this._lastBandwidthProfileRevision < bandwidthProfileRevision) {\n            this._lastBandwidthProfileRevision = bandwidthProfileRevision;\n            return Object.assign({\n                bandwidth_profile: createBandwidthProfilePayload(bandwidthProfile)\n            }, update);\n        }\n        return update;\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._publishNewLocalParticipantState = function () {\n        this._transport.publish(this._maybeAddBandwidthProfile(this._getState()));\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._publishPeerConnectionState = function (peerConnectionState) {\n        /* eslint camelcase:0 */\n        this._transport.publish(Object.assign({\n            peer_connections: [peerConnectionState]\n        }, this._getState()));\n    };\n    /**\n     * @private\n     */\n    RoomV2.prototype._update = function (roomState) {\n        var _this = this;\n        if (roomState.subscribed && roomState.subscribed.revision > this._subscribedRevision) {\n            this._subscribedRevision = roomState.subscribed.revision;\n            roomState.subscribed.tracks.forEach(function (trackState) {\n                if (trackState.id) {\n                    _this._subscriptionFailures.delete(trackState.sid);\n                    _this._subscribed.set(trackState.sid, trackState.id);\n                }\n                else if (trackState.error && !_this._subscriptionFailures.has(trackState.sid)) {\n                    _this._subscriptionFailures.set(trackState.sid, trackState.error);\n                }\n            });\n            var subscribedTrackSids_1 = new Set(roomState.subscribed.tracks\n                .filter(function (trackState) { return !!trackState.id; })\n                .map(function (trackState) { return trackState.sid; }));\n            this._subscribed.forEach(function (trackId, trackSid) {\n                if (!subscribedTrackSids_1.has(trackSid)) {\n                    _this._subscribed.delete(trackSid);\n                }\n            });\n        }\n        var participantsToKeep = new Set();\n        // eslint-disable-next-line no-warning-comments\n        // TODO(mroberts): Remove me once the Server is fixed.\n        (roomState.participants || []).forEach(function (participantState) {\n            if (participantState.sid === _this.localParticipant.sid) {\n                return;\n            }\n            // NOTE(mmalavalli): If the incoming revision for a disconnected Participant is less than or\n            // equal to the revision when it was disconnected, then the state is old and can be ignored.\n            // Otherwise, the Participant was most likely disconnected in a Large Group Room when it\n            // stopped publishing media, and hence needs to be re-added.\n            var disconnectedParticipantRevision = _this._disconnectedParticipantRevisions.get(participantState.sid);\n            if (disconnectedParticipantRevision && participantState.revision <= disconnectedParticipantRevision) {\n                return;\n            }\n            if (disconnectedParticipantRevision) {\n                _this._disconnectedParticipantRevisions.delete(participantState.sid);\n            }\n            var participant = _this._getOrCreateRemoteParticipant(participantState);\n            participant.update(participantState);\n            participantsToKeep.add(participant);\n        });\n        if (roomState.type === 'synced') {\n            this.participants.forEach(function (participant) {\n                if (!participantsToKeep.has(participant)) {\n                    participant.disconnect();\n                }\n            });\n        }\n        handleSubscriptions(this);\n        // eslint-disable-next-line no-warning-comments\n        // TODO(mroberts): Remove me once the Server is fixed.\n        if (roomState.peer_connections) {\n            this._peerConnectionManager.update(roomState.peer_connections, roomState.type === 'synced');\n        }\n        if (roomState.recording) {\n            this.recording.update(roomState.recording);\n        }\n        if (roomState.published && roomState.published.revision > this._publishedRevision) {\n            this._publishedRevision = roomState.published.revision;\n            roomState.published.tracks.forEach(function (track) {\n                if (track.sid) {\n                    _this._published.set(track.id, track.sid);\n                }\n            });\n            this.localParticipant.update(roomState.published);\n        }\n        if (roomState.participant) {\n            this.localParticipant.connect(roomState.participant.sid, roomState.participant.identity);\n        }\n        [\n            this._dominantSpeakerSignaling,\n            this._transcriptionSignaling,\n            this._networkQualitySignaling,\n            this._trackPrioritySignaling,\n            this._trackSwitchOffSignaling,\n            this._renderHintsSignaling,\n            this._publisherHintsSignaling\n        ].forEach(function (mediaSignaling) {\n            var channel = mediaSignaling.channel;\n            if (!mediaSignaling.isSetup\n                && roomState.media_signaling\n                && roomState.media_signaling[channel]\n                && roomState.media_signaling[channel].transport\n                && roomState.media_signaling[channel].transport.type === 'data-channel') {\n                mediaSignaling.setup(roomState.media_signaling[channel].transport.label);\n            }\n        });\n        if (roomState.type === 'warning' && roomState.states &&\n            roomState.states.revision > this._mediaStatesWarningsRevision) {\n            this._mediaStatesWarningsRevision = roomState.states.revision;\n            this.localParticipant.updateMediaStates(roomState.states);\n        }\n        return this;\n    };\n    RoomV2.prototype._initPublisherHintSignaling = function () {\n        var _this = this;\n        this._publisherHintsSignaling.on('updated', function (hints, id) {\n            Promise.all(hints.map(function (hint) {\n                return _this.localParticipant.setPublisherHint(hint.track, hint.encodings).then(function (result) {\n                    return { track: hint.track, result: result };\n                });\n            })).then(function (hintResponses) {\n                _this._publisherHintsSignaling.sendHintResponse({ id: id, hints: hintResponses });\n            });\n        });\n        var handleReplaced = function (track) {\n            if (track.kind === 'video') {\n                track.trackTransceiver.on('replaced', function () {\n                    _this._publisherHintsSignaling.sendTrackReplaced({ trackSid: track.sid });\n                });\n            }\n        };\n        // hook up for any existing and new tracks getting replaced.\n        Array.from(this.localParticipant.tracks.values()).forEach(function (track) { return handleReplaced(track); });\n        this.localParticipant.on('trackAdded', function (track) { return handleReplaced(track); });\n    };\n    RoomV2.prototype._initTrackSwitchOffSignaling = function () {\n        var _this = this;\n        this._trackSwitchOffSignaling.on('updated', function (tracksOff, tracksOn) {\n            try {\n                _this._log.debug('received trackSwitch: ', { tracksOn: tracksOn, tracksOff: tracksOff });\n                var trackUpdates_1 = new Map();\n                tracksOn.forEach(function (trackSid) { return trackUpdates_1.set(trackSid, true); });\n                tracksOff.forEach(function (trackSid) {\n                    if (trackUpdates_1.get(trackSid)) {\n                        // NOTE(mpatwardhan): This means that VIDEO-3762 has been reproduced.\n                        _this._log.warn(\"\".concat(trackSid, \" is DUPLICATED in both tracksOff and tracksOn list\"));\n                    }\n                    trackUpdates_1.set(trackSid, false);\n                });\n                _this.participants.forEach(function (participant) {\n                    participant.tracks.forEach(function (track) {\n                        var isOn = trackUpdates_1.get(track.sid);\n                        if (typeof isOn !== 'undefined') {\n                            track.setSwitchedOff(!isOn);\n                            trackUpdates_1.delete(track.sid);\n                        }\n                    });\n                });\n                // NOTE(mpatwardhan): Cache any notification about the tracks that we do not yet know about.\n                trackUpdates_1.forEach(function (isOn, trackSid) { return _this._pendingSwitchOffStates.set(trackSid, !isOn); });\n            }\n            catch (ex) {\n                _this._log.error('error processing track switch off:', ex);\n            }\n        });\n    };\n    RoomV2.prototype._initDominantSpeakerSignaling = function () {\n        var _this = this;\n        this._dominantSpeakerSignaling.on('updated', function () { return _this.setDominantSpeaker(_this._dominantSpeakerSignaling.loudestParticipantSid); });\n    };\n    RoomV2.prototype._initTranscriptionSignaling = function () {\n        var _this = this;\n        this._transcriptionSignaling.on('transcription', function (data) {\n            _this.emit('transcription', data);\n        });\n    };\n    RoomV2.prototype._initNetworkQualityMonitorSignaling = function () {\n        var _this = this;\n        this._networkQualitySignaling.on('ready', function () {\n            var networkQualityMonitor = new _this._NetworkQualityMonitor(_this._peerConnectionManager, _this._networkQualitySignaling);\n            _this._networkQualityMonitor = networkQualityMonitor;\n            networkQualityMonitor.on('updated', function () {\n                if (_this.iceConnectionState === 'failed') {\n                    return;\n                }\n                _this.localParticipant.setNetworkQualityLevel(networkQualityMonitor.level, networkQualityMonitor.levels);\n                _this.participants.forEach(function (participant) {\n                    var levels = networkQualityMonitor.remoteLevels.get(participant.sid);\n                    if (levels) {\n                        participant.setNetworkQualityLevel(levels.level, levels);\n                    }\n                });\n            });\n            networkQualityMonitor.start();\n        });\n        this._networkQualitySignaling.on('teardown', function () { return _this._teardownNetworkQualityMonitor(); });\n    };\n    RoomV2.prototype._teardownNetworkQualityMonitor = function () {\n        if (this._networkQualityMonitor) {\n            this._networkQualityMonitor.stop();\n            this._networkQualityMonitor = null;\n        }\n    };\n    /**\n     * Get the {@link RoomV2}'s media statistics.\n     * @returns {Promise.<Map<PeerConnectionV2#id, StandardizedStatsResponse>>}\n     */\n    RoomV2.prototype.getStats = function () {\n        var _this = this;\n        return this._peerConnectionManager.getStats().then(function (responses) {\n            return new Map(Array.from(responses).map(function (_a) {\n                var _b = __read(_a, 2), id = _b[0], response = _b[1];\n                return [id, Object.assign({}, response, {\n                        localAudioTrackStats: filterAndAddLocalTrackSids(_this, response.localAudioTrackStats),\n                        localVideoTrackStats: filterAndAddLocalTrackSids(_this, response.localVideoTrackStats),\n                        remoteAudioTrackStats: filterAndAddRemoteTrackSids(_this, response.remoteAudioTrackStats),\n                        remoteVideoTrackStats: filterAndAddRemoteTrackSids(_this, response.remoteVideoTrackStats)\n                    })];\n            }));\n        });\n    };\n    return RoomV2;\n}(RoomSignaling));\n/**\n * Filter out {@link TrackStats} that aren't in the collection while also\n * stamping their Track SIDs.\n * @param {Map<ID, SID>} idToSid\n * @param {Array<TrackStats>} trackStats\n * @returns {Array<TrackStats>}\n */\nfunction filterAndAddTrackSids(idToSid, trackStats) {\n    return trackStats.reduce(function (trackStats, trackStat) {\n        var trackSid = idToSid.get(trackStat.trackId);\n        return trackSid\n            ? [Object.assign({}, trackStat, { trackSid: trackSid })].concat(trackStats)\n            : trackStats;\n    }, []);\n}\n/**\n * Filter out {@link LocalTrackStats} that aren't currently published while also\n * stamping their Track SIDs.\n * @param {RoomV2} roomV2\n * @param {Array<LocalTrackStats>} localTrackStats\n * @returns {Array<LocalTrackStats>}\n */\nfunction filterAndAddLocalTrackSids(roomV2, localTrackStats) {\n    return filterAndAddTrackSids(roomV2._published, localTrackStats);\n}\n/**\n * Filter out {@link RemoteTrackStats} that aren't currently subscribed while\n * also stamping their Track SIDs.\n * @param {RoomV2} roomV2\n * @param {Array<RemoteTrackStats>} remoteTrackStats\n * @returns {Array<RemoteTrackStats>}\n */\nfunction filterAndAddRemoteTrackSids(roomV2, remoteTrackStats) {\n    var idToSid = new Map(Array.from(roomV2._subscribed.entries()).map(function (_a) {\n        var _b = __read(_a, 2), sid = _b[0], id = _b[1];\n        return [id, sid];\n    }));\n    return filterAndAddTrackSids(idToSid, remoteTrackStats);\n}\n/**\n * @typedef {object} RoomV2#Representation\n * @property {string} name\n * @property {LocalParticipantV2#Representation} participant\n * @property {?Array<RemoteParticipantV2#Representation>} participants\n * @property {?Array<PeerConnectionV2#Representation>} peer_connections\n * @property {?RecordingV2#Representation} recording\n * @property {string} sid\n */\nfunction handleLocalParticipantEvents(roomV2, localParticipant) {\n    var localParticipantUpdated = oncePerTick(function () {\n        roomV2._publishNewLocalParticipantState();\n    });\n    var renegotiate = oncePerTick(function () {\n        var trackSenders = flatMap(localParticipant.tracks, function (trackV2) { return trackV2.trackTransceiver; });\n        roomV2._peerConnectionManager.setTrackSenders(trackSenders);\n    });\n    localParticipant.on('trackAdded', renegotiate);\n    localParticipant.on('trackRemoved', renegotiate);\n    localParticipant.on('updated', localParticipantUpdated);\n    roomV2.on('stateChanged', function stateChanged(state) {\n        if (state === 'disconnected') {\n            localParticipant.removeListener('trackAdded', renegotiate);\n            localParticipant.removeListener('trackRemoved', renegotiate);\n            localParticipant.removeListener('updated', localParticipantUpdated);\n            roomV2.removeListener('stateChanged', stateChanged);\n            localParticipant.disconnect();\n        }\n    });\n    roomV2.on('signalingConnectionStateChanged', function () {\n        var localParticipant = roomV2.localParticipant, signalingConnectionState = roomV2.signalingConnectionState;\n        var identity = localParticipant.identity, sid = localParticipant.sid;\n        switch (signalingConnectionState) {\n            case 'connected':\n                localParticipant.connect(sid, identity);\n                break;\n            case 'reconnecting':\n                localParticipant.reconnecting();\n                break;\n        }\n    });\n}\nfunction handlePeerConnectionEvents(roomV2, peerConnectionManager) {\n    peerConnectionManager.on('description', function onDescription(description) {\n        roomV2._publishPeerConnectionState(description);\n    });\n    peerConnectionManager.dequeue('description');\n    peerConnectionManager.on('candidates', function onCandidates(candidates) {\n        roomV2._publishPeerConnectionState(candidates);\n    });\n    peerConnectionManager.dequeue('candidates');\n    peerConnectionManager.on('trackAdded', roomV2._addTrackReceiver.bind(roomV2));\n    peerConnectionManager.dequeue('trackAdded');\n    peerConnectionManager.getTrackReceivers().forEach(roomV2._addTrackReceiver, roomV2);\n    peerConnectionManager.on('connectionStateChanged', function () {\n        roomV2.emit('connectionStateChanged');\n    });\n    peerConnectionManager.on('iceConnectionStateChanged', function () {\n        roomV2.emit('iceConnectionStateChanged');\n        if (roomV2.iceConnectionState === 'failed') {\n            if (roomV2.localParticipant.networkQualityLevel !== null) {\n                roomV2.localParticipant.setNetworkQualityLevel(0);\n            }\n            roomV2.participants.forEach(function (participant) {\n                if (participant.networkQualityLevel !== null) {\n                    participant.setNetworkQualityLevel(0);\n                }\n            });\n        }\n    });\n}\nfunction handleTransportEvents(roomV2, transport) {\n    transport.on('message', roomV2._update.bind(roomV2));\n    transport.on('stateChanged', function stateChanged(state, error) {\n        if (state === 'disconnected') {\n            if (roomV2.state !== 'disconnected') {\n                roomV2._disconnect(error);\n            }\n            transport.removeListener('stateChanged', stateChanged);\n        }\n        roomV2.emit('signalingConnectionStateChanged');\n    });\n}\nfunction handleSubscriptions(room) {\n    var trackSidsToTrackSignalings = room._getTrackSidsToTrackSignalings();\n    room._subscriptionFailures.forEach(function (error, trackSid) {\n        var trackSignaling = trackSidsToTrackSignalings.get(trackSid);\n        if (trackSignaling) {\n            room._subscriptionFailures.delete(trackSid);\n            trackSignaling.subscribeFailed(createTwilioError(error.code, error.message));\n        }\n    });\n    trackSidsToTrackSignalings.forEach(function (trackSignaling) {\n        var trackId = room._subscribed.get(trackSignaling.sid);\n        if (!trackId || (trackSignaling.isSubscribed && trackSignaling.trackTransceiver.id !== trackId)) {\n            trackSignaling.setTrackTransceiver(null);\n        }\n        if (trackId) {\n            room._getTrackReceiver(trackId).then(function (trackReceiver) { return trackSignaling.setTrackTransceiver(trackReceiver); });\n        }\n    });\n}\nmodule.exports = RoomV2;\n\n},{\"../../insights/statsmonitor\":24,\"../../util\":147,\"../../util/twilio-video-errors\":162,\"../room\":79,\"./dominantspeakersignaling\":82,\"./networkqualitymonitor\":89,\"./networkqualitysignaling\":90,\"./publisherhintsignaling.js\":93,\"./recording\":94,\"./remoteparticipant\":95,\"./renderhintssignaling\":97,\"./trackprioritysignaling\":99,\"./trackswitchoffsignaling\":100,\"./transcriptionsignaling\":101}],99:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar TrackPrioritySignaling = /** @class */ (function (_super) {\n    __extends(TrackPrioritySignaling, _super);\n    /**\n     * Construct a {@link TrackPrioritySignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceiver\n     */\n    function TrackPrioritySignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'track_priority', options) || this;\n        Object.defineProperties(_this, {\n            _enqueuedPriorityUpdates: {\n                value: new Map()\n            },\n        });\n        _this.on('ready', function (transport) {\n            Array.from(_this._enqueuedPriorityUpdates.keys()).forEach(function (trackSid) {\n                transport.publish({\n                    type: 'track_priority',\n                    track: trackSid,\n                    subscribe: _this._enqueuedPriorityUpdates.get(trackSid)\n                });\n                // NOTE(mpatwardhan)- we do not clear _enqueuedPriorityUpdates intentionally,\n                // this cache will is used to re-send the priorities in case of VMS-FailOver.\n            });\n        });\n        return _this;\n    }\n    /**\n     * @param {Track.SID} trackSid\n     * @param {'publish'|'subscribe'} publishOrSubscribe\n     * @param {Track.Priority} priority\n     */\n    TrackPrioritySignaling.prototype.sendTrackPriorityUpdate = function (trackSid, publishOrSubscribe, priority) {\n        if (publishOrSubscribe !== 'subscribe') {\n            throw new Error('only subscribe priorities are supported, found: ' + publishOrSubscribe);\n        }\n        this._enqueuedPriorityUpdates.set(trackSid, priority);\n        if (this._transport) {\n            this._transport.publish({\n                type: 'track_priority',\n                track: trackSid,\n                subscribe: priority\n            });\n        }\n    };\n    return TrackPrioritySignaling;\n}(MediaSignaling));\nmodule.exports = TrackPrioritySignaling;\n\n},{\"./mediasignaling\":88}],100:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @emits TrackSwitchOffSignalinging#updated\n */\nvar TrackSwitchOffSignaling = /** @class */ (function (_super) {\n    __extends(TrackSwitchOffSignaling, _super);\n    /**\n     * Construct a {@link TrackSwitchOffSignaling}.\n     * @param {Promise<DataTrackReceiver>} getReceiver\n     */\n    function TrackSwitchOffSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'track_switch_off', options) || this;\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                switch (message.type) {\n                    case 'track_switch_off':\n                        _this._setTrackSwitchOffUpdates(message.off || [], message.on || []);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    /**\n     * @private\n     * @param {[Track.SID]} tracksSwitchedOff\n     * @param {[Track.SID]} tracksSwitchedOn\n     * @returns {void}\n     */\n    TrackSwitchOffSignaling.prototype._setTrackSwitchOffUpdates = function (tracksSwitchedOff, tracksSwitchedOn) {\n        this.emit('updated', tracksSwitchedOff, tracksSwitchedOn);\n    };\n    return TrackSwitchOffSignaling;\n}(MediaSignaling));\n/**\n * @event TrackSwitchOffSignaling#updated\n */\nmodule.exports = TrackSwitchOffSignaling;\n\n},{\"./mediasignaling\":88}],101:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @emits TranscriptionSignaling#transcription\n */\nvar TranscriptionSignaling = /** @class */ (function (_super) {\n    __extends(TranscriptionSignaling, _super);\n    /**\n     * Construct an {@link TranscriptionSignaling}.\n     */\n    function TranscriptionSignaling(getReceiver, options) {\n        var _this = _super.call(this, getReceiver, 'extension_transcriptions', options) || this;\n        _this.on('ready', function (transport) {\n            transport.on('message', function (message) {\n                switch (message.type) {\n                    case 'extension_transcriptions':\n                        _this.emit('transcription', message);\n                        break;\n                    default:\n                        break;\n                }\n            });\n        });\n        return _this;\n    }\n    return TranscriptionSignaling;\n}(MediaSignaling));\n/**\n * @event TranscriptionSignaling#transcription\n */\nmodule.exports = TranscriptionSignaling;\n\n},{\"./mediasignaling\":88}],102:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar StateMachine = require('../../statemachine');\nvar TwilioConnection = require('../../twilioconnection');\nvar DefaultBackoff = require('../../util/backoff');\nvar reconnectBackoffConfig = require('../../util/constants').reconnectBackoffConfig;\nvar Timeout = require('../../util/timeout');\nvar _a = require('../../util/constants'), SDK_NAME = _a.SDK_NAME, SDK_VERSION = _a.SDK_VERSION, SDP_FORMAT = _a.SDP_FORMAT;\nvar _b = require('../../util'), createBandwidthProfilePayload = _b.createBandwidthProfilePayload, createMediaSignalingPayload = _b.createMediaSignalingPayload, createMediaWarningsPayload = _b.createMediaWarningsPayload, createSubscribePayload = _b.createSubscribePayload, getUserAgent = _b.getUserAgent, isNonArrayObject = _b.isNonArrayObject;\nvar _c = require('../../util/twilio-video-errors'), createTwilioError = _c.createTwilioError, RoomCompletedError = _c.RoomCompletedError, SignalingConnectionError = _c.SignalingConnectionError, SignalingServerBusyError = _c.SignalingServerBusyError;\nvar ICE_VERSION = 1;\nvar RSP_VERSION = 2;\n/*\nTwilioConnectionTransport States\n----------------\n\n                      +-----------+\n                      |           |\n                      |  syncing  |---------+\n                      |           |         |\n                      +-----------+         |\n                         ^     |            |\n                         |     |            |\n                         |     v            v\n    +------------+    +-----------+    +--------------+\n    |            |    |           |    |              |\n    | connecting |--->| connected |--->| disconnected |\n    |            |    |           |    |              |\n    +------------+    +-----------+    +--------------+\n             |                              ^\n             |                              |\n             |                              |\n             +------------------------------+\n\n*/\nvar states = {\n    connecting: [\n        'connected',\n        'disconnected'\n    ],\n    connected: [\n        'disconnected',\n        'syncing'\n    ],\n    syncing: [\n        'connected',\n        'disconnected'\n    ],\n    disconnected: []\n};\n/**\n * A {@link TwilioConnectionTransport} supports sending and receiving Room Signaling Protocol\n * (RSP) messages. It also supports RSP requests, such as Sync and Disconnect.\n * @extends StateMachine\n * @emits TwilioConnectionTransport#connected\n * @emits TwilioConnectionTransport#message\n */\nvar TwilioConnectionTransport = /** @class */ (function (_super) {\n    __extends(TwilioConnectionTransport, _super);\n    /**\n     * Construct a {@link TwilioConnectionTransport}.\n     * @param {?string} name\n     * @param {string} accessToken\n     * @param {ParticipantSignaling} localParticipant\n     * @param {PeerConnectionManager} peerConnectionManager\n     * @param {string} wsServer\n     * @param {object} [options]\n     */\n    function TwilioConnectionTransport(name, accessToken, localParticipant, peerConnectionManager, wsServer, options) {\n        var _this = this;\n        options = Object.assign({\n            Backoff: DefaultBackoff,\n            TwilioConnection: TwilioConnection,\n            iceServers: null,\n            trackPriority: true,\n            trackSwitchOff: true,\n            renderHints: true,\n            userAgent: getUserAgent()\n        }, options);\n        _this = _super.call(this, 'connecting', states) || this;\n        Object.defineProperties(_this, {\n            _accessToken: {\n                value: accessToken\n            },\n            _adaptiveSimulcast: {\n                value: options.adaptiveSimulcast\n            },\n            _automaticSubscription: {\n                value: options.automaticSubscription\n            },\n            _bandwidthProfile: {\n                value: options.bandwidthProfile\n            },\n            _dominantSpeaker: {\n                value: options.dominantSpeaker\n            },\n            _receiveTranscriptions: {\n                value: options.receiveTranscriptions\n            },\n            _eventObserver: {\n                value: options.eventObserver,\n                writable: false\n            },\n            _renderHints: {\n                value: options.renderHints\n            },\n            _iceServersStatus: {\n                value: Array.isArray(options.iceServers)\n                    ? 'overrode'\n                    : 'acquire'\n            },\n            _localParticipant: {\n                value: localParticipant\n            },\n            _name: {\n                value: name,\n            },\n            _networkQuality: {\n                value: isNonArrayObject(options.networkQuality) || options.networkQuality\n            },\n            _notifyWarnings: {\n                value: options.notifyWarnings\n            },\n            _options: {\n                value: options\n            },\n            _peerConnectionManager: {\n                value: peerConnectionManager\n            },\n            _sessionTimer: {\n                value: null,\n                writable: true\n            },\n            _sessionTimeoutMS: {\n                value: 0, // initially 0, set only after 1st successful connection.\n                writable: true\n            },\n            _reconnectBackoff: {\n                value: new options.Backoff(reconnectBackoffConfig)\n            },\n            _session: {\n                value: null,\n                writable: true\n            },\n            _trackPriority: {\n                value: options.trackPriority\n            },\n            _trackSwitchOff: {\n                value: options.trackSwitchOff\n            },\n            _twilioConnection: {\n                value: null,\n                writable: true\n            },\n            _updatesReceived: {\n                value: []\n            },\n            _updatesToSend: {\n                value: []\n            },\n            _userAgent: {\n                value: options.userAgent\n            },\n            _wsServer: {\n                value: wsServer\n            }\n        });\n        setupTransport(_this);\n        return _this;\n    }\n    /**\n     * Create a Connect, Sync or Disconnect RSP message.\n     * @private\n     * @returns {?object}\n     */\n    TwilioConnectionTransport.prototype._createConnectOrSyncOrDisconnectMessage = function () {\n        if (this.state === 'connected') {\n            return null;\n        }\n        if (this.state === 'disconnected') {\n            return {\n                session: this._session,\n                type: 'disconnect',\n                version: RSP_VERSION\n            };\n        }\n        var type = {\n            connecting: 'connect',\n            syncing: 'sync'\n        }[this.state];\n        var message = {\n            name: this._name,\n            participant: this._localParticipant.getState(),\n            peer_connections: this._peerConnectionManager.getStates(),\n            type: type,\n            version: RSP_VERSION\n        };\n        if (message.type === 'connect') {\n            message.ice_servers = this._iceServersStatus;\n            message.publisher = {\n                name: SDK_NAME,\n                sdk_version: SDK_VERSION,\n                user_agent: this._userAgent\n            };\n            if (this._bandwidthProfile) {\n                message.bandwidth_profile = createBandwidthProfilePayload(this._bandwidthProfile);\n            }\n            if (this._notifyWarnings) {\n                message.participant.media_warnings = createMediaWarningsPayload(this._notifyWarnings);\n            }\n            message.media_signaling = createMediaSignalingPayload(this._dominantSpeaker, this._networkQuality, this._trackPriority, this._trackSwitchOff, this._adaptiveSimulcast, this._renderHints, this._receiveTranscriptions);\n            message.subscribe = createSubscribePayload(this._automaticSubscription);\n            message.format = SDP_FORMAT;\n            message.token = this._accessToken;\n        }\n        else if (message.type === 'sync') {\n            message.session = this._session;\n            message.token = this._accessToken;\n        }\n        else if (message.type === 'update') {\n            message.session = this._session;\n        }\n        return message;\n    };\n    /**\n     * Create an \"ice\" message.\n     * @private\n     */\n    TwilioConnectionTransport.prototype._createIceMessage = function () {\n        return {\n            edge: 'roaming', // roaming here means use same edge as signaling.\n            token: this._accessToken,\n            type: 'ice',\n            version: ICE_VERSION\n        };\n    };\n    /**\n     * Send a Connect, Sync or Disconnect RSP message.\n     * @private\n     */\n    TwilioConnectionTransport.prototype._sendConnectOrSyncOrDisconnectMessage = function () {\n        var message = this._createConnectOrSyncOrDisconnectMessage();\n        if (message) {\n            this._twilioConnection.sendMessage(message);\n        }\n    };\n    /**\n     * Disconnect the {@link TwilioConnectionTransport}. Returns true if calling the method resulted\n     * in disconnection.\n     * @param {TwilioError} [error]\n     * @returns {boolean}\n     */\n    TwilioConnectionTransport.prototype.disconnect = function (error) {\n        if (this.state !== 'disconnected') {\n            this.preempt('disconnected', null, [error]);\n            this._sendConnectOrSyncOrDisconnectMessage();\n            this._twilioConnection.close();\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Publish an RSP Update. Returns true if calling the method resulted in\n     * publishing (or eventually publishing) the update.\n     * @param {object} update\n     * @returns {boolean}\n     */\n    TwilioConnectionTransport.prototype.publish = function (update) {\n        switch (this.state) {\n            case 'connected':\n                this._twilioConnection.sendMessage(Object.assign({\n                    session: this._session,\n                    type: 'update',\n                    version: RSP_VERSION\n                }, update));\n                return true;\n            case 'connecting':\n            case 'syncing':\n                this._updatesToSend.push(update);\n                return true;\n            case 'disconnected':\n            default:\n                return false;\n        }\n    };\n    /**\n     * Publish (or queue) an event to the Insights gateway.\n     * @param {string} group - Event group name\n     * @param {string} name - Event name\n     * @param {string} level - Event level\n     * @param {object} payload - Event payload\n     * @returns {void}\n     */\n    TwilioConnectionTransport.prototype.publishEvent = function (group, name, level, payload) {\n        this._eventObserver.emit('event', { group: group, name: name, level: level, payload: payload });\n    };\n    /**\n     * Sync the {@link TwilioConnectionTransport}. Returns true if calling the method resulted in\n     * syncing.\n     * @returns {boolean}\n     */\n    TwilioConnectionTransport.prototype.sync = function () {\n        if (this.state === 'connected') {\n            this.preempt('syncing');\n            this._sendConnectOrSyncOrDisconnectMessage();\n            return true;\n        }\n        return false;\n    };\n    /**\n     * @private\n     * @returns {void}\n     */\n    TwilioConnectionTransport.prototype._setSession = function (session, sessionTimeout) {\n        this._session = session;\n        this._sessionTimeoutMS = sessionTimeout * 1000;\n    };\n    /**\n     * Determines if we should attempt reconnect.\n     * returns a Promise to wait on before attempting to\n     * reconnect. returns null if its not okay to reconnect.\n     * @private\n     * @returns {Promise<void>}\n     */\n    TwilioConnectionTransport.prototype._getReconnectTimer = function () {\n        var _this = this;\n        if (this._sessionTimeoutMS === 0) {\n            // this means either we have never connected.\n            // or we timed out while trying to reconnect\n            // In either case we do not want to reconnect.\n            return null;\n        }\n        // start session timer\n        if (!this._sessionTimer) {\n            this._sessionTimer = new Timeout(function () {\n                // ensure that _clearReconnectTimer wasn't\n                // called while we were waiting.\n                if (_this._sessionTimer) {\n                    // do not allow any more reconnect attempts.\n                    _this._sessionTimeoutMS = 0;\n                }\n            }, this._sessionTimeoutMS);\n        }\n        // return promise that waits with exponential backoff.\n        return new Promise(function (resolve) {\n            _this._reconnectBackoff.backoff(resolve);\n        });\n    };\n    /**\n     * clears the session reconnect timer.\n     *\n     * @private\n     * @returns {void}\n     */\n    TwilioConnectionTransport.prototype._clearReconnectTimer = function () {\n        this._reconnectBackoff.reset();\n        if (this._sessionTimer) {\n            this._sessionTimer.clear();\n            this._sessionTimer = null;\n        }\n    };\n    return TwilioConnectionTransport;\n}(StateMachine));\n/**\n * @event TwilioConnectionTransport#connected\n * @param {object} initialState\n */\n/**\n * @event TwilioConnectionTransport#message\n * @param {object} peerConnections\n */\nfunction reducePeerConnections(peerConnections) {\n    return Array.from(peerConnections.reduce(function (peerConnectionsById, update) {\n        var reduced = peerConnectionsById.get(update.id) || update;\n        // First, reduce the top-level `description` property.\n        if (!reduced.description && update.description) {\n            reduced.description = update.description;\n        }\n        else if (reduced.description && update.description) {\n            if (update.description.revision > reduced.description.revision) {\n                reduced.description = update.description;\n            }\n        }\n        // Then, reduce the top-level `ice` property.\n        if (!reduced.ice && update.ice) {\n            reduced.ice = update.ice;\n        }\n        else if (reduced.ice && update.ice) {\n            if (update.ice.revision > reduced.ice.revision) {\n                reduced.ice = update.ice;\n            }\n        }\n        // Finally, update the map.\n        peerConnectionsById.set(reduced.id, reduced);\n        return peerConnectionsById;\n    }, new Map()).values());\n}\nfunction reduceUpdates(updates) {\n    return updates.reduce(function (reduced, update) {\n        // First, reduce the top-level `participant` property.\n        if (!reduced.participant && update.participant) {\n            reduced.participant = update.participant;\n        }\n        else if (reduced.participant && update.participant) {\n            if (update.participant.revision > reduced.participant.revision) {\n                reduced.participant = update.participant;\n            }\n        }\n        // Then, reduce the top-level `peer_connections` property.\n        /* eslint camelcase:0 */\n        if (!reduced.peer_connections && update.peer_connections) {\n            reduced.peer_connections = reducePeerConnections(update.peer_connections);\n        }\n        else if (reduced.peer_connections && update.peer_connections) {\n            reduced.peer_connections = reducePeerConnections(reduced.peer_connections.concat(update.peer_connections));\n        }\n        return reduced;\n    }, {});\n}\nfunction setupTransport(transport) {\n    function createOrResetTwilioConnection() {\n        if (transport.state === 'disconnected') {\n            return;\n        }\n        if (transport._twilioConnection) {\n            transport._twilioConnection.removeListener('message', handleMessage);\n        }\n        var _iceServersStatus = transport._iceServersStatus, _options = transport._options, _wsServer = transport._wsServer, state = transport.state;\n        var TwilioConnection = _options.TwilioConnection;\n        var twilioConnection = new TwilioConnection(_wsServer, Object.assign({\n            helloBody: state === 'connecting' && _iceServersStatus === 'acquire'\n                ? transport._createIceMessage()\n                : transport._createConnectOrSyncOrDisconnectMessage()\n        }, _options));\n        twilioConnection.once('close', function (reason) {\n            if (reason === TwilioConnection.CloseReason.LOCAL) {\n                disconnect();\n            }\n            else {\n                disconnect(new Error(reason));\n            }\n        });\n        twilioConnection.on('message', handleMessage);\n        transport._twilioConnection = twilioConnection;\n    }\n    function disconnect(error) {\n        if (transport.state === 'disconnected') {\n            return;\n        }\n        if (!error) {\n            transport.disconnect();\n            return;\n        }\n        var reconnectTimer = transport._getReconnectTimer();\n        if (!reconnectTimer) {\n            var twilioError = error.message === TwilioConnection.CloseReason.BUSY\n                ? new SignalingServerBusyError()\n                : new SignalingConnectionError();\n            transport.disconnect(twilioError);\n            return;\n        }\n        if (transport.state === 'connected') {\n            transport.preempt('syncing');\n        }\n        reconnectTimer.then(createOrResetTwilioConnection);\n    }\n    function handleMessage(message) {\n        if (transport.state === 'disconnected') {\n            return;\n        }\n        if (message.type === 'error') {\n            transport.disconnect(createTwilioError(message.code, message.message));\n            return;\n        }\n        switch (transport.state) {\n            case 'connected':\n                switch (message.type) {\n                    case 'connected':\n                    case 'synced':\n                    case 'update':\n                    case 'warning':\n                        transport.emit('message', message);\n                        return;\n                    case 'disconnected':\n                        transport.disconnect(message.status === 'completed'\n                            ? new RoomCompletedError()\n                            : null);\n                        return;\n                    default:\n                        // Do nothing.\n                        return;\n                }\n            case 'connecting':\n                switch (message.type) {\n                    case 'iced':\n                        transport._options.onIced(message.ice_servers).then(function () {\n                            transport._sendConnectOrSyncOrDisconnectMessage();\n                        });\n                        return;\n                    case 'connected':\n                        transport._setSession(message.session, message.options.session_timeout);\n                        transport.emit('connected', message);\n                        transport.preempt('connected');\n                        return;\n                    case 'synced':\n                    case 'update':\n                        transport._updatesReceived.push(message);\n                        return;\n                    case 'disconnected':\n                        transport.disconnect(message.status === 'completed'\n                            ? new RoomCompletedError()\n                            : null);\n                        return;\n                    default:\n                        // Do nothing.\n                        return;\n                }\n            case 'syncing':\n                switch (message.type) {\n                    case 'connected':\n                    case 'update':\n                        transport._updatesReceived.push(message);\n                        return;\n                    case 'synced':\n                        transport._clearReconnectTimer();\n                        transport.emit('message', message);\n                        transport.preempt('connected');\n                        return;\n                    case 'disconnected':\n                        transport.disconnect(message.status === 'completed'\n                            ? new RoomCompletedError()\n                            : null);\n                        return;\n                    default:\n                        // Do nothing.\n                        return;\n                }\n            default:\n                // Impossible\n                return;\n        }\n    }\n    transport.on('stateChanged', function stateChanged(state) {\n        switch (state) {\n            case 'connected': {\n                var updates = transport._updatesToSend.splice(0);\n                if (updates.length) {\n                    transport.publish(reduceUpdates(updates));\n                }\n                transport._updatesReceived.splice(0).forEach(function (update) { return transport.emit('message', update); });\n                return;\n            }\n            case 'disconnected':\n                transport._twilioConnection.removeListener('message', handleMessage);\n                transport.removeListener('stateChanged', stateChanged);\n                return;\n            case 'syncing':\n                // Do nothing.\n                return;\n            default:\n                // Impossible\n                return;\n        }\n    });\n    var _options = transport._options, _iceServersStatus = transport._iceServersStatus;\n    var iceServers = _options.iceServers, onIced = _options.onIced;\n    if (_iceServersStatus === 'overrode') {\n        onIced(iceServers).then(createOrResetTwilioConnection);\n    }\n    else {\n        createOrResetTwilioConnection();\n    }\n}\nmodule.exports = TwilioConnectionTransport;\n\n},{\"../../statemachine\":103,\"../../twilioconnection\":135,\"../../util\":147,\"../../util/backoff\":137,\"../../util/constants\":140,\"../../util/timeout\":161,\"../../util/twilio-video-errors\":162}],103:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventEmitter = require('events').EventEmitter;\nvar util = require('./util');\n/**\n * {@link StateMachine} represents a state machine. The state machine supports a\n * reentrant locking mechanism to allow asynchronous state transitions to ensure\n * they have not been preempted. Calls to {@link StateMachine#takeLock} are\n * guaranteed to be resolved in FIFO order.\n * @extends EventEmitter\n * @property {boolean} isLocked - whether or not the {@link StateMachine} is\n *   locked performing asynchronous state transition\n * @property {string} state - the current state\n * @emits {@link StateMachine#stateChanged}\n */\nvar StateMachine = /** @class */ (function (_super) {\n    __extends(StateMachine, _super);\n    /**\n     * Construct a {@link StateMachine}.\n     * @param {string} initialState - the intiial state\n     * @param {object} states\n     */\n    function StateMachine(initialState, states) {\n        var _this = _super.call(this) || this;\n        var lock = null;\n        var state = initialState;\n        states = transformStates(states);\n        Object.defineProperties(_this, {\n            _lock: {\n                get: function () {\n                    return lock;\n                },\n                set: function (_lock) {\n                    lock = _lock;\n                }\n            },\n            _reachableStates: {\n                value: reachable(states)\n            },\n            _state: {\n                get: function () {\n                    return state;\n                },\n                set: function (_state) {\n                    state = _state;\n                }\n            },\n            _states: {\n                value: states\n            },\n            _whenDeferreds: {\n                value: new Set()\n            },\n            isLocked: {\n                enumerable: true,\n                get: function () {\n                    return lock !== null;\n                }\n            },\n            state: {\n                enumerable: true,\n                get: function () {\n                    return state;\n                }\n            }\n        });\n        _this.on('stateChanged', function (state) {\n            _this._whenDeferreds.forEach(function (deferred) {\n                deferred.when(state, deferred.resolve, deferred.reject);\n            });\n        });\n        return _this;\n    }\n    /**\n     * Returns a promise whose executor function is called on each state change.\n     * @param {function(state: string, resolve: function, reject: function): void} when\n     * @returns {Promise.<*>}\n     * @private\n     */\n    StateMachine.prototype._whenPromise = function (when) {\n        var _this = this;\n        if (typeof when !== 'function') {\n            return Promise.reject(new Error('when() executor must be a function'));\n        }\n        var deferred = util.defer();\n        deferred.when = when;\n        this._whenDeferreds.add(deferred);\n        return deferred.promise.then(function (payload) {\n            _this._whenDeferreds.delete(deferred);\n            return payload;\n        }, function (error) {\n            _this._whenDeferreds.delete(deferred);\n            throw error;\n        });\n    };\n    /**\n     * This method takes a lock and passes the {@link StateMachine#Key} to your\n     * transition function. You may perform zero or more state transitions in your\n     * transition function, but you should check for preemption in each tick. You\n     * may also reenter the lock. Once the Promise returned by your transition\n     * function resolves or rejects, this method releases the lock it acquired for\n     * you.\n     * @param {string} name - a name for the lock\n     * @param {function(StateMachine#Key): Promise} transitionFunction\n     * @returns {Promise}\n     */\n    // NOTE(mroberts): This method is named after a Haskell function:\n    // https://hackage.haskell.org/package/base-4.8.2.0/docs/Control-Exception.html#v:bracket\n    StateMachine.prototype.bracket = function (name, transitionFunction) {\n        var key;\n        var self = this;\n        function releaseLock(error) {\n            if (self.hasLock(key)) {\n                self.releaseLockCompletely(key);\n            }\n            if (error) {\n                throw error;\n            }\n        }\n        return this.takeLock(name).then(function gotKey(_key) {\n            key = _key;\n            return transitionFunction(key);\n        }).then(function success(result) {\n            releaseLock();\n            return result;\n        }, releaseLock);\n    };\n    /**\n     * Check whether or not a {@link StateMachine#Key} matches the lock.\n     * @param {StateMachine#Key} key\n     * @returns {boolean}\n     */\n    StateMachine.prototype.hasLock = function (key) {\n        return this._lock === key;\n    };\n    /**\n     * Preempt any pending state transitions and immediately transition to the new\n     * state. If a lock name is specified, take the lock and return the\n     * {@link StateMachine#Key}.\n     * @param {string} newState\n     * @param {?string} [name=null] - a name for the lock\n     * @param {Array<*>} [payload=[]]\n     * @returns {?StateMachine#Key}\n     */\n    StateMachine.prototype.preempt = function (newState, name, payload) {\n        // 1. Check that the new state is valid.\n        if (!isValidTransition(this._states, this.state, newState)) {\n            throw new Error(\"Cannot transition from \\\"\".concat(this.state, \"\\\" to \\\"\").concat(newState, \"\\\"\"));\n        }\n        // 2. Release the old lock, if any.\n        var oldLock;\n        if (this.isLocked) {\n            oldLock = this._lock;\n            this._lock = null;\n        }\n        // 3. Take the lock, if requested.\n        var key = null;\n        if (name) {\n            key = this.takeLockSync(name);\n        }\n        // 4. If a lock wasn't requested, take a \"preemption\" lock in order to\n        // maintain FIFO order of those taking locks.\n        var preemptionKey = key ? null : this.takeLockSync('preemption');\n        // 5. Transition.\n        this.transition(newState, key || preemptionKey, payload);\n        // 6. Preempt anyone blocked on the old lock.\n        if (oldLock) {\n            oldLock.resolve();\n        }\n        // 7. Release the \"preemption\" lock, if we took it.\n        if (preemptionKey) {\n            this.releaseLock(preemptionKey);\n        }\n        return key;\n    };\n    /**\n     * Release a lock. This method succeeds only if the {@link StateMachine} is\n     * still locked and has not been preempted.\n     * @param {StateMachine#Key} key\n     * @throws Error\n     */\n    StateMachine.prototype.releaseLock = function (key) {\n        if (!this.isLocked) {\n            throw new Error(\"Could not release the lock for \".concat(key.name, \" because the StateMachine is not locked\"));\n        }\n        else if (!this.hasLock(key)) {\n            throw new Error(\"Could not release the lock for \".concat(key.name, \" because \").concat(this._lock.name, \" has the lock\"));\n        }\n        if (key.depth === 0) {\n            this._lock = null;\n            key.resolve();\n        }\n        else {\n            key.depth--;\n        }\n    };\n    /**\n     * Release a lock completely, even if it has been reentered. This method\n     * succeeds only if the {@link StateMachine} is still locked and has not been\n     * preempted.\n     * @param {StateMachine#Key} key\n     * @throws Error\n     */\n    StateMachine.prototype.releaseLockCompletely = function (key) {\n        if (!this.isLocked) {\n            throw new Error(\"Could not release the lock for \".concat(key.name, \" because the StateMachine is not locked\"));\n        }\n        else if (!this.hasLock(key)) {\n            throw new Error(\"Could not release the lock for \".concat(key.name, \" because \").concat(this._lock.name, \" has the lock\"));\n        }\n        key.depth = 0;\n        this._lock = null;\n        key.resolve();\n    };\n    /**\n     * Take a lock, returning a Promise for the {@link StateMachine#Key}. You should\n     * take a lock anytime you intend to perform asynchronous transitions. Calls to\n     * this method are guaranteed to be resolved in FIFO order. You may reenter\n     * a lock by passing its {@link StateMachine#Key}.\n     * @param {string|StateMachine#Key} nameOrKey - a name for the lock or an\n     * existing {@link StateMachine#Key}\n     * @returns {Promise<object>}\n     */\n    StateMachine.prototype.takeLock = function (nameOrKey) {\n        var _this = this;\n        // Reentrant lock\n        if (typeof nameOrKey === 'object') {\n            var key_1 = nameOrKey;\n            return new Promise(function (resolve) {\n                resolve(_this.takeLockSync(key_1));\n            });\n        }\n        // New lock\n        var name = nameOrKey;\n        if (this.isLocked) {\n            var takeLock = this.takeLock.bind(this, name);\n            return this._lock.promise.then(takeLock);\n        }\n        return Promise.resolve(this.takeLockSync(name));\n    };\n    /**\n     * Take a lock, returning the {@Link StateMachine#Key}. This method throws if\n     * the {@link StateMachine} is locked or the wrong {@link StateMachine#Key} is\n     * provided. You may reenter a lock by passing its {@link StateMachine#Key}.\n     * @param {string|StateMachine#Key} nameOrKey - a name for the lock or an\n     * existing {@link StateMachine#Key}\n     * @returns {object}\n     * @throws Error\n     */\n    StateMachine.prototype.takeLockSync = function (nameOrKey) {\n        var key = typeof nameOrKey === 'string' ? null : nameOrKey;\n        var name = key ? key.name : nameOrKey;\n        if (key && !this.hasLock(key) || !key && this.isLocked) {\n            throw new Error(\"Could not take the lock for \".concat(name, \" because the lock for \").concat(this._lock.name, \" was not released\"));\n        }\n        // Reentrant lock\n        if (key) {\n            key.depth++;\n            return key;\n        }\n        // New lock\n        var lock = makeLock(name);\n        this._lock = lock;\n        return lock;\n    };\n    /**\n     * Transition to a new state. If the {@link StateMachine} is locked, you must\n     * provide the {@link StateMachine#Key}. An invalid state or the wrong\n     * {@link StateMachine#Key} will throw an error.\n     * @param {string} newState\n     * @param {?StateMachine#Key} [key=null]\n     * @param {Array<*>} [payload=[]]\n     * @throws {Error}\n     */\n    StateMachine.prototype.transition = function (newState, key, payload) {\n        payload = payload || [];\n        // 1. If we're locked, required the key.\n        if (this.isLocked) {\n            if (!key) {\n                throw new Error('You must provide the key in order to ' +\n                    'transition');\n            }\n            else if (!this.hasLock(key)) {\n                throw new Error(\"Could not transition using the key for \".concat(key.name, \" because \").concat(this._lock.name, \" has the lock\"));\n            }\n        }\n        else if (key) {\n            throw new Error(\"Key provided for \".concat(key.name, \", but the StateMachine was not locked (possibly due to preemption)\"));\n        }\n        // 2. Check that the new state is valid.\n        if (!isValidTransition(this._states, this.state, newState)) {\n            throw new Error(\"Cannot transition from \\\"\".concat(this.state, \"\\\" to \\\"\").concat(newState, \"\\\"\"));\n        }\n        // 3. Update the state and emit an event.\n        this._state = newState;\n        this.emit.apply(this, __spreadArray([], __read(['stateChanged', newState].concat(payload)), false));\n    };\n    /**\n     * Attempt to transition to a new state. Unlike {@link StateMachine#transition},\n     * this method does not throw.\n     * @param {string} newState\n     * @param {?StateMachine#Key} [key=null]\n     * @param {Array<*>} [payload=[]]\n     * @returns {boolean}\n     */\n    StateMachine.prototype.tryTransition = function (newState, key, payload) {\n        try {\n            this.transition(newState, key, payload);\n        }\n        catch (error) {\n            return false;\n        }\n        return true;\n    };\n    /**\n     * Return a Promise that resolves when the {@link StateMachine} transitions to\n     * the specified state. If the {@link StateMachine} transitions such that the\n     * requested state becomes unreachable, the Promise rejects.\n     * @param {string} state\n     * @returns {Promise<this>}\n     */\n    StateMachine.prototype.when = function (state) {\n        var _this = this;\n        if (this.state === state) {\n            return Promise.resolve(this);\n        }\n        else if (!isValidTransition(this._reachableStates, this.state, state)) {\n            return Promise.reject(createUnreachableError(this.state, state));\n        }\n        return this._whenPromise(function (newState, resolve, reject) {\n            if (newState === state) {\n                resolve(_this);\n            }\n            else if (!isValidTransition(_this._reachableStates, newState, state)) {\n                reject(createUnreachableError(newState, state));\n            }\n        });\n    };\n    return StateMachine;\n}(EventEmitter));\n/**\n * @event StateMachine#stateChanged\n * @param {string} newState\n */\n/**\n * Check if a transition is valid.\n * @private\n * @param {Map<*, Set<*>>} graph\n * @param {*} from\n * @param {*} to\n * @returns {boolean}\n */\nfunction isValidTransition(graph, from, to) {\n    return graph.get(from).has(to);\n}\n/**\n * @typedef {object} StateMachine#Key\n */\nfunction makeLock(name) {\n    var lock = util.defer();\n    lock.name = name;\n    lock.depth = 0;\n    return lock;\n}\n/**\n * Compute the transitive closure of a graph (i.e. what nodes are reachable from\n * where).\n * @private\n * @param {Map<*, Set<*>>} graph\n * @returns {Map<*, Set<*>>}\n */\nfunction reachable(graph) {\n    return Array.from(graph.keys()).reduce(function (newGraph, from) { return newGraph.set(from, reachableFrom(graph, from)); }, new Map());\n}\n/**\n * Compute the Set of node reachable from a particular node in the graph.\n * @private\n * @param {Map<*, Set<*>>} graph\n * @param {*} from\n * @param {Set<*>} [to]\n * @returns {Set<*>}\n */\nfunction reachableFrom(graph, from, to) {\n    to = to || new Set();\n    graph.get(from).forEach(function (node) {\n        if (!to.has(node)) {\n            to.add(node);\n            reachableFrom(graph, node, to).forEach(to.add, to);\n        }\n    });\n    return to;\n}\nfunction transformStates(states) {\n    var newStates = new Map();\n    for (var key in states) {\n        newStates.set(key, new Set(states[key]));\n    }\n    return newStates;\n}\n/**\n * Create an \"unreachable state\" Error.\n * @param {string} here\n * @param {string} there\n * @returns {Error}\n */\nfunction createUnreachableError(here, there) {\n    return new Error(\"\\\"\".concat(there, \"\\\" cannot be reached from \\\"\").concat(here, \"\\\"\"));\n}\nmodule.exports = StateMachine;\n\n},{\"./util\":147,\"events\":188}],104:[function(require,module,exports){\n/* eslint no-undefined:0 */\n'use strict';\n/**\n * @param {Array<number|undefined>} xs\n * @returns {number|undefined}\n */\nfunction average(xs) {\n    xs = xs.filter(function (x) { return typeof x === 'number'; });\n    return xs.length < 1 ? undefined : xs.reduce(function (y, x) { return x + y; }) / xs.length;\n}\nmodule.exports = average;\n\n},{}],105:[function(require,module,exports){\n'use strict';\n/**\n * @property {number} [availableSend] - bps (undefined in Firefox)\n * @property {number} recv - bps\n * @property {number} [rtt] - s (undefined in Firefox)\n * @property {number} send - bps\n */\nvar IceReport = /** @class */ (function () {\n    /**\n     * Construct an {@link IceReport}.\n     * @param {number} send - bps\n     * @param {number} recv - bps\n     * @param {number} [rtt] - s\n     * @param {number} [availableSend] - bps\n     */\n    function IceReport(send, recv, availableSend, rtt) {\n        Object.defineProperties(this, {\n            availableSend: {\n                enumerable: true,\n                value: availableSend\n            },\n            recv: {\n                enumerable: true,\n                value: recv\n            },\n            rtt: {\n                enumerable: true,\n                value: rtt\n            },\n            send: {\n                enumerable: true,\n                value: send\n            }\n        });\n    }\n    /**\n     * @param {RTCStats} olderStats\n     * @param {RTCStats} newerStats\n     * @returns {IceReport}\n     */\n    IceReport.of = function (olderStats, newerStats) {\n        var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n        var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;\n        var deltaBytesReceived = newerStats.bytesReceived - olderStats.bytesReceived;\n        var send = secondsElapsed > 0\n            ? (deltaBytesSent / secondsElapsed) * 8\n            : 0;\n        var recv = secondsElapsed > 0\n            ? (deltaBytesReceived / secondsElapsed) * 8\n            : 0;\n        var availableSend = newerStats.availableOutgoingBitrate, rtt = newerStats.currentRoundTripTime;\n        return new IceReport(send, recv, availableSend, rtt);\n    };\n    return IceReport;\n}());\nmodule.exports = IceReport;\n\n},{}],106:[function(require,module,exports){\n'use strict';\nvar IceReport = require('./icereport');\n/**\n * @property {IceReport} lastReport\n * @property {?RTCStats} lastStats\n */\nvar IceReportFactory = /** @class */ (function () {\n    /**\n     * Construct an {@link IceReportFactory}.\n     */\n    function IceReportFactory() {\n        Object.defineProperties(this, {\n            lastReport: {\n                enumerable: true,\n                value: new IceReport(0, 0),\n                writable: true\n            },\n            lastStats: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n     * Create an {@link IceReport}.\n     * @param {RTCStats} newerStats;\n     * @returns {IceReport}\n     */\n    IceReportFactory.prototype.next = function (newerStats) {\n        var olderStats = this.lastStats;\n        this.lastStats = newerStats;\n        if (olderStats) {\n            var report = olderStats.id === newerStats.id\n                ? IceReport.of(olderStats, newerStats)\n                : new IceReport(0, 0);\n            this.lastReport = report;\n        }\n        return this.lastReport;\n    };\n    return IceReportFactory;\n}());\nmodule.exports = IceReportFactory;\n\n},{\"./icereport\":105}],107:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackStats = require('./localtrackstats');\n/**\n * Statistics for a {@link LocalAudioTrack}.\n * @extends LocalTrackStats\n * @property {?AudioLevel} audioLevel - Input {@link AudioLevel}\n * @property {?number} jitter - Audio jitter in milliseconds\n */\nvar LocalAudioTrackStats = /** @class */ (function (_super) {\n    __extends(LocalAudioTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link LocalAudioTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     * @param {boolean} prepareForInsights\n     */\n    function LocalAudioTrackStats(trackId, statsReport, prepareForInsights) {\n        var _this = _super.call(this, trackId, statsReport, prepareForInsights) || this;\n        Object.defineProperties(_this, {\n            audioLevel: {\n                value: typeof statsReport.audioInputLevel === 'number'\n                    ? statsReport.audioInputLevel\n                    : null,\n                enumerable: true\n            },\n            jitter: {\n                value: typeof statsReport.jitter === 'number'\n                    ? statsReport.jitter\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return LocalAudioTrackStats;\n}(LocalTrackStats));\n/**\n * The maximum absolute amplitude of a set of audio samples in the\n * range of 0 to 32767 inclusive.\n * @typedef {number} AudioLevel\n */\nmodule.exports = LocalAudioTrackStats;\n\n},{\"./localtrackstats\":108}],108:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackStats = require('./trackstats');\n/**\n * Statistics for a {@link LocalTrack}.\n * @extends TrackStats\n * @property {?number} bytesSent - Number of bytes sent\n * @property {?number} packetsSent - Number of packets sent\n * @property {?number} roundTripTime - Round trip time in milliseconds\n */\nvar LocalTrackStats = /** @class */ (function (_super) {\n    __extends(LocalTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link LocalTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     * @param {boolean} prepareForInsights\n     */\n    function LocalTrackStats(trackId, statsReport, prepareForInsights) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        Object.defineProperties(_this, {\n            bytesSent: {\n                value: typeof statsReport.bytesSent === 'number'\n                    ? statsReport.bytesSent\n                    : prepareForInsights ? 0 : null,\n                enumerable: true\n            },\n            packetsSent: {\n                value: typeof statsReport.packetsSent === 'number'\n                    ? statsReport.packetsSent\n                    : prepareForInsights ? 0 : null,\n                enumerable: true\n            },\n            roundTripTime: {\n                value: typeof statsReport.roundTripTime === 'number'\n                    ? statsReport.roundTripTime\n                    : prepareForInsights ? 0 : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return LocalTrackStats;\n}(TrackStats));\nmodule.exports = LocalTrackStats;\n\n},{\"./trackstats\":133}],109:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar LocalTrackStats = require('./localtrackstats');\n/**\n * Statistics for a {@link LocalVideoTrack}.\n * @extends LocalTrackStats\n * @property {?VideoTrack#Dimensions} captureDimensions - Video capture resolution\n * @property {?VideoTrack#Dimensions} dimensions - Video encoding resolution\n * @property {?number} captureFrameRate - Video capture frame rate\n * @property {?number} frameRate - Video encoding frame rate\n * @property {?string} qualityLimitationReason - Reason for video quality limitation ['none', 'bandwidth', 'cpu', 'other']\n */\nvar LocalVideoTrackStats = /** @class */ (function (_super) {\n    __extends(LocalVideoTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link LocalVideoTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     * @param {boolean} prepareForInsights\n     */\n    function LocalVideoTrackStats(trackId, statsReport, prepareForInsights) {\n        var _this = _super.call(this, trackId, statsReport, prepareForInsights) || this;\n        var captureDimensions = null;\n        if (typeof statsReport.frameWidthInput === 'number' &&\n            typeof statsReport.frameHeightInput === 'number') {\n            captureDimensions = {};\n            Object.defineProperties(captureDimensions, {\n                width: {\n                    value: statsReport.frameWidthInput,\n                    enumerable: true\n                },\n                height: {\n                    value: statsReport.frameHeightInput,\n                    enumerable: true\n                }\n            });\n        }\n        var dimensions = null;\n        if (typeof statsReport.frameWidthSent === 'number' &&\n            typeof statsReport.frameHeightSent === 'number') {\n            dimensions = {};\n            Object.defineProperties(dimensions, {\n                width: {\n                    value: statsReport.frameWidthSent,\n                    enumerable: true\n                },\n                height: {\n                    value: statsReport.frameHeightSent,\n                    enumerable: true\n                }\n            });\n        }\n        Object.defineProperties(_this, {\n            captureDimensions: {\n                value: captureDimensions,\n                enumerable: true\n            },\n            dimensions: {\n                value: dimensions,\n                enumerable: true\n            },\n            captureFrameRate: {\n                value: typeof statsReport.frameRateInput === 'number'\n                    ? statsReport.frameRateInput\n                    : null,\n                enumerable: true\n            },\n            frameRate: {\n                value: typeof statsReport.frameRateSent === 'number'\n                    ? statsReport.frameRateSent\n                    : null,\n                enumerable: true\n            },\n            qualityLimitationReason: {\n                value: ['none', 'bandwidth', 'cpu', 'other'].find(function (reason) { return reason === statsReport.qualityLimitationReason; }) || null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return LocalVideoTrackStats;\n}(LocalTrackStats));\nmodule.exports = LocalVideoTrackStats;\n\n},{\"./localtrackstats\":108}],110:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualityMediaStats = require('./networkqualitymediastats');\n/**\n * {@link NetworkQualityMediaStats} for a {@link Participant}'s audio.\n */\nvar NetworkQualityAudioStats = /** @class */ (function (_super) {\n    __extends(NetworkQualityAudioStats, _super);\n    /**\n     * Construct a {@link NetworkQualityAudioStats}.\n     * @param {MediaLevels} mediaLevels\n     */\n    function NetworkQualityAudioStats(mediaLevels) {\n        return _super.call(this, mediaLevels) || this;\n    }\n    return NetworkQualityAudioStats;\n}(NetworkQualityMediaStats));\nmodule.exports = NetworkQualityAudioStats;\n\n},{\"./networkqualitymediastats\":114}],111:[function(require,module,exports){\n'use strict';\n/**\n * Bandwidth network quality statistics.\n * @property {?number} actual - the actual bandwidth used, in bits per second\n * @property {?number} available - an estimate of available useable bandwidth, in bits per second\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for bandwidth\n */\nvar NetworkQualityBandwidthStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityBandwidthStats}.\n     * @param {BandwidthStats} bandwidthStats\n     */\n    function NetworkQualityBandwidthStats(_a) {\n        var _b = _a.actual, actual = _b === void 0 ? null : _b, _c = _a.available, available = _c === void 0 ? null : _c, _d = _a.level, level = _d === void 0 ? null : _d;\n        Object.defineProperties(this, {\n            actual: {\n                value: actual,\n                enumerable: true\n            },\n            available: {\n                value: available,\n                enumerable: true\n            },\n            level: {\n                value: level,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityBandwidthStats;\n}());\nmodule.exports = NetworkQualityBandwidthStats;\n\n},{}],112:[function(require,module,exports){\n'use strict';\n/**\n * Fraction lost network quality statistics.\n * @property {?number} fractionLost - packets lost\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for fraction lost\n */\nvar NetworkQualityFractionLostStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityFractionLostStats}.\n     * @param {FractionLostStats} fractionLostStats\n     */\n    function NetworkQualityFractionLostStats(_a) {\n        var _b = _a.fractionLost, fractionLost = _b === void 0 ? null : _b, _c = _a.level, level = _c === void 0 ? null : _c;\n        Object.defineProperties(this, {\n            fractionLost: {\n                value: fractionLost,\n                enumerable: true\n            },\n            level: {\n                value: level,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityFractionLostStats;\n}());\nmodule.exports = NetworkQualityFractionLostStats;\n\n},{}],113:[function(require,module,exports){\n'use strict';\n/**\n * Latency network quality statistics.\n * @property {?number} jitter - media jitter in seconds\n * @property {?number} rtt - round trip time in seconds\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for latency\n */\nvar NetworkQualityLatencyStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityLatencyStats}.\n     * @param {LatencyStats} latencyStats\n     */\n    function NetworkQualityLatencyStats(_a) {\n        var _b = _a.jitter, jitter = _b === void 0 ? null : _b, _c = _a.rtt, rtt = _c === void 0 ? null : _c, _d = _a.level, level = _d === void 0 ? null : _d;\n        Object.defineProperties(this, {\n            jitter: {\n                value: jitter,\n                enumerable: true\n            },\n            rtt: {\n                value: rtt,\n                enumerable: true\n            },\n            level: {\n                value: level,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityLatencyStats;\n}());\nmodule.exports = NetworkQualityLatencyStats;\n\n},{}],114:[function(require,module,exports){\n'use strict';\nvar NetworkQualitySendStats = require('./networkqualitysendstats');\nvar NetworkQualityRecvStats = require('./networkqualityrecvstats');\n/**\n * Network quality statistics shared between a {@link Participant}'s audio or video.\n * @property {NetworkQualityLevel} send - {@link NetworkQualityLevel} of the\n *  {@link Participant}'s published audio or video\n * @property {number} recv - {@link NetworkQualityLevel} of the\n *  {@link Participant}'s subscribed audio or video\n * @property {?NetworkQualitySendOrRecvStats} sendStats - {@link NetworkQualitySendOrRecvStats}\n *   based on which {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#send</code>\n *   is calculated\n * @property {?NetworkQualitySendOrRecvStats} recvStats - {@link NetworkQualitySendOrRecvStats}\n *   based on which {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#recv</code>\n *   is calculated\n */\nvar NetworkQualityMediaStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityMediaStats}.\n     * @param {MediaLevels} mediaLevels\n     */\n    function NetworkQualityMediaStats(_a) {\n        var send = _a.send, recv = _a.recv, _b = _a.sendStats, sendStats = _b === void 0 ? null : _b, _c = _a.recvStats, recvStats = _c === void 0 ? null : _c;\n        Object.defineProperties(this, {\n            send: {\n                value: send,\n                enumerable: true\n            },\n            recv: {\n                value: recv,\n                enumerable: true\n            },\n            sendStats: {\n                value: sendStats ? new NetworkQualitySendStats(sendStats) : null,\n                enumerable: true\n            },\n            recvStats: {\n                value: recvStats ? new NetworkQualityRecvStats(recvStats) : null,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityMediaStats;\n}());\nmodule.exports = NetworkQualityMediaStats;\n\n},{\"./networkqualityrecvstats\":115,\"./networkqualitysendstats\":117}],115:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualitySendOrRecvStats = require('./networkqualitysendorrecvstats');\n/**\n * {@link NetworkQualitySendOrRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#recv</code> is calculated.\n */\nvar NetworkQualityRecvStats = /** @class */ (function (_super) {\n    __extends(NetworkQualityRecvStats, _super);\n    /**\n     * Construct a {@link NetworkQualityRecvStats}.\n     * @param {SendOrRecvStats} sendOrRecvStats\n     */\n    function NetworkQualityRecvStats(sendOrRecvStats) {\n        return _super.call(this, sendOrRecvStats) || this;\n    }\n    return NetworkQualityRecvStats;\n}(NetworkQualitySendOrRecvStats));\nmodule.exports = NetworkQualityRecvStats;\n\n},{\"./networkqualitysendorrecvstats\":116}],116:[function(require,module,exports){\n'use strict';\nvar NetworkQualityBandwidthStats = require('./networkqualitybandwidthstats');\nvar NetworkQualityFractionLostStats = require('./networkqualityfractionloststats');\nvar NetworkQualityLatencyStats = require('./networkqualitylatencystats');\n/**\n * Network quality statistics shared between {@link NetworkQualitySendStats} and\n * {@link NetworkQualityRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#send</code> or\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#recv</code> is calculated.\n * @property {?NetworkQualityBandwidthStats} bandwidth - bandwidth statistics\n * @property {?NetworkQualityLatencyStats} latency - latency statistics\n * @property {?NetworkQualityFractionLostStats} fractionLost - fraction lost statistics\n */\nvar NetworkQualitySendOrRecvStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualitySendOrRecvStats}.\n     * @param {SendOrRecvStats} sendOrRecvStats\n     */\n    function NetworkQualitySendOrRecvStats(_a) {\n        var _b = _a.bandwidth, bandwidth = _b === void 0 ? null : _b, _c = _a.fractionLost, fractionLost = _c === void 0 ? null : _c, _d = _a.latency, latency = _d === void 0 ? null : _d;\n        Object.defineProperties(this, {\n            bandwidth: {\n                value: bandwidth ? new NetworkQualityBandwidthStats(bandwidth) : null,\n                enumerable: true\n            },\n            fractionLost: {\n                value: fractionLost ? new NetworkQualityFractionLostStats(fractionLost) : null,\n                enumerable: true\n            },\n            latency: {\n                value: latency ? new NetworkQualityLatencyStats(latency) : null,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualitySendOrRecvStats;\n}());\nmodule.exports = NetworkQualitySendOrRecvStats;\n\n},{\"./networkqualitybandwidthstats\":111,\"./networkqualityfractionloststats\":112,\"./networkqualitylatencystats\":113}],117:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualitySendOrRecvStats = require('./networkqualitysendorrecvstats');\n/**\n * {@link NetworkQualitySendOrRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}<code style=\"padding:0 0\">#send</code> is calculated.\n */\nvar NetworkQualitySendStats = /** @class */ (function (_super) {\n    __extends(NetworkQualitySendStats, _super);\n    /**\n     * Construct a {@link NetworkQualitySendStats}.\n     * @param {SendOrRecvStats} sendOrRecvStats\n     */\n    function NetworkQualitySendStats(sendOrRecvStats) {\n        return _super.call(this, sendOrRecvStats) || this;\n    }\n    return NetworkQualitySendStats;\n}(NetworkQualitySendOrRecvStats));\nmodule.exports = NetworkQualitySendStats;\n\n},{\"./networkqualitysendorrecvstats\":116}],118:[function(require,module,exports){\n'use strict';\nvar NetworkQualityAudioStats = require('./networkqualityaudiostats');\nvar NetworkQualityVideoStats = require('./networkqualityvideostats');\n/**\n * Network quality statistics for a {@link Participant}.\n * @property {NetworkQualityLevel} level - {@link NetworkQualityLevel} of the {@link Participant}\n * @property {?NetworkQualityAudioStats} audio - {@link NetworkQualityMediaStats}\n *   for audio; <code>null</code> if {@link NetworkQualityVerbosity} is {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n *   or below\n * @property {?NetworkQualityVideoStats} video - {@link NetworkQualityMediaStats}\n *   for video; <code>null</code> if {@link NetworkQualityVerbosity} is {@link NetworkQualityVerbosity}<code style=\"padding:0 0\">#minimal</code>\n *   or below\n */\nvar NetworkQualityStats = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkQualityStats}.\n     * @param {NetworkQualityLevels} networkQualityLevels\n     */\n    function NetworkQualityStats(_a) {\n        var level = _a.level, audio = _a.audio, video = _a.video;\n        Object.defineProperties(this, {\n            level: {\n                value: level,\n                enumerable: true\n            },\n            audio: {\n                value: audio ? new NetworkQualityAudioStats(audio) : null,\n                enumerable: true\n            },\n            video: {\n                value: video ? new NetworkQualityVideoStats(video) : null,\n                enumerable: true\n            }\n        });\n    }\n    return NetworkQualityStats;\n}());\nmodule.exports = NetworkQualityStats;\n\n},{\"./networkqualityaudiostats\":110,\"./networkqualityvideostats\":119}],119:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NetworkQualityMediaStats = require('./networkqualitymediastats');\n/**\n * {@link NetworkQualityMediaStats} for a {@link Participant}'s video.\n */\nvar NetworkQualityVideoStats = /** @class */ (function (_super) {\n    __extends(NetworkQualityVideoStats, _super);\n    /**\n     * Construct a {@link NetworkQualityVideoStats}.\n     * @param {MediaLevels} mediaLevels\n     */\n    function NetworkQualityVideoStats(mediaLevels) {\n        return _super.call(this, mediaLevels) || this;\n    }\n    return NetworkQualityVideoStats;\n}(NetworkQualityMediaStats));\nmodule.exports = NetworkQualityVideoStats;\n\n},{\"./networkqualitymediastats\":114}],120:[function(require,module,exports){\n'use strict';\nvar ReceiverReport = require('./receiverreport');\nvar SenderReport = require('./senderreport');\n/**\n * @interface SenderAndReceiverReports\n * @property {Array<SenderReport>} send\n * @property {Array<ReceiverReport>} recv\n */\n/**\n * @interface SenderAndReceiverSummary\n * @property {SenderSummary} send\n * @property {ReceiverSummary} recv\n */\n/**\n * @interface PeerConnectionSummary\n * @property {IceReport} ice\n * @property {SenderSummary} send\n * @property {ReceiverSummary} recv\n * @property {SenderAndReceiverSummary} audio\n * @property {SenderAndReceiverSummary} video\n */\n/**\n * @property {IceReport} ice\n * @roperty {SenderAndReceiverReports} audio\n * @roperty {SenderAndReceiverReports} video\n */\nvar PeerConnectionReport = /** @class */ (function () {\n    /**\n     * Construct a {@link PeerConnectionReport}.\n     * @param {IceReport} ice\n     * @param {SenderAndReceiverReports} audio\n     * @param {SenderAndReceiverReports} video\n     */\n    function PeerConnectionReport(ice, audio, video) {\n        Object.defineProperties(this, {\n            ice: {\n                enumerable: true,\n                value: ice\n            },\n            audio: {\n                enumerable: true,\n                value: audio\n            },\n            video: {\n                enumerable: true,\n                value: video\n            }\n        });\n    }\n    /**\n     * Summarize the {@link PeerConnectionReport} by summarizing its\n     * {@link SenderReport}s and {@link ReceiverReport}s.\n     * @returns {PeerConnectionSummary}\n     */\n    PeerConnectionReport.prototype.summarize = function () {\n        var senderReports = this.audio.send.concat(this.video.send);\n        var send = SenderReport.summarize(senderReports);\n        var receiverReports = this.audio.recv.concat(this.video.recv);\n        var recv = ReceiverReport.summarize(receiverReports);\n        return {\n            ice: this.ice,\n            send: send,\n            recv: recv,\n            audio: {\n                send: SenderReport.summarize(this.audio.send),\n                recv: ReceiverReport.summarize(this.audio.recv)\n            },\n            video: {\n                send: SenderReport.summarize(this.video.send),\n                recv: ReceiverReport.summarize(this.video.recv)\n            }\n        };\n    };\n    return PeerConnectionReport;\n}());\nmodule.exports = PeerConnectionReport;\n\n},{\"./receiverreport\":122,\"./senderreport\":129}],121:[function(require,module,exports){\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar guessBrowser = require('../webrtc/util').guessBrowser;\nvar IceReportFactory = require('./icereportfactory');\nvar PeerConnectionReport = require('./peerconnectionreport');\nvar ReceiverReportFactory = require('./receiverreportfactory');\nvar SenderReportFactory = require('./senderreportfactory');\n/**\n * @typedef {string} TrackId\n */\n/**\n * @typedef {string} StatsId\n */\n/**\n * @interface SenderReportFactoriesByMediaType\n * @property {Map<StatsId, SenderReportFactory>} audio\n * @property {Map<StatsId, SenderReportFactory>} video\n */\n/**\n * @interface ReceiverReportFactoriesByMediaType\n * @property {Map<StatsId, ReceiverReportFactory>} audio\n * @property {Map<StatsId, ReceiverReportFactory>} video\n */\n/**\n * @interface SenderAndReceiverReportFactories\n * @property {Map<StatsId, SenderReportFactories>} send\n * @property {Map<StatsId, ReceiverReportFactories>} recv\n */\n/**\n * @interface {StatsIdsByMediaType}\n * @property {Set<StatsId>} audio\n * @property {Set<StatsId>} video\n */\n/**\n * @property {RTCPeerConnection} pc\n * @property {IceReportFactory} iceReportFactory\n * @property {SenderAndReceiverReportFactories} audio\n * @property {SenderAndReceiverReportFactories} video\n * @property {?PeerConnectionReport} lastReport\n */\nvar PeerConnectionReportFactory = /** @class */ (function () {\n    /**\n     * Construct a {@link PeerConnectionReportFactory}.\n     * @param {RTCPeerConnection} pc\n     */\n    function PeerConnectionReportFactory(pc) {\n        Object.defineProperties(this, {\n            pc: {\n                enumerable: true,\n                value: pc\n            },\n            ice: {\n                enumerable: true,\n                value: new IceReportFactory()\n            },\n            audio: {\n                enumerable: true,\n                value: {\n                    send: new Map(),\n                    recv: new Map()\n                }\n            },\n            video: {\n                enumerable: true,\n                value: {\n                    send: new Map(),\n                    recv: new Map()\n                }\n            },\n            lastReport: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n     * Create a {@link PeerConnectionReport}.\n     * @returns {Promise<PeerConnectionReport>}\n     */\n    PeerConnectionReportFactory.prototype.next = function () {\n        var _this = this;\n        var updatePromise = guessBrowser() === 'firefox'\n            ? updateFirefox(this)\n            : updateChrome(this);\n        return updatePromise.then(function () {\n            var audioSenderReportFactories = __spreadArray([], __read(_this.audio.send.values()), false);\n            var videoSenderReportFactories = __spreadArray([], __read(_this.video.send.values()), false);\n            var audioReceiverReportFactories = __spreadArray([], __read(_this.audio.recv.values()), false);\n            var videoReceiverReportFactories = __spreadArray([], __read(_this.video.recv.values()), false);\n            var report = new PeerConnectionReport(_this.ice.lastReport, {\n                send: audioSenderReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; }),\n                recv: audioReceiverReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; })\n            }, {\n                send: videoSenderReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; }),\n                recv: videoReceiverReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; })\n            });\n            _this.lastReport = report;\n            return report;\n        });\n    };\n    return PeerConnectionReportFactory;\n}());\n/**\n * Construct a Map from MediaStreamTrack Ids to RTCStatsReports.\n * @param {Array<RTCRtpSender>|Array<RTCRtpReceiver>} sendersOrReceivers - each\n *   RTCRtpSender should have a non-null track\n * @returns {Promise<Map<TrackId, RTCStats>>}\n */\nfunction getSenderOrReceiverReports(sendersOrReceivers) {\n    return Promise.all(sendersOrReceivers.map(function (senderOrReceiver) {\n        var trackId = senderOrReceiver.track.id;\n        return senderOrReceiver.getStats().then(function (report) {\n            var e_1, _a;\n            try {\n                // NOTE(mroberts): We have to rewrite Ids due to this bug:\n                //\n                //   https://bugzilla.mozilla.org/show_bug.cgi?id=1463430\n                //\n                for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var stats = _c.value;\n                    if (stats.type === 'inbound-rtp') {\n                        stats.id = \"\".concat(trackId, \"-\").concat(stats.id);\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            return [trackId, report];\n        });\n    })).then(function (pairs) { return new Map(pairs); });\n}\n/**\n * @param {SenderReportFactory.constructor} SenderReportFactory\n * @param {SenderReportFactoriesByMediaType} sendersByMediaType\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?SenderReportFactory}\n */ /**\n* @param {ReceiverReportFactory.constructor} ReceiverReportFactory\n* @param {ReceiverReportFactoriesByMediaType} receiversByMediaType\n* @param {RTCStatsReport} report\n* @param {RTCStats} stats\n* @param {TrackId} [trackId]\n* @returns {?ReceiverReportFactory}\n*/\nfunction getOrCreateSenderOrReceiverReportFactory(SenderOrReceiverReportFactory, sendersOrReceiversByMediaType, report, stats, trackId) {\n    var sendersOrReceivers = sendersOrReceiversByMediaType[stats.mediaType];\n    if (!trackId) {\n        var trackStats = report.get(stats.trackId);\n        if (trackStats) {\n            trackId = trackStats.trackIdentifier;\n        }\n    }\n    if (sendersOrReceivers && trackId) {\n        if (sendersOrReceivers.has(stats.id)) {\n            return sendersOrReceivers.get(stats.id);\n        }\n        var senderOrReceiverFactory = new SenderOrReceiverReportFactory(trackId, stats);\n        sendersOrReceivers.set(stats.id, senderOrReceiverFactory);\n    }\n    return null;\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {SenderReportFactoriesByMediaType}\n */\nfunction getSenderReportFactoriesByMediaType(factory) {\n    return { audio: factory.audio.send, video: factory.video.send };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {ReceiverReportFactoriesByMediaType}\n */\nfunction getReceiverReportFactoriesByMediaType(factory) {\n    return { audio: factory.audio.recv, video: factory.video.recv };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?SenderReportFactory}\n */\nfunction getOrCreateSenderReportFactory(factory, report, stats, trackId) {\n    return getOrCreateSenderOrReceiverReportFactory(SenderReportFactory, getSenderReportFactoriesByMediaType(factory), report, stats, trackId);\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?ReceiverReportFactory}\n */\nfunction getOrCreateReceiverReportFactory(factory, report, stats, trackId) {\n    return getOrCreateSenderOrReceiverReportFactory(ReceiverReportFactory, getReceiverReportFactoriesByMediaType(factory), report, stats, trackId);\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @retuns {StatsIdsByMediaType}\n */\nfunction getSenderReportFactoryIdsByMediaType(factory) {\n    return {\n        audio: new Set(factory.audio.send.keys()),\n        video: new Set(factory.video.send.keys())\n    };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @retuns {StatsIdsByMediaType}\n */\nfunction getReceiverReportFactoryIdsByMediaType(factory) {\n    return {\n        audio: new Set(factory.audio.recv.keys()),\n        video: new Set(factory.video.recv.keys())\n    };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {StatsIdsByMediaType} senderReportFactoryIdsToDeleteByMediaType\n * @param {TrackId} [trackId]\n * @returns {void}\n */\nfunction updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType, trackId) {\n    var e_2, _a;\n    try {\n        for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var stats = _c.value;\n            if (stats.type === 'outbound-rtp' && !stats.isRemote) {\n                if (guessBrowser() !== 'firefox' && !stats.trackId) {\n                    continue;\n                }\n                var senderReportFactoryIdsToDelete = senderReportFactoryIdsToDeleteByMediaType[stats.mediaType];\n                if (senderReportFactoryIdsToDelete) {\n                    senderReportFactoryIdsToDelete.delete(stats.id);\n                }\n                var senderReportFactory = getOrCreateSenderReportFactory(factory, report, stats, trackId);\n                if (senderReportFactory) {\n                    var remoteInboundStats = report.get(stats.remoteId);\n                    senderReportFactory.next(trackId || senderReportFactory.trackId, stats, remoteInboundStats);\n                }\n            }\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {StatsIdsByMediaType} receiverReportFactoryIdsToDeleteByMediaType\n * @param {TrackId} [trackId]\n * @returns {void}\n */\nfunction updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType, trackId) {\n    var e_3, _a;\n    try {\n        for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var stats = _c.value;\n            if (stats.type === 'inbound-rtp' && !stats.isRemote) {\n                var receiverReportFactoryIdsToDelete = receiverReportFactoryIdsToDeleteByMediaType[stats.mediaType];\n                if (receiverReportFactoryIdsToDelete) {\n                    receiverReportFactoryIdsToDelete.delete(stats.id);\n                }\n                var receiverReportFactory = getOrCreateReceiverReportFactory(factory, report, stats, trackId);\n                if (receiverReportFactory) {\n                    receiverReportFactory.next(trackId || receiverReportFactory.trackId, stats);\n                }\n            }\n        }\n    }\n    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_3) throw e_3.error; }\n    }\n}\n/**\n * @param {SenderReportFactoriesByMediaType|ReceiverReportFactoriesByMediaType} senderOrReceiverReportFactoriesByMediaType\n * @param {StatsIdsByMediaType} senderOrReceiverReportFactoryIdsByMediaType\n * @returns {void}\n */\nfunction deleteSenderOrReceiverReportFactories(senderOrReceiverReportFactoriesByMediaType, senderOrReceiverReportFactoryIdsByMediaType) {\n    var _loop_1 = function (mediaType) {\n        var senderOrReceiverReportFactories = senderOrReceiverReportFactoriesByMediaType[mediaType];\n        var senderOrReceiverReportFactoryIds = senderOrReceiverReportFactoryIdsByMediaType[mediaType];\n        senderOrReceiverReportFactoryIds.forEach(function (senderOrReceiverReportFactoryId) { return senderOrReceiverReportFactories.delete(senderOrReceiverReportFactoryId); });\n    };\n    for (var mediaType in senderOrReceiverReportFactoryIdsByMediaType) {\n        _loop_1(mediaType);\n    }\n}\n/**\n * @param {IceReportFactory} ice\n * @param {RTCStatsReport} report\n * @returns {void}\n */\nfunction updateIceReport(ice, report) {\n    var e_4, _a, e_5, _b;\n    var selectedCandidatePair;\n    try {\n        for (var _c = __values(report.values()), _d = _c.next(); !_d.done; _d = _c.next()) {\n            var stats = _d.value;\n            if (stats.type === 'transport') {\n                selectedCandidatePair = report.get(stats.selectedCandidatePairId);\n            }\n        }\n    }\n    catch (e_4_1) { e_4 = { error: e_4_1 }; }\n    finally {\n        try {\n            if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n        }\n        finally { if (e_4) throw e_4.error; }\n    }\n    if (selectedCandidatePair) {\n        ice.next(selectedCandidatePair);\n        return;\n    }\n    try {\n        for (var _e = __values(report.values()), _f = _e.next(); !_f.done; _f = _e.next()) {\n            var stats = _f.value;\n            if (stats.type === 'candidate-pair'\n                && stats.nominated\n                && ('selected' in stats ? stats.selected : true)) {\n                ice.next(stats);\n            }\n        }\n    }\n    catch (e_5_1) { e_5 = { error: e_5_1 }; }\n    finally {\n        try {\n            if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n        }\n        finally { if (e_5) throw e_5.error; }\n    }\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {Promise<PeerConnectionReport>}\n */\nfunction updateFirefox(factory) {\n    var senders = factory.pc.getTransceivers()\n        .filter(function (transceiver) { return transceiver.currentDirection && transceiver.currentDirection.match(/send/) && transceiver.sender.track; })\n        .map(function (transceiver) { return transceiver.sender; });\n    var receivers = factory.pc.getTransceivers()\n        .filter(function (transceiver) { return transceiver.currentDirection && transceiver.currentDirection.match(/recv/); })\n        .map(function (transceiver) { return transceiver.receiver; });\n    return Promise.all([\n        getSenderOrReceiverReports(senders),\n        getSenderOrReceiverReports(receivers),\n        factory.pc.getStats()\n    ]).then(function (_a) {\n        var _b = __read(_a, 3), senderReports = _b[0], receiverReports = _b[1], pcReport = _b[2];\n        var senderReportFactoriesByMediaType = getSenderReportFactoriesByMediaType(factory);\n        var senderReportFactoryIdsToDeleteByMediaType = getSenderReportFactoryIdsByMediaType(factory);\n        senderReports.forEach(function (report, trackId) { return updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType, trackId); });\n        deleteSenderOrReceiverReportFactories(senderReportFactoriesByMediaType, senderReportFactoryIdsToDeleteByMediaType);\n        var receiverReportFactoriesByMediaType = getReceiverReportFactoriesByMediaType(factory);\n        var receiverReportFactoryIdsToDeleteByMediaType = getReceiverReportFactoryIdsByMediaType(factory);\n        receiverReports.forEach(function (report, trackId) { return updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType, trackId); });\n        deleteSenderOrReceiverReportFactories(receiverReportFactoriesByMediaType, receiverReportFactoryIdsToDeleteByMediaType);\n        updateIceReport(factory.ice, pcReport);\n    });\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {Promise<PeerConnectionReport>}\n */\nfunction updateChrome(factory) {\n    return factory.pc.getStats().then(function (report) {\n        var senderReportFactoriesByMediaType = getSenderReportFactoriesByMediaType(factory);\n        var senderReportFactoryIdsToDeleteByMediaType = getSenderReportFactoryIdsByMediaType(factory);\n        updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType);\n        deleteSenderOrReceiverReportFactories(senderReportFactoriesByMediaType, senderReportFactoryIdsToDeleteByMediaType);\n        var receiverReportFactoriesByMediaType = getReceiverReportFactoriesByMediaType(factory);\n        var receiverReportFactoryIdsToDeleteByMediaType = getReceiverReportFactoryIdsByMediaType(factory);\n        updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType);\n        deleteSenderOrReceiverReportFactories(receiverReportFactoriesByMediaType, receiverReportFactoryIdsToDeleteByMediaType);\n        updateIceReport(factory.ice, report);\n    });\n}\nmodule.exports = PeerConnectionReportFactory;\n\n},{\"../webrtc/util\":185,\"./icereportfactory\":106,\"./peerconnectionreport\":120,\"./receiverreportfactory\":123,\"./senderreportfactory\":130}],122:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar average = require('./average');\nvar SenderOrReceiverReport = require('./senderorreceiverreport');\nvar sum = require('./sum');\n/**\n * @interface ReceiverSummary\n * @property {number} bitrate\n * @property {number} fractionLost - 0–1\n * @property {number} [jitter] - s (undefined for video tracks in Chrome)\n */\n/**\n * @extends SenderOrReceiverReport\n * @property {number} deltaPacketsLost\n * @property {number} deltaPacketsReceived\n * @property {number} [fractionLost] - 0–1 (undefined in Firefox)\n * @property {number} [jitter] - s (undefined for video tracks in Chrome)\n * @property {number} phonyPacketsLost - 0–1\n */\nvar ReceiverReport = /** @class */ (function (_super) {\n    __extends(ReceiverReport, _super);\n    /**\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {number} bitrate - bps\n     * @param {number} deltaPacketsLost\n     * @param {number} deltaPacketsReceived\n     * @param {number} [fractionLost] - 0–1 (undefined in Firefox)\n     * @param {number} [jitter] - s (undefined for video tracks in Chrome)\n     */\n    function ReceiverReport(id, trackId, bitrate, deltaPacketsLost, deltaPacketsReceived, fractionLost, jitter) {\n        var _this = _super.call(this, id, trackId, bitrate) || this;\n        var phonyFractionLost = deltaPacketsReceived > 0\n            ? deltaPacketsLost / deltaPacketsReceived\n            : 0;\n        Object.defineProperties(_this, {\n            deltaPacketsLost: {\n                enumerable: true,\n                value: deltaPacketsLost\n            },\n            deltaPacketsReceived: {\n                enumerable: true,\n                value: deltaPacketsReceived\n            },\n            fractionLost: {\n                enumerable: true,\n                value: fractionLost\n            },\n            jitter: {\n                enumerable: true,\n                value: jitter\n            },\n            phonyFractionLost: {\n                enumerable: true,\n                value: phonyFractionLost\n            }\n        });\n        return _this;\n    }\n    /**\n     * Create a {@link ReceiverReport}.\n     * @param {string} trackId\n     * @param {RTCStats} olderStats\n     * @param {RTCStats} newerStats\n     * @returns {ReceiverReport}\n     */\n    ReceiverReport.of = function (trackId, olderStats, newerStats) {\n        if (olderStats.id !== newerStats.id) {\n            throw new Error('RTCStats IDs must match');\n        }\n        var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n        var deltaBytesReceived = newerStats.bytesReceived - olderStats.bytesReceived;\n        var bitrate = secondsElapsed > 0\n            ? (deltaBytesReceived / secondsElapsed) * 8\n            : 0;\n        var deltaPacketsLost = Math.max(newerStats.packetsLost - olderStats.packetsLost, 0);\n        var deltaPacketsReceived = newerStats.packetsReceived - olderStats.packetsReceived;\n        var fractionLost = newerStats.fractionLost, jitter = newerStats.jitter;\n        return new ReceiverReport(olderStats.id, trackId, bitrate, deltaPacketsLost, deltaPacketsReceived, fractionLost, jitter);\n    };\n    /**\n     * Summarize {@link ReceiverReport}s by summing and averaging their values.\n     * @param {Array<ReceiverReport>} reports\n     * @returns {ReceiverSummary}\n     */\n    ReceiverReport.summarize = function (reports) {\n        var summaries = reports.map(function (report) { return report.summarize(); });\n        var bitrate = sum(summaries.map(function (summary) { return summary.bitrate; }));\n        var fractionLost = average(summaries.map(function (summary) { return summary.fractionLost; }));\n        var jitter = average(summaries.map(function (summary) { return summary.jitter; }));\n        return {\n            bitrate: bitrate,\n            fractionLost: fractionLost,\n            jitter: jitter\n        };\n    };\n    /**\n     * Summarize the {@link ReceiveReport}.\n     * @returns {ReceiverSummary}\n     */\n    ReceiverReport.prototype.summarize = function () {\n        return {\n            bitrate: this.bitrate,\n            fractionLost: typeof this.fractionLost === 'number' ? this.fractionLost : this.phonyFractionLost,\n            jitter: this.jitter\n        };\n    };\n    return ReceiverReport;\n}(SenderOrReceiverReport));\nmodule.exports = ReceiverReport;\n\n},{\"./average\":104,\"./senderorreceiverreport\":127,\"./sum\":132}],123:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar ReceiverReport = require('./receiverreport');\nvar SenderOrReceiverReportFactory = require('./senderorreceiverreportfactory');\n/**\n * @extends SenderOrReceiverReportFactory\n * @param {?ReceiverReport} lastReport\n */\nvar ReceiverReportFactory = /** @class */ (function (_super) {\n    __extends(ReceiverReportFactory, _super);\n    /**\n     * Construct a {@link ReceiverReportFactory}.\n     * @param {TrackId} trackId\n     * @param {RTCStats} initialStats\n     */\n    function ReceiverReportFactory(trackId, initialStats) {\n        var _this = _super.call(this, initialStats.id, trackId, initialStats) || this;\n        Object.defineProperties(_this, {\n            lastReport: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * Create a {@link ReceiverReport}.\n     * @param {TrackId} trackId\n     * @param {RTCStats} newerStats\n     * @returns {ReceiverReport}\n     */\n    ReceiverReportFactory.prototype.next = function (trackId, newerStats) {\n        var olderStats = this.lastStats;\n        this.lastStats = newerStats;\n        this.trackId = trackId;\n        var report = ReceiverReport.of(trackId, olderStats, newerStats);\n        this.lastReport = report;\n        return report;\n    };\n    return ReceiverReportFactory;\n}(SenderOrReceiverReportFactory));\nmodule.exports = ReceiverReportFactory;\n\n},{\"./receiverreport\":122,\"./senderorreceiverreportfactory\":128}],124:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackStats = require('./remotetrackstats');\n/**\n * Statistics for an {@link AudioTrack}.\n * @extends RemoteTrackStats\n * @property {?AudioLevel} audioLevel - Output {@link AudioLevel}\n */\nvar RemoteAudioTrackStats = /** @class */ (function (_super) {\n    __extends(RemoteAudioTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link AudioTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function RemoteAudioTrackStats(trackId, statsReport) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        Object.defineProperties(_this, {\n            audioLevel: {\n                value: typeof statsReport.audioOutputLevel === 'number'\n                    ? statsReport.audioOutputLevel\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return RemoteAudioTrackStats;\n}(RemoteTrackStats));\nmodule.exports = RemoteAudioTrackStats;\n\n},{\"./remotetrackstats\":125}],125:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TrackStats = require('./trackstats');\n/**\n * Statistics for a remote {@link Track}.\n * @extends TrackStats\n * @property {?number} bytesReceived - Number of bytes received\n * @property {?number} packetsReceived - Number of packets received\n * @property {?number} jitter - Jitter in milliseconds\n */\nvar RemoteTrackStats = /** @class */ (function (_super) {\n    __extends(RemoteTrackStats, _super);\n    /*\n     * @param {string} trackId - {@link Track} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function RemoteTrackStats(trackId, statsReport) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        Object.defineProperties(_this, {\n            bytesReceived: {\n                value: typeof statsReport.bytesReceived === 'number'\n                    ? statsReport.bytesReceived\n                    : null,\n                enumerable: true\n            },\n            packetsReceived: {\n                value: typeof statsReport.packetsReceived === 'number'\n                    ? statsReport.packetsReceived\n                    : null,\n                enumerable: true\n            },\n            jitter: {\n                value: typeof statsReport.jitter === 'number'\n                    ? statsReport.jitter\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return RemoteTrackStats;\n}(TrackStats));\nmodule.exports = RemoteTrackStats;\n\n},{\"./trackstats\":133}],126:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RemoteTrackStats = require('./remotetrackstats');\n/**\n * Statistics for a {@link VideoTrack}.\n * @extends RemoteTrackStats\n * @property {?VideoTrack#Dimensions} dimensions - Received video resolution\n * @property {?number} frameRate - Received video frame rate\n * @property {?number} freezeCount - Total number of video freezes experienced by this receiver\n */\nvar RemoteVideoTrackStats = /** @class */ (function (_super) {\n    __extends(RemoteVideoTrackStats, _super);\n    /**\n     * @param {string} trackId - {@link VideoTrack} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function RemoteVideoTrackStats(trackId, statsReport) {\n        var _this = _super.call(this, trackId, statsReport) || this;\n        var dimensions = null;\n        if (typeof statsReport.frameWidthReceived === 'number' &&\n            typeof statsReport.frameHeightReceived === 'number') {\n            dimensions = {};\n            Object.defineProperties(dimensions, {\n                width: {\n                    value: statsReport.frameWidthReceived,\n                    enumerable: true\n                },\n                height: {\n                    value: statsReport.frameHeightReceived,\n                    enumerable: true\n                }\n            });\n        }\n        Object.defineProperties(_this, {\n            dimensions: {\n                value: dimensions,\n                enumerable: true\n            },\n            frameRate: {\n                value: typeof statsReport.frameRateReceived === 'number'\n                    ? statsReport.frameRateReceived\n                    : null,\n                enumerable: true\n            },\n            freezeCount: {\n                value: typeof statsReport.freezeCount === 'number'\n                    ? statsReport.freezeCount\n                    : null,\n                enumerable: true\n            }\n        });\n        return _this;\n    }\n    return RemoteVideoTrackStats;\n}(RemoteTrackStats));\nmodule.exports = RemoteVideoTrackStats;\n\n},{\"./remotetrackstats\":125}],127:[function(require,module,exports){\n'use strict';\n/**\n * @property {StatsId} id\n * @property {TrackId} trackId\n * @property {number} bitrate - bps\n */\nvar SenderOrReceiverReport = /** @class */ (function () {\n    /**\n     * Construct a {@link SenderOrReceiverReport}.\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {number} bitrate - bps\n     */\n    function SenderOrReceiverReport(id, trackId, bitrate) {\n        Object.defineProperties(this, {\n            id: {\n                enumerable: true,\n                value: id\n            },\n            trackId: {\n                enumerable: true,\n                value: trackId\n            },\n            bitrate: {\n                enumerable: true,\n                value: bitrate\n            }\n        });\n    }\n    return SenderOrReceiverReport;\n}());\nmodule.exports = SenderOrReceiverReport;\n\n},{}],128:[function(require,module,exports){\n'use strict';\n/**\n * @property {StatsId} id\n * @property {TrackId} trackId\n * @property {RTCStats} lastStats\n */\nvar SenderOrReceiverReportFactory = /** @class */ (function () {\n    /**\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {RTCStats} initialStats\n     */\n    function SenderOrReceiverReportFactory(id, trackId, initialStats) {\n        Object.defineProperties(this, {\n            id: {\n                enumerable: true,\n                value: id,\n                writable: true\n            },\n            trackId: {\n                enumerable: true,\n                value: trackId,\n                writable: true\n            },\n            lastStats: {\n                enumerable: true,\n                value: initialStats,\n                writable: true\n            }\n        });\n    }\n    return SenderOrReceiverReportFactory;\n}());\nmodule.exports = SenderOrReceiverReportFactory;\n\n},{}],129:[function(require,module,exports){\n/* eslint no-undefined:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar average = require('./average');\nvar SenderOrReceiverReport = require('./senderorreceiverreport');\nvar sum = require('./sum');\n/**\n * @interface SenderSummary\n * @property {number} bitrate\n * @property {number} [rtt] - s (undefined in Chrome)\n */\n/**\n * @extends SenderOrReceiverReport\n * @property {number} [rtt] - s (undefined in Chrome)\n */\nvar SenderReport = /** @class */ (function (_super) {\n    __extends(SenderReport, _super);\n    /**\n     * Construct a {@link SenderReport}.\n     * @param {StatsId} id\n     * @param {TrackId} trackId\n     * @param {number} bitrate - bps\n     * @param {number} [rtt] - s\n     */\n    function SenderReport(id, trackId, bitrate, rtt) {\n        var _this = _super.call(this, id, trackId, bitrate) || this;\n        Object.defineProperties(_this, {\n            rtt: {\n                enumerable: true,\n                value: rtt\n            }\n        });\n        return _this;\n    }\n    /**\n     * Create a {@link SenderReport}.\n     * @param {string} trackId\n     * @param {RTCStats} olderStats\n     * @param {RTCStats} newerStats\n     * @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]\n     * @returns {SenderReport}\n     */\n    SenderReport.of = function (trackId, olderStats, newerStats, newerRemoteStats) {\n        if (olderStats.id !== newerStats.id) {\n            throw new Error('RTCStats IDs must match');\n        }\n        var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n        var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;\n        var bitrate = secondsElapsed > 0\n            ? (deltaBytesSent / secondsElapsed) * 8\n            : 0;\n        var rtt = newerRemoteStats && typeof newerRemoteStats.roundTripTime === 'number'\n            ? newerRemoteStats.roundTripTime / 1000\n            : undefined;\n        return new SenderReport(olderStats.id, trackId, bitrate, rtt);\n    };\n    /**\n     * Summarize {@link SenderReport}s by summing and averaging their values.\n     * @param {Array<SenderReport>} reports\n     * @returns {SenderSummary}\n     */\n    SenderReport.summarize = function (reports) {\n        var bitrate = sum(reports.map(function (report) { return report.bitrate; }));\n        var rtt = average(reports.map(function (report) { return report.rtt; }));\n        return {\n            bitrate: bitrate,\n            rtt: rtt\n        };\n    };\n    return SenderReport;\n}(SenderOrReceiverReport));\nmodule.exports = SenderReport;\n\n},{\"./average\":104,\"./senderorreceiverreport\":127,\"./sum\":132}],130:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar SenderOrReceiverReportFactory = require('./senderorreceiverreportfactory');\nvar SenderReport = require('./senderreport');\n/**\n * @extends {SenderOrReceiverReportFactory}\n * @property {?SenderReport} lastReport\n */\nvar SenderReportFactory = /** @class */ (function (_super) {\n    __extends(SenderReportFactory, _super);\n    /**\n     * Construct a {@link SenderReportFactory}.\n     * @param {TrackId} trackId\n     * @param {RTCStats} initialStats\n     */\n    function SenderReportFactory(trackId, initialStats) {\n        var _this = _super.call(this, initialStats.id, trackId, initialStats) || this;\n        Object.defineProperties(_this, {\n            lastReport: {\n                enumerable: true,\n                value: null,\n                writable: true\n            }\n        });\n        return _this;\n    }\n    /**\n     * @param {TrackId} trackId\n     * @param {RTCStats} newerStats\n     * @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]\n     * @returns {SenderReport}\n     */\n    SenderReportFactory.prototype.next = function (trackId, newerStats, newerRemoteStats) {\n        var olderStats = this.lastStats;\n        this.lastStats = newerStats;\n        this.trackId = trackId;\n        var report = SenderReport.of(trackId, olderStats, newerStats, newerRemoteStats);\n        this.lastReport = report;\n        return report;\n    };\n    return SenderReportFactory;\n}(SenderOrReceiverReportFactory));\nmodule.exports = SenderReportFactory;\n\n},{\"./senderorreceiverreportfactory\":128,\"./senderreport\":129}],131:[function(require,module,exports){\n'use strict';\nvar LocalAudioTrackStats = require('./localaudiotrackstats');\nvar LocalVideoTrackStats = require('./localvideotrackstats');\nvar RemoteAudioTrackStats = require('./remoteaudiotrackstats');\nvar RemoteVideoTrackStats = require('./remotevideotrackstats');\n/**\n * Statistics report for an RTCPeerConnection.\n * @property {string} peerConnectionId - ID of the RTCPeerConnection\n * @property {Array<LocalAudioTrackStats>} localAudioTrackStats - List of {@link LocalAudioTrackStats}\n * @property {Array<LocalVideoTrackStats>} localVideoTrackStats - List of {@link LocalVideoTrackStats}\n * @property {Array<RemoteAudioTrackStats>} remoteAudioTrackStats - List of {@link RemoteAudioTrackStats}\n * @property {Array<RemoteVideoTrackStats>} remoteVideoTrackStats - List of {@link RemoteVideoTrackStats}\n */\nvar StatsReport = /** @class */ (function () {\n    /**\n     * @param {string} peerConnectionId - RTCPeerConnection ID\n     * @param {StandardizedStatsResponse} statsResponse\n     * @param {boolean} prepareForInsights - if report is being prepared to send to insights.\n     */\n    function StatsReport(peerConnectionId, statsResponse, prepareForInsights) {\n        if (typeof peerConnectionId !== 'string') {\n            throw new Error('RTCPeerConnection id must be a string');\n        }\n        Object.defineProperties(this, {\n            peerConnectionId: {\n                value: peerConnectionId,\n                enumerable: true\n            },\n            localAudioTrackStats: {\n                value: statsResponse.localAudioTrackStats.map(function (report) { return new LocalAudioTrackStats(report.trackId, report, prepareForInsights); }),\n                enumerable: true\n            },\n            localVideoTrackStats: {\n                value: statsResponse.localVideoTrackStats.map(function (report) { return new LocalVideoTrackStats(report.trackId, report, prepareForInsights); }),\n                enumerable: true\n            },\n            remoteAudioTrackStats: {\n                value: statsResponse.remoteAudioTrackStats.map(function (report) { return new RemoteAudioTrackStats(report.trackId, report); }),\n                enumerable: true\n            },\n            remoteVideoTrackStats: {\n                value: statsResponse.remoteVideoTrackStats.map(function (report) { return new RemoteVideoTrackStats(report.trackId, report); }),\n                enumerable: true\n            }\n        });\n    }\n    return StatsReport;\n}());\nmodule.exports = StatsReport;\n\n},{\"./localaudiotrackstats\":107,\"./localvideotrackstats\":109,\"./remoteaudiotrackstats\":124,\"./remotevideotrackstats\":126}],132:[function(require,module,exports){\n'use strict';\n/**\n * @param {Array<number|undefined>} xs\n * @returns {number}\n */\nfunction sum(xs) {\n    return xs.reduce(function (y, x) { return typeof x === 'number' ? x + y : y; }, 0);\n}\nmodule.exports = sum;\n\n},{}],133:[function(require,module,exports){\n'use strict';\n/**\n * Statistics for a {@link Track}.\n * @property {Track.ID} trackId - The {@link Track} ID\n * @property {Track.SID} trackSid - The {@link Track}'s SID when published in\n *  in a {@link Room}\n * @property {number} timestamp - A Unix timestamp in milliseconds indicating\n *   when the {@link TrackStats} were gathered\n * @property {string} ssrc - The {@link Track}'s SSRC when transmitted over the\n *   RTCPeerConnection\n * @property {?number} packetsLost - The number of packets lost\n * @property {?string} codec - The name of the codec used to encode the\n *   {@link Track}'s media\n */\nvar TrackStats = /** @class */ (function () {\n    /**\n     * @param {string} trackId - {@link Track} ID\n     * @param {StandardizedTrackStatsReport} statsReport\n     */\n    function TrackStats(trackId, statsReport) {\n        if (typeof trackId !== 'string') {\n            throw new Error('Track id must be a string');\n        }\n        Object.defineProperties(this, {\n            trackId: {\n                value: trackId,\n                enumerable: true\n            },\n            trackSid: {\n                value: statsReport.trackSid,\n                enumerable: true\n            },\n            timestamp: {\n                value: statsReport.timestamp,\n                enumerable: true\n            },\n            ssrc: {\n                value: statsReport.ssrc,\n                enumerable: true\n            },\n            packetsLost: {\n                value: typeof statsReport.packetsLost === 'number'\n                    ? statsReport.packetsLost\n                    : null,\n                enumerable: true\n            },\n            codec: {\n                value: typeof statsReport.codecName === 'string'\n                    ? statsReport.codecName\n                    : null,\n                enumerable: true\n            }\n        });\n    }\n    return TrackStats;\n}());\nmodule.exports = TrackStats;\n\n},{}],134:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar QueueingEventEmitter = require('./queueingeventemitter');\n/**\n * A {@link TrackTransceiver} represents either one or more local RTCRtpSenders\n * or RTCDataChannels, or a single RTCRtpReceiver or remote RTCDataChannel.\n * @extends QueueingEventEmitter\n * @property {Track.ID} id\n * @property {Track.kind} kind\n */\nvar TrackTransceiver = /** @class */ (function (_super) {\n    __extends(TrackTransceiver, _super);\n    /**\n     * Construct a {@link TrackTransceiver}.\n     * @param {Track.ID} id\n     * @param {Track.kind} kind\n     */\n    function TrackTransceiver(id, kind) {\n        var _this = _super.call(this) || this;\n        Object.defineProperties(_this, {\n            id: {\n                enumerable: true,\n                value: id\n            },\n            kind: {\n                enumerable: true,\n                value: kind\n            }\n        });\n        return _this;\n    }\n    /**\n     * Stop the {@link TrackTransceiver}.\n     * #emits TrackTransceiver#stopped\n     * @returns {void}\n     */\n    TrackTransceiver.prototype.stop = function () {\n        this.emit('stopped');\n    };\n    return TrackTransceiver;\n}(QueueingEventEmitter));\n/**\n * The {@link TrackTransceiver} was stopped.\n * @event TrackTransceiver#stopped\n */\nmodule.exports = TrackTransceiver;\n\n},{\"./queueingeventemitter\":69}],135:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar StateMachine = require('./statemachine');\nvar _a = require('./util'), buildLogLevels = _a.buildLogLevels, makeUUID = _a.makeUUID;\nvar Log = require('./util/log');\nvar NetworkMonitor = require('./util/networkmonitor');\nvar Timeout = require('./util/timeout');\nvar nInstances = 0;\n/*\n  TwilioConnection states\n  -----------------------\n\n       ------------------------------------------\n       |                                        |\n       |                                        v\n  +---------+       +--------------+       +----------+\n  |  early  | ----> |  connecting  | ----> |  closed  |\n  +---------+       +--------------+       +----------+\n    ^                     | ^ |                 ^ ^\n    | --------------------- | |                 | |\n    | | --------------------- |                 | |\n    | | | --------------------|------------------ |\n    | v | |                   v                   |\n  +----------+           +--------+               |\n  | waiting  | --------> |  open  | ---------------\n  +----------+           +--------+\n */\nvar states = {\n    closed: [],\n    connecting: ['closed', 'open', 'waiting'],\n    early: ['closed', 'connecting'],\n    open: ['closed'],\n    waiting: ['closed', 'connecting', 'early', 'open']\n};\nvar events = {\n    closed: 'close',\n    open: 'open',\n    waiting: 'waiting'\n};\nvar TCMP_VERSION = 2;\nvar DEFAULT_MAX_CONSECUTIVE_MISSED_HEARTBEATS = 3;\nvar DEFAULT_MAX_CONSECUTIVE_FAILED_HELLOS = 3;\nvar DEFAULT_MAX_REQUESTED_HEARTBEAT_TIMEOUT = 5000;\nvar DEFAULT_OPEN_TIMEOUT = 15000;\nvar DEFAULT_WELCOME_TIMEOUT = 5000;\nvar OUTGOING_HEARTBEAT_OFFSET = 200;\nvar WS_CLOSE_NORMAL = 1000;\nvar WS_CLOSE_WELCOME_TIMEOUT = 3000;\nvar WS_CLOSE_HEARTBEATS_MISSED = 3001;\nvar WS_CLOSE_HELLO_FAILED = 3002;\nvar WS_CLOSE_SEND_FAILED = 3003;\nvar WS_CLOSE_NETWORK_CHANGED = 3004;\nvar WS_CLOSE_BUSY_WAIT = 3005;\nvar WS_CLOSE_SERVER_BUSY = 3006;\nvar WS_CLOSE_OPEN_TIMEOUT = 3007;\n// NOTE(joma): If you want to use close code 3008, please increment\n// the close code in test/integration/spec/docker/reconnection.js\n// line number 492.\nvar toplevel = globalThis;\nvar WebSocket = toplevel.WebSocket ? toplevel.WebSocket : require('ws');\nvar CloseReason = {\n    BUSY: 'busy',\n    FAILED: 'failed',\n    LOCAL: 'local',\n    REMOTE: 'remote',\n    TIMEOUT: 'timeout'\n};\nvar wsCloseCodesToCloseReasons = new Map([\n    [WS_CLOSE_WELCOME_TIMEOUT, CloseReason.TIMEOUT],\n    [WS_CLOSE_HEARTBEATS_MISSED, CloseReason.TIMEOUT],\n    [WS_CLOSE_HELLO_FAILED, CloseReason.FAILED],\n    [WS_CLOSE_SEND_FAILED, CloseReason.FAILED],\n    [WS_CLOSE_NETWORK_CHANGED, CloseReason.TIMEOUT],\n    [WS_CLOSE_SERVER_BUSY, CloseReason.BUSY],\n    [WS_CLOSE_OPEN_TIMEOUT, CloseReason.TIMEOUT]\n]);\n/**\n * A {@link TwilioConnection} represents a WebSocket connection\n * to a Twilio Connections Messaging Protocol (TCMP) server.\n * @fires TwilioConnection#close\n * @fires TwilioConnection#error\n * @fires TwilioConnection#message\n * @fires TwilioConnection#open\n * @fires TwilioConnection#waiting\n */\nvar TwilioConnection = /** @class */ (function (_super) {\n    __extends(TwilioConnection, _super);\n    /**\n     * Construct a {@link TwilioConnection}.\n     * @param {string} serverUrl - TCMP server url\n     * @param {TwilioConnectionOptions} options - {@link TwilioConnection} options\n     */\n    function TwilioConnection(serverUrl, options) {\n        var _this = _super.call(this, 'early', states) || this;\n        options = Object.assign({\n            helloBody: null,\n            maxConsecutiveFailedHellos: DEFAULT_MAX_CONSECUTIVE_FAILED_HELLOS,\n            maxConsecutiveMissedHeartbeats: DEFAULT_MAX_CONSECUTIVE_MISSED_HEARTBEATS,\n            requestedHeartbeatTimeout: DEFAULT_MAX_REQUESTED_HEARTBEAT_TIMEOUT,\n            openTimeout: DEFAULT_OPEN_TIMEOUT,\n            welcomeTimeout: DEFAULT_WELCOME_TIMEOUT,\n            Log: Log,\n            WebSocket: WebSocket\n        }, options);\n        var logLevels = buildLogLevels(options.logLevel);\n        var log = new options.Log('default', _this, logLevels, options.loggerName);\n        var networkMonitor = options.networkMonitor ? new NetworkMonitor(function () {\n            var type = networkMonitor.type;\n            var reason = \"Network changed\".concat(type ? \" to \".concat(type) : '');\n            log.debug(reason);\n            _this._close({ code: WS_CLOSE_NETWORK_CHANGED, reason: reason });\n        }) : null;\n        Object.defineProperties(_this, {\n            _busyWaitTimeout: {\n                value: null,\n                writable: true\n            },\n            _consecutiveHeartbeatsMissed: {\n                value: 0,\n                writable: true\n            },\n            _cookie: {\n                value: null,\n                writable: true\n            },\n            _eventObserver: {\n                value: options.eventObserver\n            },\n            _heartbeatTimeout: {\n                value: null,\n                writable: true\n            },\n            _hellosLeft: {\n                value: options.maxConsecutiveFailedHellos,\n                writable: true\n            },\n            _instanceId: {\n                value: ++nInstances\n            },\n            _log: {\n                value: log\n            },\n            _messageQueue: {\n                value: []\n            },\n            _networkMonitor: {\n                value: networkMonitor\n            },\n            _options: {\n                value: options\n            },\n            _openTimeout: {\n                value: null,\n                writable: true\n            },\n            _sendHeartbeatTimeout: {\n                value: null,\n                writable: true\n            },\n            _serverUrl: {\n                value: serverUrl\n            },\n            _welcomeTimeout: {\n                value: null,\n                writable: true\n            },\n            _ws: {\n                value: null,\n                writable: true\n            }\n        });\n        var eventsToLevels = {\n            connecting: 'info',\n            early: 'info',\n            open: 'info',\n            waiting: 'warning',\n            closed: 'info'\n        };\n        _this.on('stateChanged', function (state) {\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            if (state in events) {\n                _this.emit.apply(_this, __spreadArray([events[state]], __read(args), false));\n            }\n            var event = { name: state, group: 'signaling', level: eventsToLevels[_this.state] };\n            if (state === 'closed') {\n                var _a = __read(args, 1), reason = _a[0];\n                event.payload = { reason: reason };\n                event.level = reason === CloseReason.LOCAL ? 'info' : 'error';\n            }\n            _this._eventObserver.emit('event', event);\n        });\n        _this._eventObserver.emit('event', { name: _this.state, group: 'signaling', level: eventsToLevels[_this.state] });\n        _this._connect();\n        return _this;\n    }\n    TwilioConnection.prototype.toString = function () {\n        return \"[TwilioConnection #\".concat(this._instanceId, \": \").concat(this._ws.url, \"]\");\n    };\n    /**\n     * Close the {@link TwilioConnection}.\n     * @param {{code: number, reason: string}} event\n     * @private\n     */\n    TwilioConnection.prototype._close = function (_a) {\n        var code = _a.code, reason = _a.reason;\n        if (this.state === 'closed') {\n            return;\n        }\n        if (this._openTimeout) {\n            this._openTimeout.clear();\n        }\n        if (this._welcomeTimeout) {\n            this._welcomeTimeout.clear();\n        }\n        if (this._heartbeatTimeout) {\n            this._heartbeatTimeout.clear();\n        }\n        if (this._sendHeartbeatTimeout) {\n            this._sendHeartbeatTimeout.clear();\n        }\n        if (this._networkMonitor) {\n            this._networkMonitor.stop();\n        }\n        if (this._busyWaitTimeout && code !== WS_CLOSE_BUSY_WAIT) {\n            this._busyWaitTimeout.clear();\n        }\n        this._messageQueue.splice(0);\n        var log = this._log;\n        if (code === WS_CLOSE_NORMAL) {\n            log.debug('Closed');\n            this.transition('closed', null, [CloseReason.LOCAL]);\n        }\n        else {\n            log.warn(\"Closed: \".concat(code, \" - \").concat(reason));\n            if (code !== WS_CLOSE_BUSY_WAIT) {\n                this.transition('closed', null, [\n                    wsCloseCodesToCloseReasons.get(code) || CloseReason.REMOTE\n                ]);\n            }\n        }\n        var readyState = this._ws.readyState;\n        var WebSocket = this._options.WebSocket;\n        if (readyState !== WebSocket.CLOSING && readyState !== WebSocket.CLOSED) {\n            this._ws.close(code, reason);\n        }\n    };\n    /**\n     * Connect to the TCMP server.\n     * @private\n     */\n    TwilioConnection.prototype._connect = function () {\n        var _this = this;\n        var log = this._log;\n        if (this.state === 'waiting') {\n            this.transition('early');\n        }\n        else if (this.state !== 'early') {\n            log.warn(\"Unexpected state \\\"\".concat(this.state, \"\\\" for connecting to the\")\n                + ' TCMP server.');\n            return;\n        }\n        this._ws = new this._options.WebSocket(this._serverUrl);\n        var ws = this._ws;\n        log.debug('Created a new WebSocket:', ws);\n        ws.addEventListener('close', function (event) { return _this._close(event); });\n        var openTimeout = this._options.openTimeout;\n        // Add a timeout for getting the onopen event on the WebSocket (15 sec). After that, attempt to reconnect only if this is not the first attempt.\n        this._openTimeout = new Timeout(function () {\n            var reason = \"Failed to open in \".concat(openTimeout, \" ms\");\n            _this._close({ code: WS_CLOSE_OPEN_TIMEOUT, reason: reason });\n        }, openTimeout);\n        ws.addEventListener('open', function () {\n            log.debug('WebSocket opened:', ws);\n            _this._openTimeout.clear();\n            _this._startHandshake();\n            if (_this._networkMonitor) {\n                _this._networkMonitor.start();\n            }\n        });\n        ws.addEventListener('message', function (message) {\n            log.debug(\"Incoming: \".concat(message.data));\n            try {\n                message = JSON.parse(message.data);\n            }\n            catch (error) {\n                _this.emit('error', error);\n                return;\n            }\n            switch (message.type) {\n                case 'bad':\n                    _this._handleBad(message);\n                    break;\n                case 'busy':\n                    _this._handleBusy(message);\n                    break;\n                case 'bye':\n                    // Do nothing.\n                    break;\n                case 'msg':\n                    _this._handleMessage(message);\n                // NOTE(mpatwardhan): Each incoming message should be treated as an incoming\n                // heartbeat intentionally falling through to 'heartbeat' case.\n                // eslint-disable-next-line no-fallthrough\n                case 'heartbeat':\n                    _this._handleHeartbeat();\n                    break;\n                case 'welcome':\n                    _this._handleWelcome(message);\n                    break;\n                default:\n                    _this._log.debug(\"Unknown message type: \".concat(message.type));\n                    _this.emit('error', new Error(\"Unknown message type: \".concat(message.type)));\n                    break;\n            }\n        });\n    };\n    /**\n     * Handle an incoming \"bad\" message.\n     * @param {{reason: string}} message\n     * @private\n     */\n    TwilioConnection.prototype._handleBad = function (_a) {\n        var reason = _a.reason;\n        var log = this._log;\n        if (!['connecting', 'open'].includes(this.state)) {\n            log.warn(\"Unexpected state \\\"\".concat(this.state, \"\\\" for handling a \\\"bad\\\" message\")\n                + ' from the TCMP server.');\n            return;\n        }\n        if (this.state === 'connecting') {\n            log.warn(\"Closing: \".concat(WS_CLOSE_HELLO_FAILED, \" - \").concat(reason));\n            this._close({ code: WS_CLOSE_HELLO_FAILED, reason: reason });\n            return;\n        }\n        log.debug(\"Error: \".concat(reason));\n        this.emit('error', new Error(reason));\n    };\n    /**\n     * Handle an incoming \"busy\" message.\n     * @param {{cookie: ?string, keepAlive: boolean, retryAfter: number}} message\n     * @private\n     */\n    TwilioConnection.prototype._handleBusy = function (_a) {\n        var _this = this;\n        var cookie = _a.cookie, keepAlive = _a.keepAlive, retryAfter = _a.retryAfter;\n        var log = this._log;\n        if (!['connecting', 'waiting'].includes(this.state)) {\n            log.warn(\"Unexpected state \\\"\".concat(this.state, \"\\\" for handling a \\\"busy\\\" message\")\n                + ' from the TCMP server.');\n            return;\n        }\n        if (this._busyWaitTimeout) {\n            this._busyWaitTimeout.clear();\n        }\n        if (this._welcomeTimeout) {\n            this._welcomeTimeout.clear();\n        }\n        var reason = retryAfter < 0\n            ? 'Received terminal \"busy\" message'\n            : \"Received \\\"busy\\\" message, retrying after \".concat(retryAfter, \" ms\");\n        if (retryAfter < 0) {\n            log.warn(\"Closing: \".concat(WS_CLOSE_SERVER_BUSY, \" - \").concat(reason));\n            this._close({ code: WS_CLOSE_SERVER_BUSY, reason: reason });\n            return;\n        }\n        var maxConsecutiveFailedHellos = this._options.maxConsecutiveFailedHellos;\n        this._hellosLeft = maxConsecutiveFailedHellos;\n        this._cookie = cookie || null;\n        if (keepAlive) {\n            log.warn(reason);\n            this._busyWaitTimeout = new Timeout(function () { return _this._startHandshake(); }, retryAfter);\n        }\n        else {\n            log.warn(\"Closing: \".concat(WS_CLOSE_BUSY_WAIT, \" - \").concat(reason));\n            this._close({ code: WS_CLOSE_BUSY_WAIT, reason: reason });\n            this._busyWaitTimeout = new Timeout(function () { return _this._connect(); }, retryAfter);\n        }\n        this.transition('waiting', null, [keepAlive, retryAfter]);\n    };\n    /**\n     * Handle an incoming \"heartbeat\" message.\n     * @private\n     */\n    TwilioConnection.prototype._handleHeartbeat = function () {\n        if (this.state !== 'open') {\n            this._log.warn(\"Unexpected state \\\"\".concat(this.state, \"\\\" for handling a \\\"heartbeat\\\"\")\n                + ' message from the TCMP server.');\n            return;\n        }\n        this._heartbeatTimeout.reset();\n    };\n    /**\n     * Handle a missed \"heartbeat\" message.\n     * @private\n     */\n    TwilioConnection.prototype._handleHeartbeatTimeout = function () {\n        if (this.state !== 'open') {\n            return;\n        }\n        var log = this._log;\n        var maxConsecutiveMissedHeartbeats = this._options.maxConsecutiveMissedHeartbeats;\n        log.debug(\"Consecutive heartbeats missed: \".concat(maxConsecutiveMissedHeartbeats));\n        var reason = \"Missed \".concat(maxConsecutiveMissedHeartbeats, \" \\\"heartbeat\\\" messages\");\n        log.warn(\"Closing: \".concat(WS_CLOSE_HEARTBEATS_MISSED, \" - \").concat(reason));\n        this._close({ code: WS_CLOSE_HEARTBEATS_MISSED, reason: reason });\n    };\n    /**\n     * Handle an incoming \"msg\" message.\n     * @param {{body: object}} message\n     * @private\n     */\n    TwilioConnection.prototype._handleMessage = function (_a) {\n        var body = _a.body;\n        if (this.state !== 'open') {\n            this._log.warn(\"Unexpected state \\\"\".concat(this.state, \"\\\" for handling a \\\"msg\\\" message\")\n                + ' from the TCMP server.');\n            return;\n        }\n        this.emit('message', body);\n    };\n    /**\n     * Handle an incoming \"welcome\" message.\n     * @param {{ negotiatedTimeout: number }} message\n     * @private\n     */\n    TwilioConnection.prototype._handleWelcome = function (_a) {\n        var _this = this;\n        var negotiatedTimeout = _a.negotiatedTimeout;\n        var log = this._log;\n        if (!['connecting', 'waiting'].includes(this.state)) {\n            log.warn(\"Unexpected state \\\"\".concat(this.state, \"\\\" for handling a \\\"welcome\\\"\")\n                + ' message from the TCMP server.');\n            return;\n        }\n        if (this.state === 'waiting') {\n            log.debug('Received \"welcome\" message, no need to retry connection.');\n            this._busyWaitTimeout.clear();\n        }\n        var maxConsecutiveMissedHeartbeats = this._options.maxConsecutiveMissedHeartbeats;\n        var heartbeatTimeout = negotiatedTimeout * maxConsecutiveMissedHeartbeats;\n        var outgoingHeartbeatTimeout = negotiatedTimeout - OUTGOING_HEARTBEAT_OFFSET;\n        this._welcomeTimeout.clear();\n        this._heartbeatTimeout = new Timeout(function () { return _this._handleHeartbeatTimeout(); }, heartbeatTimeout);\n        this._messageQueue.splice(0).forEach(function (message) { return _this._send(message); });\n        this._sendHeartbeatTimeout = new Timeout(function () { return _this._sendHeartbeat(); }, outgoingHeartbeatTimeout);\n        this.transition('open');\n    };\n    /**\n     * Handle a missed \"welcome\" message.\n     * @private\n     */\n    TwilioConnection.prototype._handleWelcomeTimeout = function () {\n        if (this.state !== 'connecting') {\n            return;\n        }\n        var log = this._log;\n        if (this._hellosLeft <= 0) {\n            var reason = 'All handshake attempts failed';\n            log.warn(\"Closing: \".concat(WS_CLOSE_WELCOME_TIMEOUT, \" - \").concat(reason));\n            this._close({ code: WS_CLOSE_WELCOME_TIMEOUT, reason: reason });\n            return;\n        }\n        var maxConsecutiveFailedHellos = this._options.maxConsecutiveFailedHellos;\n        log.warn(\"Handshake attempt \".concat(maxConsecutiveFailedHellos - this._hellosLeft, \" failed\"));\n        this._startHandshake();\n    };\n    /**\n     * Send a message to the TCMP server.\n     * @param {*} message\n     * @private\n     */\n    TwilioConnection.prototype._send = function (message) {\n        var readyState = this._ws.readyState;\n        var WebSocket = this._options.WebSocket;\n        if (readyState === WebSocket.OPEN) {\n            var data = JSON.stringify(message);\n            this._log.debug(\"Outgoing: \".concat(data));\n            try {\n                this._ws.send(data);\n                if (this._sendHeartbeatTimeout) {\n                    // Each outgoing message is to be treated as an outgoing heartbeat.\n                    this._sendHeartbeatTimeout.reset();\n                }\n            }\n            catch (error) {\n                var reason = 'Failed to send message';\n                this._log.warn(\"Closing: \".concat(WS_CLOSE_SEND_FAILED, \" - \").concat(reason));\n                this._close({ code: WS_CLOSE_SEND_FAILED, reason: reason });\n            }\n        }\n    };\n    /**\n     * Send a \"heartbeat\" message.\n     * @private\n     */\n    TwilioConnection.prototype._sendHeartbeat = function () {\n        if (this.state === 'closed') {\n            return;\n        }\n        this._send({ type: 'heartbeat' });\n    };\n    /**\n     * Send a \"hello\" message.\n     * @private\n     */\n    TwilioConnection.prototype._sendHello = function () {\n        var _a = this._options, helloBody = _a.helloBody, timeout = _a.requestedHeartbeatTimeout;\n        var hello = {\n            id: makeUUID(),\n            timeout: timeout,\n            type: 'hello',\n            version: TCMP_VERSION\n        };\n        if (this._cookie) {\n            hello.cookie = this._cookie;\n        }\n        if (helloBody) {\n            hello.body = helloBody;\n        }\n        this._send(hello);\n    };\n    /**\n     * Send or enqueue a message.\n     * @param {*} message\n     * @private\n     */\n    TwilioConnection.prototype._sendOrEnqueue = function (message) {\n        var _this = this;\n        if (this.state === 'closed') {\n            return;\n        }\n        var sendOrEnqueue = this.state === 'open'\n            ? function (message) { return _this._send(message); }\n            : function (message) { return _this._messageQueue.push(message); };\n        sendOrEnqueue(message);\n    };\n    /**\n     * Start the TCMP handshake.\n     * @private\n     */\n    TwilioConnection.prototype._startHandshake = function () {\n        var _this = this;\n        if (['early', 'waiting'].includes(this.state)) {\n            this.transition('connecting');\n        }\n        if (this.state !== 'connecting') {\n            return;\n        }\n        this._hellosLeft--;\n        this._sendHello();\n        var welcomeTimeout = this._options.welcomeTimeout;\n        this._welcomeTimeout = new Timeout(function () { return _this._handleWelcomeTimeout(); }, welcomeTimeout);\n    };\n    /**\n     * Close the {@link TwilioConnection}.\n     * @returns {void}\n     */\n    TwilioConnection.prototype.close = function () {\n        if (this.state === 'closed') {\n            return;\n        }\n        this._sendOrEnqueue({ type: 'bye' });\n        this._close({ code: WS_CLOSE_NORMAL, reason: 'Normal' });\n    };\n    /**\n     * Send a \"msg\" message.\n     * @param {*} body\n     * @returns {void}\n     */\n    TwilioConnection.prototype.sendMessage = function (body) {\n        this._sendOrEnqueue({ body: body, type: 'msg' });\n    };\n    return TwilioConnection;\n}(StateMachine));\n/**\n * A unique string depicting the reason for the {@link TwilioConnection} being closed.\n * @enum {string}\n */\nTwilioConnection.CloseReason = CloseReason;\n/**\n * A {@link TwilioConnection} was closed.\n * @event TwilioConnection#close\n * @param {CloseReason} reason - The reason for the {@link TwilioConnection} being closed\n */\n/**\n * A {@link TwilioConnection} received an error from the TCMP server.\n * @event TwilioConnection#error\n * @param {Error} error - The TCMP server error\n */\n/**\n * A {@link TwilioConnection} received a message from the TCMP server.\n * @event TwilioConnection#message\n * @param {*} body - Message body\n */\n/**\n * A {@link TwilioConnection} completed a hello/welcome handshake with the TCMP server.\n * @event TwilioConnection#open\n */\n/**\n * A {@link TwilioConnection} received a \"busy\" message from the TCMP server.\n * @event TwilioConnection#waiting\n * @param {boolean} keepAlive - true if the WebSocket connection is retained\n * @param {number} retryAfter - delay in milliseconds after which a retry is attempted\n */\n/**\n * {@link TwilioConnection} options\n * @typedef {object} TwilioConnectionOptions\n * @property {EventObserver} [eventObserver] - Optional event observer\n * @property {*} [helloBody=null] - Optional body for \"hello\" message\n * @property {LogLevel} [logLevel=warn] - Log level of the {@link TwilioConnection}\n * @property {number} [maxConsecutiveFailedHellos=3] - Max. number of consecutive failed \"hello\"s\n * @property {number} [maxConsecutiveMissedHeartbeats=3] - Max. number of (effective) consecutive \"heartbeat\" messages that can be missed\n * @property {number} [requestedHeartbeatTimeout=5000] - \"heartbeat\" timeout (ms) requested by the {@link TwilioConnection}\n * @property {number} [welcomeTimeout=5000] - Time (ms) to wait for the \"welcome\" message after sending the \"hello\" message\n */\nmodule.exports = TwilioConnection;\n\n},{\"./statemachine\":103,\"./util\":147,\"./util/log\":151,\"./util/networkmonitor\":153,\"./util/timeout\":161,\"ws\":190}],136:[function(require,module,exports){\n'use strict';\nvar defer = require('./').defer;\n/**\n * An {@link AsyncVar} is an \"asynchronous variable\" which may or may not\n * contain a value of some type T. You can put a value into the {@link AsyncVar}\n * with {@link AsyncVar#put}. Callers can take a value out of the\n * {@link AsyncVar} by queueing up with {@link AsyncVar#take}. N calls to\n * {@link AsyncVar#take} require N calls to {@link AsyncVar#put} to resolve, and\n * they resolve in order.\n */\nvar AsyncVar = /** @class */ (function () {\n    /**\n     * Construct an {@link AsyncVar}.\n     */\n    function AsyncVar() {\n        Object.defineProperties(this, {\n            _deferreds: {\n                value: []\n            },\n            _hasValue: {\n                value: false,\n                writable: true\n            },\n            _value: {\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n     * Put a value into the {@link AsyncVar}.\n     * @param {T} value\n     * @returns {this}\n     */\n    AsyncVar.prototype.put = function (value) {\n        this._hasValue = true;\n        this._value = value;\n        var deferred = this._deferreds.shift();\n        if (deferred) {\n            deferred.resolve(value);\n        }\n        return this;\n    };\n    /**\n     * Take the value out of the {@link AsyncVar}.\n     * @returns {Promise<T>}\n     */\n    AsyncVar.prototype.take = function () {\n        var _this = this;\n        if (this._hasValue && !this._deferreds.length) {\n            this._hasValue = false;\n            return Promise.resolve(this._value);\n        }\n        var deferred = defer();\n        this._deferreds.push(deferred);\n        return deferred.promise.then(function (value) {\n            _this._hasValue = false;\n            return value;\n        });\n    };\n    return AsyncVar;\n}());\nmodule.exports = AsyncVar;\n\n},{\"./\":147}],137:[function(require,module,exports){\n/**\n * Expose `Backoff`.\n */\nvar Backoff = /** @class */ (function () {\n    /**\n     * Construct a {@link Backoff}.\n     * @param {object} options\n     * @property {number} min - Initial timeout in milliseconds [100]\n     * @property {number} max - Max timeout [10000]\n     * @property {boolean} jitter - Apply jitter [0]\n     * @property {number} factor - Multiplication factor for Backoff operation [2]\n     */\n    function Backoff(options) {\n        Object.defineProperties(this, {\n            _min: {\n                value: options.min || 100\n            },\n            _max: {\n                value: options.max || 10000\n            },\n            _jitter: {\n                value: options.jitter > 0 && options.jitter <= 1 ? options.jitter : 0\n            },\n            _factor: {\n                value: options.factor || 2\n            },\n            _attempts: {\n                value: 0,\n                writable: true\n            },\n            _duration: {\n                enumerable: false,\n                get: function () {\n                    var ms = this._min * Math.pow(this._factor, this._attempts);\n                    if (this._jitter) {\n                        var rand = Math.random();\n                        var deviation = Math.floor(rand * this._jitter * ms);\n                        ms = (Math.floor(rand * 10) & 1) === 0 ? ms - deviation : ms + deviation;\n                    }\n                    return Math.min(ms, this._max) | 0;\n                }\n            },\n            _timeoutID: {\n                value: null,\n                writable: true\n            }\n        });\n    }\n    /**\n    * Start the backoff operation.\n    * @param {function} fn - Function to call\n    * @return {void}\n    * @api public\n    */\n    Backoff.prototype.backoff = function (fn) {\n        var _this = this;\n        var duration = this._duration;\n        if (this._timeoutID) {\n            clearTimeout(this._timeoutID);\n            this._timeoutID = null;\n        }\n        this._timeoutID = setTimeout(function () {\n            _this._attempts++;\n            fn();\n        }, duration);\n    };\n    /**\n    * Reset the number of attempts and clear the timer.\n    *\n    * @return {void}\n    * @api public\n    */\n    Backoff.prototype.reset = function () {\n        this._attempts = 0;\n        if (this._timeoutID) {\n            clearTimeout(this._timeoutID);\n            this._timeoutID = null;\n        }\n    };\n    return Backoff;\n}());\nmodule.exports = Backoff;\n\n},{}],138:[function(require,module,exports){\n/* globals chrome, navigator */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Check whether the current browser is an Android device.\n * @returns {boolean}\n */\nfunction isAndroid() {\n    return /Android/.test(navigator.userAgent);\n}\n/**\n * Detects whether or not a device is an Apple touch screen device.\n * @returns {boolean}\n */\nfunction hasTouchScreen() {\n    return !!(navigator && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n}\n/**\n * Detects whether or not a device is an iPad.\n * @returns {boolean}\n */\nfunction isIpad() {\n    return hasTouchScreen() && window.screen.width >= 744 && (/Macintosh/i.test(navigator.userAgent)\n        || /iPad/.test(navigator.userAgent)\n        || /iPad/.test(navigator.platform));\n}\n/**\n * Detects whether or not a device is an iPhone.\n * @returns {boolean}\n */\nfunction isIphone() {\n    return hasTouchScreen() && window.screen.width <= 476 && (/Macintosh/i.test(navigator.userAgent)\n        || /iPhone/.test(navigator.userAgent)\n        || /iPhone/.test(navigator.platform));\n}\n/**\n * Check whether the current device is an iOS device.\n * @returns {boolean}\n */\nfunction isIOS() {\n    return isIpad() || isIphone();\n}\n/**\n * Check whether the current browser is a mobile browser\n * @returns {boolean}\n */\nfunction isMobile() {\n    return /Mobi/.test(navigator.userAgent);\n}\n/**\n * Check whether the current browser is non-Chromium Edge.\n * @param {string} browser\n * @returns {boolean}\n */\nfunction isNonChromiumEdge(browser) {\n    return browser === 'chrome' && /Edge/.test(navigator.userAgent) && (typeof chrome === 'undefined' || typeof chrome.runtime === 'undefined');\n}\n/**\n * Get the name of the rebranded Chromium browser, if any. Re-branded Chrome's user\n * agent has the following format:\n * <source>/<version> (<os>) <engine>/<version> (<engine_name>) Chrome/<version> [Mobile] Safari/<version>\n * @param browser\n * @returns {?string} Name of the rebranded Chrome browser, or null if the browser\n *   is either not Chrome or vanilla Chrome.\n */\nfunction rebrandedChromeBrowser(browser) {\n    // If the browser is not Chrome based, then it is not a rebranded Chrome browser.\n    if (browser !== 'chrome') {\n        return null;\n    }\n    // Latest desktop Brave browser has a \"brave\" property in navigator.\n    if ('brave' in navigator) {\n        return 'brave';\n    }\n    // Remove the \"(.+)\" entries from the user agent thereby retaining only the\n    // <name>[/<version>] entries.\n    var parenthesizedSubstrings = getParenthesizedSubstrings(navigator.userAgent);\n    var nameAndVersions = parenthesizedSubstrings.reduce(function (userAgent, substring) { return userAgent.replace(substring, ''); }, navigator.userAgent);\n    // Extract the potential browser <name>s by ignoring the first two names, which\n    // point to <source> and <engine>.\n    var matches = nameAndVersions.match(/[^\\s]+/g) || [];\n    var _a = __read(matches.map(function (nameAndVersion) {\n        return nameAndVersion.split('/')[0].toLowerCase();\n    })), browserNames = _a.slice(2);\n    // Extract the <name> that is not expected to be present in the vanilla Chrome\n    // browser, which indicates the rebranded name (ex: \"edg[e]\", \"electron\"). If null,\n    // then this is a vanilla Chrome browser.\n    return browserNames.find(function (name) {\n        return !['chrome', 'mobile', 'safari'].includes(name);\n    }) || null;\n}\n/**\n * Get the name of the mobile webkit based browser, if any.\n * @param browser\n * @returns {?string} Name of the mobile webkit based browser, or null if the browser\n *   is either not webkit based or mobile safari.\n */\nfunction mobileWebKitBrowser(browser) {\n    if (browser !== 'safari') {\n        return null;\n    }\n    if ('brave' in navigator) {\n        return 'brave';\n    }\n    return ['edge', 'edg'].find(function (name) {\n        return navigator.userAgent.toLowerCase().includes(name);\n    }) || null;\n}\n/**\n * Get the top level parenthesized substrings within a given string. Unmatched\n * parentheses are ignored.\n * Ex: \"abc) (def) gh(ij) (kl (mn)o) (pqr\" => [\"(def)\", \"(ij)\", \"(kl (mn)o)\"]\n * @param {string} string\n * @returns {string[]}\n */\nfunction getParenthesizedSubstrings(string) {\n    var openParenthesisPositions = [];\n    var substrings = [];\n    for (var i = 0; i < string.length; i++) {\n        if (string[i] === '(') {\n            openParenthesisPositions.push(i);\n        }\n        else if (string[i] === ')' && openParenthesisPositions.length > 0) {\n            var openParenthesisPosition = openParenthesisPositions.pop();\n            if (openParenthesisPositions.length === 0) {\n                substrings.push(string.substring(openParenthesisPosition, i + 1));\n            }\n        }\n    }\n    return substrings;\n}\nmodule.exports = {\n    isAndroid: isAndroid,\n    isIOS: isIOS,\n    isIpad: isIpad,\n    isIphone: isIphone,\n    isMobile: isMobile,\n    isNonChromiumEdge: isNonChromiumEdge,\n    mobileWebKitBrowser: mobileWebKitBrowser,\n    rebrandedChromeBrowser: rebrandedChromeBrowser\n};\n\n},{}],139:[function(require,module,exports){\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * A Promise that can be canceled with {@link CancelablePromise#cancel}.\n * @extends Promise\n*/\nvar CancelablePromise = /** @class */ (function () {\n    /**\n     * Construct a new {@link CancelablePromise}.\n     * @param {CancelablePromise.OnCreate} onCreate\n     * @param {CancelablePromise.OnCancel} onCancel\n    */ /**\n     * A function to be called on {@link CancelablePromise} creation\n     * @typedef {function} CancelablePromise.OnCreate\n     * @param {function(*)} resolve\n     * @param {function(*)} reject\n     * @param {function(): boolean} isCanceled\n    */ /**\n     * A function to be called when {@link CancelablePromise#cancel} is called\n     * @typedef {function} CancelablePromise.OnCancel\n     */\n    function CancelablePromise(onCreate, onCancel) {\n        var _this = this;\n        /* istanbul ignore next */\n        Object.defineProperties(this, {\n            _isCancelable: {\n                writable: true,\n                value: true\n            },\n            _isCanceled: {\n                writable: true,\n                value: false\n            },\n            _onCancel: {\n                value: onCancel\n            }\n        });\n        Object.defineProperty(this, '_promise', {\n            value: new Promise(function (resolve, reject) {\n                onCreate(function (value) {\n                    _this._isCancelable = false;\n                    resolve(value);\n                }, function (reason) {\n                    _this._isCancelable = false;\n                    reject(reason);\n                }, function () { return _this._isCanceled; });\n            })\n        });\n    }\n    /**\n     * Create a synchronously-rejected {@link CancelablePromise}.\n     * @param {*} reason\n     * @returns {Promise<*>}\n     */\n    CancelablePromise.reject = function (reason) {\n        return new CancelablePromise(function rejected(resolve, reject) {\n            reject(reason);\n        }, function onCancel() {\n            // Do nothing.\n        });\n    };\n    /**\n     * Create a synchronously-resolved {@link CancelablePromise}.\n     * @param {*|Promise<*>|Thenable<*>} result\n     * @returns {CancelablePromise<*>}\n     */\n    CancelablePromise.resolve = function (result) {\n        return new CancelablePromise(function resolved(resolve) {\n            resolve(result);\n        }, function onCancel() {\n            // Do nothing.\n        });\n    };\n    /**\n     * Attempt to cancel the {@link CancelablePromise}.\n     * @returns {this}\n     */\n    CancelablePromise.prototype.cancel = function () {\n        if (this._isCancelable) {\n            this._isCanceled = true;\n            this._onCancel();\n        }\n        return this;\n    };\n    /**\n     * @param {function} onRejected\n     * @returns {CancelablePromise}\n     */\n    CancelablePromise.prototype.catch = function () {\n        var args = [].slice.call(arguments);\n        var promise = this._promise;\n        return new CancelablePromise(function onCreate(resolve, reject) {\n            promise.catch.apply(promise, __spreadArray([], __read(args), false)).then(resolve, reject);\n        }, this._onCancel);\n    };\n    /**\n     * @param {?function} onResolved\n     * @param {function} [onRejected]\n     * @returns {CancelablePromise}\n     */\n    CancelablePromise.prototype.then = function () {\n        var args = [].slice.call(arguments);\n        var promise = this._promise;\n        return new CancelablePromise(function onCreate(resolve, reject) {\n            promise.then.apply(promise, __spreadArray([], __read(args), false)).then(resolve, reject);\n        }, this._onCancel);\n    };\n    /**\n   * @param {?function} onFinally\n   * @returns {CancelablePromise}\n   */\n    CancelablePromise.prototype.finally = function () {\n        var args = [].slice.call(arguments);\n        var promise = this._promise;\n        return new CancelablePromise(function onCreate(resolve, reject) {\n            promise.finally.apply(promise, __spreadArray([], __read(args), false)).then(resolve, reject);\n        }, this._onCancel);\n    };\n    return CancelablePromise;\n}());\nmodule.exports = CancelablePromise;\n\n},{}],140:[function(require,module,exports){\n'use strict';\nvar packageInfo = require('../../package.json');\nmodule.exports.SDK_NAME = \"\".concat(packageInfo.name, \".js\");\nmodule.exports.SDK_VERSION = packageInfo.version;\nmodule.exports.SDP_FORMAT = 'unified';\nmodule.exports.hardwareDevicePublisheriPad = {\n    hwDeviceManufacturer: 'Apple',\n    hwDeviceModel: 'iPad',\n    hwDeviceType: 'tablet',\n    platformName: 'iOS'\n};\nmodule.exports.hardwareDevicePublisheriPhone = {\n    hwDeviceManufacturer: 'Apple',\n    hwDeviceModel: 'iPhone',\n    hwDeviceType: 'mobile',\n    platformName: 'iOS'\n};\nmodule.exports.DEFAULT_ENVIRONMENT = 'prod';\nmodule.exports.DEFAULT_REALM = 'us1';\nmodule.exports.DEFAULT_REGION = 'gll';\nmodule.exports.DEFAULT_LOG_LEVEL = 'warn';\nmodule.exports.DEFAULT_LOGGER_NAME = 'twilio-video';\nmodule.exports.WS_SERVER = function (environment, region) {\n    region = region === 'gll' ? 'global' : encodeURIComponent(region);\n    return environment === 'prod'\n        ? \"wss://\".concat(region, \".vss.twilio.com/signaling\")\n        : \"wss://\".concat(region, \".vss.\").concat(environment, \".twilio.com/signaling\");\n};\nmodule.exports.PUBLISH_MAX_ATTEMPTS = 5;\nmodule.exports.PUBLISH_BACKOFF_JITTER = 10;\nmodule.exports.PUBLISH_BACKOFF_MS = 20;\n/**\n * Returns the appropriate indefinite article (\"a\" | \"an\").\n * @param {string} word - The word which determines whether \"a\" | \"an\" is returned\n * @returns {string} \"a\" if word's first letter is a vowel, \"an\" otherwise\n */\nfunction article(word) {\n    // NOTE(mmalavalli): This will not be accurate for words like \"hour\",\n    // which have consonants as their first character, but are pronounced like\n    // vowels. We can address this issue if the need arises.\n    return ['a', 'e', 'i', 'o', 'u'].includes(word.toLowerCase()[0]) ? 'an' : 'a';\n}\nmodule.exports.typeErrors = {\n    ILLEGAL_INVOKE: function (name, context) {\n        return new TypeError(\"Illegal call to \".concat(name, \": \").concat(context));\n    },\n    INVALID_TYPE: function (name, type) {\n        return new TypeError(\"\".concat(name, \" must be \").concat(article(type), \" \").concat(type));\n    },\n    INVALID_VALUE: function (name, values) {\n        return new RangeError(\"\".concat(name, \" must be one of \").concat(values.join(', ')));\n    },\n    REQUIRED_ARGUMENT: function (name) {\n        return new TypeError(\"\".concat(name, \" must be specified\"));\n    }\n};\nmodule.exports.DEFAULT_FRAME_RATE = 24;\nmodule.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS = 10000;\nmodule.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS = 15000;\nmodule.exports.DEFAULT_SESSION_TIMEOUT_SEC = 30;\nmodule.exports.DEFAULT_NQ_LEVEL_LOCAL = 1;\nmodule.exports.DEFAULT_NQ_LEVEL_REMOTE = 0;\nmodule.exports.MAX_NQ_LEVEL = 3;\nmodule.exports.ICE_ACTIVITY_CHECK_PERIOD_MS = 1000;\nmodule.exports.ICE_INACTIVITY_THRESHOLD_MS = 3000;\nmodule.exports.iceRestartBackoffConfig = {\n    factor: 1.1,\n    min: 1,\n    max: module.exports.DEFAULT_SESSION_TIMEOUT_SEC * 1000,\n    jitter: 1\n};\nmodule.exports.reconnectBackoffConfig = {\n    factor: 1.5,\n    min: 80,\n    jitter: 1\n};\nmodule.exports.subscriptionMode = {\n    MODE_COLLABORATION: 'collaboration',\n    MODE_GRID: 'grid',\n    MODE_PRESENTATION: 'presentation'\n};\nmodule.exports.trackSwitchOffMode = {\n    MODE_DISABLED: 'disabled',\n    MODE_DETECTED: 'detected',\n    MODE_PREDICTED: 'predicted'\n};\nmodule.exports.trackPriority = {\n    PRIORITY_HIGH: 'high',\n    PRIORITY_LOW: 'low',\n    PRIORITY_STANDARD: 'standard'\n};\nmodule.exports.clientTrackSwitchOffControl = {\n    MODE_AUTO: 'auto',\n    MODE_MANUAL: 'manual'\n};\nmodule.exports.videoContentPreferencesMode = {\n    MODE_AUTO: 'auto',\n    MODE_MANUAL: 'manual'\n};\n\n},{\"../../package.json\":189}],141:[function(require,module,exports){\n'use strict';\nvar detectSilence = require('../webaudio/detectsilence');\nvar N_ATTEMPTS = 3;\nvar ATTEMPT_DURATION_MS = 250;\n/**\n * Detect whether the audio stream rendered by the given HTMLVideoElement is silent.\n * @param {HTMLAudioElement} el\n * @returns {Promise<boolean>} true if silent, false if not.\n */\nfunction detectSilentAudio(el) {\n    // NOTE(mmalavalli): We have to delay require-ing AudioContextFactory, because\n    // it exports a default instance whose constructor calls Object.assign.\n    var AudioContextFactory = require('../webaudio/audiocontext');\n    var holder = {};\n    var audioContext = AudioContextFactory.getOrCreate(holder);\n    var attemptsLeft = N_ATTEMPTS;\n    function doCheckSilence() {\n        attemptsLeft--;\n        return detectSilence(audioContext, el.srcObject, ATTEMPT_DURATION_MS).then(function (isSilent) {\n            if (!isSilent) {\n                return false;\n            }\n            if (attemptsLeft > 0) {\n                return doCheckSilence();\n            }\n            return true;\n        }).catch(function () {\n            // NOTE(mmalavalli): If an error is thrown while detect silence, the audio\n            // stream is assumed to be silent.\n            return true;\n        });\n    }\n    // Resolve the returned Promise with true if 3 consecutive attempts\n    // to detect silent audio are successful.\n    return doCheckSilence().finally(function () {\n        AudioContextFactory.release(holder);\n    });\n}\nmodule.exports = detectSilentAudio;\n\n},{\"../webaudio/audiocontext\":168,\"../webaudio/detectsilence\":169}],142:[function(require,module,exports){\n'use strict';\n// Cached copy of the <canvas> used to check silent video frames.\nvar canvas = null;\nvar N_SAMPLES = 3;\nvar SAMPLE_HEIGHT = 50;\nvar SAMPLE_INTERVAL_MS = 250;\nvar SAMPLE_WIDTH = 50;\n/**\n * Check whether the current video frame is silent by selecting a 50x50\n * sample and calculating the max value of the pixel data. If it is 0, then\n * the frame is considered to be silent.\n * @private\n * @param {HTMLVideoElement} el\n * @returns {boolean} true if silent, false if not\n */\nfunction checkSilence(el) {\n    try {\n        var context_1 = canvas.getContext('2d');\n        context_1.drawImage(el, 0, 0, SAMPLE_WIDTH, SAMPLE_HEIGHT);\n        var frame = context_1.getImageData(0, 0, SAMPLE_WIDTH, SAMPLE_HEIGHT);\n        var frameDataWithoutAlpha = frame.data.filter(function (item, i) { return (i + 1) % 4; });\n        var max = Math.max.apply(Math, frameDataWithoutAlpha);\n        return max === 0;\n    }\n    catch (ex) {\n        // eslint-disable-next-line no-console\n        console.log('Error checking silence: ', ex);\n        return false;\n    }\n}\n/**\n * Detect whether the video stream rendered by the given HTMLVideoElement is silent.\n * @param {HTMLVideoElement} el\n * @returns {Promise<boolean>} true if silent, false if not.\n */\nfunction detectSilentVideo(el) {\n    // Create the canvas when detectSilentVideo() is called for the\n    // first time.\n    canvas = canvas || document.createElement('canvas');\n    // Resolve the returned Promise with true if 3 consecutive sample\n    // frames from the video being played by the HTMLVideoElement are\n    // silent.\n    return new Promise(function (resolve) {\n        var samplesLeft = N_SAMPLES;\n        setTimeout(function doCheckSilence() {\n            samplesLeft--;\n            if (!checkSilence(el)) {\n                return resolve(false);\n            }\n            if (samplesLeft > 0) {\n                return setTimeout(doCheckSilence, SAMPLE_INTERVAL_MS);\n            }\n            return resolve(true);\n        }, SAMPLE_INTERVAL_MS);\n    });\n}\nmodule.exports = detectSilentVideo;\n\n},{}],143:[function(require,module,exports){\n'use strict';\n/**\n * The {@link DocumentVisibilityMonitor} monitors the visibility state of the DOM\n * and executes the attached listeners in phase order when the DOM is visible.\n */\nvar DocumentVisibilityMonitor = /** @class */ (function () {\n    /**\n     * Constructor.\n     * @param {number} [nPhases=1] - the number of phases\n     */\n    function DocumentVisibilityMonitor(nPhases) {\n        if (nPhases === void 0) { nPhases = 1; }\n        var _this = this;\n        Object.defineProperties(this, {\n            _listeners: {\n                value: []\n            },\n            _onVisibilityChange: {\n                value: function () {\n                    _this._emitVisible(document.visibilityState === 'visible');\n                }\n            }\n        });\n        for (var i = 0; i < nPhases; i++) {\n            this._listeners.push([]);\n        }\n    }\n    /**\n     * clears the state.\n     */\n    DocumentVisibilityMonitor.prototype.clear = function () {\n        var nPhases = this._listeners.length;\n        for (var i = 0; i < nPhases; i++) {\n            this._listeners[i] = [];\n        }\n    };\n    DocumentVisibilityMonitor.prototype._listenerCount = function () {\n        return this._listeners.reduce(function (count, phaseListeners) { return count + phaseListeners.length; }, 0);\n    };\n    /**\n     * Call all the listeners. Makes sure that all listeners for a given phase\n     * are executed before calling the listeners of the next phase.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._emitVisible = function (isVisible) {\n        var _this = this;\n        var promise = Promise.resolve();\n        var _loop_1 = function (phase) {\n            promise = promise.then(function () { return _this._emitVisiblePhase(phase, isVisible); });\n        };\n        for (var phase = 1; phase <= this._listeners.length; phase++) {\n            _loop_1(phase);\n        }\n        return promise;\n    };\n    /**\n     * Call all the listeners for a given phase.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._emitVisiblePhase = function (phase, isVisible) {\n        var phaseListeners = this._listeners[phase - 1];\n        return Promise.all(phaseListeners.map(function (listener) {\n            var ret = listener(isVisible);\n            return ret instanceof Promise ? ret : Promise.resolve(ret);\n        }));\n    };\n    /**\n     * Start listening to the DOM visibility state change.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._start = function () {\n        document.addEventListener('visibilitychange', this._onVisibilityChange);\n    };\n    /**\n     * Stop listening to the DOM visibility state change.\n     * @private\n     */\n    DocumentVisibilityMonitor.prototype._stop = function () {\n        document.removeEventListener('visibilitychange', this._onVisibilityChange);\n    };\n    /**\n     * Listen for the DOM visibility changes at the given phase.\n     * @param {number} phase\n     * @param {function} listener\n     * @returns {this}\n     */\n    DocumentVisibilityMonitor.prototype.onVisibilityChange = function (phase, listener) {\n        if (typeof phase !== 'number' || phase <= 0 || phase > this._listeners.length) {\n            throw new Error('invalid phase: ', phase);\n        }\n        var phaseListeners = this._listeners[phase - 1];\n        phaseListeners.push(listener);\n        if (this._listenerCount() === 1) {\n            this._start();\n        }\n        return this;\n    };\n    /**\n     * Stop listening for the DOM visibility change at the given phase.\n     * @param {number} phase\n     * @param {function} listener\n     * @returns {this}\n     */\n    DocumentVisibilityMonitor.prototype.offVisibilityChange = function (phase, listener) {\n        if (typeof phase !== 'number' || phase <= 0 || phase > this._listeners.length) {\n            throw new Error('invalid phase: ', phase);\n        }\n        var phaseListeners = this._listeners[phase - 1];\n        var index = phaseListeners.indexOf(listener);\n        if (index !== -1) {\n            phaseListeners.splice(index, 1);\n            if (this._listenerCount() === 0) {\n                this._stop();\n            }\n        }\n        return this;\n    };\n    return DocumentVisibilityMonitor;\n}());\nmodule.exports = new DocumentVisibilityMonitor(2);\n\n},{}],144:[function(require,module,exports){\n'use strict';\nmodule.exports = (function (scope) {\n    var location = scope.location, URL = scope.URL;\n    if ([location, URL].some(function (api) { return !api; })) {\n        return function dynamicImportNotSupported(module) {\n            return Promise.reject(new Error(\"Failed to import: \".concat(module, \": dynamicImport is not supported\")));\n        };\n    }\n    scope.__twilioVideoImportedModules = {\n    // Imported module map.\n    };\n    return function dynamicImport(module) {\n        if (module in scope.__twilioVideoImportedModules) {\n            return Promise.resolve(scope.__twilioVideoImportedModules[module]);\n        }\n        // NOTE(mmalavalli): Calling import() directly can cause build issues in TypeScript and Webpack\n        // (and probably other frameworks). So, we create a Function that calls import() in its body.\n        // eslint-disable-next-line no-new-func\n        return new Function('scope', \"return import('\".concat(new URL(module, location), \"').then(m => scope.__twilioVideoImportedModules['\").concat(module, \"'] = m);\"))(scope);\n    };\n}(globalThis));\n\n},{}],145:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EventEmitter = require('events').EventEmitter;\nvar VALID_GROUPS = [\n    'signaling',\n    'room',\n    'media',\n    'quality',\n    'video-processor',\n    'preflight',\n];\nvar VALID_LEVELS = [\n    'debug',\n    'error',\n    'info',\n    'warning'\n];\n/**\n * EventObserver listens to SDK events and re-emits them on the\n * @link EventListener} with some additional information.\n * @extends EventEmitter\n * @emits EventObserver#event\n */\nvar EventObserver = /** @class */ (function (_super) {\n    __extends(EventObserver, _super);\n    /**\n     * Constructor.\n     * @param {InsightsPublisher} publisher\n     * @param {number} connectTimestamp\n     * @param {Log} log\n     * @param {EventListener} [eventListener]\n     */\n    function EventObserver(publisher, connectTimestamp, log, eventListener) {\n        if (eventListener === void 0) { eventListener = null; }\n        var _this = _super.call(this) || this;\n        _this.on('event', function (_a) {\n            var name = _a.name, group = _a.group, level = _a.level, payload = _a.payload;\n            if (typeof name !== 'string') {\n                log.error('Unexpected name: ', name);\n                throw new Error('Unexpected name: ', name);\n            }\n            if (!VALID_GROUPS.includes(group)) {\n                log.error('Unexpected group: ', group);\n                throw new Error('Unexpected group: ', group);\n            }\n            if (!VALID_LEVELS.includes(level)) {\n                log.error('Unexpected level: ', level);\n                throw new Error('Unexpected level: ', level);\n            }\n            var timestamp = Date.now();\n            var elapsedTime = timestamp - connectTimestamp;\n            var publisherPayload = Object.assign({ elapsedTime: elapsedTime, level: level }, payload ? payload : {});\n            publisher.publish(group, name, publisherPayload);\n            var event = Object.assign({\n                elapsedTime: elapsedTime,\n                group: group,\n                level: level,\n                name: name,\n                timestamp: timestamp\n            }, payload ? { payload: payload } : {});\n            var logLevel = {\n                debug: 'debug',\n                error: 'error',\n                info: 'info',\n                warning: 'warn',\n            }[level];\n            log[logLevel]('event', event);\n            if (eventListener && group === 'signaling') {\n                eventListener.emit('event', event);\n            }\n        });\n        return _this;\n    }\n    return EventObserver;\n}(EventEmitter));\n/**\n * An SDK event.\n * @event EventObserver#event\n * @param {{name: string, payload: *}} event\n */\nmodule.exports = EventObserver;\n\n},{\"events\":188}],146:[function(require,module,exports){\n'use strict';\nvar Filter = /** @class */ (function () {\n    function Filter(options) {\n        options = Object.assign({\n            getKey: function defaultGetKey(a) { return a; },\n            getValue: function defaultGetValue(a) { return a; },\n            isLessThanOrEqualTo: function defaultIsLessThanOrEqualTo(a, b) { return a <= b; }\n        }, options);\n        Object.defineProperties(this, {\n            _getKey: {\n                value: options.getKey\n            },\n            _getValue: {\n                value: options.getValue\n            },\n            _isLessThanOrEqualTo: {\n                value: options.isLessThanOrEqualTo\n            },\n            _map: {\n                value: new Map()\n            }\n        });\n    }\n    Filter.prototype.toMap = function () {\n        return new Map(this._map);\n    };\n    Filter.prototype.updateAndFilter = function (entries) {\n        return entries.filter(this.update, this);\n    };\n    Filter.prototype.update = function (entry) {\n        var key = this._getKey(entry);\n        var value = this._getValue(entry);\n        if (this._map.has(key) &&\n            this._isLessThanOrEqualTo(value, this._map.get(key))) {\n            return false;\n        }\n        this._map.set(key, value);\n        return true;\n    };\n    return Filter;\n}());\nmodule.exports = Filter;\n\n},{}],147:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar constants = require('./constants');\nvar E = constants.typeErrors, trackPriority = constants.trackPriority;\nvar util = require('../webrtc/util');\nvar sessionSID = require('./sid').sessionSID;\nvar TwilioWarning = require('./twiliowarning');\n/**\n * Return the given {@link LocalTrack} or a new {@link LocalTrack} for the\n * given MediaStreamTrack.\n * @param {LocalTrack|MediaStreamTrack} track\n * @param {object} options\n * @returns {LocalTrack}\n * @throws {TypeError}\n */\nfunction asLocalTrack(track, options) {\n    if (track instanceof options.LocalAudioTrack\n        || track instanceof options.LocalVideoTrack\n        || track instanceof options.LocalDataTrack) {\n        return track;\n    }\n    if (track instanceof options.MediaStreamTrack) {\n        return track.kind === 'audio'\n            ? new options.LocalAudioTrack(track, options)\n            : new options.LocalVideoTrack(track, options);\n    }\n    /* eslint new-cap:0 */\n    throw E.INVALID_TYPE('track', 'LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n}\n/**\n * Create a new {@link LocalTrackPublication} for the given {@link LocalTrack}.\n * @param {LocalTrack} track\n * @param {LocalTrackPublicationSignaling} signaling\n * @param {function(track: LocalTrackPublication): void} unpublish\n * @param {object} options\n */\nfunction asLocalTrackPublication(track, signaling, unpublish, options) {\n    var LocalTrackPublication = {\n        audio: options.LocalAudioTrackPublication,\n        video: options.LocalVideoTrackPublication,\n        data: options.LocalDataTrackPublication\n    }[track.kind];\n    return new LocalTrackPublication(signaling, track, unpublish, options);\n}\n/**\n * Capitalize a word.\n * @param {string} word\n * @returns {string} capitalized\n */\nfunction capitalize(word) {\n    return word[0].toUpperCase() + word.slice(1);\n}\n/**\n * Log deprecation warnings for the given events of an EventEmitter.\n * @param {string} name\n * @param {EventEmitter} emitter\n * @param {Map<string, string>} events\n * @param {Log} log\n */\nfunction deprecateEvents(name, emitter, events, log) {\n    var warningsShown = new Set();\n    emitter.on('newListener', function newListener(event) {\n        if (events.has(event) && !warningsShown.has(event)) {\n            log.deprecated(\"\".concat(name, \"#\").concat(event, \" has been deprecated and scheduled for removal in twilio-video.js@2.0.0.\").concat(events.get(event)\n                ? \" Use \".concat(name, \"#\").concat(events.get(event), \" instead.\")\n                : ''));\n            warningsShown.add(event);\n        }\n        if (warningsShown.size >= events.size) {\n            emitter.removeListener('newListener', newListener);\n        }\n    });\n}\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n    list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n    list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n    var difference = new Set();\n    list1.forEach(function (item) {\n        if (!list2.has(item)) {\n            difference.add(item);\n        }\n    });\n    return difference;\n}\n/**\n * Filter out the keys in an object with a given value.\n * @param {object} object - Object to be filtered\n * @param {*} [filterValue] - Value to be filtered out; If not specified, then\n *   filters out all keys which have an explicit value of \"undefined\"\n * @returns {object} - Filtered object\n */\nfunction filterObject(object, filterValue) {\n    return Object.keys(object).reduce(function (filtered, key) {\n        if (object[key] !== filterValue) {\n            filtered[key] = object[key];\n        }\n        return filtered;\n    }, {});\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} [mapFn]\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n    var listArray = list instanceof Map || list instanceof Set\n        ? Array.from(list.values())\n        : list;\n    mapFn = mapFn || function mapFn(item) {\n        return item;\n    };\n    return listArray.reduce(function (flattened, item) {\n        var mapped = mapFn(item);\n        return flattened.concat(mapped);\n    }, []);\n}\n/**\n * Get the user agent string, or return \"Unknown\".\n * @returns {string}\n */\nfunction getUserAgent() {\n    return typeof navigator !== 'undefined' && navigator.userAgent\n        ? navigator.userAgent\n        : 'Unknown';\n}\n/**\n * Get the platform component of the user agent string.\n * Example:\n *   Input - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36\n *   Output - macintosh\n * @returns {string}\n */\nfunction getPlatform() {\n    var userAgent = getUserAgent();\n    var _a = __read(userAgent.match(/\\(([^)]+)\\)/) || [], 2), _b = _a[1], match = _b === void 0 ? 'unknown' : _b;\n    var _c = __read(match.split(';').map(function (entry) { return entry.trim(); }), 1), platform = _c[0];\n    return platform.toLowerCase();\n}\n/**\n * Create a unique identifier.\n * @returns {string}\n */\nfunction makeUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0;\n        var v = c === 'x' ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n}\n/**\n * Ensure that the given function is called once per tick.\n * @param {function} fn - Function to be executed\n * @returns {function} - Schedules the given function to be called on the next tick\n */\nfunction oncePerTick(fn) {\n    var timeout = null;\n    function nextTick() {\n        timeout = null;\n        fn();\n    }\n    return function scheduleNextTick() {\n        if (timeout) {\n            clearTimeout(timeout);\n        }\n        timeout = setTimeout(nextTick);\n    };\n}\nfunction promiseFromEvents(operation, eventEmitter, successEvent, failureEvent) {\n    return new Promise(function (resolve, reject) {\n        function onSuccess() {\n            var args = [].slice.call(arguments);\n            if (failureEvent) {\n                eventEmitter.removeListener(failureEvent, onFailure);\n            }\n            resolve.apply(void 0, __spreadArray([], __read(args), false));\n        }\n        function onFailure() {\n            var args = [].slice.call(arguments);\n            eventEmitter.removeListener(successEvent, onSuccess);\n            reject.apply(void 0, __spreadArray([], __read(args), false));\n        }\n        eventEmitter.once(successEvent, onSuccess);\n        if (failureEvent) {\n            eventEmitter.once(failureEvent, onFailure);\n        }\n        operation();\n    });\n}\n/**\n * Traverse down multiple nodes on an object and return null if\n * any link in the path is unavailable.\n * @param {Object} obj - Object to traverse\n * @param {String} path - Path to traverse. Period-separated.\n * @returns {Any|null}\n */\nfunction getOrNull(obj, path) {\n    return path.split('.').reduce(function (output, step) {\n        if (!output) {\n            return null;\n        }\n        return output[step];\n    }, obj);\n}\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n    var deferred = {};\n    deferred.promise = new Promise(function (resolve, reject) {\n        deferred.resolve = resolve;\n        deferred.reject = reject;\n    });\n    return deferred;\n}\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n    if (methodName in wrapper) {\n        // Skip any methods already set.\n        return;\n    }\n    else if (methodName.match(/^on[a-z]+$/)) {\n        // Skip EventHandlers (these are handled in the constructor).\n        return;\n    }\n    var type;\n    try {\n        type = typeof source[methodName];\n    }\n    catch (error) {\n        // NOTE(mroberts): Attempting to check the type of non-function members\n        // on the prototype throws an error for some types.\n    }\n    if (type !== 'function') {\n        // Skip non-function members.\n        return;\n    }\n    /* eslint no-loop-func:0 */\n    wrapper[methodName] = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return (_a = this[target])[methodName].apply(_a, __spreadArray([], __read(args), false));\n    };\n}\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n    for (var methodName in source) {\n        delegateMethod(source, wrapper, target, methodName);\n    }\n}\n/**\n * Determine whether two values are deeply equal.\n * @param {*} val1\n * @param {*} val2\n * @returns {boolean}\n */\nfunction isDeepEqual(val1, val2) {\n    if (val1 === val2) {\n        return true;\n    }\n    if (typeof val1 !== typeof val2) {\n        return false;\n    }\n    if (val1 === null) {\n        return val2 === null;\n    }\n    if (val2 === null) {\n        return false;\n    }\n    if (Array.isArray(val1)) {\n        return Array.isArray(val2)\n            && val1.length === val2.length\n            && val1.every(function (val, i) { return isDeepEqual(val, val2[i]); });\n    }\n    if (typeof val1 === 'object') {\n        var val1Keys = Object.keys(val1).sort();\n        var val2Keys = Object.keys(val2).sort();\n        return !Array.isArray(val2)\n            && isDeepEqual(val1Keys, val2Keys)\n            && val1Keys.every(function (key) { return isDeepEqual(val1[key], val2[key]); });\n    }\n    return false;\n}\n/**\n * Whether the given argument is a non-array object.\n * @param {*} object\n * @return {boolean}\n */\nfunction isNonArrayObject(object) {\n    return typeof object === 'object' && !Array.isArray(object);\n}\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n    Object.getOwnPropertyNames(source).forEach(function (propertyName) {\n        proxyProperty(source, wrapper, target, propertyName);\n    });\n}\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n    if (propertyName in wrapper) {\n        // Skip any properties already set.\n        return;\n    }\n    else if (propertyName.match(/^on[a-z]+$/)) {\n        Object.defineProperty(wrapper, propertyName, {\n            value: null,\n            writable: true\n        });\n        target.addEventListener(propertyName.slice(2), function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            wrapper.dispatchEvent.apply(wrapper, __spreadArray([], __read(args), false));\n        });\n        return;\n    }\n    Object.defineProperty(wrapper, propertyName, {\n        enumerable: true,\n        get: function () {\n            return target[propertyName];\n        }\n    });\n}\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function<Error>} onFailure\n * @returns {Promise<undefined>}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n    if (onSuccess) {\n        return promise.then(function (result) {\n            onSuccess(result);\n        }, function (error) {\n            onFailure(error);\n        });\n    }\n    return promise;\n}\n/**\n * Build the {@link LogLevels} object.\n * @param {String|LogLevel} logLevel - Log level name or object\n * @returns {LogLevels}\n */\nfunction buildLogLevels(logLevel) {\n    if (typeof logLevel === 'string') {\n        return {\n            default: logLevel,\n            media: logLevel,\n            signaling: logLevel,\n            webrtc: logLevel\n        };\n    }\n    return logLevel;\n}\n/**\n * Get the {@link Track}'s derived class name\n * @param {Track} track\n * @param {?boolean} [local=undefined]\n * @returns {string}\n */\nfunction trackClass(track, local) {\n    local = local ? 'Local' : '';\n    return \"\".concat(local + (track.kind || '').replace(/\\w{1}/, function (m) { return m.toUpperCase(); }), \"Track\");\n}\n/**\n * Get the {@link TrackPublication}'s derived class name\n * @param {TrackPublication} publication\n * @param {?boolean} [local=undefined]\n * @returns {string}\n */\nfunction trackPublicationClass(publication, local) {\n    local = local ? 'Local' : '';\n    return \"\".concat(local + (publication.kind || '').replace(/\\w{1}/, function (m) { return m.toUpperCase(); }), \"TrackPublication\");\n}\n/**\n * Sets all underscore-prefixed properties on `object` non-enumerable.\n * @param {Object} object\n * @returns {void}\n */\nfunction hidePrivateProperties(object) {\n    Object.getOwnPropertyNames(object).forEach(function (name) {\n        if (name.startsWith('_')) {\n            hideProperty(object, name);\n        }\n    });\n}\n/**\n * Creates a new subclass which, in the constructor, sets all underscore-prefixed\n * properties and the given public properties non-enumerable. This is useful for\n * patching up classes like EventEmitter which may set properties like `_events`\n * and `domain`.\n * @param {Function} klass\n * @param {Array<string>} props\n * @returns {Function} subclass\n */\nfunction hidePrivateAndCertainPublicPropertiesInClass(klass, props) {\n    // NOTE(mroberts): We do this to avoid giving the class a name.\n    return /** @class */ (function (_super) {\n        __extends(class_1, _super);\n        function class_1() {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var _this = _super.apply(this, __spreadArray([], __read(args), false)) || this;\n            hidePrivateProperties(_this);\n            hidePublicProperties(_this, props);\n            return _this;\n        }\n        return class_1;\n    }(klass));\n}\n/**\n * Hide a property of an object.\n * @param {object} object\n * @param {string} name\n */\nfunction hideProperty(object, name) {\n    var descriptor = Object.getOwnPropertyDescriptor(object, name);\n    descriptor.enumerable = false;\n    Object.defineProperty(object, name, descriptor);\n}\n/**\n * Hide the given public properties of an object.\n * @param {object} object\n * @param {Array<string>} [props=[]]\n */\nfunction hidePublicProperties(object, props) {\n    if (props === void 0) { props = []; }\n    props.forEach(function (name) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (object.hasOwnProperty(name)) {\n            hideProperty(object, name);\n        }\n    });\n}\n/**\n * Convert an Array of values to an Array of JSON values by calling\n * `valueToJSON` on each value.\n * @param {Array<*>} array\n * @returns {Array<*>}\n */\nfunction arrayToJSON(array) {\n    return array.map(valueToJSON);\n}\n/**\n * Convert a Set of values to an Array of JSON values by calling `valueToJSON`\n * on each value.\n * @param {Set<*>} set\n * @returns {Array<*>}\n */\nfunction setToJSON(set) {\n    return arrayToJSON(__spreadArray([], __read(set), false));\n}\n/**\n * Convert a Map from strings to values to an object of JSON values by calling\n * `valueToJSON` on each value.\n * @param {Map<string, *>} map\n * @returns {object}\n */\nfunction mapToJSON(map) {\n    return __spreadArray([], __read(map.entries()), false).reduce(function (json, _a) {\n        var _b;\n        var _c = __read(_a, 2), key = _c[0], value = _c[1];\n        return Object.assign((_b = {}, _b[key] = valueToJSON(value), _b), json);\n    }, {});\n}\n/**\n * Convert an object to a JSON value by calling `valueToJSON` on its enumerable\n * keys.\n * @param {object} object\n * @returns {object}\n */\nfunction objectToJSON(object) {\n    return Object.entries(object).reduce(function (json, _a) {\n        var _b;\n        var _c = __read(_a, 2), key = _c[0], value = _c[1];\n        return Object.assign((_b = {}, _b[key] = valueToJSON(value), _b), json);\n    }, {});\n}\n/**\n * Convert a value into a JSON value.\n * @param {*} value\n * @returns {*}\n */\nfunction valueToJSON(value) {\n    if (Array.isArray(value)) {\n        return arrayToJSON(value);\n    }\n    else if (value instanceof Set) {\n        return setToJSON(value);\n    }\n    else if (value instanceof Map) {\n        return mapToJSON(value);\n    }\n    else if (value && typeof value === 'object') {\n        return objectToJSON(value);\n    }\n    return value;\n}\n/**\n * Convert a boolean value to a string.\n * This is useful for sending boolean values as part of insights events.\n * @param {boolean} val\n * @returns {string}\n */\nfunction boolToString(val) {\n    return val ? 'true' : 'false';\n}\n/**\n * Create the payload for the 'connecting' event.\n * @internal\n * @param {ConnectOptions} connectOptions\n * @returns {object} Connecting event payload\n */\nfunction createRoomConnectingEventPayload(connectOptions) {\n    var payload = {\n        sessionSID: sessionSID,\n        // Arrays props converted to lengths.\n        iceServers: (connectOptions.iceServers || []).length,\n        audioTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'audio'; }).length,\n        videoTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'video'; }).length,\n        dataTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'data'; }).length,\n    };\n    // boolean properties\n    [['audio'], ['automaticSubscription'], ['enableDscp'], ['eventListener'], ['preflight'], ['video'], ['dominantSpeaker', 'enableDominantSpeaker']].forEach(function (_a) {\n        var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n        eventProp = eventProp || prop;\n        payload[eventProp] = boolToString(!!connectOptions[prop]);\n    });\n    // number properties\n    [['maxVideoBitrate'], ['maxAudioBitrate']].forEach(function (_a) {\n        var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n        eventProp = eventProp || prop;\n        if (typeof connectOptions[prop] === 'number') {\n            payload[eventProp] = connectOptions[prop];\n        }\n        else if (!isNaN(Number(connectOptions[prop]))) {\n            payload[eventProp] = Number(connectOptions[prop]);\n        }\n    });\n    // string properties\n    [['iceTransportPolicy'], ['region'], ['name', 'roomName']].forEach(function (_a) {\n        var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n        eventProp = eventProp || prop;\n        if (typeof connectOptions[prop] === 'string') {\n            payload[eventProp] = connectOptions[prop];\n        }\n        else if (typeof connectOptions[prop] === 'number' && prop === 'name') {\n            payload[eventProp] = connectOptions[prop].toString();\n        }\n    });\n    // array properties as JSON strings\n    ['preferredAudioCodecs', 'preferredVideoCodecs'].forEach(function (prop) {\n        if (prop in connectOptions) {\n            payload[prop] = JSON.stringify(connectOptions[prop]);\n        }\n    });\n    // network quality configuration\n    if ('networkQuality' in connectOptions) {\n        payload.networkQualityConfiguration = {};\n        if (isNonArrayObject(connectOptions.networkQuality)) {\n            ['local', 'remote'].forEach(function (prop) {\n                if (typeof connectOptions.networkQuality[prop] === 'number') {\n                    payload.networkQualityConfiguration[prop] = connectOptions.networkQuality[prop];\n                }\n            });\n        }\n        else {\n            payload.networkQualityConfiguration.remote = 0;\n            payload.networkQualityConfiguration.local = connectOptions.networkQuality ? 1 : 0;\n        }\n    }\n    // bandwidth profile options\n    if (connectOptions.bandwidthProfile && connectOptions.bandwidthProfile.video) {\n        var videoBPOptions_1 = connectOptions.bandwidthProfile.video || {};\n        payload.bandwidthProfileOptions = {};\n        ['mode', 'maxTracks', 'trackSwitchOffMode', 'dominantSpeakerPriority', 'maxSubscriptionBitrate', 'renderDimensions', 'contentPreferencesMode', 'clientTrackSwitchOffControl'].forEach(function (prop) {\n            if (typeof videoBPOptions_1[prop] === 'number' || typeof videoBPOptions_1[prop] === 'string') {\n                payload.bandwidthProfileOptions[prop] = videoBPOptions_1[prop];\n            }\n            else if (typeof videoBPOptions_1[prop] === 'boolean') {\n                payload.bandwidthProfileOptions[prop] = boolToString(videoBPOptions_1[prop]);\n            }\n            else if (typeof videoBPOptions_1[prop] === 'object') {\n                payload.bandwidthProfileOptions[prop] = JSON.stringify(videoBPOptions_1[prop]);\n            }\n        });\n    }\n    // WebRTC redirections\n    var webRTCRedirectionsInsightsMap = {\n        'RTCPeerConnection': 'customRTCPeerConnectionImpl',\n        'MediaStream': 'customMediaStreamImpl',\n        'getUserMedia': 'customGetUserMediaImpl',\n        'enumerateDevices': 'customEnumerateDevicesImpl'\n    };\n    Object.entries(webRTCRedirectionsInsightsMap).forEach(function (_a) {\n        var _b = __read(_a, 2), optionName = _b[0], insightName = _b[1];\n        payload[insightName] = boolToString(typeof connectOptions[optionName] !== 'undefined');\n    });\n    return {\n        group: 'room',\n        name: 'connecting',\n        level: 'info',\n        payload: payload\n    };\n}\n/**\n * Create the payload for the 'connected' event.\n * @returns {object} Connected event payload\n */\nfunction createRoomConnectedEventPayload() {\n    return {\n        group: 'room',\n        name: 'connected',\n        level: 'info'\n    };\n}\n/**\n * Create the bandwidth profile payload included in an RSP connect message.\n * @param {BandwidthProfileOptions} bandwidthProfile\n * @returns {object}\n */\nfunction createBandwidthProfilePayload(bandwidthProfile) {\n    return createRSPPayload(bandwidthProfile, [\n        { prop: 'video', type: 'object', transform: createBandwidthProfileVideoPayload }\n    ]);\n}\n/**\n * Create the bandwidth profile video payload included in an RSP connect message.\n * @param {VideoBandwidthProfileOptions} bandwidthProfileVideo\n * @returns {object}\n */\nfunction createBandwidthProfileVideoPayload(bandwidthProfileVideo) {\n    return createRSPPayload(bandwidthProfileVideo, [\n        { prop: 'dominantSpeakerPriority', type: 'string', payloadProp: 'active_speaker_priority' },\n        { prop: 'maxSubscriptionBitrate', type: 'number', payloadProp: 'max_subscription_bandwidth' },\n        { prop: 'maxTracks', type: 'number', payloadProp: 'max_tracks' },\n        { prop: 'mode', type: 'string' },\n        { prop: 'renderDimensions', type: 'object', payloadProp: 'render_dimensions', transform: createRenderDimensionsPayload },\n        { prop: 'trackSwitchOffMode', type: 'string', payloadProp: 'track_switch_off' }\n    ]);\n}\n/**\n * Create the Media Signaling payload included in an RSP connect message.\n * @param {boolean} dominantSpeaker - whether to enable the Dominant Speaker\n *   protocol or not\n * @param {boolean} networkQuality - whether to enable the Network Quality\n *   protocol or not\n * @param {boolean} trackPriority - whether to enable the Track Priority\n *   protocol or not\n * @param {boolean} trackSwitchOff - whether to enable the Track Switch-Off\n *   protocol or not.\n * @param {boolean} renderHints - whether to enable the renderHints\n *   protocol or not.\n * @returns {object}\n */\nfunction createMediaSignalingPayload(dominantSpeaker, networkQuality, trackPriority, trackSwitchOff, adaptiveSimulcast, renderHints, extensionTranscriptions) {\n    var transports = { transports: [{ type: 'data-channel' }] };\n    return Object.assign(dominantSpeaker\n        // eslint-disable-next-line\n        ? { active_speaker: transports }\n        : {}, networkQuality\n        // eslint-disable-next-line\n        ? { network_quality: transports }\n        : {}, renderHints\n        // eslint-disable-next-line\n        ? { render_hints: transports }\n        : {}, adaptiveSimulcast\n        // eslint-disable-next-line\n        ? { publisher_hints: transports }\n        : {}, trackPriority\n        // eslint-disable-next-line\n        ? { track_priority: transports }\n        : {}, trackSwitchOff\n        // eslint-disable-next-line\n        ? { track_switch_off: transports }\n        : {}, extensionTranscriptions\n        // eslint-disable-next-line\n        ? { extension_transcriptions: transports }\n        : {});\n}\n/**\n * Create {@link VideoTrack.Dimensions} RSP payload.\n * @param {VideoTrack.Dimensions} [dimensions]\n * @returns {object}\n */\nfunction createDimensionsPayload(dimensions) {\n    return createRSPPayload(dimensions, [\n        { prop: 'height', type: 'number' },\n        { prop: 'width', type: 'number' }\n    ]);\n}\n/**\n * Create {@link VideoRenderDimensions} RSP payload.\n * @param renderDimensions\n * @returns {object}\n */\nfunction createRenderDimensionsPayload(renderDimensions) {\n    var PRIORITY_HIGH = trackPriority.PRIORITY_HIGH, PRIORITY_LOW = trackPriority.PRIORITY_LOW, PRIORITY_STANDARD = trackPriority.PRIORITY_STANDARD;\n    return createRSPPayload(renderDimensions, [\n        { prop: PRIORITY_HIGH, type: 'object', transform: createDimensionsPayload },\n        { prop: PRIORITY_LOW, type: 'object', transform: createDimensionsPayload },\n        { prop: PRIORITY_STANDARD, type: 'object', transform: createDimensionsPayload }\n    ]);\n}\n/**\n * Create an RSP payload for the given object.\n * @param {object} object - object for which RSP payload is to be generated\n * @param {Array<object>} propConversions - conversion rules for object properties;\n *   they specify how object properties should be converted to their corresponding\n *   RSP payload properties\n * @returns {object}\n */\nfunction createRSPPayload(object, propConversions) {\n    return propConversions.reduce(function (payload, _a) {\n        var _b;\n        var prop = _a.prop, type = _a.type, _c = _a.payloadProp, payloadProp = _c === void 0 ? prop : _c, _d = _a.transform, transform = _d === void 0 ? function (x) { return x; } : _d;\n        return typeof object[prop] === type\n            ? Object.assign((_b = {}, _b[payloadProp] = transform(object[prop]), _b), payload)\n            : payload;\n    }, {});\n}\n/**\n * Create the subscribe payload included in an RSP connect/update message.\n * @param {boolean} automaticSubscription - whether to subscribe to all RemoteTracks\n * @returns {object}\n */\nfunction createSubscribePayload(automaticSubscription) {\n    return {\n        rules: [{\n                type: automaticSubscription ? 'include' : 'exclude',\n                all: true\n            }],\n        revision: 1\n    };\n}\nfunction createMediaWarningsPayload(notifyWarnings) {\n    var _a;\n    var mediaWarnings = (_a = {},\n        _a[TwilioWarning.recordingMediaLost] = 'recordings',\n        _a);\n    return notifyWarnings\n        .map(function (twilioWarningName) { return mediaWarnings[twilioWarningName]; })\n        .filter(function (name) { return !!name; });\n}\n/**\n * Add random jitter to a given value in the range [-jitter, jitter].\n * @private\n * @param {number} value\n * @param {number} jitter\n * @returns {number} value + random(-jitter, +jitter)\n */\nfunction withJitter(value, jitter) {\n    var rand = Math.random();\n    return value - jitter + Math.floor(2 * jitter * rand + 0.5);\n}\n/**\n * Checks if the a number is in the range [min, max].\n * @private\n * @param {num} num\n * @param {number} min\n * @param {number} max\n * @return {boolean}\n */\nfunction inRange(num, min, max) {\n    return min <= num && num <= max;\n}\n/**\n * returns true if given MediaStreamTrack is a screen share track\n * @private\n * @param {MediaStreamTrack} track\n * @returns {boolean}\n */\nfunction isChromeScreenShareTrack(track) {\n    // NOTE(mpatwardhan): Chrome creates screen share tracks with label like: \"screen:69734272*\"\n    // we will check for label that starts with \"screen:D\" where D being a digit.\n    return util.guessBrowser() === 'chrome' && track.kind === 'video' && 'displaySurface' in track.getSettings();\n}\n/**\n * Returns a promise that resolve after timeoutMS have passed.\n * @param {number} timeoutMS - time to wait in milliseconds.\n * @returns {Promise<void>}\n */\nfunction waitForSometime(timeoutMS) {\n    if (timeoutMS === void 0) { timeoutMS = 10; }\n    return new Promise(function (resolve) { return setTimeout(resolve, timeoutMS); });\n}\n/**\n * Returns a promise that resolve after event is received\n * @returns {Promise<void>}\n */\nfunction waitForEvent(eventTarget, event) {\n    return new Promise(function (resolve) {\n        eventTarget.addEventListener(event, function onevent(e) {\n            eventTarget.removeEventListener(event, onevent);\n            resolve(e);\n        });\n    });\n}\nexports.constants = constants;\nexports.createBandwidthProfilePayload = createBandwidthProfilePayload;\nexports.createMediaSignalingPayload = createMediaSignalingPayload;\nexports.createMediaWarningsPayload = createMediaWarningsPayload;\nexports.createRoomConnectingEventPayload = createRoomConnectingEventPayload;\nexports.createRoomConnectedEventPayload = createRoomConnectedEventPayload;\nexports.boolToString = boolToString;\nexports.createSubscribePayload = createSubscribePayload;\nexports.asLocalTrack = asLocalTrack;\nexports.asLocalTrackPublication = asLocalTrackPublication;\nexports.capitalize = capitalize;\nexports.deprecateEvents = deprecateEvents;\nexports.difference = difference;\nexports.filterObject = filterObject;\nexports.flatMap = flatMap;\nexports.getPlatform = getPlatform;\nexports.getUserAgent = getUserAgent;\nexports.hidePrivateProperties = hidePrivateProperties;\nexports.hidePrivateAndCertainPublicPropertiesInClass = hidePrivateAndCertainPublicPropertiesInClass;\nexports.isDeepEqual = isDeepEqual;\nexports.isNonArrayObject = isNonArrayObject;\nexports.inRange = inRange;\nexports.makeUUID = makeUUID;\nexports.oncePerTick = oncePerTick;\nexports.promiseFromEvents = promiseFromEvents;\nexports.getOrNull = getOrNull;\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.proxyProperties = proxyProperties;\nexports.legacyPromise = legacyPromise;\nexports.buildLogLevels = buildLogLevels;\nexports.trackClass = trackClass;\nexports.trackPublicationClass = trackPublicationClass;\nexports.valueToJSON = valueToJSON;\nexports.withJitter = withJitter;\nexports.isChromeScreenShareTrack = isChromeScreenShareTrack;\nexports.waitForSometime = waitForSometime;\nexports.waitForEvent = waitForEvent;\n\n},{\"../webrtc/util\":185,\"./constants\":140,\"./sid\":159,\"./twiliowarning\":164}],148:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar EventEmitter = require('events').EventEmitter;\nvar getUserAgent = require('..').getUserAgent;\nvar MAX_RECONNECT_ATTEMPTS = 5;\nvar RECONNECT_INTERVAL_MS = 50;\nvar WS_CLOSE_NORMAL = 1000;\nvar toplevel = globalThis;\nvar WebSocket = toplevel.WebSocket ? toplevel.WebSocket : require('ws');\nvar _a = require('../constants'), hardwareDevicePublisheriPad = _a.hardwareDevicePublisheriPad, hardwareDevicePublisheriPhone = _a.hardwareDevicePublisheriPhone;\nvar util = require('../../util');\nvar browserdetection = require('../browserdetection');\n/**\n * Publish events to the Insights gateway.\n * @extends EventEmitter\n * @emits InsightsPublisher#connected\n * @emits InsightsPublisher#disconnected\n * @emits InsightsPublisher#reconnecting\n */\nvar InsightsPublisher = /** @class */ (function (_super) {\n    __extends(InsightsPublisher, _super);\n    /**\n     * @param {string} token - Insights gateway token\n     * @param {string} sdkName - Name of the SDK using the {@link InsightsPublisher}\n     * @param {string} sdkVersion - Version of the SDK using the {@link InsightsPublisher}\n     * @param {string} environment - One of 'dev', 'stage' or 'prod'\n     * @param {string} realm - Region identifier\n     * @param {InsightsPublisherOptions} options - Override default behavior\n     */\n    function InsightsPublisher(token, sdkName, sdkVersion, environment, realm, options) {\n        var _this = _super.call(this) || this;\n        options = Object.assign({\n            gateway: \"\".concat(createGateway(environment, realm), \"/v1/VideoEvents\"),\n            maxReconnectAttempts: MAX_RECONNECT_ATTEMPTS,\n            reconnectIntervalMs: RECONNECT_INTERVAL_MS,\n            userAgent: getUserAgent(),\n            WebSocket: WebSocket,\n        }, options);\n        Object.defineProperties(_this, {\n            _connectTimestamp: {\n                value: 0,\n                writable: true\n            },\n            _eventQueue: {\n                value: []\n            },\n            _readyToConnect: {\n                value: util.defer()\n            },\n            _reconnectAttemptsLeft: {\n                value: options.maxReconnectAttempts,\n                writable: true\n            },\n            _ws: {\n                value: null,\n                writable: true\n            },\n            _WebSocket: {\n                value: options.WebSocket\n            }\n        });\n        _this._readyToConnect.promise.then(function (_a) {\n            var roomSid = _a.roomSid, participantSid = _a.participantSid;\n            var self = _this;\n            _this.on('disconnected', function maybeReconnect(error) {\n                self._session = null;\n                if (error && self._reconnectAttemptsLeft > 0) {\n                    self.emit('reconnecting');\n                    reconnect(self, token, sdkName, sdkVersion, roomSid, participantSid, options);\n                    return;\n                }\n                self.removeListener('disconnected', maybeReconnect);\n            });\n            connect(_this, token, sdkName, sdkVersion, roomSid, participantSid, options);\n        }).catch(function () {\n            // ignore failures to connect\n        });\n        return _this;\n    }\n    /**\n     * Start connecting to the Insights gateway.\n     * @param {string} roomSid\n     * @param {string} participantSid\n     * @returns {void}\n     */\n    InsightsPublisher.prototype.connect = function (roomSid, participantSid) {\n        this._readyToConnect.resolve({ roomSid: roomSid, participantSid: participantSid });\n    };\n    /**\n     * Publish an event to the Insights gateway.\n     * @private\n     * @param {*} event\n     */\n    InsightsPublisher.prototype._publish = function (event) {\n        event.session = this._session;\n        this._ws.send(JSON.stringify(event));\n    };\n    /**\n     * Disconnect from the Insights gateway.\n     * @returns {boolean} true if called when connecting/open, false if not\n     */\n    InsightsPublisher.prototype.disconnect = function () {\n        if (this._ws === null\n            || this._ws.readyState === this._WebSocket.CLOSING\n            || this._ws.readyState === this._WebSocket.CLOSED) {\n            return false;\n        }\n        try {\n            this._ws.close();\n        }\n        catch (_a) {\n            // Do nothing.\n        }\n        this.emit('disconnected');\n        return true;\n    };\n    /**\n     * Publish (or queue, if not connected) an event to the Insights gateway.\n     * @param {string} groupName - Event group name\n     * @param {string} eventName - Event name\n     * @param {object} payload - Event payload\n     * @returns {boolean} true if queued or published, false if disconnect() called\n     */\n    InsightsPublisher.prototype.publish = function (groupName, eventName, payload) {\n        if (this._ws !== null\n            && (this._ws.readyState === this._WebSocket.CLOSING\n                || this._ws.readyState === this._WebSocket.CLOSED)) {\n            return false;\n        }\n        var publishOrEnqueue = typeof this._session === 'string'\n            ? this._publish.bind(this)\n            : this._eventQueue.push.bind(this._eventQueue);\n        publishOrEnqueue({\n            group: groupName,\n            name: eventName,\n            payload: payload,\n            timestamp: Date.now(),\n            type: 'event',\n            version: 1\n        });\n        return true;\n    };\n    return InsightsPublisher;\n}(EventEmitter));\n/**\n * Start connecting to the Insights gateway.\n * @private\n * @param {InsightsPublisher} publisher\n * @param {string} name\n * @param {string} token\n * @param {string} sdkName\n * @param {string} sdkVersion\n * @param {string} roomSid\n * @param {string} participantSid\n * @param {InsightsPublisherOptions} options\n */\nfunction connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options) {\n    publisher._connectTimestamp = Date.now();\n    publisher._reconnectAttemptsLeft--;\n    publisher._ws = new options.WebSocket(options.gateway);\n    var ws = publisher._ws;\n    ws.addEventListener('close', function (event) {\n        if (event.code === WS_CLOSE_NORMAL) {\n            publisher.emit('disconnected');\n            return;\n        }\n        publisher.emit('disconnected', new Error(\"WebSocket Error \".concat(event.code, \": \").concat(event.reason)));\n    });\n    ws.addEventListener('message', function (message) {\n        handleConnectResponse(publisher, JSON.parse(message.data), options);\n    });\n    ws.addEventListener('open', function () {\n        var connectRequest = {\n            type: 'connect',\n            token: token,\n            version: 1\n        };\n        connectRequest.publisher = {\n            name: sdkName,\n            sdkVersion: sdkVersion,\n            userAgent: options.userAgent,\n            participantSid: participantSid,\n            roomSid: roomSid,\n        };\n        if (browserdetection.isIpad()) {\n            connectRequest.publisher = __assign(__assign({}, connectRequest.publisher), hardwareDevicePublisheriPad);\n        }\n        else if (browserdetection.isIphone()) {\n            connectRequest.publisher = __assign(__assign({}, connectRequest.publisher), hardwareDevicePublisheriPhone);\n        }\n        ws.send(JSON.stringify(connectRequest));\n    });\n}\n/**\n * Create the Insights Websocket gateway URL.\n * @param {string} environment\n * @param {string} realm\n * @returns {string}\n */\nfunction createGateway(environment, realm) {\n    return environment === 'prod' ? \"wss://sdkgw.\".concat(realm, \".twilio.com\")\n        : \"wss://sdkgw.\".concat(environment, \"-\").concat(realm, \".twilio.com\");\n}\n/**\n * Handle connect response from the Insights gateway.\n * @param {InsightsPublisher} publisher\n * @param {*} response\n * @param {InsightsPublisherOptions} options\n */\nfunction handleConnectResponse(publisher, response, options) {\n    switch (response.type) {\n        case 'connected':\n            publisher._session = response.session;\n            publisher._reconnectAttemptsLeft = options.maxReconnectAttempts;\n            publisher._eventQueue.splice(0).forEach(publisher._publish, publisher);\n            publisher.emit('connected');\n            break;\n        case 'error':\n            publisher._ws.close();\n            publisher.emit('disconnected', new Error(response.message));\n            break;\n    }\n}\n/**\n * Start re-connecting to the Insights gateway with an appropriate delay based\n * on InsightsPublisherOptions#reconnectIntervalMs.\n * @private\n * @param {InsightsPublisher} publisher\n * @param {string} token\n * @param {string} sdkName\n * @param {string} sdkVersion\n * @param {string} roomSid\n * @param {string} participantSid\n * @param {InsightsPublisherOptions} options\n */\nfunction reconnect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options) {\n    var connectInterval = Date.now() - publisher._connectTimestamp;\n    var timeToWait = options.reconnectIntervalMs - connectInterval;\n    if (timeToWait > 0) {\n        setTimeout(function () {\n            connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options);\n        }, timeToWait);\n        return;\n    }\n    connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options);\n}\n/**\n * The {@link InsightsPublisher} is connected to the gateway.\n * @event InsightsPublisher#connected\n */\n/**\n * The {@link InsightsPublisher} is disconnected from the gateway.\n * @event InsightsPublisher#disconnected\n * @param {Error} [error] - Optional error if disconnected unintentionally\n */\n/**\n * The {@link InsightsPublisher} is re-connecting to the gateway.\n * @event InsightsPublisher#reconnecting\n */\n/**\n * {@link InsightsPublisher} options.\n * @typedef {object} InsightsPublisherOptions\n * @property {string} [gateway=sdkgw.{environment}-{realm}.twilio.com] - Insights WebSocket gateway url\n * @property {number} [maxReconnectAttempts=5] - Max re-connect attempts\n * @property {number} [reconnectIntervalMs=50] - Re-connect interval in ms\n */\nmodule.exports = InsightsPublisher;\n\n},{\"..\":147,\"../../util\":147,\"../browserdetection\":138,\"../constants\":140,\"events\":188,\"ws\":190}],149:[function(require,module,exports){\n// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): This should be described as implementing some\n// InsightsPublisher interface.\n'use strict';\n/**\n * Null Insights publisher.\n */\nvar InsightsPublisher = /** @class */ (function () {\n    function InsightsPublisher() {\n        Object.defineProperties(this, {\n            _connected: {\n                writable: true,\n                value: true\n            }\n        });\n    }\n    /**\n     * Connect\n     * @returns {void}\n     */\n    InsightsPublisher.prototype.connect = function () {\n    };\n    /**\n     * Disconnect.\n     * @returns {boolean}\n     */\n    InsightsPublisher.prototype.disconnect = function () {\n        if (this._connected) {\n            this._connected = false;\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Publish.\n     * @returns {boolean}\n     */\n    InsightsPublisher.prototype.publish = function () {\n        return this._connected;\n    };\n    return InsightsPublisher;\n}());\nmodule.exports = InsightsPublisher;\n\n},{}],150:[function(require,module,exports){\n'use strict';\nvar defer = require('./').defer;\n/**\n * This is a pair of Deferreds that are set whenever local media is muted and\n * resolved whenever local media is unmuted/ended and restarted if necessary.\n */\nvar LocalMediaRestartDeferreds = /** @class */ (function () {\n    /**\n     * Constructor.\n     */\n    function LocalMediaRestartDeferreds() {\n        Object.defineProperties(this, {\n            _audio: {\n                value: defer(),\n                writable: true\n            },\n            _video: {\n                value: defer(),\n                writable: true\n            }\n        });\n        // Initially, resolve both the Deferreds.\n        this._audio.resolve();\n        this._video.resolve();\n    }\n    /**\n     * Resolve the Deferred for audio or video.\n     * @param {'audio'|'video'} kind\n     */\n    LocalMediaRestartDeferreds.prototype.resolveDeferred = function (kind) {\n        if (kind === 'audio') {\n            this._audio.resolve();\n        }\n        else {\n            this._video.resolve();\n        }\n    };\n    /**\n     * Start the Deferred for audio or video.\n     * @param {'audio' | 'video'} kind\n     */\n    LocalMediaRestartDeferreds.prototype.startDeferred = function (kind) {\n        if (kind === 'audio') {\n            this._audio = defer();\n        }\n        else {\n            this._video = defer();\n        }\n    };\n    /**\n     * Wait until the Deferred for audio or video is resolved.\n     * @param {'audio'|'video'} kind\n     * @returns {Promise<void>}\n     */\n    LocalMediaRestartDeferreds.prototype.whenResolved = function (kind) {\n        return kind === 'audio' ? this._audio.promise : this._video.promise;\n    };\n    return LocalMediaRestartDeferreds;\n}());\nmodule.exports = new LocalMediaRestartDeferreds();\n\n},{\"./\":147}],151:[function(require,module,exports){\n/* eslint new-cap:0 */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar defaultGetLogger = require('../vendor/loglevel').getLogger;\nvar constants = require('./constants');\nvar DEFAULT_LOG_LEVEL = constants.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = constants.DEFAULT_LOGGER_NAME;\nvar E = require('./constants').typeErrors;\nvar deprecationWarningsByComponentConstructor;\nfunction getDeprecationWarnings(componentConstructor) {\n    deprecationWarningsByComponentConstructor = deprecationWarningsByComponentConstructor || new Map();\n    if (deprecationWarningsByComponentConstructor.has(componentConstructor)) {\n        return deprecationWarningsByComponentConstructor.get(componentConstructor);\n    }\n    var deprecationWarnings = new Set();\n    deprecationWarningsByComponentConstructor.set(componentConstructor, deprecationWarnings);\n    return deprecationWarnings;\n}\n/**\n * Selectively outputs messages to console based on specified minimum module\n * specific log levels.\n *\n * NOTE: The values in the logLevels object passed to the constructor is changed\n *       by subsequent calls to {@link Log#setLevels}.\n */\nvar Log = /** @class */ (function () {\n    /**\n     * Construct a new {@link Log} object.\n     * @param {String} moduleName - Name of the logging module (webrtc/media/signaling)\n     * @param {object} component - Component owning this instance of {@link Log}\n     * @param {LogLevels} logLevels - Logging levels. See {@link LogLevels}\n     * @param {String} loggerName - Name of the logger instance. Used when calling getLogger from loglevel module\n     * @param {Function} [getLogger] - optional method used internally.\n     */\n    function Log(moduleName, component, logLevels, loggerName, getLogger) {\n        if (typeof moduleName !== 'string') {\n            throw E.INVALID_TYPE('moduleName', 'string');\n        }\n        if (!component) {\n            throw E.REQUIRED_ARGUMENT('component');\n        }\n        if (typeof logLevels !== 'object') {\n            logLevels = {};\n        }\n        getLogger = getLogger || defaultGetLogger;\n        validateLogLevels(logLevels);\n        /* istanbul ignore next */\n        Object.defineProperties(this, {\n            _component: {\n                value: component\n            },\n            _logLevels: {\n                value: logLevels\n            },\n            _warnings: {\n                value: new Set()\n            },\n            _loggerName: {\n                get: function get() {\n                    var name = loggerName && typeof loggerName === 'string' ? loggerName : DEFAULT_LOGGER_NAME;\n                    if (!this._logLevelsEqual) {\n                        name = \"\".concat(name, \"-\").concat(moduleName);\n                    }\n                    return name;\n                }\n            },\n            _logger: {\n                get: function get() {\n                    var logger = getLogger(this._loggerName);\n                    var level = this._logLevels[moduleName] || DEFAULT_LOG_LEVEL;\n                    // There is no 'off' in the logger module. It uses 'silent' instead\n                    level = level === 'off' ? 'silent' : level;\n                    logger.setDefaultLevel(level);\n                    return logger;\n                }\n            },\n            _logLevelsEqual: {\n                get: function get() {\n                    // True if all levels are the same\n                    return (new Set(Object.values(this._logLevels)).size) === 1;\n                }\n            },\n            logLevel: {\n                get: function get() {\n                    return Log.getLevelByName(logLevels[moduleName] || DEFAULT_LOG_LEVEL);\n                }\n            },\n            name: { get: component.toString.bind(component) }\n        });\n    }\n    /**\n     * Get the log level (number) by its name (string)\n     * @param {String} name - Name of the log level\n     * @returns {Number} Requested log level\n     * @throws {TwilioError} INVALID_LOG_LEVEL (32056)\n     * @public\n     */\n    Log.getLevelByName = function (name) {\n        if (!isNaN(name)) {\n            return parseInt(name, 10);\n        }\n        name = name.toUpperCase();\n        validateLogLevel(name);\n        return Log[name];\n    };\n    /**\n     * Create a child {@link Log} instance with this._logLevels\n     * @param moduleName - Name of the logging module\n     * @param component - Component owning this instance of {@link Log}\n     * @returns {Log} this\n     */\n    Log.prototype.createLog = function (moduleName, component) {\n        var name = this._loggerName;\n        // Grab the original logger name\n        if (!this._logLevelsEqual) {\n            name = name.substring(0, name.lastIndexOf('-'));\n        }\n        return new Log(moduleName, component, this._logLevels, name);\n    };\n    /**\n     * Set new log levels.\n     * This changes the levels for all its ancestors,\n     * siblings, and children and descendants instances of {@link Log}.\n     * @param {LogLevels} levels - New log levels\n     * @throws {TwilioError} INVALID_ARGUMENT\n     * @returns {Log} this\n     */\n    Log.prototype.setLevels = function (levels) {\n        validateLogLevels(levels);\n        Object.assign(this._logLevels, levels);\n        return this;\n    };\n    /**\n     * Log a message using the logger method appropriate for the specified logLevel\n     * @param {Number} logLevel - Log level of the message being logged\n     * @param {Array} messages - Message(s) to log\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.log = function (logLevel, messages) {\n        var name = Log._levels[logLevel];\n        // eslint-disable-next-line no-use-before-define\n        if (!name) {\n            throw E.INVALID_VALUE('logLevel', LOG_LEVEL_VALUES);\n        }\n        name = name.toLowerCase();\n        var prefix = [new Date().toISOString(), name, this.name];\n        (this._logger[name] || function noop() { }).apply(void 0, __spreadArray([], __read(prefix.concat(messages)), false));\n        return this;\n    };\n    /**\n     * Log a debug message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.debug = function () {\n        return this.log(Log.DEBUG, [].slice.call(arguments));\n    };\n    /**\n     * Log a deprecation warning. Deprecation warnings are logged as warnings and\n     * they are only ever logged once.\n     * @param {String} deprecationWarning - The deprecation warning\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.deprecated = function (deprecationWarning) {\n        var deprecationWarnings = getDeprecationWarnings(this._component.constructor);\n        if (deprecationWarnings.has(deprecationWarning)) {\n            return this;\n        }\n        deprecationWarnings.add(deprecationWarning);\n        return this.warn(deprecationWarning);\n    };\n    /**\n     * Log an info message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.info = function () {\n        return this.log(Log.INFO, [].slice.call(arguments));\n    };\n    /**\n     * Log a warn message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.warn = function () {\n        return this.log(Log.WARN, [].slice.call(arguments));\n    };\n    /**\n     * Log a warning once.\n     * @param {String} warning\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.warnOnce = function (warning) {\n        if (this._warnings.has(warning)) {\n            return this;\n        }\n        this._warnings.add(warning);\n        return this.warn(warning);\n    };\n    /**\n     * Log an error message\n     * @param {...String} messages - Message(s) to pass to the logger\n     * @returns {Log} This instance of {@link Log}\n     * @public\n     */\n    Log.prototype.error = function () {\n        return this.log(Log.ERROR, [].slice.call(arguments));\n    };\n    /**\n     * Log an error message and throw an exception\n     * @param {TwilioError} error - Error to throw\n     * @param {String} customMessage - Custom message for the error\n     * @public\n     */\n    Log.prototype.throw = function (error, customMessage) {\n        if (error.clone) {\n            error = error.clone(customMessage);\n        }\n        this.log(Log.ERROR, error);\n        throw error;\n    };\n    return Log;\n}());\n// Singleton Constants\n/* eslint key-spacing:0 */\n/* istanbul ignore next */\nObject.defineProperties(Log, {\n    DEBUG: { value: 0 },\n    INFO: { value: 1 },\n    WARN: { value: 2 },\n    ERROR: { value: 3 },\n    OFF: { value: 4 },\n    _levels: {\n        value: [\n            'DEBUG',\n            'INFO',\n            'WARN',\n            'ERROR',\n            'OFF',\n        ]\n    }\n});\nvar LOG_LEVELS_SET = {};\nvar LOG_LEVEL_VALUES = [];\nvar LOG_LEVEL_NAMES = Log._levels.map(function (level, i) {\n    LOG_LEVELS_SET[level] = true;\n    LOG_LEVEL_VALUES.push(i);\n    return level;\n});\nfunction validateLogLevel(level) {\n    if (!(level in LOG_LEVELS_SET)) {\n        throw E.INVALID_VALUE('level', LOG_LEVEL_NAMES);\n    }\n}\nfunction validateLogLevels(levels) {\n    Object.keys(levels).forEach(function (moduleName) {\n        validateLogLevel(levels[moduleName].toUpperCase());\n    });\n}\nmodule.exports = Log;\n\n},{\"../vendor/loglevel\":167,\"./constants\":140}],152:[function(require,module,exports){\n'use strict';\n/**\n * Calculates the moving average delta for the given pair ofsamples. A sample (S)\n * consists of a numerator (Sn) and a denominator (Sd).The moving average delta is\n * calculated as follows:\n *\n * MovingAvgDelta = (Sn[1] - Sn[0]) / (Sd[1] - Sd[0])\n */\nvar MovingAverageDelta = /** @class */ (function () {\n    /**\n     * Constructor.\n     */\n    function MovingAverageDelta() {\n        Object.defineProperties(this, {\n            _samples: {\n                value: [\n                    { denominator: 0, numerator: 0 },\n                    { denominator: 0, numerator: 0 }\n                ],\n            }\n        });\n    }\n    /**\n     * Get the moving average delta.\n     * @returns {number}\n     */\n    MovingAverageDelta.prototype.get = function () {\n        var samples = this._samples;\n        var denominatorDelta = (samples[1].denominator - samples[0].denominator) || Infinity;\n        var numeratorDelta = samples[1].numerator - samples[0].numerator;\n        return numeratorDelta / denominatorDelta;\n    };\n    /**\n     * Put a sample and get rid of the older sample to maintain sample size of 2.\n     * @param numerator\n     * @param denominator\n     */\n    MovingAverageDelta.prototype.putSample = function (numerator, denominator) {\n        var samples = this._samples;\n        samples.shift();\n        samples.push({ denominator: denominator, numerator: numerator });\n    };\n    return MovingAverageDelta;\n}());\nmodule.exports = MovingAverageDelta;\n\n},{}],153:[function(require,module,exports){\n'use strict';\n/**\n * Monitor the network connection status to detect interruptions and handoffs.\n */\nvar NetworkMonitor = /** @class */ (function () {\n    /**\n     * Construct a {@link NetworkMonitor}.\n     * @param {function} onNetworkChanged\n     * @param {*} [options]\n     */\n    function NetworkMonitor(onNetworkChanged, options) {\n        var _this = this;\n        options = Object.assign({\n            navigator: navigator,\n            window: window,\n        }, options);\n        var nav = options.navigator;\n        var connection = nav.connection || { type: null };\n        var type = connection.type;\n        var _a = connection.type ? {\n            _events: {\n                value: ['change', 'typechange']\n            },\n            _listener: {\n                value: function () {\n                    var networkChanged = type !== _this.type && _this.isOnline;\n                    type = _this.type;\n                    if (networkChanged) {\n                        onNetworkChanged();\n                    }\n                }\n            },\n            _target: {\n                value: connection\n            }\n        } : {\n            _events: {\n                value: ['online']\n            },\n            _listener: {\n                value: onNetworkChanged\n            },\n            _target: {\n                value: options.window\n            }\n        }, _events = _a._events, _listener = _a._listener, _target = _a._target;\n        Object.defineProperties(this, {\n            isOnline: {\n                enumerable: true,\n                get: function () {\n                    return typeof nav.onLine === 'boolean'\n                        ? nav.onLine\n                        : true;\n                }\n            },\n            type: {\n                enumerable: true,\n                get: function () {\n                    return connection.type || null;\n                }\n            },\n            _listener: _listener,\n            _events: _events,\n            _target: _target\n        });\n    }\n    /**\n     * Start the {@link NetworkMonitor}.\n     */\n    NetworkMonitor.prototype.start = function () {\n        var _this = this;\n        this._events.forEach(function (event) {\n            _this._target.addEventListener(event, _this._listener);\n        });\n    };\n    /**\n     * Stop the {@link NetworkMonitor}.\n     */\n    NetworkMonitor.prototype.stop = function () {\n        var _this = this;\n        this._events.forEach(function (event) {\n            _this._target.removeEventListener(event, _this._listener);\n        });\n    };\n    return NetworkMonitor;\n}());\nmodule.exports = NetworkMonitor;\n\n},{}],154:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar NullObserver = /** @class */ (function () {\n    function NullObserver(callback) {\n        Object.defineProperties(this, {\n            _callback: {\n                value: callback\n            }\n        });\n    }\n    NullObserver.prototype.observe = function () {\n    };\n    NullObserver.prototype.unobserve = function () {\n    };\n    NullObserver.prototype.makeVisible = function (videoEl) {\n        var visibleEntry = this._makeFakeEntry(videoEl, true);\n        this._callback([visibleEntry]);\n    };\n    NullObserver.prototype.makeInvisible = function (videoEl) {\n        var invisibleEntry = this._makeFakeEntry(videoEl, false);\n        this._callback([invisibleEntry]);\n    };\n    NullObserver.prototype._makeFakeEntry = function (videoElement, isIntersecting) {\n        return { target: videoElement, isIntersecting: isIntersecting };\n    };\n    return NullObserver;\n}());\nvar NullIntersectionObserver = /** @class */ (function (_super) {\n    __extends(NullIntersectionObserver, _super);\n    function NullIntersectionObserver() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return NullIntersectionObserver;\n}(NullObserver));\nvar NullResizeObserver = /** @class */ (function (_super) {\n    __extends(NullResizeObserver, _super);\n    function NullResizeObserver() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NullResizeObserver.prototype.resize = function (videoEl) {\n        var entry = this._makeFakeEntry(videoEl, true);\n        this._callback([entry]);\n    };\n    return NullResizeObserver;\n}(NullObserver));\nmodule.exports = { NullIntersectionObserver: NullIntersectionObserver, NullResizeObserver: NullResizeObserver, NullObserver: NullObserver };\n\n},{}],155:[function(require,module,exports){\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar _a = require('../'), difference = _a.difference, flatMap = _a.flatMap;\nvar setSimulcastInMediaSection = require('./simulcast');\nvar ptToFixedBitrateAudioCodecName = {\n    0: 'PCMU',\n    8: 'PCMA'\n};\n/**\n * A payload type\n * @typedef {number} PT\n */\n/**\n * An {@link AudioCodec} or {@link VideoCodec}\n * @typedef {AudioCodec|VideoCodec} Codec\n */\n/**\n * Create a Codec Map for the given m= section.\n * @param {string} section - The given m= section\n * @returns {Map<Codec, Array<PT>>}\n */\nfunction createCodecMapForMediaSection(section) {\n    return Array.from(createPtToCodecName(section)).reduce(function (codecMap, pair) {\n        var pt = pair[0];\n        var codecName = pair[1];\n        var pts = codecMap.get(codecName) || [];\n        return codecMap.set(codecName, pts.concat(pt));\n    }, new Map());\n}\n/**\n * Create a Map of MIDs to m= sections for the given SDP.\n * @param {string} sdp\n * @returns {Map<string, string>}\n */\nfunction createMidToMediaSectionMap(sdp) {\n    return getMediaSections(sdp).reduce(function (midsToMediaSections, mediaSection) {\n        var mid = getMidForMediaSection(mediaSection);\n        return mid ? midsToMediaSections.set(mid, mediaSection) : midsToMediaSections;\n    }, new Map());\n}\n/**\n * Create a Map from PTs to codec names for the given m= section.\n * @param {string} mediaSection - The given m= section.\n * @returns {Map<PT, Codec>} ptToCodecName\n */\nfunction createPtToCodecName(mediaSection) {\n    return getPayloadTypesInMediaSection(mediaSection).reduce(function (ptToCodecName, pt) {\n        // NOTE(lrivas): Ignore repeated PTs to prevent RFC non‑compliant SDP generation.\n        // See, https://github.com/twilio/twilio-video.js/issues/2122.\n        if (ptToCodecName.has(pt)) {\n            return ptToCodecName;\n        }\n        var rtpmapPattern = new RegExp(\"a=rtpmap:\".concat(pt, \" ([^/]+)\"));\n        var matches = mediaSection.match(rtpmapPattern);\n        var codecName = matches\n            ? matches[1].toLowerCase()\n            : ptToFixedBitrateAudioCodecName[pt]\n                ? ptToFixedBitrateAudioCodecName[pt].toLowerCase()\n                : '';\n        return ptToCodecName.set(pt, codecName);\n    }, new Map());\n}\n/**\n * Get the associated fmtp attributes for the given Payload Type in an m= section.\n * @param {PT} pt\n * @param {string} mediaSection\n * @returns {?object}\n */\nfunction getFmtpAttributesForPt(pt, mediaSection) {\n    // In \"a=fmtp:<pt> <name>=<value>[;<name>=<value>]*\", the regex matches the codec\n    // profile parameters expressed as name/value pairs separated by \";\".\n    var fmtpRegex = new RegExp(\"^a=fmtp:\".concat(pt, \" (.+)$\"), 'm');\n    var matches = mediaSection.match(fmtpRegex);\n    return matches && matches[1].split(';').reduce(function (attrs, nvPair) {\n        var _a = __read(nvPair.split('='), 2), name = _a[0], value = _a[1];\n        attrs[name] = isNaN(value) ? value : parseInt(value, 10);\n        return attrs;\n    }, {});\n}\n/**\n * Get the MID for the given m= section.\n * @param {string} mediaSection\n * @return {?string}\n */\nfunction getMidForMediaSection(mediaSection) {\n    // In \"a=mid:<mid>\", the regex matches <mid>.\n    var midMatches = mediaSection.match(/^a=mid:(.+)$/m);\n    return midMatches && midMatches[1];\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - SDP string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array<string>} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n    return sdp.replace(/\\r\\n\\r\\n$/, '\\r\\n').split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\".concat(mediaSection); }).filter(function (mediaSection) {\n        var kindPattern = new RegExp(\"m=\".concat(kind || '.*'), 'gm');\n        var directionPattern = new RegExp(\"a=\".concat(direction || '.*'), 'gm');\n        return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n    });\n}\n/**\n * Get the Codec Payload Types present in the first line of the given m= section\n * @param {string} section - The m= section\n * @returns {Array<PT>} Payload Types\n */\nfunction getPayloadTypesInMediaSection(section) {\n    var mLine = section.split('\\r\\n')[0];\n    // In \"m=<kind> <port> <proto> <payload_type_1> <payload_type_2> ... <payload_type_n>\",\n    // the regex matches <port> and the Payload Types.\n    var matches = mLine.match(/([0-9]+)/g);\n    // This should not happen, but in case there are no Payload Types in\n    // the m= line, return an empty array.\n    if (!matches) {\n        return [];\n    }\n    // Since only the Payload Types are needed, we discard the <port>.\n    return matches.slice(1).map(function (match) { return parseInt(match, 10); });\n}\n/**\n * Create the reordered Codec Payload Types based on the preferred Codec Names.\n * @param {Map<Codec, Array<PT>>} codecMap - Codec Map\n * @param {Array<AudioCodecSettings|VideoCodecSettings>} preferredCodecs - Preferred Codecs\n * @returns {Array<PT>} Reordered Payload Types\n */\nfunction getReorderedPayloadTypes(codecMap, preferredCodecs) {\n    preferredCodecs = preferredCodecs.map(function (_a) {\n        var codec = _a.codec;\n        return codec.toLowerCase();\n    });\n    var preferredPayloadTypes = flatMap(preferredCodecs, function (codecName) { return codecMap.get(codecName) || []; });\n    var remainingCodecs = difference(Array.from(codecMap.keys()), preferredCodecs);\n    var remainingPayloadTypes = flatMap(remainingCodecs, function (codecName) { return codecMap.get(codecName); });\n    return preferredPayloadTypes.concat(remainingPayloadTypes);\n}\n/**\n * Set the given Codec Payload Types in the first line of the given m= section.\n * @param {Array<PT>} payloadTypes - Payload Types\n * @param {string} section - Given m= section\n * @returns {string} - Updated m= section\n */\nfunction setPayloadTypesInMediaSection(payloadTypes, section) {\n    var lines = section.split('\\r\\n');\n    var mLine = lines[0];\n    var otherLines = lines.slice(1);\n    mLine = mLine.replace(/([0-9]+\\s?)+$/, payloadTypes.join(' '));\n    return [mLine].concat(otherLines).join('\\r\\n');\n}\n/**\n * Return a new SDP string with the re-ordered codec preferences.\n * @param {string} sdp\n * @param {Array<AudioCodec>} preferredAudioCodecs - If empty, the existing order\n *   of audio codecs is preserved\n * @param {Array<VideoCodecSettings>} preferredVideoCodecs - If empty, the\n *   existing order of video codecs is preserved\n * @returns {string} Updated SDP string\n */\nfunction setCodecPreferences(sdp, preferredAudioCodecs, preferredVideoCodecs) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        // Codec preferences should not be applied to m=application sections.\n        if (!/^m=(audio|video)/.test(section)) {\n            return section;\n        }\n        var kind = section.match(/^m=(audio|video)/)[1];\n        var codecMap = createCodecMapForMediaSection(section);\n        var preferredCodecs = kind === 'audio' ? preferredAudioCodecs : preferredVideoCodecs;\n        var payloadTypes = getReorderedPayloadTypes(codecMap, preferredCodecs);\n        var newSection = setPayloadTypesInMediaSection(payloadTypes, section);\n        var pcmaPayloadTypes = codecMap.get('pcma') || [];\n        var pcmuPayloadTypes = codecMap.get('pcmu') || [];\n        var fixedBitratePayloadTypes = kind === 'audio'\n            ? new Set(pcmaPayloadTypes.concat(pcmuPayloadTypes))\n            : new Set();\n        return fixedBitratePayloadTypes.has(payloadTypes[0])\n            ? newSection.replace(/\\r\\nb=(AS|TIAS):([0-9]+)/g, '')\n            : newSection;\n    })).join('\\r\\n');\n}\n/**\n * Return a new SDP string with simulcast settings.\n * @param {string} sdp\n * @param {Map<Track.ID, TrackAttributes>} trackIdsToAttributes\n * @returns {string} Updated SDP string\n */\nfunction setSimulcast(sdp, trackIdsToAttributes) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        section = section.replace(/\\r\\n$/, '');\n        if (!/^m=video/.test(section)) {\n            return section;\n        }\n        var codecMap = createCodecMapForMediaSection(section);\n        var payloadTypes = getPayloadTypesInMediaSection(section);\n        var vp8PayloadTypes = new Set(codecMap.get('vp8') || []);\n        var hasVP8PayloadType = payloadTypes.some(function (payloadType) { return vp8PayloadTypes.has(payloadType); });\n        return hasVP8PayloadType\n            ? setSimulcastInMediaSection(section, trackIdsToAttributes)\n            : section;\n    })).concat('').join('\\r\\n');\n}\n/**\n * Get the matching Payload Types in an m= section for a particular peer codec.\n * @param {Codec} peerCodec\n * @param {PT} peerPt\n * @param {Map<Codec, PT>} codecsToPts\n * @param {string} section\n * @param {string} peerSection\n * @returns {Array<PT>}\n */\nfunction getMatchingPayloadTypes(peerCodec, peerPt, codecsToPts, section, peerSection) {\n    // If there is at most one local Payload Type that matches the remote codec, retain it.\n    var matchingPts = codecsToPts.get(peerCodec) || [];\n    if (matchingPts.length <= 1) {\n        return matchingPts;\n    }\n    // If there are no fmtp attributes for the codec in the peer m= section, then we\n    // cannot get a match in the  m= section. In that case, retain all matching Payload\n    // Types.\n    var peerFmtpAttrs = getFmtpAttributesForPt(peerPt, peerSection);\n    if (!peerFmtpAttrs) {\n        return matchingPts;\n    }\n    // Among the matched local Payload Types, find the one that matches the remote\n    // fmtp attributes.\n    var matchingPt = matchingPts.find(function (pt) {\n        var fmtpAttrs = getFmtpAttributesForPt(pt, section);\n        return fmtpAttrs && Object.keys(peerFmtpAttrs).every(function (attr) {\n            return peerFmtpAttrs[attr] === fmtpAttrs[attr];\n        });\n    });\n    // If none of the matched Payload Types also have matching fmtp attributes,\n    // then retain all of them, otherwise retain only the Payload Type that\n    // matches the peer fmtp attributes.\n    return typeof matchingPt === 'number' ? [matchingPt] : matchingPts;\n}\n/**\n * Filter codecs in an m= section based on its peer m= section from the other peer.\n * @param {string} section\n * @param {Map<string, string>} peerMidsToMediaSections\n * @param {Array<string>} codecsToRemove\n * @returns {string}\n */\nfunction filterCodecsInMediaSection(section, peerMidsToMediaSections, codecsToRemove) {\n    // Do nothing if the m= section represents neither audio nor video.\n    if (!/^m=(audio|video)/.test(section)) {\n        return section;\n    }\n    // Do nothing if the m= section does not have an equivalent remote m= section.\n    var mid = getMidForMediaSection(section);\n    var peerSection = mid && peerMidsToMediaSections.get(mid);\n    if (!peerSection) {\n        return section;\n    }\n    // Construct a Map of the peer Payload Types to their codec names.\n    var peerPtToCodecs = createPtToCodecName(peerSection);\n    // Construct a Map of the codec names to their Payload Types.\n    var codecsToPts = createCodecMapForMediaSection(section);\n    // Maintain a list of non-rtx Payload Types to retain.\n    var pts = flatMap(Array.from(peerPtToCodecs), function (_a) {\n        var _b = __read(_a, 2), peerPt = _b[0], peerCodec = _b[1];\n        return peerCodec !== 'rtx' && !codecsToRemove.includes(peerCodec)\n            ? getMatchingPayloadTypes(peerCodec, peerPt, codecsToPts, section, peerSection)\n            : [];\n    });\n    // For each Payload Type that will be retained, retain their corresponding rtx\n    // Payload Type if present.\n    var rtxPts = codecsToPts.get('rtx') || [];\n    // In \"a=fmtp:<rtxPt> apt=<apt>\", extract the codec PT <apt> associated with rtxPt.\n    var additionalRtxPts = rtxPts.filter(function (rtxPt) {\n        var fmtpAttrs = getFmtpAttributesForPt(rtxPt, section);\n        return fmtpAttrs && pts.includes(fmtpAttrs.apt);\n    });\n    // NOTE(lrivas): Retain rtx Payload Types that reference a codec already in `pts`.\n    // Using an intermediate Set to prevent duplicates from being reintroduced after concatenation.\n    pts = Array.from(new Set(__spreadArray(__spreadArray([], __read(pts), false), __read(additionalRtxPts), false)));\n    // Filter out the below mentioned attribute lines in the m= section that do not\n    // belong to one of the Payload Types that are to be retained.\n    // 1. \"a=rtpmap:<pt> <codec>\"\n    // 2. \"a=rtcp-fb:<pt> <attr>[ <attr>]*\"\n    // 3. \"a=fmtp:<pt> <name>=<value>[;<name>=<value>]*\"\n    var lines = section.split('\\r\\n').filter(function (line) {\n        var ptMatches = line.match(/^a=(rtpmap|fmtp|rtcp-fb):(.+) .+$/);\n        var pt = ptMatches && ptMatches[2];\n        return !ptMatches || (pt && pts.includes(parseInt(pt, 10)));\n    });\n    // Filter the list of Payload Types in the first line of the m= section.\n    var orderedPts = getPayloadTypesInMediaSection(section).filter(function (pt) { return pts.includes(pt); });\n    // Ensure only unique Payload Types are retained.\n    var uniquePayloadTypes = Array.from(new Set(orderedPts));\n    return setPayloadTypesInMediaSection(uniquePayloadTypes, lines.join('\\r\\n'));\n}\n/**\n * Filter local codecs based on the remote SDP.\n * @param {string} localSdp\n * @param {string} remoteSdp\n * @returns {string} - Updated local SDP\n */\nfunction filterLocalCodecs(localSdp, remoteSdp) {\n    var localMediaSections = getMediaSections(localSdp);\n    var localSession = localSdp.split('\\r\\nm=')[0];\n    var remoteMidsToMediaSections = createMidToMediaSectionMap(remoteSdp);\n    return [localSession].concat(localMediaSections.map(function (localSection) {\n        return filterCodecsInMediaSection(localSection, remoteMidsToMediaSections, []);\n    })).join('\\r\\n');\n}\n/**\n * Return a new SDP string after reverting simulcast for non vp8 sections in remote sdp.\n * @param localSdp - simulcast enabled local sdp\n * @param localSdpWithoutSimulcast - local sdp before simulcast was set\n * @param remoteSdp - remote sdp\n * @param revertForAll - when true simulcast will be reverted for all codecs. when false it will be reverted\n *  only for non-vp8 codecs.\n * @return {string} Updated SDP string\n */\nfunction revertSimulcast(localSdp, localSdpWithoutSimulcast, remoteSdp, revertForAll) {\n    if (revertForAll === void 0) { revertForAll = false; }\n    var remoteMidToMediaSections = createMidToMediaSectionMap(remoteSdp);\n    var localMidToMediaSectionsWithoutSimulcast = createMidToMediaSectionMap(localSdpWithoutSimulcast);\n    var mediaSections = getMediaSections(localSdp);\n    var session = localSdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (section) {\n        section = section.replace(/\\r\\n$/, '');\n        if (!/^m=video/.test(section)) {\n            return section;\n        }\n        var midMatches = section.match(/^a=mid:(.+)$/m);\n        var mid = midMatches && midMatches[1];\n        if (!mid) {\n            return section;\n        }\n        var remoteSection = remoteMidToMediaSections.get(mid);\n        var remotePtToCodecs = createPtToCodecName(remoteSection);\n        var remotePayloadTypes = getPayloadTypesInMediaSection(remoteSection);\n        var isVP8ThePreferredCodec = remotePayloadTypes.length && remotePtToCodecs.get(remotePayloadTypes[0]) === 'vp8';\n        var shouldRevertSimulcast = revertForAll || !isVP8ThePreferredCodec;\n        return shouldRevertSimulcast ? localMidToMediaSectionsWithoutSimulcast.get(mid).replace(/\\r\\n$/, '') : section;\n    })).concat('').join('\\r\\n');\n}\n/**\n * Add or rewrite MSIDs for new m= sections in the given SDP with their corresponding\n * local MediaStreamTrack IDs. These can be different when previously removed MediaStreamTracks\n * are added back (or Track IDs may not be present in the SDPs at all once browsers implement\n * the latest WebRTC spec).\n * @param {string} sdp\n * @param {Map<string, Track.ID>} activeMidsToTrackIds\n * @param {Map<Track.Kind, Array<Track.ID>>} trackIdsByKind\n * @returns {string}\n */\nfunction addOrRewriteNewTrackIds(sdp, activeMidsToTrackIds, trackIdsByKind) {\n    // NOTE(mmalavalli): The m= sections for the new MediaStreamTracks are usually\n    // present after the m= sections for the existing MediaStreamTracks, in order\n    // of addition.\n    var newMidsToTrackIds = Array.from(trackIdsByKind).reduce(function (midsToTrackIds, _a) {\n        var _b = __read(_a, 2), kind = _b[0], trackIds = _b[1];\n        var mediaSections = getMediaSections(sdp, kind, 'send(only|recv)');\n        var newMids = mediaSections.map(getMidForMediaSection).filter(function (mid) { return !activeMidsToTrackIds.has(mid); });\n        newMids.forEach(function (mid, i) { return midsToTrackIds.set(mid, trackIds[i]); });\n        return midsToTrackIds;\n    }, new Map());\n    return addOrRewriteTrackIds(sdp, newMidsToTrackIds);\n}\n/**\n * Add or rewrite MSIDs in the given SDP with their corresponding local MediaStreamTrack IDs.\n * These IDs need not be the same (or Track IDs may not be present in the SDPs at all once\n * browsers implement the latest WebRTC spec).\n * @param {string} sdp\n * @param {Map<string, Track.ID>} midsToTrackIds\n * @returns {string}\n */\nfunction addOrRewriteTrackIds(sdp, midsToTrackIds) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (mediaSection) {\n        // Do nothing if the m= section represents neither audio nor video.\n        if (!/^m=(audio|video)/.test(mediaSection)) {\n            return mediaSection;\n        }\n        // This shouldn't happen, but in case there is no MID for the m= section, do nothing.\n        var mid = getMidForMediaSection(mediaSection);\n        if (!mid) {\n            return mediaSection;\n        }\n        // In case there is no Track ID for the given MID in the map, do nothing.\n        var trackId = midsToTrackIds.get(mid);\n        if (!trackId) {\n            return mediaSection;\n        }\n        // This shouldn't happen, but in case there is no a=msid: line, do nothing.\n        var attributes = (mediaSection.match(/^a=msid:(.+)$/m) || [])[1];\n        if (!attributes) {\n            return mediaSection;\n        }\n        // If the a=msid: line contains the \"appdata\" field, then replace it with the Track ID,\n        // otherwise append the Track ID.\n        var _a = __read(attributes.split(' '), 2), msid = _a[0], trackIdToRewrite = _a[1];\n        var msidRegex = new RegExp(\"msid:\".concat(msid).concat(trackIdToRewrite ? \" \".concat(trackIdToRewrite) : '', \"$\"), 'gm');\n        return mediaSection.replace(msidRegex, \"msid:\".concat(msid, \" \").concat(trackId));\n    })).join('\\r\\n');\n}\n/**\n * Removes specified ssrc attributes from given sdp.\n * @param {string} sdp\n * @param {Array<string>} ssrcAttributesToRemove\n * @returns {string}\n */\nfunction removeSSRCAttributes(sdp, ssrcAttributesToRemove) {\n    return sdp.split('\\r\\n').filter(function (line) {\n        return !ssrcAttributesToRemove.find(function (srcAttribute) { return new RegExp('a=ssrc:.*' + srcAttribute + ':', 'g').test(line); });\n    }).join('\\r\\n');\n}\n/**\n * Disable RTX in a given sdp.\n * @param {string} sdp\n * @returns {string} sdp without RTX\n */\nfunction disableRtx(sdp) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session].concat(mediaSections.map(function (mediaSection) {\n        // Do nothing if the m= section does not represent a video track.\n        if (!/^m=video/.test(mediaSection)) {\n            return mediaSection;\n        }\n        // Create a map of codecs to payload types.\n        var codecsToPts = createCodecMapForMediaSection(mediaSection);\n        // Get the RTX payload types.\n        var rtxPts = codecsToPts.get('rtx');\n        // Do nothing if there are no RTX payload types.\n        if (!rtxPts) {\n            return mediaSection;\n        }\n        // Remove the RTX payload types.\n        var pts = new Set(getPayloadTypesInMediaSection(mediaSection));\n        rtxPts.forEach(function (rtxPt) { return pts.delete(rtxPt); });\n        // Get the RTX SSRC.\n        var rtxSSRCMatches = mediaSection.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/);\n        var rtxSSRC = rtxSSRCMatches && rtxSSRCMatches[1];\n        // Remove the following lines associated with the RTX payload types:\n        // 1. \"a=fmtp:<rtxPt> apt=<pt>\"\n        // 2. \"a=rtpmap:<rtxPt> rtx/...\"\n        // 3. \"a=ssrc:<rtxSSRC> cname:...\"\n        // 4. \"a=ssrc-group:FID <SSRC> <rtxSSRC>\"\n        var filterRegexes = [\n            /^a=fmtp:.+ apt=.+$/,\n            /^a=rtpmap:.+ rtx\\/.+$/,\n            /^a=ssrc-group:.+$/\n        ].concat(rtxSSRC\n            ? [new RegExp(\"^a=ssrc:\".concat(rtxSSRC, \" .+$\"))]\n            : []);\n        mediaSection = mediaSection.split('\\r\\n')\n            .filter(function (line) { return filterRegexes.every(function (regex) { return !regex.test(line); }); })\n            .join('\\r\\n');\n        // Reconstruct the m= section without the RTX payload types.\n        return setPayloadTypesInMediaSection(Array.from(pts), mediaSection);\n    })).join('\\r\\n');\n}\n/**\n * Generate an a=fmtp: line from the given payload type and attributes.\n * @param {PT} pt\n * @param {*} fmtpAttrs\n * @returns {string}\n */\nfunction generateFmtpLineFromPtAndAttributes(pt, fmtpAttrs) {\n    var serializedFmtpAttrs = Object.entries(fmtpAttrs).map(function (_a) {\n        var _b = __read(_a, 2), name = _b[0], value = _b[1];\n        return \"\".concat(name, \"=\").concat(value);\n    }).join(';');\n    return \"a=fmtp:\".concat(pt, \" \").concat(serializedFmtpAttrs);\n}\n/**\n * Enable DTX for opus in the m= sections for the given MIDs.`\n * @param {string} sdp\n * @param {Array<string>} [mids] - If not specified, enables opus DTX for all\n *   audio m= lines.\n * @returns {string}\n */\nfunction enableDtxForOpus(sdp, mids) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    mids = mids || mediaSections\n        .filter(function (section) { return /^m=audio/.test(section); })\n        .map(getMidForMediaSection);\n    return [session].concat(mediaSections.map(function (section) {\n        // Do nothing if the m= section is not audio.\n        if (!/^m=audio/.test(section)) {\n            return section;\n        }\n        // Build a map codecs to payload types.\n        var codecsToPts = createCodecMapForMediaSection(section);\n        // Do nothing if a payload type for opus does not exist.\n        var opusPt = codecsToPts.get('opus');\n        if (!opusPt) {\n            return section;\n        }\n        // If no fmtp attributes are found for opus, do nothing.\n        var opusFmtpAttrs = getFmtpAttributesForPt(opusPt, section);\n        if (!opusFmtpAttrs) {\n            return section;\n        }\n        // Add usedtx=1 to the a=fmtp: line for opus.\n        var origOpusFmtpLine = generateFmtpLineFromPtAndAttributes(opusPt, opusFmtpAttrs);\n        var origOpusFmtpRegex = new RegExp(origOpusFmtpLine);\n        // If the m= section's MID is in the list of MIDs, then enable dtx. Otherwise disable it.\n        var mid = getMidForMediaSection(section);\n        if (mids.includes(mid)) {\n            opusFmtpAttrs.usedtx = 1;\n        }\n        else {\n            delete opusFmtpAttrs.usedtx;\n        }\n        var opusFmtpLineWithDtx = generateFmtpLineFromPtAndAttributes(opusPt, opusFmtpAttrs);\n        return section.replace(origOpusFmtpRegex, opusFmtpLineWithDtx);\n    })).join('\\r\\n');\n}\nexports.addOrRewriteNewTrackIds = addOrRewriteNewTrackIds;\nexports.addOrRewriteTrackIds = addOrRewriteTrackIds;\nexports.createCodecMapForMediaSection = createCodecMapForMediaSection;\nexports.createPtToCodecName = createPtToCodecName;\nexports.disableRtx = disableRtx;\nexports.enableDtxForOpus = enableDtxForOpus;\nexports.filterLocalCodecs = filterLocalCodecs;\nexports.getMediaSections = getMediaSections;\nexports.removeSSRCAttributes = removeSSRCAttributes;\nexports.revertSimulcast = revertSimulcast;\nexports.setCodecPreferences = setCodecPreferences;\nexports.setSimulcast = setSimulcast;\n\n},{\"../\":147,\"./simulcast\":157}],156:[function(require,module,exports){\n'use strict';\nvar RTCSessionDescription = require('../../webrtc').RTCSessionDescription;\nvar _a = require('./'), createPtToCodecName = _a.createPtToCodecName, getMediaSections = _a.getMediaSections;\n/**\n * An RTX payload type\n * @typedef {PT} RtxPT\n */\n/**\n * A non-RTX payload type\n * @typedef {PT} NonRtxPT\n */\n/**\n * A Set with at least one element\n * @typedef {Set} NonEmptySet\n */\n/**\n * Apply the workaround for Issue 8329 to an RTCSessionDescriptionInit.\n * @param {RTCSessionDescriptionInit} description\n * @returns {RTCSessionDescription} newDescription\n */\nfunction workaround(description) {\n    var descriptionInit = { type: description.type };\n    if (description.type !== 'rollback') {\n        descriptionInit.sdp = sdpWorkaround(description.sdp);\n    }\n    return new RTCSessionDescription(descriptionInit);\n}\n/**\n * @param {string} sdp\n * @returns {string} newSdp\n */\nfunction sdpWorkaround(sdp) {\n    var mediaSections = getMediaSections(sdp);\n    var session = sdp.split('\\r\\nm=')[0];\n    return [session]\n        .concat(mediaSections.map(mediaSectionWorkaround))\n        .join('\\r\\n');\n}\n/**\n * @param {string} mediaSection\n * @returns {string} newMediaSection\n */\nfunction mediaSectionWorkaround(mediaSection) {\n    var ptToCodecName = createPtToCodecName(mediaSection);\n    mediaSection = deleteDuplicateRtxPts(mediaSection, ptToCodecName);\n    mediaSection = resolvePayloadTypeConflicts(mediaSection);\n    var codecNameToPts = createCodecNameToPts(ptToCodecName);\n    var rtxPts = codecNameToPts.get('rtx') || new Set();\n    var invalidRtxPts = new Set();\n    var rtxPtToAssociatedPt = createRtxPtToAssociatedPt(mediaSection, ptToCodecName, rtxPts, invalidRtxPts);\n    var associatedPtToRtxPt = createAssociatedPtToRtxPt(rtxPtToAssociatedPt, invalidRtxPts);\n    var unassociatedRtxPts = Array.from(invalidRtxPts);\n    // NOTE(mroberts): We normalize to lowercase.\n    var knownCodecNames = ['h264', 'vp8', 'vp9'];\n    var unassociatedPts = knownCodecNames.reduce(function (unassociatedPts, codecName) {\n        var pts = codecNameToPts.get(codecName) || new Set();\n        return Array.from(pts).reduce(function (unassociatedPts, pt) { return associatedPtToRtxPt.has(pt)\n            ? unassociatedPts\n            : unassociatedPts.add(pt); }, unassociatedPts);\n    }, new Set());\n    unassociatedPts.forEach(function (pt) {\n        if (unassociatedRtxPts.length) {\n            var rtxPt = unassociatedRtxPts.shift();\n            mediaSection = deleteFmtpAttributesForRtxPt(mediaSection, rtxPt);\n            mediaSection = addFmtpAttributeForRtxPt(mediaSection, rtxPt, pt);\n        }\n    });\n    unassociatedRtxPts.forEach(function (rtxPt) {\n        mediaSection = deleteFmtpAttributesForRtxPt(mediaSection, rtxPt);\n        mediaSection = deleteRtpmapAttributesForRtxPt(mediaSection, rtxPt);\n    });\n    return mediaSection;\n}\n/**\n * Resolve payload type conflicts where same PT maps to different codecs\n * @param {string} mediaSection\n * @returns {string} resolvedMediaSection\n */\nfunction resolvePayloadTypeConflicts(mediaSection) {\n    var lines = mediaSection.split('\\r\\n');\n    var seenPts = new Map(); // PT -> first codec seen\n    var nextAvailablePt = 96; // Start from 96, which is the first dynamic PT. See https://datatracker.ietf.org/doc/html/rfc3551#section-3\n    for (var i = 0; i < lines.length; i++) {\n        var rtpmapMatch = lines[i].match(/^a=rtpmap:(\\d+) ([^/]+)/);\n        if (rtpmapMatch) {\n            var pt = parseInt(rtpmapMatch[1], 10);\n            var codec = rtpmapMatch[2].toLowerCase();\n            if (seenPts.has(pt) && seenPts.get(pt) !== codec) {\n                // Conflict detected - reassign this PT\n                while (seenPts.has(nextAvailablePt) || nextAvailablePt === pt) {\n                    nextAvailablePt++;\n                }\n                var newPt = nextAvailablePt;\n                seenPts.set(newPt, codec);\n                lines[i] = lines[i].replace(\"a=rtpmap:\".concat(pt), \"a=rtpmap:\".concat(newPt));\n                for (var j = i + 1; j < lines.length; j++) {\n                    // eslint-disable-next-line max-depth\n                    if (lines[j].match(new RegExp(\"^a=(fmtp|rtcp-fb):\".concat(pt, \"\\\\b\")))) {\n                        lines[j] = lines[j].replace(new RegExp(\"^a=(fmtp|rtcp-fb):\".concat(pt, \"\\\\b\")), \"a=$1:\".concat(newPt));\n                    }\n                }\n            }\n            else {\n                seenPts.set(pt, codec);\n            }\n        }\n    }\n    return lines.join('\\r\\n');\n}\n/**\n * @param {string} mediaSection\n * @param {Map<PT, Codec>} ptToCodecName\n * @returns {string} newMediaSection\n */\nfunction deleteDuplicateRtxPts(mediaSection, ptToCodecName) {\n    // NOTE(syerrapragada): In some cases Chrome produces an offer/answer\n    // with duplicate \"rtx\" payload mapping in media section. When applied,\n    // Chrome rejects the SDP. We workaround this by deleting duplicate\n    // \"rtx\" mappings found in SDP.\n    return Array.from(ptToCodecName.keys()).reduce(function (section, pt) {\n        var rtpmapRegex = new RegExp(\"^a=rtpmap:\".concat(pt, \" rtx.+$\"), 'gm');\n        return (section.match(rtpmapRegex) || []).slice(ptToCodecName.get(pt) === 'rtx' ? 1 : 0).reduce(function (section, rtpmap) {\n            var rtpmapRegex = new RegExp(\"\\r\\n\".concat(rtpmap));\n            var fmtpmapRegex = new RegExp(\"\\r\\na=fmtp:\".concat(pt, \" apt=[0-9]+\"));\n            return section.replace(rtpmapRegex, '').replace(fmtpmapRegex, '');\n        }, section);\n    }, mediaSection);\n}\n/**\n * @param {Map<PT, Codec>} ptToCodecName\n * @returns {Map<string, NonEmptySet<PT>>} codecNameToPts\n */\nfunction createCodecNameToPts(ptToCodecName) {\n    var codecNameToPts = new Map();\n    ptToCodecName.forEach(function (codecName, pt) {\n        var pts = codecNameToPts.get(codecName) || new Set();\n        return codecNameToPts.set(codecName, pts.add(pt));\n    });\n    return codecNameToPts;\n}\n/**\n * @param {string} mediaSection\n * @param {Map<PT, Codec>} ptToCodecName\n * @param {Set<RtxPT>} rtxPts\n * @param {Set<RtxPT>} invalidRtxPts\n * @returns {Map<RtxPT, NonRtxPT>} rtxPtToAssociatedPt\n */\nfunction createRtxPtToAssociatedPt(mediaSection, ptToCodecName, rtxPts, invalidRtxPts) {\n    return Array.from(rtxPts).reduce(function (rtxPtToAssociatedPt, rtxPt) {\n        var fmtpPattern = new RegExp(\"a=fmtp:\".concat(rtxPt, \" apt=(\\\\d+)\"));\n        var matches = mediaSection.match(fmtpPattern);\n        if (!matches) {\n            invalidRtxPts.add(rtxPt);\n            return rtxPtToAssociatedPt;\n        }\n        var pt = Number.parseInt(matches[1]);\n        if (!ptToCodecName.has(pt)) {\n            // This is Issue 8329.\n            invalidRtxPts.add(rtxPt);\n            return rtxPtToAssociatedPt;\n        }\n        var codecName = ptToCodecName.get(pt);\n        if (codecName === 'rtx') {\n            // Strange\n            invalidRtxPts.add(rtxPt);\n            return rtxPtToAssociatedPt;\n        }\n        return rtxPtToAssociatedPt.set(rtxPt, pt);\n    }, new Map());\n}\n/**\n * @param {string} mediaSection\n * @param {Map<RtxPT, NonRtxPT>} rtxPtToAssociatedPt\n * @param {Set<RtxPT>} invalidRtxPts\n * @returns {Map<NonRtxPT, RtxPT>} associatedPtToRtxPt\n */\nfunction createAssociatedPtToRtxPt(rtxPtToAssociatedPt, invalidRtxPts) {\n    // First, we construct a Map<NonRtxPT, NonEmptySet<RtxPT>>.\n    var associatedPtToRtxPts = Array.from(rtxPtToAssociatedPt).reduce(function (associatedPtToRtxPts, pair) {\n        var rtxPt = pair[0];\n        var pt = pair[1];\n        var rtxPts = associatedPtToRtxPts.get(pt) || new Set();\n        return associatedPtToRtxPts.set(pt, rtxPts.add(rtxPt));\n    }, new Map());\n    // Then, we filter down to a Map<NonRtxPT, RtxPt>. Any RtxPTs that map to the\n    // same NonRtxPT are removed and added to invalidRtxPts.\n    return Array.from(associatedPtToRtxPts).reduce(function (associatedPtToRtxPt, pair) {\n        var pt = pair[0];\n        var rtxPts = Array.from(pair[1]);\n        if (rtxPts.length > 1) {\n            rtxPts.forEach(function (rtxPt) {\n                invalidRtxPts.add(rtxPt);\n            });\n            return associatedPtToRtxPt;\n        }\n        return associatedPtToRtxPt.set(pt, rtxPts[0]);\n    }, new Map());\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @returns {string} newMediaSection\n */\nfunction deleteFmtpAttributesForRtxPt(mediaSection, rtxPt) {\n    var pattern = new RegExp(\"a=fmtp:\".concat(rtxPt, \".*\\r\\n\"), 'gm');\n    return mediaSection.replace(pattern, '');\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @returns {string} newMediaSection\n */\nfunction deleteRtpmapAttributesForRtxPt(mediaSection, rtxPt) {\n    var pattern = new RegExp(\"a=rtpmap:\".concat(rtxPt, \".*\\r\\n\"), 'gm');\n    return mediaSection.replace(pattern, '');\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @param {NonRtxPT} pt\n * @returns {string} newMediaSection\n */\nfunction addFmtpAttributeForRtxPt(mediaSection, rtxPt, pt) {\n    return mediaSection.endsWith('\\r\\n')\n        ? \"\".concat(mediaSection, \"a=fmtp:\").concat(rtxPt, \" apt=\").concat(pt, \"\\r\\n\")\n        : \"\".concat(mediaSection, \"\\r\\na=fmtp:\").concat(rtxPt, \" apt=\").concat(pt);\n}\nmodule.exports = workaround;\n\n},{\"../../webrtc\":173,\"./\":155}],157:[function(require,module,exports){\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar _a = require('../'), difference = _a.difference, flatMap = _a.flatMap;\n/**\n * Create a random {@link SSRC}.\n * @returns {SSRC}\n */\nfunction createSSRC() {\n    var ssrcMax = 0xffffffff;\n    return String(Math.floor(Math.random() * ssrcMax));\n}\n/**\n * @property {string} cName\n * @property {boolean} isSimulcastEnabled\n * @property {Map<RtxSSRC, PrimarySSRC>} rtxPairs\n * @property {Set<PrimarySSRC>} primarySSRCs\n * @property {string} streamId\n * @property {Track.ID} trackId\n */\nvar TrackAttributes = /** @class */ (function () {\n    /**\n     * Construct a {@link MediaStreamTrack} attribute store.\n     * @param {Track.ID} trackId - The MediaStreamTrack ID\n     * @param {MediaStreamID} streamId - The MediaStream ID\n     * @param {string} cName - The MediaStream cname\n     */\n    function TrackAttributes(trackId, streamId, cName) {\n        Object.defineProperties(this, {\n            cName: {\n                enumerable: true,\n                value: cName\n            },\n            isSimulcastEnabled: {\n                enumerable: true,\n                value: false,\n                writable: true\n            },\n            primarySSRCs: {\n                enumerable: true,\n                value: new Set()\n            },\n            rtxPairs: {\n                enumerable: true,\n                value: new Map()\n            },\n            streamId: {\n                enumerable: true,\n                value: streamId\n            },\n            trackId: {\n                enumerable: true,\n                value: trackId\n            }\n        });\n    }\n    /**\n     * Add {@link SimSSRC}s to the {@link TrackAttributes}.\n     * @returns {void}\n     */\n    TrackAttributes.prototype.addSimulcastSSRCs = function () {\n        if (this.isSimulcastEnabled) {\n            return;\n        }\n        var simulcastSSRCs = [createSSRC(), createSSRC()];\n        simulcastSSRCs.forEach(function (ssrc) {\n            this.primarySSRCs.add(ssrc);\n        }, this);\n        if (this.rtxPairs.size) {\n            simulcastSSRCs.forEach(function (ssrc) {\n                this.rtxPairs.set(createSSRC(), ssrc);\n            }, this);\n        }\n    };\n    /**\n     * Add the given {@link PrimarySSRC} or {@link RtxSSRC} to the {@link TrackAttributes}\n     * and update the \"isSimulcastEnabled\" flag if it is also a {@link SimSSRC}.\n     * @param {SSRC} ssrc - The {@link SSRC} to be added\n     * @param {?PrimarySSRC} primarySSRC - The {@link PrimarySSRC}; if the given\n     *   {@link SSRC} itself is the {@link PrimarySSRC}, then this is set to null\n     * @param {boolean} isSimSSRC - true if the given {@link SSRC} is a\n     *   {@link SimSSRC}; false otherwise\n     * @returns {void}\n     */\n    TrackAttributes.prototype.addSSRC = function (ssrc, primarySSRC, isSimSSRC) {\n        if (primarySSRC) {\n            this.rtxPairs.set(ssrc, primarySSRC);\n        }\n        else {\n            this.primarySSRCs.add(ssrc);\n        }\n        this.isSimulcastEnabled = this.isSimulcastEnabled || isSimSSRC;\n    };\n    /**\n     * Construct the SDP lines for the {@link TrackAttributes}.\n     * @param {boolean} [excludeRtx=false]\n     * @returns {Array<string>} Array of SDP lines\n     */\n    TrackAttributes.prototype.toSdpLines = function (excludeRtx) {\n        var _this = this;\n        var rtxPairs = excludeRtx\n            ? []\n            : Array.from(this.rtxPairs.entries()).map(function (rtxPair) { return rtxPair.reverse(); });\n        var simSSRCs = Array.from(this.primarySSRCs.values());\n        var ssrcs = rtxPairs.length ? flatMap(rtxPairs) : simSSRCs;\n        var attrLines = flatMap(ssrcs, function (ssrc) { return [\n            \"a=ssrc:\".concat(ssrc, \" cname:\").concat(_this.cName),\n            \"a=ssrc:\".concat(ssrc, \" msid:\").concat(_this.streamId, \" \").concat(_this.trackId)\n        ]; });\n        var rtxPairLines = rtxPairs.map(function (rtxPair) { return \"a=ssrc-group:FID \".concat(rtxPair.join(' ')); });\n        var simGroupLines = [\n            \"a=ssrc-group:SIM \".concat(simSSRCs.join(' '))\n        ];\n        return rtxPairLines.concat(attrLines).concat(simGroupLines);\n    };\n    return TrackAttributes;\n}());\n/**\n * Get the matches for a given RegEx pattern.\n * @param {string} section - SDP media section\n * @param {string} pattern - RegEx pattern\n * @returns {Array<Array<string>>} - Array of pattern matches\n */\nfunction getMatches(section, pattern) {\n    var matches = section.match(new RegExp(pattern, 'gm')) || [];\n    return matches.map(function (match) {\n        var matches = match.match(new RegExp(pattern)) || [];\n        return matches.slice(1);\n    });\n}\n/**\n * Get the {@link SimSSRC}s that belong to a simulcast group.\n * @param {string} section - SDP media section\n * @returns {Set<SimSSRC>} Set of simulcast {@link SSRC}s\n */\nfunction getSimulcastSSRCs(section) {\n    var simGroupPattern = '^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$';\n    return new Set(flatMap(getMatches(section, simGroupPattern)));\n}\n/**\n * Get the value of the given attribute for an SSRC.\n * @param {string} section - SDP media section\n * @param {SSRC} ssrc - {@link SSRC} whose attribute's value is to be determinded\n * @param {string} attribute - {@link SSRC} attribute name\n * @param {string} - {@link SSRC} attribute value\n */\nfunction getSSRCAttribute(section, ssrc, attribute) {\n    var pattern = \"a=ssrc:\".concat(ssrc, \" \").concat(attribute, \":(.+)\");\n    return section.match(new RegExp(pattern))[1];\n}\n/**\n * Create a Map of {@link PrimarySSRC}s and their {@link RtxSSRC}s.\n * @param {string} section - SDP media section\n * @returns {Map<RtxSSRC, PrimarySSRC>} - Map of {@link RtxSSRC}s and their\n *   corresponding {@link PrimarySSRC}s\n */\nfunction getSSRCRtxPairs(section) {\n    var rtxPairPattern = '^a=ssrc-group:FID ([0-9]+) ([0-9]+)$';\n    return new Map(getMatches(section, rtxPairPattern).map(function (pair) { return pair.reverse(); }));\n}\n/**\n * Create SSRC attribute tuples.\n * @param {string} section\n * @returns {Array<[SSRC, MediaStreamID, Track.ID]>}\n */\nfunction createSSRCAttributeTuples(section) {\n    var _a = __read(flatMap(getMatches(section, '^a=msid:(.+) (.+)$')), 2), streamId = _a[0], trackId = _a[1];\n    var ssrcs = flatMap(getMatches(section, '^a=ssrc:(.+) cname:.+$'));\n    return ssrcs.map(function (ssrc) { return [ssrc, streamId, trackId]; });\n}\n/**\n * Create a Map of MediaStreamTrack IDs and their {@link TrackAttributes}.\n * @param {string} section - SDP media section\n * @returns {Map<Track.ID, TrackAttributes>}\n */\nfunction createTrackIdsToAttributes(section) {\n    var simSSRCs = getSimulcastSSRCs(section);\n    var rtxPairs = getSSRCRtxPairs(section);\n    var ssrcAttrTuples = createSSRCAttributeTuples(section);\n    return ssrcAttrTuples.reduce(function (trackIdsToSSRCs, tuple) {\n        var ssrc = tuple[0];\n        var streamId = tuple[1];\n        var trackId = tuple[2];\n        var trackAttributes = trackIdsToSSRCs.get(trackId) || new TrackAttributes(trackId, streamId, getSSRCAttribute(section, ssrc, 'cname'));\n        var primarySSRC = rtxPairs.get(ssrc) || null;\n        trackAttributes.addSSRC(ssrc, primarySSRC, simSSRCs.has(ssrc));\n        return trackIdsToSSRCs.set(trackId, trackAttributes);\n    }, new Map());\n}\n/**\n * Apply simulcast settings to the given SDP media section.\n * @param {string} section - SDP media section\n * @param {Map<Track.ID, TrackAttributes>} trackIdsToAttributes - Existing\n *   map which will be updated for new MediaStreamTrack IDs\n * @returns {string} - The transformed SDP media section\n */\nfunction setSimulcastInMediaSection(section, trackIdsToAttributes) {\n    var newTrackIdsToAttributes = createTrackIdsToAttributes(section);\n    var newTrackIds = Array.from(newTrackIdsToAttributes.keys());\n    var trackIds = Array.from(trackIdsToAttributes.keys());\n    var trackIdsToAdd = difference(newTrackIds, trackIds);\n    var trackIdsToIgnore = difference(trackIds, newTrackIds);\n    // Update \"trackIdsToAttributes\" with TrackAttributes for new\n    // MediaStreamTrack IDs.\n    var trackAttributesToAdd = flatMap(trackIdsToAdd, function (trackId) { return newTrackIdsToAttributes.get(trackId); });\n    trackAttributesToAdd.forEach(function (trackAttributes) {\n        trackAttributes.addSimulcastSSRCs();\n        trackIdsToAttributes.set(trackAttributes.trackId, trackAttributes);\n    });\n    // Get the SDP lines of the relevant MediaStreamTrack IDs from\n    // \"trackIdsToAttributes\".\n    trackIds = Array.from(trackIdsToAttributes.keys());\n    var relevantTrackIds = difference(trackIds, trackIdsToIgnore);\n    var relevantTrackAttributes = flatMap(relevantTrackIds, function (trackId) { return trackIdsToAttributes.get(trackId); });\n    var excludeRtx = !section.match(/a=rtpmap:[0-9]+ rtx/);\n    var relevantSdpLines = flatMap(relevantTrackAttributes, function (trackAttributes) { return trackAttributes.toSdpLines(excludeRtx); });\n    // Add the simulcast SSRC SDP lines to the media section. The Set ensures\n    // that the duplicates of the SSRC SDP lines that are in both \"section\" and\n    // \"relevantSdpLines\" are removed.\n    var sectionLines = flatMap(new Set(section.split('\\r\\n').concat(relevantSdpLines)));\n    var xGoogleFlagConference = 'a=x-google-flag:conference';\n    if (!section.match(xGoogleFlagConference)) {\n        sectionLines.push(xGoogleFlagConference);\n    }\n    return sectionLines.join('\\r\\n');\n}\n/**\n * String representing a MediaStream ID.\n * @typedef {string} MediaStreamID\n */\n/**\n * String representing the SSRC of a MediaStreamTrack.\n * @typedef {string} SSRC\n */\n/**\n * Primary SSRC.\n * @typedef {SSRC} PrimarySSRC\n */\n/**\n * Retransmission SSRC.\n * @typedef {SSRC} RtxSSRC\n */\n/**\n * Simulcast SSRC.\n * @typedef {SSRC} SimSSRC\n */\nmodule.exports = setSimulcastInMediaSection;\n\n},{\"../\":147}],158:[function(require,module,exports){\n'use strict';\nvar getMediaSections = require('./').getMediaSections;\n/**\n * An {@link TrackMatcher} matches an RTCTrackEvent with a MediaStreamTrack\n * ID based on the MID of the underlying RTCRtpTransceiver.\n */\nvar TrackMatcher = /** @class */ (function () {\n    /**\n     * Construct an {@link TrackMatcher}.\n     */\n    function TrackMatcher() {\n        Object.defineProperties(this, {\n            _midsToTrackIds: {\n                value: new Map(),\n                writable: true\n            }\n        });\n    }\n    /**\n     * Match a given MediaStreamTrack with its ID.\n     * @param {RTCTrackEvent} event\n     * @returns {?Track.ID}\n     */\n    TrackMatcher.prototype.match = function (event) {\n        return this._midsToTrackIds.get(event.transceiver.mid) || null;\n    };\n    /**\n     * Update the {@link TrackMatcher} with a new SDP.\n     * @param {string} sdp\n     */\n    TrackMatcher.prototype.update = function (sdp) {\n        var sections = getMediaSections(sdp, '(audio|video)');\n        this._midsToTrackIds = sections.reduce(function (midsToTrackIds, section) {\n            var midMatches = section.match(/^a=mid:(.+)$/m) || [];\n            var trackIdMatches = section.match(/^a=msid:.+ (.+)$/m) || [];\n            var mid = midMatches[1];\n            var trackId = trackIdMatches[1];\n            return mid && trackId ? midsToTrackIds.set(mid, trackId) : midsToTrackIds;\n        }, this._midsToTrackIds);\n    };\n    return TrackMatcher;\n}());\nmodule.exports = TrackMatcher;\n\n},{\"./\":155}],159:[function(require,module,exports){\nvar SID_CHARS = '1234567890abcdef';\nvar SID_CHAR_LENGTH = 32;\n// copied from: https://code.hq.twilio.com/flex/monkey/blob/0fdce2b6c52d6be0b17a5cdb92f0c54f119b8ea8/src/client/lib/sid.ts#L39\n/**\n * Generates a random sid using given prefix.\n * @param {string} prefix\n * @returns string\n */\nfunction createSID(prefix) {\n    var result = '';\n    for (var i = 0; i < SID_CHAR_LENGTH; i++) {\n        result += SID_CHARS.charAt(Math.floor(Math.random() * SID_CHARS.length));\n    }\n    return \"\".concat(prefix).concat(result);\n}\nexports.sessionSID = createSID('SS');\nexports.createSID = createSID;\n\n},{}],160:[function(require,module,exports){\n'use strict';\nvar _a = require('../webrtc/util'), guessBrowser = _a.guessBrowser, isWebRTCSupported = _a.support;\nvar getSdpFormat = require('../webrtc/util/sdp').getSdpFormat;\nvar _b = require('./browserdetection'), isAndroid = _b.isAndroid, isMobile = _b.isMobile, isNonChromiumEdge = _b.isNonChromiumEdge, rebrandedChromeBrowser = _b.rebrandedChromeBrowser, mobileWebKitBrowser = _b.mobileWebKitBrowser;\nvar SUPPORTED_CHROME_BASED_BROWSERS = [\n    'crios',\n    'edg',\n    'edge',\n    'electron',\n    'headlesschrome'\n];\nvar SUPPORTED_ANDROID_BROWSERS = [\n    'chrome',\n    'firefox'\n];\nvar SUPPORTED_IOS_BROWSERS = [\n    'chrome',\n    'safari'\n];\nvar SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS = ['edg'];\n/**\n * Check if the current browser is officially supported by twilio-video.js.\n * @returns {boolean}\n */\nfunction isSupported() {\n    var browser = guessBrowser();\n    // NOTE (csantos): Return right away if there is no browser detected\n    // to prevent unnecessary checks which could lead to errors\n    if (!browser) {\n        return false;\n    }\n    var rebrandedChrome = rebrandedChromeBrowser(browser);\n    var mobileWebKit = mobileWebKitBrowser(browser);\n    var supportedMobileBrowsers = isAndroid() ?\n        SUPPORTED_ANDROID_BROWSERS : SUPPORTED_IOS_BROWSERS;\n    return !!browser\n        && isWebRTCSupported()\n        && getSdpFormat() === 'unified'\n        && (!rebrandedChrome || SUPPORTED_CHROME_BASED_BROWSERS.includes(rebrandedChrome))\n        && !isNonChromiumEdge(browser)\n        && (!mobileWebKit || SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS.includes(mobileWebKit))\n        && (!isMobile() || supportedMobileBrowsers.includes(browser));\n}\nmodule.exports = isSupported;\n\n},{\"../webrtc/util\":185,\"../webrtc/util/sdp\":187,\"./browserdetection\":138}],161:[function(require,module,exports){\n'use strict';\n/**\n * A {@link Timeout} represents a resettable and clearable timeout.\n */\nvar Timeout = /** @class */ (function () {\n    /**\n     * Construct a {@link Timeout}.\n     * @param {function} fn - Function to call\n     * @param {number} delay - Delay in milliseconds\n     * @param {boolean} [autoStart=true] - If true, then start the {@link Timeout}.\n     */\n    function Timeout(fn, delay, autoStart) {\n        if (autoStart === void 0) { autoStart = true; }\n        Object.defineProperties(this, {\n            _delay: {\n                value: delay,\n                writable: true\n            },\n            _fn: {\n                value: fn\n            },\n            _timeout: {\n                value: null,\n                writable: true\n            }\n        });\n        if (autoStart) {\n            this.start();\n        }\n    }\n    Object.defineProperty(Timeout.prototype, \"delay\", {\n        /**\n         * The {@link Timeout} delay in milliseconds.\n         * @property {number}\n         */\n        get: function () {\n            return this._delay;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(Timeout.prototype, \"isSet\", {\n        /**\n         * Whether the {@link Timeout} is set.\n         * @property {boolean}\n         */\n        get: function () {\n            return !!this._timeout;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Update the {@link Timeout} delay.\n     * @param {number} delay\n     * @returns {void}\n     */\n    Timeout.prototype.setDelay = function (delay) {\n        this._delay = delay;\n    };\n    /**\n     * Start the {@link Timeout}, if not already started.\n     * @returns {void}\n     */\n    Timeout.prototype.start = function () {\n        var _this = this;\n        if (!this.isSet) {\n            this._timeout = setTimeout(function () {\n                var fn = _this._fn;\n                _this.clear();\n                fn();\n            }, this._delay);\n        }\n    };\n    /**\n     * Clear the {@link Timeout}.\n     * @returns {void}\n     */\n    Timeout.prototype.clear = function () {\n        clearTimeout(this._timeout);\n        this._timeout = null;\n    };\n    /**\n     * Reset the {@link Timeout}.\n     * @returns {void}\n     */\n    Timeout.prototype.reset = function () {\n        this.clear();\n        this.start();\n    };\n    return Timeout;\n}());\nmodule.exports = Timeout;\n\n},{}],162:[function(require,module,exports){\n// NOTE: Do not edit this file. This code is auto-generated. Contact the\n// Twilio SDK Team for more information.\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar TwilioError = require('./twilioerror');\nvar TwilioErrorByCode = {};\n/**\n * Create a {@link TwilioError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {TwilioError}\n */\nexports.createTwilioError = function createTwilioError(code, message) {\n    code = typeof code === 'number' ? code : 0;\n    message = typeof message === 'string' && message ? message : 'Unknown error';\n    return TwilioErrorByCode[code] ? new TwilioErrorByCode[code]() : new TwilioError(code, message);\n};\n/**\n * @class AccessTokenInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room is invalid.\n * @extends TwilioError\n * @property {number} code - 20101\n * @property {string} message - 'Invalid Access Token'\n */\nvar AccessTokenInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenInvalidError, _super);\n    function AccessTokenInvalidError() {\n        var _this = _super.call(this, 20101, 'Invalid Access Token') || this;\n        Object.setPrototypeOf(_this, AccessTokenInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenInvalidError;\n}(TwilioError));\nexports.AccessTokenInvalidError = AccessTokenInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20101, { value: AccessTokenInvalidError });\n/**\n * @class AccessTokenHeaderInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has an invalid header.\n * @extends TwilioError\n * @property {number} code - 20102\n * @property {string} message - 'Invalid Access Token header'\n */\nvar AccessTokenHeaderInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenHeaderInvalidError, _super);\n    function AccessTokenHeaderInvalidError() {\n        var _this = _super.call(this, 20102, 'Invalid Access Token header') || this;\n        Object.setPrototypeOf(_this, AccessTokenHeaderInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenHeaderInvalidError;\n}(TwilioError));\nexports.AccessTokenHeaderInvalidError = AccessTokenHeaderInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20102, { value: AccessTokenHeaderInvalidError });\n/**\n * @class AccessTokenIssuerInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room contains an invalid issuer or subject.\n * @extends TwilioError\n * @property {number} code - 20103\n * @property {string} message - 'Invalid Access Token issuer/subject'\n */\nvar AccessTokenIssuerInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenIssuerInvalidError, _super);\n    function AccessTokenIssuerInvalidError() {\n        var _this = _super.call(this, 20103, 'Invalid Access Token issuer/subject') || this;\n        Object.setPrototypeOf(_this, AccessTokenIssuerInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenIssuerInvalidError;\n}(TwilioError));\nexports.AccessTokenIssuerInvalidError = AccessTokenIssuerInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20103, { value: AccessTokenIssuerInvalidError });\n/**\n * @class AccessTokenExpiredError\n * @classdesc Raised whenever the AccessToken used for connecting, or reconnecting to a Room has expired.\n * @extends TwilioError\n * @property {number} code - 20104\n * @property {string} message - 'Access Token expired or expiration date invalid'\n */\nvar AccessTokenExpiredError = /** @class */ (function (_super) {\n    __extends(AccessTokenExpiredError, _super);\n    function AccessTokenExpiredError() {\n        var _this = _super.call(this, 20104, 'Access Token expired or expiration date invalid') || this;\n        Object.setPrototypeOf(_this, AccessTokenExpiredError.prototype);\n        return _this;\n    }\n    return AccessTokenExpiredError;\n}(TwilioError));\nexports.AccessTokenExpiredError = AccessTokenExpiredError;\nObject.defineProperty(TwilioErrorByCode, 20104, { value: AccessTokenExpiredError });\n/**\n * @class AccessTokenNotYetValidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room is not yet valid.\n * @extends TwilioError\n * @property {number} code - 20105\n * @property {string} message - 'Access Token not yet valid'\n */\nvar AccessTokenNotYetValidError = /** @class */ (function (_super) {\n    __extends(AccessTokenNotYetValidError, _super);\n    function AccessTokenNotYetValidError() {\n        var _this = _super.call(this, 20105, 'Access Token not yet valid') || this;\n        Object.setPrototypeOf(_this, AccessTokenNotYetValidError.prototype);\n        return _this;\n    }\n    return AccessTokenNotYetValidError;\n}(TwilioError));\nexports.AccessTokenNotYetValidError = AccessTokenNotYetValidError;\nObject.defineProperty(TwilioErrorByCode, 20105, { value: AccessTokenNotYetValidError });\n/**\n * @class AccessTokenGrantsInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has invalid grants.\n * @extends TwilioError\n * @property {number} code - 20106\n * @property {string} message - 'Invalid Access Token grants'\n */\nvar AccessTokenGrantsInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenGrantsInvalidError, _super);\n    function AccessTokenGrantsInvalidError() {\n        var _this = _super.call(this, 20106, 'Invalid Access Token grants') || this;\n        Object.setPrototypeOf(_this, AccessTokenGrantsInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenGrantsInvalidError;\n}(TwilioError));\nexports.AccessTokenGrantsInvalidError = AccessTokenGrantsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20106, { value: AccessTokenGrantsInvalidError });\n/**\n * @class AccessTokenSignatureInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has an invalid signature.\n * @extends TwilioError\n * @property {number} code - 20107\n * @property {string} message - 'Invalid Access Token signature'\n */\nvar AccessTokenSignatureInvalidError = /** @class */ (function (_super) {\n    __extends(AccessTokenSignatureInvalidError, _super);\n    function AccessTokenSignatureInvalidError() {\n        var _this = _super.call(this, 20107, 'Invalid Access Token signature') || this;\n        Object.setPrototypeOf(_this, AccessTokenSignatureInvalidError.prototype);\n        return _this;\n    }\n    return AccessTokenSignatureInvalidError;\n}(TwilioError));\nexports.AccessTokenSignatureInvalidError = AccessTokenSignatureInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20107, { value: AccessTokenSignatureInvalidError });\n/**\n * @class SignalingConnectionError\n * @classdesc Raised whenever a signaling connection error occurs that is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53000\n * @property {string} message - 'Signaling connection error'\n */\nvar SignalingConnectionError = /** @class */ (function (_super) {\n    __extends(SignalingConnectionError, _super);\n    function SignalingConnectionError() {\n        var _this = _super.call(this, 53000, 'Signaling connection error') || this;\n        Object.setPrototypeOf(_this, SignalingConnectionError.prototype);\n        return _this;\n    }\n    return SignalingConnectionError;\n}(TwilioError));\nexports.SignalingConnectionError = SignalingConnectionError;\nObject.defineProperty(TwilioErrorByCode, 53000, { value: SignalingConnectionError });\n/**\n * @class SignalingConnectionDisconnectedError\n * @classdesc Raised whenever the signaling connection is unexpectedly disconnected.\n * @extends TwilioError\n * @property {number} code - 53001\n * @property {string} message - 'Signaling connection disconnected'\n */\nvar SignalingConnectionDisconnectedError = /** @class */ (function (_super) {\n    __extends(SignalingConnectionDisconnectedError, _super);\n    function SignalingConnectionDisconnectedError() {\n        var _this = _super.call(this, 53001, 'Signaling connection disconnected') || this;\n        Object.setPrototypeOf(_this, SignalingConnectionDisconnectedError.prototype);\n        return _this;\n    }\n    return SignalingConnectionDisconnectedError;\n}(TwilioError));\nexports.SignalingConnectionDisconnectedError = SignalingConnectionDisconnectedError;\nObject.defineProperty(TwilioErrorByCode, 53001, { value: SignalingConnectionDisconnectedError });\n/**\n * @class SignalingConnectionTimeoutError\n * @classdesc Raised when connection liveliness checks fail, or when the signaling session expires.\n * @extends TwilioError\n * @property {number} code - 53002\n * @property {string} message - 'Signaling connection timed out'\n */\nvar SignalingConnectionTimeoutError = /** @class */ (function (_super) {\n    __extends(SignalingConnectionTimeoutError, _super);\n    function SignalingConnectionTimeoutError() {\n        var _this = _super.call(this, 53002, 'Signaling connection timed out') || this;\n        Object.setPrototypeOf(_this, SignalingConnectionTimeoutError.prototype);\n        return _this;\n    }\n    return SignalingConnectionTimeoutError;\n}(TwilioError));\nexports.SignalingConnectionTimeoutError = SignalingConnectionTimeoutError;\nObject.defineProperty(TwilioErrorByCode, 53002, { value: SignalingConnectionTimeoutError });\n/**\n * @class SignalingIncomingMessageInvalidError\n * @classdesc Raised whenever the Client receives a message from the Server that the Client cannot handle.\n * @extends TwilioError\n * @property {number} code - 53003\n * @property {string} message - 'Client received an invalid signaling message'\n */\nvar SignalingIncomingMessageInvalidError = /** @class */ (function (_super) {\n    __extends(SignalingIncomingMessageInvalidError, _super);\n    function SignalingIncomingMessageInvalidError() {\n        var _this = _super.call(this, 53003, 'Client received an invalid signaling message') || this;\n        Object.setPrototypeOf(_this, SignalingIncomingMessageInvalidError.prototype);\n        return _this;\n    }\n    return SignalingIncomingMessageInvalidError;\n}(TwilioError));\nexports.SignalingIncomingMessageInvalidError = SignalingIncomingMessageInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53003, { value: SignalingIncomingMessageInvalidError });\n/**\n * @class SignalingOutgoingMessageInvalidError\n * @classdesc Raised whenever the Client sends a message to the Server that the Server cannot handle.\n * @extends TwilioError\n * @property {number} code - 53004\n * @property {string} message - 'Client sent an invalid signaling message'\n */\nvar SignalingOutgoingMessageInvalidError = /** @class */ (function (_super) {\n    __extends(SignalingOutgoingMessageInvalidError, _super);\n    function SignalingOutgoingMessageInvalidError() {\n        var _this = _super.call(this, 53004, 'Client sent an invalid signaling message') || this;\n        Object.setPrototypeOf(_this, SignalingOutgoingMessageInvalidError.prototype);\n        return _this;\n    }\n    return SignalingOutgoingMessageInvalidError;\n}(TwilioError));\nexports.SignalingOutgoingMessageInvalidError = SignalingOutgoingMessageInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53004, { value: SignalingOutgoingMessageInvalidError });\n/**\n * @class SignalingServerBusyError\n * @classdesc Raised when the server is too busy to accept new clients.\n * @extends TwilioError\n * @property {number} code - 53006\n * @property {string} message - 'Video server is busy'\n */\nvar SignalingServerBusyError = /** @class */ (function (_super) {\n    __extends(SignalingServerBusyError, _super);\n    function SignalingServerBusyError() {\n        var _this = _super.call(this, 53006, 'Video server is busy') || this;\n        Object.setPrototypeOf(_this, SignalingServerBusyError.prototype);\n        return _this;\n    }\n    return SignalingServerBusyError;\n}(TwilioError));\nexports.SignalingServerBusyError = SignalingServerBusyError;\nObject.defineProperty(TwilioErrorByCode, 53006, { value: SignalingServerBusyError });\n/**\n * @class RoomNameInvalidError\n * @classdesc Raised whenever a Room name is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53100\n * @property {string} message - 'Room name is invalid'\n */\nvar RoomNameInvalidError = /** @class */ (function (_super) {\n    __extends(RoomNameInvalidError, _super);\n    function RoomNameInvalidError() {\n        var _this = _super.call(this, 53100, 'Room name is invalid') || this;\n        Object.setPrototypeOf(_this, RoomNameInvalidError.prototype);\n        return _this;\n    }\n    return RoomNameInvalidError;\n}(TwilioError));\nexports.RoomNameInvalidError = RoomNameInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53100, { value: RoomNameInvalidError });\n/**\n * @class RoomNameTooLongError\n * @classdesc Raised whenever a Room name is too long.\n * @extends TwilioError\n * @property {number} code - 53101\n * @property {string} message - 'Room name is too long'\n */\nvar RoomNameTooLongError = /** @class */ (function (_super) {\n    __extends(RoomNameTooLongError, _super);\n    function RoomNameTooLongError() {\n        var _this = _super.call(this, 53101, 'Room name is too long') || this;\n        Object.setPrototypeOf(_this, RoomNameTooLongError.prototype);\n        return _this;\n    }\n    return RoomNameTooLongError;\n}(TwilioError));\nexports.RoomNameTooLongError = RoomNameTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53101, { value: RoomNameTooLongError });\n/**\n * @class RoomNameCharsInvalidError\n * @classdesc Raised whenever a Room name contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53102\n * @property {string} message - 'Room name contains invalid characters'\n */\nvar RoomNameCharsInvalidError = /** @class */ (function (_super) {\n    __extends(RoomNameCharsInvalidError, _super);\n    function RoomNameCharsInvalidError() {\n        var _this = _super.call(this, 53102, 'Room name contains invalid characters') || this;\n        Object.setPrototypeOf(_this, RoomNameCharsInvalidError.prototype);\n        return _this;\n    }\n    return RoomNameCharsInvalidError;\n}(TwilioError));\nexports.RoomNameCharsInvalidError = RoomNameCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53102, { value: RoomNameCharsInvalidError });\n/**\n * @class RoomCreateFailedError\n * @classdesc Raised whenever the Server is unable to create a Room.\n * @extends TwilioError\n * @property {number} code - 53103\n * @property {string} message - 'Unable to create Room'\n */\nvar RoomCreateFailedError = /** @class */ (function (_super) {\n    __extends(RoomCreateFailedError, _super);\n    function RoomCreateFailedError() {\n        var _this = _super.call(this, 53103, 'Unable to create Room') || this;\n        Object.setPrototypeOf(_this, RoomCreateFailedError.prototype);\n        return _this;\n    }\n    return RoomCreateFailedError;\n}(TwilioError));\nexports.RoomCreateFailedError = RoomCreateFailedError;\nObject.defineProperty(TwilioErrorByCode, 53103, { value: RoomCreateFailedError });\n/**\n * @class RoomConnectFailedError\n * @classdesc Raised whenever a Client is unable to connect to a Room, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53104\n * @property {string} message - 'Unable to connect to Room'\n */\nvar RoomConnectFailedError = /** @class */ (function (_super) {\n    __extends(RoomConnectFailedError, _super);\n    function RoomConnectFailedError() {\n        var _this = _super.call(this, 53104, 'Unable to connect to Room') || this;\n        Object.setPrototypeOf(_this, RoomConnectFailedError.prototype);\n        return _this;\n    }\n    return RoomConnectFailedError;\n}(TwilioError));\nexports.RoomConnectFailedError = RoomConnectFailedError;\nObject.defineProperty(TwilioErrorByCode, 53104, { value: RoomConnectFailedError });\n/**\n * @class RoomMaxParticipantsExceededError\n * @classdesc Raised whenever a Client is unable to connect to a Room because the Room contains too many Participants.\n * @extends TwilioError\n * @property {number} code - 53105\n * @property {string} message - 'Room contains too many Participants'\n */\nvar RoomMaxParticipantsExceededError = /** @class */ (function (_super) {\n    __extends(RoomMaxParticipantsExceededError, _super);\n    function RoomMaxParticipantsExceededError() {\n        var _this = _super.call(this, 53105, 'Room contains too many Participants') || this;\n        Object.setPrototypeOf(_this, RoomMaxParticipantsExceededError.prototype);\n        return _this;\n    }\n    return RoomMaxParticipantsExceededError;\n}(TwilioError));\nexports.RoomMaxParticipantsExceededError = RoomMaxParticipantsExceededError;\nObject.defineProperty(TwilioErrorByCode, 53105, { value: RoomMaxParticipantsExceededError });\n/**\n * @class RoomNotFoundError\n * @classdesc Raised whenever attempting operation on a non-existent Room.\n * @extends TwilioError\n * @property {number} code - 53106\n * @property {string} message - 'Room not found'\n */\nvar RoomNotFoundError = /** @class */ (function (_super) {\n    __extends(RoomNotFoundError, _super);\n    function RoomNotFoundError() {\n        var _this = _super.call(this, 53106, 'Room not found') || this;\n        Object.setPrototypeOf(_this, RoomNotFoundError.prototype);\n        return _this;\n    }\n    return RoomNotFoundError;\n}(TwilioError));\nexports.RoomNotFoundError = RoomNotFoundError;\nObject.defineProperty(TwilioErrorByCode, 53106, { value: RoomNotFoundError });\n/**\n * @class RoomMaxParticipantsOutOfRangeError\n * @classdesc Raised in the REST API when MaxParticipants is set out of range.\n * @extends TwilioError\n * @property {number} code - 53107\n * @property {string} message - 'MaxParticipants is out of range'\n */\nvar RoomMaxParticipantsOutOfRangeError = /** @class */ (function (_super) {\n    __extends(RoomMaxParticipantsOutOfRangeError, _super);\n    function RoomMaxParticipantsOutOfRangeError() {\n        var _this = _super.call(this, 53107, 'MaxParticipants is out of range') || this;\n        Object.setPrototypeOf(_this, RoomMaxParticipantsOutOfRangeError.prototype);\n        return _this;\n    }\n    return RoomMaxParticipantsOutOfRangeError;\n}(TwilioError));\nexports.RoomMaxParticipantsOutOfRangeError = RoomMaxParticipantsOutOfRangeError;\nObject.defineProperty(TwilioErrorByCode, 53107, { value: RoomMaxParticipantsOutOfRangeError });\n/**\n * @class RoomTypeInvalidError\n * @classdesc Raised in the REST API when the user attempts to create a Room with an invalid RoomType\n * @extends TwilioError\n * @property {number} code - 53108\n * @property {string} message - 'RoomType is not valid'\n */\nvar RoomTypeInvalidError = /** @class */ (function (_super) {\n    __extends(RoomTypeInvalidError, _super);\n    function RoomTypeInvalidError() {\n        var _this = _super.call(this, 53108, 'RoomType is not valid') || this;\n        Object.setPrototypeOf(_this, RoomTypeInvalidError.prototype);\n        return _this;\n    }\n    return RoomTypeInvalidError;\n}(TwilioError));\nexports.RoomTypeInvalidError = RoomTypeInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53108, { value: RoomTypeInvalidError });\n/**\n * @class RoomTimeoutOutOfRangeError\n * @classdesc Raised in the REST API when Timeout is set out of range.\n * @extends TwilioError\n * @property {number} code - 53109\n * @property {string} message - 'Timeout is out of range'\n */\nvar RoomTimeoutOutOfRangeError = /** @class */ (function (_super) {\n    __extends(RoomTimeoutOutOfRangeError, _super);\n    function RoomTimeoutOutOfRangeError() {\n        var _this = _super.call(this, 53109, 'Timeout is out of range') || this;\n        Object.setPrototypeOf(_this, RoomTimeoutOutOfRangeError.prototype);\n        return _this;\n    }\n    return RoomTimeoutOutOfRangeError;\n}(TwilioError));\nexports.RoomTimeoutOutOfRangeError = RoomTimeoutOutOfRangeError;\nObject.defineProperty(TwilioErrorByCode, 53109, { value: RoomTimeoutOutOfRangeError });\n/**\n * @class RoomStatusCallbackMethodInvalidError\n * @classdesc Raised in the REST API when StatusCallbackMethod is set to an invalid value.\n * @extends TwilioError\n * @property {number} code - 53110\n * @property {string} message - 'StatusCallbackMethod is invalid'\n */\nvar RoomStatusCallbackMethodInvalidError = /** @class */ (function (_super) {\n    __extends(RoomStatusCallbackMethodInvalidError, _super);\n    function RoomStatusCallbackMethodInvalidError() {\n        var _this = _super.call(this, 53110, 'StatusCallbackMethod is invalid') || this;\n        Object.setPrototypeOf(_this, RoomStatusCallbackMethodInvalidError.prototype);\n        return _this;\n    }\n    return RoomStatusCallbackMethodInvalidError;\n}(TwilioError));\nexports.RoomStatusCallbackMethodInvalidError = RoomStatusCallbackMethodInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53110, { value: RoomStatusCallbackMethodInvalidError });\n/**\n * @class RoomStatusCallbackInvalidError\n * @classdesc Raised in the REST API when StatusCallback is not a valid URL or the url is too long.\n * @extends TwilioError\n * @property {number} code - 53111\n * @property {string} message - 'StatusCallback is invalid'\n */\nvar RoomStatusCallbackInvalidError = /** @class */ (function (_super) {\n    __extends(RoomStatusCallbackInvalidError, _super);\n    function RoomStatusCallbackInvalidError() {\n        var _this = _super.call(this, 53111, 'StatusCallback is invalid') || this;\n        Object.setPrototypeOf(_this, RoomStatusCallbackInvalidError.prototype);\n        return _this;\n    }\n    return RoomStatusCallbackInvalidError;\n}(TwilioError));\nexports.RoomStatusCallbackInvalidError = RoomStatusCallbackInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53111, { value: RoomStatusCallbackInvalidError });\n/**\n * @class RoomStatusInvalidError\n * @classdesc Raised in the REST API when Status is not valid or the Room is not in-progress.\n * @extends TwilioError\n * @property {number} code - 53112\n * @property {string} message - 'Status is invalid'\n */\nvar RoomStatusInvalidError = /** @class */ (function (_super) {\n    __extends(RoomStatusInvalidError, _super);\n    function RoomStatusInvalidError() {\n        var _this = _super.call(this, 53112, 'Status is invalid') || this;\n        Object.setPrototypeOf(_this, RoomStatusInvalidError.prototype);\n        return _this;\n    }\n    return RoomStatusInvalidError;\n}(TwilioError));\nexports.RoomStatusInvalidError = RoomStatusInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53112, { value: RoomStatusInvalidError });\n/**\n * @class RoomRoomExistsError\n * @classdesc Raised in the REST API when the Room creation fails because a Room exists with the same name.\n * @extends TwilioError\n * @property {number} code - 53113\n * @property {string} message - 'Room exists'\n */\nvar RoomRoomExistsError = /** @class */ (function (_super) {\n    __extends(RoomRoomExistsError, _super);\n    function RoomRoomExistsError() {\n        var _this = _super.call(this, 53113, 'Room exists') || this;\n        Object.setPrototypeOf(_this, RoomRoomExistsError.prototype);\n        return _this;\n    }\n    return RoomRoomExistsError;\n}(TwilioError));\nexports.RoomRoomExistsError = RoomRoomExistsError;\nObject.defineProperty(TwilioErrorByCode, 53113, { value: RoomRoomExistsError });\n/**\n * @class RoomInvalidParametersError\n * @classdesc Raised in the REST API when one or more Room creation parameter is incompatible with the Room type.\n * @extends TwilioError\n * @property {number} code - 53114\n * @property {string} message - 'Room creation parameter(s) incompatible with the Room type'\n */\nvar RoomInvalidParametersError = /** @class */ (function (_super) {\n    __extends(RoomInvalidParametersError, _super);\n    function RoomInvalidParametersError() {\n        var _this = _super.call(this, 53114, 'Room creation parameter(s) incompatible with the Room type') || this;\n        Object.setPrototypeOf(_this, RoomInvalidParametersError.prototype);\n        return _this;\n    }\n    return RoomInvalidParametersError;\n}(TwilioError));\nexports.RoomInvalidParametersError = RoomInvalidParametersError;\nObject.defineProperty(TwilioErrorByCode, 53114, { value: RoomInvalidParametersError });\n/**\n * @class RoomMediaRegionInvalidError\n * @classdesc Raised in the REST API when MediaRegion is set to an invalid value.\n * @extends TwilioError\n * @property {number} code - 53115\n * @property {string} message - 'MediaRegion is invalid'\n */\nvar RoomMediaRegionInvalidError = /** @class */ (function (_super) {\n    __extends(RoomMediaRegionInvalidError, _super);\n    function RoomMediaRegionInvalidError() {\n        var _this = _super.call(this, 53115, 'MediaRegion is invalid') || this;\n        Object.setPrototypeOf(_this, RoomMediaRegionInvalidError.prototype);\n        return _this;\n    }\n    return RoomMediaRegionInvalidError;\n}(TwilioError));\nexports.RoomMediaRegionInvalidError = RoomMediaRegionInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53115, { value: RoomMediaRegionInvalidError });\n/**\n * @class RoomMediaRegionUnavailableError\n * @classdesc Raised in the REST API when MediaRegion is set to a valid value but no media servers are available.\n * @extends TwilioError\n * @property {number} code - 53116\n * @property {string} message - 'There are no media servers available in the MediaRegion'\n */\nvar RoomMediaRegionUnavailableError = /** @class */ (function (_super) {\n    __extends(RoomMediaRegionUnavailableError, _super);\n    function RoomMediaRegionUnavailableError() {\n        var _this = _super.call(this, 53116, 'There are no media servers available in the MediaRegion') || this;\n        Object.setPrototypeOf(_this, RoomMediaRegionUnavailableError.prototype);\n        return _this;\n    }\n    return RoomMediaRegionUnavailableError;\n}(TwilioError));\nexports.RoomMediaRegionUnavailableError = RoomMediaRegionUnavailableError;\nObject.defineProperty(TwilioErrorByCode, 53116, { value: RoomMediaRegionUnavailableError });\n/**\n * @class RoomSubscriptionOperationNotSupportedError\n * @classdesc Raised whenever the subscription operation requested is not supported for the Room type.\n * @extends TwilioError\n * @property {number} code - 53117\n * @property {string} message - 'The subscription operation requested is not supported for the Room type'\n */\nvar RoomSubscriptionOperationNotSupportedError = /** @class */ (function (_super) {\n    __extends(RoomSubscriptionOperationNotSupportedError, _super);\n    function RoomSubscriptionOperationNotSupportedError() {\n        var _this = _super.call(this, 53117, 'The subscription operation requested is not supported for the Room type') || this;\n        Object.setPrototypeOf(_this, RoomSubscriptionOperationNotSupportedError.prototype);\n        return _this;\n    }\n    return RoomSubscriptionOperationNotSupportedError;\n}(TwilioError));\nexports.RoomSubscriptionOperationNotSupportedError = RoomSubscriptionOperationNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53117, { value: RoomSubscriptionOperationNotSupportedError });\n/**\n * @class RoomCompletedError\n * @classdesc Raised whenever a Room is completed via the REST API.\n * @extends TwilioError\n * @property {number} code - 53118\n * @property {string} message - 'Room completed'\n */\nvar RoomCompletedError = /** @class */ (function (_super) {\n    __extends(RoomCompletedError, _super);\n    function RoomCompletedError() {\n        var _this = _super.call(this, 53118, 'Room completed') || this;\n        Object.setPrototypeOf(_this, RoomCompletedError.prototype);\n        return _this;\n    }\n    return RoomCompletedError;\n}(TwilioError));\nexports.RoomCompletedError = RoomCompletedError;\nObject.defineProperty(TwilioErrorByCode, 53118, { value: RoomCompletedError });\n/**\n * @class RoomAudioOnlyFlagNotSupportedError\n * @classdesc Raised whenever a participant tries to set the AudioOnly flag for a Room type other than Group Rooms.\n * @extends TwilioError\n * @property {number} code - 53124\n * @property {string} message - 'The AudioOnly flag is not supported for the Room type'\n */\nvar RoomAudioOnlyFlagNotSupportedError = /** @class */ (function (_super) {\n    __extends(RoomAudioOnlyFlagNotSupportedError, _super);\n    function RoomAudioOnlyFlagNotSupportedError() {\n        var _this = _super.call(this, 53124, 'The AudioOnly flag is not supported for the Room type') || this;\n        Object.setPrototypeOf(_this, RoomAudioOnlyFlagNotSupportedError.prototype);\n        return _this;\n    }\n    return RoomAudioOnlyFlagNotSupportedError;\n}(TwilioError));\nexports.RoomAudioOnlyFlagNotSupportedError = RoomAudioOnlyFlagNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53124, { value: RoomAudioOnlyFlagNotSupportedError });\n/**\n * @class RoomTrackKindNotSupportedError\n * @classdesc Raised whenever a participant tries to publish a track or connects with a track that is not supported by the group room.\n * @extends TwilioError\n * @property {number} code - 53125\n * @property {string} message - 'The track kind is not supported by the Room'\n */\nvar RoomTrackKindNotSupportedError = /** @class */ (function (_super) {\n    __extends(RoomTrackKindNotSupportedError, _super);\n    function RoomTrackKindNotSupportedError() {\n        var _this = _super.call(this, 53125, 'The track kind is not supported by the Room') || this;\n        Object.setPrototypeOf(_this, RoomTrackKindNotSupportedError.prototype);\n        return _this;\n    }\n    return RoomTrackKindNotSupportedError;\n}(TwilioError));\nexports.RoomTrackKindNotSupportedError = RoomTrackKindNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53125, { value: RoomTrackKindNotSupportedError });\n/**\n * @class ParticipantIdentityInvalidError\n * @classdesc Raised whenever a Participant identity is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53200\n * @property {string} message - 'Participant identity is invalid'\n */\nvar ParticipantIdentityInvalidError = /** @class */ (function (_super) {\n    __extends(ParticipantIdentityInvalidError, _super);\n    function ParticipantIdentityInvalidError() {\n        var _this = _super.call(this, 53200, 'Participant identity is invalid') || this;\n        Object.setPrototypeOf(_this, ParticipantIdentityInvalidError.prototype);\n        return _this;\n    }\n    return ParticipantIdentityInvalidError;\n}(TwilioError));\nexports.ParticipantIdentityInvalidError = ParticipantIdentityInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53200, { value: ParticipantIdentityInvalidError });\n/**\n * @class ParticipantIdentityTooLongError\n * @classdesc Raised whenever a Participant identity is too long.\n * @extends TwilioError\n * @property {number} code - 53201\n * @property {string} message - 'Participant identity is too long'\n */\nvar ParticipantIdentityTooLongError = /** @class */ (function (_super) {\n    __extends(ParticipantIdentityTooLongError, _super);\n    function ParticipantIdentityTooLongError() {\n        var _this = _super.call(this, 53201, 'Participant identity is too long') || this;\n        Object.setPrototypeOf(_this, ParticipantIdentityTooLongError.prototype);\n        return _this;\n    }\n    return ParticipantIdentityTooLongError;\n}(TwilioError));\nexports.ParticipantIdentityTooLongError = ParticipantIdentityTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53201, { value: ParticipantIdentityTooLongError });\n/**\n * @class ParticipantIdentityCharsInvalidError\n * @classdesc Raised whenever a Participant identity contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53202\n * @property {string} message - 'Participant identity contains invalid characters'\n */\nvar ParticipantIdentityCharsInvalidError = /** @class */ (function (_super) {\n    __extends(ParticipantIdentityCharsInvalidError, _super);\n    function ParticipantIdentityCharsInvalidError() {\n        var _this = _super.call(this, 53202, 'Participant identity contains invalid characters') || this;\n        Object.setPrototypeOf(_this, ParticipantIdentityCharsInvalidError.prototype);\n        return _this;\n    }\n    return ParticipantIdentityCharsInvalidError;\n}(TwilioError));\nexports.ParticipantIdentityCharsInvalidError = ParticipantIdentityCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53202, { value: ParticipantIdentityCharsInvalidError });\n/**\n * @class ParticipantMaxTracksExceededError\n * @classdesc Raised whenever a Participant tries to publish a Track and the maximum number of published tracks allowed in the Room at the same time has been reached\n * @extends TwilioError\n * @property {number} code - 53203\n * @property {string} message - 'The maximum number of published tracks allowed in the Room at the same time has been reached'\n */\nvar ParticipantMaxTracksExceededError = /** @class */ (function (_super) {\n    __extends(ParticipantMaxTracksExceededError, _super);\n    function ParticipantMaxTracksExceededError() {\n        var _this = _super.call(this, 53203, 'The maximum number of published tracks allowed in the Room at the same time has been reached') || this;\n        Object.setPrototypeOf(_this, ParticipantMaxTracksExceededError.prototype);\n        return _this;\n    }\n    return ParticipantMaxTracksExceededError;\n}(TwilioError));\nexports.ParticipantMaxTracksExceededError = ParticipantMaxTracksExceededError;\nObject.defineProperty(TwilioErrorByCode, 53203, { value: ParticipantMaxTracksExceededError });\n/**\n * @class ParticipantNotFoundError\n * @classdesc Raised whenever attempting an operation on a non-existent Participant.\n * @extends TwilioError\n * @property {number} code - 53204\n * @property {string} message - 'Participant not found'\n */\nvar ParticipantNotFoundError = /** @class */ (function (_super) {\n    __extends(ParticipantNotFoundError, _super);\n    function ParticipantNotFoundError() {\n        var _this = _super.call(this, 53204, 'Participant not found') || this;\n        Object.setPrototypeOf(_this, ParticipantNotFoundError.prototype);\n        return _this;\n    }\n    return ParticipantNotFoundError;\n}(TwilioError));\nexports.ParticipantNotFoundError = ParticipantNotFoundError;\nObject.defineProperty(TwilioErrorByCode, 53204, { value: ParticipantNotFoundError });\n/**\n * @class ParticipantDuplicateIdentityError\n * @classdesc Raised by the server to the existing Participant when a new Participant joins a Room with the same identity as the existing Participant.\n * @extends TwilioError\n * @property {number} code - 53205\n * @property {string} message - 'Participant disconnected because of duplicate identity'\n */\nvar ParticipantDuplicateIdentityError = /** @class */ (function (_super) {\n    __extends(ParticipantDuplicateIdentityError, _super);\n    function ParticipantDuplicateIdentityError() {\n        var _this = _super.call(this, 53205, 'Participant disconnected because of duplicate identity') || this;\n        Object.setPrototypeOf(_this, ParticipantDuplicateIdentityError.prototype);\n        return _this;\n    }\n    return ParticipantDuplicateIdentityError;\n}(TwilioError));\nexports.ParticipantDuplicateIdentityError = ParticipantDuplicateIdentityError;\nObject.defineProperty(TwilioErrorByCode, 53205, { value: ParticipantDuplicateIdentityError });\n/**\n * @class TrackInvalidError\n * @classdesc Raised whenever a Track is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53300\n * @property {string} message - 'Track is invalid'\n */\nvar TrackInvalidError = /** @class */ (function (_super) {\n    __extends(TrackInvalidError, _super);\n    function TrackInvalidError() {\n        var _this = _super.call(this, 53300, 'Track is invalid') || this;\n        Object.setPrototypeOf(_this, TrackInvalidError.prototype);\n        return _this;\n    }\n    return TrackInvalidError;\n}(TwilioError));\nexports.TrackInvalidError = TrackInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53300, { value: TrackInvalidError });\n/**\n * @class TrackNameInvalidError\n * @classdesc Raised whenever a Track name is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53301\n * @property {string} message - 'Track name is invalid'\n */\nvar TrackNameInvalidError = /** @class */ (function (_super) {\n    __extends(TrackNameInvalidError, _super);\n    function TrackNameInvalidError() {\n        var _this = _super.call(this, 53301, 'Track name is invalid') || this;\n        Object.setPrototypeOf(_this, TrackNameInvalidError.prototype);\n        return _this;\n    }\n    return TrackNameInvalidError;\n}(TwilioError));\nexports.TrackNameInvalidError = TrackNameInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53301, { value: TrackNameInvalidError });\n/**\n * @class TrackNameTooLongError\n * @classdesc Raised whenever a Track name is too long.\n * @extends TwilioError\n * @property {number} code - 53302\n * @property {string} message - 'Track name is too long'\n */\nvar TrackNameTooLongError = /** @class */ (function (_super) {\n    __extends(TrackNameTooLongError, _super);\n    function TrackNameTooLongError() {\n        var _this = _super.call(this, 53302, 'Track name is too long') || this;\n        Object.setPrototypeOf(_this, TrackNameTooLongError.prototype);\n        return _this;\n    }\n    return TrackNameTooLongError;\n}(TwilioError));\nexports.TrackNameTooLongError = TrackNameTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53302, { value: TrackNameTooLongError });\n/**\n * @class TrackNameCharsInvalidError\n * @classdesc Raised whenever a Track name contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53303\n * @property {string} message - 'Track name contains invalid characters'\n */\nvar TrackNameCharsInvalidError = /** @class */ (function (_super) {\n    __extends(TrackNameCharsInvalidError, _super);\n    function TrackNameCharsInvalidError() {\n        var _this = _super.call(this, 53303, 'Track name contains invalid characters') || this;\n        Object.setPrototypeOf(_this, TrackNameCharsInvalidError.prototype);\n        return _this;\n    }\n    return TrackNameCharsInvalidError;\n}(TwilioError));\nexports.TrackNameCharsInvalidError = TrackNameCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53303, { value: TrackNameCharsInvalidError });\n/**\n * @class TrackNameIsDuplicatedError\n * @classdesc Raised whenever a Participant is currently publishing a Track with the same name.\n * @extends TwilioError\n * @property {number} code - 53304\n * @property {string} message - 'Track name is duplicated'\n */\nvar TrackNameIsDuplicatedError = /** @class */ (function (_super) {\n    __extends(TrackNameIsDuplicatedError, _super);\n    function TrackNameIsDuplicatedError() {\n        var _this = _super.call(this, 53304, 'Track name is duplicated') || this;\n        Object.setPrototypeOf(_this, TrackNameIsDuplicatedError.prototype);\n        return _this;\n    }\n    return TrackNameIsDuplicatedError;\n}(TwilioError));\nexports.TrackNameIsDuplicatedError = TrackNameIsDuplicatedError;\nObject.defineProperty(TwilioErrorByCode, 53304, { value: TrackNameIsDuplicatedError });\n/**\n * @class TrackServerTrackCapacityReachedError\n * @classdesc The server does not have enough resources available to create a new Track.\n * @extends TwilioError\n * @property {number} code - 53305\n * @property {string} message - 'The server has reached capacity and cannot fulfill this request'\n */\nvar TrackServerTrackCapacityReachedError = /** @class */ (function (_super) {\n    __extends(TrackServerTrackCapacityReachedError, _super);\n    function TrackServerTrackCapacityReachedError() {\n        var _this = _super.call(this, 53305, 'The server has reached capacity and cannot fulfill this request') || this;\n        Object.setPrototypeOf(_this, TrackServerTrackCapacityReachedError.prototype);\n        return _this;\n    }\n    return TrackServerTrackCapacityReachedError;\n}(TwilioError));\nexports.TrackServerTrackCapacityReachedError = TrackServerTrackCapacityReachedError;\nObject.defineProperty(TwilioErrorByCode, 53305, { value: TrackServerTrackCapacityReachedError });\n/**\n * @class MediaClientLocalDescFailedError\n * @classdesc Raised whenever a Client is unable to create or apply a local media description.\n * @extends TwilioError\n * @property {number} code - 53400\n * @property {string} message - 'Client is unable to create or apply a local media description'\n */\nvar MediaClientLocalDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaClientLocalDescFailedError, _super);\n    function MediaClientLocalDescFailedError() {\n        var _this = _super.call(this, 53400, 'Client is unable to create or apply a local media description') || this;\n        Object.setPrototypeOf(_this, MediaClientLocalDescFailedError.prototype);\n        return _this;\n    }\n    return MediaClientLocalDescFailedError;\n}(TwilioError));\nexports.MediaClientLocalDescFailedError = MediaClientLocalDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53400, { value: MediaClientLocalDescFailedError });\n/**\n * @class MediaServerLocalDescFailedError\n * @classdesc Raised whenever the Server is unable to create or apply a local media description.\n * @extends TwilioError\n * @property {number} code - 53401\n * @property {string} message - 'Server is unable to create or apply a local media description'\n */\nvar MediaServerLocalDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaServerLocalDescFailedError, _super);\n    function MediaServerLocalDescFailedError() {\n        var _this = _super.call(this, 53401, 'Server is unable to create or apply a local media description') || this;\n        Object.setPrototypeOf(_this, MediaServerLocalDescFailedError.prototype);\n        return _this;\n    }\n    return MediaServerLocalDescFailedError;\n}(TwilioError));\nexports.MediaServerLocalDescFailedError = MediaServerLocalDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53401, { value: MediaServerLocalDescFailedError });\n/**\n * @class MediaClientRemoteDescFailedError\n * @classdesc Raised whenever the Client receives a remote media description but is unable to apply it.\n * @extends TwilioError\n * @property {number} code - 53402\n * @property {string} message - 'Client is unable to apply a remote media description'\n */\nvar MediaClientRemoteDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaClientRemoteDescFailedError, _super);\n    function MediaClientRemoteDescFailedError() {\n        var _this = _super.call(this, 53402, 'Client is unable to apply a remote media description') || this;\n        Object.setPrototypeOf(_this, MediaClientRemoteDescFailedError.prototype);\n        return _this;\n    }\n    return MediaClientRemoteDescFailedError;\n}(TwilioError));\nexports.MediaClientRemoteDescFailedError = MediaClientRemoteDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53402, { value: MediaClientRemoteDescFailedError });\n/**\n * @class MediaServerRemoteDescFailedError\n * @classdesc Raised whenever the Server receives a remote media description but is unable to apply it.\n * @extends TwilioError\n * @property {number} code - 53403\n * @property {string} message - 'Server is unable to apply a remote media description'\n */\nvar MediaServerRemoteDescFailedError = /** @class */ (function (_super) {\n    __extends(MediaServerRemoteDescFailedError, _super);\n    function MediaServerRemoteDescFailedError() {\n        var _this = _super.call(this, 53403, 'Server is unable to apply a remote media description') || this;\n        Object.setPrototypeOf(_this, MediaServerRemoteDescFailedError.prototype);\n        return _this;\n    }\n    return MediaServerRemoteDescFailedError;\n}(TwilioError));\nexports.MediaServerRemoteDescFailedError = MediaServerRemoteDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53403, { value: MediaServerRemoteDescFailedError });\n/**\n * @class MediaNoSupportedCodecError\n * @classdesc Raised whenever the intersection of codecs supported by the Client and the Server (or, in peer-to-peer, the Client and another Participant) is empty.\n * @extends TwilioError\n * @property {number} code - 53404\n * @property {string} message - 'No supported codec'\n */\nvar MediaNoSupportedCodecError = /** @class */ (function (_super) {\n    __extends(MediaNoSupportedCodecError, _super);\n    function MediaNoSupportedCodecError() {\n        var _this = _super.call(this, 53404, 'No supported codec') || this;\n        Object.setPrototypeOf(_this, MediaNoSupportedCodecError.prototype);\n        return _this;\n    }\n    return MediaNoSupportedCodecError;\n}(TwilioError));\nexports.MediaNoSupportedCodecError = MediaNoSupportedCodecError;\nObject.defineProperty(TwilioErrorByCode, 53404, { value: MediaNoSupportedCodecError });\n/**\n * @class MediaConnectionError\n * @classdesc Raised by the Client or Server whenever a media connection fails or raised by the Client whenever it detects that media has stopped flowing.\n * @extends TwilioError\n * @property {number} code - 53405\n * @property {string} message - 'Media connection failed or Media activity ceased'\n */\nvar MediaConnectionError = /** @class */ (function (_super) {\n    __extends(MediaConnectionError, _super);\n    function MediaConnectionError() {\n        var _this = _super.call(this, 53405, 'Media connection failed or Media activity ceased') || this;\n        Object.setPrototypeOf(_this, MediaConnectionError.prototype);\n        return _this;\n    }\n    return MediaConnectionError;\n}(TwilioError));\nexports.MediaConnectionError = MediaConnectionError;\nObject.defineProperty(TwilioErrorByCode, 53405, { value: MediaConnectionError });\n/**\n * @class MediaDTLSTransportFailedError\n * @classdesc There was a problem while negotiating with the remote DTLS peer. Therefore the Participant will not be able to publish or subscribe to Tracks.\n * @extends TwilioError\n * @property {number} code - 53407\n * @property {string} message - 'Media connection failed due to DTLS handshake failure'\n */\nvar MediaDTLSTransportFailedError = /** @class */ (function (_super) {\n    __extends(MediaDTLSTransportFailedError, _super);\n    function MediaDTLSTransportFailedError() {\n        var _this = _super.call(this, 53407, 'Media connection failed due to DTLS handshake failure') || this;\n        Object.setPrototypeOf(_this, MediaDTLSTransportFailedError.prototype);\n        return _this;\n    }\n    return MediaDTLSTransportFailedError;\n}(TwilioError));\nexports.MediaDTLSTransportFailedError = MediaDTLSTransportFailedError;\nObject.defineProperty(TwilioErrorByCode, 53407, { value: MediaDTLSTransportFailedError });\n/**\n * @class ConfigurationAcquireFailedError\n * @classdesc Raised whenever the Client is unable to acquire configuration information from the Server.\n * @extends TwilioError\n * @property {number} code - 53500\n * @property {string} message - 'Unable to acquire configuration'\n */\nvar ConfigurationAcquireFailedError = /** @class */ (function (_super) {\n    __extends(ConfigurationAcquireFailedError, _super);\n    function ConfigurationAcquireFailedError() {\n        var _this = _super.call(this, 53500, 'Unable to acquire configuration') || this;\n        Object.setPrototypeOf(_this, ConfigurationAcquireFailedError.prototype);\n        return _this;\n    }\n    return ConfigurationAcquireFailedError;\n}(TwilioError));\nexports.ConfigurationAcquireFailedError = ConfigurationAcquireFailedError;\nObject.defineProperty(TwilioErrorByCode, 53500, { value: ConfigurationAcquireFailedError });\n/**\n * @class ConfigurationAcquireTurnFailedError\n * @classdesc Raised whenever the Server is unable to return TURN credentials to the Client\n * @extends TwilioError\n * @property {number} code - 53501\n * @property {string} message - 'Unable to acquire TURN credentials'\n */\nvar ConfigurationAcquireTurnFailedError = /** @class */ (function (_super) {\n    __extends(ConfigurationAcquireTurnFailedError, _super);\n    function ConfigurationAcquireTurnFailedError() {\n        var _this = _super.call(this, 53501, 'Unable to acquire TURN credentials') || this;\n        Object.setPrototypeOf(_this, ConfigurationAcquireTurnFailedError.prototype);\n        return _this;\n    }\n    return ConfigurationAcquireTurnFailedError;\n}(TwilioError));\nexports.ConfigurationAcquireTurnFailedError = ConfigurationAcquireTurnFailedError;\nObject.defineProperty(TwilioErrorByCode, 53501, { value: ConfigurationAcquireTurnFailedError });\n\n},{\"./twilioerror\":163}],163:[function(require,module,exports){\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @extends Error\n * @property {number} code - Error code\n */\nvar TwilioError = /** @class */ (function (_super) {\n    __extends(TwilioError, _super);\n    /**\n     * Creates a new {@link TwilioError}\n     * @param {number} code - Error code\n     * @param {string} [message] - Error message\n     * @param {string} [fileName] - Name of the script file where error was generated\n     * @param {number} [lineNumber] - Line number of the script file where error was generated\n     */\n    function TwilioError(code) {\n        var _this = this;\n        var args = [].slice.call(arguments, 1);\n        _this = _super.apply(this, __spreadArray([], __read(args), false)) || this;\n        Object.setPrototypeOf(_this, TwilioError.prototype);\n        var error = Error.apply(_this, args);\n        error.name = 'TwilioError';\n        Object.defineProperty(_this, 'code', {\n            value: code,\n            enumerable: true\n        });\n        Object.getOwnPropertyNames(error).forEach(function (prop) {\n            Object.defineProperty(this, prop, {\n                value: error[prop],\n                enumerable: true\n            });\n        }, _this);\n        return _this;\n    }\n    /**\n     * Returns human readable string describing the error.\n     * @returns {string}\n     */\n    TwilioError.prototype.toString = function () {\n        var message = this.message ? \": \".concat(this.message) : '';\n        return \"\".concat(this.name, \" \").concat(this.code).concat(message);\n    };\n    return TwilioError;\n}(Error));\nmodule.exports = TwilioError;\n\n},{}],164:[function(require,module,exports){\n'use strict';\n/**\n * @private\n * Represents a warning encountered when\n * interacting with one of Twilio's services.\n */\nvar TwilioWarning = {\n    recordingMediaLost: 'recording-media-lost'\n};\nmodule.exports = TwilioWarning;\n\n},{}],165:[function(require,module,exports){\n'use strict';\nvar isNonArrayObject = require('./').isNonArrayObject;\nvar _a = require('./constants'), E = _a.typeErrors, clientTrackSwitchOffControl = _a.clientTrackSwitchOffControl, videoContentPreferencesMode = _a.videoContentPreferencesMode, subscriptionMode = _a.subscriptionMode, trackPriority = _a.trackPriority, trackSwitchOffMode = _a.trackSwitchOffMode;\n/**\n * Validate the {@link BandwidthProfileOptions} object.\n * @param {BandwidthProfileOptions} bandwidthProfile\n * @returns {?Error} - null if valid, Error if not.\n */\nfunction validateBandwidthProfile(bandwidthProfile) {\n    var error = validateObject(bandwidthProfile, 'options.bandwidthProfile');\n    if (!bandwidthProfile || error) {\n        return error;\n    }\n    error = validateObject(bandwidthProfile.video, 'options.bandwidthProfile.video', [\n        { prop: 'contentPreferencesMode', values: Object.values(videoContentPreferencesMode) },\n        { prop: 'dominantSpeakerPriority', values: Object.values(trackPriority) },\n        { prop: 'maxSubscriptionBitrate', type: 'number' },\n        { prop: 'maxTracks', type: 'number' },\n        { prop: 'mode', values: Object.values(subscriptionMode) },\n        { prop: 'clientTrackSwitchOffControl', values: Object.values(clientTrackSwitchOffControl) },\n        { prop: 'trackSwitchOffMode', values: Object.values(trackSwitchOffMode) }\n    ]);\n    if (error) {\n        return error;\n    }\n    if (bandwidthProfile.video) {\n        // maxTracks is replaced by clientTrackSwitchOffControl.\n        // throw an error if both are specified.\n        if ('maxTracks' in bandwidthProfile.video && 'clientTrackSwitchOffControl' in bandwidthProfile.video) {\n            return new TypeError('options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead.');\n        }\n        // renderDimensions is replaced by contentPreferencesMode.\n        // throw an error if both are specified.\n        if ('renderDimensions' in bandwidthProfile.video && 'contentPreferencesMode' in bandwidthProfile.video) {\n            return new TypeError('options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead.');\n        }\n        return validateRenderDimensions(bandwidthProfile.video.renderDimensions);\n    }\n    return null;\n}\n/**\n * Throw if the given track is not a {@link LocalAudioTrack}, a\n * {@link LocalVideoTrack} or a MediaStreamTrack.\n * @param {*} track\n * @param {object} options\n */\nfunction validateLocalTrack(track, options) {\n    if (!(track instanceof options.LocalAudioTrack\n        || track instanceof options.LocalDataTrack\n        || track instanceof options.LocalVideoTrack\n        || track instanceof options.MediaStreamTrack)) {\n        /* eslint new-cap:0 */\n        throw E.INVALID_TYPE('track', 'LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n    }\n}\n/**\n * Validate an object. An object is valid if it is undefined or a non-null, non-array\n * object whose properties satisfy the specified data-type or value-range requirements.\n * @param {object} object - the object to be validated\n * @param {string} name - the object name to be used to build the error message, if invalid\n * @param {Array<object>} [propChecks] - optional data-type or value-range requirements\n *   for the object's properties\n * @returns {?Error} - null if object is valid, Error if not\n */\nfunction validateObject(object, name, propChecks) {\n    if (propChecks === void 0) { propChecks = []; }\n    // NOTE(mmalavalli): We determine that an undefined object is valid because this\n    // means the parent object does not contain this object as a property, which is\n    // a valid scenario.\n    if (typeof object === 'undefined') {\n        return null;\n    }\n    // NOTE(mmalavalli): We determine that if the object is null, or an Array, or\n    // any other non-object type, then it is invalid.\n    if (object === null || !isNonArrayObject(object)) {\n        return E.INVALID_TYPE(name, 'object');\n    }\n    // NOTE(mmalavalli): We determine that the object is invalid if at least one of\n    // its properties does not satisfy its data-type or value-range requirement.\n    return propChecks.reduce(function (error, _a) {\n        var prop = _a.prop, type = _a.type, values = _a.values;\n        if (error || !(prop in object)) {\n            return error;\n        }\n        var value = object[prop];\n        if (type && typeof value !== type) {\n            return E.INVALID_TYPE(\"\".concat(name, \".\").concat(prop), type);\n        }\n        if (type === 'number' && isNaN(value)) {\n            return E.INVALID_TYPE(\"\".concat(name, \".\").concat(prop), type);\n        }\n        if (Array.isArray(values) && !values.includes(value)) {\n            return E.INVALID_VALUE(\"\".concat(name, \".\").concat(prop), values);\n        }\n        return error;\n    }, null);\n}\n/**\n * Validates the renderDimensions field to be \"auto\" or {@link VideoRenderDimensions} object.\n * @param {string|VideoRenderDimensions} renderDimensions\n * @returns {?Error} - null if valid, Error if not.\n */\nfunction validateRenderDimensions(renderDimensions) {\n    var name = 'options.bandwidthProfile.video.renderDimensions';\n    var error = validateObject(renderDimensions, name);\n    return renderDimensions ? error || Object.values(trackPriority).reduce(function (error, prop) {\n        return error || validateObject(renderDimensions[prop], \"\".concat(name, \".\").concat(prop), [\n            { prop: 'height', type: 'number' },\n            { prop: 'width', type: 'number' }\n        ]);\n    }, null) : error;\n}\nexports.validateBandwidthProfile = validateBandwidthProfile;\nexports.validateLocalTrack = validateLocalTrack;\nexports.validateObject = validateObject;\n\n},{\"./\":147,\"./constants\":140}],166:[function(require,module,exports){\n/**\n * Copyright (c) 2011-2022 Isaac Z. Schlueter\n * Licensed under the ISC License.\n *\n * Copied from https://github.com/isaacs/inherits (2.0.4)\n*/\nmodule.exports = function inherits(ctor, superCtor) {\n    if (ctor && superCtor) {\n        ctor.super_ = superCtor;\n        if (typeof Object.create === 'function') {\n            // implementation from standard node.js 'util' module\n            ctor.prototype = Object.create(superCtor.prototype, {\n                constructor: {\n                    value: ctor,\n                    enumerable: false,\n                    writable: true,\n                    configurable: true\n                }\n            });\n        }\n        else {\n            // old school shim for old browsers\n            var TempCtor = /** @class */ (function () {\n                function TempCtor() {\n                }\n                return TempCtor;\n            }());\n            TempCtor.prototype = superCtor.prototype;\n            ctor.prototype = new TempCtor();\n            ctor.prototype.constructor = ctor;\n        }\n    }\n};\n\n},{}],167:[function(require,module,exports){\n/**\n * Copyright (c) 2013 Tim Perry\n * Licensed under the MIT license.\n *\n * Copied from https://github.com/pimterry/loglevel (1.7.0)\n * and modified to remove browser and AMD module support, while keeping CommonJS.\n * It was causing a conflict when this is bundled using CommonJS, and then loaded via RequireJS.\n * The proper way to fix this module is to have a build that outputs CommonJS and AMD separately\n * which needs to be submitted to the original module's repo.\n */\n/* istanbul ignore file */\n/* eslint-disable */\n// Slightly dubious tricks to cut down minimized file size\nvar noop = function () { };\nvar undefinedType = \"undefined\";\nvar isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (/Trident\\/|MSIE /.test(window.navigator.userAgent));\nvar logMethods = [\n    \"trace\",\n    \"debug\",\n    \"info\",\n    \"warn\",\n    \"error\"\n];\n// Cross-browser bind equivalent that works at least back to IE6\nfunction bindMethod(obj, methodName) {\n    var method = obj[methodName];\n    if (typeof method.bind === 'function') {\n        return method.bind(obj);\n    }\n    else {\n        try {\n            return Function.prototype.bind.call(method, obj);\n        }\n        catch (e) {\n            // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n            return function () {\n                return Function.prototype.apply.apply(method, [obj, arguments]);\n            };\n        }\n    }\n}\n// Trace() doesn't print the message in IE, so for that case we need to wrap it\nfunction traceForIE() {\n    if (console.log) {\n        if (console.log.apply) {\n            console.log.apply(console, arguments);\n        }\n        else {\n            // In old IE, native console methods themselves don't have apply().\n            Function.prototype.apply.apply(console.log, [console, arguments]);\n        }\n    }\n    if (console.trace)\n        console.trace();\n}\n// Build the best logging method possible for this env\n// Wherever possible we want to bind, not wrap, to preserve stack traces\nfunction realMethod(methodName) {\n    if (methodName === 'debug') {\n        methodName = 'log';\n    }\n    if (typeof console === undefinedType) {\n        return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n    }\n    else if (methodName === 'trace' && isIE) {\n        return traceForIE;\n    }\n    else if (console[methodName] !== undefined) {\n        return bindMethod(console, methodName);\n    }\n    else if (console.log !== undefined) {\n        return bindMethod(console, 'log');\n    }\n    else {\n        return noop;\n    }\n}\n// These private functions always need `this` to be set properly\nfunction replaceLoggingMethods(level, loggerName) {\n    /*jshint validthis:true */\n    for (var i = 0; i < logMethods.length; i++) {\n        var methodName = logMethods[i];\n        this[methodName] = (i < level) ?\n            noop :\n            this.methodFactory(methodName, level, loggerName);\n    }\n    // Define log.log as an alias for log.debug\n    this.log = this.debug;\n}\n// In old IE versions, the console isn't present until you first open it.\n// We build realMethod() replacements here that regenerate logging methods\nfunction enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n    return function () {\n        if (typeof console !== undefinedType) {\n            replaceLoggingMethods.call(this, level, loggerName);\n            this[methodName].apply(this, arguments);\n        }\n    };\n}\n// By default, we use closely bound real methods wherever possible, and\n// otherwise we wait for a console to appear, and then try again.\nfunction defaultMethodFactory(methodName, level, loggerName) {\n    /*jshint validthis:true */\n    return realMethod(methodName) ||\n        enableLoggingWhenConsoleArrives.apply(this, arguments);\n}\nfunction Logger(name, defaultLevel, factory) {\n    var self = this;\n    var currentLevel;\n    var storageKey = \"loglevel\";\n    if (typeof name === \"string\") {\n        storageKey += \":\" + name;\n    }\n    else if (typeof name === \"symbol\") {\n        storageKey = undefined;\n    }\n    function persistLevelIfPossible(levelNum) {\n        var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n        if (typeof window === undefinedType || !storageKey)\n            return;\n        // Use localStorage if available\n        try {\n            window.localStorage[storageKey] = levelName;\n            return;\n        }\n        catch (ignore) { }\n        // Use session cookie as fallback\n        try {\n            window.document.cookie =\n                encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n        }\n        catch (ignore) { }\n    }\n    function getPersistedLevel() {\n        var storedLevel;\n        if (typeof window === undefinedType || !storageKey)\n            return;\n        try {\n            storedLevel = window.localStorage[storageKey];\n        }\n        catch (ignore) { }\n        // Fallback to cookies if local storage gives us nothing\n        if (typeof storedLevel === undefinedType) {\n            try {\n                var cookie = window.document.cookie;\n                var location = cookie.indexOf(encodeURIComponent(storageKey) + \"=\");\n                if (location !== -1) {\n                    storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n                }\n            }\n            catch (ignore) { }\n        }\n        // If the stored level is not valid, treat it as if nothing was stored.\n        if (self.levels[storedLevel] === undefined) {\n            storedLevel = undefined;\n        }\n        return storedLevel;\n    }\n    /*\n     *\n     * Public logger API - see https://github.com/pimterry/loglevel for details\n     *\n     */\n    self.name = name;\n    self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n        \"ERROR\": 4, \"SILENT\": 5 };\n    self.methodFactory = factory || defaultMethodFactory;\n    self.getLevel = function () {\n        return currentLevel;\n    };\n    self.setLevel = function (level, persist) {\n        if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n            level = self.levels[level.toUpperCase()];\n        }\n        if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n            currentLevel = level;\n            if (persist !== false) { // defaults to true\n                persistLevelIfPossible(level);\n            }\n            replaceLoggingMethods.call(self, level, name);\n            if (typeof console === undefinedType && level < self.levels.SILENT) {\n                return \"No console available for logging\";\n            }\n        }\n        else {\n            throw \"log.setLevel() called with invalid level: \" + level;\n        }\n    };\n    self.setDefaultLevel = function (level) {\n        if (!getPersistedLevel()) {\n            self.setLevel(level, false);\n        }\n    };\n    self.enableAll = function (persist) {\n        self.setLevel(self.levels.TRACE, persist);\n    };\n    self.disableAll = function (persist) {\n        self.setLevel(self.levels.SILENT, persist);\n    };\n    // Initialize with the right level\n    var initialLevel = getPersistedLevel();\n    if (initialLevel == null) {\n        initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n    }\n    self.setLevel(initialLevel, false);\n}\n/*\n *\n * Top-level API\n *\n */\nvar defaultLogger = new Logger();\nvar _loggersByName = {};\ndefaultLogger.getLogger = function getLogger(name) {\n    if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n        throw new TypeError(\"You must supply a name when creating a logger.\");\n    }\n    var logger = _loggersByName[name];\n    if (!logger) {\n        logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n    }\n    return logger;\n};\n// Grab the current global log variable in case of overwrite\nvar _log = (typeof window !== undefinedType) ? window.log : undefined;\ndefaultLogger.noConflict = function () {\n    if (typeof window !== undefinedType &&\n        window.log === defaultLogger) {\n        window.log = _log;\n    }\n    return defaultLogger;\n};\ndefaultLogger.getLoggers = function getLoggers() {\n    return _loggersByName;\n};\n// ES6 default export, for compatibility\ndefaultLogger['default'] = defaultLogger;\nmodule.exports = defaultLogger;\n\n},{}],168:[function(require,module,exports){\n/* globals webkitAudioContext, AudioContext */\n'use strict';\nvar NativeAudioContext = typeof AudioContext !== 'undefined'\n    ? AudioContext\n    : typeof webkitAudioContext !== 'undefined'\n        ? webkitAudioContext\n        : null;\n/**\n * @interface AudioContextFactoryOptions\n * @property {AudioContext} [AudioContext] - The AudioContext constructor\n */\n/**\n * {@link AudioContextFactory} ensures we construct at most one AudioContext\n * at a time, and that it is eventually closed when we no longer need it.\n * @property {AudioContextFactory} AudioContextFactory - The\n *   {@link AudioContextFactory} constructor\n */\nvar AudioContextFactory = /** @class */ (function () {\n    /**\n     * @param {AudioContextFactoryOptions} [options]\n     */\n    function AudioContextFactory(options) {\n        options = Object.assign({\n            AudioContext: NativeAudioContext\n        }, options);\n        Object.defineProperties(this, {\n            _AudioContext: {\n                value: options.AudioContext\n            },\n            _audioContext: {\n                value: null,\n                writable: true\n            },\n            _holders: {\n                value: new Set()\n            },\n            AudioContextFactory: {\n                enumerable: true,\n                value: AudioContextFactory\n            }\n        });\n    }\n    /**\n     * Each call to {@link AudioContextFactory#getOrCreate} should be paired with a\n     * call to {@link AudioContextFactory#release}. Calling this increments an\n     * internal reference count.\n     * @param {*} holder - The object to hold a reference to the AudioContext\n     * @returns {?AudioContext}\n     */\n    AudioContextFactory.prototype.getOrCreate = function (holder) {\n        if (!this._holders.has(holder)) {\n            this._holders.add(holder);\n            if (this._AudioContext && !this._audioContext) {\n                try {\n                    this._audioContext = new this._AudioContext();\n                }\n                catch (error) {\n                    // Do nothing;\n                }\n            }\n        }\n        return this._audioContext;\n    };\n    /**\n     * Decrement the internal reference count. If it reaches zero, close and destroy\n     * the AudioContext.\n     * @param {*} holder - The object that held a reference to the AudioContext\n     * @returns {void}\n     */\n    AudioContextFactory.prototype.release = function (holder) {\n        if (this._holders.has(holder)) {\n            this._holders.delete(holder);\n            if (!this._holders.size && this._audioContext) {\n                this._audioContext.close();\n                this._audioContext = null;\n            }\n        }\n    };\n    return AudioContextFactory;\n}());\nmodule.exports = new AudioContextFactory();\n\n},{}],169:[function(require,module,exports){\n'use strict';\n/**\n * Return a Promise that resolves after `timeout` milliseconds.\n * @param {?number} [timeout=0]\n * @returns {Promise<void>}\n */\nfunction delay(timeout) {\n    timeout = typeof timeout === 'number' ? timeout : 0;\n    return new Promise(function (resolve) { return setTimeout(resolve, timeout); });\n}\n/**\n * Attempt to detect silence. The Promise returned by this function returns\n * false as soon as audio is detected or true after `timeout` milliseconds.\n * @param {AudioContext} audioContext\n * @param {MediaStream} stream\n * @param {?number} [timeout=250]\n * @returns {Promise<boolean>}\n */\nfunction detectSilence(audioContext, stream, timeout) {\n    timeout = typeof timeout === 'number' ? timeout : 250;\n    var source = audioContext.createMediaStreamSource(stream);\n    var analyser = audioContext.createAnalyser();\n    analyser.fftSize = 2048;\n    source.connect(analyser);\n    var samples = new Uint8Array(analyser.fftSize);\n    var timeoutDidFire = false;\n    setTimeout(function () { timeoutDidFire = true; }, timeout);\n    /**\n     * We can't use async/await yet, so I need to factor this out.\n     * @returns {Promise<boolean>}\n     */\n    function doDetectSilence() {\n        if (timeoutDidFire) {\n            return Promise.resolve(true);\n        }\n        analyser.getByteTimeDomainData(samples);\n        // NOTE(mpatwardhan): An audio MediaStreamTrack can be silent either due to all samples\n        // being equal to 128 or all samples being equal to 0.\n        return samples.some(function (sample) { return sample !== 128 && sample !== 0; })\n            ? Promise.resolve(false)\n            : delay().then(doDetectSilence);\n    }\n    return doDetectSilence().then(function (isSilent) {\n        source.disconnect();\n        return isSilent;\n    }, function (error) {\n        source.disconnect();\n        throw error;\n    });\n}\nmodule.exports = detectSilence;\n\n},{}],170:[function(require,module,exports){\n'use strict';\nvar detectSilence = require('./detectsilence');\n/**\n * This function attempts to workaround WebKit Bug 180748. It does so by\n *\n *   1. Calling `getUserMedia`, and\n *   2. Checking to see if the resulting MediaStream is silent.\n *   3. If so, repeat Step 1; otherwise, return the MediaStream.\n *\n * The function only repeats up to `n` times, and it only waits `timeout`\n * milliseconds when detecting silence. Assuming `getUserMedia` is\n * instantaneous, in the best case, this function returns a Promise that\n * resolves immediately; in the worst case, this function returns a Promise that\n * resolves in `n` * `timeout` milliseconds.\n *\n * @param {Log} log\n * @param {function(MediaStreamConstraints): Promise<MediaStream>} getUserMedia\n * @param {MediaStreamConstraints} constraints\n * @param {number} [n=3]\n * @param {number} [timeout=250]\n * @returns Promise<MediaStream>\n */\nfunction workaround(log, getUserMedia, constraints, n, timeout) {\n    n = typeof n === 'number' ? n : 3;\n    var retry = 0;\n    // NOTE(mroberts): We have to delay require-ing AudioContextFactory, because\n    // it exports a default instance whose constructor calls Object.assign.\n    var AudioContextFactory = require('./audiocontext');\n    var holder = {};\n    var audioContext = AudioContextFactory.getOrCreate(holder);\n    /**\n     * We can't use async/await yet, so I need to factor this out.\n     * @returns {Promise<MediaStream>}\n     */\n    function doWorkaround() {\n        return getUserMedia(constraints).then(function (stream) {\n            var isSilentPromise = constraints.audio\n                ? detectSilence(audioContext, stream, timeout).catch(function (err) {\n                    log.warn('Encountered an error while detecting silence', err);\n                    return true;\n                })\n                : Promise.resolve(false);\n            return isSilentPromise.then(function (isSilent) {\n                if (!isSilent) {\n                    log.info('Got a non-silent audio MediaStreamTrack; returning it.');\n                    return stream;\n                }\n                else if (n <= 0) {\n                    log.warn('Got a silent audio MediaStreamTrack. Normally we would try \\\nto get a new one, but we\\'ve run out of retries; returning it anyway.');\n                    return stream;\n                }\n                log.warn(\"Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #\".concat(++retry, \".\"));\n                stream.getTracks().forEach(function (track) { return track.stop(); });\n                n--;\n                return doWorkaround();\n            });\n        });\n    }\n    return doWorkaround().then(function (stream) {\n        AudioContextFactory.release(holder);\n        return stream;\n    }, function (error) {\n        AudioContextFactory.release(holder);\n        throw error;\n    });\n}\nmodule.exports = workaround;\n\n},{\"./audiocontext\":168,\"./detectsilence\":169}],171:[function(require,module,exports){\n'use strict';\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar _a = require('./util'), flatMap = _a.flatMap, guessBrowser = _a.guessBrowser, guessBrowserVersion = _a.guessBrowserVersion;\nvar getSdpFormat = require('./util/sdp').getSdpFormat;\nvar guess = guessBrowser();\nvar guessVersion = guessBrowserVersion();\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\nvar chromeMajorVersion = isChrome ? guessVersion.major : null;\nvar CHROME_LEGACY_MAX_AUDIO_LEVEL = 32767;\n/**\n * Helper function to find a specific stat from a report.\n * Browsers provide the stats report as a Map,\n * but Citrix provides stats report as an array.\n * @private\n */\nfunction getStatById(report, id) {\n    if (typeof report.get === 'function') {\n        return report.get(id);\n    }\n    return report.find(function (s) { return s.id === id; });\n}\n/**\n * Filter the RTCStatsReport to only include stats related to a specific track.\n * This function is designed for use with Citrix, where getStats(track) is not supported.\n * It includes specific logic to filter the statistics report returned by Citrix and should\n * only be used when getStats(track) fails.\n *\n * @param {RTCStatsReport|Array<RTCStats>} arrayOrMap - Full stats report or array of stats\n * @param {MediaStreamTrack} track - The track to filter by\n * @param {boolean} [isRemote=false] - Whether this is a remote track\n * @returns {RTCStatsReport} Filtered stats\n * @private\n */\nfunction filterStatsByTrack(arrayOrMap, track, isRemote) {\n    var e_1, _a, e_2, _b, e_3, _c, e_4, _d, e_5, _e, e_6, _f, e_7, _g, e_8, _h, e_9, _j, e_10, _k, e_11, _l;\n    if (isRemote === void 0) { isRemote = false; }\n    // Handle different input types\n    var allStats;\n    if (Array.isArray(arrayOrMap)) {\n        allStats = new Map(arrayOrMap.map(function (stat) { return [stat.id || String(Math.random()), stat]; }));\n    }\n    else if (arrayOrMap instanceof Map) {\n        allStats = arrayOrMap;\n    }\n    else if (typeof arrayOrMap === 'object' && arrayOrMap !== null) {\n        // Handle object-style stats (non-standard)\n        var statsMap_1 = new Map();\n        Object.keys(arrayOrMap).forEach(function (key) {\n            statsMap_1.set(key, arrayOrMap[key]);\n        });\n        allStats = statsMap_1;\n    }\n    else {\n        return new Map();\n    }\n    if (!allStats || !track) {\n        return new Map();\n    }\n    var filteredReport = new Map();\n    var trackId = track.id;\n    var trackKind = track.kind;\n    // Step 1: Find the primary track-specific stats\n    var primaryStats = null;\n    var primaryStatsId = null;\n    var ssrc = null;\n    try {\n        // Find the primary stat for this track (inbound-rtp for remote, media-source for local)\n        for (var allStats_1 = __values(allStats), allStats_1_1 = allStats_1.next(); !allStats_1_1.done; allStats_1_1 = allStats_1.next()) {\n            var _m = __read(allStats_1_1.value, 2), id = _m[0], stat = _m[1];\n            // For remote tracks, find matching inbound-rtp with matching trackIdentifier\n            if (isRemote && stat.type === 'inbound-rtp' && stat.trackIdentifier === trackId) {\n                primaryStats = stat;\n                primaryStatsId = id;\n                ssrc = stat.ssrc;\n                break;\n            }\n            else if (!isRemote && stat.type === 'media-source' && stat.trackIdentifier === trackId) {\n                // For local tracks, find matching media-source with matching trackIdentifier\n                primaryStats = stat;\n                primaryStatsId = id;\n                break;\n            }\n            else if (stat.type === 'track' && stat.trackIdentifier === trackId) {\n                // Also check for track stats with matching trackIdentifier\n                if (!primaryStats) {\n                    primaryStats = stat;\n                    primaryStatsId = id;\n                }\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (allStats_1_1 && !allStats_1_1.done && (_a = allStats_1.return)) _a.call(allStats_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    // If no primary stat was found using the trackId, try a more lenient approach\n    if (!primaryStats) {\n        // For remote tracks, try to find an inbound-rtp of the correct kind\n        if (isRemote) {\n            // Get all inbound-rtp stats of the right kind\n            var candidateInbounds = [];\n            try {\n                for (var allStats_2 = __values(allStats), allStats_2_1 = allStats_2.next(); !allStats_2_1.done; allStats_2_1 = allStats_2.next()) {\n                    var _o = __read(allStats_2_1.value, 2), id = _o[0], stat = _o[1];\n                    if (stat.type === 'inbound-rtp' && (stat.kind === trackKind || stat.mediaType === trackKind)) {\n                        candidateInbounds.push({ id: id, stat: stat });\n                    }\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (allStats_2_1 && !allStats_2_1.done && (_b = allStats_2.return)) _b.call(allStats_2);\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n            // If there are multiple candidates, we need to be careful\n            if (candidateInbounds.length === 1) {\n                // Only one candidate, use it\n                primaryStats = candidateInbounds[0].stat;\n                primaryStatsId = candidateInbounds[0].id;\n                ssrc = primaryStats.ssrc;\n            }\n            else if (candidateInbounds.length > 1) {\n                // Multiple candidates - if we have the trackId, try to match by mid\n                // otherwise just take the first one\n                primaryStats = candidateInbounds[0].stat;\n                primaryStatsId = candidateInbounds[0].id;\n                ssrc = primaryStats.ssrc;\n            }\n        }\n        else {\n            try {\n                // For local tracks, try to find a media-source of the correct kind\n                for (var allStats_3 = __values(allStats), allStats_3_1 = allStats_3.next(); !allStats_3_1.done; allStats_3_1 = allStats_3.next()) {\n                    var _p = __read(allStats_3_1.value, 2), id = _p[0], stat = _p[1];\n                    if (stat.type === 'media-source' && stat.kind === trackKind) {\n                        primaryStats = stat;\n                        primaryStatsId = id;\n                        break;\n                    }\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (allStats_3_1 && !allStats_3_1.done && (_c = allStats_3.return)) _c.call(allStats_3);\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n        }\n    }\n    // If we still didn't find a primary stat, return an empty report\n    if (!primaryStats) {\n        return filteredReport;\n    }\n    // Step 2: Add the primary stat\n    filteredReport.set(primaryStatsId, primaryStats);\n    // Step 3: Add related stats using direct references\n    var directlyRelatedIds = new Set();\n    // Track different types of related IDs\n    if (isRemote) {\n        // For remote tracks (inbound-rtp is primary)\n        if (primaryStats.codecId) {\n            directlyRelatedIds.add(primaryStats.codecId);\n        }\n        if (primaryStats.transportId) {\n            directlyRelatedIds.add(primaryStats.transportId);\n        }\n        if (primaryStats.remoteId) {\n            directlyRelatedIds.add(primaryStats.remoteId);\n        }\n        // Find remote-outbound-rtp based on ssrc\n        if (ssrc) {\n            try {\n                for (var allStats_4 = __values(allStats), allStats_4_1 = allStats_4.next(); !allStats_4_1.done; allStats_4_1 = allStats_4.next()) {\n                    var _q = __read(allStats_4_1.value, 2), id = _q[0], stat = _q[1];\n                    if (stat.type === 'remote-outbound-rtp' && stat.ssrc === ssrc) {\n                        directlyRelatedIds.add(id);\n                    }\n                }\n            }\n            catch (e_4_1) { e_4 = { error: e_4_1 }; }\n            finally {\n                try {\n                    if (allStats_4_1 && !allStats_4_1.done && (_d = allStats_4.return)) _d.call(allStats_4);\n                }\n                finally { if (e_4) throw e_4.error; }\n            }\n        }\n        try {\n            // Add codec, transport, and remote stats\n            for (var directlyRelatedIds_1 = __values(directlyRelatedIds), directlyRelatedIds_1_1 = directlyRelatedIds_1.next(); !directlyRelatedIds_1_1.done; directlyRelatedIds_1_1 = directlyRelatedIds_1.next()) {\n                var relatedId = directlyRelatedIds_1_1.value;\n                if (allStats.has(relatedId)) {\n                    filteredReport.set(relatedId, allStats.get(relatedId));\n                }\n            }\n        }\n        catch (e_5_1) { e_5 = { error: e_5_1 }; }\n        finally {\n            try {\n                if (directlyRelatedIds_1_1 && !directlyRelatedIds_1_1.done && (_e = directlyRelatedIds_1.return)) _e.call(directlyRelatedIds_1);\n            }\n            finally { if (e_5) throw e_5.error; }\n        }\n        try {\n            // Add the track stats if it exists\n            for (var allStats_5 = __values(allStats), allStats_5_1 = allStats_5.next(); !allStats_5_1.done; allStats_5_1 = allStats_5.next()) {\n                var _r = __read(allStats_5_1.value, 2), id = _r[0], stat = _r[1];\n                if (stat.type === 'track' && stat.trackIdentifier === trackId) {\n                    filteredReport.set(id, stat);\n                }\n            }\n        }\n        catch (e_6_1) { e_6 = { error: e_6_1 }; }\n        finally {\n            try {\n                if (allStats_5_1 && !allStats_5_1.done && (_f = allStats_5.return)) _f.call(allStats_5);\n            }\n            finally { if (e_6) throw e_6.error; }\n        }\n    }\n    else {\n        try {\n            // For local tracks (media-source is primary)\n            // Find outbound-rtp that references this media source\n            for (var allStats_6 = __values(allStats), allStats_6_1 = allStats_6.next(); !allStats_6_1.done; allStats_6_1 = allStats_6.next()) {\n                var _s = __read(allStats_6_1.value, 2), id = _s[0], stat = _s[1];\n                if (stat.type === 'outbound-rtp' && stat.mediaSourceId === primaryStatsId) {\n                    filteredReport.set(id, stat);\n                    // Add codec and transport\n                    if (stat.codecId) {\n                        directlyRelatedIds.add(stat.codecId);\n                    }\n                    if (stat.transportId) {\n                        directlyRelatedIds.add(stat.transportId);\n                    }\n                    // Find remote-inbound-rtp that references this outbound-rtp\n                    var outboundId = id;\n                    try {\n                        for (var allStats_7 = (e_8 = void 0, __values(allStats)), allStats_7_1 = allStats_7.next(); !allStats_7_1.done; allStats_7_1 = allStats_7.next()) {\n                            var _t = __read(allStats_7_1.value, 2), remoteId = _t[0], remoteStat = _t[1];\n                            if (remoteStat.type === 'remote-inbound-rtp' && remoteStat.localId === outboundId) {\n                                filteredReport.set(remoteId, remoteStat);\n                            }\n                        }\n                    }\n                    catch (e_8_1) { e_8 = { error: e_8_1 }; }\n                    finally {\n                        try {\n                            if (allStats_7_1 && !allStats_7_1.done && (_h = allStats_7.return)) _h.call(allStats_7);\n                        }\n                        finally { if (e_8) throw e_8.error; }\n                    }\n                }\n            }\n        }\n        catch (e_7_1) { e_7 = { error: e_7_1 }; }\n        finally {\n            try {\n                if (allStats_6_1 && !allStats_6_1.done && (_g = allStats_6.return)) _g.call(allStats_6);\n            }\n            finally { if (e_7) throw e_7.error; }\n        }\n        try {\n            // Add codec and transport stats\n            for (var directlyRelatedIds_2 = __values(directlyRelatedIds), directlyRelatedIds_2_1 = directlyRelatedIds_2.next(); !directlyRelatedIds_2_1.done; directlyRelatedIds_2_1 = directlyRelatedIds_2.next()) {\n                var relatedId = directlyRelatedIds_2_1.value;\n                if (allStats.has(relatedId)) {\n                    filteredReport.set(relatedId, allStats.get(relatedId));\n                }\n            }\n        }\n        catch (e_9_1) { e_9 = { error: e_9_1 }; }\n        finally {\n            try {\n                if (directlyRelatedIds_2_1 && !directlyRelatedIds_2_1.done && (_j = directlyRelatedIds_2.return)) _j.call(directlyRelatedIds_2);\n            }\n            finally { if (e_9) throw e_9.error; }\n        }\n    }\n    // Step 4: Add candidate pair and certificate info for context\n    // This is useful information that applies to all tracks\n    // but doesn't risk mixing data between tracks\n    var selectedPairId = null;\n    var transportIds = new Set();\n    try {\n        // Find all transport IDs referenced in our filtered stats\n        for (var _u = __values(filteredReport.values()), _v = _u.next(); !_v.done; _v = _u.next()) {\n            var stat = _v.value;\n            if (stat.transportId) {\n                transportIds.add(stat.transportId);\n            }\n        }\n    }\n    catch (e_10_1) { e_10 = { error: e_10_1 }; }\n    finally {\n        try {\n            if (_v && !_v.done && (_k = _u.return)) _k.call(_u);\n        }\n        finally { if (e_10) throw e_10.error; }\n    }\n    try {\n        // Add the transports\n        for (var transportIds_1 = __values(transportIds), transportIds_1_1 = transportIds_1.next(); !transportIds_1_1.done; transportIds_1_1 = transportIds_1.next()) {\n            var transportId = transportIds_1_1.value;\n            if (allStats.has(transportId)) {\n                var transport = allStats.get(transportId);\n                filteredReport.set(transportId, transport);\n                // Track the selected candidate pair\n                if (transport.selectedCandidatePairId) {\n                    selectedPairId = transport.selectedCandidatePairId;\n                }\n                // Add certificate info\n                if (transport.localCertificateId && allStats.has(transport.localCertificateId)) {\n                    filteredReport.set(transport.localCertificateId, allStats.get(transport.localCertificateId));\n                }\n                if (transport.remoteCertificateId && allStats.has(transport.remoteCertificateId)) {\n                    filteredReport.set(transport.remoteCertificateId, allStats.get(transport.remoteCertificateId));\n                }\n            }\n        }\n    }\n    catch (e_11_1) { e_11 = { error: e_11_1 }; }\n    finally {\n        try {\n            if (transportIds_1_1 && !transportIds_1_1.done && (_l = transportIds_1.return)) _l.call(transportIds_1);\n        }\n        finally { if (e_11) throw e_11.error; }\n    }\n    // Add only the selected candidate pair, not all candidate pairs\n    if (selectedPairId && allStats.has(selectedPairId)) {\n        var selectedPair = allStats.get(selectedPairId);\n        filteredReport.set(selectedPairId, selectedPair);\n        // Add the local and remote candidates for the selected pair\n        if (selectedPair.localCandidateId && allStats.has(selectedPair.localCandidateId)) {\n            filteredReport.set(selectedPair.localCandidateId, allStats.get(selectedPair.localCandidateId));\n        }\n        if (selectedPair.remoteCandidateId && allStats.has(selectedPair.remoteCandidateId)) {\n            filteredReport.set(selectedPair.remoteCandidateId, allStats.get(selectedPair.remoteCandidateId));\n        }\n    }\n    return filteredReport;\n}\n/**\n * Get the standardized {@link RTCPeerConnection} statistics.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.<StandardizedStatsResponse>}\n */\nfunction getStats(peerConnection, options) {\n    if (!(peerConnection && typeof peerConnection.getStats === 'function')) {\n        return Promise.reject(new Error('Given PeerConnection does not support getStats'));\n    }\n    return _getStats(peerConnection, options);\n}\n/**\n * getStats() implementation.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.<StandardizedStatsResponse>}\n */\nfunction _getStats(peerConnection, options) {\n    var localAudioTracks = getTracks(peerConnection, 'audio', 'local');\n    var localVideoTracks = getTracks(peerConnection, 'video', 'local');\n    var remoteAudioTracks = getTracks(peerConnection, 'audio');\n    var remoteVideoTracks = getTracks(peerConnection, 'video');\n    var statsResponse = {\n        activeIceCandidatePair: null,\n        localAudioTrackStats: [],\n        localVideoTrackStats: [],\n        remoteAudioTrackStats: [],\n        remoteVideoTrackStats: []\n    };\n    var trackStatsPromises = flatMap([\n        [localAudioTracks, 'localAudioTrackStats', false],\n        [localVideoTracks, 'localVideoTrackStats', false],\n        [remoteAudioTracks, 'remoteAudioTrackStats', true],\n        [remoteVideoTracks, 'remoteVideoTrackStats', true]\n    ], function (_a) {\n        var _b = __read(_a, 3), tracks = _b[0], statsArrayName = _b[1], isRemote = _b[2];\n        return tracks.map(function (track) {\n            return getTrackStats(peerConnection, track, Object.assign({ isRemote: isRemote }, options)).then(function (trackStatsArray) {\n                trackStatsArray.forEach(function (trackStats) {\n                    trackStats.trackId = track.id;\n                    statsResponse[statsArrayName].push(trackStats);\n                });\n            });\n        });\n    });\n    return Promise.all(trackStatsPromises).then(function () {\n        return getActiveIceCandidatePairStats(peerConnection, options);\n    }).then(function (activeIceCandidatePairStatsReport) {\n        statsResponse.activeIceCandidatePair = activeIceCandidatePairStatsReport;\n        return statsResponse;\n    });\n}\n/**\n * Generate the {@link StandardizedActiveIceCandidatePairStatsReport} for the\n * {@link RTCPeerConnection}.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options]\n * @returns {Promise<StandardizedActiveIceCandidatePairStatsReport>}\n */\nfunction getActiveIceCandidatePairStats(peerConnection, options) {\n    if (options === void 0) { options = {}; }\n    if (typeof options.testForChrome !== 'undefined' || isChrome\n        || typeof options.testForSafari !== 'undefined' || isSafari) {\n        return peerConnection.getStats().then(standardizeChromeOrSafariActiveIceCandidatePairStats);\n    }\n    if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n        return peerConnection.getStats().then(standardizeFirefoxActiveIceCandidatePairStats);\n    }\n    return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Chrome or Safari.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeChromeOrSafariActiveIceCandidatePairStats(stats) {\n    var activeCandidatePairStats = Array.from(stats.values()).find(function (_a) {\n        var nominated = _a.nominated, type = _a.type;\n        return type === 'candidate-pair' && nominated;\n    });\n    if (!activeCandidatePairStats) {\n        return null;\n    }\n    var activeLocalCandidateStats = getStatById(stats, activeCandidatePairStats.localCandidateId);\n    var activeRemoteCandidateStats = getStatById(stats, activeCandidatePairStats.remoteCandidateId);\n    var standardizedCandidateStatsKeys = [\n        { key: 'candidateType', type: 'string' },\n        { key: 'ip', type: 'string' },\n        { key: 'port', type: 'number' },\n        { key: 'priority', type: 'number' },\n        { key: 'protocol', type: 'string' },\n        { key: 'url', type: 'string' }\n    ];\n    var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n        { key: 'deleted', type: 'boolean' },\n        { key: 'relayProtocol', type: 'string' },\n        { key: 'networkType', type: 'string' }\n    ]);\n    var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n        ? standardizedLocalCandidateStatsKeys.reduce(function (report, _a) {\n            var key = _a.key, type = _a.type;\n            report[key] = typeof activeLocalCandidateStats[key] === type\n                ? activeLocalCandidateStats[key]\n                : key === 'deleted' ? false : null;\n            return report;\n        }, {})\n        : null;\n    var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n        ? standardizedCandidateStatsKeys.reduce(function (report, _a) {\n            var key = _a.key, type = _a.type;\n            report[key] = typeof activeRemoteCandidateStats[key] === type\n                ? activeRemoteCandidateStats[key]\n                : null;\n            return report;\n        }, {})\n        : null;\n    return [\n        { key: 'availableIncomingBitrate', type: 'number' },\n        { key: 'availableOutgoingBitrate', type: 'number' },\n        { key: 'bytesReceived', type: 'number' },\n        { key: 'bytesSent', type: 'number' },\n        { key: 'consentRequestsSent', type: 'number' },\n        { key: 'currentRoundTripTime', type: 'number' },\n        { key: 'lastPacketReceivedTimestamp', type: 'number' },\n        { key: 'lastPacketSentTimestamp', type: 'number' },\n        { key: 'nominated', type: 'boolean' },\n        { key: 'priority', type: 'number' },\n        { key: 'readable', type: 'boolean' },\n        { key: 'requestsReceived', type: 'number' },\n        { key: 'requestsSent', type: 'number' },\n        { key: 'responsesReceived', type: 'number' },\n        { key: 'responsesSent', type: 'number' },\n        { key: 'retransmissionsReceived', type: 'number' },\n        { key: 'retransmissionsSent', type: 'number' },\n        { key: 'state', type: 'string', fixup: function (state) { return state === 'inprogress' ? 'in-progress' : state; } },\n        { key: 'totalRoundTripTime', type: 'number' },\n        { key: 'transportId', type: 'string' },\n        { key: 'writable', type: 'boolean' }\n    ].reduce(function (report, _a) {\n        var key = _a.key, type = _a.type, fixup = _a.fixup;\n        report[key] = typeof activeCandidatePairStats[key] === type\n            ? (fixup ? fixup(activeCandidatePairStats[key]) : activeCandidatePairStats[key])\n            : null;\n        return report;\n    }, {\n        localCandidate: standatdizedLocalCandidateStatsReport,\n        remoteCandidate: standardizedRemoteCandidateStatsReport\n    });\n}\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Firefox.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeFirefoxActiveIceCandidatePairStats(stats) {\n    var activeCandidatePairStats = Array.from(stats.values()).find(function (_a) {\n        var nominated = _a.nominated, type = _a.type;\n        return type === 'candidate-pair' && nominated;\n    });\n    if (!activeCandidatePairStats) {\n        return null;\n    }\n    var activeLocalCandidateStats = getStatById(stats, activeCandidatePairStats.localCandidateId);\n    var activeRemoteCandidateStats = getStatById(stats, activeCandidatePairStats.remoteCandidateId);\n    var standardizedCandidateStatsKeys = [\n        { key: 'candidateType', type: 'string' },\n        { key: 'ip', ffKeys: ['address', 'ipAddress'], type: 'string' },\n        { key: 'port', ffKeys: ['portNumber'], type: 'number' },\n        { key: 'priority', type: 'number' },\n        { key: 'protocol', ffKeys: ['transport'], type: 'string' },\n        { key: 'url', type: 'string' }\n    ];\n    var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n        { key: 'deleted', type: 'boolean' },\n        { key: 'relayProtocol', type: 'string' }\n    ]);\n    var candidateTypes = {\n        host: 'host',\n        peerreflexive: 'prflx',\n        relayed: 'relay',\n        serverreflexive: 'srflx'\n    };\n    var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n        ? standardizedLocalCandidateStatsKeys.reduce(function (report, _a) {\n            var ffKeys = _a.ffKeys, key = _a.key, type = _a.type;\n            var localStatKey = ffKeys && ffKeys.find(function (key) { return key in activeLocalCandidateStats; }) || key;\n            report[key] = typeof activeLocalCandidateStats[localStatKey] === type\n                ? localStatKey === 'candidateType'\n                    ? candidateTypes[activeLocalCandidateStats[localStatKey]] || activeLocalCandidateStats[localStatKey]\n                    : activeLocalCandidateStats[localStatKey]\n                : localStatKey === 'deleted' ? false : null;\n            return report;\n        }, {})\n        : null;\n    var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n        ? standardizedCandidateStatsKeys.reduce(function (report, _a) {\n            var ffKeys = _a.ffKeys, key = _a.key, type = _a.type;\n            var remoteStatKey = ffKeys && ffKeys.find(function (key) { return key in activeRemoteCandidateStats; }) || key;\n            report[key] = typeof activeRemoteCandidateStats[remoteStatKey] === type\n                ? remoteStatKey === 'candidateType'\n                    ? candidateTypes[activeRemoteCandidateStats[remoteStatKey]] || activeRemoteCandidateStats[remoteStatKey]\n                    : activeRemoteCandidateStats[remoteStatKey]\n                : null;\n            return report;\n        }, {})\n        : null;\n    return [\n        { key: 'availableIncomingBitrate', type: 'number' },\n        { key: 'availableOutgoingBitrate', type: 'number' },\n        { key: 'bytesReceived', type: 'number' },\n        { key: 'bytesSent', type: 'number' },\n        { key: 'consentRequestsSent', type: 'number' },\n        { key: 'currentRoundTripTime', type: 'number' },\n        { key: 'lastPacketReceivedTimestamp', type: 'number' },\n        { key: 'lastPacketSentTimestamp', type: 'number' },\n        { key: 'nominated', type: 'boolean' },\n        { key: 'priority', type: 'number' },\n        { key: 'readable', type: 'boolean' },\n        { key: 'requestsReceived', type: 'number' },\n        { key: 'requestsSent', type: 'number' },\n        { key: 'responsesReceived', type: 'number' },\n        { key: 'responsesSent', type: 'number' },\n        { key: 'retransmissionsReceived', type: 'number' },\n        { key: 'retransmissionsSent', type: 'number' },\n        { key: 'state', type: 'string' },\n        { key: 'totalRoundTripTime', type: 'number' },\n        { key: 'transportId', type: 'string' },\n        { key: 'writable', type: 'boolean' }\n    ].reduce(function (report, _a) {\n        var key = _a.key, type = _a.type;\n        report[key] = typeof activeCandidatePairStats[key] === type\n            ? activeCandidatePairStats[key]\n            : null;\n        return report;\n    }, {\n        localCandidate: standatdizedLocalCandidateStatsReport,\n        remoteCandidate: standardizedRemoteCandidateStatsReport\n    });\n}\n/**\n * Get local/remote audio/video MediaStreamTracks.\n * @param {RTCPeerConnection} peerConnection - The RTCPeerConnection\n * @param {string} kind - 'audio' or 'video'\n * @param {string} [localOrRemote] - 'local' or 'remote'\n * @returns {Array<MediaStreamTrack>}\n */\nfunction getTracks(peerConnection, kind, localOrRemote) {\n    var getSendersOrReceivers = localOrRemote === 'local' ? 'getSenders' : 'getReceivers';\n    if (peerConnection[getSendersOrReceivers]) {\n        return peerConnection[getSendersOrReceivers]()\n            .map(function (_a) {\n            var track = _a.track;\n            return track;\n        })\n            .filter(function (track) { return track && track.kind === kind; });\n    }\n    var getStreams = localOrRemote === 'local' ? 'getLocalStreams' : 'getRemoteStreams';\n    var getTracks = kind === 'audio' ? 'getAudioTracks' : 'getVideoTracks';\n    return flatMap(peerConnection[getStreams](), function (stream) { return stream[getTracks](); });\n}\n/**\n * Determine if a track is remote by examining the PeerConnection's receivers.\n * This function is designed for use with Citrix, where getStats(track) is not supported.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @returns {boolean} True if the track is a remote track\n * @private\n */\nfunction isRemoteTrack(peerConnection, track) {\n    var e_12, _a, e_13, _b, e_14, _c;\n    if (!peerConnection || !track) {\n        return false;\n    }\n    // Check if the track belongs to any receiver (remote)\n    if (peerConnection.getReceivers) {\n        var receivers = peerConnection.getReceivers();\n        try {\n            for (var receivers_1 = __values(receivers), receivers_1_1 = receivers_1.next(); !receivers_1_1.done; receivers_1_1 = receivers_1.next()) {\n                var receiver = receivers_1_1.value;\n                if (receiver.track && receiver.track.id === track.id) {\n                    return true;\n                }\n            }\n        }\n        catch (e_12_1) { e_12 = { error: e_12_1 }; }\n        finally {\n            try {\n                if (receivers_1_1 && !receivers_1_1.done && (_a = receivers_1.return)) _a.call(receivers_1);\n            }\n            finally { if (e_12) throw e_12.error; }\n        }\n    }\n    // Check remote streams if getReceivers is not available\n    if (peerConnection.getRemoteStreams) {\n        var remoteStreams = peerConnection.getRemoteStreams();\n        try {\n            for (var remoteStreams_1 = __values(remoteStreams), remoteStreams_1_1 = remoteStreams_1.next(); !remoteStreams_1_1.done; remoteStreams_1_1 = remoteStreams_1.next()) {\n                var stream = remoteStreams_1_1.value;\n                var tracks = stream.getTracks();\n                try {\n                    for (var tracks_1 = (e_14 = void 0, __values(tracks)), tracks_1_1 = tracks_1.next(); !tracks_1_1.done; tracks_1_1 = tracks_1.next()) {\n                        var remoteTrack = tracks_1_1.value;\n                        if (remoteTrack.id === track.id) {\n                            return true;\n                        }\n                    }\n                }\n                catch (e_14_1) { e_14 = { error: e_14_1 }; }\n                finally {\n                    try {\n                        if (tracks_1_1 && !tracks_1_1.done && (_c = tracks_1.return)) _c.call(tracks_1);\n                    }\n                    finally { if (e_14) throw e_14.error; }\n                }\n            }\n        }\n        catch (e_13_1) { e_13 = { error: e_13_1 }; }\n        finally {\n            try {\n                if (remoteStreams_1_1 && !remoteStreams_1_1.done && (_b = remoteStreams_1.return)) _b.call(remoteStreams_1);\n            }\n            finally { if (e_13) throw e_13.error; }\n        }\n    }\n    // The track is not in any remote source, so it's likely local\n    return false;\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} [options] - Used for testing\n * @returns {Promise.<Array<StandardizedTrackStatsReport>>}\n */\nfunction getTrackStats(peerConnection, track, options) {\n    if (options === void 0) { options = {}; }\n    if (typeof options.testForChrome !== 'undefined' || isChrome) {\n        return chromeOrSafariGetTrackStats(peerConnection, track, options);\n    }\n    if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n        return firefoxGetTrackStats(peerConnection, track, options);\n    }\n    if (typeof options.testForSafari !== 'undefined' || isSafari) {\n        if (typeof options.testForSafari !== 'undefined' || getSdpFormat() === 'unified') {\n            return chromeOrSafariGetTrackStats(peerConnection, track, options);\n        }\n        // NOTE(syerrapragada): getStats() is not supported on\n        // Safari versions where plan-b is the SDP format\n        // due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601\n        return Promise.reject(new Error([\n            'getStats() is not supported on this version of Safari',\n            'due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601'\n        ].join(' ')));\n    }\n    return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Chrome or Safari.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} options - Used for testing\n * @returns {Promise.<Array<StandardizedTrackStatsReport>>}\n */\nfunction chromeOrSafariGetTrackStats(peerConnection, track, options) {\n    var log = options.log;\n    if (chromeMajorVersion && chromeMajorVersion < 67) {\n        return new Promise(function (resolve, reject) {\n            peerConnection.getStats(function (response) {\n                resolve([standardizeChromeLegacyStats(response, track)]);\n            }, null, reject);\n        });\n    }\n    return peerConnection.getStats(track)\n        .then(function (response) {\n        log.info('getStats by track successful');\n        return standardizeChromeOrSafariStats(response, options);\n    })\n        .catch(function () {\n        // NOTE(lrivas): Citrix doesn't support track-specific getStats,\n        // so this workaround tries getting all stats and filtering by track.\n        log.warn('getStats by track failed. Getting default stats');\n        return peerConnection.getStats()\n            .then(function (stats) {\n            log.info('getStats by default successful');\n            var isRemote = isRemoteTrack(peerConnection, track);\n            log.info(\"Starting filtering stats for \".concat(isRemote ? 'remote' : 'local', \" track\"));\n            var filteredStats = filterStatsByTrack(stats, track, isRemote);\n            log.info(\"Completed filtering stats for \".concat(isRemote ? 'remote' : 'local', \" track\"));\n            return standardizeChromeOrSafariStats(filteredStats, options);\n        });\n    });\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Firefox.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} options\n * @returns {Promise.<Array<StandardizedTrackStatsReport>>}\n */\nfunction firefoxGetTrackStats(peerConnection, track, options) {\n    return peerConnection.getStats(track).then(function (response) {\n        return [standardizeFirefoxStats(response, options)];\n    });\n}\n/**\n * Standardize the MediaStreamTrack's legacy statistics in Chrome.\n * @param {RTCStatsResponse} response\n * @param {MediaStreamTrack} track\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeChromeLegacyStats(response, track) {\n    var ssrcReport = response.result().find(function (report) {\n        return report.type === 'ssrc' && report.stat('googTrackId') === track.id;\n    });\n    var standardizedStats = {};\n    if (ssrcReport) {\n        standardizedStats.timestamp = Math.round(Number(ssrcReport.timestamp));\n        standardizedStats = ssrcReport.names().reduce(function (stats, name) {\n            switch (name) {\n                case 'googCodecName':\n                    stats.codecName = ssrcReport.stat(name);\n                    break;\n                case 'googRtt':\n                    stats.roundTripTime = Number(ssrcReport.stat(name));\n                    break;\n                case 'googJitterReceived':\n                    stats.jitter = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameWidthInput':\n                    stats.frameWidthInput = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameHeightInput':\n                    stats.frameHeightInput = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameWidthSent':\n                    stats.frameWidthSent = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameHeightSent':\n                    stats.frameHeightSent = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameWidthReceived':\n                    stats.frameWidthReceived = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameHeightReceived':\n                    stats.frameHeightReceived = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameRateInput':\n                    stats.frameRateInput = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameRateSent':\n                    stats.frameRateSent = Number(ssrcReport.stat(name));\n                    break;\n                case 'googFrameRateReceived':\n                    stats.frameRateReceived = Number(ssrcReport.stat(name));\n                    break;\n                case 'ssrc':\n                    stats[name] = ssrcReport.stat(name);\n                    break;\n                case 'bytesReceived':\n                case 'bytesSent':\n                case 'packetsLost':\n                case 'packetsReceived':\n                case 'packetsSent':\n                case 'audioInputLevel':\n                case 'audioOutputLevel':\n                    stats[name] = Number(ssrcReport.stat(name));\n                    break;\n            }\n            return stats;\n        }, standardizedStats);\n    }\n    return standardizedStats;\n}\n/**\n * Standardize the MediaStreamTrack's statistics in Chrome or Safari.\n * @param {RTCStatsReport} response\n * @param {object} options - Used for testing\n * @returns {Array<StandardizedTrackStatsReport>}\n */\nfunction standardizeChromeOrSafariStats(response, _a) {\n    var _b = _a.simulateExceptionWhileStandardizingStats, simulateExceptionWhileStandardizingStats = _b === void 0 ? false : _b;\n    if (simulateExceptionWhileStandardizingStats) {\n        throw new Error('Error while gathering stats');\n    }\n    var inbound = null;\n    // NOTE(mpatwardhan): We should expect more than one \"outbound-rtp\" stats for a\n    // VP8 simulcast MediaStreamTrack.\n    var outbound = [];\n    var remoteInbound = null;\n    var remoteOutbound = null;\n    var track = null;\n    var codec = null;\n    var localMedia = null;\n    response.forEach(function (stat) {\n        var type = stat.type;\n        switch (type) {\n            case 'inbound-rtp':\n                inbound = stat;\n                break;\n            case 'outbound-rtp':\n                outbound.push(stat);\n                break;\n            case 'media-source':\n                localMedia = stat;\n                break;\n            case 'track':\n                track = stat;\n                break;\n            case 'codec':\n                codec = stat;\n                break;\n            case 'remote-inbound-rtp':\n                remoteInbound = stat;\n                break;\n            case 'remote-outbound-rtp':\n                remoteOutbound = stat;\n                break;\n        }\n    });\n    var isRemote = track ? track.remoteSource : !localMedia;\n    var mainSources = isRemote ? [inbound] : outbound;\n    var stats = [];\n    var remoteSource = isRemote ? remoteOutbound : remoteInbound; // remote rtp stats\n    mainSources.forEach(function (source) {\n        var standardizedStats = {};\n        var statSources = [\n            source, // local rtp stats\n            localMedia,\n            track,\n            codec,\n            remoteSource && remoteSource.ssrc === source.ssrc ? remoteSource : null, // remote rtp stats\n        ];\n        function getStatValue(name) {\n            var sourceFound = statSources.find(function (statSource) {\n                return statSource && typeof statSource[name] !== 'undefined';\n            }) || null;\n            return sourceFound ? sourceFound[name] : null;\n        }\n        var ssrc = getStatValue('ssrc');\n        if (typeof ssrc === 'number') {\n            standardizedStats.ssrc = String(ssrc);\n        }\n        var timestamp = getStatValue('timestamp');\n        standardizedStats.timestamp = Math.round(timestamp);\n        var mimeType = getStatValue('mimeType');\n        if (typeof mimeType === 'string') {\n            mimeType = mimeType.split('/');\n            standardizedStats.codecName = mimeType[mimeType.length - 1];\n        }\n        var roundTripTime = getStatValue('roundTripTime');\n        if (typeof roundTripTime === 'number') {\n            standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n        }\n        var jitter = getStatValue('jitter');\n        if (typeof jitter === 'number') {\n            standardizedStats.jitter = Math.round(jitter * 1000);\n        }\n        var frameWidth = getStatValue('frameWidth');\n        if (typeof frameWidth === 'number') {\n            if (isRemote) {\n                standardizedStats.frameWidthReceived = frameWidth;\n            }\n            else {\n                standardizedStats.frameWidthSent = frameWidth;\n                standardizedStats.frameWidthInput = track ? track.frameWidth : localMedia.width;\n            }\n        }\n        var frameHeight = getStatValue('frameHeight');\n        if (typeof frameHeight === 'number') {\n            if (isRemote) {\n                standardizedStats.frameHeightReceived = frameHeight;\n            }\n            else {\n                standardizedStats.frameHeightSent = frameHeight;\n                standardizedStats.frameHeightInput = track ? track.frameHeight : localMedia.height;\n            }\n        }\n        var framesPerSecond = getStatValue('framesPerSecond');\n        if (typeof framesPerSecond === 'number' || framesPerSecond === null) {\n            standardizedStats[isRemote ? 'frameRateReceived' : 'frameRateSent'] = framesPerSecond;\n        }\n        var qualityLimitationReason = getStatValue('qualityLimitationReason');\n        if (typeof qualityLimitationReason === 'string') {\n            standardizedStats.qualityLimitationReason = qualityLimitationReason;\n        }\n        var bytesReceived = getStatValue('bytesReceived');\n        if (typeof bytesReceived === 'number') {\n            standardizedStats.bytesReceived = bytesReceived;\n        }\n        var bytesSent = getStatValue('bytesSent');\n        if (typeof bytesSent === 'number') {\n            standardizedStats.bytesSent = bytesSent;\n        }\n        var packetsLost = getStatValue('packetsLost');\n        if (typeof packetsLost === 'number') {\n            standardizedStats.packetsLost = packetsLost;\n        }\n        var packetsReceived = getStatValue('packetsReceived');\n        if (typeof packetsReceived === 'number') {\n            standardizedStats.packetsReceived = packetsReceived;\n        }\n        var packetsSent = getStatValue('packetsSent');\n        if (typeof packetsSent === 'number') {\n            standardizedStats.packetsSent = packetsSent;\n        }\n        var audioLevel = getStatValue('audioLevel');\n        if (typeof audioLevel === 'number') {\n            audioLevel = Math.round(audioLevel * CHROME_LEGACY_MAX_AUDIO_LEVEL);\n            if (isRemote) {\n                standardizedStats.audioOutputLevel = audioLevel;\n            }\n            else {\n                standardizedStats.audioInputLevel = audioLevel;\n            }\n        }\n        var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n        if (typeof totalPacketSendDalay === 'number') {\n            standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n        }\n        var totalEncodeTime = getStatValue('totalEncodeTime');\n        if (typeof totalEncodeTime === 'number') {\n            standardizedStats.totalEncodeTime = totalEncodeTime;\n        }\n        var framesEncoded = getStatValue('framesEncoded');\n        if (typeof framesEncoded === 'number') {\n            standardizedStats.framesEncoded = framesEncoded;\n        }\n        var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n        if (typeof estimatedPlayoutTimestamp === 'number') {\n            standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n        }\n        var totalDecodeTime = getStatValue('totalDecodeTime');\n        if (typeof totalDecodeTime === 'number') {\n            standardizedStats.totalDecodeTime = totalDecodeTime;\n        }\n        var framesDecoded = getStatValue('framesDecoded');\n        if (typeof framesDecoded === 'number') {\n            standardizedStats.framesDecoded = framesDecoded;\n        }\n        var jitterBufferDelay = getStatValue('jitterBufferDelay');\n        if (typeof jitterBufferDelay === 'number') {\n            standardizedStats.jitterBufferDelay = jitterBufferDelay;\n        }\n        var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n        if (typeof jitterBufferEmittedCount === 'number') {\n            standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n        }\n        var freezeCount = getStatValue('freezeCount');\n        if (typeof freezeCount === 'number') {\n            standardizedStats.freezeCount = freezeCount;\n        }\n        stats.push(standardizedStats);\n    });\n    return stats;\n}\n/**\n * Standardize the MediaStreamTrack's statistics in Firefox.\n * @param {RTCStatsReport} response\n * @param {object} options - Used for testing\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeFirefoxStats(response, _a) {\n    if (response === void 0) { response = new Map(); }\n    var isRemote = _a.isRemote, _b = _a.simulateExceptionWhileStandardizingStats, simulateExceptionWhileStandardizingStats = _b === void 0 ? false : _b;\n    if (simulateExceptionWhileStandardizingStats) {\n        throw new Error('Error while gathering stats');\n    }\n    // NOTE(mroberts): If getStats is called on a closed RTCPeerConnection,\n    // Firefox returns undefined instead of an RTCStatsReport. We workaround this\n    // here. See the following bug for more details:\n    //\n    //   https://bugzilla.mozilla.org/show_bug.cgi?id=1377225\n    //\n    var inbound = null;\n    var outbound = null;\n    // NOTE(mmalavalli): Starting from Firefox 63, RTC{Inbound, Outbound}RTPStreamStats.isRemote\n    // will be deprecated, followed by its removal in Firefox 66. Also, trying to\n    // access members of the remote RTC{Inbound, Outbound}RTPStreamStats without\n    // using RTCStatsReport.get(remoteId) will trigger console warnings. So, we\n    // no longer depend on \"isRemote\", and we call RTCStatsReport.get(remoteId)\n    // to access the remote RTC{Inbound, Outbound}RTPStreamStats.\n    //\n    // Source: https://blog.mozilla.org/webrtc/getstats-isremote-65/\n    //\n    response.forEach(function (stat) {\n        var isRemote = stat.isRemote, remoteId = stat.remoteId, type = stat.type;\n        if (isRemote) {\n            return;\n        }\n        switch (type) {\n            case 'inbound-rtp':\n                inbound = stat;\n                outbound = getStatById(response, remoteId);\n                break;\n            case 'outbound-rtp':\n                outbound = stat;\n                inbound = getStatById(response, remoteId);\n                break;\n        }\n    });\n    var first = isRemote ? inbound : outbound;\n    var second = isRemote ? outbound : inbound;\n    function getStatValue(name) {\n        if (first && typeof first[name] !== 'undefined') {\n            return first[name];\n        }\n        if (second && typeof second[name] !== 'undefined') {\n            return second[name];\n        }\n        return null;\n    }\n    var standardizedStats = {};\n    var timestamp = getStatValue('timestamp');\n    standardizedStats.timestamp = Math.round(timestamp);\n    var ssrc = getStatValue('ssrc');\n    if (typeof ssrc === 'number') {\n        standardizedStats.ssrc = String(ssrc);\n    }\n    var bytesSent = getStatValue('bytesSent');\n    if (typeof bytesSent === 'number') {\n        standardizedStats.bytesSent = bytesSent;\n    }\n    var packetsLost = getStatValue('packetsLost');\n    if (typeof packetsLost === 'number') {\n        standardizedStats.packetsLost = packetsLost;\n    }\n    var packetsSent = getStatValue('packetsSent');\n    if (typeof packetsSent === 'number') {\n        standardizedStats.packetsSent = packetsSent;\n    }\n    var roundTripTime = getStatValue('roundTripTime');\n    if (typeof roundTripTime === 'number') {\n        // roundTripTime is double - measured in seconds.\n        // https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats-roundtriptime\n        // cover it to milliseconds (and make it integer)\n        standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n    }\n    var jitter = getStatValue('jitter');\n    if (typeof jitter === 'number') {\n        standardizedStats.jitter = Math.round(jitter * 1000);\n    }\n    var frameRateSent = getStatValue('framesPerSecond');\n    if (typeof frameRateSent === 'number' || frameRateSent === null) {\n        standardizedStats.frameRateSent = frameRateSent;\n    }\n    var bytesReceived = getStatValue('bytesReceived');\n    if (typeof bytesReceived === 'number') {\n        standardizedStats.bytesReceived = bytesReceived;\n    }\n    var packetsReceived = getStatValue('packetsReceived');\n    if (typeof packetsReceived === 'number') {\n        standardizedStats.packetsReceived = packetsReceived;\n    }\n    var frameRateReceived = getStatValue('framesPerSecond');\n    if (typeof frameRateReceived === 'number' || frameRateReceived === null) {\n        standardizedStats.frameRateReceived = frameRateReceived;\n    }\n    var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n    if (typeof totalPacketSendDalay === 'number') {\n        standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n    }\n    var totalEncodeTime = getStatValue('totalEncodeTime');\n    if (typeof totalEncodeTime === 'number') {\n        standardizedStats.totalEncodeTime = totalEncodeTime;\n    }\n    var framesEncoded = getStatValue('framesEncoded');\n    if (typeof framesEncoded === 'number') {\n        standardizedStats.framesEncoded = framesEncoded;\n    }\n    var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n    if (typeof estimatedPlayoutTimestamp === 'number') {\n        standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n    }\n    var totalDecodeTime = getStatValue('totalDecodeTime');\n    if (typeof totalDecodeTime === 'number') {\n        standardizedStats.totalDecodeTime = totalDecodeTime;\n    }\n    var framesDecoded = getStatValue('framesDecoded');\n    if (typeof framesDecoded === 'number') {\n        standardizedStats.framesDecoded = framesDecoded;\n    }\n    var jitterBufferDelay = getStatValue('jitterBufferDelay');\n    if (typeof jitterBufferDelay === 'number') {\n        standardizedStats.jitterBufferDelay = jitterBufferDelay;\n    }\n    var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n    if (typeof jitterBufferEmittedCount === 'number') {\n        standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n    }\n    var freezeCount = getStatValue('freezeCount');\n    if (typeof freezeCount === 'number') {\n        standardizedStats.freezeCount = freezeCount;\n    }\n    return standardizedStats;\n}\n/**\n * Standardized RTCIceCandidate statistics.\n * @typedef {object} StandardizedIceCandidateStatsReport\n * @property {'host'|'prflx'|'relay'|'srflx'} candidateType\n * @property {string} ip\n * @property {number} port\n * @property {number} priority\n * @property {'tcp'|'udp'} protocol\n * @property {string} url\n */\n/**\n * Standardized local RTCIceCandidate statistics.\n * @typedef {StandardizedIceCandidateStatsReport} StandardizedLocalIceCandidateStatsReport\n * @property {boolean} [deleted=false]\n * @property {'tcp'|'tls'|'udp'} relayProtocol\n */\n/**\n * Standardized active RTCIceCandidate pair statistics.\n * @typedef {object} StandardizedActiveIceCandidatePairStatsReport\n * @property {number} availableIncomingBitrate\n * @property {number} availableOutgoingBitrate\n * @property {number} bytesReceived\n * @property {number} bytesSent\n * @property {number} consentRequestsSent\n * @property {number} currentRoundTripTime\n * @property {number} lastPacketReceivedTimestamp\n * @property {number} lastPacketSentTimestamp\n * @property {StandardizedLocalIceCandidateStatsReport} localCandidate\n * @property {boolean} nominated\n * @property {number} priority\n * @property {boolean} readable\n * @property {StandardizedIceCandidateStatsReport} remoteCandidate\n * @property {number} requestsReceived\n * @property {number} requestsSent\n * @property {number} responsesReceived\n * @property {number} responsesSent\n * @property {number} retransmissionsReceived\n * @property {number} retransmissionsSent\n * @property {'frozen'|'waiting'|'in-progress'|'failed'|'succeeded'} state\n * @property {number} totalRoundTripTime\n * @property {string} transportId\n * @property {boolean} writable\n */\n/**\n * Standardized {@link RTCPeerConnection} statistics.\n * @typedef {Object} StandardizedStatsResponse\n * @property {StandardizedActiveIceCandidatePairStatsReport} activeIceCandidatePair - Stats for active ICE candidate pair\n * @property Array<StandardizedTrackStatsReport> localAudioTrackStats - Stats for local audio MediaStreamTracks\n * @property Array<StandardizedTrackStatsReport> localVideoTrackStats - Stats for local video MediaStreamTracks\n * @property Array<StandardizedTrackStatsReport> remoteAudioTrackStats - Stats for remote audio MediaStreamTracks\n * @property Array<StandardizedTrackStatsReport> remoteVideoTrackStats - Stats for remote video MediaStreamTracks\n */\n/**\n * Standardized MediaStreamTrack statistics.\n * @typedef {Object} StandardizedTrackStatsReport\n * @property {string} trackId - MediaStreamTrack ID\n * @property {string} ssrc - SSRC of the MediaStreamTrack\n * @property {number} timestamp - The Unix timestamp in milliseconds\n * @property {string} [codecName] - Name of the codec used to encode the MediaStreamTrack's media\n * @property {number} [roundTripTime] - Round trip time in milliseconds\n * @property {number} [jitter] - Jitter in milliseconds\n * @property {number} [frameWidthInput] - Width in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameHeightInput] - Height in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameWidthSent] - Width in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameHeightSent] - Height in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameWidthReceived] - Width in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameHeightReceived] - Height in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameRateInput] - Captured frames per second of the local video MediaStreamTrack\n * @property {number | null} [frameRateSent] - Frames per second of the local video MediaStreamTrack's encoded video\n * @property {number | null} [frameRateReceived] - Frames per second of the remote video MediaStreamTrack's received video\n * @property {number} [freezeCount] - Number of times the remote video MediaStreamTrack's froze\n * @property {number} [bytesReceived] - Number of bytes of the remote MediaStreamTrack's media received\n * @property {number} [bytesSent] - Number of bytes of the local MediaStreamTrack's media sent\n * @property {number} [packetsLost] - Number of packets of the MediaStreamTrack's media lost\n * @property {number} [packetsReceived] - Number of packets of the remote MediaStreamTrack's media received\n * @property {number} [packetsSent] - Number of packets of the local MediaStreamTrack's media sent\n * @property {number} [totalPacketSendDelay] - The total number of seconds that the local MediaStreamTrack's packets\n *  have spent buffered locally before being sent over the network\n * @property {number} [totalEncodeTime] - The total number of seconds spent on encoding the local MediaStreamTrack's frames\n * @property {number} [framesEncoded] - The total number of frames of the local MediaStreamTrack that have been encoded sor far\n * @property {number} [estimatedPlayoutTimestamp] - The estimated playout time of the remote MediaStreamTrack\n * @property {number} [totalDecodeTime] - The total number of seconds spent on decoding the remote MediaStreamTrack's frames\n * @property {number} [framesDecoded] - The total number of frames of the remote MediaStreamTrack that have been decoded sor far\n * @property {number} [jitterBufferDelay] - The sum of the time, in seconds, each audio sample or a video frame of the remote\n *   MediaStreamTrack takes from the time the first packet is received by the jitter buffer to the time it exits the jitter buffer\n * @property {number} [jitterBufferEmittedCount] - The total number of audio samples or video frames that have come out of the jitter buffer\n * @property {AudioLevel} [audioInputLevel] - The {@link AudioLevel} of the local audio MediaStreamTrack\n * @property {AudioLevel} [audioOutputLevel] - The {@link AudioLevel} of the remote video MediaStreamTrack\n */\nmodule.exports = getStats;\n\n},{\"./util\":185,\"./util/sdp\":187}],172:[function(require,module,exports){\n/* globals navigator */\n'use strict';\n/**\n * This function is very similar to <code>navigator.mediaDevices.getUserMedia</code>\n * except that if no MediaStreamConstraints are provided, then bot audio and video\n * are requested.\n * @function getUserMedia\n * @param {MediaStreamConstraints} [constraints={audio:true,video:true}] - the\n *   MediaStreamConstraints object specifying what kind of MediaStream to\n *   request from the browser (by default both audio and video)\n * @returns Promise<MediaStream>\n */\nfunction getUserMedia(constraints) {\n    if (constraints === void 0) { constraints = { audio: true, video: true }; }\n    if (typeof navigator === 'object'\n        && typeof navigator.mediaDevices === 'object'\n        && typeof navigator.mediaDevices.getUserMedia === 'function') {\n        return navigator.mediaDevices.getUserMedia(constraints);\n    }\n    return Promise.reject(new Error('getUserMedia is not supported'));\n}\nmodule.exports = getUserMedia;\n\n},{}],173:[function(require,module,exports){\n'use strict';\nvar WebRTC = {};\nObject.defineProperties(WebRTC, {\n    getStats: {\n        enumerable: true,\n        value: require('./getstats')\n    },\n    getUserMedia: {\n        enumerable: true,\n        value: require('./getusermedia')\n    },\n    MediaStream: {\n        enumerable: true,\n        value: require('./mediastream')\n    },\n    MediaStreamTrack: {\n        enumerable: true,\n        value: require('./mediastreamtrack')\n    },\n    RTCIceCandidate: {\n        enumerable: true,\n        value: require('./rtcicecandidate')\n    },\n    RTCPeerConnection: {\n        enumerable: true,\n        value: require('./rtcpeerconnection')\n    },\n    RTCSessionDescription: {\n        enumerable: true,\n        value: require('./rtcsessiondescription')\n    }\n});\nmodule.exports = WebRTC;\n\n},{\"./getstats\":171,\"./getusermedia\":172,\"./mediastream\":174,\"./mediastreamtrack\":175,\"./rtcicecandidate\":176,\"./rtcpeerconnection\":179,\"./rtcsessiondescription\":184}],174:[function(require,module,exports){\n/* globals MediaStream */\n'use strict';\nif (typeof MediaStream === 'function') {\n    module.exports = MediaStream;\n}\nelse {\n    module.exports = function MediaStream() {\n        throw new Error('MediaStream is not supported');\n    };\n}\n\n},{}],175:[function(require,module,exports){\n/* global MediaStreamTrack */\n'use strict';\nif (typeof MediaStreamTrack === 'function') {\n    module.exports = MediaStreamTrack;\n}\nelse {\n    module.exports = function MediaStreamTrack() {\n        throw new Error('MediaStreamTrack is not supported');\n    };\n}\n\n},{}],176:[function(require,module,exports){\n/* global RTCIceCandidate */\n'use strict';\nif (typeof RTCIceCandidate === 'function') {\n    module.exports = RTCIceCandidate;\n}\nelse {\n    module.exports = function RTCIceCandidate() {\n        throw new Error('RTCIceCandidate is not supported');\n    };\n}\n\n},{}],177:[function(require,module,exports){\n/* globals RTCDataChannel, RTCPeerConnection, RTCSessionDescription */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar ChromeRTCSessionDescription = require('../rtcsessiondescription/chrome');\nvar EventTarget = require('../../eventtarget');\nvar Latch = require('../util/latch');\nvar MediaStream = require('../mediastream');\nvar RTCRtpSenderShim = require('../rtcrtpsender');\nvar _a = require('../util/sdp'), getSdpFormat = _a.getSdpFormat, updatePlanBTrackIdsToSSRCs = _a.updatePlanBTrackIdsToSSRCs, updateUnifiedPlanTrackIdsToSSRCs = _a.updateUnifiedPlanTrackIdsToSSRCs;\nvar _b = require('../util'), delegateMethods = _b.delegateMethods, interceptEvent = _b.interceptEvent, isIOSChrome = _b.isIOSChrome, legacyPromise = _b.legacyPromise, proxyProperties = _b.proxyProperties;\nvar isUnifiedPlan = getSdpFormat() === 'unified';\n// NOTE(mroberts): This class wraps Chrome's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Chrome, namely the\n// abilities to\n//\n//   1. Rollback, per the workaround suggested here:\n//      https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n//\n//   2. Listen for track events, per the adapter.js workaround.\n//\n//   3. Set iceTransportPolicy.\n//\nvar ChromeRTCPeerConnection = /** @class */ (function (_super) {\n    __extends(ChromeRTCPeerConnection, _super);\n    function ChromeRTCPeerConnection(configuration, constraints) {\n        if (configuration === void 0) { configuration = {}; }\n        var _this = _super.call(this) || this;\n        var newConfiguration = Object.assign(configuration.iceTransportPolicy\n            ? { iceTransports: configuration.iceTransportPolicy }\n            : {}, configuration);\n        interceptEvent(_this, 'datachannel');\n        interceptEvent(_this, 'signalingstatechange');\n        var sdpFormat = getSdpFormat(newConfiguration.sdpSemantics);\n        var peerConnection = new RTCPeerConnection(newConfiguration, constraints);\n        Object.defineProperties(_this, {\n            _appliedTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _localStream: {\n                value: new MediaStream()\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _pendingLocalOffer: {\n                value: null,\n                writable: true\n            },\n            _pendingRemoteOffer: {\n                value: null,\n                writable: true\n            },\n            _rolledBackTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _sdpFormat: {\n                value: sdpFormat\n            },\n            _senders: {\n                value: new Map()\n            },\n            _signalingStateLatch: {\n                value: new Latch()\n            },\n            _tracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            }\n        });\n        peerConnection.addEventListener('datachannel', function (event) {\n            shimDataChannel(event.channel);\n            _this.dispatchEvent(event);\n        });\n        peerConnection.addEventListener('signalingstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (peerConnection.signalingState === 'stable') {\n                _this._appliedTracksToSSRCs = new Map(_this._tracksToSSRCs);\n            }\n            if (!_this._pendingLocalOffer && !_this._pendingRemoteOffer) {\n                _this.dispatchEvent.apply(_this, __spreadArray([], __read(args), false));\n            }\n        });\n        peerConnection.ontrack = function () {\n            // NOTE(mroberts): adapter.js's \"track\" event shim only kicks off if we set\n            // the ontrack property of the RTCPeerConnection.\n        };\n        if (typeof peerConnection.addTrack !== 'function') {\n            peerConnection.addStream(_this._localStream);\n        }\n        proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n        return _this;\n    }\n    Object.defineProperty(ChromeRTCPeerConnection.prototype, \"localDescription\", {\n        get: function () {\n            return this._pendingLocalOffer ? this._pendingLocalOffer : this._peerConnection.localDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ChromeRTCPeerConnection.prototype, \"remoteDescription\", {\n        get: function () {\n            return this._pendingRemoteOffer ? this._pendingRemoteOffer : this._peerConnection.remoteDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ChromeRTCPeerConnection.prototype, \"signalingState\", {\n        get: function () {\n            if (this._pendingLocalOffer) {\n                return 'have-local-offer';\n            }\n            else if (this._pendingRemoteOffer) {\n                return 'have-remote-offer';\n            }\n            return this._peerConnection.signalingState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    // NOTE(mmalavalli): This shim supports our limited case of adding\n    // all MediaStreamTracks to one MediaStream. It has been implemented this\n    // keeping in mind that this is to be maintained only until \"addTrack\" is\n    // supported natively in Chrome.\n    ChromeRTCPeerConnection.prototype.addTrack = function (track) {\n        var _a;\n        var rest = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            rest[_i - 1] = arguments[_i];\n        }\n        if (typeof this._peerConnection.addTrack === 'function') {\n            return (_a = this._peerConnection).addTrack.apply(_a, __spreadArray([track], __read(rest), false));\n        }\n        if (this._peerConnection.signalingState === 'closed') {\n            throw new Error(\"Cannot add MediaStreamTrack [\".concat(track.id, \", \\n        \").concat(track.kind, \"]: RTCPeerConnection is closed\"));\n        }\n        var sender = this._senders.get(track);\n        if (sender && sender.track) {\n            throw new Error(\"Cannot add MediaStreamTrack ['\".concat(track.id, \", \\n        \").concat(track.kind, \"]: RTCPeerConnection already has it\"));\n        }\n        this._peerConnection.removeStream(this._localStream);\n        this._localStream.addTrack(track);\n        this._peerConnection.addStream(this._localStream);\n        sender = new RTCRtpSenderShim(track);\n        this._senders.set(track, sender);\n        return sender;\n    };\n    // NOTE(mmalavalli): This shim supports our limited case of removing\n    // MediaStreamTracks from one MediaStream. It has been implemented this\n    // keeping in mind that this is to be maintained only until \"removeTrack\" is\n    // supported natively in Chrome.\n    ChromeRTCPeerConnection.prototype.removeTrack = function (sender) {\n        if (this._peerConnection.signalingState === 'closed') {\n            throw new Error('Cannot remove MediaStreamTrack: RTCPeerConnection is closed');\n        }\n        if (typeof this._peerConnection.addTrack === 'function') {\n            try {\n                return this._peerConnection.removeTrack(sender);\n            }\n            catch (e) {\n                // NOTE(mhuynh): Do nothing. In Chrome, will throw if a 'sender was not\n                // created by this peer connection'. This behavior does not seem to be\n                // spec compliant, so a temporary shim is introduced. A bug has been filed,\n                // and is tracked here:\n                // https://bugs.chromium.org/p/chromium/issues/detail?id=860853\n            }\n        }\n        else {\n            var track = sender.track;\n            if (!track) {\n                return;\n            }\n            sender = this._senders.get(track);\n            if (sender && sender.track) {\n                sender.track = null;\n                this._peerConnection.removeStream(this._localStream);\n                this._localStream.removeTrack(track);\n                this._peerConnection.addStream(this._localStream);\n            }\n        }\n    };\n    ChromeRTCPeerConnection.prototype.getSenders = function () {\n        if (typeof this._peerConnection.addTrack === 'function') {\n            return this._peerConnection.getSenders();\n        }\n        return Array.from(this._senders.values());\n    };\n    ChromeRTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n        var _this = this;\n        var rest = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            rest[_i - 1] = arguments[_i];\n        }\n        var promise;\n        if (this.signalingState === 'have-remote-offer') {\n            // NOTE(mroberts): Because the ChromeRTCPeerConnection simulates the\n            // \"have-remote-offer\" signalingStates, we only want to invoke the true\n            // addIceCandidates method when the remote description has been applied.\n            promise = this._signalingStateLatch.when('low').then(function () {\n                return _this._peerConnection.addIceCandidate(candidate);\n            });\n        }\n        else {\n            promise = this._peerConnection.addIceCandidate(candidate);\n        }\n        return rest.length > 0\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest), false)) : promise;\n    };\n    // NOTE(mroberts): The WebRTC spec does not specify that close should throw an\n    // Error; however, in Chrome it does. We workaround this by checking the\n    // signalingState manually.\n    ChromeRTCPeerConnection.prototype.close = function () {\n        if (this.signalingState !== 'closed') {\n            this._pendingLocalOffer = null;\n            this._pendingRemoteOffer = null;\n            this._peerConnection.close();\n        }\n    };\n    // NOTE(mroberts): Because we workaround Chrome's lack of rollback support by\n    // \"faking\" setRemoteDescription, we cannot create an answer until we actually\n    // apply the remote description. This means, once you call createAnswer, you\n    // can no longer rollback. This is acceptable for our use case because we will\n    // apply the newly-created answer almost immediately; however, this may be\n    // unacceptable for other use cases.\n    ChromeRTCPeerConnection.prototype.createAnswer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var promise;\n        if (this._pendingRemoteOffer) {\n            promise = this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function () {\n                // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n                // and the underlying RTCPeerConnection implementation have converged. We\n                // can unblock any pending calls to addIceCandidate now.\n                _this._signalingStateLatch.lower();\n                return _this._peerConnection.createAnswer();\n            }).then(function (answer) {\n                _this._pendingRemoteOffer = null;\n                // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n                // longer need to retain the rolled back tracks to SSRCs Map.\n                _this._rolledBackTracksToSSRCs.clear();\n                return new ChromeRTCSessionDescription({\n                    type: 'answer',\n                    sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, answer.sdp)\n                });\n            }, function (error) {\n                _this._pendingRemoteOffer = null;\n                throw error;\n            });\n        }\n        else {\n            promise = this._peerConnection.createAnswer().then(function (answer) {\n                // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n                // longer need to retain the rolled back tracks to SSRCs Map.\n                _this._rolledBackTracksToSSRCs.clear();\n                return new ChromeRTCSessionDescription({\n                    type: 'answer',\n                    sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, answer.sdp)\n                });\n            });\n        }\n        return args.length > 1\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(args), false)) : promise;\n    };\n    ChromeRTCPeerConnection.prototype.createOffer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), arg1 = _a[0], arg2 = _a[1], arg3 = _a[2];\n        var options = arg3 || arg1 || {};\n        if (isIOSChrome()) {\n            // NOTE (joma): From SafariRTCPeerConnection in order to support iOS Chrome.\n            if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n                delete options.offerToReceiveAudio;\n                try {\n                    this._audioTransceiver = isUnifiedPlan\n                        ? this.addTransceiver('audio', { direction: 'recvonly' })\n                        : this.addTransceiver('audio');\n                }\n                catch (e) {\n                    return Promise.reject(e);\n                }\n            }\n            if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n                delete options.offerToReceiveVideo;\n                try {\n                    this._videoTransceiver = isUnifiedPlan\n                        ? this.addTransceiver('video', { direction: 'recvonly' })\n                        : this.addTransceiver('video');\n                }\n                catch (e) {\n                    return Promise.reject(e);\n                }\n            }\n        }\n        var promise = this._peerConnection.createOffer(options).then(function (offer) {\n            // NOTE(mmalavalli): If createOffer() is called immediately after rolling back, then we no\n            // longer need to retain the rolled back tracks to SSRCs Map.\n            _this._rolledBackTracksToSSRCs.clear();\n            return new ChromeRTCSessionDescription({\n                type: offer.type,\n                sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, offer.sdp)\n            });\n        });\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    ChromeRTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n        dataChannelDict = shimDataChannelInit(dataChannelDict);\n        var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n        shimDataChannel(dataChannel);\n        return dataChannel;\n    };\n    ChromeRTCPeerConnection.prototype.setLocalDescription = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), description = _a[0], arg1 = _a[1], arg2 = _a[2];\n        // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n        // then we need to restore the rolled back tracks to SSRCs Map.\n        if (this._rolledBackTracksToSSRCs.size > 0) {\n            this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n            this._rolledBackTracksToSSRCs.clear();\n        }\n        var promise = setDescription(this, true, description);\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    ChromeRTCPeerConnection.prototype.setRemoteDescription = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), description = _a[0], arg1 = _a[1], arg2 = _a[2];\n        // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n        // then we no longer need to retain the rolled back tracks to SSRCs Map.\n        this._rolledBackTracksToSSRCs.clear();\n        var promise = setDescription(this, false, description);\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    return ChromeRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, ChromeRTCPeerConnection.prototype, '_peerConnection');\n// NOTE(mroberts): We workaround Chrome's lack of rollback support, per the\n// workaround suggested here: https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n// Namely, we \"fake\" setting the local or remote description and instead buffer\n// it. If we receive or create an answer, then we will actually apply the\n// description. Until we receive or create an answer, we will be able to\n// \"rollback\" by simply discarding the buffer description.\nfunction setDescription(peerConnection, local, description) {\n    function setPendingLocalOffer(offer) {\n        if (local) {\n            peerConnection._pendingLocalOffer = offer;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = offer;\n        }\n    }\n    function clearPendingLocalOffer() {\n        if (local) {\n            peerConnection._pendingLocalOffer = null;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = null;\n        }\n    }\n    var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n    var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n    var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n    var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n    var promise;\n    if (!local && pendingRemoteOffer && description.type === 'answer') {\n        promise = setRemoteAnswer(peerConnection, description);\n    }\n    else if (description.type === 'offer') {\n        if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n            // NOTE(mroberts): Error message copied from Firefox.\n            return Promise.reject(new Error(\"Cannot set \".concat(local ? 'local' : 'remote', \" offer in state \").concat(peerConnection.signalingState)));\n        }\n        // We need to save this local offer in case of a rollback. We also need to\n        // check to see if the signalingState between the ChromeRTCPeerConnection\n        // and the underlying RTCPeerConnection implementation are about to diverge.\n        // If so, we need to ensure subsequent calls to addIceCandidate will block.\n        if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n            peerConnection._signalingStateLatch.raise();\n        }\n        var previousSignalingState = peerConnection.signalingState;\n        setPendingLocalOffer(unwrap(description));\n        promise = Promise.resolve();\n        // Only dispatch a signalingstatechange event if we transitioned.\n        if (peerConnection.signalingState !== previousSignalingState) {\n            promise.then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n        }\n    }\n    else if (description.type === 'rollback') {\n        if (peerConnection.signalingState !== intermediateState) {\n            // NOTE(mroberts): Error message copied from Firefox.\n            promise = Promise.reject(new Error(\"Cannot rollback \".concat(local ? 'local' : 'remote', \" description in \").concat(peerConnection.signalingState)));\n        }\n        else {\n            // Reset the pending offer.\n            clearPendingLocalOffer();\n            // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n            // setLocalDescription() is called immediately after a rollback (without calling\n            // createOffer() or createAnswer()), in which case this roll back is not due to a\n            // glare scenario and this Map should be restored.\n            peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n            peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n            promise = Promise.resolve();\n            promise.then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n        }\n    }\n    return promise || peerConnection._peerConnection[setLocalDescription](unwrap(description));\n}\nfunction setRemoteAnswer(peerConnection, answer) {\n    // Apply the pending local offer.\n    var pendingLocalOffer = peerConnection._pendingLocalOffer;\n    return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function () {\n        peerConnection._pendingLocalOffer = null;\n        return peerConnection.setRemoteDescription(answer);\n    }).then(function () {\n        // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n        // and the underlying RTCPeerConnection implementation have converged. We\n        // can unblock any pending calls to addIceCandidate now.\n        peerConnection._signalingStateLatch.lower();\n    });\n}\n/**\n * Whether a ChromeRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {ChromeRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n    return !!peerConnection.getTransceivers().find(function (_a) {\n        var _b = _a.receiver, receiver = _b === void 0 ? {} : _b;\n        var _c = receiver.track, track = _c === void 0 ? {} : _c;\n        return track.kind === kind;\n    });\n}\nfunction unwrap(description) {\n    if (description instanceof ChromeRTCSessionDescription) {\n        if (description._description) {\n            return description._description;\n        }\n    }\n    return new RTCSessionDescription(description);\n}\n/**\n * Check whether or not we need to apply our maxPacketLifeTime shim. We are\n * pretty conservative: we'll only apply it if the legacy maxRetransmitTime\n * property is available _and_ the standard maxPacketLifeTime property is _not_\n * available (the thinking being that Chrome will land the standards-compliant\n * property).\n * @returns {boolean}\n */\nfunction needsMaxPacketLifeTimeShim() {\n    return 'maxRetransmitTime' in RTCDataChannel.prototype\n        && !('maxPacketLifeTime' in RTCDataChannel.prototype);\n}\n/**\n * Shim an RTCDataChannelInit dictionary (if necessary). This function returns\n * a copy of the original RTCDataChannelInit.\n * @param {RTCDataChannelInit} dataChannelDict\n * @returns {RTCDataChannelInit}\n */\nfunction shimDataChannelInit(dataChannelDict) {\n    dataChannelDict = Object.assign({}, dataChannelDict);\n    if (needsMaxPacketLifeTimeShim() && 'maxPacketLifeTime' in dataChannelDict) {\n        dataChannelDict.maxRetransmitTime = dataChannelDict.maxPacketLifeTime;\n    }\n    return dataChannelDict;\n}\n/**\n * Shim an RTCDataChannel (if necessary). This function mutates the\n * RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n    Object.defineProperty(dataChannel, 'maxRetransmits', {\n        value: dataChannel.maxRetransmits === 65535\n            ? null\n            : dataChannel.maxRetransmits\n    });\n    if (needsMaxPacketLifeTimeShim()) {\n        // NOTE(mroberts): We can rename `maxRetransmitTime` to `maxPacketLifeTime`.\n        //\n        //   https://bugs.chromium.org/p/chromium/issues/detail?id=696681\n        //\n        Object.defineProperty(dataChannel, 'maxPacketLifeTime', {\n            value: dataChannel.maxRetransmitTime === 65535\n                ? null\n                : dataChannel.maxRetransmitTime\n        });\n    }\n    return dataChannel;\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {'planb'|'unified'} sdpFormat\n * @param {Map<string, Set<string>>} tracksToSSRCs\n * @param {string} sdp - an SDP whose format is determined by `sdpSemantics`\n * @returns {string} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(sdpFormat, tracksToSSRCs, sdp) {\n    return sdpFormat === 'unified'\n        ? updateUnifiedPlanTrackIdsToSSRCs(tracksToSSRCs, sdp)\n        : updatePlanBTrackIdsToSSRCs(tracksToSSRCs, sdp);\n}\nmodule.exports = ChromeRTCPeerConnection;\n\n},{\"../../eventtarget\":11,\"../mediastream\":174,\"../rtcrtpsender\":181,\"../rtcsessiondescription/chrome\":182,\"../util\":185,\"../util/latch\":186,\"../util/sdp\":187}],178:[function(require,module,exports){\n/* globals RTCPeerConnection */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventTarget = require('../../eventtarget');\nvar FirefoxRTCSessionDescription = require('../rtcsessiondescription/firefox');\nvar updateTracksToSSRCs = require('../util/sdp').updateUnifiedPlanTrackIdsToSSRCs;\nvar _a = require('../util'), delegateMethods = _a.delegateMethods, interceptEvent = _a.interceptEvent, legacyPromise = _a.legacyPromise, proxyProperties = _a.proxyProperties;\n// NOTE(mroberts): This class wraps Firefox's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Firefox, namely the\n// abilities to\n//\n//   1. Call setLocalDescription and setRemoteDescription with new offers in\n//      signalingStates \"have-local-offer\" and \"have-remote-offer\",\n//      respectively.\n//\n//   2. The ability to call createOffer in signalingState \"have-local-offer\".\n//\n// Both of these are implemented using rollbacks to workaround the following\n// bug:\n//\n//   https://bugzilla.mozilla.org/show_bug.cgi?id=1072388\n//\n// We also provide a workaround for a bug where Firefox may change the\n// previously-negotiated DTLS role in an answer, which breaks Chrome:\n//\n//     https://bugzilla.mozilla.org/show_bug.cgi?id=1240897\n//\nvar FirefoxRTCPeerConnection = /** @class */ (function (_super) {\n    __extends(FirefoxRTCPeerConnection, _super);\n    function FirefoxRTCPeerConnection(configuration) {\n        var _this = _super.call(this) || this;\n        interceptEvent(_this, 'signalingstatechange');\n        /* eslint new-cap:0 */\n        var peerConnection = new RTCPeerConnection(configuration);\n        Object.defineProperties(_this, {\n            _initiallyNegotiatedDtlsRole: {\n                value: null,\n                writable: true\n            },\n            _isClosed: {\n                value: false,\n                writable: true\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _rollingBack: {\n                value: false,\n                writable: true\n            },\n            _tracksToSSRCs: {\n                value: new Map()\n            },\n            // NOTE(mmalavalli): Firefox throws a TypeError when the PeerConnection's\n            // prototype's \"peerIdentity\" property is accessed. In order to overcome\n            // this, we ignore this property while delegating methods.\n            // Reference: https://bugzilla.mozilla.org/show_bug.cgi?id=1363815\n            peerIdentity: {\n                enumerable: true,\n                value: Promise.resolve({\n                    idp: '',\n                    name: ''\n                })\n            }\n        });\n        var previousSignalingState;\n        peerConnection.addEventListener('signalingstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (!_this._rollingBack && _this.signalingState !== previousSignalingState) {\n                previousSignalingState = _this.signalingState;\n                // NOTE(mmalavalli): In Firefox, 'signalingstatechange' event is\n                // triggered synchronously in the same tick after\n                // RTCPeerConnection#close() is called. So we mimic Chrome's behavior\n                // by triggering 'signalingstatechange' on the next tick.\n                if (_this._isClosed) {\n                    setTimeout(function () { return _this.dispatchEvent.apply(_this, __spreadArray([], __read(args), false)); });\n                }\n                else {\n                    _this.dispatchEvent.apply(_this, __spreadArray([], __read(args), false));\n                }\n            }\n        });\n        proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n        return _this;\n    }\n    Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"iceGatheringState\", {\n        get: function () {\n            return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"localDescription\", {\n        get: function () {\n            return overwriteWithInitiallyNegotiatedDtlsRole(this._peerConnection.localDescription, this._initiallyNegotiatedDtlsRole);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"signalingState\", {\n        get: function () {\n            return this._isClosed ? 'closed' : this._peerConnection.signalingState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    FirefoxRTCPeerConnection.prototype.createAnswer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var promise;\n        promise = this._peerConnection.createAnswer().then(function (answer) {\n            saveInitiallyNegotiatedDtlsRole(_this, answer);\n            return overwriteWithInitiallyNegotiatedDtlsRole(answer, _this._initiallyNegotiatedDtlsRole);\n        });\n        return typeof args[0] === 'function'\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(args), false)) : promise;\n    };\n    // NOTE(mroberts): The WebRTC spec allows you to call createOffer from any\n    // signalingState other than \"closed\"; however, Firefox has not yet implemented\n    // this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388). We workaround\n    // this by rolling back if we are in state \"have-local-offer\" or\n    // \"have-remote-offer\". This is acceptable for our use case because we will\n    // apply the newly-created offer almost immediately; however, this may be\n    // unacceptable for other use cases.\n    FirefoxRTCPeerConnection.prototype.createOffer = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args, 3), arg1 = _a[0], arg2 = _a[1], arg3 = _a[2];\n        var options = arg3 || arg1 || {};\n        var promise;\n        if (this.signalingState === 'have-local-offer' ||\n            this.signalingState === 'have-remote-offer') {\n            var local = this.signalingState === 'have-local-offer';\n            promise = rollback(this, local, function () { return _this.createOffer(options); });\n        }\n        else {\n            promise = this._peerConnection.createOffer(options);\n        }\n        promise = promise.then(function (offer) {\n            return new FirefoxRTCSessionDescription({\n                type: offer.type,\n                sdp: updateTracksToSSRCs(_this._tracksToSSRCs, offer.sdp)\n            });\n        });\n        return args.length > 1\n            ? legacyPromise(promise, arg1, arg2)\n            : promise;\n    };\n    // NOTE(mroberts): While Firefox will reject the Promise returned by\n    // setLocalDescription when called from signalingState \"have-local-offer\" with\n    // an answer, it still updates the .localDescription property. We workaround\n    // this by explicitly handling this case.\n    FirefoxRTCPeerConnection.prototype.setLocalDescription = function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _b = __read(args), description = _b[0], rest = _b.slice(1);\n        var promise;\n        if (description && description.type === 'answer' && this.signalingState === 'have-local-offer') {\n            promise = Promise.reject(new Error('Cannot set local answer in state have-local-offer'));\n        }\n        if (promise) {\n            return args.length > 1\n                ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest), false)) : promise;\n        }\n        return (_a = this._peerConnection).setLocalDescription.apply(_a, __spreadArray([], __read(args), false));\n    };\n    // NOTE(mroberts): The WebRTC spec allows you to call setRemoteDescription with\n    // an offer multiple times in signalingState \"have-remote-offer\"; however,\n    // Firefox has not yet implemented this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388).\n    // We workaround this by rolling back if we are in state \"have-remote-offer\".\n    // This is acceptable for our use case; however, this may be unacceptable for\n    // other use cases.\n    //\n    // While Firefox will reject the Promise returned by setRemoteDescription when\n    // called from signalingState \"have-remote-offer\" with an answer, it sill\n    // updates the .remoteDescription property. We workaround this by explicitly\n    // handling this case.\n    FirefoxRTCPeerConnection.prototype.setRemoteDescription = function () {\n        var _this = this;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = __read(args), description = _a[0], rest = _a.slice(1);\n        var promise;\n        if (description && this.signalingState === 'have-remote-offer') {\n            if (description.type === 'answer') {\n                promise = Promise.reject(new Error('Cannot set remote answer in state have-remote-offer'));\n            }\n            else if (description.type === 'offer') {\n                promise = rollback(this, false, function () { return _this._peerConnection.setRemoteDescription(description); });\n            }\n        }\n        if (!promise) {\n            promise = this._peerConnection.setRemoteDescription(description);\n        }\n        promise = promise.then(function () { return saveInitiallyNegotiatedDtlsRole(_this, description, true); });\n        return args.length > 1\n            ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest), false)) : promise;\n    };\n    // NOTE(mroberts): The WebRTC spec specifies that the PeerConnection's internal\n    // isClosed slot should immediately be set to true; however, in Firefox it\n    // occurs in the next tick. We workaround this by tracking isClosed manually.\n    FirefoxRTCPeerConnection.prototype.close = function () {\n        if (this.signalingState !== 'closed') {\n            this._isClosed = true;\n            this._peerConnection.close();\n        }\n    };\n    return FirefoxRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, FirefoxRTCPeerConnection.prototype, '_peerConnection');\nfunction rollback(peerConnection, local, onceRolledBack) {\n    var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n    peerConnection._rollingBack = true;\n    return peerConnection._peerConnection[setLocalDescription](new FirefoxRTCSessionDescription({\n        type: 'rollback'\n    })).then(onceRolledBack).then(function (result) {\n        peerConnection._rollingBack = false;\n        return result;\n    }, function (error) {\n        peerConnection._rollingBack = false;\n        throw error;\n    });\n}\n/**\n * Extract the initially negotiated DTLS role out of an RTCSessionDescription's\n * sdp property and save it on the FirefoxRTCPeerConnection if and only if\n *\n *   1. A DTLS role was not already saved on the FirefoxRTCPeerConnection, and\n *   2. The description is an answer.\n *\n * @private\n * @param {FirefoxRTCPeerConnection} peerConnection\n * @param {RTCSessionDescription} description\n * @param {boolean} [remote=false] - if true, save the inverse of the DTLS role,\n *   e.g. \"active\" instead of \"passive\" and vice versa\n * @returns {undefined}\n */\nfunction saveInitiallyNegotiatedDtlsRole(peerConnection, description, remote) {\n    // NOTE(mroberts): JSEP specifies that offers always offer \"actpass\" as the\n    // DTLS role. We need to inspect answers to figure out the negotiated DTLS\n    // role.\n    if (peerConnection._initiallyNegotiatedDtlsRole || description.type === 'offer') {\n        return;\n    }\n    var match = description.sdp.match(/a=setup:([a-z]+)/);\n    if (!match) {\n        return;\n    }\n    var dtlsRole = match[1];\n    peerConnection._initiallyNegotiatedDtlsRole = remote ? {\n        active: 'passive',\n        passive: 'active'\n    }[dtlsRole] : dtlsRole;\n}\n/**\n * Overwrite the DTLS role in the sdp property of an RTCSessionDescription if\n * and only if\n *\n *   1. The description is an answer, and\n *   2. A DTLS role is provided.\n *\n * @private\n * @param {RTCSessionDescription} [description]\n * @param {string} [dtlsRole] - one of \"active\" or \"passive\"\n * @returns {?RTCSessionDescription} description\n */\nfunction overwriteWithInitiallyNegotiatedDtlsRole(description, dtlsRole) {\n    if (description && description.type === 'answer' && dtlsRole) {\n        return new FirefoxRTCSessionDescription({\n            type: description.type,\n            sdp: description.sdp.replace(/a=setup:[a-z]+/g, 'a=setup:' + dtlsRole)\n        });\n    }\n    return description;\n}\nmodule.exports = FirefoxRTCPeerConnection;\n\n},{\"../../eventtarget\":11,\"../rtcsessiondescription/firefox\":183,\"../util\":185,\"../util/sdp\":187}],179:[function(require,module,exports){\n'use strict';\nif (typeof RTCPeerConnection === 'function') {\n    var guessBrowser = require('../util').guessBrowser;\n    switch (guessBrowser()) {\n        case 'chrome':\n            module.exports = require('./chrome');\n            break;\n        case 'firefox':\n            module.exports = require('./firefox');\n            break;\n        case 'safari':\n            module.exports = require('./safari');\n            break;\n        default:\n            module.exports = RTCPeerConnection;\n            break;\n    }\n}\nelse {\n    module.exports = function RTCPeerConnection() {\n        throw new Error('RTCPeerConnection is not supported');\n    };\n}\n\n},{\"../util\":185,\"./chrome\":177,\"./firefox\":178,\"./safari\":180}],180:[function(require,module,exports){\n/* globals RTCPeerConnection, RTCSessionDescription */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar EventTarget = require('../../eventtarget');\nvar Latch = require('../util/latch');\nvar _a = require('../util/sdp'), getSdpFormat = _a.getSdpFormat, updatePlanBTrackIdsToSSRCs = _a.updatePlanBTrackIdsToSSRCs, updateUnifiedPlanTrackIdsToSSRCs = _a.updateUnifiedPlanTrackIdsToSSRCs;\nvar _b = require('../util'), delegateMethods = _b.delegateMethods, interceptEvent = _b.interceptEvent, proxyProperties = _b.proxyProperties;\nvar isUnifiedPlan = getSdpFormat() === 'unified';\nvar updateTrackIdsToSSRCs = isUnifiedPlan\n    ? updateUnifiedPlanTrackIdsToSSRCs\n    : updatePlanBTrackIdsToSSRCs;\nvar SafariRTCPeerConnection = /** @class */ (function (_super) {\n    __extends(SafariRTCPeerConnection, _super);\n    function SafariRTCPeerConnection(configuration) {\n        var _this = _super.call(this) || this;\n        interceptEvent(_this, 'datachannel');\n        interceptEvent(_this, 'iceconnectionstatechange');\n        interceptEvent(_this, 'signalingstatechange');\n        interceptEvent(_this, 'track');\n        var peerConnection = new RTCPeerConnection(configuration);\n        Object.defineProperties(_this, {\n            _appliedTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _audioTransceiver: {\n                value: null,\n                writable: true\n            },\n            _isClosed: {\n                value: false,\n                writable: true\n            },\n            _peerConnection: {\n                value: peerConnection\n            },\n            _pendingLocalOffer: {\n                value: null,\n                writable: true\n            },\n            _pendingRemoteOffer: {\n                value: null,\n                writable: true\n            },\n            _rolledBackTracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _signalingStateLatch: {\n                value: new Latch()\n            },\n            _tracksToSSRCs: {\n                value: new Map(),\n                writable: true\n            },\n            _videoTransceiver: {\n                value: null,\n                writable: true\n            }\n        });\n        peerConnection.addEventListener('datachannel', function (event) {\n            shimDataChannel(event.channel);\n            _this.dispatchEvent(event);\n        });\n        peerConnection.addEventListener('iceconnectionstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (_this._isClosed) {\n                return;\n            }\n            _this.dispatchEvent.apply(_this, __spreadArray([], __read(args), false));\n        });\n        peerConnection.addEventListener('signalingstatechange', function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            if (_this._isClosed) {\n                return;\n            }\n            if (peerConnection.signalingState === 'stable') {\n                _this._appliedTracksToSSRCs = new Map(_this._tracksToSSRCs);\n            }\n            if (!_this._pendingLocalOffer && !_this._pendingRemoteOffer) {\n                _this.dispatchEvent.apply(_this, __spreadArray([], __read(args), false));\n            }\n        });\n        // NOTE(syerrapragada): This ensures that SafariRTCPeerConnection's \"remoteDescription\", when accessed\n        // in an RTCTrackEvent listener, will point to the underlying RTCPeerConnection's\n        // \"remoteDescription\". Before this fix, this was still pointing to \"_pendingRemoteOffer\"\n        // even though a new remote RTCSessionDescription had already been applied.\n        peerConnection.addEventListener('track', function (event) {\n            _this._pendingRemoteOffer = null;\n            _this.dispatchEvent(event);\n        });\n        proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n        return _this;\n    }\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"localDescription\", {\n        get: function () {\n            return this._pendingLocalOffer || this._peerConnection.localDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"iceConnectionState\", {\n        get: function () {\n            return this._isClosed ? 'closed' : this._peerConnection.iceConnectionState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"iceGatheringState\", {\n        get: function () {\n            return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"remoteDescription\", {\n        get: function () {\n            return this._pendingRemoteOffer || this._peerConnection.remoteDescription;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(SafariRTCPeerConnection.prototype, \"signalingState\", {\n        get: function () {\n            if (this._isClosed) {\n                return 'closed';\n            }\n            else if (this._pendingLocalOffer) {\n                return 'have-local-offer';\n            }\n            else if (this._pendingRemoteOffer) {\n                return 'have-remote-offer';\n            }\n            return this._peerConnection.signalingState;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    SafariRTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n        var _this = this;\n        if (this.signalingState === 'have-remote-offer') {\n            return this._signalingStateLatch.when('low').then(function () { return _this._peerConnection.addIceCandidate(candidate); });\n        }\n        return this._peerConnection.addIceCandidate(candidate);\n    };\n    SafariRTCPeerConnection.prototype.createOffer = function (options) {\n        var _this = this;\n        options = Object.assign({}, options);\n        // NOTE(mroberts): In general, this is not the way to do this; however, it's\n        // good enough for our application.\n        if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n            delete options.offerToReceiveAudio;\n            try {\n                this._audioTransceiver = isUnifiedPlan\n                    ? this.addTransceiver('audio', { direction: 'recvonly' })\n                    : this.addTransceiver('audio');\n            }\n            catch (e) {\n                return Promise.reject(e);\n            }\n        }\n        if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n            delete options.offerToReceiveVideo;\n            try {\n                this._videoTransceiver = isUnifiedPlan\n                    ? this.addTransceiver('video', { direction: 'recvonly' })\n                    : this.addTransceiver('video');\n            }\n            catch (e) {\n                return Promise.reject(e);\n            }\n        }\n        return this._peerConnection.createOffer(options).then(function (offer) {\n            // NOTE(mmalavalli): If createOffer() is called immediately after rolling back,\n            // then we no longer need to retain the rolled back tracks to SSRCs Map.\n            _this._rolledBackTracksToSSRCs.clear();\n            return new RTCSessionDescription({\n                type: offer.type,\n                sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, offer.sdp)\n            });\n        });\n    };\n    SafariRTCPeerConnection.prototype.createAnswer = function (options) {\n        var _this = this;\n        if (this._pendingRemoteOffer) {\n            return this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function () {\n                _this._signalingStateLatch.lower();\n                return _this._peerConnection.createAnswer();\n            }).then(function (answer) {\n                _this._pendingRemoteOffer = null;\n                // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n                // longer need to retain the rolled back tracks to SSRCs Map.\n                _this._rolledBackTracksToSSRCs.clear();\n                return isUnifiedPlan ? new RTCSessionDescription({\n                    type: answer.type,\n                    sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, answer.sdp)\n                }) : answer;\n            }, function (error) {\n                _this._pendingRemoteOffer = null;\n                throw error;\n            });\n        }\n        return this._peerConnection.createAnswer(options).then(function (answer) {\n            // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n            // longer need to retain the rolled back tracks to SSRCs Map.\n            _this._rolledBackTracksToSSRCs.clear();\n            return isUnifiedPlan ? new RTCSessionDescription({\n                type: answer.type,\n                sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, answer.sdp)\n            }) : answer;\n        });\n    };\n    SafariRTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n        var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n        shimDataChannel(dataChannel);\n        return dataChannel;\n    };\n    SafariRTCPeerConnection.prototype.removeTrack = function (sender) {\n        sender.replaceTrack(null);\n        this._peerConnection.removeTrack(sender);\n    };\n    SafariRTCPeerConnection.prototype.setLocalDescription = function (description) {\n        // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n        // then we need to restore the rolled back tracks to SSRCs Map.\n        if (this._rolledBackTracksToSSRCs.size > 0) {\n            this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n            this._rolledBackTracksToSSRCs.clear();\n        }\n        return setDescription(this, true, description);\n    };\n    SafariRTCPeerConnection.prototype.setRemoteDescription = function (description) {\n        // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n        // then we no longer need to retain the rolled back tracks to SSRCs Map.\n        this._rolledBackTracksToSSRCs.clear();\n        return setDescription(this, false, description);\n    };\n    SafariRTCPeerConnection.prototype.close = function () {\n        var _this = this;\n        if (this._isClosed) {\n            return;\n        }\n        this._isClosed = true;\n        this._peerConnection.close();\n        setTimeout(function () {\n            _this.dispatchEvent(new Event('iceconnectionstatechange'));\n            _this.dispatchEvent(new Event('signalingstatechange'));\n        });\n    };\n    return SafariRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, SafariRTCPeerConnection.prototype, '_peerConnection');\nfunction setDescription(peerConnection, local, description) {\n    function setPendingLocalOffer(offer) {\n        if (local) {\n            peerConnection._pendingLocalOffer = offer;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = offer;\n        }\n    }\n    function clearPendingLocalOffer() {\n        if (local) {\n            peerConnection._pendingLocalOffer = null;\n        }\n        else {\n            peerConnection._pendingRemoteOffer = null;\n        }\n    }\n    var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n    var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n    var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n    var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n    if (!local && pendingRemoteOffer && description.type === 'answer') {\n        return setRemoteAnswer(peerConnection, description);\n    }\n    else if (description.type === 'offer') {\n        if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n            return Promise.reject(new Error(\"Cannot set \".concat(local ? 'local' : 'remote', \"\\n        offer in state \").concat(peerConnection.signalingState)));\n        }\n        if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n            peerConnection._signalingStateLatch.raise();\n        }\n        var previousSignalingState = peerConnection.signalingState;\n        setPendingLocalOffer(description);\n        // Only dispatch a signalingstatechange event if we transitioned.\n        if (peerConnection.signalingState !== previousSignalingState) {\n            return Promise.resolve().then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n        }\n        return Promise.resolve();\n    }\n    else if (description.type === 'rollback') {\n        if (peerConnection.signalingState !== intermediateState) {\n            return Promise.reject(new Error(\"Cannot rollback \\n        \".concat(local ? 'local' : 'remote', \" description in \").concat(peerConnection.signalingState)));\n        }\n        clearPendingLocalOffer();\n        // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n        // setLocalDescription() is called immediately aftera rollback (without calling\n        // createOffer() or createAnswer()), in which case this roll back is not due to\n        // a glare scenario and this Map should be restored.\n        peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n        peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n        return Promise.resolve().then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n    }\n    return peerConnection._peerConnection[setLocalDescription](description);\n}\nfunction setRemoteAnswer(peerConnection, answer) {\n    var pendingLocalOffer = peerConnection._pendingLocalOffer;\n    return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function () {\n        peerConnection._pendingLocalOffer = null;\n        return peerConnection.setRemoteDescription(answer);\n    }).then(function () { return peerConnection._signalingStateLatch.lower(); });\n}\n/**\n * Whether a SafariRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {SafariRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n    return !!peerConnection.getTransceivers().find(function (_a) {\n        var _b = _a.receiver, receiver = _b === void 0 ? {} : _b;\n        var _c = receiver.track, track = _c === void 0 ? {} : _c;\n        return track.kind === kind;\n    });\n}\n/**\n * Shim an RTCDataChannel. This function mutates the RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n    return Object.defineProperties(dataChannel, {\n        maxPacketLifeTime: {\n            value: dataChannel.maxPacketLifeTime === 65535\n                ? null\n                : dataChannel.maxPacketLifeTime\n        },\n        maxRetransmits: {\n            value: dataChannel.maxRetransmits === 65535\n                ? null\n                : dataChannel.maxRetransmits\n        }\n    });\n}\nmodule.exports = SafariRTCPeerConnection;\n\n},{\"../../eventtarget\":11,\"../util\":185,\"../util/latch\":186,\"../util/sdp\":187}],181:[function(require,module,exports){\n'use strict';\n/**\n * RTCRtpSender shim.\n * @param {MediaStreamTrack} track\n * @property {MediaStreamTrack} track\n */\nvar RTCRtpSenderShim = /** @class */ (function () {\n    function RTCRtpSenderShim(track) {\n        Object.defineProperties(this, {\n            track: {\n                enumerable: true,\n                value: track,\n                writable: true\n            }\n        });\n    }\n    return RTCRtpSenderShim;\n}());\n// NOTE(mmalavalli): Because of the way we will be using this shim, there\n// are a couple of use cases that will not be covered:\n//\n// /* Case 1 */\n// const sender = pc.addTrack(track);\n// assert.equal(sender.track, track);\n// pc.removeTrack(sender);\n// assert.equal(sender.track, null); /* Error */\n//\n// /* Case 2 */\n// const sender = pc.addTrack(track);\n// const senders1 = new Set(pc.getSenders());\n// assert(senders1.has(sender));\n// pc.removeTrack(track);\n// const senders2 = new Set(pc.getSenders());\n// assert(senders2.has(sender)); /* Error */\n//\n// For now, since we only use senders for passing them to RTCPeerConnection#removeTrack(),\n// we will omit handling these use cases for now, and revisit them when we start\n// using the RTCRtpSender APIs.\nmodule.exports = RTCRtpSenderShim;\n\n},{}],182:[function(require,module,exports){\n/* globals RTCSessionDescription */\n'use strict';\n// This class wraps Chrome's RTCSessionDescription implementation. It provides\n// one piece of functionality not currently present in Chrome, namely\n//\n//   1. Rollback support\n//      https://bugs.chromium.org/p/webrtc/issues/detail?id=4676\n//\nvar ChromeRTCSessionDescription = /** @class */ (function () {\n    function ChromeRTCSessionDescription(descriptionInitDict) {\n        this.descriptionInitDict = descriptionInitDict;\n        // If this constructor is called with an object with a .type property set to\n        // \"rollback\", we should not call Chrome's RTCSessionDescription constructor,\n        // because this would throw an RTCSdpType error.\n        var description = descriptionInitDict && descriptionInitDict.type === 'rollback'\n            ? null\n            : new RTCSessionDescription(descriptionInitDict);\n        Object.defineProperties(this, {\n            _description: {\n                get: function () {\n                    return description;\n                }\n            }\n        });\n    }\n    Object.defineProperty(ChromeRTCSessionDescription.prototype, \"sdp\", {\n        get: function () {\n            return this._description ? this._description.sdp : this.descriptionInitDict.sdp;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ChromeRTCSessionDescription.prototype, \"type\", {\n        get: function () {\n            return this._description ? this._description.type : this.descriptionInitDict.type;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return ChromeRTCSessionDescription;\n}());\nmodule.exports = ChromeRTCSessionDescription;\n\n},{}],183:[function(require,module,exports){\n/* globals RTCSessionDescription */\n'use strict';\nmodule.exports = RTCSessionDescription;\n\n},{}],184:[function(require,module,exports){\n/* globals RTCSessionDescription */\n'use strict';\nif (typeof RTCSessionDescription === 'function') {\n    var guessBrowser = require('../util').guessBrowser;\n    switch (guessBrowser()) {\n        case 'chrome':\n            module.exports = require('./chrome');\n            break;\n        case 'firefox':\n            module.exports = require('./firefox');\n            break;\n        default:\n            module.exports = RTCSessionDescription;\n            break;\n    }\n}\nelse {\n    module.exports = function RTCSessionDescription() {\n        throw new Error('RTCSessionDescription is not supported');\n    };\n}\n\n},{\"../util\":185,\"./chrome\":182,\"./firefox\":183}],185:[function(require,module,exports){\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n    var deferred = {};\n    deferred.promise = new Promise(function (resolve, reject) {\n        deferred.resolve = resolve;\n        deferred.reject = reject;\n    });\n    return deferred;\n}\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n    if (methodName in wrapper) {\n        // Skip any methods already set.\n        return;\n    }\n    else if (methodName.match(/^on[a-z]+$/)) {\n        // Skip EventHandlers (these are handled in the constructor).\n        return;\n    }\n    var isProperty = false;\n    try {\n        var propDesc = Object.getOwnPropertyDescriptor(source, methodName);\n        isProperty = propDesc && !!propDesc.get;\n    }\n    catch (error) {\n        // its okay to eat failure here.\n    }\n    // NOTE(mpatwardhan):skip properties. we are only interested in overriding\n    // functions. we do not even want to evaluate  `typeof source[methodName]` for properties\n    // because getter would get invoked, and they might have side effects.\n    // For example RTCPeerConnection.peerIdentity is a property that returns a promise.\n    // calling typeof RTCPeerConnection.peerIdentity, would leak a promise, and in case it rejects\n    // we see errors.\n    if (isProperty) {\n        return;\n    }\n    var type;\n    try {\n        type = typeof source[methodName];\n    }\n    catch (error) {\n        // NOTE(mroberts): Attempting to check the type of non-function members\n        // on the prototype throws an error for some types.\n    }\n    if (type !== 'function') {\n        // Skip non-function members.\n        return;\n    }\n    /* eslint no-loop-func:0 */\n    wrapper[methodName] = function () {\n        return this[target][methodName].apply(this[target], arguments);\n    };\n}\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n    for (var methodName in source) {\n        delegateMethod(source, wrapper, target, methodName);\n    }\n}\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n    list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n    list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n    var difference = new Set();\n    list1.forEach(function (item) {\n        if (!list2.has(item)) {\n            difference.add(item);\n        }\n    });\n    return difference;\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} mapFn\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n    var listArray = list instanceof Map || list instanceof Set\n        ? Array.from(list.values())\n        : list;\n    return listArray.reduce(function (flattened, item) { return flattened.concat(mapFn(item)); }, []);\n}\n/**\n * Get the browser's user agent, if available.\n * @returns {?string}\n */\nfunction getUserAgent() {\n    return typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string'\n        ? navigator.userAgent\n        : null;\n}\n/**\n * Guess the browser.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?string} browser - \"chrome\", \"firefox\", \"safari\", or null\n */\nfunction guessBrowser(userAgent) {\n    if (typeof userAgent === 'undefined') {\n        userAgent = getUserAgent();\n    }\n    if (/Chrome|CriOS/.test(userAgent)) {\n        return 'chrome';\n    }\n    if (/Firefox|FxiOS/.test(userAgent)) {\n        return 'firefox';\n    }\n    if (/Safari|iPhone|iPad|iPod/.test(userAgent)) {\n        return 'safari';\n    }\n    return null;\n}\n/**\n * Guess the browser version.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?{major: number, minor: number}}\n */\nfunction guessBrowserVersion(userAgent) {\n    if (typeof userAgent === 'undefined') {\n        userAgent = getUserAgent();\n    }\n    var prefix = {\n        chrome: 'Chrome|CriOS',\n        firefox: 'Firefox|FxiOS',\n        safari: 'Version'\n    }[guessBrowser(userAgent)];\n    if (!prefix) {\n        return null;\n    }\n    var regex = new RegExp(\"(\".concat(prefix, \")/([^\\\\s]+)\"));\n    var _a = __read(userAgent.match(regex) || [], 3), match = _a[2];\n    if (!match) {\n        return null;\n    }\n    var versions = match.split('.').map(Number);\n    return {\n        major: isNaN(versions[0]) ? null : versions[0],\n        minor: isNaN(versions[1]) ? null : versions[1]\n    };\n}\n/**\n * Check whether the current browser is iOS Chrome.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {boolean}\n */\nfunction isIOSChrome(userAgent) {\n    if (typeof userAgent === 'undefined') {\n        userAgent = getUserAgent();\n    }\n    return (/Mobi/.test(userAgent) && guessBrowser() === 'chrome' && /iPad|iPhone|iPod/.test(userAgent));\n}\n/**\n * Intercept an event that might otherwise be proxied on an EventTarget.\n * @param {EventTarget} target\n * @param {string} type\n * @returns {void}\n */\nfunction interceptEvent(target, type) {\n    var currentListener = null;\n    Object.defineProperty(target, 'on' + type, {\n        get: function () {\n            return currentListener;\n        },\n        set: function (newListener) {\n            if (currentListener) {\n                this.removeEventListener(type, currentListener);\n            }\n            if (typeof newListener === 'function') {\n                currentListener = newListener;\n                this.addEventListener(type, currentListener);\n            }\n            else {\n                currentListener = null;\n            }\n        }\n    });\n}\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function<Error>} onFailure\n * @returns {Promise<undefined>}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n    return onSuccess\n        ? promise.then(onSuccess, onFailure)\n        : promise;\n}\n/**\n * Make a unique ID.\n * @return {string}\n */\nfunction makeUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n        var r = Math.random() * 16 | 0;\n        var v = c === 'x' ? r : (r & 0x3 | 0x8);\n        return v.toString(16);\n    });\n}\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n    Object.getOwnPropertyNames(source).forEach(function (propertyName) {\n        proxyProperty(source, wrapper, target, propertyName);\n    });\n}\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n    if (propertyName in wrapper) {\n        // Skip any properties already set.\n        return;\n    }\n    else if (propertyName.match(/^on[a-z]+$/)) {\n        Object.defineProperty(wrapper, propertyName, {\n            value: null,\n            writable: true\n        });\n        target.addEventListener(propertyName.slice(2), function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return wrapper.dispatchEvent.apply(wrapper, __spreadArray([], __read(args), false));\n        });\n        return;\n    }\n    Object.defineProperty(wrapper, propertyName, {\n        enumerable: true,\n        get: function () {\n            return target[propertyName];\n        }\n    });\n}\n/**\n * Check whether native WebRTC APIs are supported.\n * @returns {boolean}\n */\nfunction support() {\n    return typeof navigator === 'object'\n        && typeof navigator.mediaDevices === 'object'\n        && typeof navigator.mediaDevices.getUserMedia === 'function'\n        && typeof RTCPeerConnection === 'function';\n}\n/**\n * Create a Set of supported codecs for a certain kind of media.\n * @param {'audio'|'video'} kind\n * @returns {Promise<Set<AudioCodec|VideoCodec>>}\n */\nfunction createSupportedCodecsSet(kind) {\n    if (typeof RTCRtpSender !== 'undefined'\n        && typeof RTCRtpSender.getCapabilities === 'function') {\n        return Promise.resolve(new Set(RTCRtpSender\n            .getCapabilities(kind)\n            .codecs\n            .map(function (_a) {\n            var mimeType = _a.mimeType;\n            return mimeType.split('/')[1].toLowerCase();\n        })));\n    }\n    if (typeof RTCPeerConnection === 'undefined'\n        || typeof RTCPeerConnection.prototype === 'undefined'\n        || typeof RTCPeerConnection.prototype.addTransceiver !== 'function'\n        || typeof RTCPeerConnection.prototype.close !== 'function'\n        || typeof RTCPeerConnection.prototype.createOffer !== 'function') {\n        return Promise.resolve(new Set());\n    }\n    var pc = new RTCPeerConnection();\n    pc.addTransceiver(kind);\n    return pc.createOffer().then(function (_a) {\n        var sdp = _a.sdp;\n        pc.close();\n        return new Set((sdp.match(/^a=rtpmap:.+$/gm) || [])\n            .map(function (line) { return line.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase(); }));\n    }, function () {\n        pc.close();\n        return new Set();\n    });\n}\n// NOTE(mmalavalli): Cache the supported audio and video codecs here.\nvar supportedCodecs = new Map();\n/**\n * Check whether a given codec for a certain kind of media is supported.\n * @param {AudioCodec|VideoCodec} codec\n * @param {'audio'|'video'} kind\n * @returns {Promise<boolean>}\n */\nfunction isCodecSupported(codec, kind) {\n    var codecs = supportedCodecs.get(kind);\n    if (codecs) {\n        return Promise.resolve(codecs.has(codec.toLowerCase()));\n    }\n    return createSupportedCodecsSet(kind).then(function (codecs) {\n        supportedCodecs.set(kind, codecs);\n        return codecs.has(codec.toLowerCase());\n    });\n}\n/**\n * Clear cached supported codecs (unit tests only).\n */\nfunction clearCachedSupportedCodecs() {\n    supportedCodecs.clear();\n}\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\nexports.clearCachedSupportedCodecs = clearCachedSupportedCodecs;\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.difference = difference;\nexports.flatMap = flatMap;\nexports.guessBrowser = guessBrowser;\nexports.guessBrowserVersion = guessBrowserVersion;\nexports.isCodecSupported = isCodecSupported;\nexports.isIOSChrome = isIOSChrome;\nexports.interceptEvent = interceptEvent;\nexports.legacyPromise = legacyPromise;\nexports.makeUUID = makeUUID;\nexports.proxyProperties = proxyProperties;\nexports.support = support;\n\n},{}],186:[function(require,module,exports){\n'use strict';\nvar defer = require('./').defer;\nvar states = {\n    high: new Set(['low']),\n    low: new Set(['high'])\n};\n/**\n * Construct a {@link Latch}.\n * @class\n * @classdesc A {@link Latch} has two states (\"high\" and \"low\") and methods for\n * transitioning between them ({@link Latch#raise} and {@link Latch#lower}).\n * @param {string} [initialState=\"low\"] - either \"high\" or \"low\"\n */\nvar Latch = /** @class */ (function () {\n    function Latch(initialState) {\n        if (initialState === void 0) { initialState = 'low'; }\n        var state = initialState;\n        Object.defineProperties(this, {\n            _state: {\n                set: function (_state) {\n                    var _this = this;\n                    if (state !== _state) {\n                        state = _state;\n                        var whenDeferreds = this._whenDeferreds.get(state);\n                        whenDeferreds.forEach(function (deferred) { return deferred.resolve(_this); });\n                        whenDeferreds.clear();\n                    }\n                },\n                get: function () {\n                    return state;\n                }\n            },\n            _whenDeferreds: {\n                value: new Map([\n                    ['high', new Set()],\n                    ['low', new Set()]\n                ])\n            }\n        });\n    }\n    Object.defineProperty(Latch.prototype, \"state\", {\n        get: function () {\n            return this._state;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Transition to \"low\".\n     * @returns {this}\n     * @throws {Error}\n     */\n    Latch.prototype.lower = function () {\n        return this.transition('low');\n    };\n    /**\n     * Transition to \"high\".\n     * @returns {this}\n     * @throws {Error}\n     */\n    Latch.prototype.raise = function () {\n        return this.transition('high');\n    };\n    /**\n     * Transition to a new state.\n     * @param {string} newState\n     * @returns {this}\n     * @throws {Error}\n     */\n    Latch.prototype.transition = function (newState) {\n        if (!states[this.state].has(newState)) {\n            throw createUnreachableStateError(this.state, newState);\n        }\n        this._state = newState;\n        return this;\n    };\n    /**\n     * Return a Promise that resolves when the {@link Latch} transitions to\n     * the specified state.\n     * @param {string} state\n     * @returns {Promise<this>}\n     */\n    Latch.prototype.when = function (state) {\n        if (this.state === state) {\n            return Promise.resolve(this);\n        }\n        if (!states[this.state].has(state)) {\n            return Promise.reject(createUnreachableStateError(this.state, state));\n        }\n        var deferred = defer();\n        this._whenDeferreds.get(state).add(deferred);\n        return deferred.promise;\n    };\n    return Latch;\n}());\n/**\n   * Create an unreachable state Error.\n   * @param {string} from - state to be transitioned from\n   * @param {string} to - state to be transitioned to\n   * @return {Error}\n   */\nfunction createUnreachableStateError(from, to) {\n    return new Error(\"Cannot transition from \\\"\".concat(from, \"\\\" to \\\"\").concat(to, \"\\\"\"));\n}\nmodule.exports = Latch;\n\n},{\"./\":185}],187:[function(require,module,exports){\n/* globals RTCPeerConnection, RTCRtpTransceiver */\n'use strict';\nvar _a = require('./'), flatMap = _a.flatMap, guessBrowser = _a.guessBrowser;\n// NOTE(mmalavalli): We cache Chrome's sdpSemantics support in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar isSdpSemanticsSupported = null;\n/**\n * Check if Chrome supports specifying sdpSemantics for an RTCPeerConnection.\n * @return {boolean}\n */\nfunction checkIfSdpSemanticsIsSupported() {\n    if (typeof isSdpSemanticsSupported === 'boolean') {\n        return isSdpSemanticsSupported;\n    }\n    if (typeof RTCPeerConnection === 'undefined') {\n        isSdpSemanticsSupported = false;\n        return isSdpSemanticsSupported;\n    }\n    try {\n        // eslint-disable-next-line no-new\n        new RTCPeerConnection({ sdpSemantics: 'foo' });\n        isSdpSemanticsSupported = false;\n    }\n    catch (e) {\n        isSdpSemanticsSupported = true;\n    }\n    return isSdpSemanticsSupported;\n}\n// NOTE(mmalavalli): We cache Chrome's SDP format in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar chromeSdpFormat = null;\n/**\n * Clear cached Chrome's SDP format\n */\nfunction clearChromeCachedSdpFormat() {\n    chromeSdpFormat = null;\n}\n/**\n * Get Chrome's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getChromeDefaultSdpFormat() {\n    if (!chromeSdpFormat) {\n        if (typeof RTCPeerConnection !== 'undefined'\n            && 'addTransceiver' in RTCPeerConnection.prototype) {\n            var pc = new RTCPeerConnection();\n            try {\n                pc.addTransceiver('audio');\n                chromeSdpFormat = 'unified';\n            }\n            catch (e) {\n                chromeSdpFormat = 'planb';\n            }\n            pc.close();\n        }\n        else {\n            chromeSdpFormat = 'planb';\n        }\n    }\n    return chromeSdpFormat;\n}\n/**\n * Get Chrome's SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getChromeSdpFormat(sdpSemantics) {\n    if (!sdpSemantics || !checkIfSdpSemanticsIsSupported()) {\n        return getChromeDefaultSdpFormat();\n    }\n    return {\n        'plan-b': 'planb',\n        'unified-plan': 'unified'\n    }[sdpSemantics];\n}\n/**\n * Get Safari's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getSafariSdpFormat() {\n    return typeof RTCRtpTransceiver !== 'undefined'\n        && 'currentDirection' in RTCRtpTransceiver.prototype\n        ? 'unified'\n        : 'planb';\n}\n/**\n * Get the browser's default SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getSdpFormat(sdpSemantics) {\n    return {\n        chrome: getChromeSdpFormat(sdpSemantics),\n        firefox: 'unified',\n        safari: getSafariSdpFormat()\n    }[guessBrowser()] || null;\n}\n/**\n * Match a pattern across lines, returning the first capture group for any\n * matches.\n * @param {string} pattern\n * @param {string} lines\n * @returns {Set<string>} matches\n */\nfunction getMatches(pattern, lines) {\n    var matches = lines.match(new RegExp(pattern, 'gm')) || [];\n    return matches.reduce(function (results, line) {\n        var match = line.match(new RegExp(pattern));\n        return match ? results.add(match[1]) : results;\n    }, new Set());\n}\n/**\n * Get a Set of MediaStreamTrack IDs from an SDP.\n * @param {string} pattern\n * @param {string} sdp\n * @returns {Set<string>}\n */\nfunction getTrackIds(pattern, sdp) {\n    return getMatches(pattern, sdp);\n}\n/**\n * Get a Set of MediaStreamTrack IDs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Set<string>} trackIds\n */\nfunction getPlanBTrackIds(sdp) {\n    return getTrackIds('^a=ssrc:[0-9]+ +msid:.+ +(.+) *$', sdp);\n}\n/**\n * Get a Set of MediaStreamTrack IDs from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @returns {Set<string>} trackIds\n */\nfunction getUnifiedPlanTrackIds(sdp) {\n    return getTrackIds('^a=msid:.+ +(.+) *$', sdp);\n}\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set<string>}\n */\nfunction getPlanBSSRCs(sdp, trackId) {\n    var pattern = \"^a=ssrc:([0-9]+) +msid:[^ ]+ +\".concat(trackId, \" *$\");\n    return getMatches(pattern, sdp);\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp -  sdp string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array<string>} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n    if (kind === void 0) { kind = '.*'; }\n    if (direction === void 0) { direction = '.*'; }\n    return sdp.split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\".concat(mediaSection); }).filter(function (mediaSection) {\n        var kindPattern = new RegExp(\"m=\".concat(kind), 'gm');\n        var directionPattern = new RegExp(\"a=\".concat(direction), 'gm');\n        return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n    });\n}\n/**\n * Get the Set of SSRCs announced in a MediaSection.\n * @param {string} mediaSection\n * @returns {Array<string>} ssrcs\n */\nfunction getMediaSectionSSRCs(mediaSection) {\n    return Array.from(getMatches('^a=ssrc:([0-9]+) +.*$', mediaSection));\n}\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set<string>}\n */\nfunction getUnifiedPlanSSRCs(sdp, trackId) {\n    var mediaSections = getMediaSections(sdp);\n    var msidAttrRegExp = new RegExp(\"^a=msid:[^ ]+ +\".concat(trackId, \" *$\"), 'gm');\n    var matchingMediaSections = mediaSections.filter(function (mediaSection) { return mediaSection.match(msidAttrRegExp); });\n    return new Set(flatMap(matchingMediaSections, getMediaSectionSSRCs));\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from an SDP.\n * @param {function(string): Set<string>} getTrackIds\n * @param {function(string, string): Set<string>} getSSRCs\n * @param {string} sdp - SDP\n * @returns {Map<string, Set<string>>} trackIdsToSSRCs\n */\nfunction getTrackIdsToSSRCs(getTrackIds, getSSRCs, sdp) {\n    return new Map(Array.from(getTrackIds(sdp)).map(function (trackId) { return [trackId, getSSRCs(sdp, trackId)]; }));\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map<string, Set<string>>} trackIdsToSSRCs\n */\nfunction getPlanBTrackIdsToSSRCs(sdp) {\n    return getTrackIdsToSSRCs(getPlanBTrackIds, getPlanBSSRCs, sdp);\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map<string, Set<string>>} trackIdsToSSRCs\n */\nfunction getUnifiedPlanTrackIdsToSSRCs(sdp) {\n    return getTrackIdsToSSRCs(getUnifiedPlanTrackIds, getUnifiedPlanSSRCs, sdp);\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {function(string): Map<string, Set<string>>} getTrackIdsToSSRCs\n * @param {Map<string, Set<string>>} trackIdsToSSRCs\n * @param {string} sdp - SDP\n * @returns {strinng} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(getTrackIdsToSSRCs, trackIdsToSSRCs, sdp) {\n    var newTrackIdsToSSRCs = getTrackIdsToSSRCs(sdp);\n    var newSSRCsToOldSSRCs = new Map();\n    // NOTE(mroberts): First, update a=ssrc attributes.\n    newTrackIdsToSSRCs.forEach(function (ssrcs, trackId) {\n        if (!trackIdsToSSRCs.has(trackId)) {\n            trackIdsToSSRCs.set(trackId, ssrcs);\n            return;\n        }\n        var oldSSRCs = Array.from(trackIdsToSSRCs.get(trackId));\n        var newSSRCs = Array.from(ssrcs);\n        oldSSRCs.forEach(function (oldSSRC, i) {\n            var newSSRC = newSSRCs[i];\n            newSSRCsToOldSSRCs.set(newSSRC, oldSSRC);\n            var pattern = \"^a=ssrc:\".concat(newSSRC, \" (.*)$\");\n            var replacement = \"a=ssrc:\".concat(oldSSRC, \" $1\");\n            sdp = sdp.replace(new RegExp(pattern, 'gm'), replacement);\n        });\n    });\n    // NOTE(mroberts): Then, update a=ssrc-group attributes.\n    var pattern = '^(a=ssrc-group:[^ ]+ +)(.*)$';\n    var matches = sdp.match(new RegExp(pattern, 'gm')) || [];\n    matches.forEach(function (line) {\n        var match = line.match(new RegExp(pattern));\n        if (!match) {\n            return;\n        }\n        var prefix = match[1];\n        var newSSRCs = match[2];\n        var oldSSRCs = newSSRCs.split(' ').map(function (newSSRC) {\n            var oldSSRC = newSSRCsToOldSSRCs.get(newSSRC);\n            return oldSSRC ? oldSSRC : newSSRC;\n        }).join(' ');\n        sdp = sdp.replace(match[0], prefix + oldSSRCs);\n    });\n    return sdp;\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map<string, Set<string>>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updatePlanBTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n    return updateTrackIdsToSSRCs(getPlanBTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map<string, Set<string>>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updateUnifiedPlanTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n    return updateTrackIdsToSSRCs(getUnifiedPlanTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\nexports.clearChromeCachedSdpFormat = clearChromeCachedSdpFormat;\nexports.getSdpFormat = getSdpFormat;\nexports.getMediaSections = getMediaSections;\nexports.getPlanBTrackIds = getPlanBTrackIds;\nexports.getUnifiedPlanTrackIds = getUnifiedPlanTrackIds;\nexports.getPlanBSSRCs = getPlanBSSRCs;\nexports.getUnifiedPlanSSRCs = getUnifiedPlanSSRCs;\nexports.updatePlanBTrackIdsToSSRCs = updatePlanBTrackIdsToSSRCs;\nexports.updateUnifiedPlanTrackIdsToSSRCs = updateUnifiedPlanTrackIdsToSSRCs;\n\n},{\"./\":185}],188:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n\n},{}],189:[function(require,module,exports){\nmodule.exports={\n  \"name\": \"twilio-video\",\n  \"title\": \"Twilio Video\",\n  \"description\": \"Twilio Video JavaScript Library\",\n  \"version\": \"2.33.0\",\n  \"homepage\": \"https://twilio.com\",\n  \"author\": \"Mark Andrus Roberts <mroberts@twilio.com>\",\n  \"contributors\": [\n    \"Ryan Rowland <rrowland@twilio.com>\",\n    \"Manjesh Malavalli <mmalavalli@twilio.com>\",\n    \"Makarand Patwardhan <mpatwardhan@twilio.com>\",\n    \"Luis Rivas <lrivas@twilio.com>\"\n  ],\n  \"keywords\": [\n    \"twilio\",\n    \"webrtc\",\n    \"library\",\n    \"javascript\",\n    \"video\",\n    \"rooms\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/twilio/twilio-video.js.git\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"^7.14.2\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.18.6\",\n    \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n    \"@babel/preset-env\": \"^7.14.2\",\n    \"@babel/preset-typescript\": \"^7.13.0\",\n    \"@eslint/js\": \"^9.20.0\",\n    \"@stylistic/eslint-plugin\": \"^2.12.1\",\n    \"@types/express\": \"^4.17.21\",\n    \"@types/mocha\": \"^10.0.10\",\n    \"@types/node\": \"^24.7.2\",\n    \"@types/selenium-webdriver\": \"^3.0.8\",\n    \"@types/sinon\": \"^17.0.4\",\n    \"@types/ws\": \"^8.5.10\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.18.2\",\n    \"@typescript-eslint/parser\": \"^8.18.2\",\n    \"browserify\": \"^17.0.1\",\n    \"cheerio\": \"^0.22.0\",\n    \"cors\": \"^2.8.5\",\n    \"electron\": \"^17.2.0\",\n    \"envify\": \"^4.0.0\",\n    \"eslint\": \"^9.37.0\",\n    \"eslint-plugin-import\": \"^2.29.1\",\n    \"eslint-plugin-n\": \"^16.6.2\",\n    \"eslint-plugin-promise\": \"^6.6.0\",\n    \"express\": \"^4.16.2\",\n    \"glob\": \"^7.1.7\",\n    \"globals\": \"^15.14.0\",\n    \"ink-docstrap\": \"^1.3.2\",\n    \"inquirer\": \"^7.0.0\",\n    \"is-docker\": \"^2.0.0\",\n    \"jsdoc\": \"^3.5.5\",\n    \"jsdoc-babel\": \"^0.5.0\",\n    \"json-loader\": \"^0.5.7\",\n    \"karma\": \"^6.4.4\",\n    \"karma-browserify\": \"^8.0.0\",\n    \"karma-chrome-launcher\": \"^2.0.0\",\n    \"karma-edgium-launcher\": \"^4.0.0-0\",\n    \"karma-electron\": \"^6.1.0\",\n    \"karma-firefox-launcher\": \"^2.1.3\",\n    \"karma-htmlfile-reporter\": \"^0.3.8\",\n    \"karma-junit-reporter\": \"^1.2.0\",\n    \"karma-mocha\": \"^2.0.1\",\n    \"karma-safari-launcher\": \"^1.0.0\",\n    \"karma-spec-reporter\": \"0.0.32\",\n    \"karma-typescript\": \"^5.5.1\",\n    \"karma-typescript-es6-transform\": \"^5.5.1\",\n    \"mocha\": \"^10.8.2\",\n    \"mock-require\": \"^3.0.3\",\n    \"ncp\": \"^2.0.0\",\n    \"node-http-server\": \"^8.1.2\",\n    \"npm-run-all\": \"^4.1.5\",\n    \"nyc\": \"^15.1.0\",\n    \"regex-replace\": \"^2.3.1\",\n    \"requirejs\": \"^2.3.3\",\n    \"rimraf\": \"^2.6.1\",\n    \"simple-git\": \"^1.126.0\",\n    \"sinon\": \"^4.0.1\",\n    \"ts-node\": \"^10.9.2\",\n    \"twilio\": \"^3.49.0\",\n    \"twilio-release-tool\": \"^1.0.2\",\n    \"typescript\": \"5.9.3\",\n    \"uglify-js\": \"^2.8.22\",\n    \"vinyl-fs\": \"^2.4.4\",\n    \"vinyl-source-stream\": \"^1.1.0\",\n    \"watchify\": \"^4.0.0\",\n    \"webrtc-adapter\": \"^7.7.1\"\n  },\n  \"engines\": {\n    \"node\": \">=22\"\n  },\n  \"license\": \"BSD-3-Clause\",\n  \"main\": \"./es5/index.js\",\n  \"types\": \"./tsdef/index.d.ts\",\n  \"scripts\": {\n    \"lint:js\": \"eslint ./lib ./test/*.js ./docker/**/*.js ./test/framework/*.js ./test/lib/*.js ./test/integration/** ./test/unit/** \",\n    \"lint:ts\": \"eslint ./tsdef/*.ts ./lib/**/*.ts\",\n    \"lint\": \"npm-run-all lint:js lint:ts\",\n    \"patch-linkifyit-111\": \"regex-replace \\\"readonly linkify: LinkifyIt.LinkifyIt;\\\" \\\"readonly linkify: typeof LinkifyIt;\\\" \\\"node_modules/@types/markdown-it/lib/index.d.ts\\\" --filecontents\",\n    \"printVersion\": \"node --version && npm --version\",\n    \"test:unit\": \"npm-run-all printVersion build:es5 && nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov --reporter=text mocha -r ts-node/register/transpile-only --exit ./test/unit/*\",\n    \"test:unit:quick\": \"nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov mocha -r ts-node/register/transpile-only --exit\",\n    \"test:serversiderender\": \"mocha --exit ./test/serversiderender/index.js\",\n    \"test:integration:adapter\": \"node ./scripts/karma.js karma/integration.adapter.conf.js\",\n    \"test:integration\": \"npm run build:es5 && node ./scripts/karma.js karma/integration.conf.js\",\n    \"test:umd:install\": \"npm install puppeteer@19.2.2\",\n    \"test:umd\": \"mocha --exit ./test/umd/index.js\",\n    \"test:crossbrowser:build:clean\": \"rimraf ./test/crossbrowser/lib ./test/crossbrowser/src/browser/index.js\",\n    \"test:crossbrowser:build:lint\": \"cd ./test/crossbrowser && eslint '**/*.ts'\",\n    \"test:crossbrowser:build:tsc\": \"cd ./test/crossbrowser && tsc\",\n    \"test:crossbrowser:build:browser\": \"cd ./test/crossbrowser && browserify lib/crossbrowser/src/browser/index.js > src/browser/index.js\",\n    \"test:crossbrowser:build\": \"npm-run-all test:crossbrowser:build:*\",\n    \"test:crossbrowser:test\": \"cd ./test/crossbrowser && mocha -r ts-node/register/transpile-only --exit test/integration/spec/**/*.ts\",\n    \"test:crossbrowser\": \"npm-run-all test:crossbrowser:*\",\n    \"test:sdkdriver:build:clean\": \"rimraf ./test/lib/sdkdriver/lib ./test/lib/sdkdriver/test/integration/browser/index.js\",\n    \"test:sdkdriver:build:lint\": \"cd ./test/lib/sdkdriver && eslint '**/*.ts'\",\n    \"test:sdkdriver:build:tsc\": \"cd ./test/lib/sdkdriver && tsc --rootDir src\",\n    \"test:sdkdriver:build\": \"npm-run-all test:sdkdriver:build:*\",\n    \"test:sdkdriver:test:unit\": \"cd ./test/lib/sdkdriver && mocha -r ts-node/register/transpile-only --exit test/unit/spec/**/*.ts\",\n    \"test:sdkdriver:test:integration:browser\": \"cd ./test/lib/sdkdriver/test/integration && browserify browser/browser.js > browser/index.js\",\n    \"test:sdkdriver:test:integration:run\": \"cd ./test/lib/sdkdriver && mocha -r ts-node/register/transpile-only --exit test/integration/spec/**/*.ts\",\n    \"test:sdkdriver:test:integration\": \"npm-run-all test:sdkdriver:test:integration:*\",\n    \"test:sdkdriver:test\": \"npm-run-all test:sdkdriver:test:*\",\n    \"test:sdkdriver\": \"npm-run-all test:sdkdriver:*\",\n    \"test:framework:angular:install\": \"cd ./test/framework/twilio-video-angular && rimraf ./node_modules package-lock.json && npm install\",\n    \"test:framework:angular:run\": \"mocha ./test/framework/twilio-video-angular.js\",\n    \"test:framework:angular\": \"npm-run-all test:framework:angular:*\",\n    \"test:framework:no-framework:run\": \"mocha ./test/framework/twilio-video-no-framework.js\",\n    \"test:framework:no-framework\": \"npm-run-all test:framework:no-framework:*\",\n    \"test:framework:react:install\": \"cd ./test/framework/twilio-video-react && rimraf ./node_modules package-lock.json && npm install\",\n    \"test:framework:react:test\": \"node ./scripts/framework.js twilio-video-react\",\n    \"test:framework:react:build\": \"cd ./test/framework/twilio-video-react && npm run build\",\n    \"test:framework:react:run\": \"mocha ./test/framework/twilio-video-react.js\",\n    \"test:framework:react\": \"npm-run-all test:framework:react:*\",\n    \"test:framework:install\": \"npm install chromedriver && npm install selenium-webdriver && npm install geckodriver && npm install puppeteer\",\n    \"test:framework\": \"npm-run-all test:framework:install test:framework:no-framework test:framework:react\",\n    \"test\": \"npm-run-all test:unit test:integration\",\n    \"build:es5\": \"rimraf ./es5 && mkdir -p es5 && npm run patch-linkifyit-111 && tsc tsdef/twilio-video-tests.ts --noEmit --lib es2018,dom && tsc\",\n    \"build:js\": \"node ./scripts/build.js ./src/twilio-video.js ./LICENSE.md ./dist/twilio-video.js\",\n    \"build:min.js\": \"uglifyjs ./dist/twilio-video.js -o ./dist/twilio-video.min.js --comments \\\"/^! twilio-video.js/\\\" -b beautify=false,ascii_only=true\",\n    \"build\": \"npm-run-all clean lint docs test:unit test:integration build:es5 build:js build:min.js test:umd\",\n    \"build:quick\": \"npm-run-all clean lint docs build:es5 build:js build:min.js\",\n    \"docs\": \"node ./scripts/docs.js ./dist/docs\",\n    \"watch\": \"tsc -w\",\n    \"clean\": \"rimraf ./coverage ./es5 ./dist\"\n  },\n  \"dependencies\": {\n    \"events\": \"^3.3.0\",\n    \"util\": \"^0.12.4\",\n    \"ws\": \"^8.18.3\"\n  },\n  \"browser\": {\n    \"ws\": \"./src/ws.js\"\n  }\n}\n\n},{}],190:[function(require,module,exports){\nmodule.exports = WebSocket;\n\n},{}]},{},[12]);\n;\n  var Video = bundle(12);\n  /* globals define */\n  if (typeof define === 'function' && define.amd) {\n    define([], function() { return Video; });\n  } else {\n    var Twilio = root.Twilio = root.Twilio || {};\n    Twilio.Video = Twilio.Video || Video;\n  }\n})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : this);\n\nvar luxon = (function (exports) {\n  'use strict';\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n    }\n  }\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n  function _extends() {\n    _extends = Object.assign ? Object.assign.bind() : function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n      return target;\n    };\n    return _extends.apply(this, arguments);\n  }\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    _setPrototypeOf(subClass, superClass);\n  }\n  function _getPrototypeOf(o) {\n    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n      return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return _getPrototypeOf(o);\n  }\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n    return _setPrototypeOf(o, p);\n  }\n  function _isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n  function _construct(Parent, args, Class) {\n    if (_isNativeReflectConstruct()) {\n      _construct = Reflect.construct.bind();\n    } else {\n      _construct = function _construct(Parent, args, Class) {\n        var a = [null];\n        a.push.apply(a, args);\n        var Constructor = Function.bind.apply(Parent, a);\n        var instance = new Constructor();\n        if (Class) _setPrototypeOf(instance, Class.prototype);\n        return instance;\n      };\n    }\n    return _construct.apply(null, arguments);\n  }\n  function _isNativeFunction(fn) {\n    return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n  }\n  function _wrapNativeSuper(Class) {\n    var _cache = typeof Map === \"function\" ? new Map() : undefined;\n    _wrapNativeSuper = function _wrapNativeSuper(Class) {\n      if (Class === null || !_isNativeFunction(Class)) return Class;\n      if (typeof Class !== \"function\") {\n        throw new TypeError(\"Super expression must either be null or a function\");\n      }\n      if (typeof _cache !== \"undefined\") {\n        if (_cache.has(Class)) return _cache.get(Class);\n        _cache.set(Class, Wrapper);\n      }\n      function Wrapper() {\n        return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n      }\n      Wrapper.prototype = Object.create(Class.prototype, {\n        constructor: {\n          value: Wrapper,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      });\n      return _setPrototypeOf(Wrapper, Class);\n    };\n    return _wrapNativeSuper(Class);\n  }\n  function _objectWithoutPropertiesLoose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for (i = 0; i < sourceKeys.length; i++) {\n      key = sourceKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      target[key] = source[key];\n    }\n    return target;\n  }\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n    return arr2;\n  }\n  function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n    if (it) return (it = it.call(o)).next.bind(it);\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      return function () {\n        if (i >= o.length) return {\n          done: true\n        };\n        return {\n          done: false,\n          value: o[i++]\n        };\n      };\n    }\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n  function _toPrimitive(input, hint) {\n    if (typeof input !== \"object\" || input === null) return input;\n    var prim = input[Symbol.toPrimitive];\n    if (prim !== undefined) {\n      var res = prim.call(input, hint || \"default\");\n      if (typeof res !== \"object\") return res;\n      throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n    }\n    return (hint === \"string\" ? String : Number)(input);\n  }\n  function _toPropertyKey(arg) {\n    var key = _toPrimitive(arg, \"string\");\n    return typeof key === \"symbol\" ? key : String(key);\n  }\n\n  // these aren't really private, but nor are they really useful to document\n  /**\n   * @private\n   */\n  var LuxonError = /*#__PURE__*/function (_Error) {\n    _inheritsLoose(LuxonError, _Error);\n    function LuxonError() {\n      return _Error.apply(this, arguments) || this;\n    }\n    return LuxonError;\n  }( /*#__PURE__*/_wrapNativeSuper(Error));\n  /**\n   * @private\n   */\n  var InvalidDateTimeError = /*#__PURE__*/function (_LuxonError) {\n    _inheritsLoose(InvalidDateTimeError, _LuxonError);\n    function InvalidDateTimeError(reason) {\n      return _LuxonError.call(this, \"Invalid DateTime: \" + reason.toMessage()) || this;\n    }\n    return InvalidDateTimeError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n  var InvalidIntervalError = /*#__PURE__*/function (_LuxonError2) {\n    _inheritsLoose(InvalidIntervalError, _LuxonError2);\n    function InvalidIntervalError(reason) {\n      return _LuxonError2.call(this, \"Invalid Interval: \" + reason.toMessage()) || this;\n    }\n    return InvalidIntervalError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n  var InvalidDurationError = /*#__PURE__*/function (_LuxonError3) {\n    _inheritsLoose(InvalidDurationError, _LuxonError3);\n    function InvalidDurationError(reason) {\n      return _LuxonError3.call(this, \"Invalid Duration: \" + reason.toMessage()) || this;\n    }\n    return InvalidDurationError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n  var ConflictingSpecificationError = /*#__PURE__*/function (_LuxonError4) {\n    _inheritsLoose(ConflictingSpecificationError, _LuxonError4);\n    function ConflictingSpecificationError() {\n      return _LuxonError4.apply(this, arguments) || this;\n    }\n    return ConflictingSpecificationError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n  var InvalidUnitError = /*#__PURE__*/function (_LuxonError5) {\n    _inheritsLoose(InvalidUnitError, _LuxonError5);\n    function InvalidUnitError(unit) {\n      return _LuxonError5.call(this, \"Invalid unit \" + unit) || this;\n    }\n    return InvalidUnitError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n  var InvalidArgumentError = /*#__PURE__*/function (_LuxonError6) {\n    _inheritsLoose(InvalidArgumentError, _LuxonError6);\n    function InvalidArgumentError() {\n      return _LuxonError6.apply(this, arguments) || this;\n    }\n    return InvalidArgumentError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n  var ZoneIsAbstractError = /*#__PURE__*/function (_LuxonError7) {\n    _inheritsLoose(ZoneIsAbstractError, _LuxonError7);\n    function ZoneIsAbstractError() {\n      return _LuxonError7.call(this, \"Zone is an abstract class\") || this;\n    }\n    return ZoneIsAbstractError;\n  }(LuxonError);\n\n  /**\n   * @private\n   */\n\n  var n = \"numeric\",\n    s = \"short\",\n    l = \"long\";\n  var DATE_SHORT = {\n    year: n,\n    month: n,\n    day: n\n  };\n  var DATE_MED = {\n    year: n,\n    month: s,\n    day: n\n  };\n  var DATE_MED_WITH_WEEKDAY = {\n    year: n,\n    month: s,\n    day: n,\n    weekday: s\n  };\n  var DATE_FULL = {\n    year: n,\n    month: l,\n    day: n\n  };\n  var DATE_HUGE = {\n    year: n,\n    month: l,\n    day: n,\n    weekday: l\n  };\n  var TIME_SIMPLE = {\n    hour: n,\n    minute: n\n  };\n  var TIME_WITH_SECONDS = {\n    hour: n,\n    minute: n,\n    second: n\n  };\n  var TIME_WITH_SHORT_OFFSET = {\n    hour: n,\n    minute: n,\n    second: n,\n    timeZoneName: s\n  };\n  var TIME_WITH_LONG_OFFSET = {\n    hour: n,\n    minute: n,\n    second: n,\n    timeZoneName: l\n  };\n  var TIME_24_SIMPLE = {\n    hour: n,\n    minute: n,\n    hourCycle: \"h23\"\n  };\n  var TIME_24_WITH_SECONDS = {\n    hour: n,\n    minute: n,\n    second: n,\n    hourCycle: \"h23\"\n  };\n  var TIME_24_WITH_SHORT_OFFSET = {\n    hour: n,\n    minute: n,\n    second: n,\n    hourCycle: \"h23\",\n    timeZoneName: s\n  };\n  var TIME_24_WITH_LONG_OFFSET = {\n    hour: n,\n    minute: n,\n    second: n,\n    hourCycle: \"h23\",\n    timeZoneName: l\n  };\n  var DATETIME_SHORT = {\n    year: n,\n    month: n,\n    day: n,\n    hour: n,\n    minute: n\n  };\n  var DATETIME_SHORT_WITH_SECONDS = {\n    year: n,\n    month: n,\n    day: n,\n    hour: n,\n    minute: n,\n    second: n\n  };\n  var DATETIME_MED = {\n    year: n,\n    month: s,\n    day: n,\n    hour: n,\n    minute: n\n  };\n  var DATETIME_MED_WITH_SECONDS = {\n    year: n,\n    month: s,\n    day: n,\n    hour: n,\n    minute: n,\n    second: n\n  };\n  var DATETIME_MED_WITH_WEEKDAY = {\n    year: n,\n    month: s,\n    day: n,\n    weekday: s,\n    hour: n,\n    minute: n\n  };\n  var DATETIME_FULL = {\n    year: n,\n    month: l,\n    day: n,\n    hour: n,\n    minute: n,\n    timeZoneName: s\n  };\n  var DATETIME_FULL_WITH_SECONDS = {\n    year: n,\n    month: l,\n    day: n,\n    hour: n,\n    minute: n,\n    second: n,\n    timeZoneName: s\n  };\n  var DATETIME_HUGE = {\n    year: n,\n    month: l,\n    day: n,\n    weekday: l,\n    hour: n,\n    minute: n,\n    timeZoneName: l\n  };\n  var DATETIME_HUGE_WITH_SECONDS = {\n    year: n,\n    month: l,\n    day: n,\n    weekday: l,\n    hour: n,\n    minute: n,\n    second: n,\n    timeZoneName: l\n  };\n\n  /**\n   * @interface\n   */\n  var Zone = /*#__PURE__*/function () {\n    function Zone() {}\n    var _proto = Zone.prototype;\n    /**\n     * Returns the offset's common name (such as EST) at the specified timestamp\n     * @abstract\n     * @param {number} ts - Epoch milliseconds for which to get the name\n     * @param {Object} opts - Options to affect the format\n     * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n     * @param {string} opts.locale - What locale to return the offset name in.\n     * @return {string}\n     */\n    _proto.offsetName = function offsetName(ts, opts) {\n      throw new ZoneIsAbstractError();\n    }\n\n    /**\n     * Returns the offset's value as a string\n     * @abstract\n     * @param {number} ts - Epoch milliseconds for which to get the offset\n     * @param {string} format - What style of offset to return.\n     *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n     * @return {string}\n     */;\n    _proto.formatOffset = function formatOffset(ts, format) {\n      throw new ZoneIsAbstractError();\n    }\n\n    /**\n     * Return the offset in minutes for this zone at the specified timestamp.\n     * @abstract\n     * @param {number} ts - Epoch milliseconds for which to compute the offset\n     * @return {number}\n     */;\n    _proto.offset = function offset(ts) {\n      throw new ZoneIsAbstractError();\n    }\n\n    /**\n     * Return whether this Zone is equal to another zone\n     * @abstract\n     * @param {Zone} otherZone - the zone to compare\n     * @return {boolean}\n     */;\n    _proto.equals = function equals(otherZone) {\n      throw new ZoneIsAbstractError();\n    }\n\n    /**\n     * Return whether this Zone is valid.\n     * @abstract\n     * @type {boolean}\n     */;\n    _createClass(Zone, [{\n      key: \"type\",\n      get:\n      /**\n       * The type of zone\n       * @abstract\n       * @type {string}\n       */\n      function get() {\n        throw new ZoneIsAbstractError();\n      }\n\n      /**\n       * The name of this zone.\n       * @abstract\n       * @type {string}\n       */\n    }, {\n      key: \"name\",\n      get: function get() {\n        throw new ZoneIsAbstractError();\n      }\n\n      /**\n       * The IANA name of this zone.\n       * Defaults to `name` if not overwritten by a subclass.\n       * @abstract\n       * @type {string}\n       */\n    }, {\n      key: \"ianaName\",\n      get: function get() {\n        return this.name;\n      }\n\n      /**\n       * Returns whether the offset is known to be fixed for the whole year.\n       * @abstract\n       * @type {boolean}\n       */\n    }, {\n      key: \"isUniversal\",\n      get: function get() {\n        throw new ZoneIsAbstractError();\n      }\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        throw new ZoneIsAbstractError();\n      }\n    }]);\n    return Zone;\n  }();\n\n  var singleton$1 = null;\n\n  /**\n   * Represents the local zone for this JavaScript environment.\n   * @implements {Zone}\n   */\n  var SystemZone = /*#__PURE__*/function (_Zone) {\n    _inheritsLoose(SystemZone, _Zone);\n    function SystemZone() {\n      return _Zone.apply(this, arguments) || this;\n    }\n    var _proto = SystemZone.prototype;\n    /** @override **/\n    _proto.offsetName = function offsetName(ts, _ref) {\n      var format = _ref.format,\n        locale = _ref.locale;\n      return parseZoneInfo(ts, format, locale);\n    }\n\n    /** @override **/;\n    _proto.formatOffset = function formatOffset$1(ts, format) {\n      return formatOffset(this.offset(ts), format);\n    }\n\n    /** @override **/;\n    _proto.offset = function offset(ts) {\n      return -new Date(ts).getTimezoneOffset();\n    }\n\n    /** @override **/;\n    _proto.equals = function equals(otherZone) {\n      return otherZone.type === \"system\";\n    }\n\n    /** @override **/;\n    _createClass(SystemZone, [{\n      key: \"type\",\n      get: /** @override **/\n      function get() {\n        return \"system\";\n      }\n\n      /** @override **/\n    }, {\n      key: \"name\",\n      get: function get() {\n        return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n      }\n\n      /** @override **/\n    }, {\n      key: \"isUniversal\",\n      get: function get() {\n        return false;\n      }\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return true;\n      }\n    }], [{\n      key: \"instance\",\n      get:\n      /**\n       * Get a singleton instance of the local zone\n       * @return {SystemZone}\n       */\n      function get() {\n        if (singleton$1 === null) {\n          singleton$1 = new SystemZone();\n        }\n        return singleton$1;\n      }\n    }]);\n    return SystemZone;\n  }(Zone);\n\n  var dtfCache = new Map();\n  function makeDTF(zoneName) {\n    var dtf = dtfCache.get(zoneName);\n    if (dtf === undefined) {\n      dtf = new Intl.DateTimeFormat(\"en-US\", {\n        hour12: false,\n        timeZone: zoneName,\n        year: \"numeric\",\n        month: \"2-digit\",\n        day: \"2-digit\",\n        hour: \"2-digit\",\n        minute: \"2-digit\",\n        second: \"2-digit\",\n        era: \"short\"\n      });\n      dtfCache.set(zoneName, dtf);\n    }\n    return dtf;\n  }\n  var typeToPos = {\n    year: 0,\n    month: 1,\n    day: 2,\n    era: 3,\n    hour: 4,\n    minute: 5,\n    second: 6\n  };\n  function hackyOffset(dtf, date) {\n    var formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n      parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n      fMonth = parsed[1],\n      fDay = parsed[2],\n      fYear = parsed[3],\n      fadOrBc = parsed[4],\n      fHour = parsed[5],\n      fMinute = parsed[6],\n      fSecond = parsed[7];\n    return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n  }\n  function partsOffset(dtf, date) {\n    var formatted = dtf.formatToParts(date);\n    var filled = [];\n    for (var i = 0; i < formatted.length; i++) {\n      var _formatted$i = formatted[i],\n        type = _formatted$i.type,\n        value = _formatted$i.value;\n      var pos = typeToPos[type];\n      if (type === \"era\") {\n        filled[pos] = value;\n      } else if (!isUndefined(pos)) {\n        filled[pos] = parseInt(value, 10);\n      }\n    }\n    return filled;\n  }\n  var ianaZoneCache = new Map();\n  /**\n   * A zone identified by an IANA identifier, like America/New_York\n   * @implements {Zone}\n   */\n  var IANAZone = /*#__PURE__*/function (_Zone) {\n    _inheritsLoose(IANAZone, _Zone);\n    /**\n     * @param {string} name - Zone name\n     * @return {IANAZone}\n     */\n    IANAZone.create = function create(name) {\n      var zone = ianaZoneCache.get(name);\n      if (zone === undefined) {\n        ianaZoneCache.set(name, zone = new IANAZone(name));\n      }\n      return zone;\n    }\n\n    /**\n     * Reset local caches. Should only be necessary in testing scenarios.\n     * @return {void}\n     */;\n    IANAZone.resetCache = function resetCache() {\n      ianaZoneCache.clear();\n      dtfCache.clear();\n    }\n\n    /**\n     * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n     * @param {string} s - The string to check validity on\n     * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n     * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n     * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n     * @return {boolean}\n     */;\n    IANAZone.isValidSpecifier = function isValidSpecifier(s) {\n      return this.isValidZone(s);\n    }\n\n    /**\n     * Returns whether the provided string identifies a real zone\n     * @param {string} zone - The string to check\n     * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n     * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n     * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n     * @return {boolean}\n     */;\n    IANAZone.isValidZone = function isValidZone(zone) {\n      if (!zone) {\n        return false;\n      }\n      try {\n        new Intl.DateTimeFormat(\"en-US\", {\n          timeZone: zone\n        }).format();\n        return true;\n      } catch (e) {\n        return false;\n      }\n    };\n    function IANAZone(name) {\n      var _this;\n      _this = _Zone.call(this) || this;\n      /** @private **/\n      _this.zoneName = name;\n      /** @private **/\n      _this.valid = IANAZone.isValidZone(name);\n      return _this;\n    }\n\n    /**\n     * The type of zone. `iana` for all instances of `IANAZone`.\n     * @override\n     * @type {string}\n     */\n    var _proto = IANAZone.prototype;\n    /**\n     * Returns the offset's common name (such as EST) at the specified timestamp\n     * @override\n     * @param {number} ts - Epoch milliseconds for which to get the name\n     * @param {Object} opts - Options to affect the format\n     * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n     * @param {string} opts.locale - What locale to return the offset name in.\n     * @return {string}\n     */\n    _proto.offsetName = function offsetName(ts, _ref) {\n      var format = _ref.format,\n        locale = _ref.locale;\n      return parseZoneInfo(ts, format, locale, this.name);\n    }\n\n    /**\n     * Returns the offset's value as a string\n     * @override\n     * @param {number} ts - Epoch milliseconds for which to get the offset\n     * @param {string} format - What style of offset to return.\n     *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n     * @return {string}\n     */;\n    _proto.formatOffset = function formatOffset$1(ts, format) {\n      return formatOffset(this.offset(ts), format);\n    }\n\n    /**\n     * Return the offset in minutes for this zone at the specified timestamp.\n     * @override\n     * @param {number} ts - Epoch milliseconds for which to compute the offset\n     * @return {number}\n     */;\n    _proto.offset = function offset(ts) {\n      if (!this.valid) return NaN;\n      var date = new Date(ts);\n      if (isNaN(date)) return NaN;\n      var dtf = makeDTF(this.name);\n      var _ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date),\n        year = _ref2[0],\n        month = _ref2[1],\n        day = _ref2[2],\n        adOrBc = _ref2[3],\n        hour = _ref2[4],\n        minute = _ref2[5],\n        second = _ref2[6];\n      if (adOrBc === \"BC\") {\n        year = -Math.abs(year) + 1;\n      }\n\n      // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n      var adjustedHour = hour === 24 ? 0 : hour;\n      var asUTC = objToLocalTS({\n        year: year,\n        month: month,\n        day: day,\n        hour: adjustedHour,\n        minute: minute,\n        second: second,\n        millisecond: 0\n      });\n      var asTS = +date;\n      var over = asTS % 1000;\n      asTS -= over >= 0 ? over : 1000 + over;\n      return (asUTC - asTS) / (60 * 1000);\n    }\n\n    /**\n     * Return whether this Zone is equal to another zone\n     * @override\n     * @param {Zone} otherZone - the zone to compare\n     * @return {boolean}\n     */;\n    _proto.equals = function equals(otherZone) {\n      return otherZone.type === \"iana\" && otherZone.name === this.name;\n    }\n\n    /**\n     * Return whether this Zone is valid.\n     * @override\n     * @type {boolean}\n     */;\n    _createClass(IANAZone, [{\n      key: \"type\",\n      get: function get() {\n        return \"iana\";\n      }\n\n      /**\n       * The name of this zone (i.e. the IANA zone name).\n       * @override\n       * @type {string}\n       */\n    }, {\n      key: \"name\",\n      get: function get() {\n        return this.zoneName;\n      }\n\n      /**\n       * Returns whether the offset is known to be fixed for the whole year:\n       * Always returns false for all IANA zones.\n       * @override\n       * @type {boolean}\n       */\n    }, {\n      key: \"isUniversal\",\n      get: function get() {\n        return false;\n      }\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return this.valid;\n      }\n    }]);\n    return IANAZone;\n  }(Zone);\n\n  var _excluded = [\"base\"],\n    _excluded2 = [\"padTo\", \"floor\"];\n\n  // todo - remap caching\n\n  var intlLFCache = {};\n  function getCachedLF(locString, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    var key = JSON.stringify([locString, opts]);\n    var dtf = intlLFCache[key];\n    if (!dtf) {\n      dtf = new Intl.ListFormat(locString, opts);\n      intlLFCache[key] = dtf;\n    }\n    return dtf;\n  }\n  var intlDTCache = new Map();\n  function getCachedDTF(locString, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    var key = JSON.stringify([locString, opts]);\n    var dtf = intlDTCache.get(key);\n    if (dtf === undefined) {\n      dtf = new Intl.DateTimeFormat(locString, opts);\n      intlDTCache.set(key, dtf);\n    }\n    return dtf;\n  }\n  var intlNumCache = new Map();\n  function getCachedINF(locString, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    var key = JSON.stringify([locString, opts]);\n    var inf = intlNumCache.get(key);\n    if (inf === undefined) {\n      inf = new Intl.NumberFormat(locString, opts);\n      intlNumCache.set(key, inf);\n    }\n    return inf;\n  }\n  var intlRelCache = new Map();\n  function getCachedRTF(locString, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    var _opts = opts;\n      _opts.base;\n      var cacheKeyOpts = _objectWithoutPropertiesLoose(_opts, _excluded); // exclude `base` from the options\n    var key = JSON.stringify([locString, cacheKeyOpts]);\n    var inf = intlRelCache.get(key);\n    if (inf === undefined) {\n      inf = new Intl.RelativeTimeFormat(locString, opts);\n      intlRelCache.set(key, inf);\n    }\n    return inf;\n  }\n  var sysLocaleCache = null;\n  function systemLocale() {\n    if (sysLocaleCache) {\n      return sysLocaleCache;\n    } else {\n      sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n      return sysLocaleCache;\n    }\n  }\n  var intlResolvedOptionsCache = new Map();\n  function getCachedIntResolvedOptions(locString) {\n    var opts = intlResolvedOptionsCache.get(locString);\n    if (opts === undefined) {\n      opts = new Intl.DateTimeFormat(locString).resolvedOptions();\n      intlResolvedOptionsCache.set(locString, opts);\n    }\n    return opts;\n  }\n  var weekInfoCache = new Map();\n  function getCachedWeekInfo(locString) {\n    var data = weekInfoCache.get(locString);\n    if (!data) {\n      var locale = new Intl.Locale(locString);\n      // browsers currently implement this as a property, but spec says it should be a getter function\n      data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n      // minimalDays was removed from WeekInfo: https://github.com/tc39/proposal-intl-locale-info/issues/86\n      if (!(\"minimalDays\" in data)) {\n        data = _extends({}, fallbackWeekSettings, data);\n      }\n      weekInfoCache.set(locString, data);\n    }\n    return data;\n  }\n  function parseLocaleString(localeStr) {\n    // I really want to avoid writing a BCP 47 parser\n    // see, e.g. https://github.com/wooorm/bcp-47\n    // Instead, we'll do this:\n\n    // a) if the string has no -u extensions, just leave it alone\n    // b) if it does, use Intl to resolve everything\n    // c) if Intl fails, try again without the -u\n\n    // private subtags and unicode subtags have ordering requirements,\n    // and we're not properly parsing this, so just strip out the\n    // private ones if they exist.\n    var xIndex = localeStr.indexOf(\"-x-\");\n    if (xIndex !== -1) {\n      localeStr = localeStr.substring(0, xIndex);\n    }\n    var uIndex = localeStr.indexOf(\"-u-\");\n    if (uIndex === -1) {\n      return [localeStr];\n    } else {\n      var options;\n      var selectedStr;\n      try {\n        options = getCachedDTF(localeStr).resolvedOptions();\n        selectedStr = localeStr;\n      } catch (e) {\n        var smaller = localeStr.substring(0, uIndex);\n        options = getCachedDTF(smaller).resolvedOptions();\n        selectedStr = smaller;\n      }\n      var _options = options,\n        numberingSystem = _options.numberingSystem,\n        calendar = _options.calendar;\n      return [selectedStr, numberingSystem, calendar];\n    }\n  }\n  function intlConfigString(localeStr, numberingSystem, outputCalendar) {\n    if (outputCalendar || numberingSystem) {\n      if (!localeStr.includes(\"-u-\")) {\n        localeStr += \"-u\";\n      }\n      if (outputCalendar) {\n        localeStr += \"-ca-\" + outputCalendar;\n      }\n      if (numberingSystem) {\n        localeStr += \"-nu-\" + numberingSystem;\n      }\n      return localeStr;\n    } else {\n      return localeStr;\n    }\n  }\n  function mapMonths(f) {\n    var ms = [];\n    for (var i = 1; i <= 12; i++) {\n      var dt = DateTime.utc(2009, i, 1);\n      ms.push(f(dt));\n    }\n    return ms;\n  }\n  function mapWeekdays(f) {\n    var ms = [];\n    for (var i = 1; i <= 7; i++) {\n      var dt = DateTime.utc(2016, 11, 13 + i);\n      ms.push(f(dt));\n    }\n    return ms;\n  }\n  function listStuff(loc, length, englishFn, intlFn) {\n    var mode = loc.listingMode();\n    if (mode === \"error\") {\n      return null;\n    } else if (mode === \"en\") {\n      return englishFn(length);\n    } else {\n      return intlFn(length);\n    }\n  }\n  function supportsFastNumbers(loc) {\n    if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n      return false;\n    } else {\n      return loc.numberingSystem === \"latn\" || !loc.locale || loc.locale.startsWith(\"en\") || getCachedIntResolvedOptions(loc.locale).numberingSystem === \"latn\";\n    }\n  }\n\n  /**\n   * @private\n   */\n  var PolyNumberFormatter = /*#__PURE__*/function () {\n    function PolyNumberFormatter(intl, forceSimple, opts) {\n      this.padTo = opts.padTo || 0;\n      this.floor = opts.floor || false;\n      opts.padTo;\n        opts.floor;\n        var otherOpts = _objectWithoutPropertiesLoose(opts, _excluded2);\n      if (!forceSimple || Object.keys(otherOpts).length > 0) {\n        var intlOpts = _extends({\n          useGrouping: false\n        }, opts);\n        if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n        this.inf = getCachedINF(intl, intlOpts);\n      }\n    }\n    var _proto = PolyNumberFormatter.prototype;\n    _proto.format = function format(i) {\n      if (this.inf) {\n        var fixed = this.floor ? Math.floor(i) : i;\n        return this.inf.format(fixed);\n      } else {\n        // to match the browser's numberformatter defaults\n        var _fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n        return padStart(_fixed, this.padTo);\n      }\n    };\n    return PolyNumberFormatter;\n  }();\n  /**\n   * @private\n   */\n  var PolyDateFormatter = /*#__PURE__*/function () {\n    function PolyDateFormatter(dt, intl, opts) {\n      this.opts = opts;\n      this.originalZone = undefined;\n      var z = undefined;\n      if (this.opts.timeZone) {\n        // Don't apply any workarounds if a timeZone is explicitly provided in opts\n        this.dt = dt;\n      } else if (dt.zone.type === \"fixed\") {\n        // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n        // That is why fixed-offset TZ is set to that unless it is:\n        // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n        // 2. Unsupported by the browser:\n        //    - some do not support Etc/\n        //    - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n        var gmtOffset = -1 * (dt.offset / 60);\n        var offsetZ = gmtOffset >= 0 ? \"Etc/GMT+\" + gmtOffset : \"Etc/GMT\" + gmtOffset;\n        if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n          z = offsetZ;\n          this.dt = dt;\n        } else {\n          // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n          // we manually apply the offset and substitute the zone as needed.\n          z = \"UTC\";\n          this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({\n            minutes: dt.offset\n          });\n          this.originalZone = dt.zone;\n        }\n      } else if (dt.zone.type === \"system\") {\n        this.dt = dt;\n      } else if (dt.zone.type === \"iana\") {\n        this.dt = dt;\n        z = dt.zone.name;\n      } else {\n        // Custom zones can have any offset / offsetName so we just manually\n        // apply the offset and substitute the zone as needed.\n        z = \"UTC\";\n        this.dt = dt.setZone(\"UTC\").plus({\n          minutes: dt.offset\n        });\n        this.originalZone = dt.zone;\n      }\n      var intlOpts = _extends({}, this.opts);\n      intlOpts.timeZone = intlOpts.timeZone || z;\n      this.dtf = getCachedDTF(intl, intlOpts);\n    }\n    var _proto2 = PolyDateFormatter.prototype;\n    _proto2.format = function format() {\n      if (this.originalZone) {\n        // If we have to substitute in the actual zone name, we have to use\n        // formatToParts so that the timezone can be replaced.\n        return this.formatToParts().map(function (_ref) {\n          var value = _ref.value;\n          return value;\n        }).join(\"\");\n      }\n      return this.dtf.format(this.dt.toJSDate());\n    };\n    _proto2.formatToParts = function formatToParts() {\n      var _this = this;\n      var parts = this.dtf.formatToParts(this.dt.toJSDate());\n      if (this.originalZone) {\n        return parts.map(function (part) {\n          if (part.type === \"timeZoneName\") {\n            var offsetName = _this.originalZone.offsetName(_this.dt.ts, {\n              locale: _this.dt.locale,\n              format: _this.opts.timeZoneName\n            });\n            return _extends({}, part, {\n              value: offsetName\n            });\n          } else {\n            return part;\n          }\n        });\n      }\n      return parts;\n    };\n    _proto2.resolvedOptions = function resolvedOptions() {\n      return this.dtf.resolvedOptions();\n    };\n    return PolyDateFormatter;\n  }();\n  /**\n   * @private\n   */\n  var PolyRelFormatter = /*#__PURE__*/function () {\n    function PolyRelFormatter(intl, isEnglish, opts) {\n      this.opts = _extends({\n        style: \"long\"\n      }, opts);\n      if (!isEnglish && hasRelative()) {\n        this.rtf = getCachedRTF(intl, opts);\n      }\n    }\n    var _proto3 = PolyRelFormatter.prototype;\n    _proto3.format = function format(count, unit) {\n      if (this.rtf) {\n        return this.rtf.format(count, unit);\n      } else {\n        return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n      }\n    };\n    _proto3.formatToParts = function formatToParts(count, unit) {\n      if (this.rtf) {\n        return this.rtf.formatToParts(count, unit);\n      } else {\n        return [];\n      }\n    };\n    return PolyRelFormatter;\n  }();\n  var fallbackWeekSettings = {\n    firstDay: 1,\n    minimalDays: 4,\n    weekend: [6, 7]\n  };\n\n  /**\n   * @private\n   */\n  var Locale = /*#__PURE__*/function () {\n    Locale.fromOpts = function fromOpts(opts) {\n      return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.weekSettings, opts.defaultToEN);\n    };\n    Locale.create = function create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN) {\n      if (defaultToEN === void 0) {\n        defaultToEN = false;\n      }\n      var specifiedLocale = locale || Settings.defaultLocale;\n      // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n      var localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n      var numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n      var outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n      var weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n      return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n    };\n    Locale.resetCache = function resetCache() {\n      sysLocaleCache = null;\n      intlDTCache.clear();\n      intlNumCache.clear();\n      intlRelCache.clear();\n      intlResolvedOptionsCache.clear();\n      weekInfoCache.clear();\n    };\n    Locale.fromObject = function fromObject(_temp) {\n      var _ref2 = _temp === void 0 ? {} : _temp,\n        locale = _ref2.locale,\n        numberingSystem = _ref2.numberingSystem,\n        outputCalendar = _ref2.outputCalendar,\n        weekSettings = _ref2.weekSettings;\n      return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n    };\n    function Locale(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n      var _parseLocaleString = parseLocaleString(locale),\n        parsedLocale = _parseLocaleString[0],\n        parsedNumberingSystem = _parseLocaleString[1],\n        parsedOutputCalendar = _parseLocaleString[2];\n      this.locale = parsedLocale;\n      this.numberingSystem = numbering || parsedNumberingSystem || null;\n      this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n      this.weekSettings = weekSettings;\n      this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n      this.weekdaysCache = {\n        format: {},\n        standalone: {}\n      };\n      this.monthsCache = {\n        format: {},\n        standalone: {}\n      };\n      this.meridiemCache = null;\n      this.eraCache = {};\n      this.specifiedLocale = specifiedLocale;\n      this.fastNumbersCached = null;\n    }\n    var _proto4 = Locale.prototype;\n    _proto4.listingMode = function listingMode() {\n      var isActuallyEn = this.isEnglish();\n      var hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === \"latn\") && (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n      return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n    };\n    _proto4.clone = function clone(alts) {\n      if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n        return this;\n      } else {\n        return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, validateWeekSettings(alts.weekSettings) || this.weekSettings, alts.defaultToEN || false);\n      }\n    };\n    _proto4.redefaultToEN = function redefaultToEN(alts) {\n      if (alts === void 0) {\n        alts = {};\n      }\n      return this.clone(_extends({}, alts, {\n        defaultToEN: true\n      }));\n    };\n    _proto4.redefaultToSystem = function redefaultToSystem(alts) {\n      if (alts === void 0) {\n        alts = {};\n      }\n      return this.clone(_extends({}, alts, {\n        defaultToEN: false\n      }));\n    };\n    _proto4.months = function months$1(length, format) {\n      var _this2 = this;\n      if (format === void 0) {\n        format = false;\n      }\n      return listStuff(this, length, months, function () {\n        var intl = format ? {\n            month: length,\n            day: \"numeric\"\n          } : {\n            month: length\n          },\n          formatStr = format ? \"format\" : \"standalone\";\n        if (!_this2.monthsCache[formatStr][length]) {\n          _this2.monthsCache[formatStr][length] = mapMonths(function (dt) {\n            return _this2.extract(dt, intl, \"month\");\n          });\n        }\n        return _this2.monthsCache[formatStr][length];\n      });\n    };\n    _proto4.weekdays = function weekdays$1(length, format) {\n      var _this3 = this;\n      if (format === void 0) {\n        format = false;\n      }\n      return listStuff(this, length, weekdays, function () {\n        var intl = format ? {\n            weekday: length,\n            year: \"numeric\",\n            month: \"long\",\n            day: \"numeric\"\n          } : {\n            weekday: length\n          },\n          formatStr = format ? \"format\" : \"standalone\";\n        if (!_this3.weekdaysCache[formatStr][length]) {\n          _this3.weekdaysCache[formatStr][length] = mapWeekdays(function (dt) {\n            return _this3.extract(dt, intl, \"weekday\");\n          });\n        }\n        return _this3.weekdaysCache[formatStr][length];\n      });\n    };\n    _proto4.meridiems = function meridiems$1() {\n      var _this4 = this;\n      return listStuff(this, undefined, function () {\n        return meridiems;\n      }, function () {\n        // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n        // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n        if (!_this4.meridiemCache) {\n          var intl = {\n            hour: \"numeric\",\n            hourCycle: \"h12\"\n          };\n          _this4.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(function (dt) {\n            return _this4.extract(dt, intl, \"dayperiod\");\n          });\n        }\n        return _this4.meridiemCache;\n      });\n    };\n    _proto4.eras = function eras$1(length) {\n      var _this5 = this;\n      return listStuff(this, length, eras, function () {\n        var intl = {\n          era: length\n        };\n\n        // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n        // to definitely enumerate them.\n        if (!_this5.eraCache[length]) {\n          _this5.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(function (dt) {\n            return _this5.extract(dt, intl, \"era\");\n          });\n        }\n        return _this5.eraCache[length];\n      });\n    };\n    _proto4.extract = function extract(dt, intlOpts, field) {\n      var df = this.dtFormatter(dt, intlOpts),\n        results = df.formatToParts(),\n        matching = results.find(function (m) {\n          return m.type.toLowerCase() === field;\n        });\n      return matching ? matching.value : null;\n    };\n    _proto4.numberFormatter = function numberFormatter(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n      // (in contrast, the rest of the condition is used heavily)\n      return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n    };\n    _proto4.dtFormatter = function dtFormatter(dt, intlOpts) {\n      if (intlOpts === void 0) {\n        intlOpts = {};\n      }\n      return new PolyDateFormatter(dt, this.intl, intlOpts);\n    };\n    _proto4.relFormatter = function relFormatter(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n    };\n    _proto4.listFormatter = function listFormatter(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return getCachedLF(this.intl, opts);\n    };\n    _proto4.isEnglish = function isEnglish() {\n      return this.locale === \"en\" || this.locale.toLowerCase() === \"en-us\" || getCachedIntResolvedOptions(this.intl).locale.startsWith(\"en-us\");\n    };\n    _proto4.getWeekSettings = function getWeekSettings() {\n      if (this.weekSettings) {\n        return this.weekSettings;\n      } else if (!hasLocaleWeekInfo()) {\n        return fallbackWeekSettings;\n      } else {\n        return getCachedWeekInfo(this.locale);\n      }\n    };\n    _proto4.getStartOfWeek = function getStartOfWeek() {\n      return this.getWeekSettings().firstDay;\n    };\n    _proto4.getMinDaysInFirstWeek = function getMinDaysInFirstWeek() {\n      return this.getWeekSettings().minimalDays;\n    };\n    _proto4.getWeekendDays = function getWeekendDays() {\n      return this.getWeekSettings().weekend;\n    };\n    _proto4.equals = function equals(other) {\n      return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar;\n    };\n    _proto4.toString = function toString() {\n      return \"Locale(\" + this.locale + \", \" + this.numberingSystem + \", \" + this.outputCalendar + \")\";\n    };\n    _createClass(Locale, [{\n      key: \"fastNumbers\",\n      get: function get() {\n        if (this.fastNumbersCached == null) {\n          this.fastNumbersCached = supportsFastNumbers(this);\n        }\n        return this.fastNumbersCached;\n      }\n    }]);\n    return Locale;\n  }();\n\n  var singleton = null;\n\n  /**\n   * A zone with a fixed offset (meaning no DST)\n   * @implements {Zone}\n   */\n  var FixedOffsetZone = /*#__PURE__*/function (_Zone) {\n    _inheritsLoose(FixedOffsetZone, _Zone);\n    /**\n     * Get an instance with a specified offset\n     * @param {number} offset - The offset in minutes\n     * @return {FixedOffsetZone}\n     */\n    FixedOffsetZone.instance = function instance(offset) {\n      return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n    }\n\n    /**\n     * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n     * @param {string} s - The offset string to parse\n     * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n     * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n     * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n     * @return {FixedOffsetZone}\n     */;\n    FixedOffsetZone.parseSpecifier = function parseSpecifier(s) {\n      if (s) {\n        var r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n        if (r) {\n          return new FixedOffsetZone(signedOffset(r[1], r[2]));\n        }\n      }\n      return null;\n    };\n    function FixedOffsetZone(offset) {\n      var _this;\n      _this = _Zone.call(this) || this;\n      /** @private **/\n      _this.fixed = offset;\n      return _this;\n    }\n\n    /**\n     * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n     * @override\n     * @type {string}\n     */\n    var _proto = FixedOffsetZone.prototype;\n    /**\n     * Returns the offset's common name at the specified timestamp.\n     *\n     * For fixed offset zones this equals to the zone name.\n     * @override\n     */\n    _proto.offsetName = function offsetName() {\n      return this.name;\n    }\n\n    /**\n     * Returns the offset's value as a string\n     * @override\n     * @param {number} ts - Epoch milliseconds for which to get the offset\n     * @param {string} format - What style of offset to return.\n     *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n     * @return {string}\n     */;\n    _proto.formatOffset = function formatOffset$1(ts, format) {\n      return formatOffset(this.fixed, format);\n    }\n\n    /**\n     * Returns whether the offset is known to be fixed for the whole year:\n     * Always returns true for all fixed offset zones.\n     * @override\n     * @type {boolean}\n     */;\n    /**\n     * Return the offset in minutes for this zone at the specified timestamp.\n     *\n     * For fixed offset zones, this is constant and does not depend on a timestamp.\n     * @override\n     * @return {number}\n     */\n    _proto.offset = function offset() {\n      return this.fixed;\n    }\n\n    /**\n     * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n     * @override\n     * @param {Zone} otherZone - the zone to compare\n     * @return {boolean}\n     */;\n    _proto.equals = function equals(otherZone) {\n      return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n    }\n\n    /**\n     * Return whether this Zone is valid:\n     * All fixed offset zones are valid.\n     * @override\n     * @type {boolean}\n     */;\n    _createClass(FixedOffsetZone, [{\n      key: \"type\",\n      get: function get() {\n        return \"fixed\";\n      }\n\n      /**\n       * The name of this zone.\n       * All fixed zones' names always start with \"UTC\" (plus optional offset)\n       * @override\n       * @type {string}\n       */\n    }, {\n      key: \"name\",\n      get: function get() {\n        return this.fixed === 0 ? \"UTC\" : \"UTC\" + formatOffset(this.fixed, \"narrow\");\n      }\n\n      /**\n       * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n       *\n       * @override\n       * @type {string}\n       */\n    }, {\n      key: \"ianaName\",\n      get: function get() {\n        if (this.fixed === 0) {\n          return \"Etc/UTC\";\n        } else {\n          return \"Etc/GMT\" + formatOffset(-this.fixed, \"narrow\");\n        }\n      }\n    }, {\n      key: \"isUniversal\",\n      get: function get() {\n        return true;\n      }\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return true;\n      }\n    }], [{\n      key: \"utcInstance\",\n      get:\n      /**\n       * Get a singleton instance of UTC\n       * @return {FixedOffsetZone}\n       */\n      function get() {\n        if (singleton === null) {\n          singleton = new FixedOffsetZone(0);\n        }\n        return singleton;\n      }\n    }]);\n    return FixedOffsetZone;\n  }(Zone);\n\n  /**\n   * A zone that failed to parse. You should never need to instantiate this.\n   * @implements {Zone}\n   */\n  var InvalidZone = /*#__PURE__*/function (_Zone) {\n    _inheritsLoose(InvalidZone, _Zone);\n    function InvalidZone(zoneName) {\n      var _this;\n      _this = _Zone.call(this) || this;\n      /**  @private */\n      _this.zoneName = zoneName;\n      return _this;\n    }\n\n    /** @override **/\n    var _proto = InvalidZone.prototype;\n    /** @override **/\n    _proto.offsetName = function offsetName() {\n      return null;\n    }\n\n    /** @override **/;\n    _proto.formatOffset = function formatOffset() {\n      return \"\";\n    }\n\n    /** @override **/;\n    _proto.offset = function offset() {\n      return NaN;\n    }\n\n    /** @override **/;\n    _proto.equals = function equals() {\n      return false;\n    }\n\n    /** @override **/;\n    _createClass(InvalidZone, [{\n      key: \"type\",\n      get: function get() {\n        return \"invalid\";\n      }\n\n      /** @override **/\n    }, {\n      key: \"name\",\n      get: function get() {\n        return this.zoneName;\n      }\n\n      /** @override **/\n    }, {\n      key: \"isUniversal\",\n      get: function get() {\n        return false;\n      }\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return false;\n      }\n    }]);\n    return InvalidZone;\n  }(Zone);\n\n  /**\n   * @private\n   */\n  function normalizeZone(input, defaultZone) {\n    if (isUndefined(input) || input === null) {\n      return defaultZone;\n    } else if (input instanceof Zone) {\n      return input;\n    } else if (isString(input)) {\n      var lowered = input.toLowerCase();\n      if (lowered === \"default\") return defaultZone;else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n    } else if (isNumber(input)) {\n      return FixedOffsetZone.instance(input);\n    } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n      // This is dumb, but the instanceof check above doesn't seem to really work\n      // so we're duck checking it\n      return input;\n    } else {\n      return new InvalidZone(input);\n    }\n  }\n\n  var numberingSystems = {\n    arab: \"[\\u0660-\\u0669]\",\n    arabext: \"[\\u06F0-\\u06F9]\",\n    bali: \"[\\u1B50-\\u1B59]\",\n    beng: \"[\\u09E6-\\u09EF]\",\n    deva: \"[\\u0966-\\u096F]\",\n    fullwide: \"[\\uFF10-\\uFF19]\",\n    gujr: \"[\\u0AE6-\\u0AEF]\",\n    hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n    khmr: \"[\\u17E0-\\u17E9]\",\n    knda: \"[\\u0CE6-\\u0CEF]\",\n    laoo: \"[\\u0ED0-\\u0ED9]\",\n    limb: \"[\\u1946-\\u194F]\",\n    mlym: \"[\\u0D66-\\u0D6F]\",\n    mong: \"[\\u1810-\\u1819]\",\n    mymr: \"[\\u1040-\\u1049]\",\n    orya: \"[\\u0B66-\\u0B6F]\",\n    tamldec: \"[\\u0BE6-\\u0BEF]\",\n    telu: \"[\\u0C66-\\u0C6F]\",\n    thai: \"[\\u0E50-\\u0E59]\",\n    tibt: \"[\\u0F20-\\u0F29]\",\n    latn: \"\\\\d\"\n  };\n  var numberingSystemsUTF16 = {\n    arab: [1632, 1641],\n    arabext: [1776, 1785],\n    bali: [6992, 7001],\n    beng: [2534, 2543],\n    deva: [2406, 2415],\n    fullwide: [65296, 65303],\n    gujr: [2790, 2799],\n    khmr: [6112, 6121],\n    knda: [3302, 3311],\n    laoo: [3792, 3801],\n    limb: [6470, 6479],\n    mlym: [3430, 3439],\n    mong: [6160, 6169],\n    mymr: [4160, 4169],\n    orya: [2918, 2927],\n    tamldec: [3046, 3055],\n    telu: [3174, 3183],\n    thai: [3664, 3673],\n    tibt: [3872, 3881]\n  };\n  var hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n  function parseDigits(str) {\n    var value = parseInt(str, 10);\n    if (isNaN(value)) {\n      value = \"\";\n      for (var i = 0; i < str.length; i++) {\n        var code = str.charCodeAt(i);\n        if (str[i].search(numberingSystems.hanidec) !== -1) {\n          value += hanidecChars.indexOf(str[i]);\n        } else {\n          for (var key in numberingSystemsUTF16) {\n            var _numberingSystemsUTF = numberingSystemsUTF16[key],\n              min = _numberingSystemsUTF[0],\n              max = _numberingSystemsUTF[1];\n            if (code >= min && code <= max) {\n              value += code - min;\n            }\n          }\n        }\n      }\n      return parseInt(value, 10);\n    } else {\n      return value;\n    }\n  }\n\n  // cache of {numberingSystem: {append: regex}}\n  var digitRegexCache = new Map();\n  function resetDigitRegexCache() {\n    digitRegexCache.clear();\n  }\n  function digitRegex(_ref, append) {\n    var numberingSystem = _ref.numberingSystem;\n    if (append === void 0) {\n      append = \"\";\n    }\n    var ns = numberingSystem || \"latn\";\n    var appendCache = digitRegexCache.get(ns);\n    if (appendCache === undefined) {\n      appendCache = new Map();\n      digitRegexCache.set(ns, appendCache);\n    }\n    var regex = appendCache.get(append);\n    if (regex === undefined) {\n      regex = new RegExp(\"\" + numberingSystems[ns] + append);\n      appendCache.set(append, regex);\n    }\n    return regex;\n  }\n\n  var now = function now() {\n      return Date.now();\n    },\n    defaultZone = \"system\",\n    defaultLocale = null,\n    defaultNumberingSystem = null,\n    defaultOutputCalendar = null,\n    twoDigitCutoffYear = 60,\n    throwOnInvalid,\n    defaultWeekSettings = null;\n\n  /**\n   * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n   */\n  var Settings = /*#__PURE__*/function () {\n    function Settings() {}\n    /**\n     * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n     * @return {void}\n     */\n    Settings.resetCaches = function resetCaches() {\n      Locale.resetCache();\n      IANAZone.resetCache();\n      DateTime.resetCache();\n      resetDigitRegexCache();\n    };\n    _createClass(Settings, null, [{\n      key: \"now\",\n      get:\n      /**\n       * Get the callback for returning the current timestamp.\n       * @type {function}\n       */\n      function get() {\n        return now;\n      }\n\n      /**\n       * Set the callback for returning the current timestamp.\n       * The function should return a number, which will be interpreted as an Epoch millisecond count\n       * @type {function}\n       * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n       * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n       */,\n      set: function set(n) {\n        now = n;\n      }\n\n      /**\n       * Set the default time zone to create DateTimes in. Does not affect existing instances.\n       * Use the value \"system\" to reset this value to the system's time zone.\n       * @type {string}\n       */\n    }, {\n      key: \"defaultZone\",\n      get:\n      /**\n       * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n       * The default value is the system's time zone (the one set on the machine that runs this code).\n       * @type {Zone}\n       */\n      function get() {\n        return normalizeZone(defaultZone, SystemZone.instance);\n      }\n\n      /**\n       * Get the default locale to create DateTimes with. Does not affect existing instances.\n       * @type {string}\n       */,\n      set: function set(zone) {\n        defaultZone = zone;\n      }\n    }, {\n      key: \"defaultLocale\",\n      get: function get() {\n        return defaultLocale;\n      }\n\n      /**\n       * Set the default locale to create DateTimes with. Does not affect existing instances.\n       * @type {string}\n       */,\n      set: function set(locale) {\n        defaultLocale = locale;\n      }\n\n      /**\n       * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n       * @type {string}\n       */\n    }, {\n      key: \"defaultNumberingSystem\",\n      get: function get() {\n        return defaultNumberingSystem;\n      }\n\n      /**\n       * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n       * @type {string}\n       */,\n      set: function set(numberingSystem) {\n        defaultNumberingSystem = numberingSystem;\n      }\n\n      /**\n       * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n       * @type {string}\n       */\n    }, {\n      key: \"defaultOutputCalendar\",\n      get: function get() {\n        return defaultOutputCalendar;\n      }\n\n      /**\n       * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n       * @type {string}\n       */,\n      set: function set(outputCalendar) {\n        defaultOutputCalendar = outputCalendar;\n      }\n\n      /**\n       * @typedef {Object} WeekSettings\n       * @property {number} firstDay\n       * @property {number} minimalDays\n       * @property {number[]} weekend\n       */\n\n      /**\n       * @return {WeekSettings|null}\n       */\n    }, {\n      key: \"defaultWeekSettings\",\n      get: function get() {\n        return defaultWeekSettings;\n      }\n\n      /**\n       * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n       * how many days are required in the first week of a year.\n       * Does not affect existing instances.\n       *\n       * @param {WeekSettings|null} weekSettings\n       */,\n      set: function set(weekSettings) {\n        defaultWeekSettings = validateWeekSettings(weekSettings);\n      }\n\n      /**\n       * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n       * @type {number}\n       */\n    }, {\n      key: \"twoDigitCutoffYear\",\n      get: function get() {\n        return twoDigitCutoffYear;\n      }\n\n      /**\n       * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n       * @type {number}\n       * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n       * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n       * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n       * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n       * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n       */,\n      set: function set(cutoffYear) {\n        twoDigitCutoffYear = cutoffYear % 100;\n      }\n\n      /**\n       * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n       * @type {boolean}\n       */\n    }, {\n      key: \"throwOnInvalid\",\n      get: function get() {\n        return throwOnInvalid;\n      }\n\n      /**\n       * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n       * @type {boolean}\n       */,\n      set: function set(t) {\n        throwOnInvalid = t;\n      }\n    }]);\n    return Settings;\n  }();\n\n  var Invalid = /*#__PURE__*/function () {\n    function Invalid(reason, explanation) {\n      this.reason = reason;\n      this.explanation = explanation;\n    }\n    var _proto = Invalid.prototype;\n    _proto.toMessage = function toMessage() {\n      if (this.explanation) {\n        return this.reason + \": \" + this.explanation;\n      } else {\n        return this.reason;\n      }\n    };\n    return Invalid;\n  }();\n\n  var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n    leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n  function unitOutOfRange(unit, value) {\n    return new Invalid(\"unit out of range\", \"you specified \" + value + \" (of type \" + typeof value + \") as a \" + unit + \", which is invalid\");\n  }\n  function dayOfWeek(year, month, day) {\n    var d = new Date(Date.UTC(year, month - 1, day));\n    if (year < 100 && year >= 0) {\n      d.setUTCFullYear(d.getUTCFullYear() - 1900);\n    }\n    var js = d.getUTCDay();\n    return js === 0 ? 7 : js;\n  }\n  function computeOrdinal(year, month, day) {\n    return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n  }\n  function uncomputeOrdinal(year, ordinal) {\n    var table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n      month0 = table.findIndex(function (i) {\n        return i < ordinal;\n      }),\n      day = ordinal - table[month0];\n    return {\n      month: month0 + 1,\n      day: day\n    };\n  }\n  function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n    return (isoWeekday - startOfWeek + 7) % 7 + 1;\n  }\n\n  /**\n   * @private\n   */\n\n  function gregorianToWeek(gregObj, minDaysInFirstWeek, startOfWeek) {\n    if (minDaysInFirstWeek === void 0) {\n      minDaysInFirstWeek = 4;\n    }\n    if (startOfWeek === void 0) {\n      startOfWeek = 1;\n    }\n    var year = gregObj.year,\n      month = gregObj.month,\n      day = gregObj.day,\n      ordinal = computeOrdinal(year, month, day),\n      weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n    var weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n      weekYear;\n    if (weekNumber < 1) {\n      weekYear = year - 1;\n      weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n    } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n      weekYear = year + 1;\n      weekNumber = 1;\n    } else {\n      weekYear = year;\n    }\n    return _extends({\n      weekYear: weekYear,\n      weekNumber: weekNumber,\n      weekday: weekday\n    }, timeObject(gregObj));\n  }\n  function weekToGregorian(weekData, minDaysInFirstWeek, startOfWeek) {\n    if (minDaysInFirstWeek === void 0) {\n      minDaysInFirstWeek = 4;\n    }\n    if (startOfWeek === void 0) {\n      startOfWeek = 1;\n    }\n    var weekYear = weekData.weekYear,\n      weekNumber = weekData.weekNumber,\n      weekday = weekData.weekday,\n      weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n      yearInDays = daysInYear(weekYear);\n    var ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n      year;\n    if (ordinal < 1) {\n      year = weekYear - 1;\n      ordinal += daysInYear(year);\n    } else if (ordinal > yearInDays) {\n      year = weekYear + 1;\n      ordinal -= daysInYear(weekYear);\n    } else {\n      year = weekYear;\n    }\n    var _uncomputeOrdinal = uncomputeOrdinal(year, ordinal),\n      month = _uncomputeOrdinal.month,\n      day = _uncomputeOrdinal.day;\n    return _extends({\n      year: year,\n      month: month,\n      day: day\n    }, timeObject(weekData));\n  }\n  function gregorianToOrdinal(gregData) {\n    var year = gregData.year,\n      month = gregData.month,\n      day = gregData.day;\n    var ordinal = computeOrdinal(year, month, day);\n    return _extends({\n      year: year,\n      ordinal: ordinal\n    }, timeObject(gregData));\n  }\n  function ordinalToGregorian(ordinalData) {\n    var year = ordinalData.year,\n      ordinal = ordinalData.ordinal;\n    var _uncomputeOrdinal2 = uncomputeOrdinal(year, ordinal),\n      month = _uncomputeOrdinal2.month,\n      day = _uncomputeOrdinal2.day;\n    return _extends({\n      year: year,\n      month: month,\n      day: day\n    }, timeObject(ordinalData));\n  }\n\n  /**\n   * Check if local week units like localWeekday are used in obj.\n   * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n   * Modifies obj in-place!\n   * @param obj the object values\n   */\n  function usesLocalWeekValues(obj, loc) {\n    var hasLocaleWeekData = !isUndefined(obj.localWeekday) || !isUndefined(obj.localWeekNumber) || !isUndefined(obj.localWeekYear);\n    if (hasLocaleWeekData) {\n      var hasIsoWeekData = !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n      if (hasIsoWeekData) {\n        throw new ConflictingSpecificationError(\"Cannot mix locale-based week fields with ISO-based week fields\");\n      }\n      if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n      if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n      if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n      delete obj.localWeekday;\n      delete obj.localWeekNumber;\n      delete obj.localWeekYear;\n      return {\n        minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n        startOfWeek: loc.getStartOfWeek()\n      };\n    } else {\n      return {\n        minDaysInFirstWeek: 4,\n        startOfWeek: 1\n      };\n    }\n  }\n  function hasInvalidWeekData(obj, minDaysInFirstWeek, startOfWeek) {\n    if (minDaysInFirstWeek === void 0) {\n      minDaysInFirstWeek = 4;\n    }\n    if (startOfWeek === void 0) {\n      startOfWeek = 1;\n    }\n    var validYear = isInteger(obj.weekYear),\n      validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)),\n      validWeekday = integerBetween(obj.weekday, 1, 7);\n    if (!validYear) {\n      return unitOutOfRange(\"weekYear\", obj.weekYear);\n    } else if (!validWeek) {\n      return unitOutOfRange(\"week\", obj.weekNumber);\n    } else if (!validWeekday) {\n      return unitOutOfRange(\"weekday\", obj.weekday);\n    } else return false;\n  }\n  function hasInvalidOrdinalData(obj) {\n    var validYear = isInteger(obj.year),\n      validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n    if (!validYear) {\n      return unitOutOfRange(\"year\", obj.year);\n    } else if (!validOrdinal) {\n      return unitOutOfRange(\"ordinal\", obj.ordinal);\n    } else return false;\n  }\n  function hasInvalidGregorianData(obj) {\n    var validYear = isInteger(obj.year),\n      validMonth = integerBetween(obj.month, 1, 12),\n      validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n    if (!validYear) {\n      return unitOutOfRange(\"year\", obj.year);\n    } else if (!validMonth) {\n      return unitOutOfRange(\"month\", obj.month);\n    } else if (!validDay) {\n      return unitOutOfRange(\"day\", obj.day);\n    } else return false;\n  }\n  function hasInvalidTimeData(obj) {\n    var hour = obj.hour,\n      minute = obj.minute,\n      second = obj.second,\n      millisecond = obj.millisecond;\n    var validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0,\n      validMinute = integerBetween(minute, 0, 59),\n      validSecond = integerBetween(second, 0, 59),\n      validMillisecond = integerBetween(millisecond, 0, 999);\n    if (!validHour) {\n      return unitOutOfRange(\"hour\", hour);\n    } else if (!validMinute) {\n      return unitOutOfRange(\"minute\", minute);\n    } else if (!validSecond) {\n      return unitOutOfRange(\"second\", second);\n    } else if (!validMillisecond) {\n      return unitOutOfRange(\"millisecond\", millisecond);\n    } else return false;\n  }\n\n  /**\n   * @private\n   */\n\n  // TYPES\n\n  function isUndefined(o) {\n    return typeof o === \"undefined\";\n  }\n  function isNumber(o) {\n    return typeof o === \"number\";\n  }\n  function isInteger(o) {\n    return typeof o === \"number\" && o % 1 === 0;\n  }\n  function isString(o) {\n    return typeof o === \"string\";\n  }\n  function isDate(o) {\n    return Object.prototype.toString.call(o) === \"[object Date]\";\n  }\n\n  // CAPABILITIES\n\n  function hasRelative() {\n    try {\n      return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n    } catch (e) {\n      return false;\n    }\n  }\n  function hasLocaleWeekInfo() {\n    try {\n      return typeof Intl !== \"undefined\" && !!Intl.Locale && (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype);\n    } catch (e) {\n      return false;\n    }\n  }\n\n  // OBJECTS AND ARRAYS\n\n  function maybeArray(thing) {\n    return Array.isArray(thing) ? thing : [thing];\n  }\n  function bestBy(arr, by, compare) {\n    if (arr.length === 0) {\n      return undefined;\n    }\n    return arr.reduce(function (best, next) {\n      var pair = [by(next), next];\n      if (!best) {\n        return pair;\n      } else if (compare(best[0], pair[0]) === best[0]) {\n        return best;\n      } else {\n        return pair;\n      }\n    }, null)[1];\n  }\n  function pick(obj, keys) {\n    return keys.reduce(function (a, k) {\n      a[k] = obj[k];\n      return a;\n    }, {});\n  }\n  function hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n  }\n  function validateWeekSettings(settings) {\n    if (settings == null) {\n      return null;\n    } else if (typeof settings !== \"object\") {\n      throw new InvalidArgumentError(\"Week settings must be an object\");\n    } else {\n      if (!integerBetween(settings.firstDay, 1, 7) || !integerBetween(settings.minimalDays, 1, 7) || !Array.isArray(settings.weekend) || settings.weekend.some(function (v) {\n        return !integerBetween(v, 1, 7);\n      })) {\n        throw new InvalidArgumentError(\"Invalid week settings\");\n      }\n      return {\n        firstDay: settings.firstDay,\n        minimalDays: settings.minimalDays,\n        weekend: Array.from(settings.weekend)\n      };\n    }\n  }\n\n  // NUMBERS AND STRINGS\n\n  function integerBetween(thing, bottom, top) {\n    return isInteger(thing) && thing >= bottom && thing <= top;\n  }\n\n  // x % n but takes the sign of n instead of x\n  function floorMod(x, n) {\n    return x - n * Math.floor(x / n);\n  }\n  function padStart(input, n) {\n    if (n === void 0) {\n      n = 2;\n    }\n    var isNeg = input < 0;\n    var padded;\n    if (isNeg) {\n      padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n    } else {\n      padded = (\"\" + input).padStart(n, \"0\");\n    }\n    return padded;\n  }\n  function parseInteger(string) {\n    if (isUndefined(string) || string === null || string === \"\") {\n      return undefined;\n    } else {\n      return parseInt(string, 10);\n    }\n  }\n  function parseFloating(string) {\n    if (isUndefined(string) || string === null || string === \"\") {\n      return undefined;\n    } else {\n      return parseFloat(string);\n    }\n  }\n  function parseMillis(fraction) {\n    // Return undefined (instead of 0) in these cases, where fraction is not set\n    if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n      return undefined;\n    } else {\n      var f = parseFloat(\"0.\" + fraction) * 1000;\n      return Math.floor(f);\n    }\n  }\n  function roundTo(number, digits, towardZero) {\n    if (towardZero === void 0) {\n      towardZero = false;\n    }\n    var factor = Math.pow(10, digits),\n      rounder = towardZero ? Math.trunc : Math.round;\n    return rounder(number * factor) / factor;\n  }\n\n  // DATE BASICS\n\n  function isLeapYear(year) {\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n  }\n  function daysInYear(year) {\n    return isLeapYear(year) ? 366 : 365;\n  }\n  function daysInMonth(year, month) {\n    var modMonth = floorMod(month - 1, 12) + 1,\n      modYear = year + (month - modMonth) / 12;\n    if (modMonth === 2) {\n      return isLeapYear(modYear) ? 29 : 28;\n    } else {\n      return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n    }\n  }\n\n  // convert a calendar object to a local timestamp (epoch, but with the offset baked in)\n  function objToLocalTS(obj) {\n    var d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond);\n\n    // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n    if (obj.year < 100 && obj.year >= 0) {\n      d = new Date(d);\n      // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n      // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n      // the calculations done by Date.UTC are using year 2000 - which is incorrect\n      d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n    }\n    return +d;\n  }\n\n  // adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\n  function firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n    var fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n    return -fwdlw + minDaysInFirstWeek - 1;\n  }\n  function weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek) {\n    if (minDaysInFirstWeek === void 0) {\n      minDaysInFirstWeek = 4;\n    }\n    if (startOfWeek === void 0) {\n      startOfWeek = 1;\n    }\n    var weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n    var weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n    return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n  }\n  function untruncateYear(year) {\n    if (year > 99) {\n      return year;\n    } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n  }\n\n  // PARSING\n\n  function parseZoneInfo(ts, offsetFormat, locale, timeZone) {\n    if (timeZone === void 0) {\n      timeZone = null;\n    }\n    var date = new Date(ts),\n      intlOpts = {\n        hourCycle: \"h23\",\n        year: \"numeric\",\n        month: \"2-digit\",\n        day: \"2-digit\",\n        hour: \"2-digit\",\n        minute: \"2-digit\"\n      };\n    if (timeZone) {\n      intlOpts.timeZone = timeZone;\n    }\n    var modified = _extends({\n      timeZoneName: offsetFormat\n    }, intlOpts);\n    var parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find(function (m) {\n      return m.type.toLowerCase() === \"timezonename\";\n    });\n    return parsed ? parsed.value : null;\n  }\n\n  // signedOffset('-5', '30') -> -330\n  function signedOffset(offHourStr, offMinuteStr) {\n    var offHour = parseInt(offHourStr, 10);\n\n    // don't || this because we want to preserve -0\n    if (Number.isNaN(offHour)) {\n      offHour = 0;\n    }\n    var offMin = parseInt(offMinuteStr, 10) || 0,\n      offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n    return offHour * 60 + offMinSigned;\n  }\n\n  // COERCION\n\n  function asNumber(value) {\n    var numericValue = Number(value);\n    if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue)) throw new InvalidArgumentError(\"Invalid unit value \" + value);\n    return numericValue;\n  }\n  function normalizeObject(obj, normalizer) {\n    var normalized = {};\n    for (var u in obj) {\n      if (hasOwnProperty(obj, u)) {\n        var v = obj[u];\n        if (v === undefined || v === null) continue;\n        normalized[normalizer(u)] = asNumber(v);\n      }\n    }\n    return normalized;\n  }\n\n  /**\n   * Returns the offset's value as a string\n   * @param {number} ts - Epoch milliseconds for which to get the offset\n   * @param {string} format - What style of offset to return.\n   *                          Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n   * @return {string}\n   */\n  function formatOffset(offset, format) {\n    var hours = Math.trunc(Math.abs(offset / 60)),\n      minutes = Math.trunc(Math.abs(offset % 60)),\n      sign = offset >= 0 ? \"+\" : \"-\";\n    switch (format) {\n      case \"short\":\n        return \"\" + sign + padStart(hours, 2) + \":\" + padStart(minutes, 2);\n      case \"narrow\":\n        return \"\" + sign + hours + (minutes > 0 ? \":\" + minutes : \"\");\n      case \"techie\":\n        return \"\" + sign + padStart(hours, 2) + padStart(minutes, 2);\n      default:\n        throw new RangeError(\"Value format \" + format + \" is out of range for property format\");\n    }\n  }\n  function timeObject(obj) {\n    return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n  }\n\n  /**\n   * @private\n   */\n\n  var monthsLong = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n  var monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n  var monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n  function months(length) {\n    switch (length) {\n      case \"narrow\":\n        return [].concat(monthsNarrow);\n      case \"short\":\n        return [].concat(monthsShort);\n      case \"long\":\n        return [].concat(monthsLong);\n      case \"numeric\":\n        return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n      case \"2-digit\":\n        return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n      default:\n        return null;\n    }\n  }\n  var weekdaysLong = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"];\n  var weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n  var weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n  function weekdays(length) {\n    switch (length) {\n      case \"narrow\":\n        return [].concat(weekdaysNarrow);\n      case \"short\":\n        return [].concat(weekdaysShort);\n      case \"long\":\n        return [].concat(weekdaysLong);\n      case \"numeric\":\n        return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n      default:\n        return null;\n    }\n  }\n  var meridiems = [\"AM\", \"PM\"];\n  var erasLong = [\"Before Christ\", \"Anno Domini\"];\n  var erasShort = [\"BC\", \"AD\"];\n  var erasNarrow = [\"B\", \"A\"];\n  function eras(length) {\n    switch (length) {\n      case \"narrow\":\n        return [].concat(erasNarrow);\n      case \"short\":\n        return [].concat(erasShort);\n      case \"long\":\n        return [].concat(erasLong);\n      default:\n        return null;\n    }\n  }\n  function meridiemForDateTime(dt) {\n    return meridiems[dt.hour < 12 ? 0 : 1];\n  }\n  function weekdayForDateTime(dt, length) {\n    return weekdays(length)[dt.weekday - 1];\n  }\n  function monthForDateTime(dt, length) {\n    return months(length)[dt.month - 1];\n  }\n  function eraForDateTime(dt, length) {\n    return eras(length)[dt.year < 0 ? 0 : 1];\n  }\n  function formatRelativeTime(unit, count, numeric, narrow) {\n    if (numeric === void 0) {\n      numeric = \"always\";\n    }\n    if (narrow === void 0) {\n      narrow = false;\n    }\n    var units = {\n      years: [\"year\", \"yr.\"],\n      quarters: [\"quarter\", \"qtr.\"],\n      months: [\"month\", \"mo.\"],\n      weeks: [\"week\", \"wk.\"],\n      days: [\"day\", \"day\", \"days\"],\n      hours: [\"hour\", \"hr.\"],\n      minutes: [\"minute\", \"min.\"],\n      seconds: [\"second\", \"sec.\"]\n    };\n    var lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n    if (numeric === \"auto\" && lastable) {\n      var isDay = unit === \"days\";\n      switch (count) {\n        case 1:\n          return isDay ? \"tomorrow\" : \"next \" + units[unit][0];\n        case -1:\n          return isDay ? \"yesterday\" : \"last \" + units[unit][0];\n        case 0:\n          return isDay ? \"today\" : \"this \" + units[unit][0];\n      }\n    }\n\n    var isInPast = Object.is(count, -0) || count < 0,\n      fmtValue = Math.abs(count),\n      singular = fmtValue === 1,\n      lilUnits = units[unit],\n      fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit;\n    return isInPast ? fmtValue + \" \" + fmtUnit + \" ago\" : \"in \" + fmtValue + \" \" + fmtUnit;\n  }\n\n  function stringifyTokens(splits, tokenToString) {\n    var s = \"\";\n    for (var _iterator = _createForOfIteratorHelperLoose(splits), _step; !(_step = _iterator()).done;) {\n      var token = _step.value;\n      if (token.literal) {\n        s += token.val;\n      } else {\n        s += tokenToString(token.val);\n      }\n    }\n    return s;\n  }\n  var _macroTokenToFormatOpts = {\n    D: DATE_SHORT,\n    DD: DATE_MED,\n    DDD: DATE_FULL,\n    DDDD: DATE_HUGE,\n    t: TIME_SIMPLE,\n    tt: TIME_WITH_SECONDS,\n    ttt: TIME_WITH_SHORT_OFFSET,\n    tttt: TIME_WITH_LONG_OFFSET,\n    T: TIME_24_SIMPLE,\n    TT: TIME_24_WITH_SECONDS,\n    TTT: TIME_24_WITH_SHORT_OFFSET,\n    TTTT: TIME_24_WITH_LONG_OFFSET,\n    f: DATETIME_SHORT,\n    ff: DATETIME_MED,\n    fff: DATETIME_FULL,\n    ffff: DATETIME_HUGE,\n    F: DATETIME_SHORT_WITH_SECONDS,\n    FF: DATETIME_MED_WITH_SECONDS,\n    FFF: DATETIME_FULL_WITH_SECONDS,\n    FFFF: DATETIME_HUGE_WITH_SECONDS\n  };\n\n  /**\n   * @private\n   */\n  var Formatter = /*#__PURE__*/function () {\n    Formatter.create = function create(locale, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return new Formatter(locale, opts);\n    };\n    Formatter.parseFormat = function parseFormat(fmt) {\n      // white-space is always considered a literal in user-provided formats\n      // the \" \" token has a special meaning (see unitForToken)\n\n      var current = null,\n        currentFull = \"\",\n        bracketed = false;\n      var splits = [];\n      for (var i = 0; i < fmt.length; i++) {\n        var c = fmt.charAt(i);\n        if (c === \"'\") {\n          if (currentFull.length > 0) {\n            splits.push({\n              literal: bracketed || /^\\s+$/.test(currentFull),\n              val: currentFull\n            });\n          }\n          current = null;\n          currentFull = \"\";\n          bracketed = !bracketed;\n        } else if (bracketed) {\n          currentFull += c;\n        } else if (c === current) {\n          currentFull += c;\n        } else {\n          if (currentFull.length > 0) {\n            splits.push({\n              literal: /^\\s+$/.test(currentFull),\n              val: currentFull\n            });\n          }\n          currentFull = c;\n          current = c;\n        }\n      }\n      if (currentFull.length > 0) {\n        splits.push({\n          literal: bracketed || /^\\s+$/.test(currentFull),\n          val: currentFull\n        });\n      }\n      return splits;\n    };\n    Formatter.macroTokenToFormatOpts = function macroTokenToFormatOpts(token) {\n      return _macroTokenToFormatOpts[token];\n    };\n    function Formatter(locale, formatOpts) {\n      this.opts = formatOpts;\n      this.loc = locale;\n      this.systemLoc = null;\n    }\n    var _proto = Formatter.prototype;\n    _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) {\n      if (this.systemLoc === null) {\n        this.systemLoc = this.loc.redefaultToSystem();\n      }\n      var df = this.systemLoc.dtFormatter(dt, _extends({}, this.opts, opts));\n      return df.format();\n    };\n    _proto.dtFormatter = function dtFormatter(dt, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.loc.dtFormatter(dt, _extends({}, this.opts, opts));\n    };\n    _proto.formatDateTime = function formatDateTime(dt, opts) {\n      return this.dtFormatter(dt, opts).format();\n    };\n    _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) {\n      return this.dtFormatter(dt, opts).formatToParts();\n    };\n    _proto.formatInterval = function formatInterval(interval, opts) {\n      var df = this.dtFormatter(interval.start, opts);\n      return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n    };\n    _proto.resolvedOptions = function resolvedOptions(dt, opts) {\n      return this.dtFormatter(dt, opts).resolvedOptions();\n    };\n    _proto.num = function num(n, p) {\n      if (p === void 0) {\n        p = 0;\n      }\n      // we get some perf out of doing this here, annoyingly\n      if (this.opts.forceSimple) {\n        return padStart(n, p);\n      }\n      var opts = _extends({}, this.opts);\n      if (p > 0) {\n        opts.padTo = p;\n      }\n      return this.loc.numberFormatter(opts).format(n);\n    };\n    _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) {\n      var _this = this;\n      var knownEnglish = this.loc.listingMode() === \"en\",\n        useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n        string = function string(opts, extract) {\n          return _this.loc.extract(dt, opts, extract);\n        },\n        formatOffset = function formatOffset(opts) {\n          if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n            return \"Z\";\n          }\n          return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n        },\n        meridiem = function meridiem() {\n          return knownEnglish ? meridiemForDateTime(dt) : string({\n            hour: \"numeric\",\n            hourCycle: \"h12\"\n          }, \"dayperiod\");\n        },\n        month = function month(length, standalone) {\n          return knownEnglish ? monthForDateTime(dt, length) : string(standalone ? {\n            month: length\n          } : {\n            month: length,\n            day: \"numeric\"\n          }, \"month\");\n        },\n        weekday = function weekday(length, standalone) {\n          return knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? {\n            weekday: length\n          } : {\n            weekday: length,\n            month: \"long\",\n            day: \"numeric\"\n          }, \"weekday\");\n        },\n        maybeMacro = function maybeMacro(token) {\n          var formatOpts = Formatter.macroTokenToFormatOpts(token);\n          if (formatOpts) {\n            return _this.formatWithSystemDefault(dt, formatOpts);\n          } else {\n            return token;\n          }\n        },\n        era = function era(length) {\n          return knownEnglish ? eraForDateTime(dt, length) : string({\n            era: length\n          }, \"era\");\n        },\n        tokenToString = function tokenToString(token) {\n          // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n          switch (token) {\n            // ms\n            case \"S\":\n              return _this.num(dt.millisecond);\n            case \"u\":\n            // falls through\n            case \"SSS\":\n              return _this.num(dt.millisecond, 3);\n            // seconds\n            case \"s\":\n              return _this.num(dt.second);\n            case \"ss\":\n              return _this.num(dt.second, 2);\n            // fractional seconds\n            case \"uu\":\n              return _this.num(Math.floor(dt.millisecond / 10), 2);\n            case \"uuu\":\n              return _this.num(Math.floor(dt.millisecond / 100));\n            // minutes\n            case \"m\":\n              return _this.num(dt.minute);\n            case \"mm\":\n              return _this.num(dt.minute, 2);\n            // hours\n            case \"h\":\n              return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n            case \"hh\":\n              return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n            case \"H\":\n              return _this.num(dt.hour);\n            case \"HH\":\n              return _this.num(dt.hour, 2);\n            // offset\n            case \"Z\":\n              // like +6\n              return formatOffset({\n                format: \"narrow\",\n                allowZ: _this.opts.allowZ\n              });\n            case \"ZZ\":\n              // like +06:00\n              return formatOffset({\n                format: \"short\",\n                allowZ: _this.opts.allowZ\n              });\n            case \"ZZZ\":\n              // like +0600\n              return formatOffset({\n                format: \"techie\",\n                allowZ: _this.opts.allowZ\n              });\n            case \"ZZZZ\":\n              // like EST\n              return dt.zone.offsetName(dt.ts, {\n                format: \"short\",\n                locale: _this.loc.locale\n              });\n            case \"ZZZZZ\":\n              // like Eastern Standard Time\n              return dt.zone.offsetName(dt.ts, {\n                format: \"long\",\n                locale: _this.loc.locale\n              });\n            // zone\n            case \"z\":\n              // like America/New_York\n              return dt.zoneName;\n            // meridiems\n            case \"a\":\n              return meridiem();\n            // dates\n            case \"d\":\n              return useDateTimeFormatter ? string({\n                day: \"numeric\"\n              }, \"day\") : _this.num(dt.day);\n            case \"dd\":\n              return useDateTimeFormatter ? string({\n                day: \"2-digit\"\n              }, \"day\") : _this.num(dt.day, 2);\n            // weekdays - standalone\n            case \"c\":\n              // like 1\n              return _this.num(dt.weekday);\n            case \"ccc\":\n              // like 'Tues'\n              return weekday(\"short\", true);\n            case \"cccc\":\n              // like 'Tuesday'\n              return weekday(\"long\", true);\n            case \"ccccc\":\n              // like 'T'\n              return weekday(\"narrow\", true);\n            // weekdays - format\n            case \"E\":\n              // like 1\n              return _this.num(dt.weekday);\n            case \"EEE\":\n              // like 'Tues'\n              return weekday(\"short\", false);\n            case \"EEEE\":\n              // like 'Tuesday'\n              return weekday(\"long\", false);\n            case \"EEEEE\":\n              // like 'T'\n              return weekday(\"narrow\", false);\n            // months - standalone\n            case \"L\":\n              // like 1\n              return useDateTimeFormatter ? string({\n                month: \"numeric\",\n                day: \"numeric\"\n              }, \"month\") : _this.num(dt.month);\n            case \"LL\":\n              // like 01, doesn't seem to work\n              return useDateTimeFormatter ? string({\n                month: \"2-digit\",\n                day: \"numeric\"\n              }, \"month\") : _this.num(dt.month, 2);\n            case \"LLL\":\n              // like Jan\n              return month(\"short\", true);\n            case \"LLLL\":\n              // like January\n              return month(\"long\", true);\n            case \"LLLLL\":\n              // like J\n              return month(\"narrow\", true);\n            // months - format\n            case \"M\":\n              // like 1\n              return useDateTimeFormatter ? string({\n                month: \"numeric\"\n              }, \"month\") : _this.num(dt.month);\n            case \"MM\":\n              // like 01\n              return useDateTimeFormatter ? string({\n                month: \"2-digit\"\n              }, \"month\") : _this.num(dt.month, 2);\n            case \"MMM\":\n              // like Jan\n              return month(\"short\", false);\n            case \"MMMM\":\n              // like January\n              return month(\"long\", false);\n            case \"MMMMM\":\n              // like J\n              return month(\"narrow\", false);\n            // years\n            case \"y\":\n              // like 2014\n              return useDateTimeFormatter ? string({\n                year: \"numeric\"\n              }, \"year\") : _this.num(dt.year);\n            case \"yy\":\n              // like 14\n              return useDateTimeFormatter ? string({\n                year: \"2-digit\"\n              }, \"year\") : _this.num(dt.year.toString().slice(-2), 2);\n            case \"yyyy\":\n              // like 0012\n              return useDateTimeFormatter ? string({\n                year: \"numeric\"\n              }, \"year\") : _this.num(dt.year, 4);\n            case \"yyyyyy\":\n              // like 000012\n              return useDateTimeFormatter ? string({\n                year: \"numeric\"\n              }, \"year\") : _this.num(dt.year, 6);\n            // eras\n            case \"G\":\n              // like AD\n              return era(\"short\");\n            case \"GG\":\n              // like Anno Domini\n              return era(\"long\");\n            case \"GGGGG\":\n              return era(\"narrow\");\n            case \"kk\":\n              return _this.num(dt.weekYear.toString().slice(-2), 2);\n            case \"kkkk\":\n              return _this.num(dt.weekYear, 4);\n            case \"W\":\n              return _this.num(dt.weekNumber);\n            case \"WW\":\n              return _this.num(dt.weekNumber, 2);\n            case \"n\":\n              return _this.num(dt.localWeekNumber);\n            case \"nn\":\n              return _this.num(dt.localWeekNumber, 2);\n            case \"ii\":\n              return _this.num(dt.localWeekYear.toString().slice(-2), 2);\n            case \"iiii\":\n              return _this.num(dt.localWeekYear, 4);\n            case \"o\":\n              return _this.num(dt.ordinal);\n            case \"ooo\":\n              return _this.num(dt.ordinal, 3);\n            case \"q\":\n              // like 1\n              return _this.num(dt.quarter);\n            case \"qq\":\n              // like 01\n              return _this.num(dt.quarter, 2);\n            case \"X\":\n              return _this.num(Math.floor(dt.ts / 1000));\n            case \"x\":\n              return _this.num(dt.ts);\n            default:\n              return maybeMacro(token);\n          }\n        };\n      return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n    };\n    _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) {\n      var _this2 = this;\n      var tokenToField = function tokenToField(token) {\n          switch (token[0]) {\n            case \"S\":\n              return \"millisecond\";\n            case \"s\":\n              return \"second\";\n            case \"m\":\n              return \"minute\";\n            case \"h\":\n              return \"hour\";\n            case \"d\":\n              return \"day\";\n            case \"w\":\n              return \"week\";\n            case \"M\":\n              return \"month\";\n            case \"y\":\n              return \"year\";\n            default:\n              return null;\n          }\n        },\n        tokenToString = function tokenToString(lildur) {\n          return function (token) {\n            var mapped = tokenToField(token);\n            if (mapped) {\n              return _this2.num(lildur.get(mapped), token.length);\n            } else {\n              return token;\n            }\n          };\n        },\n        tokens = Formatter.parseFormat(fmt),\n        realTokens = tokens.reduce(function (found, _ref) {\n          var literal = _ref.literal,\n            val = _ref.val;\n          return literal ? found : found.concat(val);\n        }, []),\n        collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) {\n          return t;\n        }));\n      return stringifyTokens(tokens, tokenToString(collapsed));\n    };\n    return Formatter;\n  }();\n\n  /*\n   * This file handles parsing for well-specified formats. Here's how it works:\n   * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n   * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n   * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n   * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n   * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n   * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n   */\n\n  var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n  function combineRegexes() {\n    for (var _len = arguments.length, regexes = new Array(_len), _key = 0; _key < _len; _key++) {\n      regexes[_key] = arguments[_key];\n    }\n    var full = regexes.reduce(function (f, r) {\n      return f + r.source;\n    }, \"\");\n    return RegExp(\"^\" + full + \"$\");\n  }\n  function combineExtractors() {\n    for (var _len2 = arguments.length, extractors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      extractors[_key2] = arguments[_key2];\n    }\n    return function (m) {\n      return extractors.reduce(function (_ref, ex) {\n        var mergedVals = _ref[0],\n          mergedZone = _ref[1],\n          cursor = _ref[2];\n        var _ex = ex(m, cursor),\n          val = _ex[0],\n          zone = _ex[1],\n          next = _ex[2];\n        return [_extends({}, mergedVals, val), zone || mergedZone, next];\n      }, [{}, null, 1]).slice(0, 2);\n    };\n  }\n  function parse(s) {\n    if (s == null) {\n      return [null, null];\n    }\n    for (var _len3 = arguments.length, patterns = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      patterns[_key3 - 1] = arguments[_key3];\n    }\n    for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) {\n      var _patterns$_i = _patterns[_i],\n        regex = _patterns$_i[0],\n        extractor = _patterns$_i[1];\n      var m = regex.exec(s);\n      if (m) {\n        return extractor(m);\n      }\n    }\n    return [null, null];\n  }\n  function simpleParse() {\n    for (var _len4 = arguments.length, keys = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      keys[_key4] = arguments[_key4];\n    }\n    return function (match, cursor) {\n      var ret = {};\n      var i;\n      for (i = 0; i < keys.length; i++) {\n        ret[keys[i]] = parseInteger(match[cursor + i]);\n      }\n      return [ret, null, cursor + i];\n    };\n  }\n\n  // ISO and SQL parsing\n  var offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\n  var isoExtendedZone = \"(?:\" + offsetRegex.source + \"?(?:\\\\[(\" + ianaRegex.source + \")\\\\])?)?\";\n  var isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\n  var isoTimeRegex = RegExp(\"\" + isoTimeBaseRegex.source + isoExtendedZone);\n  var isoTimeExtensionRegex = RegExp(\"(?:T\" + isoTimeRegex.source + \")?\");\n  var isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\n  var isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\n  var isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\n  var extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\n  var extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\n  var sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\n  var sqlTimeRegex = RegExp(isoTimeBaseRegex.source + \" ?(?:\" + offsetRegex.source + \"|(\" + ianaRegex.source + \"))?\");\n  var sqlTimeExtensionRegex = RegExp(\"(?: \" + sqlTimeRegex.source + \")?\");\n  function int(match, pos, fallback) {\n    var m = match[pos];\n    return isUndefined(m) ? fallback : parseInteger(m);\n  }\n  function extractISOYmd(match, cursor) {\n    var item = {\n      year: int(match, cursor),\n      month: int(match, cursor + 1, 1),\n      day: int(match, cursor + 2, 1)\n    };\n    return [item, null, cursor + 3];\n  }\n  function extractISOTime(match, cursor) {\n    var item = {\n      hours: int(match, cursor, 0),\n      minutes: int(match, cursor + 1, 0),\n      seconds: int(match, cursor + 2, 0),\n      milliseconds: parseMillis(match[cursor + 3])\n    };\n    return [item, null, cursor + 4];\n  }\n  function extractISOOffset(match, cursor) {\n    var local = !match[cursor] && !match[cursor + 1],\n      fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n      zone = local ? null : FixedOffsetZone.instance(fullOffset);\n    return [{}, zone, cursor + 3];\n  }\n  function extractIANAZone(match, cursor) {\n    var zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n    return [{}, zone, cursor + 1];\n  }\n\n  // ISO time parsing\n\n  var isoTimeOnly = RegExp(\"^T?\" + isoTimeBaseRegex.source + \"$\");\n\n  // ISO duration parsing\n\n  var isoDuration = /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n  function extractISODuration(match) {\n    var s = match[0],\n      yearStr = match[1],\n      monthStr = match[2],\n      weekStr = match[3],\n      dayStr = match[4],\n      hourStr = match[5],\n      minuteStr = match[6],\n      secondStr = match[7],\n      millisecondsStr = match[8];\n    var hasNegativePrefix = s[0] === \"-\";\n    var negativeSeconds = secondStr && secondStr[0] === \"-\";\n    var maybeNegate = function maybeNegate(num, force) {\n      if (force === void 0) {\n        force = false;\n      }\n      return num !== undefined && (force || num && hasNegativePrefix) ? -num : num;\n    };\n    return [{\n      years: maybeNegate(parseFloating(yearStr)),\n      months: maybeNegate(parseFloating(monthStr)),\n      weeks: maybeNegate(parseFloating(weekStr)),\n      days: maybeNegate(parseFloating(dayStr)),\n      hours: maybeNegate(parseFloating(hourStr)),\n      minutes: maybeNegate(parseFloating(minuteStr)),\n      seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n      milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)\n    }];\n  }\n\n  // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n  // and not just that we're in -240 *right now*. But since I don't think these are used that often\n  // I'm just going to ignore that\n  var obsOffsets = {\n    GMT: 0,\n    EDT: -4 * 60,\n    EST: -5 * 60,\n    CDT: -5 * 60,\n    CST: -6 * 60,\n    MDT: -6 * 60,\n    MST: -7 * 60,\n    PDT: -7 * 60,\n    PST: -8 * 60\n  };\n  function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n    var result = {\n      year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n      month: monthsShort.indexOf(monthStr) + 1,\n      day: parseInteger(dayStr),\n      hour: parseInteger(hourStr),\n      minute: parseInteger(minuteStr)\n    };\n    if (secondStr) result.second = parseInteger(secondStr);\n    if (weekdayStr) {\n      result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1;\n    }\n    return result;\n  }\n\n  // RFC 2822/5322\n  var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n  function extractRFC2822(match) {\n    var weekdayStr = match[1],\n      dayStr = match[2],\n      monthStr = match[3],\n      yearStr = match[4],\n      hourStr = match[5],\n      minuteStr = match[6],\n      secondStr = match[7],\n      obsOffset = match[8],\n      milOffset = match[9],\n      offHourStr = match[10],\n      offMinuteStr = match[11],\n      result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n    var offset;\n    if (obsOffset) {\n      offset = obsOffsets[obsOffset];\n    } else if (milOffset) {\n      offset = 0;\n    } else {\n      offset = signedOffset(offHourStr, offMinuteStr);\n    }\n    return [result, new FixedOffsetZone(offset)];\n  }\n  function preprocessRFC2822(s) {\n    // Remove comments and folding whitespace and replace multiple-spaces with a single space\n    return s.replace(/\\([^()]*\\)|[\\n\\t]/g, \" \").replace(/(\\s\\s+)/g, \" \").trim();\n  }\n\n  // http date\n\n  var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n    rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n    ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n  function extractRFC1123Or850(match) {\n    var weekdayStr = match[1],\n      dayStr = match[2],\n      monthStr = match[3],\n      yearStr = match[4],\n      hourStr = match[5],\n      minuteStr = match[6],\n      secondStr = match[7],\n      result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n    return [result, FixedOffsetZone.utcInstance];\n  }\n  function extractASCII(match) {\n    var weekdayStr = match[1],\n      monthStr = match[2],\n      dayStr = match[3],\n      hourStr = match[4],\n      minuteStr = match[5],\n      secondStr = match[6],\n      yearStr = match[7],\n      result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n    return [result, FixedOffsetZone.utcInstance];\n  }\n  var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\n  var isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\n  var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\n  var isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n  var extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone);\n  var extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset, extractIANAZone);\n  var extractISOOrdinalDateAndTime = combineExtractors(extractISOOrdinalData, extractISOTime, extractISOOffset, extractIANAZone);\n  var extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\n\n  /*\n   * @private\n   */\n\n  function parseISODate(s) {\n    return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);\n  }\n  function parseRFC2822Date(s) {\n    return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n  }\n  function parseHTTPDate(s) {\n    return parse(s, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]);\n  }\n  function parseISODuration(s) {\n    return parse(s, [isoDuration, extractISODuration]);\n  }\n  var extractISOTimeOnly = combineExtractors(extractISOTime);\n  function parseISOTimeOnly(s) {\n    return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n  }\n  var sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\n  var sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n  var extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\n  function parseSQL(s) {\n    return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]);\n  }\n\n  var INVALID$2 = \"Invalid Duration\";\n\n  // unit conversion constants\n  var lowOrderMatrix = {\n      weeks: {\n        days: 7,\n        hours: 7 * 24,\n        minutes: 7 * 24 * 60,\n        seconds: 7 * 24 * 60 * 60,\n        milliseconds: 7 * 24 * 60 * 60 * 1000\n      },\n      days: {\n        hours: 24,\n        minutes: 24 * 60,\n        seconds: 24 * 60 * 60,\n        milliseconds: 24 * 60 * 60 * 1000\n      },\n      hours: {\n        minutes: 60,\n        seconds: 60 * 60,\n        milliseconds: 60 * 60 * 1000\n      },\n      minutes: {\n        seconds: 60,\n        milliseconds: 60 * 1000\n      },\n      seconds: {\n        milliseconds: 1000\n      }\n    },\n    casualMatrix = _extends({\n      years: {\n        quarters: 4,\n        months: 12,\n        weeks: 52,\n        days: 365,\n        hours: 365 * 24,\n        minutes: 365 * 24 * 60,\n        seconds: 365 * 24 * 60 * 60,\n        milliseconds: 365 * 24 * 60 * 60 * 1000\n      },\n      quarters: {\n        months: 3,\n        weeks: 13,\n        days: 91,\n        hours: 91 * 24,\n        minutes: 91 * 24 * 60,\n        seconds: 91 * 24 * 60 * 60,\n        milliseconds: 91 * 24 * 60 * 60 * 1000\n      },\n      months: {\n        weeks: 4,\n        days: 30,\n        hours: 30 * 24,\n        minutes: 30 * 24 * 60,\n        seconds: 30 * 24 * 60 * 60,\n        milliseconds: 30 * 24 * 60 * 60 * 1000\n      }\n    }, lowOrderMatrix),\n    daysInYearAccurate = 146097.0 / 400,\n    daysInMonthAccurate = 146097.0 / 4800,\n    accurateMatrix = _extends({\n      years: {\n        quarters: 4,\n        months: 12,\n        weeks: daysInYearAccurate / 7,\n        days: daysInYearAccurate,\n        hours: daysInYearAccurate * 24,\n        minutes: daysInYearAccurate * 24 * 60,\n        seconds: daysInYearAccurate * 24 * 60 * 60,\n        milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n      },\n      quarters: {\n        months: 3,\n        weeks: daysInYearAccurate / 28,\n        days: daysInYearAccurate / 4,\n        hours: daysInYearAccurate * 24 / 4,\n        minutes: daysInYearAccurate * 24 * 60 / 4,\n        seconds: daysInYearAccurate * 24 * 60 * 60 / 4,\n        milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 / 4\n      },\n      months: {\n        weeks: daysInMonthAccurate / 7,\n        days: daysInMonthAccurate,\n        hours: daysInMonthAccurate * 24,\n        minutes: daysInMonthAccurate * 24 * 60,\n        seconds: daysInMonthAccurate * 24 * 60 * 60,\n        milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n      }\n    }, lowOrderMatrix);\n\n  // units ordered by size\n  var orderedUnits$1 = [\"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\n  var reverseUnits = orderedUnits$1.slice(0).reverse();\n\n  // clone really means \"create another instance just like this one, but with these changes\"\n  function clone$1(dur, alts, clear) {\n    if (clear === void 0) {\n      clear = false;\n    }\n    // deep merge for vals\n    var conf = {\n      values: clear ? alts.values : _extends({}, dur.values, alts.values || {}),\n      loc: dur.loc.clone(alts.loc),\n      conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n      matrix: alts.matrix || dur.matrix\n    };\n    return new Duration(conf);\n  }\n  function durationToMillis(matrix, vals) {\n    var _vals$milliseconds;\n    var sum = (_vals$milliseconds = vals.milliseconds) != null ? _vals$milliseconds : 0;\n    for (var _iterator = _createForOfIteratorHelperLoose(reverseUnits.slice(1)), _step; !(_step = _iterator()).done;) {\n      var unit = _step.value;\n      if (vals[unit]) {\n        sum += vals[unit] * matrix[unit][\"milliseconds\"];\n      }\n    }\n    return sum;\n  }\n\n  // NB: mutates parameters\n  function normalizeValues(matrix, vals) {\n    // the logic below assumes the overall value of the duration is positive\n    // if this is not the case, factor is used to make it so\n    var factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n    orderedUnits$1.reduceRight(function (previous, current) {\n      if (!isUndefined(vals[current])) {\n        if (previous) {\n          var previousVal = vals[previous] * factor;\n          var conv = matrix[current][previous];\n\n          // if (previousVal < 0):\n          // lower order unit is negative (e.g. { years: 2, days: -2 })\n          // normalize this by reducing the higher order unit by the appropriate amount\n          // and increasing the lower order unit\n          // this can never make the higher order unit negative, because this function only operates\n          // on positive durations, so the amount of time represented by the lower order unit cannot\n          // be larger than the higher order unit\n          // else:\n          // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n          // in this case we attempt to convert as much as possible from the lower order unit into\n          // the higher order one\n          //\n          // Math.floor takes care of both of these cases, rounding away from 0\n          // if previousVal < 0 it makes the absolute value larger\n          // if previousVal >= it makes the absolute value smaller\n          var rollUp = Math.floor(previousVal / conv);\n          vals[current] += rollUp * factor;\n          vals[previous] -= rollUp * conv * factor;\n        }\n        return current;\n      } else {\n        return previous;\n      }\n    }, null);\n\n    // try to convert any decimals into smaller units if possible\n    // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n    orderedUnits$1.reduce(function (previous, current) {\n      if (!isUndefined(vals[current])) {\n        if (previous) {\n          var fraction = vals[previous] % 1;\n          vals[previous] -= fraction;\n          vals[current] += fraction * matrix[previous][current];\n        }\n        return current;\n      } else {\n        return previous;\n      }\n    }, null);\n  }\n\n  // Remove all properties with a value of 0 from an object\n  function removeZeroes(vals) {\n    var newVals = {};\n    for (var _i = 0, _Object$entries = Object.entries(vals); _i < _Object$entries.length; _i++) {\n      var _Object$entries$_i = _Object$entries[_i],\n        key = _Object$entries$_i[0],\n        value = _Object$entries$_i[1];\n      if (value !== 0) {\n        newVals[key] = value;\n      }\n    }\n    return newVals;\n  }\n\n  /**\n   * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n   *\n   * Here is a brief overview of commonly used methods and getters in Duration:\n   *\n   * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n   * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n   * * **Configuration** See  {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n   * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n   * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n   *\n   * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n   */\n  var Duration = /*#__PURE__*/function (_Symbol$for) {\n    /**\n     * @private\n     */\n    function Duration(config) {\n      var accurate = config.conversionAccuracy === \"longterm\" || false;\n      var matrix = accurate ? accurateMatrix : casualMatrix;\n      if (config.matrix) {\n        matrix = config.matrix;\n      }\n\n      /**\n       * @access private\n       */\n      this.values = config.values;\n      /**\n       * @access private\n       */\n      this.loc = config.loc || Locale.create();\n      /**\n       * @access private\n       */\n      this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n      /**\n       * @access private\n       */\n      this.invalid = config.invalid || null;\n      /**\n       * @access private\n       */\n      this.matrix = matrix;\n      /**\n       * @access private\n       */\n      this.isLuxonDuration = true;\n    }\n\n    /**\n     * Create Duration from a number of milliseconds.\n     * @param {number} count of milliseconds\n     * @param {Object} opts - options for parsing\n     * @param {string} [opts.locale='en-US'] - the locale to use\n     * @param {string} opts.numberingSystem - the numbering system to use\n     * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n     * @return {Duration}\n     */\n    Duration.fromMillis = function fromMillis(count, opts) {\n      return Duration.fromObject({\n        milliseconds: count\n      }, opts);\n    }\n\n    /**\n     * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n     * If this object is empty then a zero milliseconds duration is returned.\n     * @param {Object} obj - the object to create the DateTime from\n     * @param {number} obj.years\n     * @param {number} obj.quarters\n     * @param {number} obj.months\n     * @param {number} obj.weeks\n     * @param {number} obj.days\n     * @param {number} obj.hours\n     * @param {number} obj.minutes\n     * @param {number} obj.seconds\n     * @param {number} obj.milliseconds\n     * @param {Object} [opts=[]] - options for creating this Duration\n     * @param {string} [opts.locale='en-US'] - the locale to use\n     * @param {string} opts.numberingSystem - the numbering system to use\n     * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n     * @param {string} [opts.matrix=Object] - the custom conversion system to use\n     * @return {Duration}\n     */;\n    Duration.fromObject = function fromObject(obj, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (obj == null || typeof obj !== \"object\") {\n        throw new InvalidArgumentError(\"Duration.fromObject: argument expected to be an object, got \" + (obj === null ? \"null\" : typeof obj));\n      }\n      return new Duration({\n        values: normalizeObject(obj, Duration.normalizeUnit),\n        loc: Locale.fromObject(opts),\n        conversionAccuracy: opts.conversionAccuracy,\n        matrix: opts.matrix\n      });\n    }\n\n    /**\n     * Create a Duration from DurationLike.\n     *\n     * @param {Object | number | Duration} durationLike\n     * One of:\n     * - object with keys like 'years' and 'hours'.\n     * - number representing milliseconds\n     * - Duration instance\n     * @return {Duration}\n     */;\n    Duration.fromDurationLike = function fromDurationLike(durationLike) {\n      if (isNumber(durationLike)) {\n        return Duration.fromMillis(durationLike);\n      } else if (Duration.isDuration(durationLike)) {\n        return durationLike;\n      } else if (typeof durationLike === \"object\") {\n        return Duration.fromObject(durationLike);\n      } else {\n        throw new InvalidArgumentError(\"Unknown duration argument \" + durationLike + \" of type \" + typeof durationLike);\n      }\n    }\n\n    /**\n     * Create a Duration from an ISO 8601 duration string.\n     * @param {string} text - text to parse\n     * @param {Object} opts - options for parsing\n     * @param {string} [opts.locale='en-US'] - the locale to use\n     * @param {string} opts.numberingSystem - the numbering system to use\n     * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n     * @param {string} [opts.matrix=Object] - the preset conversion system to use\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n     * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n     * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n     * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n     * @return {Duration}\n     */;\n    Duration.fromISO = function fromISO(text, opts) {\n      var _parseISODuration = parseISODuration(text),\n        parsed = _parseISODuration[0];\n      if (parsed) {\n        return Duration.fromObject(parsed, opts);\n      } else {\n        return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n      }\n    }\n\n    /**\n     * Create a Duration from an ISO 8601 time string.\n     * @param {string} text - text to parse\n     * @param {Object} opts - options for parsing\n     * @param {string} [opts.locale='en-US'] - the locale to use\n     * @param {string} opts.numberingSystem - the numbering system to use\n     * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n     * @param {string} [opts.matrix=Object] - the conversion system to use\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n     * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n     * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n     * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n     * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n     * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n     * @return {Duration}\n     */;\n    Duration.fromISOTime = function fromISOTime(text, opts) {\n      var _parseISOTimeOnly = parseISOTimeOnly(text),\n        parsed = _parseISOTimeOnly[0];\n      if (parsed) {\n        return Duration.fromObject(parsed, opts);\n      } else {\n        return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n      }\n    }\n\n    /**\n     * Create an invalid Duration.\n     * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n     * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n     * @return {Duration}\n     */;\n    Duration.invalid = function invalid(reason, explanation) {\n      if (explanation === void 0) {\n        explanation = null;\n      }\n      if (!reason) {\n        throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n      }\n      var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n      if (Settings.throwOnInvalid) {\n        throw new InvalidDurationError(invalid);\n      } else {\n        return new Duration({\n          invalid: invalid\n        });\n      }\n    }\n\n    /**\n     * @private\n     */;\n    Duration.normalizeUnit = function normalizeUnit(unit) {\n      var normalized = {\n        year: \"years\",\n        years: \"years\",\n        quarter: \"quarters\",\n        quarters: \"quarters\",\n        month: \"months\",\n        months: \"months\",\n        week: \"weeks\",\n        weeks: \"weeks\",\n        day: \"days\",\n        days: \"days\",\n        hour: \"hours\",\n        hours: \"hours\",\n        minute: \"minutes\",\n        minutes: \"minutes\",\n        second: \"seconds\",\n        seconds: \"seconds\",\n        millisecond: \"milliseconds\",\n        milliseconds: \"milliseconds\"\n      }[unit ? unit.toLowerCase() : unit];\n      if (!normalized) throw new InvalidUnitError(unit);\n      return normalized;\n    }\n\n    /**\n     * Check if an object is a Duration. Works across context boundaries\n     * @param {object} o\n     * @return {boolean}\n     */;\n    Duration.isDuration = function isDuration(o) {\n      return o && o.isLuxonDuration || false;\n    }\n\n    /**\n     * Get  the locale of a Duration, such 'en-GB'\n     * @type {string}\n     */;\n    var _proto = Duration.prototype;\n    /**\n     * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n     * * `S` for milliseconds\n     * * `s` for seconds\n     * * `m` for minutes\n     * * `h` for hours\n     * * `d` for days\n     * * `w` for weeks\n     * * `M` for months\n     * * `y` for years\n     * Notes:\n     * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n     * * Tokens can be escaped by wrapping with single quotes.\n     * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n     * @param {string} fmt - the format string\n     * @param {Object} opts - options\n     * @param {boolean} [opts.floor=true] - floor numerical values\n     * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n     * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n     * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n     * @return {string}\n     */\n    _proto.toFormat = function toFormat(fmt, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n      var fmtOpts = _extends({}, opts, {\n        floor: opts.round !== false && opts.floor !== false\n      });\n      return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2;\n    }\n\n    /**\n     * Returns a string representation of a Duration with all units included.\n     * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n     * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n     * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n     * @example\n     * ```js\n     * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n     * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n     * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n     * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n     * ```\n     */;\n    _proto.toHuman = function toHuman(opts) {\n      var _this = this;\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (!this.isValid) return INVALID$2;\n      var l = orderedUnits$1.map(function (unit) {\n        var val = _this.values[unit];\n        if (isUndefined(val)) {\n          return null;\n        }\n        return _this.loc.numberFormatter(_extends({\n          style: \"unit\",\n          unitDisplay: \"long\"\n        }, opts, {\n          unit: unit.slice(0, -1)\n        })).format(val);\n      }).filter(function (n) {\n        return n;\n      });\n      return this.loc.listFormatter(_extends({\n        type: \"conjunction\",\n        style: opts.listStyle || \"narrow\"\n      }, opts)).format(l);\n    }\n\n    /**\n     * Returns a JavaScript object with this Duration's values.\n     * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n     * @return {Object}\n     */;\n    _proto.toObject = function toObject() {\n      if (!this.isValid) return {};\n      return _extends({}, this.values);\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this Duration.\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n     * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n     * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n     * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n     * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n     * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n     * @return {string}\n     */;\n    _proto.toISO = function toISO() {\n      // we could use the formatter, but this is an easier way to get the minimum string\n      if (!this.isValid) return null;\n      var s = \"P\";\n      if (this.years !== 0) s += this.years + \"Y\";\n      if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n      if (this.weeks !== 0) s += this.weeks + \"W\";\n      if (this.days !== 0) s += this.days + \"D\";\n      if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) s += \"T\";\n      if (this.hours !== 0) s += this.hours + \"H\";\n      if (this.minutes !== 0) s += this.minutes + \"M\";\n      if (this.seconds !== 0 || this.milliseconds !== 0)\n        // this will handle \"floating point madness\" by removing extra decimal places\n        // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n        s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n      if (s === \"P\") s += \"T0S\";\n      return s;\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n     * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n     * @param {Object} opts - options\n     * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n     * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n     * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n     * @param {string} [opts.format='extended'] - choose between the basic and extended format\n     * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n     * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n     * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n     * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n     * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n     * @return {string}\n     */;\n    _proto.toISOTime = function toISOTime(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (!this.isValid) return null;\n      var millis = this.toMillis();\n      if (millis < 0 || millis >= 86400000) return null;\n      opts = _extends({\n        suppressMilliseconds: false,\n        suppressSeconds: false,\n        includePrefix: false,\n        format: \"extended\"\n      }, opts, {\n        includeOffset: false\n      });\n      var dateTime = DateTime.fromMillis(millis, {\n        zone: \"UTC\"\n      });\n      return dateTime.toISOTime(opts);\n    }\n\n    /**\n     * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n     * @return {string}\n     */;\n    _proto.toJSON = function toJSON() {\n      return this.toISO();\n    }\n\n    /**\n     * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n     * @return {string}\n     */;\n    _proto.toString = function toString() {\n      return this.toISO();\n    }\n\n    /**\n     * Returns a string representation of this Duration appropriate for the REPL.\n     * @return {string}\n     */;\n    _proto[_Symbol$for] = function () {\n      if (this.isValid) {\n        return \"Duration { values: \" + JSON.stringify(this.values) + \" }\";\n      } else {\n        return \"Duration { Invalid, reason: \" + this.invalidReason + \" }\";\n      }\n    }\n\n    /**\n     * Returns an milliseconds value of this Duration.\n     * @return {number}\n     */;\n    _proto.toMillis = function toMillis() {\n      if (!this.isValid) return NaN;\n      return durationToMillis(this.matrix, this.values);\n    }\n\n    /**\n     * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n     * @return {number}\n     */;\n    _proto.valueOf = function valueOf() {\n      return this.toMillis();\n    }\n\n    /**\n     * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n     * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n     * @return {Duration}\n     */;\n    _proto.plus = function plus(duration) {\n      if (!this.isValid) return this;\n      var dur = Duration.fromDurationLike(duration),\n        result = {};\n      for (var _i2 = 0, _orderedUnits = orderedUnits$1; _i2 < _orderedUnits.length; _i2++) {\n        var k = _orderedUnits[_i2];\n        if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n          result[k] = dur.get(k) + this.get(k);\n        }\n      }\n      return clone$1(this, {\n        values: result\n      }, true);\n    }\n\n    /**\n     * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n     * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n     * @return {Duration}\n     */;\n    _proto.minus = function minus(duration) {\n      if (!this.isValid) return this;\n      var dur = Duration.fromDurationLike(duration);\n      return this.plus(dur.negate());\n    }\n\n    /**\n     * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n     * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n     * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n     * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n     * @return {Duration}\n     */;\n    _proto.mapUnits = function mapUnits(fn) {\n      if (!this.isValid) return this;\n      var result = {};\n      for (var _i3 = 0, _Object$keys = Object.keys(this.values); _i3 < _Object$keys.length; _i3++) {\n        var k = _Object$keys[_i3];\n        result[k] = asNumber(fn(this.values[k], k));\n      }\n      return clone$1(this, {\n        values: result\n      }, true);\n    }\n\n    /**\n     * Get the value of unit.\n     * @param {string} unit - a unit such as 'minute' or 'day'\n     * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n     * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n     * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n     * @return {number}\n     */;\n    _proto.get = function get(unit) {\n      return this[Duration.normalizeUnit(unit)];\n    }\n\n    /**\n     * \"Set\" the values of specified units. Return a newly-constructed Duration.\n     * @param {Object} values - a mapping of units to numbers\n     * @example dur.set({ years: 2017 })\n     * @example dur.set({ hours: 8, minutes: 30 })\n     * @return {Duration}\n     */;\n    _proto.set = function set(values) {\n      if (!this.isValid) return this;\n      var mixed = _extends({}, this.values, normalizeObject(values, Duration.normalizeUnit));\n      return clone$1(this, {\n        values: mixed\n      });\n    }\n\n    /**\n     * \"Set\" the locale and/or numberingSystem.  Returns a newly-constructed Duration.\n     * @example dur.reconfigure({ locale: 'en-GB' })\n     * @return {Duration}\n     */;\n    _proto.reconfigure = function reconfigure(_temp) {\n      var _ref = _temp === void 0 ? {} : _temp,\n        locale = _ref.locale,\n        numberingSystem = _ref.numberingSystem,\n        conversionAccuracy = _ref.conversionAccuracy,\n        matrix = _ref.matrix;\n      var loc = this.loc.clone({\n        locale: locale,\n        numberingSystem: numberingSystem\n      });\n      var opts = {\n        loc: loc,\n        matrix: matrix,\n        conversionAccuracy: conversionAccuracy\n      };\n      return clone$1(this, opts);\n    }\n\n    /**\n     * Return the length of the duration in the specified unit.\n     * @param {string} unit - a unit such as 'minutes' or 'days'\n     * @example Duration.fromObject({years: 1}).as('days') //=> 365\n     * @example Duration.fromObject({years: 1}).as('months') //=> 12\n     * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n     * @return {number}\n     */;\n    _proto.as = function as(unit) {\n      return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n    }\n\n    /**\n     * Reduce this Duration to its canonical representation in its current units.\n     * Assuming the overall value of the Duration is positive, this means:\n     * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n     * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n     *   the overall value would be negative, see third example)\n     * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n     *\n     * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n     * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n     * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n     * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n     * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n     * @return {Duration}\n     */;\n    _proto.normalize = function normalize() {\n      if (!this.isValid) return this;\n      var vals = this.toObject();\n      normalizeValues(this.matrix, vals);\n      return clone$1(this, {\n        values: vals\n      }, true);\n    }\n\n    /**\n     * Rescale units to its largest representation\n     * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n     * @return {Duration}\n     */;\n    _proto.rescale = function rescale() {\n      if (!this.isValid) return this;\n      var vals = removeZeroes(this.normalize().shiftToAll().toObject());\n      return clone$1(this, {\n        values: vals\n      }, true);\n    }\n\n    /**\n     * Convert this Duration into its representation in a different set of units.\n     * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n     * @return {Duration}\n     */;\n    _proto.shiftTo = function shiftTo() {\n      for (var _len = arguments.length, units = new Array(_len), _key = 0; _key < _len; _key++) {\n        units[_key] = arguments[_key];\n      }\n      if (!this.isValid) return this;\n      if (units.length === 0) {\n        return this;\n      }\n      units = units.map(function (u) {\n        return Duration.normalizeUnit(u);\n      });\n      var built = {},\n        accumulated = {},\n        vals = this.toObject();\n      var lastUnit;\n      for (var _i4 = 0, _orderedUnits2 = orderedUnits$1; _i4 < _orderedUnits2.length; _i4++) {\n        var k = _orderedUnits2[_i4];\n        if (units.indexOf(k) >= 0) {\n          lastUnit = k;\n          var own = 0;\n\n          // anything we haven't boiled down yet should get boiled to this unit\n          for (var ak in accumulated) {\n            own += this.matrix[ak][k] * accumulated[ak];\n            accumulated[ak] = 0;\n          }\n\n          // plus anything that's already in this unit\n          if (isNumber(vals[k])) {\n            own += vals[k];\n          }\n\n          // only keep the integer part for now in the hopes of putting any decimal part\n          // into a smaller unit later\n          var i = Math.trunc(own);\n          built[k] = i;\n          accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n          // otherwise, keep it in the wings to boil it later\n        } else if (isNumber(vals[k])) {\n          accumulated[k] = vals[k];\n        }\n      }\n\n      // anything leftover becomes the decimal for the last unit\n      // lastUnit must be defined since units is not empty\n      for (var key in accumulated) {\n        if (accumulated[key] !== 0) {\n          built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n        }\n      }\n      normalizeValues(this.matrix, built);\n      return clone$1(this, {\n        values: built\n      }, true);\n    }\n\n    /**\n     * Shift this Duration to all available units.\n     * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n     * @return {Duration}\n     */;\n    _proto.shiftToAll = function shiftToAll() {\n      if (!this.isValid) return this;\n      return this.shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n    }\n\n    /**\n     * Return the negative of this Duration.\n     * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n     * @return {Duration}\n     */;\n    _proto.negate = function negate() {\n      if (!this.isValid) return this;\n      var negated = {};\n      for (var _i5 = 0, _Object$keys2 = Object.keys(this.values); _i5 < _Object$keys2.length; _i5++) {\n        var k = _Object$keys2[_i5];\n        negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n      }\n      return clone$1(this, {\n        values: negated\n      }, true);\n    }\n\n    /**\n     * Get the years.\n     * @type {number}\n     */;\n    /**\n     * Equality check\n     * Two Durations are equal iff they have the same units and the same values for each unit.\n     * @param {Duration} other\n     * @return {boolean}\n     */\n    _proto.equals = function equals(other) {\n      if (!this.isValid || !other.isValid) {\n        return false;\n      }\n      if (!this.loc.equals(other.loc)) {\n        return false;\n      }\n      function eq(v1, v2) {\n        // Consider 0 and undefined as equal\n        if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n        return v1 === v2;\n      }\n      for (var _i6 = 0, _orderedUnits3 = orderedUnits$1; _i6 < _orderedUnits3.length; _i6++) {\n        var u = _orderedUnits3[_i6];\n        if (!eq(this.values[u], other.values[u])) {\n          return false;\n        }\n      }\n      return true;\n    };\n    _createClass(Duration, [{\n      key: \"locale\",\n      get: function get() {\n        return this.isValid ? this.loc.locale : null;\n      }\n\n      /**\n       * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n       *\n       * @type {string}\n       */\n    }, {\n      key: \"numberingSystem\",\n      get: function get() {\n        return this.isValid ? this.loc.numberingSystem : null;\n      }\n    }, {\n      key: \"years\",\n      get: function get() {\n        return this.isValid ? this.values.years || 0 : NaN;\n      }\n\n      /**\n       * Get the quarters.\n       * @type {number}\n       */\n    }, {\n      key: \"quarters\",\n      get: function get() {\n        return this.isValid ? this.values.quarters || 0 : NaN;\n      }\n\n      /**\n       * Get the months.\n       * @type {number}\n       */\n    }, {\n      key: \"months\",\n      get: function get() {\n        return this.isValid ? this.values.months || 0 : NaN;\n      }\n\n      /**\n       * Get the weeks\n       * @type {number}\n       */\n    }, {\n      key: \"weeks\",\n      get: function get() {\n        return this.isValid ? this.values.weeks || 0 : NaN;\n      }\n\n      /**\n       * Get the days.\n       * @type {number}\n       */\n    }, {\n      key: \"days\",\n      get: function get() {\n        return this.isValid ? this.values.days || 0 : NaN;\n      }\n\n      /**\n       * Get the hours.\n       * @type {number}\n       */\n    }, {\n      key: \"hours\",\n      get: function get() {\n        return this.isValid ? this.values.hours || 0 : NaN;\n      }\n\n      /**\n       * Get the minutes.\n       * @type {number}\n       */\n    }, {\n      key: \"minutes\",\n      get: function get() {\n        return this.isValid ? this.values.minutes || 0 : NaN;\n      }\n\n      /**\n       * Get the seconds.\n       * @return {number}\n       */\n    }, {\n      key: \"seconds\",\n      get: function get() {\n        return this.isValid ? this.values.seconds || 0 : NaN;\n      }\n\n      /**\n       * Get the milliseconds.\n       * @return {number}\n       */\n    }, {\n      key: \"milliseconds\",\n      get: function get() {\n        return this.isValid ? this.values.milliseconds || 0 : NaN;\n      }\n\n      /**\n       * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n       * on invalid DateTimes or Intervals.\n       * @return {boolean}\n       */\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return this.invalid === null;\n      }\n\n      /**\n       * Returns an error code if this Duration became invalid, or null if the Duration is valid\n       * @return {string}\n       */\n    }, {\n      key: \"invalidReason\",\n      get: function get() {\n        return this.invalid ? this.invalid.reason : null;\n      }\n\n      /**\n       * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n       * @type {string}\n       */\n    }, {\n      key: \"invalidExplanation\",\n      get: function get() {\n        return this.invalid ? this.invalid.explanation : null;\n      }\n    }]);\n    return Duration;\n  }(Symbol.for(\"nodejs.util.inspect.custom\"));\n\n  var INVALID$1 = \"Invalid Interval\";\n\n  // checks if the start is equal to or before the end\n  function validateStartEnd(start, end) {\n    if (!start || !start.isValid) {\n      return Interval.invalid(\"missing or invalid start\");\n    } else if (!end || !end.isValid) {\n      return Interval.invalid(\"missing or invalid end\");\n    } else if (end < start) {\n      return Interval.invalid(\"end before start\", \"The end of an interval must be after its start, but you had start=\" + start.toISO() + \" and end=\" + end.toISO());\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n   *\n   * Here is a brief overview of the most commonly used methods and getters in Interval:\n   *\n   * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n   * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n   * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n   * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n   * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n   * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n   */\n  var Interval = /*#__PURE__*/function (_Symbol$for) {\n    /**\n     * @private\n     */\n    function Interval(config) {\n      /**\n       * @access private\n       */\n      this.s = config.start;\n      /**\n       * @access private\n       */\n      this.e = config.end;\n      /**\n       * @access private\n       */\n      this.invalid = config.invalid || null;\n      /**\n       * @access private\n       */\n      this.isLuxonInterval = true;\n    }\n\n    /**\n     * Create an invalid Interval.\n     * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n     * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n     * @return {Interval}\n     */\n    Interval.invalid = function invalid(reason, explanation) {\n      if (explanation === void 0) {\n        explanation = null;\n      }\n      if (!reason) {\n        throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n      }\n      var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n      if (Settings.throwOnInvalid) {\n        throw new InvalidIntervalError(invalid);\n      } else {\n        return new Interval({\n          invalid: invalid\n        });\n      }\n    }\n\n    /**\n     * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n     * @param {DateTime|Date|Object} start\n     * @param {DateTime|Date|Object} end\n     * @return {Interval}\n     */;\n    Interval.fromDateTimes = function fromDateTimes(start, end) {\n      var builtStart = friendlyDateTime(start),\n        builtEnd = friendlyDateTime(end);\n      var validateError = validateStartEnd(builtStart, builtEnd);\n      if (validateError == null) {\n        return new Interval({\n          start: builtStart,\n          end: builtEnd\n        });\n      } else {\n        return validateError;\n      }\n    }\n\n    /**\n     * Create an Interval from a start DateTime and a Duration to extend to.\n     * @param {DateTime|Date|Object} start\n     * @param {Duration|Object|number} duration - the length of the Interval.\n     * @return {Interval}\n     */;\n    Interval.after = function after(start, duration) {\n      var dur = Duration.fromDurationLike(duration),\n        dt = friendlyDateTime(start);\n      return Interval.fromDateTimes(dt, dt.plus(dur));\n    }\n\n    /**\n     * Create an Interval from an end DateTime and a Duration to extend backwards to.\n     * @param {DateTime|Date|Object} end\n     * @param {Duration|Object|number} duration - the length of the Interval.\n     * @return {Interval}\n     */;\n    Interval.before = function before(end, duration) {\n      var dur = Duration.fromDurationLike(duration),\n        dt = friendlyDateTime(end);\n      return Interval.fromDateTimes(dt.minus(dur), dt);\n    }\n\n    /**\n     * Create an Interval from an ISO 8601 string.\n     * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n     * @param {string} text - the ISO string to parse\n     * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n     * @return {Interval}\n     */;\n    Interval.fromISO = function fromISO(text, opts) {\n      var _split = (text || \"\").split(\"/\", 2),\n        s = _split[0],\n        e = _split[1];\n      if (s && e) {\n        var start, startIsValid;\n        try {\n          start = DateTime.fromISO(s, opts);\n          startIsValid = start.isValid;\n        } catch (e) {\n          startIsValid = false;\n        }\n        var end, endIsValid;\n        try {\n          end = DateTime.fromISO(e, opts);\n          endIsValid = end.isValid;\n        } catch (e) {\n          endIsValid = false;\n        }\n        if (startIsValid && endIsValid) {\n          return Interval.fromDateTimes(start, end);\n        }\n        if (startIsValid) {\n          var dur = Duration.fromISO(e, opts);\n          if (dur.isValid) {\n            return Interval.after(start, dur);\n          }\n        } else if (endIsValid) {\n          var _dur = Duration.fromISO(s, opts);\n          if (_dur.isValid) {\n            return Interval.before(end, _dur);\n          }\n        }\n      }\n      return Interval.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n    }\n\n    /**\n     * Check if an object is an Interval. Works across context boundaries\n     * @param {object} o\n     * @return {boolean}\n     */;\n    Interval.isInterval = function isInterval(o) {\n      return o && o.isLuxonInterval || false;\n    }\n\n    /**\n     * Returns the start of the Interval\n     * @type {DateTime}\n     */;\n    var _proto = Interval.prototype;\n    /**\n     * Returns the length of the Interval in the specified unit.\n     * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n     * @return {number}\n     */\n    _proto.length = function length(unit) {\n      if (unit === void 0) {\n        unit = \"milliseconds\";\n      }\n      return this.isValid ? this.toDuration.apply(this, [unit]).get(unit) : NaN;\n    }\n\n    /**\n     * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n     * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n     * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n     * @param {string} [unit='milliseconds'] - the unit of time to count.\n     * @param {Object} opts - options\n     * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n     * @return {number}\n     */;\n    _proto.count = function count(unit, opts) {\n      if (unit === void 0) {\n        unit = \"milliseconds\";\n      }\n      if (!this.isValid) return NaN;\n      var start = this.start.startOf(unit, opts);\n      var end;\n      if (opts != null && opts.useLocaleWeeks) {\n        end = this.end.reconfigure({\n          locale: start.locale\n        });\n      } else {\n        end = this.end;\n      }\n      end = end.startOf(unit, opts);\n      return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n    }\n\n    /**\n     * Returns whether this Interval's start and end are both in the same unit of time\n     * @param {string} unit - the unit of time to check sameness on\n     * @return {boolean}\n     */;\n    _proto.hasSame = function hasSame(unit) {\n      return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n    }\n\n    /**\n     * Return whether this Interval has the same start and end DateTimes.\n     * @return {boolean}\n     */;\n    _proto.isEmpty = function isEmpty() {\n      return this.s.valueOf() === this.e.valueOf();\n    }\n\n    /**\n     * Return whether this Interval's start is after the specified DateTime.\n     * @param {DateTime} dateTime\n     * @return {boolean}\n     */;\n    _proto.isAfter = function isAfter(dateTime) {\n      if (!this.isValid) return false;\n      return this.s > dateTime;\n    }\n\n    /**\n     * Return whether this Interval's end is before the specified DateTime.\n     * @param {DateTime} dateTime\n     * @return {boolean}\n     */;\n    _proto.isBefore = function isBefore(dateTime) {\n      if (!this.isValid) return false;\n      return this.e <= dateTime;\n    }\n\n    /**\n     * Return whether this Interval contains the specified DateTime.\n     * @param {DateTime} dateTime\n     * @return {boolean}\n     */;\n    _proto.contains = function contains(dateTime) {\n      if (!this.isValid) return false;\n      return this.s <= dateTime && this.e > dateTime;\n    }\n\n    /**\n     * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n     * @param {Object} values - the values to set\n     * @param {DateTime} values.start - the starting DateTime\n     * @param {DateTime} values.end - the ending DateTime\n     * @return {Interval}\n     */;\n    _proto.set = function set(_temp) {\n      var _ref = _temp === void 0 ? {} : _temp,\n        start = _ref.start,\n        end = _ref.end;\n      if (!this.isValid) return this;\n      return Interval.fromDateTimes(start || this.s, end || this.e);\n    }\n\n    /**\n     * Split this Interval at each of the specified DateTimes\n     * @param {...DateTime} dateTimes - the unit of time to count.\n     * @return {Array}\n     */;\n    _proto.splitAt = function splitAt() {\n      var _this = this;\n      if (!this.isValid) return [];\n      for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\n        dateTimes[_key] = arguments[_key];\n      }\n      var sorted = dateTimes.map(friendlyDateTime).filter(function (d) {\n          return _this.contains(d);\n        }).sort(function (a, b) {\n          return a.toMillis() - b.toMillis();\n        }),\n        results = [];\n      var s = this.s,\n        i = 0;\n      while (s < this.e) {\n        var added = sorted[i] || this.e,\n          next = +added > +this.e ? this.e : added;\n        results.push(Interval.fromDateTimes(s, next));\n        s = next;\n        i += 1;\n      }\n      return results;\n    }\n\n    /**\n     * Split this Interval into smaller Intervals, each of the specified length.\n     * Left over time is grouped into a smaller interval\n     * @param {Duration|Object|number} duration - The length of each resulting interval.\n     * @return {Array}\n     */;\n    _proto.splitBy = function splitBy(duration) {\n      var dur = Duration.fromDurationLike(duration);\n      if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n        return [];\n      }\n      var s = this.s,\n        idx = 1,\n        next;\n      var results = [];\n      while (s < this.e) {\n        var added = this.start.plus(dur.mapUnits(function (x) {\n          return x * idx;\n        }));\n        next = +added > +this.e ? this.e : added;\n        results.push(Interval.fromDateTimes(s, next));\n        s = next;\n        idx += 1;\n      }\n      return results;\n    }\n\n    /**\n     * Split this Interval into the specified number of smaller intervals.\n     * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n     * @return {Array}\n     */;\n    _proto.divideEqually = function divideEqually(numberOfParts) {\n      if (!this.isValid) return [];\n      return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n    }\n\n    /**\n     * Return whether this Interval overlaps with the specified Interval\n     * @param {Interval} other\n     * @return {boolean}\n     */;\n    _proto.overlaps = function overlaps(other) {\n      return this.e > other.s && this.s < other.e;\n    }\n\n    /**\n     * Return whether this Interval's end is adjacent to the specified Interval's start.\n     * @param {Interval} other\n     * @return {boolean}\n     */;\n    _proto.abutsStart = function abutsStart(other) {\n      if (!this.isValid) return false;\n      return +this.e === +other.s;\n    }\n\n    /**\n     * Return whether this Interval's start is adjacent to the specified Interval's end.\n     * @param {Interval} other\n     * @return {boolean}\n     */;\n    _proto.abutsEnd = function abutsEnd(other) {\n      if (!this.isValid) return false;\n      return +other.e === +this.s;\n    }\n\n    /**\n     * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\n     * @param {Interval} other\n     * @return {boolean}\n     */;\n    _proto.engulfs = function engulfs(other) {\n      if (!this.isValid) return false;\n      return this.s <= other.s && this.e >= other.e;\n    }\n\n    /**\n     * Return whether this Interval has the same start and end as the specified Interval.\n     * @param {Interval} other\n     * @return {boolean}\n     */;\n    _proto.equals = function equals(other) {\n      if (!this.isValid || !other.isValid) {\n        return false;\n      }\n      return this.s.equals(other.s) && this.e.equals(other.e);\n    }\n\n    /**\n     * Return an Interval representing the intersection of this Interval and the specified Interval.\n     * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n     * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n     * @param {Interval} other\n     * @return {Interval}\n     */;\n    _proto.intersection = function intersection(other) {\n      if (!this.isValid) return this;\n      var s = this.s > other.s ? this.s : other.s,\n        e = this.e < other.e ? this.e : other.e;\n      if (s >= e) {\n        return null;\n      } else {\n        return Interval.fromDateTimes(s, e);\n      }\n    }\n\n    /**\n     * Return an Interval representing the union of this Interval and the specified Interval.\n     * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n     * @param {Interval} other\n     * @return {Interval}\n     */;\n    _proto.union = function union(other) {\n      if (!this.isValid) return this;\n      var s = this.s < other.s ? this.s : other.s,\n        e = this.e > other.e ? this.e : other.e;\n      return Interval.fromDateTimes(s, e);\n    }\n\n    /**\n     * Merge an array of Intervals into an equivalent minimal set of Intervals.\n     * Combines overlapping and adjacent Intervals.\n     * The resulting array will contain the Intervals in ascending order, that is, starting with the earliest Interval\n     * and ending with the latest.\n     *\n     * @param {Array} intervals\n     * @return {Array}\n     */;\n    Interval.merge = function merge(intervals) {\n      var _intervals$sort$reduc = intervals.sort(function (a, b) {\n          return a.s - b.s;\n        }).reduce(function (_ref2, item) {\n          var sofar = _ref2[0],\n            current = _ref2[1];\n          if (!current) {\n            return [sofar, item];\n          } else if (current.overlaps(item) || current.abutsStart(item)) {\n            return [sofar, current.union(item)];\n          } else {\n            return [sofar.concat([current]), item];\n          }\n        }, [[], null]),\n        found = _intervals$sort$reduc[0],\n        final = _intervals$sort$reduc[1];\n      if (final) {\n        found.push(final);\n      }\n      return found;\n    }\n\n    /**\n     * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n     * @param {Array} intervals\n     * @return {Array}\n     */;\n    Interval.xor = function xor(intervals) {\n      var _Array$prototype;\n      var start = null,\n        currentCount = 0;\n      var results = [],\n        ends = intervals.map(function (i) {\n          return [{\n            time: i.s,\n            type: \"s\"\n          }, {\n            time: i.e,\n            type: \"e\"\n          }];\n        }),\n        flattened = (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, ends),\n        arr = flattened.sort(function (a, b) {\n          return a.time - b.time;\n        });\n      for (var _iterator = _createForOfIteratorHelperLoose(arr), _step; !(_step = _iterator()).done;) {\n        var i = _step.value;\n        currentCount += i.type === \"s\" ? 1 : -1;\n        if (currentCount === 1) {\n          start = i.time;\n        } else {\n          if (start && +start !== +i.time) {\n            results.push(Interval.fromDateTimes(start, i.time));\n          }\n          start = null;\n        }\n      }\n      return Interval.merge(results);\n    }\n\n    /**\n     * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n     * @param {...Interval} intervals\n     * @return {Array}\n     */;\n    _proto.difference = function difference() {\n      var _this2 = this;\n      for (var _len2 = arguments.length, intervals = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        intervals[_key2] = arguments[_key2];\n      }\n      return Interval.xor([this].concat(intervals)).map(function (i) {\n        return _this2.intersection(i);\n      }).filter(function (i) {\n        return i && !i.isEmpty();\n      });\n    }\n\n    /**\n     * Returns a string representation of this Interval appropriate for debugging.\n     * @return {string}\n     */;\n    _proto.toString = function toString() {\n      if (!this.isValid) return INVALID$1;\n      return \"[\" + this.s.toISO() + \" \\u2013 \" + this.e.toISO() + \")\";\n    }\n\n    /**\n     * Returns a string representation of this Interval appropriate for the REPL.\n     * @return {string}\n     */;\n    _proto[_Symbol$for] = function () {\n      if (this.isValid) {\n        return \"Interval { start: \" + this.s.toISO() + \", end: \" + this.e.toISO() + \" }\";\n      } else {\n        return \"Interval { Invalid, reason: \" + this.invalidReason + \" }\";\n      }\n    }\n\n    /**\n     * Returns a localized string representing this Interval. Accepts the same options as the\n     * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n     * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n     * is browser-specific, but in general it will return an appropriate representation of the\n     * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n     * specified.\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n     * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n     * Intl.DateTimeFormat constructor options.\n     * @param {Object} opts - Options to override the configuration of the start DateTime.\n     * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n     * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n     * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n     * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n     * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n     * @return {string}\n     */;\n    _proto.toLocaleString = function toLocaleString(formatOpts, opts) {\n      if (formatOpts === void 0) {\n        formatOpts = DATE_SHORT;\n      }\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.isValid ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID$1;\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this Interval.\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n     * @param {Object} opts - The same options as {@link DateTime#toISO}\n     * @return {string}\n     */;\n    _proto.toISO = function toISO(opts) {\n      if (!this.isValid) return INVALID$1;\n      return this.s.toISO(opts) + \"/\" + this.e.toISO(opts);\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of date of this Interval.\n     * The time components are ignored.\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n     * @return {string}\n     */;\n    _proto.toISODate = function toISODate() {\n      if (!this.isValid) return INVALID$1;\n      return this.s.toISODate() + \"/\" + this.e.toISODate();\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of time of this Interval.\n     * The date components are ignored.\n     * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n     * @param {Object} opts - The same options as {@link DateTime#toISO}\n     * @return {string}\n     */;\n    _proto.toISOTime = function toISOTime(opts) {\n      if (!this.isValid) return INVALID$1;\n      return this.s.toISOTime(opts) + \"/\" + this.e.toISOTime(opts);\n    }\n\n    /**\n     * Returns a string representation of this Interval formatted according to the specified format\n     * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n     * formatting tool.\n     * @param {string} dateFormat - The format string. This string formats the start and end time.\n     * See {@link DateTime#toFormat} for details.\n     * @param {Object} opts - Options.\n     * @param {string} [opts.separator =  ' – '] - A separator to place between the start and end\n     * representations.\n     * @return {string}\n     */;\n    _proto.toFormat = function toFormat(dateFormat, _temp2) {\n      var _ref3 = _temp2 === void 0 ? {} : _temp2,\n        _ref3$separator = _ref3.separator,\n        separator = _ref3$separator === void 0 ? \" – \" : _ref3$separator;\n      if (!this.isValid) return INVALID$1;\n      return \"\" + this.s.toFormat(dateFormat) + separator + this.e.toFormat(dateFormat);\n    }\n\n    /**\n     * Return a Duration representing the time spanned by this interval.\n     * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n     * @param {Object} opts - options that affect the creation of the Duration\n     * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n     * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n     * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n     * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n     * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n     * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n     * @return {Duration}\n     */;\n    _proto.toDuration = function toDuration(unit, opts) {\n      if (!this.isValid) {\n        return Duration.invalid(this.invalidReason);\n      }\n      return this.e.diff(this.s, unit, opts);\n    }\n\n    /**\n     * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n     * @param {function} mapFn\n     * @return {Interval}\n     * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n     * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n     */;\n    _proto.mapEndpoints = function mapEndpoints(mapFn) {\n      return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n    };\n    _createClass(Interval, [{\n      key: \"start\",\n      get: function get() {\n        return this.isValid ? this.s : null;\n      }\n\n      /**\n       * Returns the end of the Interval\n       * @type {DateTime}\n       */\n    }, {\n      key: \"end\",\n      get: function get() {\n        return this.isValid ? this.e : null;\n      }\n\n      /**\n       * Returns the last DateTime included in the interval (since end is not part of the interval)\n       * @type {DateTime}\n       */\n    }, {\n      key: \"lastDateTime\",\n      get: function get() {\n        return this.isValid ? this.e ? this.e.minus(1) : null : null;\n      }\n\n      /**\n       * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n       * @type {boolean}\n       */\n    }, {\n      key: \"isValid\",\n      get: function get() {\n        return this.invalidReason === null;\n      }\n\n      /**\n       * Returns an error code if this Interval is invalid, or null if the Interval is valid\n       * @type {string}\n       */\n    }, {\n      key: \"invalidReason\",\n      get: function get() {\n        return this.invalid ? this.invalid.reason : null;\n      }\n\n      /**\n       * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n       * @type {string}\n       */\n    }, {\n      key: \"invalidExplanation\",\n      get: function get() {\n        return this.invalid ? this.invalid.explanation : null;\n      }\n    }]);\n    return Interval;\n  }(Symbol.for(\"nodejs.util.inspect.custom\"));\n\n  /**\n   * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n   */\n  var Info = /*#__PURE__*/function () {\n    function Info() {}\n    /**\n     * Return whether the specified zone contains a DST.\n     * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n     * @return {boolean}\n     */\n    Info.hasDST = function hasDST(zone) {\n      if (zone === void 0) {\n        zone = Settings.defaultZone;\n      }\n      var proto = DateTime.now().setZone(zone).set({\n        month: 12\n      });\n      return !zone.isUniversal && proto.offset !== proto.set({\n        month: 6\n      }).offset;\n    }\n\n    /**\n     * Return whether the specified zone is a valid IANA specifier.\n     * @param {string} zone - Zone to check\n     * @return {boolean}\n     */;\n    Info.isValidIANAZone = function isValidIANAZone(zone) {\n      return IANAZone.isValidZone(zone);\n    }\n\n    /**\n     * Converts the input into a {@link Zone} instance.\n     *\n     * * If `input` is already a Zone instance, it is returned unchanged.\n     * * If `input` is a string containing a valid time zone name, a Zone instance\n     *   with that name is returned.\n     * * If `input` is a string that doesn't refer to a known time zone, a Zone\n     *   instance with {@link Zone#isValid} == false is returned.\n     * * If `input is a number, a Zone instance with the specified fixed offset\n     *   in minutes is returned.\n     * * If `input` is `null` or `undefined`, the default zone is returned.\n     * @param {string|Zone|number} [input] - the value to be converted\n     * @return {Zone}\n     */;\n    Info.normalizeZone = function normalizeZone$1(input) {\n      return normalizeZone(input, Settings.defaultZone);\n    }\n\n    /**\n     * Get the weekday on which the week starts according to the given locale.\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n     */;\n    Info.getStartOfWeek = function getStartOfWeek(_temp) {\n      var _ref = _temp === void 0 ? {} : _temp,\n        _ref$locale = _ref.locale,\n        locale = _ref$locale === void 0 ? null : _ref$locale,\n        _ref$locObj = _ref.locObj,\n        locObj = _ref$locObj === void 0 ? null : _ref$locObj;\n      return (locObj || Locale.create(locale)).getStartOfWeek();\n    }\n\n    /**\n     * Get the minimum number of days necessary in a week before it is considered part of the next year according\n     * to the given locale.\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @returns {number}\n     */;\n    Info.getMinimumDaysInFirstWeek = function getMinimumDaysInFirstWeek(_temp2) {\n      var _ref2 = _temp2 === void 0 ? {} : _temp2,\n        _ref2$locale = _ref2.locale,\n        locale = _ref2$locale === void 0 ? null : _ref2$locale,\n        _ref2$locObj = _ref2.locObj,\n        locObj = _ref2$locObj === void 0 ? null : _ref2$locObj;\n      return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n    }\n\n    /**\n     * Get the weekdays, which are considered the weekend according to the given locale\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n     */;\n    Info.getWeekendWeekdays = function getWeekendWeekdays(_temp3) {\n      var _ref3 = _temp3 === void 0 ? {} : _temp3,\n        _ref3$locale = _ref3.locale,\n        locale = _ref3$locale === void 0 ? null : _ref3$locale,\n        _ref3$locObj = _ref3.locObj,\n        locObj = _ref3$locObj === void 0 ? null : _ref3$locObj;\n      // copy the array, because we cache it internally\n      return (locObj || Locale.create(locale)).getWeekendDays().slice();\n    }\n\n    /**\n     * Return an array of standalone month names.\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n     * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @param {string} [opts.numberingSystem=null] - the numbering system\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @param {string} [opts.outputCalendar='gregory'] - the calendar\n     * @example Info.months()[0] //=> 'January'\n     * @example Info.months('short')[0] //=> 'Jan'\n     * @example Info.months('numeric')[0] //=> '1'\n     * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n     * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n     * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n     * @return {Array}\n     */;\n    Info.months = function months(length, _temp4) {\n      if (length === void 0) {\n        length = \"long\";\n      }\n      var _ref4 = _temp4 === void 0 ? {} : _temp4,\n        _ref4$locale = _ref4.locale,\n        locale = _ref4$locale === void 0 ? null : _ref4$locale,\n        _ref4$numberingSystem = _ref4.numberingSystem,\n        numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem,\n        _ref4$locObj = _ref4.locObj,\n        locObj = _ref4$locObj === void 0 ? null : _ref4$locObj,\n        _ref4$outputCalendar = _ref4.outputCalendar,\n        outputCalendar = _ref4$outputCalendar === void 0 ? \"gregory\" : _ref4$outputCalendar;\n      return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n    }\n\n    /**\n     * Return an array of format month names.\n     * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n     * changes the string.\n     * See {@link Info#months}\n     * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @param {string} [opts.numberingSystem=null] - the numbering system\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @param {string} [opts.outputCalendar='gregory'] - the calendar\n     * @return {Array}\n     */;\n    Info.monthsFormat = function monthsFormat(length, _temp5) {\n      if (length === void 0) {\n        length = \"long\";\n      }\n      var _ref5 = _temp5 === void 0 ? {} : _temp5,\n        _ref5$locale = _ref5.locale,\n        locale = _ref5$locale === void 0 ? null : _ref5$locale,\n        _ref5$numberingSystem = _ref5.numberingSystem,\n        numberingSystem = _ref5$numberingSystem === void 0 ? null : _ref5$numberingSystem,\n        _ref5$locObj = _ref5.locObj,\n        locObj = _ref5$locObj === void 0 ? null : _ref5$locObj,\n        _ref5$outputCalendar = _ref5.outputCalendar,\n        outputCalendar = _ref5$outputCalendar === void 0 ? \"gregory\" : _ref5$outputCalendar;\n      return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n    }\n\n    /**\n     * Return an array of standalone week names.\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n     * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @param {string} [opts.numberingSystem=null] - the numbering system\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @example Info.weekdays()[0] //=> 'Monday'\n     * @example Info.weekdays('short')[0] //=> 'Mon'\n     * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n     * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n     * @return {Array}\n     */;\n    Info.weekdays = function weekdays(length, _temp6) {\n      if (length === void 0) {\n        length = \"long\";\n      }\n      var _ref6 = _temp6 === void 0 ? {} : _temp6,\n        _ref6$locale = _ref6.locale,\n        locale = _ref6$locale === void 0 ? null : _ref6$locale,\n        _ref6$numberingSystem = _ref6.numberingSystem,\n        numberingSystem = _ref6$numberingSystem === void 0 ? null : _ref6$numberingSystem,\n        _ref6$locObj = _ref6.locObj,\n        locObj = _ref6$locObj === void 0 ? null : _ref6$locObj;\n      return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n    }\n\n    /**\n     * Return an array of format week names.\n     * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n     * changes the string.\n     * See {@link Info#weekdays}\n     * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n     * @param {Object} opts - options\n     * @param {string} [opts.locale=null] - the locale code\n     * @param {string} [opts.numberingSystem=null] - the numbering system\n     * @param {string} [opts.locObj=null] - an existing locale object to use\n     * @return {Array}\n     */;\n    Info.weekdaysFormat = function weekdaysFormat(length, _temp7) {\n      if (length === void 0) {\n        length = \"long\";\n      }\n      var _ref7 = _temp7 === void 0 ? {} : _temp7,\n        _ref7$locale = _ref7.locale,\n        locale = _ref7$locale === void 0 ? null : _ref7$locale,\n        _ref7$numberingSystem = _ref7.numberingSystem,\n        numberingSystem = _ref7$numberingSystem === void 0 ? null : _ref7$numberingSystem,\n        _ref7$locObj = _ref7.locObj,\n        locObj = _ref7$locObj === void 0 ? null : _ref7$locObj;\n      return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n    }\n\n    /**\n     * Return an array of meridiems.\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n     * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n     * @return {Array}\n     */;\n    Info.meridiems = function meridiems(_temp8) {\n      var _ref8 = _temp8 === void 0 ? {} : _temp8,\n        _ref8$locale = _ref8.locale,\n        locale = _ref8$locale === void 0 ? null : _ref8$locale;\n      return Locale.create(locale).meridiems();\n    }\n\n    /**\n     * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n     * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n     * @param {Object} opts - options\n     * @param {string} [opts.locale] - the locale code\n     * @example Info.eras() //=> [ 'BC', 'AD' ]\n     * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n     * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n     * @return {Array}\n     */;\n    Info.eras = function eras(length, _temp9) {\n      if (length === void 0) {\n        length = \"short\";\n      }\n      var _ref9 = _temp9 === void 0 ? {} : _temp9,\n        _ref9$locale = _ref9.locale,\n        locale = _ref9$locale === void 0 ? null : _ref9$locale;\n      return Locale.create(locale, null, \"gregory\").eras(length);\n    }\n\n    /**\n     * Return the set of available features in this environment.\n     * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n     * Keys:\n     * * `relative`: whether this environment supports relative time formatting\n     * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n     * @example Info.features() //=> { relative: false, localeWeek: true }\n     * @return {Object}\n     */;\n    Info.features = function features() {\n      return {\n        relative: hasRelative(),\n        localeWeek: hasLocaleWeekInfo()\n      };\n    };\n    return Info;\n  }();\n\n  function dayDiff(earlier, later) {\n    var utcDayStart = function utcDayStart(dt) {\n        return dt.toUTC(0, {\n          keepLocalTime: true\n        }).startOf(\"day\").valueOf();\n      },\n      ms = utcDayStart(later) - utcDayStart(earlier);\n    return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n  }\n  function highOrderDiffs(cursor, later, units) {\n    var differs = [[\"years\", function (a, b) {\n      return b.year - a.year;\n    }], [\"quarters\", function (a, b) {\n      return b.quarter - a.quarter + (b.year - a.year) * 4;\n    }], [\"months\", function (a, b) {\n      return b.month - a.month + (b.year - a.year) * 12;\n    }], [\"weeks\", function (a, b) {\n      var days = dayDiff(a, b);\n      return (days - days % 7) / 7;\n    }], [\"days\", dayDiff]];\n    var results = {};\n    var earlier = cursor;\n    var lowestOrder, highWater;\n\n    /* This loop tries to diff using larger units first.\n       If we overshoot, we backtrack and try the next smaller unit.\n       \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n       as we use smaller and smaller units.\n       highWater keeps track of where we would be if we added one more of the smallest unit,\n       this is used later to potentially convert any difference smaller than the smallest higher order unit\n       into a fraction of that smallest higher order unit\n    */\n    for (var _i = 0, _differs = differs; _i < _differs.length; _i++) {\n      var _differs$_i = _differs[_i],\n        unit = _differs$_i[0],\n        differ = _differs$_i[1];\n      if (units.indexOf(unit) >= 0) {\n        lowestOrder = unit;\n        results[unit] = differ(cursor, later);\n        highWater = earlier.plus(results);\n        if (highWater > later) {\n          // we overshot the end point, backtrack cursor by 1\n          results[unit]--;\n          cursor = earlier.plus(results);\n\n          // if we are still overshooting now, we need to backtrack again\n          // this happens in certain situations when diffing times in different zones,\n          // because this calculation ignores time zones\n          if (cursor > later) {\n            // keep the \"overshot by 1\" around as highWater\n            highWater = cursor;\n            // backtrack cursor by 1\n            results[unit]--;\n            cursor = earlier.plus(results);\n          }\n        } else {\n          cursor = highWater;\n        }\n      }\n    }\n    return [cursor, results, highWater, lowestOrder];\n  }\n  function _diff (earlier, later, units, opts) {\n    var _highOrderDiffs = highOrderDiffs(earlier, later, units),\n      cursor = _highOrderDiffs[0],\n      results = _highOrderDiffs[1],\n      highWater = _highOrderDiffs[2],\n      lowestOrder = _highOrderDiffs[3];\n    var remainingMillis = later - cursor;\n    var lowerOrderUnits = units.filter(function (u) {\n      return [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0;\n    });\n    if (lowerOrderUnits.length === 0) {\n      if (highWater < later) {\n        var _cursor$plus;\n        highWater = cursor.plus((_cursor$plus = {}, _cursor$plus[lowestOrder] = 1, _cursor$plus));\n      }\n      if (highWater !== cursor) {\n        results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n      }\n    }\n    var duration = Duration.fromObject(results, opts);\n    if (lowerOrderUnits.length > 0) {\n      var _Duration$fromMillis;\n      return (_Duration$fromMillis = Duration.fromMillis(remainingMillis, opts)).shiftTo.apply(_Duration$fromMillis, lowerOrderUnits).plus(duration);\n    } else {\n      return duration;\n    }\n  }\n\n  var MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n  function intUnit(regex, post) {\n    if (post === void 0) {\n      post = function post(i) {\n        return i;\n      };\n    }\n    return {\n      regex: regex,\n      deser: function deser(_ref) {\n        var s = _ref[0];\n        return post(parseDigits(s));\n      }\n    };\n  }\n  var NBSP = String.fromCharCode(160);\n  var spaceOrNBSP = \"[ \" + NBSP + \"]\";\n  var spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n  function fixListRegex(s) {\n    // make dots optional and also make them literal\n    // make space and non breakable space characters interchangeable\n    return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n  }\n  function stripInsensitivities(s) {\n    return s.replace(/\\./g, \"\") // ignore dots that were made optional\n    .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n    .toLowerCase();\n  }\n  function oneOf(strings, startIndex) {\n    if (strings === null) {\n      return null;\n    } else {\n      return {\n        regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n        deser: function deser(_ref2) {\n          var s = _ref2[0];\n          return strings.findIndex(function (i) {\n            return stripInsensitivities(s) === stripInsensitivities(i);\n          }) + startIndex;\n        }\n      };\n    }\n  }\n  function offset(regex, groups) {\n    return {\n      regex: regex,\n      deser: function deser(_ref3) {\n        var h = _ref3[1],\n          m = _ref3[2];\n        return signedOffset(h, m);\n      },\n      groups: groups\n    };\n  }\n  function simple(regex) {\n    return {\n      regex: regex,\n      deser: function deser(_ref4) {\n        var s = _ref4[0];\n        return s;\n      }\n    };\n  }\n  function escapeToken(value) {\n    return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n  }\n\n  /**\n   * @param token\n   * @param {Locale} loc\n   */\n  function unitForToken(token, loc) {\n    var one = digitRegex(loc),\n      two = digitRegex(loc, \"{2}\"),\n      three = digitRegex(loc, \"{3}\"),\n      four = digitRegex(loc, \"{4}\"),\n      six = digitRegex(loc, \"{6}\"),\n      oneOrTwo = digitRegex(loc, \"{1,2}\"),\n      oneToThree = digitRegex(loc, \"{1,3}\"),\n      oneToSix = digitRegex(loc, \"{1,6}\"),\n      oneToNine = digitRegex(loc, \"{1,9}\"),\n      twoToFour = digitRegex(loc, \"{2,4}\"),\n      fourToSix = digitRegex(loc, \"{4,6}\"),\n      literal = function literal(t) {\n        return {\n          regex: RegExp(escapeToken(t.val)),\n          deser: function deser(_ref5) {\n            var s = _ref5[0];\n            return s;\n          },\n          literal: true\n        };\n      },\n      unitate = function unitate(t) {\n        if (token.literal) {\n          return literal(t);\n        }\n        switch (t.val) {\n          // era\n          case \"G\":\n            return oneOf(loc.eras(\"short\"), 0);\n          case \"GG\":\n            return oneOf(loc.eras(\"long\"), 0);\n          // years\n          case \"y\":\n            return intUnit(oneToSix);\n          case \"yy\":\n            return intUnit(twoToFour, untruncateYear);\n          case \"yyyy\":\n            return intUnit(four);\n          case \"yyyyy\":\n            return intUnit(fourToSix);\n          case \"yyyyyy\":\n            return intUnit(six);\n          // months\n          case \"M\":\n            return intUnit(oneOrTwo);\n          case \"MM\":\n            return intUnit(two);\n          case \"MMM\":\n            return oneOf(loc.months(\"short\", true), 1);\n          case \"MMMM\":\n            return oneOf(loc.months(\"long\", true), 1);\n          case \"L\":\n            return intUnit(oneOrTwo);\n          case \"LL\":\n            return intUnit(two);\n          case \"LLL\":\n            return oneOf(loc.months(\"short\", false), 1);\n          case \"LLLL\":\n            return oneOf(loc.months(\"long\", false), 1);\n          // dates\n          case \"d\":\n            return intUnit(oneOrTwo);\n          case \"dd\":\n            return intUnit(two);\n          // ordinals\n          case \"o\":\n            return intUnit(oneToThree);\n          case \"ooo\":\n            return intUnit(three);\n          // time\n          case \"HH\":\n            return intUnit(two);\n          case \"H\":\n            return intUnit(oneOrTwo);\n          case \"hh\":\n            return intUnit(two);\n          case \"h\":\n            return intUnit(oneOrTwo);\n          case \"mm\":\n            return intUnit(two);\n          case \"m\":\n            return intUnit(oneOrTwo);\n          case \"q\":\n            return intUnit(oneOrTwo);\n          case \"qq\":\n            return intUnit(two);\n          case \"s\":\n            return intUnit(oneOrTwo);\n          case \"ss\":\n            return intUnit(two);\n          case \"S\":\n            return intUnit(oneToThree);\n          case \"SSS\":\n            return intUnit(three);\n          case \"u\":\n            return simple(oneToNine);\n          case \"uu\":\n            return simple(oneOrTwo);\n          case \"uuu\":\n            return intUnit(one);\n          // meridiem\n          case \"a\":\n            return oneOf(loc.meridiems(), 0);\n          // weekYear (k)\n          case \"kkkk\":\n            return intUnit(four);\n          case \"kk\":\n            return intUnit(twoToFour, untruncateYear);\n          // weekNumber (W)\n          case \"W\":\n            return intUnit(oneOrTwo);\n          case \"WW\":\n            return intUnit(two);\n          // weekdays\n          case \"E\":\n          case \"c\":\n            return intUnit(one);\n          case \"EEE\":\n            return oneOf(loc.weekdays(\"short\", false), 1);\n          case \"EEEE\":\n            return oneOf(loc.weekdays(\"long\", false), 1);\n          case \"ccc\":\n            return oneOf(loc.weekdays(\"short\", true), 1);\n          case \"cccc\":\n            return oneOf(loc.weekdays(\"long\", true), 1);\n          // offset/zone\n          case \"Z\":\n          case \"ZZ\":\n            return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(?::(\" + two.source + \"))?\"), 2);\n          case \"ZZZ\":\n            return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(\" + two.source + \")?\"), 2);\n          // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n          // because we don't have any way to figure out what they are\n          case \"z\":\n            return simple(/[a-z_+-/]{1,256}?/i);\n          // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n          // in this case we accept any non-newline white-space\n          case \" \":\n            return simple(/[^\\S\\n\\r]/);\n          default:\n            return literal(t);\n        }\n      };\n    var unit = unitate(token) || {\n      invalidReason: MISSING_FTP\n    };\n    unit.token = token;\n    return unit;\n  }\n  var partTypeStyleToTokenVal = {\n    year: {\n      \"2-digit\": \"yy\",\n      numeric: \"yyyyy\"\n    },\n    month: {\n      numeric: \"M\",\n      \"2-digit\": \"MM\",\n      short: \"MMM\",\n      long: \"MMMM\"\n    },\n    day: {\n      numeric: \"d\",\n      \"2-digit\": \"dd\"\n    },\n    weekday: {\n      short: \"EEE\",\n      long: \"EEEE\"\n    },\n    dayperiod: \"a\",\n    dayPeriod: \"a\",\n    hour12: {\n      numeric: \"h\",\n      \"2-digit\": \"hh\"\n    },\n    hour24: {\n      numeric: \"H\",\n      \"2-digit\": \"HH\"\n    },\n    minute: {\n      numeric: \"m\",\n      \"2-digit\": \"mm\"\n    },\n    second: {\n      numeric: \"s\",\n      \"2-digit\": \"ss\"\n    },\n    timeZoneName: {\n      long: \"ZZZZZ\",\n      short: \"ZZZ\"\n    }\n  };\n  function tokenForPart(part, formatOpts, resolvedOpts) {\n    var type = part.type,\n      value = part.value;\n    if (type === \"literal\") {\n      var isSpace = /^\\s+$/.test(value);\n      return {\n        literal: !isSpace,\n        val: isSpace ? \" \" : value\n      };\n    }\n    var style = formatOpts[type];\n\n    // The user might have explicitly specified hour12 or hourCycle\n    // if so, respect their decision\n    // if not, refer back to the resolvedOpts, which are based on the locale\n    var actualType = type;\n    if (type === \"hour\") {\n      if (formatOpts.hour12 != null) {\n        actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n      } else if (formatOpts.hourCycle != null) {\n        if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n          actualType = \"hour12\";\n        } else {\n          actualType = \"hour24\";\n        }\n      } else {\n        // tokens only differentiate between 24 hours or not,\n        // so we do not need to check hourCycle here, which is less supported anyways\n        actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n      }\n    }\n    var val = partTypeStyleToTokenVal[actualType];\n    if (typeof val === \"object\") {\n      val = val[style];\n    }\n    if (val) {\n      return {\n        literal: false,\n        val: val\n      };\n    }\n    return undefined;\n  }\n  function buildRegex(units) {\n    var re = units.map(function (u) {\n      return u.regex;\n    }).reduce(function (f, r) {\n      return f + \"(\" + r.source + \")\";\n    }, \"\");\n    return [\"^\" + re + \"$\", units];\n  }\n  function match(input, regex, handlers) {\n    var matches = input.match(regex);\n    if (matches) {\n      var all = {};\n      var matchIndex = 1;\n      for (var i in handlers) {\n        if (hasOwnProperty(handlers, i)) {\n          var h = handlers[i],\n            groups = h.groups ? h.groups + 1 : 1;\n          if (!h.literal && h.token) {\n            all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n          }\n          matchIndex += groups;\n        }\n      }\n      return [matches, all];\n    } else {\n      return [matches, {}];\n    }\n  }\n  function dateTimeFromMatches(matches) {\n    var toField = function toField(token) {\n      switch (token) {\n        case \"S\":\n          return \"millisecond\";\n        case \"s\":\n          return \"second\";\n        case \"m\":\n          return \"minute\";\n        case \"h\":\n        case \"H\":\n          return \"hour\";\n        case \"d\":\n          return \"day\";\n        case \"o\":\n          return \"ordinal\";\n        case \"L\":\n        case \"M\":\n          return \"month\";\n        case \"y\":\n          return \"year\";\n        case \"E\":\n        case \"c\":\n          return \"weekday\";\n        case \"W\":\n          return \"weekNumber\";\n        case \"k\":\n          return \"weekYear\";\n        case \"q\":\n          return \"quarter\";\n        default:\n          return null;\n      }\n    };\n    var zone = null;\n    var specificOffset;\n    if (!isUndefined(matches.z)) {\n      zone = IANAZone.create(matches.z);\n    }\n    if (!isUndefined(matches.Z)) {\n      if (!zone) {\n        zone = new FixedOffsetZone(matches.Z);\n      }\n      specificOffset = matches.Z;\n    }\n    if (!isUndefined(matches.q)) {\n      matches.M = (matches.q - 1) * 3 + 1;\n    }\n    if (!isUndefined(matches.h)) {\n      if (matches.h < 12 && matches.a === 1) {\n        matches.h += 12;\n      } else if (matches.h === 12 && matches.a === 0) {\n        matches.h = 0;\n      }\n    }\n    if (matches.G === 0 && matches.y) {\n      matches.y = -matches.y;\n    }\n    if (!isUndefined(matches.u)) {\n      matches.S = parseMillis(matches.u);\n    }\n    var vals = Object.keys(matches).reduce(function (r, k) {\n      var f = toField(k);\n      if (f) {\n        r[f] = matches[k];\n      }\n      return r;\n    }, {});\n    return [vals, zone, specificOffset];\n  }\n  var dummyDateTimeCache = null;\n  function getDummyDateTime() {\n    if (!dummyDateTimeCache) {\n      dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n    }\n    return dummyDateTimeCache;\n  }\n  function maybeExpandMacroToken(token, locale) {\n    if (token.literal) {\n      return token;\n    }\n    var formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n    var tokens = formatOptsToTokens(formatOpts, locale);\n    if (tokens == null || tokens.includes(undefined)) {\n      return token;\n    }\n    return tokens;\n  }\n  function expandMacroTokens(tokens, locale) {\n    var _Array$prototype;\n    return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, tokens.map(function (t) {\n      return maybeExpandMacroToken(t, locale);\n    }));\n  }\n\n  /**\n   * @private\n   */\n\n  var TokenParser = /*#__PURE__*/function () {\n    function TokenParser(locale, format) {\n      this.locale = locale;\n      this.format = format;\n      this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\n      this.units = this.tokens.map(function (t) {\n        return unitForToken(t, locale);\n      });\n      this.disqualifyingUnit = this.units.find(function (t) {\n        return t.invalidReason;\n      });\n      if (!this.disqualifyingUnit) {\n        var _buildRegex = buildRegex(this.units),\n          regexString = _buildRegex[0],\n          handlers = _buildRegex[1];\n        this.regex = RegExp(regexString, \"i\");\n        this.handlers = handlers;\n      }\n    }\n    var _proto = TokenParser.prototype;\n    _proto.explainFromTokens = function explainFromTokens(input) {\n      if (!this.isValid) {\n        return {\n          input: input,\n          tokens: this.tokens,\n          invalidReason: this.invalidReason\n        };\n      } else {\n        var _match = match(input, this.regex, this.handlers),\n          rawMatches = _match[0],\n          matches = _match[1],\n          _ref6 = matches ? dateTimeFromMatches(matches) : [null, null, undefined],\n          result = _ref6[0],\n          zone = _ref6[1],\n          specificOffset = _ref6[2];\n        if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n          throw new ConflictingSpecificationError(\"Can't include meridiem when specifying 24-hour format\");\n        }\n        return {\n          input: input,\n          tokens: this.tokens,\n          regex: this.regex,\n          rawMatches: rawMatches,\n          matches: matches,\n          result: result,\n          zone: zone,\n          specificOffset: specificOffset\n        };\n      }\n    };\n    _createClass(TokenParser, [{\n      key: \"isValid\",\n      get: function get() {\n        return !this.disqualifyingUnit;\n      }\n    }, {\n      key: \"invalidReason\",\n      get: function get() {\n        return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\n      }\n    }]);\n    return TokenParser;\n  }();\n  function explainFromTokens(locale, input, format) {\n    var parser = new TokenParser(locale, format);\n    return parser.explainFromTokens(input);\n  }\n  function parseFromTokens(locale, input, format) {\n    var _explainFromTokens = explainFromTokens(locale, input, format),\n      result = _explainFromTokens.result,\n      zone = _explainFromTokens.zone,\n      specificOffset = _explainFromTokens.specificOffset,\n      invalidReason = _explainFromTokens.invalidReason;\n    return [result, zone, specificOffset, invalidReason];\n  }\n  function formatOptsToTokens(formatOpts, locale) {\n    if (!formatOpts) {\n      return null;\n    }\n    var formatter = Formatter.create(locale, formatOpts);\n    var df = formatter.dtFormatter(getDummyDateTime());\n    var parts = df.formatToParts();\n    var resolvedOpts = df.resolvedOptions();\n    return parts.map(function (p) {\n      return tokenForPart(p, formatOpts, resolvedOpts);\n    });\n  }\n\n  var INVALID = \"Invalid DateTime\";\n  var MAX_DATE = 8.64e15;\n  function unsupportedZone(zone) {\n    return new Invalid(\"unsupported zone\", \"the zone \\\"\" + zone.name + \"\\\" is not supported\");\n  }\n\n  // we cache week data on the DT object and this intermediates the cache\n  /**\n   * @param {DateTime} dt\n   */\n  function possiblyCachedWeekData(dt) {\n    if (dt.weekData === null) {\n      dt.weekData = gregorianToWeek(dt.c);\n    }\n    return dt.weekData;\n  }\n\n  /**\n   * @param {DateTime} dt\n   */\n  function possiblyCachedLocalWeekData(dt) {\n    if (dt.localWeekData === null) {\n      dt.localWeekData = gregorianToWeek(dt.c, dt.loc.getMinDaysInFirstWeek(), dt.loc.getStartOfWeek());\n    }\n    return dt.localWeekData;\n  }\n\n  // clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n  // to create a new object while only changing some of the properties\n  function clone(inst, alts) {\n    var current = {\n      ts: inst.ts,\n      zone: inst.zone,\n      c: inst.c,\n      o: inst.o,\n      loc: inst.loc,\n      invalid: inst.invalid\n    };\n    return new DateTime(_extends({}, current, alts, {\n      old: current\n    }));\n  }\n\n  // find the right offset a given local time. The o input is our guess, which determines which\n  // offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\n  function fixOffset(localTS, o, tz) {\n    // Our UTC time is just a guess because our offset is just a guess\n    var utcGuess = localTS - o * 60 * 1000;\n\n    // Test whether the zone matches the offset for this ts\n    var o2 = tz.offset(utcGuess);\n\n    // If so, offset didn't change and we're done\n    if (o === o2) {\n      return [utcGuess, o];\n    }\n\n    // If not, change the ts by the difference in the offset\n    utcGuess -= (o2 - o) * 60 * 1000;\n\n    // If that gives us the local time we want, we're done\n    var o3 = tz.offset(utcGuess);\n    if (o2 === o3) {\n      return [utcGuess, o2];\n    }\n\n    // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n    return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n  }\n\n  // convert an epoch timestamp into a calendar object with the given offset\n  function tsToObj(ts, offset) {\n    ts += offset * 60 * 1000;\n    var d = new Date(ts);\n    return {\n      year: d.getUTCFullYear(),\n      month: d.getUTCMonth() + 1,\n      day: d.getUTCDate(),\n      hour: d.getUTCHours(),\n      minute: d.getUTCMinutes(),\n      second: d.getUTCSeconds(),\n      millisecond: d.getUTCMilliseconds()\n    };\n  }\n\n  // convert a calendar object to a epoch timestamp\n  function objToTS(obj, offset, zone) {\n    return fixOffset(objToLocalTS(obj), offset, zone);\n  }\n\n  // create a new DT instance by adding a duration, adjusting for DSTs\n  function adjustTime(inst, dur) {\n    var oPre = inst.o,\n      year = inst.c.year + Math.trunc(dur.years),\n      month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n      c = _extends({}, inst.c, {\n        year: year,\n        month: month,\n        day: Math.min(inst.c.day, daysInMonth(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7\n      }),\n      millisToAdd = Duration.fromObject({\n        years: dur.years - Math.trunc(dur.years),\n        quarters: dur.quarters - Math.trunc(dur.quarters),\n        months: dur.months - Math.trunc(dur.months),\n        weeks: dur.weeks - Math.trunc(dur.weeks),\n        days: dur.days - Math.trunc(dur.days),\n        hours: dur.hours,\n        minutes: dur.minutes,\n        seconds: dur.seconds,\n        milliseconds: dur.milliseconds\n      }).as(\"milliseconds\"),\n      localTS = objToLocalTS(c);\n    var _fixOffset = fixOffset(localTS, oPre, inst.zone),\n      ts = _fixOffset[0],\n      o = _fixOffset[1];\n    if (millisToAdd !== 0) {\n      ts += millisToAdd;\n      // that could have changed the offset by going over a DST, but we want to keep the ts the same\n      o = inst.zone.offset(ts);\n    }\n    return {\n      ts: ts,\n      o: o\n    };\n  }\n\n  // helper useful in turning the results of parsing into real dates\n  // by handling the zone options\n  function parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n    var setZone = opts.setZone,\n      zone = opts.zone;\n    if (parsed && Object.keys(parsed).length !== 0 || parsedZone) {\n      var interpretationZone = parsedZone || zone,\n        inst = DateTime.fromObject(parsed, _extends({}, opts, {\n          zone: interpretationZone,\n          specificOffset: specificOffset\n        }));\n      return setZone ? inst : inst.setZone(zone);\n    } else {\n      return DateTime.invalid(new Invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as \" + format));\n    }\n  }\n\n  // if you want to output a technical format (e.g. RFC 2822), this helper\n  // helps handle the details\n  function toTechFormat(dt, format, allowZ) {\n    if (allowZ === void 0) {\n      allowZ = true;\n    }\n    return dt.isValid ? Formatter.create(Locale.create(\"en-US\"), {\n      allowZ: allowZ,\n      forceSimple: true\n    }).formatDateTimeFromString(dt, format) : null;\n  }\n  function _toISODate(o, extended) {\n    var longFormat = o.c.year > 9999 || o.c.year < 0;\n    var c = \"\";\n    if (longFormat && o.c.year >= 0) c += \"+\";\n    c += padStart(o.c.year, longFormat ? 6 : 4);\n    if (extended) {\n      c += \"-\";\n      c += padStart(o.c.month);\n      c += \"-\";\n      c += padStart(o.c.day);\n    } else {\n      c += padStart(o.c.month);\n      c += padStart(o.c.day);\n    }\n    return c;\n  }\n  function _toISOTime(o, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) {\n    var c = padStart(o.c.hour);\n    if (extended) {\n      c += \":\";\n      c += padStart(o.c.minute);\n      if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n        c += \":\";\n      }\n    } else {\n      c += padStart(o.c.minute);\n    }\n    if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n      c += padStart(o.c.second);\n      if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n        c += \".\";\n        c += padStart(o.c.millisecond, 3);\n      }\n    }\n    if (includeOffset) {\n      if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n        c += \"Z\";\n      } else if (o.o < 0) {\n        c += \"-\";\n        c += padStart(Math.trunc(-o.o / 60));\n        c += \":\";\n        c += padStart(Math.trunc(-o.o % 60));\n      } else {\n        c += \"+\";\n        c += padStart(Math.trunc(o.o / 60));\n        c += \":\";\n        c += padStart(Math.trunc(o.o % 60));\n      }\n    }\n    if (extendedZone) {\n      c += \"[\" + o.zone.ianaName + \"]\";\n    }\n    return c;\n  }\n\n  // defaults for unspecified units in the supported calendars\n  var defaultUnitValues = {\n      month: 1,\n      day: 1,\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    },\n    defaultWeekUnitValues = {\n      weekNumber: 1,\n      weekday: 1,\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    },\n    defaultOrdinalUnitValues = {\n      ordinal: 1,\n      hour: 0,\n      minute: 0,\n      second: 0,\n      millisecond: 0\n    };\n\n  // Units in the supported calendars, sorted by bigness\n  var orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n    orderedWeekUnits = [\"weekYear\", \"weekNumber\", \"weekday\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n    orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n  // standardize case and plurality in units\n  function normalizeUnit(unit) {\n    var normalized = {\n      year: \"year\",\n      years: \"year\",\n      month: \"month\",\n      months: \"month\",\n      day: \"day\",\n      days: \"day\",\n      hour: \"hour\",\n      hours: \"hour\",\n      minute: \"minute\",\n      minutes: \"minute\",\n      quarter: \"quarter\",\n      quarters: \"quarter\",\n      second: \"second\",\n      seconds: \"second\",\n      millisecond: \"millisecond\",\n      milliseconds: \"millisecond\",\n      weekday: \"weekday\",\n      weekdays: \"weekday\",\n      weeknumber: \"weekNumber\",\n      weeksnumber: \"weekNumber\",\n      weeknumbers: \"weekNumber\",\n      weekyear: \"weekYear\",\n      weekyears: \"weekYear\",\n      ordinal: \"ordinal\"\n    }[unit.toLowerCase()];\n    if (!normalized) throw new InvalidUnitError(unit);\n    return normalized;\n  }\n  function normalizeUnitWithLocalWeeks(unit) {\n    switch (unit.toLowerCase()) {\n      case \"localweekday\":\n      case \"localweekdays\":\n        return \"localWeekday\";\n      case \"localweeknumber\":\n      case \"localweeknumbers\":\n        return \"localWeekNumber\";\n      case \"localweekyear\":\n      case \"localweekyears\":\n        return \"localWeekYear\";\n      default:\n        return normalizeUnit(unit);\n    }\n  }\n\n  // cache offsets for zones based on the current timestamp when this function is\n  // first called. When we are handling a datetime from components like (year,\n  // month, day, hour) in a time zone, we need a guess about what the timezone\n  // offset is so that we can convert into a UTC timestamp. One way is to find the\n  // offset of now in the zone. The actual date may have a different offset (for\n  // example, if we handle a date in June while we're in December in a zone that\n  // observes DST), but we can check and adjust that.\n  //\n  // When handling many dates, calculating the offset for now every time is\n  // expensive. It's just a guess, so we can cache the offset to use even if we\n  // are right on a time change boundary (we'll just correct in the other\n  // direction). Using a timestamp from first read is a slight optimization for\n  // handling dates close to the current date, since those dates will usually be\n  // in the same offset (we could set the timestamp statically, instead). We use a\n  // single timestamp for all zones to make things a bit more predictable.\n  //\n  // This is safe for quickDT (used by local() and utc()) because we don't fill in\n  // higher-order units from tsNow (as we do in fromObject, this requires that\n  // offset is calculated from tsNow).\n  /**\n   * @param {Zone} zone\n   * @return {number}\n   */\n  function guessOffsetForZone(zone) {\n    if (zoneOffsetTs === undefined) {\n      zoneOffsetTs = Settings.now();\n    }\n\n    // Do not cache anything but IANA zones, because it is not safe to do so.\n    // Guessing an offset which is not present in the zone can cause wrong results from fixOffset\n    if (zone.type !== \"iana\") {\n      return zone.offset(zoneOffsetTs);\n    }\n    var zoneName = zone.name;\n    var offsetGuess = zoneOffsetGuessCache.get(zoneName);\n    if (offsetGuess === undefined) {\n      offsetGuess = zone.offset(zoneOffsetTs);\n      zoneOffsetGuessCache.set(zoneName, offsetGuess);\n    }\n    return offsetGuess;\n  }\n\n  // this is a dumbed down version of fromObject() that runs about 60% faster\n  // but doesn't do any validation, makes a bunch of assumptions about what units\n  // are present, and so on.\n  function quickDT(obj, opts) {\n    var zone = normalizeZone(opts.zone, Settings.defaultZone);\n    if (!zone.isValid) {\n      return DateTime.invalid(unsupportedZone(zone));\n    }\n    var loc = Locale.fromObject(opts);\n    var ts, o;\n\n    // assume we have the higher-order units\n    if (!isUndefined(obj.year)) {\n      for (var _i = 0, _orderedUnits = orderedUnits; _i < _orderedUnits.length; _i++) {\n        var u = _orderedUnits[_i];\n        if (isUndefined(obj[u])) {\n          obj[u] = defaultUnitValues[u];\n        }\n      }\n      var invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n      if (invalid) {\n        return DateTime.invalid(invalid);\n      }\n      var offsetProvis = guessOffsetForZone(zone);\n      var _objToTS = objToTS(obj, offsetProvis, zone);\n      ts = _objToTS[0];\n      o = _objToTS[1];\n    } else {\n      ts = Settings.now();\n    }\n    return new DateTime({\n      ts: ts,\n      zone: zone,\n      loc: loc,\n      o: o\n    });\n  }\n  function diffRelative(start, end, opts) {\n    var round = isUndefined(opts.round) ? true : opts.round,\n      format = function format(c, unit) {\n        c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n        var formatter = end.loc.clone(opts).relFormatter(opts);\n        return formatter.format(c, unit);\n      },\n      differ = function differ(unit) {\n        if (opts.calendary) {\n          if (!end.hasSame(start, unit)) {\n            return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n          } else return 0;\n        } else {\n          return end.diff(start, unit).get(unit);\n        }\n      };\n    if (opts.unit) {\n      return format(differ(opts.unit), opts.unit);\n    }\n    for (var _iterator = _createForOfIteratorHelperLoose(opts.units), _step; !(_step = _iterator()).done;) {\n      var unit = _step.value;\n      var count = differ(unit);\n      if (Math.abs(count) >= 1) {\n        return format(count, unit);\n      }\n    }\n    return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n  }\n  function lastOpts(argList) {\n    var opts = {},\n      args;\n    if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n      opts = argList[argList.length - 1];\n      args = Array.from(argList).slice(0, argList.length - 1);\n    } else {\n      args = Array.from(argList);\n    }\n    return [opts, args];\n  }\n\n  /**\n   * Timestamp to use for cached zone offset guesses (exposed for test)\n   */\n  var zoneOffsetTs;\n  /**\n   * Cache for zone offset guesses (exposed for test).\n   *\n   * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\n   * zone.offset().\n   */\n  var zoneOffsetGuessCache = new Map();\n\n  /**\n   * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n   *\n   * A DateTime comprises of:\n   * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n   * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n   * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n   *\n   * Here is a brief overview of the most commonly used functionality it provides:\n   *\n   * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n   * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n   * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n   * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n   * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n   * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n   * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n   *\n   * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n   */\n  var DateTime = /*#__PURE__*/function (_Symbol$for) {\n    /**\n     * @access private\n     */\n    function DateTime(config) {\n      var zone = config.zone || Settings.defaultZone;\n      var invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) || (!zone.isValid ? unsupportedZone(zone) : null);\n      /**\n       * @access private\n       */\n      this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n      var c = null,\n        o = null;\n      if (!invalid) {\n        var unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n        if (unchanged) {\n          var _ref = [config.old.c, config.old.o];\n          c = _ref[0];\n          o = _ref[1];\n        } else {\n          // If an offset has been passed and we have not been called from\n          // clone(), we can trust it and avoid the offset calculation.\n          var ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\n          c = tsToObj(this.ts, ot);\n          invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n          c = invalid ? null : c;\n          o = invalid ? null : ot;\n        }\n      }\n\n      /**\n       * @access private\n       */\n      this._zone = zone;\n      /**\n       * @access private\n       */\n      this.loc = config.loc || Locale.create();\n      /**\n       * @access private\n       */\n      this.invalid = invalid;\n      /**\n       * @access private\n       */\n      this.weekData = null;\n      /**\n       * @access private\n       */\n      this.localWeekData = null;\n      /**\n       * @access private\n       */\n      this.c = c;\n      /**\n       * @access private\n       */\n      this.o = o;\n      /**\n       * @access private\n       */\n      this.isLuxonDateTime = true;\n    }\n\n    // CONSTRUCT\n\n    /**\n     * Create a DateTime for the current instant, in the system's time zone.\n     *\n     * Use Settings to override these default values if needed.\n     * @example DateTime.now().toISO() //~> now in the ISO format\n     * @return {DateTime}\n     */\n    DateTime.now = function now() {\n      return new DateTime({});\n    }\n\n    /**\n     * Create a local DateTime\n     * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n     * @param {number} [month=1] - The month, 1-indexed\n     * @param {number} [day=1] - The day of the month, 1-indexed\n     * @param {number} [hour=0] - The hour of the day, in 24-hour time\n     * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n     * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n     * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n     * @example DateTime.local()                                  //~> now\n     * @example DateTime.local({ zone: \"America/New_York\" })      //~> now, in US east coast time\n     * @example DateTime.local(2017)                              //~> 2017-01-01T00:00:00\n     * @example DateTime.local(2017, 3)                           //~> 2017-03-01T00:00:00\n     * @example DateTime.local(2017, 3, 12, { locale: \"fr\" })     //~> 2017-03-12T00:00:00, with a French locale\n     * @example DateTime.local(2017, 3, 12, 5)                    //~> 2017-03-12T05:00:00\n     * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" })   //~> 2017-03-12T05:00:00, in UTC\n     * @example DateTime.local(2017, 3, 12, 5, 45)                //~> 2017-03-12T05:45:00\n     * @example DateTime.local(2017, 3, 12, 5, 45, 10)            //~> 2017-03-12T05:45:10\n     * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765)       //~> 2017-03-12T05:45:10.765\n     * @return {DateTime}\n     */;\n    DateTime.local = function local() {\n      var _lastOpts = lastOpts(arguments),\n        opts = _lastOpts[0],\n        args = _lastOpts[1],\n        year = args[0],\n        month = args[1],\n        day = args[2],\n        hour = args[3],\n        minute = args[4],\n        second = args[5],\n        millisecond = args[6];\n      return quickDT({\n        year: year,\n        month: month,\n        day: day,\n        hour: hour,\n        minute: minute,\n        second: second,\n        millisecond: millisecond\n      }, opts);\n    }\n\n    /**\n     * Create a DateTime in UTC\n     * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n     * @param {number} [month=1] - The month, 1-indexed\n     * @param {number} [day=1] - The day of the month\n     * @param {number} [hour=0] - The hour of the day, in 24-hour time\n     * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n     * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n     * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n     * @param {Object} options - configuration options for the DateTime\n     * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n     * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n     * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n     * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\n     * @example DateTime.utc()                                              //~> now\n     * @example DateTime.utc(2017)                                          //~> 2017-01-01T00:00:00Z\n     * @example DateTime.utc(2017, 3)                                       //~> 2017-03-01T00:00:00Z\n     * @example DateTime.utc(2017, 3, 12)                                   //~> 2017-03-12T00:00:00Z\n     * @example DateTime.utc(2017, 3, 12, 5)                                //~> 2017-03-12T05:00:00Z\n     * @example DateTime.utc(2017, 3, 12, 5, 45)                            //~> 2017-03-12T05:45:00Z\n     * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" })          //~> 2017-03-12T05:45:00Z with a French locale\n     * @example DateTime.utc(2017, 3, 12, 5, 45, 10)                        //~> 2017-03-12T05:45:10Z\n     * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n     * @return {DateTime}\n     */;\n    DateTime.utc = function utc() {\n      var _lastOpts2 = lastOpts(arguments),\n        opts = _lastOpts2[0],\n        args = _lastOpts2[1],\n        year = args[0],\n        month = args[1],\n        day = args[2],\n        hour = args[3],\n        minute = args[4],\n        second = args[5],\n        millisecond = args[6];\n      opts.zone = FixedOffsetZone.utcInstance;\n      return quickDT({\n        year: year,\n        month: month,\n        day: day,\n        hour: hour,\n        minute: minute,\n        second: second,\n        millisecond: millisecond\n      }, opts);\n    }\n\n    /**\n     * Create a DateTime from a JavaScript Date object. Uses the default zone.\n     * @param {Date} date - a JavaScript Date object\n     * @param {Object} options - configuration options for the DateTime\n     * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n     * @return {DateTime}\n     */;\n    DateTime.fromJSDate = function fromJSDate(date, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      var ts = isDate(date) ? date.valueOf() : NaN;\n      if (Number.isNaN(ts)) {\n        return DateTime.invalid(\"invalid input\");\n      }\n      var zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n      if (!zoneToUse.isValid) {\n        return DateTime.invalid(unsupportedZone(zoneToUse));\n      }\n      return new DateTime({\n        ts: ts,\n        zone: zoneToUse,\n        loc: Locale.fromObject(options)\n      });\n    }\n\n    /**\n     * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n     * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n     * @param {Object} options - configuration options for the DateTime\n     * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n     * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n     * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n     * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n     * @return {DateTime}\n     */;\n    DateTime.fromMillis = function fromMillis(milliseconds, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      if (!isNumber(milliseconds)) {\n        throw new InvalidArgumentError(\"fromMillis requires a numerical input, but received a \" + typeof milliseconds + \" with value \" + milliseconds);\n      } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n        // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\n        return DateTime.invalid(\"Timestamp out of range\");\n      } else {\n        return new DateTime({\n          ts: milliseconds,\n          zone: normalizeZone(options.zone, Settings.defaultZone),\n          loc: Locale.fromObject(options)\n        });\n      }\n    }\n\n    /**\n     * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n     * @param {number} seconds - a number of seconds since 1970 UTC\n     * @param {Object} options - configuration options for the DateTime\n     * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n     * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n     * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n     * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n     * @return {DateTime}\n     */;\n    DateTime.fromSeconds = function fromSeconds(seconds, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      if (!isNumber(seconds)) {\n        throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n      } else {\n        return new DateTime({\n          ts: seconds * 1000,\n          zone: normalizeZone(options.zone, Settings.defaultZone),\n          loc: Locale.fromObject(options)\n        });\n      }\n    }\n\n    /**\n     * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n     * @param {Object} obj - the object to create the DateTime from\n     * @param {number} obj.year - a year, such as 1987\n     * @param {number} obj.month - a month, 1-12\n     * @param {number} obj.day - a day of the month, 1-31, depending on the month\n     * @param {number} obj.ordinal - day of the year, 1-365 or 366\n     * @param {number} obj.weekYear - an ISO week year\n     * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n     * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n     * @param {number} obj.localWeekYear - a week year, according to the locale\n     * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n     * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n     * @param {number} obj.hour - hour of the day, 0-23\n     * @param {number} obj.minute - minute of the hour, 0-59\n     * @param {number} obj.second - second of the minute, 0-59\n     * @param {number} obj.millisecond - millisecond of the second, 0-999\n     * @param {Object} opts - options for creating this DateTime\n     * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n     * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n     * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n     * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n     * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n     * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n     * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n     * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n     * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n     * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n     * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n     * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n     * @return {DateTime}\n     */;\n    DateTime.fromObject = function fromObject(obj, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      obj = obj || {};\n      var zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n      if (!zoneToUse.isValid) {\n        return DateTime.invalid(unsupportedZone(zoneToUse));\n      }\n      var loc = Locale.fromObject(opts);\n      var normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n      var _usesLocalWeekValues = usesLocalWeekValues(normalized, loc),\n        minDaysInFirstWeek = _usesLocalWeekValues.minDaysInFirstWeek,\n        startOfWeek = _usesLocalWeekValues.startOfWeek;\n      var tsNow = Settings.now(),\n        offsetProvis = !isUndefined(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow),\n        containsOrdinal = !isUndefined(normalized.ordinal),\n        containsGregorYear = !isUndefined(normalized.year),\n        containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n        containsGregor = containsGregorYear || containsGregorMD,\n        definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n      // cases:\n      // just a weekday -> this week's instance of that weekday, no worries\n      // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n      // (gregorian month or day) + ordinal -> error\n      // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n      if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n        throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\n      }\n      if (containsGregorMD && containsOrdinal) {\n        throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n      }\n      var useWeekData = definiteWeekDef || normalized.weekday && !containsGregor;\n\n      // configure ourselves to deal with gregorian dates or week stuff\n      var units,\n        defaultValues,\n        objNow = tsToObj(tsNow, offsetProvis);\n      if (useWeekData) {\n        units = orderedWeekUnits;\n        defaultValues = defaultWeekUnitValues;\n        objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n      } else if (containsOrdinal) {\n        units = orderedOrdinalUnits;\n        defaultValues = defaultOrdinalUnitValues;\n        objNow = gregorianToOrdinal(objNow);\n      } else {\n        units = orderedUnits;\n        defaultValues = defaultUnitValues;\n      }\n\n      // set default values for missing stuff\n      var foundFirst = false;\n      for (var _iterator2 = _createForOfIteratorHelperLoose(units), _step2; !(_step2 = _iterator2()).done;) {\n        var u = _step2.value;\n        var v = normalized[u];\n        if (!isUndefined(v)) {\n          foundFirst = true;\n        } else if (foundFirst) {\n          normalized[u] = defaultValues[u];\n        } else {\n          normalized[u] = objNow[u];\n        }\n      }\n\n      // make sure the values we have are in range\n      var higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized),\n        invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n      if (invalid) {\n        return DateTime.invalid(invalid);\n      }\n\n      // compute the actual time\n      var gregorian = useWeekData ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek) : containsOrdinal ? ordinalToGregorian(normalized) : normalized,\n        _objToTS2 = objToTS(gregorian, offsetProvis, zoneToUse),\n        tsFinal = _objToTS2[0],\n        offsetFinal = _objToTS2[1],\n        inst = new DateTime({\n          ts: tsFinal,\n          zone: zoneToUse,\n          o: offsetFinal,\n          loc: loc\n        });\n\n      // gregorian data + weekday serves only to validate\n      if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n        return DateTime.invalid(\"mismatched weekday\", \"you can't specify both a weekday of \" + normalized.weekday + \" and a date of \" + inst.toISO());\n      }\n      if (!inst.isValid) {\n        return DateTime.invalid(inst.invalid);\n      }\n      return inst;\n    }\n\n    /**\n     * Create a DateTime from an ISO 8601 string\n     * @param {string} text - the ISO string\n     * @param {Object} opts - options to affect the creation\n     * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n     * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n     * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n     * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n     * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n     * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\n     * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n     * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n     * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n     * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n     * @example DateTime.fromISO('2016-W05-4')\n     * @return {DateTime}\n     */;\n    DateTime.fromISO = function fromISO(text, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      var _parseISODate = parseISODate(text),\n        vals = _parseISODate[0],\n        parsedZone = _parseISODate[1];\n      return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n    }\n\n    /**\n     * Create a DateTime from an RFC 2822 string\n     * @param {string} text - the RFC 2822 string\n     * @param {Object} opts - options to affect the creation\n     * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n     * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n     * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n     * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n     * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n     * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n     * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n     * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n     * @return {DateTime}\n     */;\n    DateTime.fromRFC2822 = function fromRFC2822(text, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      var _parseRFC2822Date = parseRFC2822Date(text),\n        vals = _parseRFC2822Date[0],\n        parsedZone = _parseRFC2822Date[1];\n      return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n    }\n\n    /**\n     * Create a DateTime from an HTTP header date\n     * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n     * @param {string} text - the HTTP header date\n     * @param {Object} opts - options to affect the creation\n     * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n     * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n     * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n     * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n     * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n     * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n     * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n     * @example DateTime.fromHTTP('Sun Nov  6 08:49:37 1994')\n     * @return {DateTime}\n     */;\n    DateTime.fromHTTP = function fromHTTP(text, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      var _parseHTTPDate = parseHTTPDate(text),\n        vals = _parseHTTPDate[0],\n        parsedZone = _parseHTTPDate[1];\n      return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n    }\n\n    /**\n     * Create a DateTime from an input string and format string.\n     * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n     * @param {string} text - the string to parse\n     * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n     * @param {Object} opts - options to affect the creation\n     * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n     * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n     * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n     * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n     * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n     * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @return {DateTime}\n     */;\n    DateTime.fromFormat = function fromFormat(text, fmt, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (isUndefined(text) || isUndefined(fmt)) {\n        throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n      }\n      var _opts = opts,\n        _opts$locale = _opts.locale,\n        locale = _opts$locale === void 0 ? null : _opts$locale,\n        _opts$numberingSystem = _opts.numberingSystem,\n        numberingSystem = _opts$numberingSystem === void 0 ? null : _opts$numberingSystem,\n        localeToUse = Locale.fromOpts({\n          locale: locale,\n          numberingSystem: numberingSystem,\n          defaultToEN: true\n        }),\n        _parseFromTokens = parseFromTokens(localeToUse, text, fmt),\n        vals = _parseFromTokens[0],\n        parsedZone = _parseFromTokens[1],\n        specificOffset = _parseFromTokens[2],\n        invalid = _parseFromTokens[3];\n      if (invalid) {\n        return DateTime.invalid(invalid);\n      } else {\n        return parseDataToDateTime(vals, parsedZone, opts, \"format \" + fmt, text, specificOffset);\n      }\n    }\n\n    /**\n     * @deprecated use fromFormat instead\n     */;\n    DateTime.fromString = function fromString(text, fmt, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return DateTime.fromFormat(text, fmt, opts);\n    }\n\n    /**\n     * Create a DateTime from a SQL date, time, or datetime\n     * Defaults to en-US if no locale has been specified, regardless of the system's locale\n     * @param {string} text - the string to parse\n     * @param {Object} opts - options to affect the creation\n     * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n     * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n     * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n     * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n     * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n     * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n     * @example DateTime.fromSQL('2017-05-15')\n     * @example DateTime.fromSQL('2017-05-15 09:12:34')\n     * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n     * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n     * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n     * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n     * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n     * @example DateTime.fromSQL('09:12:34.342')\n     * @return {DateTime}\n     */;\n    DateTime.fromSQL = function fromSQL(text, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      var _parseSQL = parseSQL(text),\n        vals = _parseSQL[0],\n        parsedZone = _parseSQL[1];\n      return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n    }\n\n    /**\n     * Create an invalid DateTime.\n     * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n     * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n     * @return {DateTime}\n     */;\n    DateTime.invalid = function invalid(reason, explanation) {\n      if (explanation === void 0) {\n        explanation = null;\n      }\n      if (!reason) {\n        throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n      }\n      var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n      if (Settings.throwOnInvalid) {\n        throw new InvalidDateTimeError(invalid);\n      } else {\n        return new DateTime({\n          invalid: invalid\n        });\n      }\n    }\n\n    /**\n     * Check if an object is an instance of DateTime. Works across context boundaries\n     * @param {object} o\n     * @return {boolean}\n     */;\n    DateTime.isDateTime = function isDateTime(o) {\n      return o && o.isLuxonDateTime || false;\n    }\n\n    /**\n     * Produce the format string for a set of options\n     * @param formatOpts\n     * @param localeOpts\n     * @returns {string}\n     */;\n    DateTime.parseFormatForOpts = function parseFormatForOpts(formatOpts, localeOpts) {\n      if (localeOpts === void 0) {\n        localeOpts = {};\n      }\n      var tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n      return !tokenList ? null : tokenList.map(function (t) {\n        return t ? t.val : null;\n      }).join(\"\");\n    }\n\n    /**\n     * Produce the the fully expanded format token for the locale\n     * Does NOT quote characters, so quoted tokens will not round trip correctly\n     * @param fmt\n     * @param localeOpts\n     * @returns {string}\n     */;\n    DateTime.expandFormat = function expandFormat(fmt, localeOpts) {\n      if (localeOpts === void 0) {\n        localeOpts = {};\n      }\n      var expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n      return expanded.map(function (t) {\n        return t.val;\n      }).join(\"\");\n    };\n    DateTime.resetCache = function resetCache() {\n      zoneOffsetTs = undefined;\n      zoneOffsetGuessCache.clear();\n    }\n\n    // INFO\n\n    /**\n     * Get the value of unit.\n     * @param {string} unit - a unit such as 'minute' or 'day'\n     * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n     * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n     * @return {number}\n     */;\n    var _proto = DateTime.prototype;\n    _proto.get = function get(unit) {\n      return this[unit];\n    }\n\n    /**\n     * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n     * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n     * * The DateTime was created by an operation on another invalid date\n     * @type {boolean}\n     */;\n    /**\n     * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n     * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n     * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n     * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n     * @returns {DateTime[]}\n     */\n    _proto.getPossibleOffsets = function getPossibleOffsets() {\n      if (!this.isValid || this.isOffsetFixed) {\n        return [this];\n      }\n      var dayMs = 86400000;\n      var minuteMs = 60000;\n      var localTS = objToLocalTS(this.c);\n      var oEarlier = this.zone.offset(localTS - dayMs);\n      var oLater = this.zone.offset(localTS + dayMs);\n      var o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n      var o2 = this.zone.offset(localTS - oLater * minuteMs);\n      if (o1 === o2) {\n        return [this];\n      }\n      var ts1 = localTS - o1 * minuteMs;\n      var ts2 = localTS - o2 * minuteMs;\n      var c1 = tsToObj(ts1, o1);\n      var c2 = tsToObj(ts2, o2);\n      if (c1.hour === c2.hour && c1.minute === c2.minute && c1.second === c2.second && c1.millisecond === c2.millisecond) {\n        return [clone(this, {\n          ts: ts1\n        }), clone(this, {\n          ts: ts2\n        })];\n      }\n      return [this];\n    }\n\n    /**\n     * Returns true if this DateTime is in a leap year, false otherwise\n     * @example DateTime.local(2016).isInLeapYear //=> true\n     * @example DateTime.local(2013).isInLeapYear //=> false\n     * @type {boolean}\n     */;\n    /**\n     * Returns the resolved Intl options for this DateTime.\n     * This is useful in understanding the behavior of formatting methods\n     * @param {Object} opts - the same options as toLocaleString\n     * @return {Object}\n     */\n    _proto.resolvedLocaleOptions = function resolvedLocaleOptions(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      var _Formatter$create$res = Formatter.create(this.loc.clone(opts), opts).resolvedOptions(this),\n        locale = _Formatter$create$res.locale,\n        numberingSystem = _Formatter$create$res.numberingSystem,\n        calendar = _Formatter$create$res.calendar;\n      return {\n        locale: locale,\n        numberingSystem: numberingSystem,\n        outputCalendar: calendar\n      };\n    }\n\n    // TRANSFORM\n\n    /**\n     * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n     *\n     * Equivalent to {@link DateTime#setZone}('utc')\n     * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n     * @param {Object} [opts={}] - options to pass to `setZone()`\n     * @return {DateTime}\n     */;\n    _proto.toUTC = function toUTC(offset, opts) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.setZone(FixedOffsetZone.instance(offset), opts);\n    }\n\n    /**\n     * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n     *\n     * Equivalent to `setZone('local')`\n     * @return {DateTime}\n     */;\n    _proto.toLocal = function toLocal() {\n      return this.setZone(Settings.defaultZone);\n    }\n\n    /**\n     * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n     *\n     * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n     * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n     * @param {Object} opts - options\n     * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n     * @return {DateTime}\n     */;\n    _proto.setZone = function setZone(zone, _temp) {\n      var _ref2 = _temp === void 0 ? {} : _temp,\n        _ref2$keepLocalTime = _ref2.keepLocalTime,\n        keepLocalTime = _ref2$keepLocalTime === void 0 ? false : _ref2$keepLocalTime,\n        _ref2$keepCalendarTim = _ref2.keepCalendarTime,\n        keepCalendarTime = _ref2$keepCalendarTim === void 0 ? false : _ref2$keepCalendarTim;\n      zone = normalizeZone(zone, Settings.defaultZone);\n      if (zone.equals(this.zone)) {\n        return this;\n      } else if (!zone.isValid) {\n        return DateTime.invalid(unsupportedZone(zone));\n      } else {\n        var newTS = this.ts;\n        if (keepLocalTime || keepCalendarTime) {\n          var offsetGuess = zone.offset(this.ts);\n          var asObj = this.toObject();\n          var _objToTS3 = objToTS(asObj, offsetGuess, zone);\n          newTS = _objToTS3[0];\n        }\n        return clone(this, {\n          ts: newTS,\n          zone: zone\n        });\n      }\n    }\n\n    /**\n     * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n     * @param {Object} properties - the properties to set\n     * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n     * @return {DateTime}\n     */;\n    _proto.reconfigure = function reconfigure(_temp2) {\n      var _ref3 = _temp2 === void 0 ? {} : _temp2,\n        locale = _ref3.locale,\n        numberingSystem = _ref3.numberingSystem,\n        outputCalendar = _ref3.outputCalendar;\n      var loc = this.loc.clone({\n        locale: locale,\n        numberingSystem: numberingSystem,\n        outputCalendar: outputCalendar\n      });\n      return clone(this, {\n        loc: loc\n      });\n    }\n\n    /**\n     * \"Set\" the locale. Returns a newly-constructed DateTime.\n     * Just a convenient alias for reconfigure({ locale })\n     * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n     * @return {DateTime}\n     */;\n    _proto.setLocale = function setLocale(locale) {\n      return this.reconfigure({\n        locale: locale\n      });\n    }\n\n    /**\n     * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n     * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n     *\n     * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n     * They cannot be mixed with ISO-week units like `weekday`.\n     * @param {Object} values - a mapping of units to numbers\n     * @example dt.set({ year: 2017 })\n     * @example dt.set({ hour: 8, minute: 30 })\n     * @example dt.set({ weekday: 5 })\n     * @example dt.set({ year: 2005, ordinal: 234 })\n     * @return {DateTime}\n     */;\n    _proto.set = function set(values) {\n      if (!this.isValid) return this;\n      var normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n      var _usesLocalWeekValues2 = usesLocalWeekValues(normalized, this.loc),\n        minDaysInFirstWeek = _usesLocalWeekValues2.minDaysInFirstWeek,\n        startOfWeek = _usesLocalWeekValues2.startOfWeek;\n      var settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday),\n        containsOrdinal = !isUndefined(normalized.ordinal),\n        containsGregorYear = !isUndefined(normalized.year),\n        containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n        containsGregor = containsGregorYear || containsGregorMD,\n        definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n      if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n        throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\n      }\n      if (containsGregorMD && containsOrdinal) {\n        throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n      }\n      var mixed;\n      if (settingWeekStuff) {\n        mixed = weekToGregorian(_extends({}, gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), normalized), minDaysInFirstWeek, startOfWeek);\n      } else if (!isUndefined(normalized.ordinal)) {\n        mixed = ordinalToGregorian(_extends({}, gregorianToOrdinal(this.c), normalized));\n      } else {\n        mixed = _extends({}, this.toObject(), normalized);\n\n        // if we didn't set the day but we ended up on an overflow date,\n        // use the last day of the right month\n        if (isUndefined(normalized.day)) {\n          mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n        }\n      }\n      var _objToTS4 = objToTS(mixed, this.o, this.zone),\n        ts = _objToTS4[0],\n        o = _objToTS4[1];\n      return clone(this, {\n        ts: ts,\n        o: o\n      });\n    }\n\n    /**\n     * Add a period of time to this DateTime and return the resulting DateTime\n     *\n     * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n     * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n     * @example DateTime.now().plus(123) //~> in 123 milliseconds\n     * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n     * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n     * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n     * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n     * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n     * @return {DateTime}\n     */;\n    _proto.plus = function plus(duration) {\n      if (!this.isValid) return this;\n      var dur = Duration.fromDurationLike(duration);\n      return clone(this, adjustTime(this, dur));\n    }\n\n    /**\n     * Subtract a period of time to this DateTime and return the resulting DateTime\n     * See {@link DateTime#plus}\n     * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n     @return {DateTime}\n     */;\n    _proto.minus = function minus(duration) {\n      if (!this.isValid) return this;\n      var dur = Duration.fromDurationLike(duration).negate();\n      return clone(this, adjustTime(this, dur));\n    }\n\n    /**\n     * \"Set\" this DateTime to the beginning of a unit of time.\n     * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n     * @param {Object} opts - options\n     * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n     * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n     * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n     * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n     * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n     * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n     * @return {DateTime}\n     */;\n    _proto.startOf = function startOf(unit, _temp3) {\n      var _ref4 = _temp3 === void 0 ? {} : _temp3,\n        _ref4$useLocaleWeeks = _ref4.useLocaleWeeks,\n        useLocaleWeeks = _ref4$useLocaleWeeks === void 0 ? false : _ref4$useLocaleWeeks;\n      if (!this.isValid) return this;\n      var o = {},\n        normalizedUnit = Duration.normalizeUnit(unit);\n      switch (normalizedUnit) {\n        case \"years\":\n          o.month = 1;\n        // falls through\n        case \"quarters\":\n        case \"months\":\n          o.day = 1;\n        // falls through\n        case \"weeks\":\n        case \"days\":\n          o.hour = 0;\n        // falls through\n        case \"hours\":\n          o.minute = 0;\n        // falls through\n        case \"minutes\":\n          o.second = 0;\n        // falls through\n        case \"seconds\":\n          o.millisecond = 0;\n          break;\n        // no default, invalid units throw in normalizeUnit()\n      }\n\n      if (normalizedUnit === \"weeks\") {\n        if (useLocaleWeeks) {\n          var startOfWeek = this.loc.getStartOfWeek();\n          var weekday = this.weekday;\n          if (weekday < startOfWeek) {\n            o.weekNumber = this.weekNumber - 1;\n          }\n          o.weekday = startOfWeek;\n        } else {\n          o.weekday = 1;\n        }\n      }\n      if (normalizedUnit === \"quarters\") {\n        var q = Math.ceil(this.month / 3);\n        o.month = (q - 1) * 3 + 1;\n      }\n      return this.set(o);\n    }\n\n    /**\n     * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n     * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n     * @param {Object} opts - options\n     * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n     * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n     * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n     * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n     * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n     * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n     * @return {DateTime}\n     */;\n    _proto.endOf = function endOf(unit, opts) {\n      var _this$plus;\n      return this.isValid ? this.plus((_this$plus = {}, _this$plus[unit] = 1, _this$plus)).startOf(unit, opts).minus(1) : this;\n    }\n\n    // OUTPUT\n\n    /**\n     * Returns a string representation of this DateTime formatted according to the specified format string.\n     * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n     * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n     * @param {string} fmt - the format string\n     * @param {Object} opts - opts to override the configuration options on this DateTime\n     * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n     * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n     * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n     * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n     * @return {string}\n     */;\n    _proto.toFormat = function toFormat(fmt, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID;\n    }\n\n    /**\n     * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n     * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n     * of the DateTime in the assigned locale.\n     * Defaults to the system's locale if no locale has been specified\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n     * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n     * @param {Object} opts - opts to override the configuration options on this DateTime\n     * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n     * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n     * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n     * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n     * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n     * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n     * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n     * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n     * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n     * @return {string}\n     */;\n    _proto.toLocaleString = function toLocaleString(formatOpts, opts) {\n      if (formatOpts === void 0) {\n        formatOpts = DATE_SHORT;\n      }\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID;\n    }\n\n    /**\n     * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n     * Defaults to the system's locale if no locale has been specified\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n     * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n     * @example DateTime.now().toLocaleParts(); //=> [\n     *                                   //=>   { type: 'day', value: '25' },\n     *                                   //=>   { type: 'literal', value: '/' },\n     *                                   //=>   { type: 'month', value: '05' },\n     *                                   //=>   { type: 'literal', value: '/' },\n     *                                   //=>   { type: 'year', value: '1982' }\n     *                                   //=> ]\n     */;\n    _proto.toLocaleParts = function toLocaleParts(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : [];\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this DateTime\n     * @param {Object} opts - options\n     * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n     * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n     * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n     * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n     * @param {string} [opts.format='extended'] - choose between the basic and extended format\n     * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n     * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n     * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n     * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n     * @return {string|null}\n     */;\n    _proto.toISO = function toISO(_temp4) {\n      var _ref5 = _temp4 === void 0 ? {} : _temp4,\n        _ref5$format = _ref5.format,\n        format = _ref5$format === void 0 ? \"extended\" : _ref5$format,\n        _ref5$suppressSeconds = _ref5.suppressSeconds,\n        suppressSeconds = _ref5$suppressSeconds === void 0 ? false : _ref5$suppressSeconds,\n        _ref5$suppressMillise = _ref5.suppressMilliseconds,\n        suppressMilliseconds = _ref5$suppressMillise === void 0 ? false : _ref5$suppressMillise,\n        _ref5$includeOffset = _ref5.includeOffset,\n        includeOffset = _ref5$includeOffset === void 0 ? true : _ref5$includeOffset,\n        _ref5$extendedZone = _ref5.extendedZone,\n        extendedZone = _ref5$extendedZone === void 0 ? false : _ref5$extendedZone;\n      if (!this.isValid) {\n        return null;\n      }\n      var ext = format === \"extended\";\n      var c = _toISODate(this, ext);\n      c += \"T\";\n      c += _toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n      return c;\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this DateTime's date component\n     * @param {Object} opts - options\n     * @param {string} [opts.format='extended'] - choose between the basic and extended format\n     * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n     * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n     * @return {string|null}\n     */;\n    _proto.toISODate = function toISODate(_temp5) {\n      var _ref6 = _temp5 === void 0 ? {} : _temp5,\n        _ref6$format = _ref6.format,\n        format = _ref6$format === void 0 ? \"extended\" : _ref6$format;\n      if (!this.isValid) {\n        return null;\n      }\n      return _toISODate(this, format === \"extended\");\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this DateTime's week date\n     * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n     * @return {string}\n     */;\n    _proto.toISOWeekDate = function toISOWeekDate() {\n      return toTechFormat(this, \"kkkk-'W'WW-c\");\n    }\n\n    /**\n     * Returns an ISO 8601-compliant string representation of this DateTime's time component\n     * @param {Object} opts - options\n     * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n     * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n     * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n     * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n     * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n     * @param {string} [opts.format='extended'] - choose between the basic and extended format\n     * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n     * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n     * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n     * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n     * @return {string}\n     */;\n    _proto.toISOTime = function toISOTime(_temp6) {\n      var _ref7 = _temp6 === void 0 ? {} : _temp6,\n        _ref7$suppressMillise = _ref7.suppressMilliseconds,\n        suppressMilliseconds = _ref7$suppressMillise === void 0 ? false : _ref7$suppressMillise,\n        _ref7$suppressSeconds = _ref7.suppressSeconds,\n        suppressSeconds = _ref7$suppressSeconds === void 0 ? false : _ref7$suppressSeconds,\n        _ref7$includeOffset = _ref7.includeOffset,\n        includeOffset = _ref7$includeOffset === void 0 ? true : _ref7$includeOffset,\n        _ref7$includePrefix = _ref7.includePrefix,\n        includePrefix = _ref7$includePrefix === void 0 ? false : _ref7$includePrefix,\n        _ref7$extendedZone = _ref7.extendedZone,\n        extendedZone = _ref7$extendedZone === void 0 ? false : _ref7$extendedZone,\n        _ref7$format = _ref7.format,\n        format = _ref7$format === void 0 ? \"extended\" : _ref7$format;\n      if (!this.isValid) {\n        return null;\n      }\n      var c = includePrefix ? \"T\" : \"\";\n      return c + _toISOTime(this, format === \"extended\", suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n    }\n\n    /**\n     * Returns an RFC 2822-compatible string representation of this DateTime\n     * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n     * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n     * @return {string}\n     */;\n    _proto.toRFC2822 = function toRFC2822() {\n      return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n    }\n\n    /**\n     * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n     * Specifically, the string conforms to RFC 1123.\n     * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n     * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n     * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n     * @return {string}\n     */;\n    _proto.toHTTP = function toHTTP() {\n      return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n    }\n\n    /**\n     * Returns a string representation of this DateTime appropriate for use in SQL Date\n     * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n     * @return {string|null}\n     */;\n    _proto.toSQLDate = function toSQLDate() {\n      if (!this.isValid) {\n        return null;\n      }\n      return _toISODate(this, true);\n    }\n\n    /**\n     * Returns a string representation of this DateTime appropriate for use in SQL Time\n     * @param {Object} opts - options\n     * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n     * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n     * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n     * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n     * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n     * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n     * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n     * @return {string}\n     */;\n    _proto.toSQLTime = function toSQLTime(_temp7) {\n      var _ref8 = _temp7 === void 0 ? {} : _temp7,\n        _ref8$includeOffset = _ref8.includeOffset,\n        includeOffset = _ref8$includeOffset === void 0 ? true : _ref8$includeOffset,\n        _ref8$includeZone = _ref8.includeZone,\n        includeZone = _ref8$includeZone === void 0 ? false : _ref8$includeZone,\n        _ref8$includeOffsetSp = _ref8.includeOffsetSpace,\n        includeOffsetSpace = _ref8$includeOffsetSp === void 0 ? true : _ref8$includeOffsetSp;\n      var fmt = \"HH:mm:ss.SSS\";\n      if (includeZone || includeOffset) {\n        if (includeOffsetSpace) {\n          fmt += \" \";\n        }\n        if (includeZone) {\n          fmt += \"z\";\n        } else if (includeOffset) {\n          fmt += \"ZZ\";\n        }\n      }\n      return toTechFormat(this, fmt, true);\n    }\n\n    /**\n     * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n     * @param {Object} opts - options\n     * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n     * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n     * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n     * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n     * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n     * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n     * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n     * @return {string}\n     */;\n    _proto.toSQL = function toSQL(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (!this.isValid) {\n        return null;\n      }\n      return this.toSQLDate() + \" \" + this.toSQLTime(opts);\n    }\n\n    /**\n     * Returns a string representation of this DateTime appropriate for debugging\n     * @return {string}\n     */;\n    _proto.toString = function toString() {\n      return this.isValid ? this.toISO() : INVALID;\n    }\n\n    /**\n     * Returns a string representation of this DateTime appropriate for the REPL.\n     * @return {string}\n     */;\n    _proto[_Symbol$for] = function () {\n      if (this.isValid) {\n        return \"DateTime { ts: \" + this.toISO() + \", zone: \" + this.zone.name + \", locale: \" + this.locale + \" }\";\n      } else {\n        return \"DateTime { Invalid, reason: \" + this.invalidReason + \" }\";\n      }\n    }\n\n    /**\n     * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n     * @return {number}\n     */;\n    _proto.valueOf = function valueOf() {\n      return this.toMillis();\n    }\n\n    /**\n     * Returns the epoch milliseconds of this DateTime.\n     * @return {number}\n     */;\n    _proto.toMillis = function toMillis() {\n      return this.isValid ? this.ts : NaN;\n    }\n\n    /**\n     * Returns the epoch seconds (including milliseconds in the fractional part) of this DateTime.\n     * @return {number}\n     */;\n    _proto.toSeconds = function toSeconds() {\n      return this.isValid ? this.ts / 1000 : NaN;\n    }\n\n    /**\n     * Returns the epoch seconds (as a whole number) of this DateTime.\n     * @return {number}\n     */;\n    _proto.toUnixInteger = function toUnixInteger() {\n      return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n    }\n\n    /**\n     * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n     * @return {string}\n     */;\n    _proto.toJSON = function toJSON() {\n      return this.toISO();\n    }\n\n    /**\n     * Returns a BSON serializable equivalent to this DateTime.\n     * @return {Date}\n     */;\n    _proto.toBSON = function toBSON() {\n      return this.toJSDate();\n    }\n\n    /**\n     * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n     * @param opts - options for generating the object\n     * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n     * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n     * @return {Object}\n     */;\n    _proto.toObject = function toObject(opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (!this.isValid) return {};\n      var base = _extends({}, this.c);\n      if (opts.includeConfig) {\n        base.outputCalendar = this.outputCalendar;\n        base.numberingSystem = this.loc.numberingSystem;\n        base.locale = this.loc.locale;\n      }\n      return base;\n    }\n\n    /**\n     * Returns a JavaScript Date equivalent to this DateTime.\n     * @return {Date}\n     */;\n    _proto.toJSDate = function toJSDate() {\n      return new Date(this.isValid ? this.ts : NaN);\n    }\n\n    // COMPARE\n\n    /**\n     * Return the difference between two DateTimes as a Duration.\n     * @param {DateTime} otherDateTime - the DateTime to compare this one to\n     * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n     * @param {Object} opts - options that affect the creation of the Duration\n     * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n     * @example\n     * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n     *     i2 = DateTime.fromISO('1983-10-14T10:30');\n     * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n     * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n     * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n     * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n     * @return {Duration}\n     */;\n    _proto.diff = function diff(otherDateTime, unit, opts) {\n      if (unit === void 0) {\n        unit = \"milliseconds\";\n      }\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (!this.isValid || !otherDateTime.isValid) {\n        return Duration.invalid(\"created by diffing an invalid DateTime\");\n      }\n      var durOpts = _extends({\n        locale: this.locale,\n        numberingSystem: this.numberingSystem\n      }, opts);\n      var units = maybeArray(unit).map(Duration.normalizeUnit),\n        otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n        earlier = otherIsLater ? this : otherDateTime,\n        later = otherIsLater ? otherDateTime : this,\n        diffed = _diff(earlier, later, units, durOpts);\n      return otherIsLater ? diffed.negate() : diffed;\n    }\n\n    /**\n     * Return the difference between this DateTime and right now.\n     * See {@link DateTime#diff}\n     * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n     * @param {Object} opts - options that affect the creation of the Duration\n     * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n     * @return {Duration}\n     */;\n    _proto.diffNow = function diffNow(unit, opts) {\n      if (unit === void 0) {\n        unit = \"milliseconds\";\n      }\n      if (opts === void 0) {\n        opts = {};\n      }\n      return this.diff(DateTime.now(), unit, opts);\n    }\n\n    /**\n     * Return an Interval spanning between this DateTime and another DateTime\n     * @param {DateTime} otherDateTime - the other end point of the Interval\n     * @return {Interval|DateTime}\n     */;\n    _proto.until = function until(otherDateTime) {\n      return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n    }\n\n    /**\n     * Return whether this DateTime is in the same unit of time as another DateTime.\n     * Higher-order units must also be identical for this function to return `true`.\n     * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n     * @param {DateTime} otherDateTime - the other DateTime\n     * @param {string} unit - the unit of time to check sameness on\n     * @param {Object} opts - options\n     * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n     * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n     * @return {boolean}\n     */;\n    _proto.hasSame = function hasSame(otherDateTime, unit, opts) {\n      if (!this.isValid) return false;\n      var inputMs = otherDateTime.valueOf();\n      var adjustedToZone = this.setZone(otherDateTime.zone, {\n        keepLocalTime: true\n      });\n      return adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts);\n    }\n\n    /**\n     * Equality check\n     * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n     * To compare just the millisecond values, use `+dt1 === +dt2`.\n     * @param {DateTime} other - the other DateTime\n     * @return {boolean}\n     */;\n    _proto.equals = function equals(other) {\n      return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc);\n    }\n\n    /**\n     * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n     * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n     * @param {Object} options - options that affect the output\n     * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n     * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n     * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n     * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n     * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n     * @param {string} options.locale - override the locale of this DateTime\n     * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n     * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n     * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n     * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n     * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n     * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n     * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n     */;\n    _proto.toRelative = function toRelative(options) {\n      if (options === void 0) {\n        options = {};\n      }\n      if (!this.isValid) return null;\n      var base = options.base || DateTime.fromObject({}, {\n          zone: this.zone\n        }),\n        padding = options.padding ? this < base ? -options.padding : options.padding : 0;\n      var units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n      var unit = options.unit;\n      if (Array.isArray(options.unit)) {\n        units = options.unit;\n        unit = undefined;\n      }\n      return diffRelative(base, this.plus(padding), _extends({}, options, {\n        numeric: \"always\",\n        units: units,\n        unit: unit\n      }));\n    }\n\n    /**\n     * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n     * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n     * @param {Object} options - options that affect the output\n     * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n     * @param {string} options.locale - override the locale of this DateTime\n     * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n     * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n     * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n     * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n     * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n     * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n     */;\n    _proto.toRelativeCalendar = function toRelativeCalendar(options) {\n      if (options === void 0) {\n        options = {};\n      }\n      if (!this.isValid) return null;\n      return diffRelative(options.base || DateTime.fromObject({}, {\n        zone: this.zone\n      }), this, _extends({}, options, {\n        numeric: \"auto\",\n        units: [\"years\", \"months\", \"days\"],\n        calendary: true\n      }));\n    }\n\n    /**\n     * Return the min of several date times\n     * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n     * @return {DateTime} the min DateTime, or undefined if called with no argument\n     */;\n    DateTime.min = function min() {\n      for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\n        dateTimes[_key] = arguments[_key];\n      }\n      if (!dateTimes.every(DateTime.isDateTime)) {\n        throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n      }\n      return bestBy(dateTimes, function (i) {\n        return i.valueOf();\n      }, Math.min);\n    }\n\n    /**\n     * Return the max of several date times\n     * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n     * @return {DateTime} the max DateTime, or undefined if called with no argument\n     */;\n    DateTime.max = function max() {\n      for (var _len2 = arguments.length, dateTimes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        dateTimes[_key2] = arguments[_key2];\n      }\n      if (!dateTimes.every(DateTime.isDateTime)) {\n        throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n      }\n      return bestBy(dateTimes, function (i) {\n        return i.valueOf();\n      }, Math.max);\n    }\n\n    // MISC\n\n    /**\n     * Explain how a string would be parsed by fromFormat()\n     * @param {string} text - the string to parse\n     * @param {string} fmt - the format the string is expected to be in (see description)\n     * @param {Object} options - options taken by fromFormat()\n     * @return {Object}\n     */;\n    DateTime.fromFormatExplain = function fromFormatExplain(text, fmt, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      var _options = options,\n        _options$locale = _options.locale,\n        locale = _options$locale === void 0 ? null : _options$locale,\n        _options$numberingSys = _options.numberingSystem,\n        numberingSystem = _options$numberingSys === void 0 ? null : _options$numberingSys,\n        localeToUse = Locale.fromOpts({\n          locale: locale,\n          numberingSystem: numberingSystem,\n          defaultToEN: true\n        });\n      return explainFromTokens(localeToUse, text, fmt);\n    }\n\n    /**\n     * @deprecated use fromFormatExplain instead\n     */;\n    DateTime.fromStringExplain = function fromStringExplain(text, fmt, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      return DateTime.fromFormatExplain(text, fmt, options);\n    }\n\n    /**\n     * Build a parser for `fmt` using the given locale. This parser can be passed\n     * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\n     * can be used to optimize cases where many dates need to be parsed in a\n     * specific format.\n     *\n     * @param {String} fmt - the format the string is expected to be in (see\n     * description)\n     * @param {Object} options - options used to set locale and numberingSystem\n     * for parser\n     * @returns {TokenParser} - opaque object to be used\n     */;\n    DateTime.buildFormatParser = function buildFormatParser(fmt, options) {\n      if (options === void 0) {\n        options = {};\n      }\n      var _options2 = options,\n        _options2$locale = _options2.locale,\n        locale = _options2$locale === void 0 ? null : _options2$locale,\n        _options2$numberingSy = _options2.numberingSystem,\n        numberingSystem = _options2$numberingSy === void 0 ? null : _options2$numberingSy,\n        localeToUse = Locale.fromOpts({\n          locale: locale,\n          numberingSystem: numberingSystem,\n          defaultToEN: true\n        });\n      return new TokenParser(localeToUse, fmt);\n    }\n\n    /**\n     * Create a DateTime from an input string and format parser.\n     *\n     * The format parser must have been created with the same locale as this call.\n     *\n     * @param {String} text - the string to parse\n     * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\n     * @param {Object} opts - options taken by fromFormat()\n     * @returns {DateTime}\n     */;\n    DateTime.fromFormatParser = function fromFormatParser(text, formatParser, opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      if (isUndefined(text) || isUndefined(formatParser)) {\n        throw new InvalidArgumentError(\"fromFormatParser requires an input string and a format parser\");\n      }\n      var _opts2 = opts,\n        _opts2$locale = _opts2.locale,\n        locale = _opts2$locale === void 0 ? null : _opts2$locale,\n        _opts2$numberingSyste = _opts2.numberingSystem,\n        numberingSystem = _opts2$numberingSyste === void 0 ? null : _opts2$numberingSyste,\n        localeToUse = Locale.fromOpts({\n          locale: locale,\n          numberingSystem: numberingSystem,\n          defaultToEN: true\n        });\n      if (!localeToUse.equals(formatParser.locale)) {\n        throw new InvalidArgumentError(\"fromFormatParser called with a locale of \" + localeToUse + \", \" + (\"but the format parser was created for \" + formatParser.locale));\n      }\n      var _formatParser$explain = formatParser.explainFromTokens(text),\n        result = _formatParser$explain.result,\n        zone = _formatParser$explain.zone,\n        specificOffset = _formatParser$explain.specificOffset,\n        invalidReason = _formatParser$explain.invalidReason;\n      if (invalidReason) {\n        return DateTime.invalid(invalidReason);\n      } else {\n        return parseDataToDateTime(result, zone, opts, \"format \" + formatParser.format, text, specificOffset);\n      }\n    }\n\n    // FORMAT PRESETS\n\n    /**\n     * {@link DateTime#toLocaleString} format like 10/14/1983\n     * @type {Object}\n     */;\n    _createClass(DateTime, [{\n      key: \"isValid\",\n      get: function get() {\n        return this.invalid === null;\n      }\n\n      /**\n       * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n       * @type {string}\n       */\n    }, {\n      key: \"invalidReason\",\n      get: function get() {\n        return this.invalid ? this.invalid.reason : null;\n      }\n\n      /**\n       * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n       * @type {string}\n       */\n    }, {\n      key: \"invalidExplanation\",\n      get: function get() {\n        return this.invalid ? this.invalid.explanation : null;\n      }\n\n      /**\n       * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n       *\n       * @type {string}\n       */\n    }, {\n      key: \"locale\",\n      get: function get() {\n        return this.isValid ? this.loc.locale : null;\n      }\n\n      /**\n       * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n       *\n       * @type {string}\n       */\n    }, {\n      key: \"numberingSystem\",\n      get: function get() {\n        return this.isValid ? this.loc.numberingSystem : null;\n      }\n\n      /**\n       * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n       *\n       * @type {string}\n       */\n    }, {\n      key: \"outputCalendar\",\n      get: function get() {\n        return this.isValid ? this.loc.outputCalendar : null;\n      }\n\n      /**\n       * Get the time zone associated with this DateTime.\n       * @type {Zone}\n       */\n    }, {\n      key: \"zone\",\n      get: function get() {\n        return this._zone;\n      }\n\n      /**\n       * Get the name of the time zone.\n       * @type {string}\n       */\n    }, {\n      key: \"zoneName\",\n      get: function get() {\n        return this.isValid ? this.zone.name : null;\n      }\n\n      /**\n       * Get the year\n       * @example DateTime.local(2017, 5, 25).year //=> 2017\n       * @type {number}\n       */\n    }, {\n      key: \"year\",\n      get: function get() {\n        return this.isValid ? this.c.year : NaN;\n      }\n\n      /**\n       * Get the quarter\n       * @example DateTime.local(2017, 5, 25).quarter //=> 2\n       * @type {number}\n       */\n    }, {\n      key: \"quarter\",\n      get: function get() {\n        return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n      }\n\n      /**\n       * Get the month (1-12).\n       * @example DateTime.local(2017, 5, 25).month //=> 5\n       * @type {number}\n       */\n    }, {\n      key: \"month\",\n      get: function get() {\n        return this.isValid ? this.c.month : NaN;\n      }\n\n      /**\n       * Get the day of the month (1-30ish).\n       * @example DateTime.local(2017, 5, 25).day //=> 25\n       * @type {number}\n       */\n    }, {\n      key: \"day\",\n      get: function get() {\n        return this.isValid ? this.c.day : NaN;\n      }\n\n      /**\n       * Get the hour of the day (0-23).\n       * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n       * @type {number}\n       */\n    }, {\n      key: \"hour\",\n      get: function get() {\n        return this.isValid ? this.c.hour : NaN;\n      }\n\n      /**\n       * Get the minute of the hour (0-59).\n       * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n       * @type {number}\n       */\n    }, {\n      key: \"minute\",\n      get: function get() {\n        return this.isValid ? this.c.minute : NaN;\n      }\n\n      /**\n       * Get the second of the minute (0-59).\n       * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n       * @type {number}\n       */\n    }, {\n      key: \"second\",\n      get: function get() {\n        return this.isValid ? this.c.second : NaN;\n      }\n\n      /**\n       * Get the millisecond of the second (0-999).\n       * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n       * @type {number}\n       */\n    }, {\n      key: \"millisecond\",\n      get: function get() {\n        return this.isValid ? this.c.millisecond : NaN;\n      }\n\n      /**\n       * Get the week year\n       * @see https://en.wikipedia.org/wiki/ISO_week_date\n       * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n       * @type {number}\n       */\n    }, {\n      key: \"weekYear\",\n      get: function get() {\n        return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n      }\n\n      /**\n       * Get the week number of the week year (1-52ish).\n       * @see https://en.wikipedia.org/wiki/ISO_week_date\n       * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n       * @type {number}\n       */\n    }, {\n      key: \"weekNumber\",\n      get: function get() {\n        return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n      }\n\n      /**\n       * Get the day of the week.\n       * 1 is Monday and 7 is Sunday\n       * @see https://en.wikipedia.org/wiki/ISO_week_date\n       * @example DateTime.local(2014, 11, 31).weekday //=> 4\n       * @type {number}\n       */\n    }, {\n      key: \"weekday\",\n      get: function get() {\n        return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n      }\n\n      /**\n       * Returns true if this date is on a weekend according to the locale, false otherwise\n       * @returns {boolean}\n       */\n    }, {\n      key: \"isWeekend\",\n      get: function get() {\n        return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n      }\n\n      /**\n       * Get the day of the week according to the locale.\n       * 1 is the first day of the week and 7 is the last day of the week.\n       * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n       * @returns {number}\n       */\n    }, {\n      key: \"localWeekday\",\n      get: function get() {\n        return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n      }\n\n      /**\n       * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n       * because the week can start on different days of the week (see localWeekday) and because a different number of days\n       * is required for a week to count as the first week of a year.\n       * @returns {number}\n       */\n    }, {\n      key: \"localWeekNumber\",\n      get: function get() {\n        return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n      }\n\n      /**\n       * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n       * differently, see localWeekNumber.\n       * @returns {number}\n       */\n    }, {\n      key: \"localWeekYear\",\n      get: function get() {\n        return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n      }\n\n      /**\n       * Get the ordinal (meaning the day of the year)\n       * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n       * @type {number|DateTime}\n       */\n    }, {\n      key: \"ordinal\",\n      get: function get() {\n        return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n      }\n\n      /**\n       * Get the human readable short month name, such as 'Oct'.\n       * Defaults to the system's locale if no locale has been specified\n       * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n       * @type {string}\n       */\n    }, {\n      key: \"monthShort\",\n      get: function get() {\n        return this.isValid ? Info.months(\"short\", {\n          locObj: this.loc\n        })[this.month - 1] : null;\n      }\n\n      /**\n       * Get the human readable long month name, such as 'October'.\n       * Defaults to the system's locale if no locale has been specified\n       * @example DateTime.local(2017, 10, 30).monthLong //=> October\n       * @type {string}\n       */\n    }, {\n      key: \"monthLong\",\n      get: function get() {\n        return this.isValid ? Info.months(\"long\", {\n          locObj: this.loc\n        })[this.month - 1] : null;\n      }\n\n      /**\n       * Get the human readable short weekday, such as 'Mon'.\n       * Defaults to the system's locale if no locale has been specified\n       * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n       * @type {string}\n       */\n    }, {\n      key: \"weekdayShort\",\n      get: function get() {\n        return this.isValid ? Info.weekdays(\"short\", {\n          locObj: this.loc\n        })[this.weekday - 1] : null;\n      }\n\n      /**\n       * Get the human readable long weekday, such as 'Monday'.\n       * Defaults to the system's locale if no locale has been specified\n       * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n       * @type {string}\n       */\n    }, {\n      key: \"weekdayLong\",\n      get: function get() {\n        return this.isValid ? Info.weekdays(\"long\", {\n          locObj: this.loc\n        })[this.weekday - 1] : null;\n      }\n\n      /**\n       * Get the UTC offset of this DateTime in minutes\n       * @example DateTime.now().offset //=> -240\n       * @example DateTime.utc().offset //=> 0\n       * @type {number}\n       */\n    }, {\n      key: \"offset\",\n      get: function get() {\n        return this.isValid ? +this.o : NaN;\n      }\n\n      /**\n       * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n       * Defaults to the system's locale if no locale has been specified\n       * @type {string}\n       */\n    }, {\n      key: \"offsetNameShort\",\n      get: function get() {\n        if (this.isValid) {\n          return this.zone.offsetName(this.ts, {\n            format: \"short\",\n            locale: this.locale\n          });\n        } else {\n          return null;\n        }\n      }\n\n      /**\n       * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n       * Defaults to the system's locale if no locale has been specified\n       * @type {string}\n       */\n    }, {\n      key: \"offsetNameLong\",\n      get: function get() {\n        if (this.isValid) {\n          return this.zone.offsetName(this.ts, {\n            format: \"long\",\n            locale: this.locale\n          });\n        } else {\n          return null;\n        }\n      }\n\n      /**\n       * Get whether this zone's offset ever changes, as in a DST.\n       * @type {boolean}\n       */\n    }, {\n      key: \"isOffsetFixed\",\n      get: function get() {\n        return this.isValid ? this.zone.isUniversal : null;\n      }\n\n      /**\n       * Get whether the DateTime is in a DST.\n       * @type {boolean}\n       */\n    }, {\n      key: \"isInDST\",\n      get: function get() {\n        if (this.isOffsetFixed) {\n          return false;\n        } else {\n          return this.offset > this.set({\n            month: 1,\n            day: 1\n          }).offset || this.offset > this.set({\n            month: 5\n          }).offset;\n        }\n      }\n    }, {\n      key: \"isInLeapYear\",\n      get: function get() {\n        return isLeapYear(this.year);\n      }\n\n      /**\n       * Returns the number of days in this DateTime's month\n       * @example DateTime.local(2016, 2).daysInMonth //=> 29\n       * @example DateTime.local(2016, 3).daysInMonth //=> 31\n       * @type {number}\n       */\n    }, {\n      key: \"daysInMonth\",\n      get: function get() {\n        return daysInMonth(this.year, this.month);\n      }\n\n      /**\n       * Returns the number of days in this DateTime's year\n       * @example DateTime.local(2016).daysInYear //=> 366\n       * @example DateTime.local(2013).daysInYear //=> 365\n       * @type {number}\n       */\n    }, {\n      key: \"daysInYear\",\n      get: function get() {\n        return this.isValid ? daysInYear(this.year) : NaN;\n      }\n\n      /**\n       * Returns the number of weeks in this DateTime's year\n       * @see https://en.wikipedia.org/wiki/ISO_week_date\n       * @example DateTime.local(2004).weeksInWeekYear //=> 53\n       * @example DateTime.local(2013).weeksInWeekYear //=> 52\n       * @type {number}\n       */\n    }, {\n      key: \"weeksInWeekYear\",\n      get: function get() {\n        return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n      }\n\n      /**\n       * Returns the number of weeks in this DateTime's local week year\n       * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n       * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n       * @type {number}\n       */\n    }, {\n      key: \"weeksInLocalWeekYear\",\n      get: function get() {\n        return this.isValid ? weeksInWeekYear(this.localWeekYear, this.loc.getMinDaysInFirstWeek(), this.loc.getStartOfWeek()) : NaN;\n      }\n    }], [{\n      key: \"DATE_SHORT\",\n      get: function get() {\n        return DATE_SHORT;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n       * @type {Object}\n       */\n    }, {\n      key: \"DATE_MED\",\n      get: function get() {\n        return DATE_MED;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n       * @type {Object}\n       */\n    }, {\n      key: \"DATE_MED_WITH_WEEKDAY\",\n      get: function get() {\n        return DATE_MED_WITH_WEEKDAY;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n       * @type {Object}\n       */\n    }, {\n      key: \"DATE_FULL\",\n      get: function get() {\n        return DATE_FULL;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n       * @type {Object}\n       */\n    }, {\n      key: \"DATE_HUGE\",\n      get: function get() {\n        return DATE_HUGE;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_SIMPLE\",\n      get: function get() {\n        return TIME_SIMPLE;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_WITH_SECONDS\",\n      get: function get() {\n        return TIME_WITH_SECONDS;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_WITH_SHORT_OFFSET\",\n      get: function get() {\n        return TIME_WITH_SHORT_OFFSET;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_WITH_LONG_OFFSET\",\n      get: function get() {\n        return TIME_WITH_LONG_OFFSET;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_24_SIMPLE\",\n      get: function get() {\n        return TIME_24_SIMPLE;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_24_WITH_SECONDS\",\n      get: function get() {\n        return TIME_24_WITH_SECONDS;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_24_WITH_SHORT_OFFSET\",\n      get: function get() {\n        return TIME_24_WITH_SHORT_OFFSET;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n       * @type {Object}\n       */\n    }, {\n      key: \"TIME_24_WITH_LONG_OFFSET\",\n      get: function get() {\n        return TIME_24_WITH_LONG_OFFSET;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_SHORT\",\n      get: function get() {\n        return DATETIME_SHORT;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_SHORT_WITH_SECONDS\",\n      get: function get() {\n        return DATETIME_SHORT_WITH_SECONDS;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_MED\",\n      get: function get() {\n        return DATETIME_MED;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_MED_WITH_SECONDS\",\n      get: function get() {\n        return DATETIME_MED_WITH_SECONDS;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_MED_WITH_WEEKDAY\",\n      get: function get() {\n        return DATETIME_MED_WITH_WEEKDAY;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_FULL\",\n      get: function get() {\n        return DATETIME_FULL;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_FULL_WITH_SECONDS\",\n      get: function get() {\n        return DATETIME_FULL_WITH_SECONDS;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_HUGE\",\n      get: function get() {\n        return DATETIME_HUGE;\n      }\n\n      /**\n       * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n       * @type {Object}\n       */\n    }, {\n      key: \"DATETIME_HUGE_WITH_SECONDS\",\n      get: function get() {\n        return DATETIME_HUGE_WITH_SECONDS;\n      }\n    }]);\n    return DateTime;\n  }(Symbol.for(\"nodejs.util.inspect.custom\"));\n  function friendlyDateTime(dateTimeish) {\n    if (DateTime.isDateTime(dateTimeish)) {\n      return dateTimeish;\n    } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n      return DateTime.fromJSDate(dateTimeish);\n    } else if (dateTimeish && typeof dateTimeish === \"object\") {\n      return DateTime.fromObject(dateTimeish);\n    } else {\n      throw new InvalidArgumentError(\"Unknown datetime argument: \" + dateTimeish + \", of type \" + typeof dateTimeish);\n    }\n  }\n\n  var VERSION = \"3.6.1\";\n\n  exports.DateTime = DateTime;\n  exports.Duration = Duration;\n  exports.FixedOffsetZone = FixedOffsetZone;\n  exports.IANAZone = IANAZone;\n  exports.Info = Info;\n  exports.Interval = Interval;\n  exports.InvalidZone = InvalidZone;\n  exports.Settings = Settings;\n  exports.SystemZone = SystemZone;\n  exports.VERSION = VERSION;\n  exports.Zone = Zone;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({});\n\n\n\"use strict\";function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread();}function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\");}function _iterableToArray(iter){if(Symbol.iterator in Object(iter)||Object.prototype.toString.call(iter)===\"[object Arguments]\")return Array.from(iter);}function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2;}}function _get(target,property,receiver){if(typeof Reflect!==\"undefined\"&&Reflect.get){_get=Reflect.get;}else{_get=function _get(target,property,receiver){var base=_superPropBase(target,property);if(!base)return;var desc=Object.getOwnPropertyDescriptor(base,property);if(desc.get){return desc.get.call(receiver);}return desc.value;};}return _get(target,property,receiver||target);}function _superPropBase(object,property){while(!Object.prototype.hasOwnProperty.call(object,property)){object=_getPrototypeOf(object);if(object===null)break;}return object;}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,\"next\",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,\"throw\",err);}_next(undefined);});};}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){_defineProperty(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}function _inherits(subClass,superClass){if(typeof superClass!==\"function\"&&superClass!==null){throw new TypeError(\"Super expression must either be null or a function\");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _createSuper(Derived){function isNativeReflectConstruct(){if(typeof Reflect===\"undefined\"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy===\"function\")return true;try{Date.prototype.toString.call(Reflect.construct(Date,[],function(){}));return true;}catch(e){return false;}}return function(){var Super=_getPrototypeOf(Derived),result;if(isNativeReflectConstruct()){var NewTarget=_getPrototypeOf(this).constructor;result=Reflect.construct(Super,arguments,NewTarget);}else{result=Super.apply(this,arguments);}return _possibleConstructorReturn(this,result);};}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)===\"object\"||typeof call===\"function\")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");}function _iterableToArrayLimit(arr,i){if(!(Symbol.iterator in Object(arr)||Object.prototype.toString.call(arr)===\"[object Arguments]\")){return;}var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i[\"return\"]!=null)_i[\"return\"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if(\"value\"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj;};}return _typeof(obj);}!/**\n * Highcharts Dashboards v2.3.0 (2024-08-26)\n *\n * (c) 2009-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n */function(e,t){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(t[\"default\"]=t,module.exports=e&&e.document?t(e):t):\"function\"==typeof define&&define.amd?define(\"datagrid/datagrid\",function(){return t(e);}):(e.DataGrid&&e.DataGrid.error(16,!0),e.DataGrid=t(e));}(\"undefined\"!=typeof window?window:void 0,function(e){\"use strict\";var t={};function i(t,i,s,n){!t.hasOwnProperty(i)&&(t[i]=n.apply(null,s),e&&\"function\"==typeof CustomEvent&&e.dispatchEvent(new CustomEvent(\"DataGridModuleLoaded\",{detail:{path:i,module:t[i]}})));}return i(t,\"Core/Globals.js\",[],function(){var t,i;return(i=t||(t={})).SVG_NS=\"http://www.w3.org/2000/svg\",i.product=\"Highcharts\",i.version=\"2.3.0\",i.win=void 0!==e?e:{},i.doc=i.win.document,i.svg=i.doc&&i.doc.createElementNS&&!!i.doc.createElementNS(i.SVG_NS,\"svg\").createSVGRect,i.userAgent=i.win.navigator&&i.win.navigator.userAgent||\"\",i.isChrome=i.win.chrome,i.isFirefox=-1!==i.userAgent.indexOf(\"Firefox\"),i.isMS=/(edge|msie|trident)/i.test(i.userAgent)&&!i.win.opera,i.isSafari=!i.isChrome&&-1!==i.userAgent.indexOf(\"Safari\"),i.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(i.userAgent),i.isWebKit=-1!==i.userAgent.indexOf(\"AppleWebKit\"),i.deg2rad=2*Math.PI/360,i.hasBidiBug=i.isFirefox&&4>parseInt(i.userAgent.split(\"Firefox/\")[1],10),i.marginNames=[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"],i.noop=function(){},i.supportsPassiveEvents=function(){var e=!1;if(!i.isMS){var _t=Object.defineProperty({},\"passive\",{get:function get(){e=!0;}});i.win.addEventListener&&i.win.removeEventListener&&(i.win.addEventListener(\"testPassive\",i.noop,_t),i.win.removeEventListener(\"testPassive\",i.noop,_t));}return e;}(),i.charts=[],i.composed=[],i.dateFormats={},i.seriesTypes={},i.symbolSizes={},i.chartCount=0,t;}),i(t,\"Core/Utilities.js\",[t[\"Core/Globals.js\"]],function(e){var t;var i=e.charts,s=e.doc,n=e.win;function o(t,i,s,r){var l=i?\"Highcharts error\":\"Highcharts warning\";32===t&&(t=\"\".concat(l,\": Deprecated member\"));var a=c(t),h=a?\"\".concat(l,\" #\").concat(t,\": www.highcharts.com/errors/\").concat(t,\"/\"):t.toString();if(void 0!==r){var _e=\"\";a&&(h+=\"?\"),T(r,function(t,i){_e+=\"\\n - \".concat(i,\": \").concat(t),a&&(h+=encodeURI(i)+\"=\"+encodeURI(t));}),h+=_e;}R(e,\"displayError\",{chart:s,code:t,message:h,params:r},function(){if(i)throw Error(h);n.console&&-1===o.messages.indexOf(h)&&console.warn(h);}),o.messages.push(h);}function r(e,t){return parseInt(e,t||10);}function l(e){return\"string\"==typeof e;}function a(e){var t=Object.prototype.toString.call(e);return\"[object Array]\"===t||\"[object Array Iterator]\"===t;}function h(e,t){return!!e&&\"object\"==_typeof(e)&&(!t||!a(e));}function d(e){return h(e)&&\"number\"==typeof e.nodeType;}function u(e){var t=e&&e.constructor;return!!(h(e,!0)&&!d(e)&&t&&t.name&&\"Object\"!==t.name);}function c(e){return\"number\"==typeof e&&!isNaN(e)&&e<1/0&&e>-1/0;}function f(e){return null!=e;}function m(e,t,i){var s;var n=l(t)&&!f(i),o=function o(t,i){f(t)?e.setAttribute(i,t):n?(s=e.getAttribute(i))||\"class\"!==i||(s=e.getAttribute(i+\"Name\")):e.removeAttribute(i);};return l(t)?o(i,t):T(t,o),s;}function p(e){return a(e)?e:[e];}function g(e,t){var i;for(i in e||(e={}),t)e[i]=t[i];return e;}function C(){var e=arguments,t=e.length;for(var _i=0;_i<t;_i++){var _t2=e[_i];if(null!=_t2)return _t2;}}function y(e,t){g(e.style,t);}function b(e){return Math.pow(10,Math.floor(Math.log(e)/Math.LN10));}function w(e,t){return e>1e14?e:parseFloat(e.toPrecision(t||14));}(o||(o={})).messages=[],Math.easeInOutSine=function(e){return-.5*(Math.cos(Math.PI*e)-1);};var v=Array.prototype.find?function(e,t){return e.find(t);}:function(e,t){var i;var s=e.length;for(i=0;i<s;i++)if(t(e[i],i))return e[i];};function T(e,t,i){for(var _s in e)Object.hasOwnProperty.call(e,_s)&&t.call(i||e[_s],e[_s],_s,e);}function D(e,t,i){function s(t,i){var s=e.removeEventListener;s&&s.call(e,t,i,!1);}function n(i){var n,o;e.nodeName&&(t?(n={})[t]=!0:n=i,T(n,function(e,t){if(i[t])for(o=i[t].length;o--;)s(t,i[t][o].fn);}));}var o=\"function\"==typeof e&&e.prototype||e;if(Object.hasOwnProperty.call(o,\"hcEvents\")){var _e2=o.hcEvents;if(t){var _o=_e2[t]||[];i?(_e2[t]=_o.filter(function(e){return i!==e.fn;}),s(t,i)):(n(_e2),_e2[t]=[]);}else n(_e2),delete o.hcEvents;}}function R(t,i,n,o){if(n=n||{},s.createEvent&&(t.dispatchEvent||t.fireEvent&&t!==e)){var _e3=s.createEvent(\"Events\");_e3.initEvent(i,!0,!0),n=g(_e3,n),t.dispatchEvent?t.dispatchEvent(n):t.fireEvent(i,n);}else if(t.hcEvents){n.target||g(n,{preventDefault:function preventDefault(){n.defaultPrevented=!0;},target:t,type:i});var _e4=[],_s2=t,_o2=!1;for(;_s2.hcEvents;)Object.hasOwnProperty.call(_s2,\"hcEvents\")&&_s2.hcEvents[i]&&(_e4.length&&(_o2=!0),_e4.unshift.apply(_e4,_s2.hcEvents[i])),_s2=Object.getPrototypeOf(_s2);_o2&&_e4.sort(function(e,t){return e.order-t.order;}),_e4.forEach(function(e){!1===e.fn.call(t,n)&&n.preventDefault();});}o&&!n.defaultPrevented&&o.call(t,n);}T({map:\"map\",each:\"forEach\",grep:\"filter\",reduce:\"reduce\",some:\"some\"},function(t,i){e[i]=function(e){return o(32,!1,void 0,_defineProperty({},\"Highcharts.\".concat(i),\"use Array.\".concat(t))),Array.prototype[t].apply(e,[].slice.call(arguments,1));};});var x=function(){var e=Math.random().toString(36).substring(2,9)+\"-\",i=0;return function(){return\"highcharts-\"+(t?\"\":e)+i++;};}();return n.jQuery&&(n.jQuery.fn.highcharts=function(){var t=[].slice.call(arguments);if(this[0])return t[0]?(new e[l(t[0])?t.shift():\"Chart\"](this[0],t[0],t[1]),this):i[m(this[0],\"data-highcharts-chart\")];}),{addEvent:function addEvent(t,i,s){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var o=\"function\"==typeof t&&t.prototype||t;Object.hasOwnProperty.call(o,\"hcEvents\")||(o.hcEvents={});var r=o.hcEvents;e.Point&&t instanceof e.Point&&t.series&&t.series.chart&&(t.series.chart.runTrackerClick=!0);var l=t.addEventListener;l&&l.call(t,i,s,!!e.supportsPassiveEvents&&{passive:void 0===n.passive?-1!==i.indexOf(\"touch\"):n.passive,capture:!1}),r[i]||(r[i]=[]);var a={fn:s,order:\"number\"==typeof n.order?n.order:1/0};return r[i].push(a),r[i].sort(function(e,t){return e.order-t.order;}),function(){D(t,i,s);};},arrayMax:function arrayMax(e){var t=e.length,i=e[0];for(;t--;)e[t]>i&&(i=e[t]);return i;},arrayMin:function arrayMin(e){var t=e.length,i=e[0];for(;t--;)e[t]<i&&(i=e[t]);return i;},attr:m,clamp:function clamp(e,t,i){return e>t?e<i?e:i:t;},clearTimeout:function(_clearTimeout){function clearTimeout(_x){return _clearTimeout.apply(this,arguments);}clearTimeout.toString=function(){return _clearTimeout.toString();};return clearTimeout;}(function(e){f(e)&&clearTimeout(e);}),correctFloat:w,createElement:function createElement(e,t,i,n,o){var r=s.createElement(e);return t&&g(r,t),o&&y(r,{padding:\"0\",border:\"none\",margin:\"0\"}),i&&y(r,i),n&&n.appendChild(r),r;},crisp:function crisp(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var i=arguments.length>2?arguments[2]:undefined;var s=t%2/2,n=i?-1:1;return(Math.round(e*n-s)+s)*n;},css:y,defined:f,destroyObjectProperties:function destroyObjectProperties(e,t,i){T(e,function(s,n){s!==t&&s!==null&&s!==void 0&&s.destroy&&s.destroy(),((s===null||s===void 0?void 0:s.destroy)||!i)&&delete e[n];});},diffObjects:function diffObjects(e,t,i,s){var n={};return function e(t,n,o,r){var l=i?n:t;T(t,function(i,d){if(!r&&s&&s.indexOf(d)>-1&&n[d]){i=p(i),o[d]=[];for(var _t3=0;_t3<Math.max(i.length,n[d].length);_t3++)n[d][_t3]&&(void 0===i[_t3]?o[d][_t3]=n[d][_t3]:(o[d][_t3]={},e(i[_t3],n[d][_t3],o[d][_t3],r+1)));}else h(i,!0)&&!i.nodeType?(o[d]=a(i)?[]:{},e(i,n[d]||{},o[d],r+1),0!==Object.keys(o[d]).length||\"colorAxis\"===d&&0===r||delete o[d]):(t[d]!==n[d]||d in t&&!(d in n))&&\"__proto__\"!==d&&\"constructor\"!==d&&(o[d]=l[d]);});}(e,t,n,0),n;},discardElement:function discardElement(e){e&&e.parentElement&&e.parentElement.removeChild(e);},erase:function erase(e,t){var i=e.length;for(;i--;)if(e[i]===t){e.splice(i,1);break;}},error:o,extend:g,extendClass:function extendClass(e,t){var i=function i(){};return i.prototype=new e(),g(i.prototype,t),i;},find:v,fireEvent:R,getClosestDistance:function getClosestDistance(e,t){var i,s,n,o;var r=!t;return e.forEach(function(e){if(e.length>1)for(o=s=e.length-1;o>0;o--){var _t4;(n=e[o]-e[o-1])<0&&!r?((_t4=t)!==null&&_t4!==void 0&&_t4(),t=void 0):n&&(void 0===i||n<i)&&(i=n);}}),i;},getMagnitude:b,getNestedProperty:function getNestedProperty(e,t){var i=e.split(\".\");for(;i.length&&f(t);){var _e5=i.shift();if(void 0===_e5||\"__proto__\"===_e5)return;if(\"this\"===_e5){var _e7;var _e6=void 0;return h(t)&&(_e6=t[\"@this\"]),(_e7=_e6)!==null&&_e7!==void 0?_e7:t;}var _s3=t[_e5];if(!f(_s3)||\"function\"==typeof _s3||\"number\"==typeof _s3.nodeType||_s3===n)return;t=_s3;}return t;},getStyle:function e(t,i,s){var o;if(\"width\"===i){var _i2=Math.min(t.offsetWidth,t.scrollWidth),_s4=t.getBoundingClientRect&&t.getBoundingClientRect().width;return _s4<_i2&&_s4>=_i2-1&&(_i2=Math.floor(_s4)),Math.max(0,_i2-(e(t,\"padding-left\",!0)||0)-(e(t,\"padding-right\",!0)||0));}if(\"height\"===i)return Math.max(0,Math.min(t.offsetHeight,t.scrollHeight)-(e(t,\"padding-top\",!0)||0)-(e(t,\"padding-bottom\",!0)||0));var l=n.getComputedStyle(t,void 0);return l&&(o=l.getPropertyValue(i),C(s,\"opacity\"!==i)&&(o=r(o))),o;},inArray:function inArray(e,t,i){return o(32,!1,void 0,{\"Highcharts.inArray\":\"use Array.indexOf\"}),t.indexOf(e,i);},insertItem:function insertItem(e,t){var i;var s=e.options.index,n=t.length;for(i=e.options.isInternal?n:0;i<n+1;i++)if(!t[i]||c(s)&&s<C(t[i].options.index,t[i]._i)||t[i].options.isInternal){t.splice(i,0,e);break;}return i;},isArray:a,isClass:u,isDOMElement:d,isFunction:function isFunction(e){return\"function\"==typeof e;},isNumber:c,isObject:h,isString:l,keys:function keys(e){return o(32,!1,void 0,{\"Highcharts.keys\":\"use Object.keys\"}),Object.keys(e);},merge:function merge(){var e,t=arguments,i={},s=function s(e,t){return\"object\"!=_typeof(e)&&(e={}),T(t,function(i,n){\"__proto__\"!==n&&\"constructor\"!==n&&(!h(i,!0)||u(i)||d(i)?e[n]=t[n]:e[n]=s(e[n]||{},i));}),e;};!0===t[0]&&(i=t[1],t=Array.prototype.slice.call(t,2));var n=t.length;for(e=0;e<n;e++)i=s(i,t[e]);return i;},normalizeTickInterval:function normalizeTickInterval(e,t,i,s,n){var o,r=e;i=C(i,b(e));var l=e/i;for(!t&&(t=n?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===s&&(1===i?t=t.filter(function(e){return e%1==0;}):i<=.1&&(t=[1/i]))),o=0;o<t.length&&(r=t[o],(!n||!(r*i>=e))&&(n||!(l<=(t[o]+(t[o+1]||t[o]))/2)));o++);return w(r*i,-Math.round(Math.log(.001)/Math.LN10));},objectEach:T,offset:function offset(e){var t=s.documentElement,i=e.parentElement||e.parentNode?e.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:i.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0),width:i.width,height:i.height};},pad:function pad(e,t,i){return Array((t||2)+1-String(e).replace(\"-\",\"\").length).join(i||\"0\")+e;},pick:C,pInt:r,pushUnique:function pushUnique(e,t){return 0>e.indexOf(t)&&!!e.push(t);},relativeLength:function relativeLength(e,t,i){return /%$/.test(e)?t*parseFloat(e)/100+(i||0):parseFloat(e);},removeEvent:D,replaceNested:function replaceNested(e){var i,s;for(var _len=arguments.length,t=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){t[_key-1]=arguments[_key];}do{var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=(i=e,t)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){s=_step.value;e=e.replace(s[0],s[1]);}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator[\"return\"]!=null){_iterator[\"return\"]();}}finally{if(_didIteratorError){throw _iteratorError;}}}}while(e!==i);return e;},splat:p,stableSort:function stableSort(e,t){var i,s;var n=e.length;for(s=0;s<n;s++)e[s].safeI=s;for(e.sort(function(e,s){return 0===(i=t(e,s))?e.safeI-s.safeI:i;}),s=0;s<n;s++)delete e[s].safeI;},syncTimeout:function syncTimeout(e,t,i){return t>0?setTimeout(e,t,i):(e.call(0,i),-1);},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:x,useSerialIds:function useSerialIds(e){return t=C(e,t);},wrap:function wrap(e,t,i){var s=e[t];e[t]=function(){var e=arguments,t=this;return i.apply(this,[function(){return s.apply(t,arguments.length?arguments:e);}].concat([].slice.call(arguments)));};}};}),i(t,\"Core/Renderer/HTML/AST.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=e.SVG_NS,s=e.win,n=t.attr,o=t.createElement,r=t.css,l=t.error,a=t.isFunction,h=t.isString,d=t.objectEach,u=t.splat,c=s.trustedTypes,f=c&&a(c.createPolicy)&&c.createPolicy(\"highcharts\",{createHTML:function createHTML(e){return e;}}),m=f?f.createHTML(\"\"):\"\",p=function(){try{return!!new DOMParser().parseFromString(m,\"text/html\");}catch(e){return!1;}}();var g=/*#__PURE__*/function(){function g(e){_classCallCheck(this,g);this.nodes=\"string\"==typeof e?this.parseMarkup(e):e;}_createClass(g,[{key:\"addToDOM\",value:function addToDOM(t){return function t(s,o){var a;return u(s).forEach(function(s){var h;var u=s.tagName,c=s.textContent?e.doc.createTextNode(s.textContent):void 0,f=g.bypassHTMLFiltering;if(u){if(\"#text\"===u)h=c;else if(-1!==g.allowedTags.indexOf(u)||f){var _l=\"svg\"===u?i:o.namespaceURI||i,_a=e.doc.createElementNS(_l,u),_m=s.attributes||{};d(s,function(e,t){\"tagName\"!==t&&\"attributes\"!==t&&\"children\"!==t&&\"style\"!==t&&\"textContent\"!==t&&(_m[t]=e);}),n(_a,f?_m:g.filterUserAttributes(_m)),s.style&&r(_a,s.style),c&&_a.appendChild(c),t(s.children||[],_a),h=_a;}else l(33,!1,void 0,{\"Invalid tagName in config\":u});}h&&o.appendChild(h),a=h;}),a;}(this.nodes,t);}},{key:\"parseMarkup\",value:function parseMarkup(e){var t;var i=[];if(e=e.trim().replace(/ style=([\"'])/g,\" data-style=$1\"),p)t=new DOMParser().parseFromString(f?f.createHTML(e):e,\"text/html\");else{var _i3=o(\"div\");_i3.innerHTML=e,t={body:_i3};}var s=function s(e,t){var i=e.nodeName.toLowerCase(),n={tagName:i};\"#text\"===i&&(n.textContent=e.textContent||\"\");var o=e.attributes;if(o){var _e8={};[].forEach.call(o,function(t){\"data-style\"===t.name?n.style=g.parseStyle(t.value):_e8[t.name]=t.value;}),n.attributes=_e8;}if(e.childNodes.length){var _t5=[];[].forEach.call(e.childNodes,function(e){s(e,_t5);}),_t5.length&&(n.children=_t5);}t.push(n);};return[].forEach.call(t.body.childNodes,function(e){return s(e,i);}),i;}}],[{key:\"filterUserAttributes\",value:function filterUserAttributes(e){return d(e,function(t,i){var s=!0;-1===g.allowedAttributes.indexOf(i)&&(s=!1),-1!==[\"background\",\"dynsrc\",\"href\",\"lowsrc\",\"src\"].indexOf(i)&&(s=h(t)&&g.allowedReferences.some(function(e){return 0===t.indexOf(e);})),s||(l(33,!1,void 0,{\"Invalid attribute in config\":\"\".concat(i)}),delete e[i]),h(t)&&e[i]&&(e[i]=t.replace(/</g,\"&lt;\"));}),e;}},{key:\"parseStyle\",value:function parseStyle(e){return e.split(\";\").reduce(function(e,t){var i=t.split(\":\").map(function(e){return e.trim();}),s=i.shift();return s&&i.length&&(e[s.replace(/-([a-z])/g,function(e){return e[1].toUpperCase();})]=i.join(\":\")),e;},{});}},{key:\"setElementHTML\",value:function setElementHTML(e,t){e.innerHTML=g.emptyHTML,t&&new g(t).addToDOM(e);}}]);return g;}();return g.allowedAttributes=[\"alt\",\"aria-controls\",\"aria-describedby\",\"aria-expanded\",\"aria-haspopup\",\"aria-hidden\",\"aria-label\",\"aria-labelledby\",\"aria-live\",\"aria-pressed\",\"aria-readonly\",\"aria-roledescription\",\"aria-selected\",\"class\",\"clip-path\",\"color\",\"colspan\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"disabled\",\"fill\",\"filterUnits\",\"flood-color\",\"flood-opacity\",\"height\",\"href\",\"id\",\"in\",\"in2\",\"markerHeight\",\"markerWidth\",\"offset\",\"opacity\",\"operator\",\"orient\",\"padding\",\"paddingLeft\",\"paddingRight\",\"patternUnits\",\"r\",\"radius\",\"refX\",\"refY\",\"role\",\"scope\",\"slope\",\"src\",\"startOffset\",\"stdDeviation\",\"stroke\",\"stroke-linecap\",\"stroke-width\",\"style\",\"tableValues\",\"result\",\"rowspan\",\"summary\",\"target\",\"tabindex\",\"text-align\",\"text-anchor\",\"textAnchor\",\"textLength\",\"title\",\"type\",\"valign\",\"width\",\"x\",\"x1\",\"x2\",\"xlink:href\",\"y\",\"y1\",\"y2\",\"zIndex\"],g.allowedReferences=[\"https://\",\"http://\",\"mailto:\",\"/\",\"../\",\"./\",\"#\"],g.allowedTags=[\"a\",\"abbr\",\"b\",\"br\",\"button\",\"caption\",\"circle\",\"clipPath\",\"code\",\"dd\",\"defs\",\"div\",\"dl\",\"dt\",\"em\",\"feComponentTransfer\",\"feComposite\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feMorphology\",\"feOffset\",\"feMerge\",\"feMergeNode\",\"filter\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hr\",\"i\",\"img\",\"li\",\"linearGradient\",\"marker\",\"ol\",\"p\",\"path\",\"pattern\",\"pre\",\"rect\",\"small\",\"span\",\"stop\",\"strong\",\"style\",\"sub\",\"sup\",\"svg\",\"table\",\"text\",\"textPath\",\"thead\",\"title\",\"tbody\",\"tspan\",\"td\",\"th\",\"tr\",\"u\",\"ul\",\"#text\"],g.emptyHTML=m,g.bypassHTMLFiltering=!1,g;}),i(t,\"Data/Modifiers/DataModifier.js\",[t[\"Core/Utilities.js\"]],function(t){var i;var s=t.addEvent,n=t.fireEvent,o=t.merge;var r=/*#__PURE__*/function(){function r(){_classCallCheck(this,r);}_createClass(r,[{key:\"benchmark\",value:function benchmark(t,i){var s=[],n=this,_r=function _r(){n.modifyTable(t),n.emit({type:\"afterBenchmarkIteration\"});},_o4=o({iterations:1},i),l=_o4.iterations;n.on(\"afterBenchmarkIteration\",function(){if(s.length===l){n.emit({type:\"afterBenchmark\",results:s});return;}_r();});var a={startTime:0,endTime:0};return n.on(\"modify\",function(){a.startTime=e.performance.now();}),n.on(\"afterModify\",function(){a.endTime=e.performance.now(),s.push(a.endTime-a.startTime);}),_r(),s;}},{key:\"emit\",value:function emit(e){n(this,e.type,e);}},{key:\"modify\",value:function modify(e,t){var i=this;return new Promise(function(s,n){e.modified===e&&(e.modified=e.clone(!1,t));try{s(i.modifyTable(e,t));}catch(s){i.emit({type:\"error\",detail:t,table:e}),n(s);}});}},{key:\"modifyCell\",value:function modifyCell(e,t,i,s,n){return this.modifyTable(e);}},{key:\"modifyColumns\",value:function modifyColumns(e,t,i,s){return this.modifyTable(e);}},{key:\"modifyRows\",value:function modifyRows(e,t,i,s){return this.modifyTable(e);}},{key:\"on\",value:function on(e,t){return s(this,e,t);}}]);return r;}();return(i=r||(r={})).types={},i.registerType=function(e,t){return!!e&&!i.types[e]&&!!(i.types[e]=t);},r;}),i(t,\"Data/DataTable.js\",[t[\"Core/Utilities.js\"]],function(e){var t=e.addEvent,i=e.defined,s=e.fireEvent,n=e.uniqueKey;var o=/*#__PURE__*/function(){function o(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,o);this.autoId=!e.id,this.columns={},this.id=e.id||n(),this.modified=this,this.rowCount=0,this.versionTag=n();var t=e.columns||{},i=Object.keys(t),s=this.columns,_o5=0;for(var _e9=0,_n=i.length,r,l;_e9<_n;++_e9)r=t[l=i[_e9]].slice(),s[l]=r,_o5=Math.max(_o5,r.length);for(var _e10=0,_t6=i.length;_e10<_t6;++_e10)s[i[_e10]].length=_o5;this.rowCount=_o5;}_createClass(o,[{key:\"clone\",value:function clone(e,t){var i={};this.emit({type:\"cloneTable\",detail:t}),e||(i.columns=this.columns),this.autoId||(i.id=this.id);var s=new o(i);return e||(s.versionTag=this.versionTag,s.originalRowIndexes=this.originalRowIndexes,s.localRowIndexes=this.localRowIndexes),this.emit({type:\"afterCloneTable\",detail:t,tableClone:s}),s;}},{key:\"deleteColumns\",value:function deleteColumns(e,t){var i=this.columns,s={},n={},_o6=this.modifier,r=this.rowCount;if((e=e||Object.keys(i)).length){this.emit({type:\"deleteColumns\",columnNames:e,detail:t});for(var _t7=0,_o16=e.length,l,a;_t7<_o16;++_t7)(l=i[a=e[_t7]])&&(s[a]=l,n[a]=Array(r)),delete i[a];return Object.keys(i).length||(this.rowCount=0,this.deleteRowIndexReferences()),_o6&&_o6.modifyColumns(this,n,0,t),this.emit({type:\"afterDeleteColumns\",columns:s,columnNames:e,detail:t}),s;}}},{key:\"deleteRowIndexReferences\",value:function deleteRowIndexReferences(){delete this.originalRowIndexes,delete this.localRowIndexes;}},{key:\"deleteRows\",value:function deleteRows(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var i=arguments.length>2?arguments[2]:undefined;var s=[],n=[],_o8=this.modifier;if(this.emit({type:\"deleteRows\",detail:i,rowCount:t,rowIndex:e||0}),void 0===e&&(e=0,t=this.rowCount),t>0&&e<this.rowCount){var _i4=this.columns,_o9=Object.keys(_i4);for(var r=0,l=_o9.length,a,h;r<l;++r){h=(a=_i4[_o9[r]]).splice(e,t),r||(this.rowCount=a.length);for(var _e11=0,_t8=h.length;_e11<_t8;++_e11)s[_e11]=s[_e11]||[],s[_e11][r]=h[_e11];n.push(Array(l));}}return _o8&&_o8.modifyRows(this,n,e||0,i),this.emit({type:\"afterDeleteRows\",detail:i,rowCount:t,rowIndex:e||0,rows:s}),s;}},{key:\"emit\",value:function emit(e){switch(e.type){case\"afterDeleteColumns\":case\"afterDeleteRows\":case\"afterSetCell\":case\"afterSetColumns\":case\"afterSetRows\":this.versionTag=n();}s(this,e.type,e);}},{key:\"getCell\",value:function getCell(e,t){var i=this.columns[e];if(i)return i[t];}},{key:\"getCellAsBoolean\",value:function getCellAsBoolean(e,t){var i=this.columns[e];return!!(i&&i[t]);}},{key:\"getCellAsNumber\",value:function getCellAsNumber(e,t,i){var _n2;var s=this.columns[e],n=s&&s[t];switch(_typeof(n)){case\"boolean\":return n?1:0;case\"number\":return isNaN(n)&&!i?null:n;}return isNaN(n=parseFloat(\"\".concat((_n2=n)!==null&&_n2!==void 0?_n2:\"\")))&&!i?null:n;}},{key:\"getCellAsString\",value:function getCellAsString(e,t){var i=this.columns[e];return\"\".concat(i&&i[t]);}},{key:\"getColumn\",value:function getColumn(e,t){return this.getColumns([e],t)[e];}},{key:\"getColumnAsNumbers\",value:function getColumnAsNumbers(e,t){var i=this.columns[e],s=[];if(i){var _n3=i.length;if(t)for(var _t9=0;_t9<_n3;++_t9)s.push(this.getCellAsNumber(e,_t9,!0));else{for(var _e12=0,_t10;_e12<_n3;++_e12){if(\"number\"==typeof(_t10=i[_e12]))return i.slice();if(null!=_t10)break;}for(var _t11=0;_t11<_n3;++_t11)s.push(this.getCellAsNumber(e,_t11));}}return s;}},{key:\"getColumnNames\",value:function getColumnNames(){return Object.keys(this.columns);}},{key:\"getColumns\",value:function getColumns(e,t){var i=this.columns,s={};e=e||Object.keys(i);for(var _n4=0,_o17=e.length,r,l;_n4<_o17;++_n4)(r=i[l=e[_n4]])&&(s[l]=t?r:r.slice());return s;}},{key:\"getLocalRowIndex\",value:function getLocalRowIndex(e){var t=this.localRowIndexes;return t?t[e]:e;}},{key:\"getModifier\",value:function getModifier(){return this.modifier;}},{key:\"getOriginalRowIndex\",value:function getOriginalRowIndex(e){var t=this.originalRowIndexes;return t?t[e]:e;}},{key:\"getRow\",value:function getRow(e,t){return this.getRows(e,1,t)[0];}},{key:\"getRowCount\",value:function getRowCount(){return this.rowCount;}},{key:\"getRowIndexBy\",value:function getRowIndexBy(e,t,i){var s=this.columns[e];if(s){var _e13=s.indexOf(t,i);if(-1!==_e13)return _e13;}}},{key:\"getRowObject\",value:function getRowObject(e,t){return this.getRowObjects(e,1,t)[0];}},{key:\"getRowObjects\",value:function getRowObjects(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.rowCount-e;var i=arguments.length>2?arguments[2]:undefined;var s=this.columns,n=Array(t);i=i||Object.keys(s);for(var _o18=e,r=0,l=Math.min(this.rowCount,e+t),a,h;_o18<l;++_o18,++r){var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=(h=n[r]={},i)[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var _e14=_step2.value;a=s[_e14],h[_e14]=a?a[_o18]:void 0;}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2[\"return\"]!=null){_iterator2[\"return\"]();}}finally{if(_didIteratorError2){throw _iteratorError2;}}}}return n;}},{key:\"getRows\",value:function getRows(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.rowCount-e;var i=arguments.length>2?arguments[2]:undefined;var s=this.columns,n=Array(t);i=i||Object.keys(s);for(var _o19=e,r=0,l=Math.min(this.rowCount,e+t),a,h;_o19<l;++_o19,++r){var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=(h=n[r]=[],i)[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var _e15=_step3.value;a=s[_e15],h.push(a?a[_o19]:void 0);}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3[\"return\"]!=null){_iterator3[\"return\"]();}}finally{if(_didIteratorError3){throw _iteratorError3;}}}}return n;}},{key:\"getVersionTag\",value:function getVersionTag(){return this.versionTag;}},{key:\"hasColumns\",value:function hasColumns(e){var t=this.columns;for(var _i5=0,_s5=e.length;_i5<_s5;++_i5)if(!t[e[_i5]])return!1;return!0;}},{key:\"hasRowWith\",value:function hasRowWith(e,t){var i=this.columns[e];return!!i&&-1!==i.indexOf(t);}},{key:\"on\",value:function on(e,i){return t(this,e,i);}},{key:\"renameColumn\",value:function renameColumn(e,t){var i=this.columns;return!!i[e]&&(e!==t&&(i[t]=i[e],delete i[e]),!0);}},{key:\"setCell\",value:function setCell(e,t,i,s){var n=this.columns,_o13=this.modifier,r=n[e];r&&r[t]===i||(this.emit({type:\"setCell\",cellValue:i,columnName:e,detail:s,rowIndex:t}),r||(r=n[e]=Array(this.rowCount)),t>=this.rowCount&&(this.rowCount=t+1),r[t]=i,_o13&&_o13.modifyCell(this,e,t,i),this.emit({type:\"afterSetCell\",cellValue:i,columnName:e,detail:s,rowIndex:t}));}},{key:\"setColumn\",value:function setColumn(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var s=arguments.length>3?arguments[3]:undefined;this.setColumns(_defineProperty({},e,t),i,s);}},{key:\"setColumns\",value:function setColumns(e,t,i){var s=this.columns,n=this.modifier,_o14=void 0===t,r=Object.keys(e);this.emit({type:\"setColumns\",columns:e,columnNames:r,detail:i,rowIndex:t});for(var _i6=0,_n5=r.length,_l2,a;_i6<_n5;++_i6)if(_l2=e[a=r[_i6]],_o14)s[a]=_l2.slice(),this.rowCount=_l2.length;else{var _e16=s[a]?s[a]:s[a]=Array(this.rowCount);for(var _i7=t||0,_s6=_l2.length;_i7<_s6;++_i7)_e16[_i7]=_l2[_i7];this.rowCount=Math.max(this.rowCount,_e16.length);}var l=Object.keys(s);for(var _e17=0,_t12=l.length;_e17<_t12;++_e17)s[l[_e17]].length=this.rowCount;n&&n.modifyColumns(this,e,t||0),this.emit({type:\"afterSetColumns\",columns:e,columnNames:r,detail:i,rowIndex:t});}},{key:\"setModifier\",value:function setModifier(e,t){var i=this;return i.emit({type:\"setModifier\",detail:t,modifier:e,modified:i.modified}),i.modified=i,i.modifier=e,(e?e.modify(i):Promise.resolve(i)).then(function(i){return i.emit({type:\"afterSetModifier\",detail:t,modifier:e,modified:i.modified}),i;})[\"catch\"](function(t){throw i.emit({type:\"setModifierError\",error:t,modifier:e,modified:i.modified}),t;});}},{key:\"setOriginalRowIndexes\",value:function setOriginalRowIndexes(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;if(this.originalRowIndexes=e,t)return;var s=this.localRowIndexes=[];for(var _t13=0,_n6=e.length,_o20;_t13<_n6;++_t13)i(_o20=e[_t13])&&(s[_o20]=_t13);}},{key:\"setRow\",value:function setRow(e,t,i){this.setRows([e],t,i);}},{key:\"setRows\",value:function setRows(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.rowCount;var i=arguments.length>2?arguments[2]:undefined;var s=this.columns,n=Object.keys(s),r=this.modifier,l=e.length;this.emit({type:\"setRows\",detail:i,rowCount:l,rowIndex:t,rows:e});for(var _i8=0,_r2=t,_a2;_i8<l;++_i8,++_r2)if((_a2=e[_i8])===o.NULL)for(var _e18=0,_t14=n.length;_e18<_t14;++_e18)s[n[_e18]][_r2]=null;else if(_a2 instanceof Array)for(var _e19=0,_t15=n.length;_e19<_t15;++_e19)s[n[_e19]][_r2]=_a2[_e19];else{var _e20=Object.keys(_a2);for(var _t16=0,_i9=_e20.length,_n7;_t16<_i9;++_t16)s[_n7=_e20[_t16]]||(s[_n7]=Array(_r2+1)),s[_n7][_r2]=_a2[_n7];}var a=t+l;if(a>this.rowCount){this.rowCount=a;for(var _e21=0,_t17=n.length;_e21<_t17;++_e21)s[n[_e21]].length=a;}r&&r.modifyRows(this,e,t),this.emit({type:\"afterSetRows\",detail:i,rowCount:l,rowIndex:t,rows:e});}}],[{key:\"isNull\",value:function isNull(e){if(e===o.NULL)return!0;if(e instanceof Array){if(!e.length)return!1;for(var _t18=0,_i10=e.length;_t18<_i10;++_t18)if(null!==e[_t18])return!1;}else{var _t19=Object.keys(e);if(!_t19.length)return!1;for(var _i11=0,_s7=_t19.length;_i11<_s7;++_i11)if(null!==e[_t19[_i11]])return!1;}return!0;}}]);return o;}();return o.NULL={},o.version=\"1.0.0\",o;}),i(t,\"Data/Connectors/DataConnector.js\",[t[\"Data/Modifiers/DataModifier.js\"],t[\"Data/DataTable.js\"],t[\"Core/Utilities.js\"]],function(t,i,s){var n;var o=s.addEvent,r=s.fireEvent,l=s.merge,a=s.pick;var h=/*#__PURE__*/function(){function h(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,h);this.table=new i(e.dataTable),this.metadata=e.metadata||{columns:{}};}_createClass(h,[{key:\"polling\",get:function get(){return!!this.polling;}},{key:\"describeColumn\",value:function describeColumn(e,t){var i=this.metadata.columns;i[e]=l(i[e]||{},t);}},{key:\"describeColumns\",value:function describeColumns(e){var t;var i=Object.keys(e);for(;\"string\"==typeof(t=i.pop());)this.describeColumn(t,e[t]);}},{key:\"emit\",value:function emit(e){r(this,e.type,e);}},{key:\"getColumnOrder\",value:function getColumnOrder(e){var t=this.metadata.columns,i=Object.keys(t||{});if(i.length)return i.sort(function(e,i){return a(t[e].index,0)-a(t[i].index,0);});}},{key:\"getSortedColumns\",value:function getSortedColumns(e){return this.table.getColumns(this.getColumnOrder(e));}},{key:\"load\",value:function load(){return r(this,\"afterLoad\",{table:this.table}),Promise.resolve(this);}},{key:\"on\",value:function on(e,t){return o(this,e,t);}},{key:\"save\",value:function save(){return r(this,\"saveError\",{table:this.table}),Promise.reject(Error(\"Not implemented\"));}},{key:\"setColumnOrder\",value:function setColumnOrder(e){for(var _t20=0,_i12=e.length;_t20<_i12;++_t20)this.describeColumn(e[_t20],{index:_t20});}},{key:\"setModifierOptions\",value:function setModifierOptions(e){var _this=this;var i=e&&t.types[e.type];return this.table.setModifier(i?new i(e):void 0).then(function(){return _this;});}},{key:\"startPolling\",value:function startPolling(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1e3;var i=this;e.clearTimeout(i._polling),i._polling=e.setTimeout(function(){return i.load()[\"catch\"](function(e){return i.emit({type:\"loadError\",error:e,table:i.table});}).then(function(){i._polling&&i.startPolling(t);});},t);}},{key:\"stopPolling\",value:function stopPolling(){e.clearTimeout(this._polling),delete this._polling;}},{key:\"whatIs\",value:function whatIs(e){return this.metadata.columns[e];}}]);return h;}();return(n=h||(h={})).types={},n.registerType=function(e,t){return!!e&&!n.types[e]&&!!(n.types[e]=t);},h;}),i(t,\"Data/Converters/DataConverter.js\",[t[\"Data/DataTable.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.addEvent,s=t.fireEvent,n=t.isNumber,o=t.merge;var r=/*#__PURE__*/function(){function r(e){_classCallCheck(this,r);this.dateFormats={\"YYYY/mm/dd\":{regex:/^(\\d{4})([\\-\\.\\/])(\\d{1,2})\\2(\\d{1,2})$/,parser:function parser(e){return e?Date.UTC(+e[1],e[3]-1,+e[4]):NaN;}},\"dd/mm/YYYY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{4})$/,parser:function parser(e){return e?Date.UTC(+e[4],e[3]-1,+e[1]):NaN;},alternative:\"mm/dd/YYYY\"},\"mm/dd/YYYY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{4})$/,parser:function parser(e){return e?Date.UTC(+e[4],e[1]-1,+e[3]):NaN;}},\"dd/mm/YY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{2})$/,parser:function parser(e){var t=new Date();if(!e)return NaN;var i=+e[4];return i>t.getFullYear()-2e3?i+=1900:i+=2e3,Date.UTC(i,e[3]-1,+e[1]);},alternative:\"mm/dd/YY\"},\"mm/dd/YY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{2})$/,parser:function parser(e){return e?Date.UTC(+e[4]+2e3,e[1]-1,+e[3]):NaN;}}};var t=o(r.defaultOptions,e),i=t.decimalPoint;(\".\"===i||\",\"===i)&&(i=\".\"===i?\"\\\\.\":\",\",this.decimalRegExp=RegExp(\"^(-?[0-9]+)\"+i+\"([0-9]+)$\")),this.options=t;}_createClass(r,[{key:\"asBoolean\",value:function asBoolean(e){return\"boolean\"==typeof e?e:\"string\"==typeof e?\"\"!==e&&\"0\"!==e&&\"false\"!==e:!!this.asNumber(e);}},{key:\"asDate\",value:function asDate(e){var t;if(\"string\"==typeof e)t=this.parseDate(e);else if(\"number\"==typeof e)t=e;else{if(e instanceof Date)return e;t=this.parseDate(this.asString(e));}return new Date(t);}},{key:\"asGuessedType\",value:function asGuessedType(e){return{number:this.asNumber,Date:this.asDate,string:this.asString}[this.guessType(e)].call(this,e);}},{key:\"asNumber\",value:function asNumber(e){if(\"number\"==typeof e)return e;if(\"boolean\"==typeof e)return e?1:0;if(\"string\"==typeof e){var _t21=this.decimalRegExp;if(e.indexOf(\" \")>-1&&(e=e.replace(/\\s+/g,\"\")),_t21){if(!_t21.test(e))return NaN;e=e.replace(_t21,\"$1.$2\");}return parseFloat(e);}return e instanceof Date?e.getDate():e?e.getRowCount():NaN;}},{key:\"asString\",value:function asString(e){return\"\"+e;}},{key:\"deduceDateFormat\",value:function deduceDateFormat(e,t,i){var s=[],n=[],o=\"YYYY/mm/dd\",_r3,l=[],a=0,h=!1,d,u;for((!t||t>e.length)&&(t=e.length);a<t;a++)if(void 0!==e[a]&&e[a]&&e[a].length)for(u=0,_r3=e[a].trim().replace(/[\\-\\.\\/]/g,\" \").split(\" \"),l=[\"\",\"\",\"\"];u<_r3.length;u++)u<l.length&&(d=parseInt(_r3[u],10))&&(n[u]=!n[u]||n[u]<d?d:n[u],void 0!==s[u]?s[u]!==d&&(s[u]=!1):s[u]=d,d>31?d<100?l[u]=\"YY\":l[u]=\"YYYY\":d>12&&d<=31?(l[u]=\"dd\",h=!0):l[u].length||(l[u]=\"mm\"));if(h){for(u=0;u<s.length;u++)!1!==s[u]?n[u]>12&&\"YY\"!==l[u]&&\"YYYY\"!==l[u]&&(l[u]=\"YY\"):n[u]>12&&\"mm\"===l[u]&&(l[u]=\"dd\");3===l.length&&\"dd\"===l[1]&&\"dd\"===l[2]&&(l[2]=\"YY\"),o=l.join(\"/\");}return i&&(this.options.dateFormat=o),o;}},{key:\"emit\",value:function emit(e){s(this,e.type,e);}},{key:\"export\",value:function _export(e,t){throw this.emit({type:\"exportError\",columns:[],headers:[]}),Error(\"Not implemented\");}},{key:\"getTable\",value:function getTable(){throw Error(\"Not implemented\");}},{key:\"guessType\",value:function guessType(e){var t=\"string\";if(\"string\"==typeof e){var _i13=this.trim(\"\".concat(e)),_s8=this.decimalRegExp,_o21=this.trim(_i13,!0);_s8&&(_o21=_s8.test(_o21)?_o21.replace(_s8,\"$1.$2\"):\"\");var _r4=parseFloat(_o21);+_o21===_r4?e=_r4:t=n(this.parseDate(e))?\"Date\":\"string\";}return\"number\"==typeof e&&(t=e>31536e6?\"Date\":\"number\"),t;}},{key:\"on\",value:function on(e,t){return i(this,e,t);}},{key:\"parse\",value:function parse(e){throw this.emit({type:\"parseError\",columns:[],headers:[]}),Error(\"Not implemented\");}},{key:\"parseDate\",value:function parseDate(e,t){var i=this.options,s=t||i.dateFormat,o=NaN,_r5,l,a;if(i.parseDate)o=i.parseDate(e);else{if(s)(l=this.dateFormats[s])||(l=this.dateFormats[\"YYYY/mm/dd\"]),(a=e.match(l.regex))&&(o=l.parser(a));else for(_r5 in this.dateFormats)if(l=this.dateFormats[_r5],a=e.match(l.regex)){s=_r5,o=l.parser(a);break;}!a&&(\"object\"==_typeof(a=Date.parse(e))&&null!==a&&a.getTime?o=a.getTime()-6e4*a.getTimezoneOffset():n(a)&&(o=a-6e4*new Date(a).getTimezoneOffset(),-1===e.indexOf(\"2001\")&&2001===new Date(o).getFullYear()&&(o=NaN)));}return o;}},{key:\"trim\",value:function trim(e,t){return\"string\"==typeof e&&(e=e.replace(/^\\s+|\\s+$/g,\"\"),t&&/^[\\d\\s]+$/.test(e)&&(e=e.replace(/\\s/g,\"\"))),e;}}]);return r;}();return r.defaultOptions={dateFormat:\"\",alternativeFormat:\"\",startColumn:0,endColumn:Number.MAX_VALUE,startRow:0,endRow:Number.MAX_VALUE,firstRowAsNames:!0,switchRowsAndColumns:!1},(r||(r={})).getTableFromColumns=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var s=new e();for(var _e22=0,_n8=Math.max(i.length,t.length);_e22<_n8;++_e22)s.setColumn(i[_e22]||\"\".concat(_e22),t[_e22]);return s;},r;}),i(t,\"Data/DataCursor.js\",[],function(){var e=/*#__PURE__*/function(){function e(){var _e23=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,e);this.emittingRegister=[],this.listenerMap={},this.stateMap=_e23;}_createClass(e,[{key:\"addListener\",value:function addListener(_e24,t,i){var s=this.listenerMap[_e24]=this.listenerMap[_e24]||{};return(s[t]=s[t]||[]).push(i),this;}},{key:\"buildEmittingTag\",value:function buildEmittingTag(_e25){return(\"position\"===_e25.cursor.type?[_e25.table.id,_e25.cursor.column,_e25.cursor.row,_e25.cursor.state,_e25.cursor.type]:[_e25.table.id,_e25.cursor.columns,_e25.cursor.firstRow,_e25.cursor.lastRow,_e25.cursor.state,_e25.cursor.type]).join(\"\\0\");}},{key:\"emitCursor\",value:function emitCursor(t,i,s,n){var o=t.id,r=i.state,l=this.listenerMap[o]&&this.listenerMap[o][r];if(l){var _this$stateMap$o;var _r6=this.stateMap[o]=(_this$stateMap$o=this.stateMap[o])!==null&&_this$stateMap$o!==void 0?_this$stateMap$o:{},a=_r6[i.state]||[];n&&(a.length||(_r6[i.state]=a),-1===e.getIndex(i,a)&&a.push(i));var h={cursor:i,cursors:a,table:t};s&&(h.event=s);var d=this.emittingRegister,u=this.buildEmittingTag(h);if(d.indexOf(u)>=0)return this;try{this.emittingRegister.push(u);for(var _e30=0,_t22=l.length;_e30<_t22;++_e30)l[_e30].call(this,h);}finally{var _e27=this.emittingRegister.indexOf(u);_e27>=0&&this.emittingRegister.splice(_e27,1);}}return this;}},{key:\"remitCursor\",value:function remitCursor(t,i){var s=this.stateMap[t]&&this.stateMap[t][i.state];if(s){var _t23=e.getIndex(i,s);_t23>=0&&s.splice(_t23,1);}return this;}},{key:\"removeListener\",value:function removeListener(_e28,t,i){var s=this.listenerMap[_e28]&&this.listenerMap[_e28][t];if(s){var _e29=s.indexOf(i);_e29>=0&&s.splice(_e29,1);}return this;}}]);return e;}();return e.version=\"1.0.0\",function(e){function t(e,t){var _ref,_e$row,_ref2,_e$row2;if(\"range\"===e.type)return e;var i={type:\"range\",firstRow:(_ref=(_e$row=e.row)!==null&&_e$row!==void 0?_e$row:t&&t.firstRow)!==null&&_ref!==void 0?_ref:0,lastRow:(_ref2=(_e$row2=e.row)!==null&&_e$row2!==void 0?_e$row2:t&&t.lastRow)!==null&&_ref2!==void 0?_ref2:Number.MAX_VALUE,state:e.state};return void 0!==e.column&&(i.columns=[e.column]),i;}e.getIndex=function(e,t){if(\"position\"===e.type){for(var _i14,s=0,n=t.length;s<n;++s)if(\"position\"===(_i14=t[s]).type&&_i14.state===e.state&&_i14.column===e.column&&_i14.row===e.row)return s;}else{var _i15=JSON.stringify(e.columns);for(var _s9,_n9=0,o=t.length;_n9<o;++_n9)if(\"range\"===(_s9=t[_n9]).type&&_s9.state===e.state&&_s9.firstRow===e.firstRow&&_s9.lastRow===e.lastRow&&JSON.stringify(_s9.columns)===_i15)return _n9;}return-1;},e.isEqual=function(e,t){return\"position\"===e.type&&\"position\"===t.type?e.column===t.column&&e.row===t.row&&e.state===t.state:\"range\"===e.type&&\"range\"===t.type&&e.firstRow===t.firstRow&&e.lastRow===t.lastRow&&JSON.stringify(e.columns)===JSON.stringify(t.columns);},e.isInRange=function(e,i){\"position\"===i.type&&(i=t(i)),\"position\"===e.type&&(e=t(e,i));var s=e.columns,n=i.columns;return e.firstRow>=i.firstRow&&e.lastRow<=i.lastRow&&(!s||!n||s.every(function(e){return n.indexOf(e)>=0;}));},e.toPositions=function(e){if(\"position\"===e.type)return[e];var t=e.columns||[],i=[],s=e.state;for(var n=e.firstRow,o=e.lastRow;n<o;++n){if(!t.length){i.push({type:\"position\",row:n,state:s});continue;}for(var _e31=0,_o22=t.length;_e31<_o22;++_e31)i.push({type:\"position\",column:t[_e31],row:n,state:s});}return i;},e.toRange=t;}(e||(e={})),e;}),i(t,\"DataGrid/DataGridUtils.js\",[],function(){return{dataTableCellToString:function dataTableCellToString(e){return\"string\"==typeof e||\"number\"==typeof e||\"boolean\"==typeof e?\"\"+e:\"\";},emptyHTMLElement:function emptyHTMLElement(e){for(;e.firstChild;)e.removeChild(e.firstChild);},makeDiv:function makeDiv(e,t){var i=document.createElement(\"div\");return i.className=e,t&&(i.id=t),i;}};}),i(t,\"DataGrid/Globals.js\",[],function(){var t,i;return(i=t||(t={})).classNamePrefix=\"highcharts-datagrid-\",i.classNames={gridContainer:i.classNamePrefix+\"container\",outerContainer:i.classNamePrefix+\"outer-container\",scrollContainer:i.classNamePrefix+\"scroll-container\",innerContainer:i.classNamePrefix+\"inner-container\",cell:i.classNamePrefix+\"cell\",cellInput:i.classNamePrefix+\"cell-input\",row:i.classNamePrefix+\"row\",columnHeader:i.classNamePrefix+\"column-header\"},i.win=e,i.userAgent=i.win.navigator&&i.win.navigator.userAgent||\"\",i.isChrome=i.win.chrome,i.isSafari=!i.isChrome&&-1!==i.userAgent.indexOf(\"Safari\"),t;}),i(t,\"Core/Chart/ChartDefaults.js\",[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:\"x\"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:\"line\",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:\"right\",x:-10,y:10}}},width:null,height:null,borderColor:\"#334eff\",backgroundColor:\"#ffffff\",plotBorderColor:\"#cccccc\"};}),i(t,\"Core/Color/Palettes.js\",[],function(){return{colors:[\"#2caffe\",\"#544fc5\",\"#00e272\",\"#fe6a35\",\"#6b8abc\",\"#d568fb\",\"#2ee0ca\",\"#fa4b42\",\"#feb56a\",\"#91e8e1\"]};}),i(t,\"Core/Time.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=e.win,s=t.defined,n=t.error,o=t.extend,r=t.isNumber,l=t.isObject,a=t.merge,h=t.objectEach,d=t.pad,u=t.pick,c=t.splat,f=t.timeUnits,m=e.isSafari&&i.Intl&&i.Intl.DateTimeFormat.prototype.formatRange,p=e.isSafari&&i.Intl&&!i.Intl.DateTimeFormat.prototype.formatRange;var g=/*#__PURE__*/function(){function g(e){_classCallCheck(this,g);this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=i.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(e);}_createClass(g,[{key:\"get\",value:function get(e,t){if(this.variableTimezone||this.timezoneOffset){var _i16=t.getTime(),_s10=_i16-this.getTimezoneOffset(t);t.setTime(_s10);var _n10=t[\"getUTC\"+e]();return t.setTime(_i16),_n10;}return this.useUTC?t[\"getUTC\"+e]():t[\"get\"+e]();}},{key:\"set\",value:function set(e,t,i){if(this.variableTimezone||this.timezoneOffset){if(\"Milliseconds\"===e||\"Seconds\"===e||\"Minutes\"===e&&this.getTimezoneOffset(t)%36e5==0)return t[\"setUTC\"+e](i);var _s11=this.getTimezoneOffset(t),_n11=t.getTime()-_s11;t.setTime(_n11),t[\"setUTC\"+e](i);var _o23=this.getTimezoneOffset(t);return _n11=t.getTime()+_o23,t.setTime(_n11);}return this.useUTC||m&&\"FullYear\"===e?t[\"setUTC\"+e](i):t[\"set\"+e](i);}},{key:\"update\",value:function update(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=u(e.useUTC,!0);this.options=e=a(!0,this.options,e),this.Date=e.Date||i.Date||Date,this.useUTC=t,this.timezoneOffset=t&&e.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=t&&!!(e.getTimezoneOffset||e.timezone);}},{key:\"makeTime\",value:function makeTime(e,t,i,s,n,o){var r,l,a;return this.useUTC?(r=this.Date.UTC.apply(0,arguments),l=this.getTimezoneOffset(r),r+=l,l!==(a=this.getTimezoneOffset(r))?r+=a-l:l-36e5!==this.getTimezoneOffset(r-36e5)||p||(r-=36e5)):r=new this.Date(e,t,u(i,1),u(s,0),u(n,0),u(o,0)).getTime(),r;}},{key:\"timezoneOffsetFunction\",value:function timezoneOffsetFunction(){var e=this,t=this.options,i=t.getTimezoneOffset;return this.useUTC?t.timezone?function(e){try{var _i17=\"shortOffset,\".concat(t.timezone||\"\"),_g$formatCache$i$form=(g.formatCache[_i17]=g.formatCache[_i17]||Intl.DateTimeFormat(\"en\",{timeZone:t.timezone,timeZoneName:\"shortOffset\"})).format(e).split(/(GMT|:)/).map(Number),_g$formatCache$i$form2=_slicedToArray(_g$formatCache$i$form,5),_s12=_g$formatCache$i$form2[0],_n12=_g$formatCache$i$form2[1],_o24=_g$formatCache$i$form2[2],_l3=_g$formatCache$i$form2[3],_g$formatCache$i$form3=_g$formatCache$i$form2[4],_a3=_g$formatCache$i$form3===void 0?0:_g$formatCache$i$form3,_h=-(36e5*(_o24+_a3/60));if(r(_h))return _h;}catch(e){n(34);}return 0;}:this.useUTC&&i?function(e){return 6e4*i(e.valueOf());}:function(){return 6e4*(e.timezoneOffset||0);}:function(e){return 6e4*new Date(e.toString()).getTimezoneOffset();};}},{key:\"dateFormat\",value:function dateFormat(t,i,n){if(!s(i)||isNaN(i))return e.defaultOptions.lang&&e.defaultOptions.lang.invalidDate||\"\";t=u(t,\"%Y-%m-%d %H:%M:%S\");var r=this,l=new this.Date(i),a=this.get(\"Hours\",l),c=this.get(\"Day\",l),f=this.get(\"Date\",l),m=this.get(\"Month\",l),p=this.get(\"FullYear\",l),_g=e.defaultOptions.lang,C=_g&&_g.weekdays,y=_g&&_g.shortWeekdays;return h(o({a:y?y[c]:C[c].substr(0,3),A:C[c],d:d(f),e:d(f,2,\" \"),w:c,b:_g.shortMonths[m],B:_g.months[m],m:d(m+1),o:m+1,y:p.toString().substr(2,2),Y:p,H:d(a),k:a,I:d(a%12||12),l:a%12||12,M:d(this.get(\"Minutes\",l)),p:a<12?\"AM\":\"PM\",P:a<12?\"am\":\"pm\",S:d(this.get(\"Seconds\",l)),L:d(Math.floor(i%1e3),3)},e.dateFormats),function(e,s){for(;-1!==t.indexOf(\"%\"+s);)t=t.replace(\"%\"+s,\"function\"==typeof e?e.call(r,i):e);}),n?t.substr(0,1).toUpperCase()+t.substr(1):t;}},{key:\"resolveDTLFormat\",value:function resolveDTLFormat(e){return l(e,!0)?e:{main:(e=c(e))[0],from:e[1],to:e[2]};}},{key:\"getTimeTicks\",value:function getTimeTicks(e,t,i,n){var r,l,a,h;var d=this,c=d.Date,m=[],p={},_g2=new c(t),C=e.unitRange,y=e.count||1;if(n=u(n,1),s(t)){d.set(\"Milliseconds\",_g2,C>=f.second?0:y*Math.floor(d.get(\"Milliseconds\",_g2)/y)),C>=f.second&&d.set(\"Seconds\",_g2,C>=f.minute?0:y*Math.floor(d.get(\"Seconds\",_g2)/y)),C>=f.minute&&d.set(\"Minutes\",_g2,C>=f.hour?0:y*Math.floor(d.get(\"Minutes\",_g2)/y)),C>=f.hour&&d.set(\"Hours\",_g2,C>=f.day?0:y*Math.floor(d.get(\"Hours\",_g2)/y)),C>=f.day&&d.set(\"Date\",_g2,C>=f.month?1:Math.max(1,y*Math.floor(d.get(\"Date\",_g2)/y))),C>=f.month&&(d.set(\"Month\",_g2,C>=f.year?0:y*Math.floor(d.get(\"Month\",_g2)/y)),l=d.get(\"FullYear\",_g2)),C>=f.year&&(l-=l%y,d.set(\"FullYear\",_g2,l)),C===f.week&&(h=d.get(\"Day\",_g2),d.set(\"Date\",_g2,d.get(\"Date\",_g2)-h+n+(h<n?-7:0))),l=d.get(\"FullYear\",_g2);var _e32=d.get(\"Month\",_g2),_o25=d.get(\"Date\",_g2),_u=d.get(\"Hours\",_g2);t=_g2.getTime(),(d.variableTimezone||!d.useUTC)&&s(i)&&(a=i-t>4*f.month||d.getTimezoneOffset(t)!==d.getTimezoneOffset(i));var _c=_g2.getTime();for(r=1;_c<i;)m.push(_c),C===f.year?_c=d.makeTime(l+r*y,0):C===f.month?_c=d.makeTime(l,_e32+r*y):a&&(C===f.day||C===f.week)?_c=d.makeTime(l,_e32,_o25+r*y*(C===f.day?1:7)):a&&C===f.hour&&y>1?_c=d.makeTime(l,_e32,_o25,_u+r*y):_c+=C*y,r++;m.push(_c),C<=f.hour&&m.length<1e4&&m.forEach(function(e){e%18e5==0&&\"000000000\"===d.dateFormat(\"%H%M%S%L\",e)&&(p[e]=\"day\");});}return m.info=o(e,{higherRanks:p,totalRange:C*y}),m;}},{key:\"getDateFormat\",value:function getDateFormat(e,t,i,s){var n=this.dateFormat(\"%m-%d %H:%M:%S.%L\",t),o=\"01-01 00:00:00.000\",r={millisecond:15,second:12,minute:9,hour:6,day:3},l=\"millisecond\",a=l;for(l in f){if(e===f.week&&+this.dateFormat(\"%w\",t)===i&&n.substr(6)===o.substr(6)){l=\"week\";break;}if(f[l]>e){l=a;break;}if(r[l]&&n.substr(r[l])!==o.substr(r[l]))break;\"week\"!==l&&(a=l);}return this.resolveDTLFormat(s[l]).main;}}]);return g;}();return g.formatCache={},g;}),i(t,\"Core/Defaults.js\",[t[\"Core/Chart/ChartDefaults.js\"],t[\"Core/Globals.js\"],t[\"Core/Color/Palettes.js\"],t[\"Core/Time.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n){var o=t.isTouchDevice,r=n.fireEvent,l=n.merge,a={colors:i.colors,symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],weekdays:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],decimalPoint:\".\",numericSymbols:[\"k\",\"M\",\"G\",\"T\",\"P\",\"E\"],resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{buttonTheme:{fill:\"#f7f7f7\",padding:8,r:2,stroke:\"#cccccc\",\"stroke-width\":1,style:{color:\"#333333\",cursor:\"pointer\",fontSize:\"0.8em\",fontWeight:\"normal\"},states:{hover:{fill:\"#e6e6e6\"},select:{fill:\"#e6e9ff\",style:{color:\"#000000\",fontWeight:\"bold\"}},disabled:{style:{color:\"#cccccc\"}}}}},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:e,title:{style:{color:\"#333333\",fontWeight:\"bold\"},text:\"Chart title\",align:\"center\",margin:15,widthAdjust:-44},subtitle:{style:{color:\"#666666\",fontSize:\"0.8em\"},text:\"\",align:\"center\",widthAdjust:-44},caption:{margin:15,style:{color:\"#666666\",fontSize:\"0.8em\"},text:\"\",align:\"left\",verticalAlign:\"bottom\"},plotOptions:{},legend:{enabled:!0,align:\"center\",alignColumns:!0,className:\"highcharts-no-tooltip\",events:{},layout:\"horizontal\",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function labelFormatter(){return this.name;},borderColor:\"#999999\",borderRadius:0,navigation:{style:{fontSize:\"0.8em\"},activeColor:\"#0022ff\",inactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",cursor:\"pointer\",fontSize:\"0.8em\",textDecoration:\"none\",textOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},itemHiddenStyle:{color:\"#666666\",textDecoration:\"line-through\"},shadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontSize:\"0.8em\",fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,textAlign:\"center\"}},tooltip:{enabled:!0,animation:{duration:300,easing:function easing(e){return Math.sqrt(1-Math.pow(e-1,2));}},borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %e %b, %H:%M:%S.%L\",second:\"%A, %e %b, %H:%M:%S\",minute:\"%A, %e %b, %H:%M\",hour:\"%A, %e %b, %H:%M\",day:\"%A, %e %b %Y\",week:\"Week from %A, %e %b %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",headerShape:\"callout\",hideDelay:500,padding:8,shape:\"callout\",shared:!1,snap:o?25:10,headerFormat:'<span style=\"font-size: 0.8em\">{point.key}</span><br/>',pointFormat:'<span style=\"color:{point.color}\">●</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:\"#ffffff\",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:\"#333333\",cursor:\"default\",fontSize:\"0.8em\"},useHTML:!1},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"0.6em\"},text:\"Highcharts.com\"}};a.chart.styledMode=!1;var h=new s(a.time);return{defaultOptions:a,defaultTime:h,getOptions:function getOptions(){return a;},setOptions:function setOptions(e){return r(t,\"setOptions\",{options:e}),l(!0,a,e),(e.time||e.global)&&(t.time?t.time.update(l(a.global,a.time,e.global,e.time)):t.time=h),a;}};}),i(t,\"Core/Templating.js\",[t[\"Core/Defaults.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=e.defaultOptions,s=e.defaultTime,n=t.extend,o=t.getNestedProperty,r=t.isArray,l=t.isNumber,a=t.isObject,h=t.pick,d=t.pInt,u={add:function add(e,t){return e+t;},divide:function divide(e,t){return 0!==t?e/t:\"\";},eq:function eq(e,t){return e==t;},each:function each(e){var t=arguments[arguments.length-1];return!!r(e)&&e.map(function(i,s){return c(t.body,n(a(i)?i:{\"@this\":i},{\"@index\":s,\"@first\":0===s,\"@last\":s===e.length-1}));}).join(\"\");},ge:function ge(e,t){return e>=t;},gt:function gt(e,t){return e>t;},\"if\":function _if(e){return!!e;},le:function le(e,t){return e<=t;},lt:function lt(e,t){return e<t;},multiply:function multiply(e,t){return e*t;},ne:function ne(e,t){return e!=t;},subtract:function subtract(e,t){return e-t;},unless:function unless(e){return!e;}};function c(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var t=arguments.length>1?arguments[1]:undefined;var n=arguments.length>2?arguments[2]:undefined;var r=/\\{([\\w\\:\\.\\,;\\-\\/<>%@\"'’= #\\(\\)]+)\\}/g,l=/\\(([\\w\\:\\.\\,;\\-\\/<>%@\"'= ]+)\\)/g,a=[],d=/f$/,m=/\\.(\\d)/,p=i.lang,g=n&&n.time||s,C=n&&n.numberFormatter||f,y=function y(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var i;return\"true\"===e||\"false\"!==e&&((i=Number(e)).toString()===e?i:o(e,t));},b,w,v=0,T;for(;null!==(b=r.exec(e));){var _w;var _i18=l.exec(b[1]);_i18&&(b=_i18,T=!0),w&&w.isBlock||(w={ctx:t,expression:b[1],find:b[0],isBlock:\"#\"===b[1].charAt(0),start:b.index,startInner:b.index+b[0].length,length:b[0].length});var _s13=b[1].split(\" \")[0].replace(\"#\",\"\");u[_s13]&&(w.isBlock&&_s13===w.fn&&v++,w.fn||(w.fn=_s13));var _n13=\"else\"===b[1];if(w.isBlock&&w.fn&&(b[1]===\"/\".concat(w.fn)||_n13)){if(v)!_n13&&v--;else{var _t24=w.startInner,_i19=e.substr(_t24,b.index-_t24);void 0===w.body?(w.body=_i19,w.startInner=b.index+b[0].length):w.elseBody=_i19,w.find+=_i19+b[0],_n13||(a.push(w),w=void 0);}}else w.isBlock||a.push(w);if(_i18&&!((_w=w)!==null&&_w!==void 0&&_w.isBlock))break;}return a.forEach(function(i){var s,o;var r=i.body,l=i.elseBody,a=i.expression,f=i.fn;if(f){var _e33=[i],_h2=a.split(\" \");for(o=u[f].length;o--;)_e33.unshift(y(_h2[o+1]));s=u[f].apply(t,_e33),i.isBlock&&\"boolean\"==typeof s&&(s=c(s?r:l,t,n));}else{var _e34=a.split(\":\");if(s=y(_e34.shift()||\"\"),_e34.length&&\"number\"==typeof s){var _t25=_e34.join(\":\");if(d.test(_t25)){var _e35=parseInt((_t25.match(m)||[\"\",\"-1\"])[1],10);null!==s&&(s=C(s,_e35,p.decimalPoint,_t25.indexOf(\",\")>-1?p.thousandsSep:\"\"));}else s=g.dateFormat(_t25,s);}}e=e.replace(i.find,h(s,\"\"));}),T?c(e,t,n):e;}function f(e,t,s,n){var o,r;e=+e||0,t=+t;var a=i.lang,u=(e.toString().split(\".\")[1]||\"\").split(\"e\")[0].length,c=e.toString().split(\"e\"),f=t;-1===t?t=Math.min(u,20):l(t)?t&&c[1]&&c[1]<0&&((r=t+ +c[1])>=0?(c[0]=(+c[0]).toExponential(r).split(\"e\")[0],t=r):(c[0]=c[0].split(\".\")[0]||0,e=t<20?(c[0]*Math.pow(10,c[1])).toFixed(t):0,c[1]=0)):t=2;var m=(Math.abs(c[1]?c[0]:e)+Math.pow(10,-Math.max(t,u)-1)).toFixed(t),p=String(d(m)),g=p.length>3?p.length%3:0;return s=h(s,a.decimalPoint),n=h(n,a.thousandsSep),o=(e<0?\"-\":\"\")+(g?p.substr(0,g)+n:\"\"),0>+c[1]&&!f?o=\"0\":o+=p.substr(g).replace(/(\\d{3})(?=\\d)/g,\"$1\"+n),t?o+=s+m.slice(-t):0==+o&&(o=\"0\"),c[1]&&0!=+o&&(o+=\"e\"+c[1]),o;}return{dateFormat:function dateFormat(e,t,i){return s.dateFormat(e,t,i);},format:c,helpers:u,numberFormat:f};}),i(t,\"DataGrid/DataGridDefaults.js\",[],function(){return{cellHeight:49,columnHeaders:{enabled:!0},columns:{},defaultHeight:400,editable:!0,resizableColumns:!0};}),i(t,\"DataGrid/DataGrid.js\",[t[\"Core/Renderer/HTML/AST.js\"],t[\"Data/DataTable.js\"],t[\"DataGrid/DataGridUtils.js\"],t[\"DataGrid/Globals.js\"],t[\"Core/Templating.js\"],t[\"DataGrid/DataGridDefaults.js\"],t[\"Core/Utilities.js\"]],function(t,i,s,n,o,r,l){var a=s.emptyHTMLElement,h=s.makeDiv,d=n.isSafari,u=n.win,c=l.addEvent,f=l.clamp,m=l.defined,p=l.fireEvent,g=l.isNumber,C=l.merge,y=l.pick;var b=/*#__PURE__*/function(){function b(e,t){var _this2=this;_classCallCheck(this,b);if(this.columnNames=[],this.prevTop=-1,this.scrollEndRowCount=0,this.scrollEndTop=0,this.bottom=!1,this.overflowHeaderWidths=[],\"string\"==typeof e){var _t26=u.document.getElementById(e);_t26?this.container=_t26:this.container=h(n.classNames.gridContainer,e);}else this.container=e;this.gridContainer=h(n.classNames.gridContainer),this.outerContainer=h(n.classNames.outerContainer),this.scrollContainer=h(n.classNames.scrollContainer),this.innerContainer=h(n.classNames.innerContainer),this.outerContainer.appendChild(this.scrollContainer),this.gridContainer.appendChild(this.outerContainer),this.container.appendChild(this.gridContainer),this.options=C(b.defaultOptions,t),this.gridContainer.style.height=this.getDataGridSize()+\"px\",this.gridContainer.role=\"figure\",this.dataTable=this.initDataTable(),this.rowElements=[],this.draggedResizeHandle=null,this.draggedColumnRightIx=null,this.columnNames=this.getColumnsToDisplay(),this.render(),(this.containerResizeObserver=new ResizeObserver(function(){_this2.updateGridElements();})).observe(this.container);}_createClass(b,[{key:\"update\",value:function update(e){this.options=C(this.options,e),this.options.dataTable!==this.dataTable&&(this.dataTable=this.initDataTable()),this.columnNames=this.getColumnsToDisplay(),this.scrollContainer.removeChild(this.innerContainer),this.render();}},{key:\"resizeColumn\",value:function resizeColumn(e,t){var i=this.columnHeadersContainer,s=\"string\"==typeof t?this.columnNames.indexOf(t):t,n=\"\".concat(e);if(g(s)){if(-1!==s){if(i){var _e36=i.children[s];_e36&&(_e36.style.flex=n);}for(var _e37=0;_e37<this.rowElements.length;_e37++){var _t27=this.rowElements[_e37].children[s];_t27&&(_t27.style.flex=n);}}}else{if(i)for(var _e38=0;_e38<i.children.length;_e38++)i.children[_e38].style.flex=n;for(var _e39=0;_e39<this.rowElements.length;_e39++){var _t28=this.rowElements[_e39];for(var _e40=0;_e40<_t28.children.length;_e40++)_t28.children[_e40].style.flex=n;}}this.renderColumnDragHandles(),this.emit({type:\"afterResizeColumn\",width:e,index:s,name:g(s)?this.columnNames[s]:void 0});}},{key:\"emit\",value:function emit(e){p(this,e.type,e);}},{key:\"toggleRowHighlight\",value:function toggleRowHighlight(e){this.hoveredRow&&this.hoveredRow.classList.contains(\"hovered\")&&this.hoveredRow.classList.remove(\"hovered\"),e&&(e.classList.contains(\"hovered\")?e.classList.remove(\"hovered\"):e.classList.add(\"hovered\"));}},{key:\"on\",value:function on(e,t){return c(this,e,t);}},{key:\"scrollToRow\",value:function scrollToRow(e){this.outerContainer.scrollTop=e*this.options.cellHeight;}},{key:\"getColumnsToDisplay\",value:function getColumnsToDisplay(){var e=this.options.columns,t=this.dataTable.modified.getColumnNames(),i=[];for(var _s14=0;_s14<t.length;_s14++){var _n14=t[_s14],_o26=e[_n14];_o26&&m(_o26.show)?e[_n14].show&&i.push(_n14):i.push(_n14);}return i;}},{key:\"isColumnEditable\",value:function isColumnEditable(e){return y((this.options.columns[e]||{}).editable,this.options.editable);}},{key:\"initDataTable\",value:function initDataTable(){return this.options.dataTable?this.options.dataTable:new i();}},{key:\"render\",value:function render(){var e=this.options;this.prevTop=-1,this.bottom=!1,a(this.innerContainer),e.columnHeaders.enabled?this.renderColumnHeaders():this.outerContainer.style.top=\"0\",this.renderInitialRows(),this.addEvents(),this.updateScrollingLength(),this.updateVisibleCells(),e.columnHeaders.enabled&&e.resizableColumns&&this.renderColumnDragHandles(),this.updateGridElements(),this.gridContainer.ariaLabel=\"Grid with \".concat(this.dataTable.getColumnNames().length,\" columns and \").concat(this.dataTable.getRowCount(),\" rows.\");}},{key:\"addEvents\",value:function addEvents(){var _this3=this;this.outerContainer.addEventListener(\"scroll\",function(e){_this3.onScroll(e);}),document.addEventListener(\"click\",function(e){_this3.onDocumentClick(e);}),this.container.addEventListener(\"mouseover\",function(e){_this3.handleMouseOver(e);}),this.container.addEventListener(\"click\",function(e){_this3.handleRowClick(e);});}},{key:\"updateVisibleCells\",value:function updateVisibleCells(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!1;var t=this.outerContainer.scrollTop;d&&(t=f(t,0,this.outerContainer.scrollHeight-this.outerContainer.clientHeight));var i=Math.floor(t/this.options.cellHeight);if(i===this.prevTop&&!e)return;this.prevTop=i;var s=this.columnNames,n=this.dataTable.modified,o=n.modified.getRowCount();for(var _e41=0;_e41<this.rowElements.length&&i<o;_e41++,i++){var _n$getOriginalRowInde;var _t29=this.rowElements[_e41];_t29.dataset.rowIndex=(_n$getOriginalRowInde=n.getOriginalRowIndex(i))===null||_n$getOriginalRowInde===void 0?void 0:_n$getOriginalRowInde.toString();var _o27=_t29.childNodes;for(var _e42=0,_n15=s.length;_e42<_n15;_e42++){var _n16=_o27[_e42],_r7=s[_e42],_l4=this.dataTable.modified.getCell(s[_e42],i),_a4=this.formatCell(_l4,_r7);this.options.useHTML?this.renderHTMLCellContent(_a4,_n16):_n16.textContent=_a4,_n16.dataset.originalData=\"\"+_l4,_n16.dataset.columnName=s[_e42],_n16.dataset.dataType=_typeof(_l4),0===_e42&&(_t29.dataset.rowXIndex=String(g(_l4)?_l4:i));}}this.prevTop+this.scrollEndRowCount===o?!this.bottom&&this.scrollEndTop&&(this.bottom=!0,this.innerContainer.scrollTop=this.scrollEndTop):this.bottom&&(this.bottom=!1,this.innerContainer.scrollTop=0);}},{key:\"onScroll\",value:function onScroll(t){t.preventDefault(),e.requestAnimationFrame(this.updateVisibleCells.bind(this,!1));}},{key:\"onCellClick\",value:function onCellClick(e,t){if(this.isColumnEditable(t)){var _t30=e.querySelector(\"input\"),_i20=e.getAttribute(\"data-original-data\");if(!_t30){this.removeCellInputElement();var _s15=e.clientHeight;e.textContent=\"\",(_t30=this.cellInputEl=document.createElement(\"input\")).style.height=_s15+\"px\",_t30.className=n.classNames.cellInput,e.appendChild(_t30),_t30.focus(),_t30.value=_i20||\"\";}this.emit({type:\"cellClick\",input:_t30});}}},{key:\"onDocumentClick\",value:function onDocumentClick(e){if(this.cellInputEl&&e.target){var _t31=this.cellInputEl.parentNode;_t31&&_t31.contains(e.target)||this.removeCellInputElement();}}},{key:\"handleMouseOver\",value:function handleMouseOver(e){var t=e.target;if(t&&t.classList.contains(n.classNames.cell)){var _t$dataset;var _e43=t.parentElement;this.toggleRowHighlight(_e43),this.hoveredRow=_e43,p(this.container,\"dataGridHover\",{row:_e43,columnName:(_t$dataset=t.dataset)===null||_t$dataset===void 0?void 0:_t$dataset.columnName});}else this.hoveredRow&&(this.toggleRowHighlight(),this.hoveredRow=void 0);}},{key:\"handleRowClick\",value:function handleRowClick(e){var _this$options$events,_this$options$events$;var t=e.target,i=(_this$options$events=this.options.events)===null||_this$options$events===void 0?void 0:(_this$options$events$=_this$options$events.row)===null||_this$options$events$===void 0?void 0:_this$options$events$.click;i&&(t===null||t===void 0?void 0:t.classList.contains(n.classNames.cell))&&i.call(t.parentElement,e);}},{key:\"removeCellInputElement\",value:function removeCellInputElement(){var e=this.cellInputEl;if(e){var _t32=e.parentNode;if(_t32){var _i21=_t32.getAttribute(\"data-data-type\"),_s16=_t32.getAttribute(\"data-column-name\"),_n17=e.value;\"number\"===_i21&&(_n17=parseFloat(_n17)),_t32.textContent=this.formatCell(_n17,_s16||\"\");}e.remove(),delete this.cellInputEl;}}},{key:\"updateScrollingLength\",value:function updateScrollingLength(){var e=this.dataTable.modified.getRowCount()-1,t=0,i=e-this.getNumRowsToDraw(),s=this.outerContainer.clientHeight;this.innerContainer.style.height=s+\"px\",this.scrollContainer.appendChild(this.innerContainer);for(var _n18=0;e>i;e--,_n18++)if((t+=this.rowElements[_n18].offsetHeight)>s){e--;break;}var n=e-i;this.scrollEndRowCount=this.rowElements.length-n,this.scrollEndTop=t-s;var o=(this.dataTable.modified.getRowCount()+n)*this.options.cellHeight;this.scrollContainer.style.height=o+\"px\";}},{key:\"getNumRowsToDraw\",value:function getNumRowsToDraw(){return Math.min(this.dataTable.modified.getRowCount(),Math.ceil((this.outerContainer.offsetHeight||this.options.defaultHeight)/this.options.cellHeight));}},{key:\"getDataGridSize\",value:function getDataGridSize(){var e=this.options,_this$container$getBo=this.container.getBoundingClientRect(),t=_this$container$getBo.height;return t>2?t:e.defaultHeight;}},{key:\"renderCell\",value:function renderCell(e,t){var _this4=this;var i=n.classNames.cell;this.isColumnEditable(t)||(i+=\" \".concat(i,\"-readonly\"));var s=h(i);s.style.minHeight=this.options.cellHeight+\"px\",s.addEventListener(\"click\",function(){return _this4.onCellClick(s,t);}),e.appendChild(s);}},{key:\"renderRow\",value:function renderRow(){var e=h(n.classNames.row);for(var _t33=0;_t33<this.columnNames.length;_t33++)this.renderCell(e,this.columnNames[_t33]);this.innerContainer.appendChild(e),this.rowElements.push(e);}},{key:\"formatHeaderCell\",value:function formatHeaderCell(e){var t=this.options.columns[e],i=t&&t.headerFormat;return i?o.format(i,{text:e}):e;}},{key:\"formatCell\",value:function formatCell(e,t){var i=this.options.columns[t],s=i&&i.cellFormat,n=i&&i.cellFormatter,r=m(e)?e:\"\";return(s&&(\"number\"==typeof e&&s.indexOf(\"value\")>-1?r=o.format(s,{value:e}):\"string\"==typeof e&&s.indexOf(\"text\")>-1&&(r=o.format(s,{text:e}))),n)?n.call({value:e}):r.toString();}},{key:\"renderHTMLCellContent\",value:function renderHTMLCellContent(e,i){var s=new t(e);i.innerHTML=\"\",s.addToDOM(i);}},{key:\"renderColumnHeader\",value:function renderColumnHeader(e,t){var i=n.classNames.columnHeader;this.isColumnEditable(t)||(i+=\" \".concat(i,\"-readonly\"));var s=h(i);s.style.minHeight=this.options.cellHeight+\"px\",s.style.maxHeight=2*this.options.cellHeight+\"px\",s.textContent=this.formatHeaderCell(t),e.appendChild(s);}},{key:\"renderColumnHeaders\",value:function renderColumnHeaders(){var e=this.columnNames,t=this.columnHeadersContainer=this.columnHeadersContainer||h(\"\".concat(n.classNamePrefix,\"column-headers\"));a(t),e.forEach(this.renderColumnHeader.bind(this,t)),this.headerContainer||(this.headerContainer=h(\"\".concat(n.classNamePrefix,\"header-container\")),this.headerContainer.appendChild(t)),this.gridContainer.insertBefore(this.headerContainer,this.outerContainer),this.updateColumnHeaders();}},{key:\"updateGridElements\",value:function updateGridElements(){this.updateColumnHeaders(),this.redrawRowElements(),this.updateDragHandlesPosition();}},{key:\"updateColumnHeaders\",value:function updateColumnHeaders(){var e=this.columnHeadersContainer;if(e){for(var _t34=0;_t34<this.columnNames.length;_t34++){var _i22=this.columnNames[_t34],_s17=e.children[_t34],_n19=this.overflowHeaderWidths[_t34];_s17.scrollWidth>_s17.clientWidth?(this.overflowHeaderWidths[_t34]=_s17.scrollWidth,_s17.textContent=this.formatHeaderCell(_i22).split(\" \").map(function(e){return e.length<4?e:e.slice(0,2)+\"...\";}).join(\" \")):g(_n19)&&_n19<=_s17.clientWidth&&(this.overflowHeaderWidths[_t34]=null,_s17.textContent=this.formatHeaderCell(_i22));}this.outerContainer.style.top=e.clientHeight+\"px\",e.lastChild&&(e.lastChild.style.marginRight=this.outerContainer.offsetWidth-this.outerContainer.clientWidth+\"px\");}}},{key:\"redrawRowElements\",value:function redrawRowElements(){if(!this.rowElements.length)return;var e=[],t=this.rowElements[0].children;for(var _i23=0;_i23<t.length;_i23++)e.push(t[_i23].style.flex);a(this.innerContainer),this.renderInitialRows(),this.updateScrollingLength(),this.updateVisibleCells(!0);for(var _t35=0;_t35<this.rowElements.length;_t35++){var _i24=this.rowElements[_t35];for(var _t36=0;_t36<_i24.childElementCount;_t36++)_i24.children[_t36].style.flex=e[_t36];}}},{key:\"updateDragHandlesPosition\",value:function updateDragHandlesPosition(){var e=this.columnHeadersContainer,t=this.columnDragHandlesContainer;if(t&&e)for(var _i25=0;_i25<t.childElementCount-1;_i25++){var _s18=t.children[_i25],_n20=e.children[_i25+1];_s18.style.height=e.clientHeight+\"px\",_s18.style.left=_n20.offsetLeft-2+\"px\";}}},{key:\"renderInitialRows\",value:function renderInitialRows(){this.rowElements=[];var e=this.getNumRowsToDraw();for(var _t37=0;_t37<e;_t37++)this.renderRow();}},{key:\"renderColumnDragHandles\",value:function renderColumnDragHandles(){var _this5=this;if(!this.columnHeadersContainer)return;var e=this.columnDragHandlesContainer=this.columnDragHandlesContainer||h(\"\".concat(n.classNamePrefix,\"col-resize-container\")),t=this.columnHeadersContainer.children,i=this.options.cellHeight;a(e);var _loop=function _loop(){var o=t[_s19],r=h(\"\".concat(n.classNamePrefix,\"col-resize-handle\"));r.style.height=i+\"px\",r.style.left=o.offsetLeft-2+\"px\",r.addEventListener(\"mouseover\",function(){_this5.draggedResizeHandle||(r.style.opacity=\"1\");}),r.addEventListener(\"mouseleave\",function(){_this5.draggedResizeHandle||(r.style.opacity=\"0\");}),r.addEventListener(\"mousedown\",_this5.onHandleMouseDown.bind(_this5,r,_s19)),e.appendChild(r);};for(var _s19=1;_s19<t.length;++_s19){_loop();}this.renderColumnResizeCrosshair(e),document.addEventListener(\"mouseup\",function(e){_this5.draggedResizeHandle&&_this5.stopColumnResize(_this5.draggedResizeHandle,e);}),document.addEventListener(\"mousemove\",function(e){_this5.draggedResizeHandle&&_this5.updateColumnResizeDrag(e);}),this.headerContainer&&this.headerContainer.appendChild(e);}},{key:\"renderColumnResizeCrosshair\",value:function renderColumnResizeCrosshair(e){var t=this.columnResizeCrosshair=this.columnResizeCrosshair||h(\"\".concat(n.classNamePrefix,\"col-resize-crosshair\")),i=this.options.cellHeight;t.style.top=i+\"px\",t.style.height=this.innerContainer.offsetHeight+\"px\",e.appendChild(t);}},{key:\"onHandleMouseDown\",value:function onHandleMouseDown(e,t,i){if(this.draggedResizeHandle)return;i.preventDefault(),this.draggedResizeHandle=e,this.draggedColumnRightIx=t,this.dragResizeStart=i.pageX;var s=this.columnResizeCrosshair;s&&(s.style.left=e.offsetLeft+e.offsetWidth/2-s.offsetWidth/2+\"px\",s.style.opacity=\"1\");}},{key:\"updateColumnResizeDrag\",value:function updateColumnResizeDrag(e){var t=this.draggedResizeHandle,i=this.columnResizeCrosshair,s=this.draggedColumnRightIx,n=this.columnHeadersContainer;if(!t||!i||null===s||!n||!this.dragResizeStart)return;var o=n.children[s],r=e.pageX-this.dragResizeStart,l=o.offsetLeft+r;t.style.left=l-t.offsetWidth/2+\"px\",i.style.left=l-i.offsetWidth/2+\"px\";}},{key:\"stopColumnResize\",value:function stopColumnResize(e,t){var i=this.columnResizeCrosshair,s=this.draggedColumnRightIx,n=this.columnHeadersContainer;if(!i||!n||!this.dragResizeStart||null===s)return;e.style.opacity=\"0\",i.style.opacity=\"0\";var o=n.children[s-1],r=n.children[s],l=t.pageX-this.dragResizeStart,a=o.offsetWidth+l,h=r.offsetWidth-l,d=a/o.offsetWidth,u=h/r.offsetWidth,c=(o.style.flex?parseFloat(o.style.flex):1)*d,f=(r.style.flex?parseFloat(r.style.flex):1)*u;this.resizeColumn(c,s-1),this.resizeColumn(f,s),this.draggedResizeHandle=null,this.draggedColumnRightIx=null,this.updateGridElements();}},{key:\"setSize\",value:function setSize(e,t){e&&(this.innerContainer.style.width=e+\"px\"),t&&(this.gridContainer.style.height=this.getDataGridSize()+\"px\",this.outerContainer.style.height=t-(this.options.cellHeight+this.getMarginHeight(t))+\"px\"),this.render();}},{key:\"getMarginHeight\",value:function getMarginHeight(e){return e-this.gridContainer.getBoundingClientRect().height;}}],[{key:\"dataGrid\",value:function dataGrid(e,t){return new b(e,t);}}]);return b;}();return b.defaultOptions=r,b;}),i(t,\"Data/DataPoolDefaults.js\",[],function(){return{connectors:[]};}),i(t,\"Data/DataPool.js\",[t[\"Data/Connectors/DataConnector.js\"],t[\"Data/DataPoolDefaults.js\"],t[\"Core/Utilities.js\"]],function(e,t,i){var s=/*#__PURE__*/function(){function s(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:t;_classCallCheck(this,s);e.connectors=e.connectors||[],this.connectors={},this.options=e,this.waiting={};}_createClass(s,[{key:\"emit\",value:function emit(e){i.fireEvent(this,e.type,e);}},{key:\"getConnector\",value:function getConnector(e){var _this6=this;var t=this.connectors[e];if(t)return Promise.resolve(t);var i=this.waiting[e];if(!i){i=this.waiting[e]=[];var _t38=this.getConnectorOptions(e);if(!_t38)throw Error(\"Connector '\".concat(e,\"' not found.\"));this.loadConnector(_t38).then(function(t){delete _this6.waiting[e];for(var _e44=0,_s26=i.length;_e44<_s26;++_e44)i[_e44][0](t);})[\"catch\"](function(t){delete _this6.waiting[e];for(var _e45=0,_s27=i.length;_e45<_s27;++_e45)i[_e45][1](t);});}return new Promise(function(e,t){i.push([e,t]);});}},{key:\"getConnectorIds\",value:function getConnectorIds(){var e=this.options.connectors,t=[];for(var _i26=0,_s28=e.length;_i26<_s28;++_i26)t.push(e[_i26].id);return t;}},{key:\"getConnectorOptions\",value:function getConnectorOptions(e){var t=this.options.connectors;for(var _i27=0,_s29=t.length;_i27<_s29;++_i27)if(t[_i27].id===e)return t[_i27];}},{key:\"getConnectorTable\",value:function getConnectorTable(e){return this.getConnector(e).then(function(e){return e.table;});}},{key:\"isNewConnector\",value:function isNewConnector(e){return!this.connectors[e];}},{key:\"loadConnector\",value:function loadConnector(t){var _this7=this;return new Promise(function(i,_s24){_this7.emit({type:\"load\",options:t});var n=e.types[t.type];if(!n)throw Error(\"Connector type not found. (\".concat(t.type,\")\"));new n(t.options).load().then(function(e){_this7.connectors[t.id]=e,_this7.emit({type:\"afterLoad\",options:t}),i(e);})[\"catch\"](_s24);});}},{key:\"on\",value:function on(e,t){return i.addEvent(this,e,t);}},{key:\"setConnectorOptions\",value:function setConnectorOptions(e){var t=this.options.connectors,i=this.connectors;this.emit({type:\"setConnectorOptions\",options:e});for(var _i28=0,_s30=t.length;_i28<_s30;++_i28)if(t[_i28].id===e.id){t.splice(_i28,1);break;}i[e.id]&&(i[e.id].stopPolling(),delete i[e.id]),t.push(e),this.emit({type:\"afterSetConnectorOptions\",options:e});}}]);return s;}();return s.version=\"1.0.0\",s;}),i(t,\"Data/Converters/CSVConverter.js\",[t[\"Data/Converters/DataConverter.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.merge;var s=/*#__PURE__*/function(_e46){_inherits(s,_e46);var _super=_createSuper(s);function s(e){var _this8;_classCallCheck(this,s);var t=i(s.defaultOptions,e);_this8=_super.call(this,t),_this8.columns=[],_this8.headers=[],_this8.dataTypes=[],_this8.options=t;return _this8;}_createClass(s,[{key:\"export\",value:function _export(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options;var i=t.useLocalDecimalPoint,_s31=t.lineDelimiter,n=!1!==this.options.firstRowAsNames,o=t.decimalPoint,r=t.itemDelimiter;o||(o=\",\"!==r&&i?1.1.toLocaleString()[1]:\".\"),r||(r=\",\"===o?\";\":\",\");var l=e.getSortedColumns(t.usePresentationOrder),a=Object.keys(l),h=[],d=a.length,u=[];n&&h.push(a.map(function(e){return\"\\\"\".concat(e,\"\\\"\");}).join(r));for(var _t39=0;_t39<d;_t39++){var _i29=void 0;var _s32=a[_t39],_n21=l[_s32],_c2=_n21.length,f=e.whatIs(_s32);f&&(_i29=f.dataType);for(var _e47=0;_e47<_c2;_e47++){var _s33=_n21[_e47];if(u[_e47]||(u[_e47]=[]),\"string\"===_i29?_s33='\"'+_s33+'\"':\"number\"==typeof _s33?_s33=String(_s33).replace(\".\",o):\"string\"==typeof _s33&&(_s33=\"\\\"\".concat(_s33,\"\\\"\")),u[_e47][_t39]=_s33,_t39===d-1){var _i30=_t39;for(;u[_e47].length>2&&void 0===u[_e47][_i30];)u[_e47].pop(),_i30--;h.push(u[_e47].join(r));}}}return h.join(_s31);}},{key:\"parse\",value:function parse(e,t){var _s34=this.dataTypes,n=i(this.options,e),o=n.beforeParse,r=n.lineDelimiter,l=n.firstRowAsNames,a=n.itemDelimiter,h,d=0,u=n.csv,c=n.startRow,f=n.endRow,m;if(this.columns=[],this.emit({type:\"parse\",columns:this.columns,detail:t,headers:this.headers}),u&&o&&(u=o(u)),u){if(h=u.replace(/\\r\\n|\\r/g,\"\\n\").split(r||\"\\n\"),(!c||c<0)&&(c=0),(!f||f>=h.length)&&(f=h.length-1),a||(this.guessedItemDelimiter=this.guessDelimiter(h)),l){var _e48=h[0].split(a||this.guessedItemDelimiter||\",\");for(var _t40=0;_t40<_e48.length;_t40++)_e48[_t40]=_e48[_t40].trim().replace(/^[\"']|[\"']$/g,\"\");this.headers=_e48,c++;}var _e49=0;for(d=c;d<=f;d++)\"#\"===h[d][0]?_e49++:this.parseCSVRow(h[d],d-c-_e49);_s34.length&&_s34[0].length&&\"date\"===_s34[0][1]&&!this.options.dateFormat&&this.deduceDateFormat(this.columns[0],null,!0);for(var _e50=0,_t41=this.columns.length;_e50<_t41;++_e50){m=this.columns[_e50];for(var _t42=0,_i31=m.length;_t42<_i31;++_t42)if(m[_t42]&&\"string\"==typeof m[_t42]){var _i32=this.asGuessedType(m[_t42]);_i32 instanceof Date&&(_i32=_i32.getTime()),this.columns[_e50][_t42]=_i32;}}}this.emit({type:\"afterParse\",columns:this.columns,detail:t,headers:this.headers});}},{key:\"parseCSVRow\",value:function parseCSVRow(e,t){var i=this,_s35=i.columns||[],n=i.dataTypes,_i$options=i.options,o=_i$options.startColumn,r=_i$options.endColumn,l=i.options.itemDelimiter||i.guessedItemDelimiter,a=i.options.decimalPoint;a&&a!==l||(a=i.guessedDecimalPoint||\".\");var h=0,d=\"\",u=\"\",c=0,f=0,m=function m(t){d=e[t];},p=function p(e){n.length<f+1&&n.push([e]),n[f][n[f].length-1]!==e&&n[f].push(e);},g=function g(){if(o>c||c>r){++c,u=\"\";return;}if(\"string\"==typeof u?!isNaN(parseFloat(u))&&isFinite(u)?(u=parseFloat(u),p(\"number\")):isNaN(Date.parse(u))?p(\"string\"):(u=u.replace(/\\//g,\"-\"),p(\"date\")):p(\"number\"),_s35.length<f+1&&_s35.push([]),\"number\"!=typeof u&&\"number\"!==i.guessType(u)&&a){var _e51=u;u=u.replace(a,\".\"),\"number\"!==i.guessType(u)&&(u=_e51);}_s35[f][t]=u,u=\"\",++f,++c;};if(e.trim().length&&\"#\"!==e.trim()[0]){for(;h<e.length;h++){if(m(h),\"#\"===d&&!/^#[A-F\\d]{3,3}|[A-F\\d]{6,6}/i.test(e.substring(h))){g();return;}if('\"'===d)for(m(++h);h<e.length&&'\"'!==d;)u+=d,m(++h);else d===l?g():u+=d;}g();}}},{key:\"guessDelimiter\",value:function guessDelimiter(e){var t=0,i=0,_s36,n={\",\":0,\";\":0,\"\t\":0},o=e.length;for(var _s38=0;_s38<o;_s38++){var _o28=!1,r=void 0,l=void 0,a=void 0,h=\"\";if(_s38>13)break;var d=e[_s38];for(var _e52=0;_e52<d.length&&(r=d[_e52],l=d[_e52+1],a=d[_e52-1],\"#\"!==r);_e52++){if('\"'===r){if(_o28){if('\"'!==a&&'\"'!==l){for(;\" \"===l&&_e52<d.length;)l=d[++_e52];void 0!==n[l]&&n[l]++,_o28=!1;}}else _o28=!0;}else void 0!==n[r]?(isNaN(Date.parse(h=h.trim()))?(isNaN(Number(h))||!isFinite(Number(h)))&&n[r]++:n[r]++,h=\"\"):h+=r;\",\"===r&&i++,\".\"===r&&t++;}}return n[\";\"]>n[\",\"]?_s36=\";\":(n[\",\"],n[\";\"],_s36=\",\"),t>i?this.guessedDecimalPoint=\".\":this.guessedDecimalPoint=\",\",_s36;}},{key:\"getTable\",value:function getTable(){return e.getTableFromColumns(this.columns,this.headers);}}]);return s;}(e);return s.defaultOptions=_objectSpread(_objectSpread({},e.defaultOptions),{},{lineDelimiter:\"\\n\"}),s;}),i(t,\"Data/Connectors/CSVConnector.js\",[t[\"Data/Converters/CSVConverter.js\"],t[\"Data/Connectors/DataConnector.js\"],t[\"Core/Utilities.js\"]],function(e,t,i){var s=i.merge;var n=/*#__PURE__*/function(_t43){_inherits(n,_t43);var _super2=_createSuper(n);function n(t){var _this9;_classCallCheck(this,n);var i=s(n.defaultOptions,t);_this9=_super2.call(this,i),_this9.converter=new e(i),_this9.options=i,i.enablePolling&&_this9.startPolling(1e3*Math.max(i.dataRefreshRate||0,1));return _this9;}_createClass(n,[{key:\"load\",value:function load(e){var t=this,i=t.converter,s=t.table,_t$options=t.options,_n22=_t$options.csv,o=_t$options.csvURL,r=_t$options.dataModifier;return t.emit({type:\"load\",csv:_n22,detail:e,table:s}),Promise.resolve(o?fetch(o).then(function(e){return e.text();}):_n22||\"\").then(function(e){return e&&(s.deleteColumns(),i.parse({csv:e}),s.setColumns(i.getTable().getColumns())),t.setModifierOptions(r).then(function(){return e;});}).then(function(i){return t.emit({type:\"afterLoad\",csv:i,detail:e,table:s}),t;})[\"catch\"](function(i){throw t.emit({type:\"loadError\",detail:e,error:i,table:s}),i;});}}]);return n;}(t);return n.defaultOptions={csv:\"\",csvURL:\"\",enablePolling:!1,dataRefreshRate:1,firstRowAsNames:!0},t.registerType(\"CSV\",n),n;}),i(t,\"Data/Converters/GoogleSheetsConverter.js\",[t[\"Data/Converters/DataConverter.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.merge,s=t.uniqueKey;var n=/*#__PURE__*/function(_e53){_inherits(n,_e53);var _super3=_createSuper(n);function n(e){var _this10;_classCallCheck(this,n);var t=i(n.defaultOptions,e);_this10=_super3.call(this,t),_this10.columns=[],_this10.header=[],_this10.options=t;return _this10;}_createClass(n,[{key:\"parse\",value:function parse(e,t){var _o$json;var _n23;var o=i(this.options,e),r=(((_o$json=o.json)===null||_o$json===void 0?void 0:_o$json.values)||[]).map(function(e){return e.slice();});if(0===r.length)return!1;this.header=[],this.columns=[],this.emit({type:\"parse\",columns:this.columns,detail:t,headers:this.header});var l=o.beforeParse,a=o.json;l&&a&&(r=l(a.values)),this.columns=r;for(var _e54=0,_t44=r.length;_e54<_t44;_e54++){_n23=r[_e54],this.header[_e54]=o.firstRowAsNames?\"\".concat(_n23.shift()):s();for(var _t45=0,_i33=_n23.length;_t45<_i33;++_t45)if(_n23[_t45]&&\"string\"==typeof _n23[_t45]){var _i34=this.asGuessedType(_n23[_t45]);_i34 instanceof Date&&(_i34=_i34.getTime()),this.columns[_e54][_t45]=_i34;}}this.emit({type:\"afterParse\",columns:this.columns,detail:t,headers:this.header});}},{key:\"getTable\",value:function getTable(){return e.getTableFromColumns(this.columns,this.header);}}]);return n;}(e);return n.defaultOptions=_objectSpread({},e.defaultOptions),n;}),i(t,\"Data/Connectors/GoogleSheetsConnector.js\",[t[\"Data/Connectors/DataConnector.js\"],t[\"Data/Converters/GoogleSheetsConverter.js\"],t[\"Core/Utilities.js\"]],function(e,t,i){var s=i.merge,n=i.pick;var o=/*#__PURE__*/function(_e55){_inherits(o,_e55);var _super4=_createSuper(o);function o(e){var _this11;_classCallCheck(this,o);var i=s(o.defaultOptions,e);_this11=_super4.call(this,i),_this11.converter=new t(i),_this11.options=i;return _this11;}_createClass(o,[{key:\"load\",value:function load(e){var t=this,i=t.converter,s=t.table,_t$options2=t.options,n=_t$options2.dataModifier,r=_t$options2.dataRefreshRate,l=_t$options2.enablePolling,a=_t$options2.firstRowAsNames,h=_t$options2.googleAPIKey,d=_t$options2.googleSpreadsheetKey,u=o.buildFetchURL(h,d,t.options);if(t.emit({type:\"load\",detail:e,table:s,url:u}),!URL.canParse(u))throw Error(\"Invalid URL: \"+u);return fetch(u).then(function(e){return e.json();}).then(function(e){if(\"object\"==_typeof(e)&&e&&\"object\"==_typeof(e.error)&&e.error&&\"number\"==typeof e.error.code&&\"string\"==typeof e.error.message&&\"string\"==typeof e.error.status)throw Error(e.error.message);return i.parse({firstRowAsNames:a,json:e}),s.deleteColumns(),s.setColumns(i.getTable().getColumns()),t.setModifierOptions(n);}).then(function(){return t.emit({type:\"afterLoad\",detail:e,table:s,url:u}),l&&setTimeout(function(){return t.load();},1e3*Math.max(r||0,1)),t;})[\"catch\"](function(i){throw t.emit({type:\"loadError\",detail:e,error:i,table:s}),i;});}}]);return o;}(e);return o.defaultOptions={googleAPIKey:\"\",googleSpreadsheetKey:\"\",enablePolling:!1,dataRefreshRate:2,firstRowAsNames:!0},function(e){var t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";function i(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var s=e.endColumn,o=e.endRow,r=e.googleSpreadsheetRange,l=e.startColumn,a=e.startRow;return r||(t[l||0]||\"A\")+(Math.max(a||0,0)+1)+\":\"+(t[n(s,25)]||\"Z\")+(o?Math.max(o,0):\"Z\");}e.buildFetchURL=function(e,t){var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var n=new URL(\"https://sheets.googleapis.com/v4/spreadsheets/\".concat(t,\"/values/\")),o=s.onlyColumnNames?\"A1:Z1\":i(s);n.pathname+=o;var r=n.searchParams;return r.set(\"alt\",\"json\"),s.onlyColumnNames||(r.set(\"dateTimeRenderOption\",\"FORMATTED_STRING\"),r.set(\"majorDimension\",\"COLUMNS\"),r.set(\"valueRenderOption\",\"UNFORMATTED_VALUE\")),r.set(\"prettyPrint\",\"false\"),r.set(\"key\",e),n.href;},e.buildQueryRange=i;}(o||(o={})),e.registerType(\"GoogleSheets\",o),o;}),i(t,\"Data/Converters/HTMLTableConverter.js\",[t[\"Data/Converters/DataConverter.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.merge;var s=/*#__PURE__*/function(_e56){_inherits(s,_e56);var _super5=_createSuper(s);function s(e){var _this12;_classCallCheck(this,s);var t=i(s.defaultOptions,e);_this12=_super5.call(this,t),_this12.columns=[],_this12.headers=[],_this12.options=t,t.tableElement&&(_this12.tableElement=t.tableElement,_this12.tableElementID=t.tableElement.id);return _this12;}_createClass(s,[{key:\"export\",value:function _export(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options;var i=!1!==t.firstRowAsNames,_s39=t.useMultiLevelHeaders,n=e.getSortedColumns(t.usePresentationOrder),o=Object.keys(n),r=[],l=o.length,a=[],h=\"\";if(i){var _e57=[];if(_s39){var _iteratorNormalCompletion4=true;var _didIteratorError4=false;var _iteratorError4=undefined;try{for(var _iterator4=o[Symbol.iterator](),_step4;!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=true){var _t46=_step4.value;var _i35=(n[_t46].shift()||\"\").toString();_e57.push(_i35);}}catch(err){_didIteratorError4=true;_iteratorError4=err;}finally{try{if(!_iteratorNormalCompletion4&&_iterator4[\"return\"]!=null){_iterator4[\"return\"]();}}finally{if(_didIteratorError4){throw _iteratorError4;}}}h=this.getTableHeaderHTML(o,_e57,t);}else h=this.getTableHeaderHTML(void 0,o,t);}for(var _e58=0;_e58<l;_e58++){var _t47=n[o[_e58]],_i36=_t47.length;for(var _s44=0;_s44<_i36;_s44++){var _i37=_t47[_s44];a[_s44]||(a[_s44]=[]),\"string\"==typeof _i37||\"number\"==typeof _i37||void 0===_i37||(_i37=(_i37||\"\").toString()),a[_s44][_e58]=this.getCellHTMLFromValue(_e58?\"td\":\"th\",null,_e58?\"\":'scope=\"row\"',_i37),_e58===l-1&&r.push(\"<tr>\"+a[_s44].join(\"\")+\"</tr>\");}}var d=\"\";return t.tableCaption&&(d='<caption class=\"highcharts-table-caption\">'+t.tableCaption+\"</caption>\"),\"<table>\"+d+h+\"<tbody>\"+r.join(\"\")+\"</tbody></table>\";}},{key:\"getCellHTMLFromValue\",value:function getCellHTMLFromValue(e,t,i,_s41,n){var o=_s41,r=\"text\"+(t?\" \"+t:\"\");return\"number\"==typeof o?(o=o.toString(),\",\"===n&&(o=o.replace(\".\",n)),r=\"number\"):_s41||(o=\"\",r=\"empty\"),\"<\"+e+(i?\" \"+i:\"\")+' class=\"'+r+'\">'+o+\"</\"+e+\">\";}},{key:\"getTableHeaderHTML\",value:function getTableHeaderHTML(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.options;var _s42=i.useMultiLevelHeaders,n=i.useRowspanHeaders,o=\"<thead>\",r=0,l=t&&t.length,a,h=0,d;if(_s42&&e&&t&&!function(e,t){var i=e.length;if(t.length!==i)return!1;for(;--i;)if(e[i]!==t[i])return!1;return!0;}(e,t)){for(o+=\"<tr>\";r<l;++r)(a=e[r])===e[r+1]?++h:h?(o+=this.getCellHTMLFromValue(\"th\",\"highcharts-table-topheading\",'scope=\"col\" colspan=\"'+(h+1)+'\"',a),h=0):(a===t[r]?n?(d=2,delete t[r]):(d=1,t[r]=\"\"):d=1,o+=this.getCellHTMLFromValue(\"th\",\"highcharts-table-topheading\",'scope=\"col\"'+(d>1?' valign=\"top\" rowspan=\"'+d+'\"':\"\"),a));o+=\"</tr>\";}if(t){for(o+=\"<tr>\",r=0,l=t.length;r<l;++r)void 0!==t[r]&&(o+=this.getCellHTMLFromValue(\"th\",null,'scope=\"col\"',t[r]));o+=\"</tr>\";}return o+\"</thead>\";}},{key:\"parse\",value:function parse(e,t){var _s43=[],n=[],o=i(this.options,e),r=o.endRow,l=o.startColumn,a=o.endColumn,h=o.firstRowAsNames,d=o.tableElement||this.tableElement;if(!(d instanceof HTMLElement)){this.emit({type:\"parseError\",columns:_s43,detail:t,headers:n,error:\"Not a valid HTML Table\"});return;}this.tableElement=d,this.tableElementID=d.id,this.emit({type:\"parse\",columns:this.columns,detail:t,headers:this.headers});var u=d.getElementsByTagName(\"tr\"),c=u.length,f=0,m,p=o.startRow;if(h&&c){var _e59=u[0].children,_t48=_e59.length;for(var _i38=l;_i38<_t48&&!(_i38>a);_i38++)(\"TD\"===(m=_e59[_i38]).tagName||\"TH\"===m.tagName)&&n.push(m.innerHTML);p++;}for(;f<c;){if(f>=p&&f<=r){var _e60=u[f].children,_t49=_e60.length,_i39=0;for(;_i39<_t49;){var _t50=_i39-l,_n24=_s43[_t50];if((\"TD\"===(m=_e60[_i39]).tagName||\"TH\"===m.tagName)&&_i39>=l&&_i39<=a){_s43[_t50]||(_s43[_t50]=[]);var _e61=this.asGuessedType(m.innerHTML);_e61 instanceof Date&&(_e61=_e61.getTime()),_s43[_t50][f-p]=_e61;var _i40=1;for(;f-p>=_i40&&void 0===_n24[f-p-_i40];)_n24[f-p-_i40]=null,_i40++;}_i39++;}}f++;}this.columns=_s43,this.headers=n,this.emit({type:\"afterParse\",columns:_s43,detail:t,headers:n});}},{key:\"getTable\",value:function getTable(){return e.getTableFromColumns(this.columns,this.headers);}}]);return s;}(e);return s.defaultOptions=_objectSpread(_objectSpread({},e.defaultOptions),{},{useRowspanHeaders:!0,useMultiLevelHeaders:!0}),s;}),i(t,\"Data/Connectors/HTMLTableConnector.js\",[t[\"Data/Connectors/DataConnector.js\"],t[\"Core/Globals.js\"],t[\"Data/Converters/HTMLTableConverter.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s){var n=t.win,o=s.merge;var r=/*#__PURE__*/function(_e62){_inherits(r,_e62);var _super6=_createSuper(r);function r(e){var _this13;_classCallCheck(this,r);var t=o(r.defaultOptions,e);_this13=_super6.call(this,t),_this13.converter=new i(t),_this13.options=t;return _this13;}_createClass(r,[{key:\"load\",value:function load(e){var t;var i=this,s=i.converter,_r8=i.table,_i$options2=i.options,l=_i$options2.dataModifier,a=_i$options2.table;if(i.emit({type:\"load\",detail:e,table:_r8,tableElement:i.tableElement}),\"string\"==typeof a?(i.tableID=a,t=n.document.getElementById(a)):(t=a,i.tableID=t.id),i.tableElement=t||void 0,!i.tableElement){var _t51=\"HTML table not provided, or element with ID not found\";return i.emit({type:\"loadError\",detail:e,error:_t51,table:_r8}),Promise.reject(Error(_t51));}return s.parse(o({tableElement:i.tableElement},i.options),e),_r8.deleteColumns(),_r8.setColumns(s.getTable().getColumns()),i.setModifierOptions(l).then(function(){return i.emit({type:\"afterLoad\",detail:e,table:_r8,tableElement:i.tableElement}),i;});}}]);return r;}(e);return r.defaultOptions={table:\"\"},e.registerType(\"HTMLTable\",r),r;}),i(t,\"Data/Converters/JSONConverter.js\",[t[\"Data/Converters/DataConverter.js\"],t[\"Data/DataTable.js\"],t[\"Core/Utilities.js\"]],function(e,t,i){var s=i.error,n=i.isArray,o=i.merge,r=i.objectEach;var l=/*#__PURE__*/function(_e63){_inherits(l,_e63);var _super7=_createSuper(l);function l(e){var _this14;_classCallCheck(this,l);var i=o(l.defaultOptions,e);_this14=_super7.call(this,i),_this14.columns=[],_this14.headers=[],_this14.options=i,_this14.table=new t();return _this14;}_createClass(l,[{key:\"parse\",value:function parse(e,t){var _this15=this;var _e64=e=o(this.options,e),i=_e64.beforeParse,_l5=_e64.orientation,a=_e64.firstRowAsNames,h=_e64.columnNames,d=e.data;if(d){if(this.columns=[],this.emit({type:\"parse\",columns:this.columns,detail:t,headers:this.headers}),i&&(d=i(d)),d=d.slice(),\"columns\"===_l5)for(var _e65=0,_t52=d.length;_e65<_t52;_e65++){var _t53=d[_e65];if(!(_t53 instanceof Array))return;this.headers instanceof Array?(a?this.headers.push(\"\".concat(_t53.shift())):h&&h instanceof Array&&this.headers.push(h[_e65]),this.table.setColumn(this.headers[_e65]||_e65.toString(),_t53)):s(\"JSONConverter: Invalid `columnNames` option.\",!1);}else if(\"rows\"===_l5){a?this.headers=d.shift():h&&(this.headers=h);var _loop2=function _loop2(){var t=d[_e66];if(n(t))for(var _e67=0,_i41=t.length;_e67<_i41;_e67++)_this15.columns.length<_e67+1&&_this15.columns.push([]),_this15.columns[_e67].push(t[_e67]),_this15.headers instanceof Array?_this15.table.setColumn(_this15.headers[_e67]||_e67.toString(),_this15.columns[_e67]):s(\"JSONConverter: Invalid `columnNames` option.\",!1);else{var _i42=_this15.headers;if(_i42&&!(_i42 instanceof Array)){var _e68={};r(_i42,function(i,s){_e68[s]=i.reduce(function(e,t){return e[t];},t);}),t=_e68;}_this15.table.setRows([t],_e66);}};for(var _e66=0,_t54=d.length;_e66<_t54;_e66++){_loop2();}}this.emit({type:\"afterParse\",columns:this.columns,detail:t,headers:this.headers});}}},{key:\"getTable\",value:function getTable(){return this.table;}}]);return l;}(e);return l.defaultOptions=_objectSpread(_objectSpread({},e.defaultOptions),{},{data:[],orientation:\"rows\"}),l;}),i(t,\"Data/Connectors/JSONConnector.js\",[t[\"Data/Connectors/DataConnector.js\"],t[\"Core/Utilities.js\"],t[\"Data/Converters/JSONConverter.js\"]],function(e,t,i){var s=t.merge;var n=/*#__PURE__*/function(_e69){_inherits(n,_e69);var _super8=_createSuper(n);function n(e){var _this16;_classCallCheck(this,n);var t=s(n.defaultOptions,e);_this16=_super8.call(this,t),_this16.converter=new i(t),_this16.options=t,t.enablePolling&&_this16.startPolling(1e3*Math.max(t.dataRefreshRate||0,1));return _this16;}_createClass(n,[{key:\"load\",value:function load(e){var t=this,i=t.converter,s=t.table,_t$options3=t.options,_n25=_t$options3.data,o=_t$options3.dataUrl,r=_t$options3.dataModifier;return t.emit({type:\"load\",data:_n25,detail:e,table:s}),Promise.resolve(o?fetch(o).then(function(e){return e.json();}):_n25||[]).then(function(e){return e&&(s.deleteColumns(),i.parse({data:e}),s.setColumns(i.getTable().getColumns())),t.setModifierOptions(r).then(function(){return e;});}).then(function(i){return t.emit({type:\"afterLoad\",data:i,detail:e,table:s}),t;})[\"catch\"](function(i){throw t.emit({type:\"loadError\",detail:e,error:i,table:s}),i;});}}]);return n;}(e);return n.defaultOptions={data:[],enablePolling:!1,dataRefreshRate:0,firstRowAsNames:!0,orientation:\"rows\"},e.registerType(\"JSON\",n),n;}),i(t,\"Data/Modifiers/ChainModifier.js\",[t[\"Data/Modifiers/DataModifier.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.merge;var s=/*#__PURE__*/function(_e70){_inherits(s,_e70);var _super9=_createSuper(s);function s(t){var _this17;_classCallCheck(this,s);for(var _len2=arguments.length,n=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){n[_key2-1]=arguments[_key2];}_this17=_super9.call(this),_this17.chain=n,_this17.options=i(s.defaultOptions,t);var o=_this17.options.chain||[];for(var _t55=0,_i43=o.length,_s51,r;_t55<_i43;++_t55)(_s51=o[_t55]).type&&(r=e.types[_s51.type])&&n.push(new r(_s51));return _this17;}_createClass(s,[{key:\"add\",value:function add(e,t){this.emit({type:\"addModifier\",detail:t,modifier:e}),this.chain.push(e),this.emit({type:\"addModifier\",detail:t,modifier:e});}},{key:\"clear\",value:function clear(e){this.emit({type:\"clearChain\",detail:e}),this.chain.length=0,this.emit({type:\"afterClearChain\",detail:e});}},{key:\"modify\",value:function(){var _modify=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee(e,t){var i,_s46,n,o;return regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:i=this.options.reverse?this.chain.slice().reverse():this.chain.slice();e.modified===e&&(e.modified=e.clone(!1,t));_s46=e;n=0,o=i.length;case 4:if(!(n<o)){_context.next=17;break;}_context.prev=5;_context.next=8;return i[n].modify(_s46,t);case 8:_context.next=13;break;case 10:_context.prev=10;_context.t0=_context[\"catch\"](5);throw this.emit({type:\"error\",detail:t,table:e}),_context.t0;case 13:_s46=_s46.modified;case 14:++n;_context.next=4;break;case 17:return _context.abrupt(\"return\",(e.modified=_s46,e));case 18:case\"end\":return _context.stop();}},_callee,this,[[5,10]]);}));function modify(_x2,_x3){return _modify.apply(this,arguments);}return modify;}()},{key:\"modifyCell\",value:function modifyCell(e,t,i,_s47,n){var o=this.options.reverse?this.chain.reverse():this.chain;if(o.length){var r=e.clone();for(var _e71=0,l=o.length;_e71<l;++_e71)o[_e71].modifyCell(r,t,i,_s47,n),r=r.modified;e.modified=r;}return e;}},{key:\"modifyColumns\",value:function modifyColumns(e,t,i,_s48){var n=this.options.reverse?this.chain.reverse():this.chain.slice();if(n.length){var o=e.clone();for(var _e72=0,r=n.length;_e72<r;++_e72)n[_e72].modifyColumns(o,t,i,_s48),o=o.modified;e.modified=o;}return e;}},{key:\"modifyRows\",value:function modifyRows(e,t,i,_s49){var n=this.options.reverse?this.chain.reverse():this.chain.slice();if(n.length){var o=e.clone();for(var _e73=0,r=n.length;_e73<r;++_e73)n[_e73].modifyRows(o,t,i,_s49),o=o.modified;e.modified=o;}return e;}},{key:\"modifyTable\",value:function modifyTable(e,t){this.emit({type:\"modify\",detail:t,table:e});var i=this.options.reverse?this.chain.reverse():this.chain.slice(),_s50=e.modified;for(var _e74=0,n=i.length;_e74<n;++_e74)_s50=i[_e74].modifyTable(_s50,t).modified;return e.modified=_s50,this.emit({type:\"afterModify\",detail:t,table:e}),e;}},{key:\"remove\",value:function remove(e,t){var i=this.chain;this.emit({type:\"removeModifier\",detail:t,modifier:e}),i.splice(i.indexOf(e),1),this.emit({type:\"afterRemoveModifier\",detail:t,modifier:e});}}]);return s;}(e);return s.defaultOptions={type:\"Chain\"},e.registerType(\"Chain\",s),s;}),i(t,\"Data/Modifiers/InvertModifier.js\",[t[\"Data/Modifiers/DataModifier.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.merge;var s=/*#__PURE__*/function(_e75){_inherits(s,_e75);var _super10=_createSuper(s);function s(e){var _this18;_classCallCheck(this,s);_this18=_super10.call(this),_this18.options=i(s.defaultOptions,e);return _this18;}_createClass(s,[{key:\"modifyCell\",value:function modifyCell(e,t,i,_s52,n){var o=e.modified,r=o.getRowIndexBy(\"columnNames\",t);return void 0===r?o.setColumns(this.modifyTable(e.clone()).getColumns(),void 0,n):o.setCell(\"\".concat(i),r,_s52,n),e;}},{key:\"modifyColumns\",value:function modifyColumns(e,t,i,_s53){var n=e.modified,o=n.getColumn(\"columnNames\")||[],r=e.getColumnNames(),l=e.getRowCount()!==o.length;if(!l){for(var _e76=0,_t56=r.length;_e76<_t56;++_e76)if(r[_e76]!==o[_e76]){l=!0;break;}}if(l)return this.modifyTable(e,_s53);r=Object.keys(t);for(var _e77=0,_o29=r.length,_l6,a,h;_e77<_o29;++_e77){_l6=t[a=r[_e77]],h=n.getRowIndexBy(\"columnNames\",a)||n.getRowCount();for(var _e78=0,_t57=i,_o30=_l6.length;_e78<_o30;++_e78,++_t57)n.setCell(\"\".concat(_t57),h,_l6[_e78],_s53);}return e;}},{key:\"modifyRows\",value:function modifyRows(e,t,i,_s54){var n=e.getColumnNames(),o=e.modified,r=o.getColumn(\"columnNames\")||[],l=e.getRowCount()!==r.length;if(!l){for(var _e79=0,_t58=n.length;_e79<_t58;++_e79)if(n[_e79]!==r[_e79]){l=!0;break;}}if(l)return this.modifyTable(e,_s54);for(var _e80=0,_r9=i,_l7=t.length,a;_e80<_l7;++_e80,++_r9)if((a=t[_e80])instanceof Array)o.setColumn(\"\".concat(_r9),a);else for(var _e81=0,_t59=n.length;_e81<_t59;++_e81)o.setCell(\"\".concat(_r9),_e81,a[n[_e81]],_s54);return e;}},{key:\"modifyTable\",value:function modifyTable(e,t){this.emit({type:\"modify\",detail:t,table:e});var i=e.modified;if(e.hasColumns([\"columnNames\"])){var _t60=((e.deleteColumns([\"columnNames\"])||{}).columnNames||[]).map(function(e){return\"\".concat(e);}),_s55={};for(var _i44=0,n=e.getRowCount(),o;_i44<n;++_i44)(o=e.getRow(_i44))&&(_s55[_t60[_i44]]=o);i.deleteColumns(),i.setColumns(_s55);}else{var _t61={};for(var _i45=0,_s57=e.getRowCount(),_n26;_i45<_s57;++_i45)(_n26=e.getRow(_i45))&&(_t61[\"\".concat(_i45)]=_n26);_t61.columnNames=e.getColumnNames(),i.deleteColumns(),i.setColumns(_t61);}return this.emit({type:\"afterModify\",detail:t,table:e}),e;}}]);return s;}(e);return s.defaultOptions={type:\"Invert\"},e.registerType(\"Invert\",s),s;}),i(t,\"Data/Modifiers/RangeModifier.js\",[t[\"Data/Modifiers/DataModifier.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.merge;var s=/*#__PURE__*/function(_e82){_inherits(s,_e82);var _super11=_createSuper(s);function s(e){var _this19;_classCallCheck(this,s);_this19=_super11.call(this),_this19.options=i(s.defaultOptions,e);return _this19;}_createClass(s,[{key:\"modifyTable\",value:function modifyTable(e,t){this.emit({type:\"modify\",detail:t,table:e});var i=[],_this$options=this.options,_s58=_this$options.additive,n=_this$options.ranges,o=_this$options.strict;if(n.length){var _t62=e.modified,r=e.getColumns(),l=[];for(var a=0,h=n.length,d,u;a<h;++a)if(d=n[a],!o||_typeof(d.minValue)==_typeof(d.maxValue)){a>0&&!_s58&&(_t62.deleteRows(),_t62.setRows(l),_t62.setOriginalRowIndexes(i,!0),r=_t62.getColumns(),l=[],i=[]),u=r[d.column]||[];for(var _n27=0,_r10=u.length,_a5,_h3,_c3;_n27<_r10;++_n27){switch(_typeof(_a5=u[_n27])){default:continue;case\"boolean\":case\"number\":case\"string\":}(!o||_typeof(_a5)==_typeof(d.minValue))&&_a5>=d.minValue&&_a5<=d.maxValue&&(_s58?(_h3=e.getRow(_n27),_c3=e.getOriginalRowIndex(_n27)):(_h3=_t62.getRow(_n27),_c3=_t62.getOriginalRowIndex(_n27)),_h3&&(l.push(_h3),i.push(_c3)));}}_t62.deleteRows(),_t62.setRows(l),_t62.setOriginalRowIndexes(i);}return this.emit({type:\"afterModify\",detail:t,table:e}),e;}}]);return s;}(e);return s.defaultOptions={type:\"Range\",ranges:[]},e.registerType(\"Range\",s),s;}),i(t,\"Data/Modifiers/SortModifier.js\",[t[\"Data/Modifiers/DataModifier.js\"],t[\"Data/DataTable.js\"],t[\"Core/Utilities.js\"]],function(e,t,i){var s=i.merge;var n=/*#__PURE__*/function(_e83){_inherits(n,_e83);var _super12=_createSuper(n);function n(e){var _this20;_classCallCheck(this,n);_this20=_super12.call(this),_this20.options=s(n.defaultOptions,e);return _this20;}_createClass(n,[{key:\"getRowReferences\",value:function getRowReferences(e){var t=e.getRows(),i=[];for(var _e84=0,_s59=t.length;_e84<_s59;++_e84)i.push({index:_e84,row:t[_e84]});return i;}},{key:\"modifyCell\",value:function modifyCell(e,i,s,_n28,o){var _this$options2=this.options,r=_this$options2.orderByColumn,l=_this$options2.orderInColumn;return i===r&&(l?(e.modified.setCell(i,s,_n28),e.modified.setColumn(l,this.modifyTable(new t({columns:e.getColumns([r,l])})).modified.getColumn(l))):this.modifyTable(e,o)),e;}},{key:\"modifyColumns\",value:function modifyColumns(e,i,s,_n29){var _this$options3=this.options,o=_this$options3.orderByColumn,r=_this$options3.orderInColumn,l=Object.keys(i);return l.indexOf(o)>-1&&(r&&i[l[0]].length?(e.modified.setColumns(i,s),e.modified.setColumn(r,this.modifyTable(new t({columns:e.getColumns([o,r])})).modified.getColumn(r))):this.modifyTable(e,_n29)),e;}},{key:\"modifyRows\",value:function modifyRows(e,i,s,_n30){var _this$options4=this.options,o=_this$options4.orderByColumn,r=_this$options4.orderInColumn;return r&&i.length?(e.modified.setRows(i,s),e.modified.setColumn(r,this.modifyTable(new t({columns:e.getColumns([o,r])})).modified.getColumn(r))):this.modifyTable(e,_n30),e;}},{key:\"modifyTable\",value:function modifyTable(e,t){this.emit({type:\"modify\",detail:t,table:e});var i=e.getColumnNames(),s=e.getRowCount(),o=this.getRowReferences(e),_this$options5=this.options,r=_this$options5.direction,l=_this$options5.orderByColumn,a=_this$options5.orderInColumn,h=\"asc\"===r?n.ascending:n.descending,d=i.indexOf(l),u=e.modified;if(-1!==d&&o.sort(function(e,t){return h(e.row[d],t.row[d]);}),a){var _e85=[];for(var _t63=0;_t63<s;++_t63)_e85[o[_t63].index]=_t63;u.setColumns(_defineProperty({},a,_e85));}else{var _e86;var _t64=[],_i46=[];for(var _n32=0;_n32<s;++_n32)_e86=o[_n32],_t64.push(u.getOriginalRowIndex(_e86.index)),_i46.push(_e86.row);u.setRows(_i46,0),u.setOriginalRowIndexes(_t64);}return this.emit({type:\"afterModify\",detail:t,table:e}),e;}}],[{key:\"ascending\",value:function ascending(e,t){return(e||0)<(t||0)?-1:(e||0)>(t||0)?1:0;}},{key:\"descending\",value:function descending(e,t){return(t||0)<(e||0)?-1:(t||0)>(e||0)?1:0;}}]);return n;}(e);return n.defaultOptions={type:\"Sort\",direction:\"desc\",orderByColumn:\"y\"},e.registerType(\"Sort\",n),n;}),i(t,\"masters/datagrid.src.js\",[t[\"Core/Renderer/HTML/AST.js\"],t[\"Data/Connectors/DataConnector.js\"],t[\"Data/Converters/DataConverter.js\"],t[\"Data/DataCursor.js\"],t[\"DataGrid/DataGrid.js\"],t[\"Data/Modifiers/DataModifier.js\"],t[\"Data/DataPool.js\"],t[\"Data/DataTable.js\"],t[\"DataGrid/Globals.js\"]],function(e,t,i,s,n,o,r,l,a){return a.AST=e,a.DataConnector=t,a.DataCursor=s,a.DataConverter=i,a.DataGrid=n,a.dataGrid=n.dataGrid,a.DataModifier=o,a.DataPool=r,a.DataTable=l,a.win.DataGrid||(a.win.DataGrid=a),a;}),t[\"masters/datagrid.src.js\"]._modules=t,t[\"masters/datagrid.src.js\"];});!/**\n * Highcharts JS v11.4.8 (2024-08-29)\n *\n * (c) 2009-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */function(t,e){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(e[\"default\"]=e,module.exports=t&&t.document?e(t):e):\"function\"==typeof define&&define.amd?define(\"highcharts/highcharts\",function(){return e(t);}):(t.Highcharts&&t.Highcharts.error(16,!0),t.Highcharts=e(t));}(\"undefined\"!=typeof window?window:void 0,function(t){\"use strict\";var e={};function i(e,i,s,r){!e.hasOwnProperty(i)&&(e[i]=r.apply(null,s),t&&\"function\"==typeof CustomEvent&&t.dispatchEvent(new CustomEvent(\"HighchartsModuleLoaded\",{detail:{path:i,module:e[i]}})));}return i(e,\"Core/Globals.js\",[],function(){var e,i;return(i=e||(e={})).SVG_NS=\"http://www.w3.org/2000/svg\",i.product=\"Highcharts\",i.version=\"11.4.8\",i.win=void 0!==t?t:{},i.doc=i.win.document,i.svg=i.doc&&i.doc.createElementNS&&!!i.doc.createElementNS(i.SVG_NS,\"svg\").createSVGRect,i.userAgent=i.win.navigator&&i.win.navigator.userAgent||\"\",i.isChrome=i.win.chrome,i.isFirefox=-1!==i.userAgent.indexOf(\"Firefox\"),i.isMS=/(edge|msie|trident)/i.test(i.userAgent)&&!i.win.opera,i.isSafari=!i.isChrome&&-1!==i.userAgent.indexOf(\"Safari\"),i.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(i.userAgent),i.isWebKit=-1!==i.userAgent.indexOf(\"AppleWebKit\"),i.deg2rad=2*Math.PI/360,i.hasBidiBug=i.isFirefox&&4>parseInt(i.userAgent.split(\"Firefox/\")[1],10),i.marginNames=[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"],i.noop=function(){},i.supportsPassiveEvents=function(){var t=!1;if(!i.isMS){var _e87=Object.defineProperty({},\"passive\",{get:function get(){t=!0;}});i.win.addEventListener&&i.win.removeEventListener&&(i.win.addEventListener(\"testPassive\",i.noop,_e87),i.win.removeEventListener(\"testPassive\",i.noop,_e87));}return t;}(),i.charts=[],i.composed=[],i.dateFormats={},i.seriesTypes={},i.symbolSizes={},i.chartCount=0,e;}),i(e,\"Core/Utilities.js\",[e[\"Core/Globals.js\"]],function(t){var e;var i=t.charts,s=t.doc,r=t.win;function o(e,i,s,n){var a=i?\"Highcharts error\":\"Highcharts warning\";32===e&&(e=\"\".concat(a,\": Deprecated member\"));var h=p(e),l=h?\"\".concat(a,\" #\").concat(e,\": www.highcharts.com/errors/\").concat(e,\"/\"):e.toString();if(void 0!==n){var _t65=\"\";h&&(l+=\"?\"),C(n,function(e,i){_t65+=\"\\n - \".concat(i,\": \").concat(e),h&&(l+=encodeURI(i)+\"=\"+encodeURI(e));}),l+=_t65;}M(t,\"displayError\",{chart:s,code:e,message:l,params:n},function(){if(i)throw Error(l);r.console&&-1===o.messages.indexOf(l)&&console.warn(l);}),o.messages.push(l);}function n(t,e){return parseInt(t,e||10);}function a(t){return\"string\"==typeof t;}function h(t){var e=Object.prototype.toString.call(t);return\"[object Array]\"===e||\"[object Array Iterator]\"===e;}function l(t,e){return!!t&&\"object\"==_typeof(t)&&(!e||!h(t));}function d(t){return l(t)&&\"number\"==typeof t.nodeType;}function c(t){var e=t&&t.constructor;return!!(l(t,!0)&&!d(t)&&e&&e.name&&\"Object\"!==e.name);}function p(t){return\"number\"==typeof t&&!isNaN(t)&&t<1/0&&t>-1/0;}function u(t){return null!=t;}function g(t,e,i){var s;var r=a(e)&&!u(i),o=function o(e,i){u(e)?t.setAttribute(i,e):r?(s=t.getAttribute(i))||\"class\"!==i||(s=t.getAttribute(i+\"Name\")):t.removeAttribute(i);};return a(e)?o(i,e):C(e,o),s;}function f(t){return h(t)?t:[t];}function m(t,e){var i;for(i in t||(t={}),e)t[i]=e[i];return t;}function x(){var t=arguments,e=t.length;for(var _i47=0;_i47<e;_i47++){var _e88=t[_i47];if(null!=_e88)return _e88;}}function y(t,e){m(t.style,e);}function b(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10));}function v(t,e){return t>1e14?t:parseFloat(t.toPrecision(e||14));}(o||(o={})).messages=[],Math.easeInOutSine=function(t){return-.5*(Math.cos(Math.PI*t)-1);};var S=Array.prototype.find?function(t,e){return t.find(e);}:function(t,e){var i;var s=t.length;for(i=0;i<s;i++)if(e(t[i],i))return t[i];};function C(t,e,i){for(var _s60 in t)Object.hasOwnProperty.call(t,_s60)&&e.call(i||t[_s60],t[_s60],_s60,t);}function k(t,e,i){function s(e,i){var s=t.removeEventListener;s&&s.call(t,e,i,!1);}function r(i){var r,o;t.nodeName&&(e?(r={})[e]=!0:r=i,C(r,function(t,e){if(i[e])for(o=i[e].length;o--;)s(e,i[e][o].fn);}));}var o=\"function\"==typeof t&&t.prototype||t;if(Object.hasOwnProperty.call(o,\"hcEvents\")){var _t66=o.hcEvents;if(e){var _o31=_t66[e]||[];i?(_t66[e]=_o31.filter(function(t){return i!==t.fn;}),s(e,i)):(r(_t66),_t66[e]=[]);}else r(_t66),delete o.hcEvents;}}function M(e,i,r,o){if(r=r||{},s.createEvent&&(e.dispatchEvent||e.fireEvent&&e!==t)){var _t67=s.createEvent(\"Events\");_t67.initEvent(i,!0,!0),r=m(_t67,r),e.dispatchEvent?e.dispatchEvent(r):e.fireEvent(i,r);}else if(e.hcEvents){r.target||m(r,{preventDefault:function preventDefault(){r.defaultPrevented=!0;},target:e,type:i});var _t68=[],_s61=e,_o32=!1;for(;_s61.hcEvents;)Object.hasOwnProperty.call(_s61,\"hcEvents\")&&_s61.hcEvents[i]&&(_t68.length&&(_o32=!0),_t68.unshift.apply(_t68,_s61.hcEvents[i])),_s61=Object.getPrototypeOf(_s61);_o32&&_t68.sort(function(t,e){return t.order-e.order;}),_t68.forEach(function(t){!1===t.fn.call(e,r)&&r.preventDefault();});}o&&!r.defaultPrevented&&o.call(e,r);}C({map:\"map\",each:\"forEach\",grep:\"filter\",reduce:\"reduce\",some:\"some\"},function(e,i){t[i]=function(t){return o(32,!1,void 0,_defineProperty({},\"Highcharts.\".concat(i),\"use Array.\".concat(e))),Array.prototype[e].apply(t,[].slice.call(arguments,1));};});var w=function(){var t=Math.random().toString(36).substring(2,9)+\"-\",i=0;return function(){return\"highcharts-\"+(e?\"\":t)+i++;};}();return r.jQuery&&(r.jQuery.fn.highcharts=function(){var e=[].slice.call(arguments);if(this[0])return e[0]?(new t[a(e[0])?e.shift():\"Chart\"](this[0],e[0],e[1]),this):i[g(this[0],\"data-highcharts-chart\")];}),{addEvent:function addEvent(e,i,s){var r=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var o=\"function\"==typeof e&&e.prototype||e;Object.hasOwnProperty.call(o,\"hcEvents\")||(o.hcEvents={});var n=o.hcEvents;t.Point&&e instanceof t.Point&&e.series&&e.series.chart&&(e.series.chart.runTrackerClick=!0);var a=e.addEventListener;a&&a.call(e,i,s,!!t.supportsPassiveEvents&&{passive:void 0===r.passive?-1!==i.indexOf(\"touch\"):r.passive,capture:!1}),n[i]||(n[i]=[]);var h={fn:s,order:\"number\"==typeof r.order?r.order:1/0};return n[i].push(h),n[i].sort(function(t,e){return t.order-e.order;}),function(){k(e,i,s);};},arrayMax:function arrayMax(t){var e=t.length,i=t[0];for(;e--;)t[e]>i&&(i=t[e]);return i;},arrayMin:function arrayMin(t){var e=t.length,i=t[0];for(;e--;)t[e]<i&&(i=t[e]);return i;},attr:g,clamp:function clamp(t,e,i){return t>e?t<i?t:i:e;},clearTimeout:function(_clearTimeout2){function clearTimeout(_x4){return _clearTimeout2.apply(this,arguments);}clearTimeout.toString=function(){return _clearTimeout2.toString();};return clearTimeout;}(function(t){u(t)&&clearTimeout(t);}),correctFloat:v,createElement:function createElement(t,e,i,r,o){var n=s.createElement(t);return e&&m(n,e),o&&y(n,{padding:\"0\",border:\"none\",margin:\"0\"}),i&&y(n,i),r&&r.appendChild(n),n;},crisp:function crisp(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var i=arguments.length>2?arguments[2]:undefined;var s=e%2/2,r=i?-1:1;return(Math.round(t*r-s)+s)*r;},css:y,defined:u,destroyObjectProperties:function destroyObjectProperties(t,e,i){C(t,function(s,r){s!==e&&s!==null&&s!==void 0&&s.destroy&&s.destroy(),((s===null||s===void 0?void 0:s.destroy)||!i)&&delete t[r];});},diffObjects:function diffObjects(t,e,i,s){var r={};return function t(e,r,o,n){var a=i?r:e;C(e,function(i,d){if(!n&&s&&s.indexOf(d)>-1&&r[d]){i=f(i),o[d]=[];for(var _e89=0;_e89<Math.max(i.length,r[d].length);_e89++)r[d][_e89]&&(void 0===i[_e89]?o[d][_e89]=r[d][_e89]:(o[d][_e89]={},t(i[_e89],r[d][_e89],o[d][_e89],n+1)));}else l(i,!0)&&!i.nodeType?(o[d]=h(i)?[]:{},t(i,r[d]||{},o[d],n+1),0!==Object.keys(o[d]).length||\"colorAxis\"===d&&0===n||delete o[d]):(e[d]!==r[d]||d in e&&!(d in r))&&\"__proto__\"!==d&&\"constructor\"!==d&&(o[d]=a[d]);});}(t,e,r,0),r;},discardElement:function discardElement(t){t&&t.parentElement&&t.parentElement.removeChild(t);},erase:function erase(t,e){var i=t.length;for(;i--;)if(t[i]===e){t.splice(i,1);break;}},error:o,extend:m,extendClass:function extendClass(t,e){var i=function i(){};return i.prototype=new t(),m(i.prototype,e),i;},find:S,fireEvent:M,getClosestDistance:function getClosestDistance(t,e){var i,s,r,o;var n=!e;return t.forEach(function(t){if(t.length>1)for(o=s=t.length-1;o>0;o--){var _e90;(r=t[o]-t[o-1])<0&&!n?((_e90=e)!==null&&_e90!==void 0&&_e90(),e=void 0):r&&(void 0===i||r<i)&&(i=r);}}),i;},getMagnitude:b,getNestedProperty:function getNestedProperty(t,e){var i=t.split(\".\");for(;i.length&&u(e);){var _t69=i.shift();if(void 0===_t69||\"__proto__\"===_t69)return;if(\"this\"===_t69){var _t71;var _t70=void 0;return l(e)&&(_t70=e[\"@this\"]),(_t71=_t70)!==null&&_t71!==void 0?_t71:e;}var _s62=e[_t69];if(!u(_s62)||\"function\"==typeof _s62||\"number\"==typeof _s62.nodeType||_s62===r)return;e=_s62;}return e;},getStyle:function t(e,i,s){var o;if(\"width\"===i){var _i48=Math.min(e.offsetWidth,e.scrollWidth),_s63=e.getBoundingClientRect&&e.getBoundingClientRect().width;return _s63<_i48&&_s63>=_i48-1&&(_i48=Math.floor(_s63)),Math.max(0,_i48-(t(e,\"padding-left\",!0)||0)-(t(e,\"padding-right\",!0)||0));}if(\"height\"===i)return Math.max(0,Math.min(e.offsetHeight,e.scrollHeight)-(t(e,\"padding-top\",!0)||0)-(t(e,\"padding-bottom\",!0)||0));var a=r.getComputedStyle(e,void 0);return a&&(o=a.getPropertyValue(i),x(s,\"opacity\"!==i)&&(o=n(o))),o;},inArray:function inArray(t,e,i){return o(32,!1,void 0,{\"Highcharts.inArray\":\"use Array.indexOf\"}),e.indexOf(t,i);},insertItem:function insertItem(t,e){var i;var s=t.options.index,r=e.length;for(i=t.options.isInternal?r:0;i<r+1;i++)if(!e[i]||p(s)&&s<x(e[i].options.index,e[i]._i)||e[i].options.isInternal){e.splice(i,0,t);break;}return i;},isArray:h,isClass:c,isDOMElement:d,isFunction:function isFunction(t){return\"function\"==typeof t;},isNumber:p,isObject:l,isString:a,keys:function keys(t){return o(32,!1,void 0,{\"Highcharts.keys\":\"use Object.keys\"}),Object.keys(t);},merge:function merge(){var t,e=arguments,i={},s=function s(t,e){return\"object\"!=_typeof(t)&&(t={}),C(e,function(i,r){\"__proto__\"!==r&&\"constructor\"!==r&&(!l(i,!0)||c(i)||d(i)?t[r]=e[r]:t[r]=s(t[r]||{},i));}),t;};!0===e[0]&&(i=e[1],e=Array.prototype.slice.call(e,2));var r=e.length;for(t=0;t<r;t++)i=s(i,e[t]);return i;},normalizeTickInterval:function normalizeTickInterval(t,e,i,s,r){var o,n=t;i=x(i,b(t));var a=t/i;for(!e&&(e=r?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===s&&(1===i?e=e.filter(function(t){return t%1==0;}):i<=.1&&(e=[1/i]))),o=0;o<e.length&&(n=e[o],(!r||!(n*i>=t))&&(r||!(a<=(e[o]+(e[o+1]||e[o]))/2)));o++);return v(n*i,-Math.round(Math.log(.001)/Math.LN10));},objectEach:C,offset:function offset(t){var e=s.documentElement,i=t.parentElement||t.parentNode?t.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:i.top+(r.pageYOffset||e.scrollTop)-(e.clientTop||0),left:i.left+(r.pageXOffset||e.scrollLeft)-(e.clientLeft||0),width:i.width,height:i.height};},pad:function pad(t,e,i){return Array((e||2)+1-String(t).replace(\"-\",\"\").length).join(i||\"0\")+t;},pick:x,pInt:n,pushUnique:function pushUnique(t,e){return 0>t.indexOf(e)&&!!t.push(e);},relativeLength:function relativeLength(t,e,i){return /%$/.test(t)?e*parseFloat(t)/100+(i||0):parseFloat(t);},removeEvent:k,replaceNested:function replaceNested(t){var i,s;for(var _len3=arguments.length,e=new Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++){e[_key3-1]=arguments[_key3];}do{var _iteratorNormalCompletion5=true;var _didIteratorError5=false;var _iteratorError5=undefined;try{for(var _iterator5=(i=t,e)[Symbol.iterator](),_step5;!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=true){s=_step5.value;t=t.replace(s[0],s[1]);}}catch(err){_didIteratorError5=true;_iteratorError5=err;}finally{try{if(!_iteratorNormalCompletion5&&_iterator5[\"return\"]!=null){_iterator5[\"return\"]();}}finally{if(_didIteratorError5){throw _iteratorError5;}}}}while(t!==i);return t;},splat:f,stableSort:function stableSort(t,e){var i,s;var r=t.length;for(s=0;s<r;s++)t[s].safeI=s;for(t.sort(function(t,s){return 0===(i=e(t,s))?t.safeI-s.safeI:i;}),s=0;s<r;s++)delete t[s].safeI;},syncTimeout:function syncTimeout(t,e,i){return e>0?setTimeout(t,e,i):(t.call(0,i),-1);},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:w,useSerialIds:function useSerialIds(t){return e=x(t,e);},wrap:function wrap(t,e,i){var s=t[e];t[e]=function(){var t=arguments,e=this;return i.apply(this,[function(){return s.apply(e,arguments.length?arguments:t);}].concat([].slice.call(arguments)));};}};}),i(e,\"Core/Chart/ChartDefaults.js\",[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:\"x\"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:\"line\",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:\"right\",x:-10,y:10}}},width:null,height:null,borderColor:\"#334eff\",backgroundColor:\"#ffffff\",plotBorderColor:\"#cccccc\"};}),i(e,\"Core/Color/Palettes.js\",[],function(){return{colors:[\"#2caffe\",\"#544fc5\",\"#00e272\",\"#fe6a35\",\"#6b8abc\",\"#d568fb\",\"#2ee0ca\",\"#fa4b42\",\"#feb56a\",\"#91e8e1\"]};}),i(e,\"Core/Time.js\",[e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=t.win,s=e.defined,r=e.error,o=e.extend,n=e.isNumber,a=e.isObject,h=e.merge,l=e.objectEach,d=e.pad,c=e.pick,p=e.splat,u=e.timeUnits,g=t.isSafari&&i.Intl&&i.Intl.DateTimeFormat.prototype.formatRange,f=t.isSafari&&i.Intl&&!i.Intl.DateTimeFormat.prototype.formatRange;var m=/*#__PURE__*/function(){function m(t){_classCallCheck(this,m);this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=i.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(t);}_createClass(m,[{key:\"get\",value:function get(t,e){if(this.variableTimezone||this.timezoneOffset){var _i49=e.getTime(),_s64=_i49-this.getTimezoneOffset(e);e.setTime(_s64);var _r11=e[\"getUTC\"+t]();return e.setTime(_i49),_r11;}return this.useUTC?e[\"getUTC\"+t]():e[\"get\"+t]();}},{key:\"set\",value:function set(t,e,i){if(this.variableTimezone||this.timezoneOffset){if(\"Milliseconds\"===t||\"Seconds\"===t||\"Minutes\"===t&&this.getTimezoneOffset(e)%36e5==0)return e[\"setUTC\"+t](i);var _s65=this.getTimezoneOffset(e),_r12=e.getTime()-_s65;e.setTime(_r12),e[\"setUTC\"+t](i);var _o34=this.getTimezoneOffset(e);return _r12=e.getTime()+_o34,e.setTime(_r12);}return this.useUTC||g&&\"FullYear\"===t?e[\"setUTC\"+t](i):e[\"set\"+t](i);}},{key:\"update\",value:function update(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var e=c(t.useUTC,!0);this.options=t=h(!0,this.options,t),this.Date=t.Date||i.Date||Date,this.useUTC=e,this.timezoneOffset=e&&t.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=e&&!!(t.getTimezoneOffset||t.timezone);}},{key:\"makeTime\",value:function makeTime(t,e,i,s,r,o){var n,a,h;return this.useUTC?(n=this.Date.UTC.apply(0,arguments),a=this.getTimezoneOffset(n),n+=a,a!==(h=this.getTimezoneOffset(n))?n+=h-a:a-36e5!==this.getTimezoneOffset(n-36e5)||f||(n-=36e5)):n=new this.Date(t,e,c(i,1),c(s,0),c(r,0),c(o,0)).getTime(),n;}},{key:\"timezoneOffsetFunction\",value:function timezoneOffsetFunction(){var t=this,e=this.options,i=e.getTimezoneOffset;return this.useUTC?e.timezone?function(t){try{var _i50=\"shortOffset,\".concat(e.timezone||\"\"),_m$formatCache$i$form=(m.formatCache[_i50]=m.formatCache[_i50]||Intl.DateTimeFormat(\"en\",{timeZone:e.timezone,timeZoneName:\"shortOffset\"})).format(t).split(/(GMT|:)/).map(Number),_m$formatCache$i$form2=_slicedToArray(_m$formatCache$i$form,5),_s66=_m$formatCache$i$form2[0],_r13=_m$formatCache$i$form2[1],_o35=_m$formatCache$i$form2[2],_a6=_m$formatCache$i$form2[3],_m$formatCache$i$form3=_m$formatCache$i$form2[4],_h4=_m$formatCache$i$form3===void 0?0:_m$formatCache$i$form3,_l8=-(36e5*(_o35+_h4/60));if(n(_l8))return _l8;}catch(t){r(34);}return 0;}:this.useUTC&&i?function(t){return 6e4*i(t.valueOf());}:function(){return 6e4*(t.timezoneOffset||0);}:function(t){return 6e4*new Date(t.toString()).getTimezoneOffset();};}},{key:\"dateFormat\",value:function dateFormat(e,i,r){if(!s(i)||isNaN(i))return t.defaultOptions.lang&&t.defaultOptions.lang.invalidDate||\"\";e=c(e,\"%Y-%m-%d %H:%M:%S\");var n=this,a=new this.Date(i),h=this.get(\"Hours\",a),p=this.get(\"Day\",a),u=this.get(\"Date\",a),g=this.get(\"Month\",a),f=this.get(\"FullYear\",a),_m2=t.defaultOptions.lang,x=_m2&&_m2.weekdays,y=_m2&&_m2.shortWeekdays;return l(o({a:y?y[p]:x[p].substr(0,3),A:x[p],d:d(u),e:d(u,2,\" \"),w:p,b:_m2.shortMonths[g],B:_m2.months[g],m:d(g+1),o:g+1,y:f.toString().substr(2,2),Y:f,H:d(h),k:h,I:d(h%12||12),l:h%12||12,M:d(this.get(\"Minutes\",a)),p:h<12?\"AM\":\"PM\",P:h<12?\"am\":\"pm\",S:d(this.get(\"Seconds\",a)),L:d(Math.floor(i%1e3),3)},t.dateFormats),function(t,s){for(;-1!==e.indexOf(\"%\"+s);)e=e.replace(\"%\"+s,\"function\"==typeof t?t.call(n,i):t);}),r?e.substr(0,1).toUpperCase()+e.substr(1):e;}},{key:\"resolveDTLFormat\",value:function resolveDTLFormat(t){return a(t,!0)?t:{main:(t=p(t))[0],from:t[1],to:t[2]};}},{key:\"getTimeTicks\",value:function getTimeTicks(t,e,i,r){var n,a,h,l;var d=this,p=d.Date,g=[],f={},_m3=new p(e),x=t.unitRange,y=t.count||1;if(r=c(r,1),s(e)){d.set(\"Milliseconds\",_m3,x>=u.second?0:y*Math.floor(d.get(\"Milliseconds\",_m3)/y)),x>=u.second&&d.set(\"Seconds\",_m3,x>=u.minute?0:y*Math.floor(d.get(\"Seconds\",_m3)/y)),x>=u.minute&&d.set(\"Minutes\",_m3,x>=u.hour?0:y*Math.floor(d.get(\"Minutes\",_m3)/y)),x>=u.hour&&d.set(\"Hours\",_m3,x>=u.day?0:y*Math.floor(d.get(\"Hours\",_m3)/y)),x>=u.day&&d.set(\"Date\",_m3,x>=u.month?1:Math.max(1,y*Math.floor(d.get(\"Date\",_m3)/y))),x>=u.month&&(d.set(\"Month\",_m3,x>=u.year?0:y*Math.floor(d.get(\"Month\",_m3)/y)),a=d.get(\"FullYear\",_m3)),x>=u.year&&(a-=a%y,d.set(\"FullYear\",_m3,a)),x===u.week&&(l=d.get(\"Day\",_m3),d.set(\"Date\",_m3,d.get(\"Date\",_m3)-l+r+(l<r?-7:0))),a=d.get(\"FullYear\",_m3);var _t72=d.get(\"Month\",_m3),_o36=d.get(\"Date\",_m3),_c4=d.get(\"Hours\",_m3);e=_m3.getTime(),(d.variableTimezone||!d.useUTC)&&s(i)&&(h=i-e>4*u.month||d.getTimezoneOffset(e)!==d.getTimezoneOffset(i));var _p=_m3.getTime();for(n=1;_p<i;)g.push(_p),x===u.year?_p=d.makeTime(a+n*y,0):x===u.month?_p=d.makeTime(a,_t72+n*y):h&&(x===u.day||x===u.week)?_p=d.makeTime(a,_t72,_o36+n*y*(x===u.day?1:7)):h&&x===u.hour&&y>1?_p=d.makeTime(a,_t72,_o36,_c4+n*y):_p+=x*y,n++;g.push(_p),x<=u.hour&&g.length<1e4&&g.forEach(function(t){t%18e5==0&&\"000000000\"===d.dateFormat(\"%H%M%S%L\",t)&&(f[t]=\"day\");});}return g.info=o(t,{higherRanks:f,totalRange:x*y}),g;}},{key:\"getDateFormat\",value:function getDateFormat(t,e,i,s){var r=this.dateFormat(\"%m-%d %H:%M:%S.%L\",e),o=\"01-01 00:00:00.000\",n={millisecond:15,second:12,minute:9,hour:6,day:3},a=\"millisecond\",h=a;for(a in u){if(t===u.week&&+this.dateFormat(\"%w\",e)===i&&r.substr(6)===o.substr(6)){a=\"week\";break;}if(u[a]>t){a=h;break;}if(n[a]&&r.substr(n[a])!==o.substr(n[a]))break;\"week\"!==a&&(h=a);}return this.resolveDTLFormat(s[a]).main;}}]);return m;}();return m.formatCache={},m;}),i(e,\"Core/Defaults.js\",[e[\"Core/Chart/ChartDefaults.js\"],e[\"Core/Globals.js\"],e[\"Core/Color/Palettes.js\"],e[\"Core/Time.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r){var o=e.isTouchDevice,n=r.fireEvent,a=r.merge,h={colors:i.colors,symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],weekdays:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],decimalPoint:\".\",numericSymbols:[\"k\",\"M\",\"G\",\"T\",\"P\",\"E\"],resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{buttonTheme:{fill:\"#f7f7f7\",padding:8,r:2,stroke:\"#cccccc\",\"stroke-width\":1,style:{color:\"#333333\",cursor:\"pointer\",fontSize:\"0.8em\",fontWeight:\"normal\"},states:{hover:{fill:\"#e6e6e6\"},select:{fill:\"#e6e9ff\",style:{color:\"#000000\",fontWeight:\"bold\"}},disabled:{style:{color:\"#cccccc\"}}}}},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:t,title:{style:{color:\"#333333\",fontWeight:\"bold\"},text:\"Chart title\",align:\"center\",margin:15,widthAdjust:-44},subtitle:{style:{color:\"#666666\",fontSize:\"0.8em\"},text:\"\",align:\"center\",widthAdjust:-44},caption:{margin:15,style:{color:\"#666666\",fontSize:\"0.8em\"},text:\"\",align:\"left\",verticalAlign:\"bottom\"},plotOptions:{},legend:{enabled:!0,align:\"center\",alignColumns:!0,className:\"highcharts-no-tooltip\",events:{},layout:\"horizontal\",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function labelFormatter(){return this.name;},borderColor:\"#999999\",borderRadius:0,navigation:{style:{fontSize:\"0.8em\"},activeColor:\"#0022ff\",inactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",cursor:\"pointer\",fontSize:\"0.8em\",textDecoration:\"none\",textOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},itemHiddenStyle:{color:\"#666666\",textDecoration:\"line-through\"},shadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontSize:\"0.8em\",fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,textAlign:\"center\"}},tooltip:{enabled:!0,animation:{duration:300,easing:function easing(t){return Math.sqrt(1-Math.pow(t-1,2));}},borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %e %b, %H:%M:%S.%L\",second:\"%A, %e %b, %H:%M:%S\",minute:\"%A, %e %b, %H:%M\",hour:\"%A, %e %b, %H:%M\",day:\"%A, %e %b %Y\",week:\"Week from %A, %e %b %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",headerShape:\"callout\",hideDelay:500,padding:8,shape:\"callout\",shared:!1,snap:o?25:10,headerFormat:'<span style=\"font-size: 0.8em\">{point.key}</span><br/>',pointFormat:'<span style=\"color:{point.color}\">●</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:\"#ffffff\",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:\"#333333\",cursor:\"default\",fontSize:\"0.8em\"},useHTML:!1},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"0.6em\"},text:\"Highcharts.com\"}};h.chart.styledMode=!1;var l=new s(h.time);return{defaultOptions:h,defaultTime:l,getOptions:function getOptions(){return h;},setOptions:function setOptions(t){return n(e,\"setOptions\",{options:t}),a(!0,h,t),(t.time||t.global)&&(e.time?e.time.update(a(h.global,h.time,t.global,t.time)):e.time=l),h;}};}),i(e,\"Core/Color/Color.js\",[e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=e.isNumber,s=e.merge,r=e.pInt;var o=/*#__PURE__*/function(){function o(e){_classCallCheck(this,o);var i,s,r,n;this.rgba=[NaN,NaN,NaN,NaN],this.input=e;var a=t.Color;if(a&&a!==o)return new a(e);if(\"object\"==_typeof(e)&&void 0!==e.stops)this.stops=e.stops.map(function(t){return new o(t[1]);});else if(\"string\"==typeof e){if(this.input=e=o.names[e.toLowerCase()]||e,\"#\"===e.charAt(0)){var _t73=e.length,_i51=parseInt(e.substr(1),16);7===_t73?s=[(16711680&_i51)>>16,(65280&_i51)>>8,255&_i51,1]:4===_t73&&(s=[(3840&_i51)>>4|(3840&_i51)>>8,(240&_i51)>>4|240&_i51,(15&_i51)<<4|15&_i51,1]);}if(!s)for(r=o.parsers.length;r--&&!s;)(i=(n=o.parsers[r]).regex.exec(e))&&(s=n.parse(i));}s&&(this.rgba=s);}_createClass(o,[{key:\"get\",value:function get(t){var e=this.input,r=this.rgba;if(\"object\"==_typeof(e)&&void 0!==this.stops){var _i52=s(e);return _i52.stops=[].slice.call(_i52.stops),this.stops.forEach(function(e,s){_i52.stops[s]=[_i52.stops[s][0],e.get(t)];}),_i52;}return r&&i(r[0])?\"rgb\"!==t&&(t||1!==r[3])?\"a\"===t?\"\".concat(r[3]):\"rgba(\"+r.join(\",\")+\")\":\"rgb(\"+r[0]+\",\"+r[1]+\",\"+r[2]+\")\":e;}},{key:\"brighten\",value:function brighten(t){var e=this.rgba;if(this.stops)this.stops.forEach(function(e){e.brighten(t);});else if(i(t)&&0!==t)for(var _i53=0;_i53<3;_i53++)e[_i53]+=r(255*t),e[_i53]<0&&(e[_i53]=0),e[_i53]>255&&(e[_i53]=255);return this;}},{key:\"setOpacity\",value:function setOpacity(t){return this.rgba[3]=t,this;}},{key:\"tweenTo\",value:function tweenTo(t,e){var s=this.rgba,r=t.rgba;if(!i(s[0])||!i(r[0]))return t.input||\"none\";var _o37=1!==r[3]||1!==s[3];return(_o37?\"rgba(\":\"rgb(\")+Math.round(r[0]+(s[0]-r[0])*(1-e))+\",\"+Math.round(r[1]+(s[1]-r[1])*(1-e))+\",\"+Math.round(r[2]+(s[2]-r[2])*(1-e))+(_o37?\",\"+(r[3]+(s[3]-r[3])*(1-e)):\"\")+\")\";}}],[{key:\"parse\",value:function parse(t){return t?new o(t):o.None;}}]);return o;}();return o.names={white:\"#ffffff\",black:\"#000000\"},o.parsers=[{regex:/rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d?(?:\\.\\d+)?)\\s*\\)/,parse:function parse(t){return[r(t[1]),r(t[2]),r(t[3]),parseFloat(t[4],10)];}},{regex:/rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)/,parse:function parse(t){return[r(t[1]),r(t[2]),r(t[3]),1];}}],o.None=new o(\"\"),o;}),i(e,\"Core/Animation/Fx.js\",[e[\"Core/Color/Color.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=t.parse,r=e.win,o=i.isNumber,n=i.objectEach;var a=/*#__PURE__*/function(){function a(t,e,i){_classCallCheck(this,a);this.pos=NaN,this.options=e,this.elem=t,this.prop=i;}_createClass(a,[{key:\"dSetter\",value:function dSetter(){var t=this.paths,e=t&&t[0],i=t&&t[1],s=this.now||0,r=[];if(1!==s&&e&&i){if(e.length===i.length&&s<1)for(var _t74=0;_t74<i.length;_t74++){var _n33=e[_t74],_a7=i[_t74],h=[];for(var _t75=0;_t75<_a7.length;_t75++){var _e91=_n33[_t75],_i54=_a7[_t75];o(_e91)&&o(_i54)&&!(\"A\"===_a7[0]&&(4===_t75||5===_t75))?h[_t75]=_e91+s*(_i54-_e91):h[_t75]=_i54;}r.push(h);}else r=i;}else r=this.toD||[];this.elem.attr(\"d\",r,void 0,!0);}},{key:\"update\",value:function update(){var t=this.elem,e=this.prop,i=this.now,s=this.options.step;this[e+\"Setter\"]?this[e+\"Setter\"]():t.attr?t.element&&t.attr(e,i,null,!0):t.style[e]=i+this.unit,s&&s.call(t,i,this);}},{key:\"run\",value:function run(t,e,i){var s=this,o=s.options,n=function n(t){return!n.stopped&&s.step(t);},h=r.requestAnimationFrame||function(t){setTimeout(t,13);},l=function l(){for(var _t76=0;_t76<a.timers.length;_t76++)a.timers[_t76]()||a.timers.splice(_t76--,1);a.timers.length&&h(l);};t!==e||this.elem[\"forceAnimate:\"+this.prop]?(this.startTime=+new Date(),this.start=t,this.end=e,this.unit=i,this.now=this.start,this.pos=0,n.elem=this.elem,n.prop=this.prop,n()&&1===a.timers.push(n)&&h(l)):(delete o.curAnim[this.prop],o.complete&&0===Object.keys(o.curAnim).length&&o.complete.call(this.elem));}},{key:\"step\",value:function step(t){var e,i;var s=+new Date(),r=this.options,o=this.elem,_a8=r.complete,h=r.duration,l=r.curAnim;return o.attr&&!o.element?e=!1:t||s>=h+this.startTime?(this.now=this.end,this.pos=1,this.update(),l[this.prop]=!0,i=!0,n(l,function(t){!0!==t&&(i=!1);}),i&&_a8&&_a8.call(o),e=!1):(this.pos=r.easing((s-this.startTime)/h),this.now=this.start+(this.end-this.start)*this.pos,this.update(),e=!0),e;}},{key:\"initPath\",value:function initPath(t,e,i){var s=t.startX,r=t.endX,n=i.slice(),_a9=t.isArea,h=_a9?2:1,l=e&&i.length>e.length&&i.hasStackedCliffs,d,c,p,u,g=e&&e.slice();if(!g||l)return[n,n];function f(t,e){for(;t.length<c;){var _i55=t[0],_s67=e[c-t.length];if(_s67&&\"M\"===_i55[0]&&(\"C\"===_s67[0]?t[0]=[\"C\",_i55[1],_i55[2],_i55[1],_i55[2],_i55[1],_i55[2]]:t[0]=[\"L\",_i55[1],_i55[2]]),t.unshift(_i55),_a9){var _e92=t.pop();t.push(t[t.length-1],_e92);}}}function m(t){for(;t.length<c;){var _e93=t[Math.floor(t.length/h)-1].slice();if(\"C\"===_e93[0]&&(_e93[1]=_e93[5],_e93[2]=_e93[6]),_a9){var _i56=t[Math.floor(t.length/h)].slice();t.splice(t.length/2,0,_e93,_i56);}else t.push(_e93);}}if(s&&r&&r.length){for(p=0;p<s.length;p++){if(s[p]===r[0]){d=p;break;}if(s[0]===r[r.length-s.length+p]){d=p,u=!0;break;}if(s[s.length-1]===r[r.length-s.length+p]){d=s.length-p;break;}}void 0===d&&(g=[]);}return g.length&&o(d)&&(c=n.length+d*h,u?(f(g,n),m(n)):(f(n,g),m(g))),[g,n];}},{key:\"fillSetter\",value:function fillSetter(){a.prototype.strokeSetter.apply(this,arguments);}},{key:\"strokeSetter\",value:function strokeSetter(){this.elem.attr(this.prop,s(this.start).tweenTo(s(this.end),this.pos),void 0,!0);}}]);return a;}();return a.timers=[],a;}),i(e,\"Core/Animation/AnimationUtilities.js\",[e[\"Core/Animation/Fx.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=e.defined,s=e.getStyle,r=e.isArray,o=e.isNumber,n=e.isObject,a=e.merge,h=e.objectEach,l=e.pick;function d(t){return n(t)?a({duration:500,defer:0},t):{duration:t?500:0,defer:0};}function c(e,i){var s=t.timers.length;for(;s--;)t.timers[s].elem!==e||i&&i!==t.timers[s].prop||(t.timers[s].stopped=!0);}return{animate:function animate(e,i,l){var d,p=\"\",u,g,f;n(l)||(f=arguments,l={duration:f[2],easing:f[3],complete:f[4]}),o(l.duration)||(l.duration=400),l.easing=\"function\"==typeof l.easing?l.easing:Math[l.easing]||Math.easeInOutSine,l.curAnim=a(i),h(i,function(o,n){c(e,n),g=new t(e,l,n),u=void 0,\"d\"===n&&r(i.d)?(g.paths=g.initPath(e,e.pathArray,i.d),g.toD=i.d,d=0,u=1):e.attr?d=e.attr(n):(d=parseFloat(s(e,n))||0,\"opacity\"!==n&&(p=\"px\")),u||(u=o),\"string\"==typeof u&&u.match(\"px\")&&(u=u.replace(/px/g,\"\")),g.run(d,u,p);});},animObject:d,getDeferredAnimation:function getDeferredAnimation(t,e,s){var r=d(e),o=s?[s]:t.series,a=0,h=0;return o.forEach(function(t){var s=d(t.options.animation);a=n(e)&&i(e.defer)?r.defer:Math.max(a,s.duration+s.defer),h=Math.min(r.duration,s.duration);}),t.renderer.forExport&&(a=0),{defer:Math.max(0,a-h),duration:Math.min(a,h)};},setAnimation:function setAnimation(t,e){e.renderer.globalAnimation=l(t,e.options.chart.animation,!0);},stop:c};}),i(e,\"Core/Renderer/HTML/AST.js\",[e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=t.SVG_NS,s=t.win,r=e.attr,o=e.createElement,n=e.css,a=e.error,h=e.isFunction,l=e.isString,d=e.objectEach,c=e.splat,p=s.trustedTypes,u=p&&h(p.createPolicy)&&p.createPolicy(\"highcharts\",{createHTML:function createHTML(t){return t;}}),g=u?u.createHTML(\"\"):\"\",f=function(){try{return!!new DOMParser().parseFromString(g,\"text/html\");}catch(t){return!1;}}();var m=/*#__PURE__*/function(){function m(t){_classCallCheck(this,m);this.nodes=\"string\"==typeof t?this.parseMarkup(t):t;}_createClass(m,[{key:\"addToDOM\",value:function addToDOM(e){return function e(s,o){var h;return c(s).forEach(function(s){var l;var c=s.tagName,p=s.textContent?t.doc.createTextNode(s.textContent):void 0,u=m.bypassHTMLFiltering;if(c){if(\"#text\"===c)l=p;else if(-1!==m.allowedTags.indexOf(c)||u){var _a10=\"svg\"===c?i:o.namespaceURI||i,_h5=t.doc.createElementNS(_a10,c),_g3=s.attributes||{};d(s,function(t,e){\"tagName\"!==e&&\"attributes\"!==e&&\"children\"!==e&&\"style\"!==e&&\"textContent\"!==e&&(_g3[e]=t);}),r(_h5,u?_g3:m.filterUserAttributes(_g3)),s.style&&n(_h5,s.style),p&&_h5.appendChild(p),e(s.children||[],_h5),l=_h5;}else a(33,!1,void 0,{\"Invalid tagName in config\":c});}l&&o.appendChild(l),h=l;}),h;}(this.nodes,e);}},{key:\"parseMarkup\",value:function parseMarkup(t){var e;var i=[];if(t=t.trim().replace(/ style=([\"'])/g,\" data-style=$1\"),f)e=new DOMParser().parseFromString(u?u.createHTML(t):t,\"text/html\");else{var _i57=o(\"div\");_i57.innerHTML=t,e={body:_i57};}var s=function s(t,e){var i=t.nodeName.toLowerCase(),r={tagName:i};\"#text\"===i&&(r.textContent=t.textContent||\"\");var o=t.attributes;if(o){var _t77={};[].forEach.call(o,function(e){\"data-style\"===e.name?r.style=m.parseStyle(e.value):_t77[e.name]=e.value;}),r.attributes=_t77;}if(t.childNodes.length){var _e94=[];[].forEach.call(t.childNodes,function(t){s(t,_e94);}),_e94.length&&(r.children=_e94);}e.push(r);};return[].forEach.call(e.body.childNodes,function(t){return s(t,i);}),i;}}],[{key:\"filterUserAttributes\",value:function filterUserAttributes(t){return d(t,function(e,i){var s=!0;-1===m.allowedAttributes.indexOf(i)&&(s=!1),-1!==[\"background\",\"dynsrc\",\"href\",\"lowsrc\",\"src\"].indexOf(i)&&(s=l(e)&&m.allowedReferences.some(function(t){return 0===e.indexOf(t);})),s||(a(33,!1,void 0,{\"Invalid attribute in config\":\"\".concat(i)}),delete t[i]),l(e)&&t[i]&&(t[i]=e.replace(/</g,\"&lt;\"));}),t;}},{key:\"parseStyle\",value:function parseStyle(t){return t.split(\";\").reduce(function(t,e){var i=e.split(\":\").map(function(t){return t.trim();}),s=i.shift();return s&&i.length&&(t[s.replace(/-([a-z])/g,function(t){return t[1].toUpperCase();})]=i.join(\":\")),t;},{});}},{key:\"setElementHTML\",value:function setElementHTML(t,e){t.innerHTML=m.emptyHTML,e&&new m(e).addToDOM(t);}}]);return m;}();return m.allowedAttributes=[\"alt\",\"aria-controls\",\"aria-describedby\",\"aria-expanded\",\"aria-haspopup\",\"aria-hidden\",\"aria-label\",\"aria-labelledby\",\"aria-live\",\"aria-pressed\",\"aria-readonly\",\"aria-roledescription\",\"aria-selected\",\"class\",\"clip-path\",\"color\",\"colspan\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"disabled\",\"fill\",\"filterUnits\",\"flood-color\",\"flood-opacity\",\"height\",\"href\",\"id\",\"in\",\"in2\",\"markerHeight\",\"markerWidth\",\"offset\",\"opacity\",\"operator\",\"orient\",\"padding\",\"paddingLeft\",\"paddingRight\",\"patternUnits\",\"r\",\"radius\",\"refX\",\"refY\",\"role\",\"scope\",\"slope\",\"src\",\"startOffset\",\"stdDeviation\",\"stroke\",\"stroke-linecap\",\"stroke-width\",\"style\",\"tableValues\",\"result\",\"rowspan\",\"summary\",\"target\",\"tabindex\",\"text-align\",\"text-anchor\",\"textAnchor\",\"textLength\",\"title\",\"type\",\"valign\",\"width\",\"x\",\"x1\",\"x2\",\"xlink:href\",\"y\",\"y1\",\"y2\",\"zIndex\"],m.allowedReferences=[\"https://\",\"http://\",\"mailto:\",\"/\",\"../\",\"./\",\"#\"],m.allowedTags=[\"a\",\"abbr\",\"b\",\"br\",\"button\",\"caption\",\"circle\",\"clipPath\",\"code\",\"dd\",\"defs\",\"div\",\"dl\",\"dt\",\"em\",\"feComponentTransfer\",\"feComposite\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feMorphology\",\"feOffset\",\"feMerge\",\"feMergeNode\",\"filter\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hr\",\"i\",\"img\",\"li\",\"linearGradient\",\"marker\",\"ol\",\"p\",\"path\",\"pattern\",\"pre\",\"rect\",\"small\",\"span\",\"stop\",\"strong\",\"style\",\"sub\",\"sup\",\"svg\",\"table\",\"text\",\"textPath\",\"thead\",\"title\",\"tbody\",\"tspan\",\"td\",\"th\",\"tr\",\"u\",\"ul\",\"#text\"],m.emptyHTML=g,m.bypassHTMLFiltering=!1,m;}),i(e,\"Core/Templating.js\",[e[\"Core/Defaults.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=t.defaultOptions,s=t.defaultTime,r=e.extend,o=e.getNestedProperty,n=e.isArray,a=e.isNumber,h=e.isObject,l=e.pick,d=e.pInt,c={add:function add(t,e){return t+e;},divide:function divide(t,e){return 0!==e?t/e:\"\";},eq:function eq(t,e){return t==e;},each:function each(t){var e=arguments[arguments.length-1];return!!n(t)&&t.map(function(i,s){return p(e.body,r(h(i)?i:{\"@this\":i},{\"@index\":s,\"@first\":0===s,\"@last\":s===t.length-1}));}).join(\"\");},ge:function ge(t,e){return t>=e;},gt:function gt(t,e){return t>e;},\"if\":function _if(t){return!!t;},le:function le(t,e){return t<=e;},lt:function lt(t,e){return t<e;},multiply:function multiply(t,e){return t*e;},ne:function ne(t,e){return t!=e;},subtract:function subtract(t,e){return t-e;},unless:function unless(t){return!t;}};function p(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var e=arguments.length>1?arguments[1]:undefined;var r=arguments.length>2?arguments[2]:undefined;var n=/\\{([\\w\\:\\.\\,;\\-\\/<>%@\"'’= #\\(\\)]+)\\}/g,a=/\\(([\\w\\:\\.\\,;\\-\\/<>%@\"'= ]+)\\)/g,h=[],d=/f$/,g=/\\.(\\d)/,f=i.lang,m=r&&r.time||s,x=r&&r.numberFormatter||u,y=function y(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var i;return\"true\"===t||\"false\"!==t&&((i=Number(t)).toString()===t?i:o(t,e));},b,v,S=0,C;for(;null!==(b=n.exec(t));){var _v;var _i58=a.exec(b[1]);_i58&&(b=_i58,C=!0),v&&v.isBlock||(v={ctx:e,expression:b[1],find:b[0],isBlock:\"#\"===b[1].charAt(0),start:b.index,startInner:b.index+b[0].length,length:b[0].length});var _s68=b[1].split(\" \")[0].replace(\"#\",\"\");c[_s68]&&(v.isBlock&&_s68===v.fn&&S++,v.fn||(v.fn=_s68));var _r14=\"else\"===b[1];if(v.isBlock&&v.fn&&(b[1]===\"/\".concat(v.fn)||_r14)){if(S)!_r14&&S--;else{var _e95=v.startInner,_i59=t.substr(_e95,b.index-_e95);void 0===v.body?(v.body=_i59,v.startInner=b.index+b[0].length):v.elseBody=_i59,v.find+=_i59+b[0],_r14||(h.push(v),v=void 0);}}else v.isBlock||h.push(v);if(_i58&&!((_v=v)!==null&&_v!==void 0&&_v.isBlock))break;}return h.forEach(function(i){var s,o;var n=i.body,a=i.elseBody,h=i.expression,u=i.fn;if(u){var _t78=[i],_l9=h.split(\" \");for(o=c[u].length;o--;)_t78.unshift(y(_l9[o+1]));s=c[u].apply(e,_t78),i.isBlock&&\"boolean\"==typeof s&&(s=p(s?n:a,e,r));}else{var _t79=h.split(\":\");if(s=y(_t79.shift()||\"\"),_t79.length&&\"number\"==typeof s){var _e96=_t79.join(\":\");if(d.test(_e96)){var _t80=parseInt((_e96.match(g)||[\"\",\"-1\"])[1],10);null!==s&&(s=x(s,_t80,f.decimalPoint,_e96.indexOf(\",\")>-1?f.thousandsSep:\"\"));}else s=m.dateFormat(_e96,s);}}t=t.replace(i.find,l(s,\"\"));}),C?p(t,e,r):t;}function u(t,e,s,r){var o,n;t=+t||0,e=+e;var h=i.lang,c=(t.toString().split(\".\")[1]||\"\").split(\"e\")[0].length,p=t.toString().split(\"e\"),u=e;-1===e?e=Math.min(c,20):a(e)?e&&p[1]&&p[1]<0&&((n=e+ +p[1])>=0?(p[0]=(+p[0]).toExponential(n).split(\"e\")[0],e=n):(p[0]=p[0].split(\".\")[0]||0,t=e<20?(p[0]*Math.pow(10,p[1])).toFixed(e):0,p[1]=0)):e=2;var g=(Math.abs(p[1]?p[0]:t)+Math.pow(10,-Math.max(e,c)-1)).toFixed(e),f=String(d(g)),m=f.length>3?f.length%3:0;return s=l(s,h.decimalPoint),r=l(r,h.thousandsSep),o=(t<0?\"-\":\"\")+(m?f.substr(0,m)+r:\"\"),0>+p[1]&&!u?o=\"0\":o+=f.substr(m).replace(/(\\d{3})(?=\\d)/g,\"$1\"+r),e?o+=s+g.slice(-e):0==+o&&(o=\"0\"),p[1]&&0!=+o&&(o+=\"e\"+p[1]),o;}return{dateFormat:function dateFormat(t,e,i){return s.dateFormat(t,e,i);},format:p,helpers:c,numberFormat:u};}),i(e,\"Core/Renderer/RendererRegistry.js\",[e[\"Core/Globals.js\"]],function(t){var e,i;var s;return(i=e||(e={})).rendererTypes={},i.getRendererType=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:s;return i.rendererTypes[t]||i.rendererTypes[s];},i.registerRendererType=function(e,r,o){i.rendererTypes[e]=r,(!s||o)&&(s=e,t.Renderer=r);},e;}),i(e,\"Core/Renderer/RendererUtilities.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.clamp,s=t.pick,r=t.pushUnique,o=t.stableSort;return(e||(e={})).distribute=function t(e,n,a){var h=e,l=h.reducedLen||n,d=function d(t,e){return t.target-e.target;},c=[],p=e.length,u=[],g=c.push,f,m,x,y=!0,b,v,S=0,C;for(f=p;f--;)S+=e[f].size;if(S>l){for(o(e,function(t,e){return(e.rank||0)-(t.rank||0);}),x=(C=e[0].rank===e[e.length-1].rank)?p/2:-1,m=C?x:p-1;x&&S>l;)b=e[f=Math.floor(m)],r(u,f)&&(S-=b.size),m+=x,C&&m>=e.length&&(x/=2,m=x);u.sort(function(t,e){return e-t;}).forEach(function(t){return g.apply(c,e.splice(t,1));});}for(o(e,d),e=e.map(function(t){return{size:t.size,targets:[t.target],align:s(t.align,.5)};});y;){for(f=e.length;f--;)b=e[f],v=(Math.min.apply(0,b.targets)+Math.max.apply(0,b.targets))/2,b.pos=i(v-b.size*b.align,0,n-b.size);for(f=e.length,y=!1;f--;)f>0&&e[f-1].pos+e[f-1].size>e[f].pos&&(e[f-1].size+=e[f].size,e[f-1].targets=e[f-1].targets.concat(e[f].targets),e[f-1].align=.5,e[f-1].pos+e[f-1].size>n&&(e[f-1].pos=n-e[f-1].size),e.splice(f,1),y=!0);}return g.apply(h,c),f=0,e.some(function(e){var i=0;return(e.targets||[]).some(function(){return(h[f].pos=e.pos+i,void 0!==a&&Math.abs(h[f].pos-h[f].target)>a)?(h.slice(0,f+1).forEach(function(t){return delete t.pos;}),h.reducedLen=(h.reducedLen||n)-.1*n,h.reducedLen>.1*n&&t(h,n,a),!0):(i+=h[f].size,f++,!1);});}),o(h,d),h;},e;}),i(e,\"Core/Renderer/SVG/SVGElement.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Color/Color.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s){var r=t.animate,o=t.animObject,n=t.stop,a=i.deg2rad,h=i.doc,l=i.svg,d=i.SVG_NS,c=i.win,p=s.addEvent,u=s.attr,g=s.createElement,f=s.crisp,m=s.css,x=s.defined,y=s.erase,b=s.extend,v=s.fireEvent,S=s.isArray,C=s.isFunction,k=s.isObject,M=s.isString,w=s.merge,T=s.objectEach,A=s.pick,P=s.pInt,L=s.pushUnique,O=s.replaceNested,D=s.syncTimeout,E=s.uniqueKey;var I=/*#__PURE__*/function(){function I(t,e){_classCallCheck(this,I);this.onEvents={},this.opacity=1,this.SVG_NS=d,this.element=\"span\"===e||\"body\"===e?g(e):h.createElementNS(this.SVG_NS,e),this.renderer=t,this.styles={},v(this,\"afterInit\");}_createClass(I,[{key:\"_defaultGetter\",value:function _defaultGetter(t){var e=A(this[t+\"Value\"],this[t],this.element?this.element.getAttribute(t):null,0);return /^-?[\\d\\.]+$/.test(e)&&(e=parseFloat(e)),e;}},{key:\"_defaultSetter\",value:function _defaultSetter(t,e,i){i.setAttribute(e,t);}},{key:\"add\",value:function add(t){var e;var i=this.renderer,s=this.element;return t&&(this.parentGroup=t),void 0!==this.textStr&&\"text\"===this.element.nodeName&&i.buildText(this),this.added=!0,(!t||t.handleZ||this.zIndex)&&(e=this.zIndexSetter()),e||(t?t.element:i.box).appendChild(s),this.onAdd&&this.onAdd(),this;}},{key:\"addClass\",value:function addClass(t,e){var i=e?\"\":this.attr(\"class\")||\"\";return(t=(t||\"\").split(/ /g).reduce(function(t,e){return-1===i.indexOf(e)&&t.push(e),t;},i?[i]:[]).join(\" \"))!==i&&this.attr(\"class\",t),this;}},{key:\"afterSetters\",value:function afterSetters(){this.doTransform&&(this.updateTransform(),this.doTransform=!1);}},{key:\"align\",value:function align(t,e,i){var s=arguments.length>3&&arguments[3]!==undefined?arguments[3]:!0;var r,o,n,a;var h={},l=this.renderer,d=l.alignedObjects,c=!!t;t?(this.alignOptions=t,this.alignByTranslate=e,this.alignTo=i):(t=this.alignOptions||{},e=this.alignByTranslate,i=this.alignTo);var p=!i||M(i)?i||\"renderer\":void 0;p&&(c&&L(d,this),i=void 0);var u=A(i,l[p],l),g=t.align,f=t.verticalAlign;return r=(u.x||0)+(t.x||0),o=(u.y||0)+(t.y||0),\"right\"===g?n=1:\"center\"===g&&(n=2),n&&(r+=((u.width||0)-(t.width||0))/n),h[e?\"translateX\":\"x\"]=Math.round(r),\"bottom\"===f?a=1:\"middle\"===f&&(a=2),a&&(o+=((u.height||0)-(t.height||0))/a),h[e?\"translateY\":\"y\"]=Math.round(o),s&&(this[this.placed?\"animate\":\"attr\"](h),this.placed=!0),this.alignAttr=h,this;}},{key:\"alignSetter\",value:function alignSetter(t){var e={left:\"start\",center:\"middle\",right:\"end\"};e[t]&&(this.alignValue=t,this.element.setAttribute(\"text-anchor\",e[t]));}},{key:\"animate\",value:function animate(t,e,i){var _this21=this;var s=o(A(e,this.renderer.globalAnimation,!0)),n=s.defer;return h.hidden&&(s.duration=0),0!==s.duration?(i&&(s.complete=i),D(function(){_this21.element&&r(_this21,t,s);},n)):(this.attr(t,void 0,i||s.complete),T(t,function(t,e){s.step&&s.step.call(this,t,{prop:e,pos:1,elem:this});},this)),this;}},{key:\"applyTextOutline\",value:function applyTextOutline(t){var e=this.element;-1!==t.indexOf(\"contrast\")&&(t=t.replace(/contrast/g,this.renderer.getContrast(e.style.fill)));var s=t.split(\" \"),r=s[s.length-1],o=s[0];if(o&&\"none\"!==o&&i.svg){this.fakeTS=!0,o=o.replace(/(^[\\d\\.]+)(.*?)$/g,function(t,e,i){return 2*Number(e)+i;}),this.removeTextOutline();var _t81=h.createElementNS(d,\"tspan\");u(_t81,{\"class\":\"highcharts-text-outline\",fill:r,stroke:r,\"stroke-width\":o,\"stroke-linejoin\":\"round\"});var _i60=e.querySelector(\"textPath\")||e;[].forEach.call(_i60.childNodes,function(e){var i=e.cloneNode(!0);i.removeAttribute&&[\"fill\",\"stroke\",\"stroke-width\",\"stroke\"].forEach(function(t){return i.removeAttribute(t);}),_t81.appendChild(i);});var _s69=0;[].forEach.call(_i60.querySelectorAll(\"text tspan\"),function(t){_s69+=Number(t.getAttribute(\"dy\"));});var _n34=h.createElementNS(d,\"tspan\");_n34.textContent=\"​\",u(_n34,{x:Number(e.getAttribute(\"x\")),dy:-_s69}),_t81.appendChild(_n34),_i60.insertBefore(_t81,_i60.firstChild);}}},{key:\"attr\",value:function attr(t,e,i,s){var r=this.element,o=I.symbolCustomAttribs,a,h,l=this,d;return\"string\"==typeof t&&void 0!==e&&(a=t,(t={})[a]=e),\"string\"==typeof t?l=(this[t+\"Getter\"]||this._defaultGetter).call(this,t,r):(T(t,function(e,i){d=!1,s||n(this,i),this.symbolName&&-1!==o.indexOf(i)&&(h||(this.symbolAttr(t),h=!0),d=!0),this.rotation&&(\"x\"===i||\"y\"===i)&&(this.doTransform=!0),d||(this[i+\"Setter\"]||this._defaultSetter).call(this,e,i,r);},this),this.afterSetters()),i&&i.call(this),l;}},{key:\"clip\",value:function clip(t){if(t&&!t.clipPath){var _e97=E()+\"-\",_i61=this.renderer.createElement(\"clipPath\").attr({id:_e97}).add(this.renderer.defs);b(t,{clipPath:_i61,id:_e97,count:0}),t.add(_i61);}return this.attr(\"clip-path\",t?\"url(\".concat(this.renderer.url,\"#\").concat(t.id,\")\"):\"none\");}},{key:\"crisp\",value:function crisp(t,e){e=Math.round(e||t.strokeWidth||0);var i=t.x||this.x||0,s=t.y||this.y||0,r=(t.width||this.width||0)+i,o=(t.height||this.height||0)+s,n=f(i,e),a=f(s,e);return b(t,{x:n,y:a,width:f(r,e)-n,height:f(o,e)-a}),x(t.strokeWidth)&&(t.strokeWidth=e),t;}},{key:\"complexColor\",value:function complexColor(t,i,s){var r=this.renderer,o,n,a,h,l,d,c,p,u,g,f=[],m;v(this.renderer,\"complexColor\",{args:arguments},function(){if(t.radialGradient?n=\"radialGradient\":t.linearGradient&&(n=\"linearGradient\"),n){if(a=t[n],l=r.gradients,d=t.stops,u=s.radialReference,S(a)&&(t[n]=a={x1:a[0],y1:a[1],x2:a[2],y2:a[3],gradientUnits:\"userSpaceOnUse\"}),\"radialGradient\"===n&&u&&!x(a.gradientUnits)&&(h=a,a=w(a,r.getRadialAttr(u,h),{gradientUnits:\"userSpaceOnUse\"})),T(a,function(t,e){\"id\"!==e&&f.push(e,t);}),T(d,function(t){f.push(t);}),l[f=f.join(\",\")])g=l[f].attr(\"id\");else{a.id=g=E();var _t82=l[f]=r.createElement(n).attr(a).add(r.defs);_t82.radAttr=h,_t82.stops=[],d.forEach(function(i){0===i[1].indexOf(\"rgba\")?(c=(o=e.parse(i[1])).get(\"rgb\"),p=o.get(\"a\")):(c=i[1],p=1);var s=r.createElement(\"stop\").attr({offset:i[0],\"stop-color\":c,\"stop-opacity\":p}).add(_t82);_t82.stops.push(s);});}m=\"url(\"+r.url+\"#\"+g+\")\",s.setAttribute(i,m),s.gradient=f,t.toString=function(){return m;};}});}},{key:\"css\",value:function css(t){var e=this.styles,i={},s=this.element,r,o=!e;if(e&&T(t,function(t,s){e&&e[s]!==t&&(i[s]=t,o=!0);}),o){e&&(t=b(e,i)),null===t.width||\"auto\"===t.width?delete this.textWidth:\"text\"===s.nodeName.toLowerCase()&&t.width&&(r=this.textWidth=P(t.width)),b(this.styles,t),r&&!l&&this.renderer.forExport&&delete t.width;var _o38=w(t);s.namespaceURI===this.SVG_NS&&([\"textOutline\",\"textOverflow\",\"width\"].forEach(function(t){return _o38&&delete _o38[t];}),_o38.color&&(_o38.fill=_o38.color)),m(s,_o38);}return this.added&&(\"text\"===this.element.nodeName&&this.renderer.buildText(this),t.textOutline&&this.applyTextOutline(t.textOutline)),this;}},{key:\"dashstyleSetter\",value:function dashstyleSetter(t){var e,i=this[\"stroke-width\"];if(\"inherit\"===i&&(i=1),t=t&&t.toLowerCase()){var _s70=t.replace(\"shortdashdotdot\",\"3,1,1,1,1,1,\").replace(\"shortdashdot\",\"3,1,1,1\").replace(\"shortdot\",\"1,1,\").replace(\"shortdash\",\"3,1,\").replace(\"longdash\",\"8,3,\").replace(/dot/g,\"1,3,\").replace(\"dash\",\"4,3,\").replace(/,$/,\"\").split(\",\");for(e=_s70.length;e--;)_s70[e]=\"\"+P(_s70[e])*A(i,NaN);t=_s70.join(\",\").replace(/NaN/g,\"none\"),this.element.setAttribute(\"stroke-dasharray\",t);}}},{key:\"destroy\",value:function destroy(){var _t$connector;var t=this,e=t.element||{},i=t.renderer,s=e.ownerSVGElement,r=\"SPAN\"===e.nodeName&&t.parentGroup||void 0,o,a;if(e.onclick=e.onmouseout=e.onmouseover=e.onmousemove=e.point=null,n(t),t.clipPath&&s){var _e98=t.clipPath;[].forEach.call(s.querySelectorAll(\"[clip-path],[CLIP-PATH]\"),function(t){t.getAttribute(\"clip-path\").indexOf(_e98.element.id)>-1&&t.removeAttribute(\"clip-path\");}),t.clipPath=_e98.destroy();}if(t.connector=(_t$connector=t.connector)===null||_t$connector===void 0?void 0:_t$connector.destroy(),t.stops){for(a=0;a<t.stops.length;a++)t.stops[a].destroy();t.stops.length=0,t.stops=void 0;}for(t.safeRemoveChild(e);r&&r.div&&0===r.div.childNodes.length;)o=r.parentGroup,t.safeRemoveChild(r.div),delete r.div,r=o;t.alignOptions&&y(i.alignedObjects,t),T(t,function(e,i){t[i]&&t[i].parentGroup===t&&t[i].destroy&&t[i].destroy(),delete t[i];});}},{key:\"dSetter\",value:function dSetter(t,e,i){S(t)&&(\"string\"==typeof t[0]&&(t=this.renderer.pathToSegments(t)),this.pathArray=t,t=t.reduce(function(t,e,i){return e&&e.join?(i?t+\" \":\"\")+e.join(\" \"):(e||\"\").toString();},\"\")),/(NaN| {2}|^$)/.test(t)&&(t=\"M 0 0\"),this[e]!==t&&(i.setAttribute(e,t),this[e]=t);}},{key:\"fillSetter\",value:function fillSetter(t,e,i){\"string\"==typeof t?i.setAttribute(e,t):t&&this.complexColor(t,e,i);}},{key:\"hrefSetter\",value:function hrefSetter(t,e,i){i.setAttributeNS(\"http://www.w3.org/1999/xlink\",e,t);}},{key:\"getBBox\",value:function getBBox(t,e){var i,s,r,o;var n=this.alignValue,a=this.element,h=this.renderer,l=this.styles,d=this.textStr,c=h.cache,p=h.cacheKeys,u=a.namespaceURI===this.SVG_NS,g=A(e,this.rotation,0),f=h.styledMode?a&&I.prototype.getStyle.call(a,\"font-size\"):l.fontSize;if(x(d)&&(-1===(o=d.toString()).indexOf(\"<\")&&(o=o.replace(/\\d/g,\"0\")),o+=[\"\",h.rootFontSize,f,g,this.textWidth,n,l.textOverflow,l.fontWeight].join(\",\")),o&&!t&&(i=c[o]),!i||i.polygon){if(u||h.forExport){try{r=this.fakeTS&&function(t){var e=a.querySelector(\".highcharts-text-outline\");e&&m(e,{display:t});},C(r)&&r(\"none\"),i=a.getBBox?b({},a.getBBox()):{width:a.offsetWidth,height:a.offsetHeight,x:0,y:0},C(r)&&r(\"\");}catch(t){}(!i||i.width<0)&&(i={x:0,y:0,width:0,height:0});}else i=this.htmlGetBBox();s=i.height,u&&(i.height=s={\"11px,17\":14,\"13px,20\":16}[\"\".concat(f||\"\",\",\").concat(Math.round(s))]||s),g&&(i=this.getRotatedBox(i,g));var _t83={bBox:i};v(this,\"afterGetBBox\",_t83),i=_t83.bBox;}if(o&&(\"\"===d||i.height>0)){for(;p.length>250;)delete c[p.shift()];c[o]||p.push(o),c[o]=i;}return i;}},{key:\"getRotatedBox\",value:function getRotatedBox(t,e){var i=t.x,s=t.y,r=t.width,o=t.height,n=this.alignValue,h=this.translateY,_this$rotationOriginX=this.rotationOriginX,l=_this$rotationOriginX===void 0?0:_this$rotationOriginX,_this$rotationOriginY=this.rotationOriginY,d=_this$rotationOriginY===void 0?0:_this$rotationOriginY,c={right:1,center:.5}[n||0]||0,p=Number(this.element.getAttribute(\"y\")||0)-(h?0:s),u=e*a,g=(e-90)*a,f=Math.cos(u),m=Math.sin(u),x=r*f,y=r*m,b=Math.cos(g),v=Math.sin(g),_map=[l,d].map(function(t){return[t-t*f,t*m];}),_map2=_slicedToArray(_map,2),_map2$=_slicedToArray(_map2[0],2),S=_map2$[0],C=_map2$[1],_map2$2=_slicedToArray(_map2[1],2),k=_map2$2[0],M=_map2$2[1],w=i+c*(r-x)+S+M+p*b,T=w+x,A=T-o*b,P=A-x,L=s+p-c*y-C+k+p*v,O=L+y,D=O-o*v,E=D-y,_I=Math.min(w,T,A,P),j=Math.min(L,O,D,E),B=Math.max(w,T,A,P)-_I,R=Math.max(L,O,D,E)-j;return{x:_I,y:j,width:B,height:R,polygon:[[w,L],[T,O],[A,D],[P,E]]};}},{key:\"getStyle\",value:function getStyle(t){return c.getComputedStyle(this.element||this,\"\").getPropertyValue(t);}},{key:\"hasClass\",value:function hasClass(t){return-1!==(\"\"+this.attr(\"class\")).split(\" \").indexOf(t);}},{key:\"hide\",value:function hide(){return this.attr({visibility:\"hidden\"});}},{key:\"htmlGetBBox\",value:function htmlGetBBox(){return{height:0,width:0,x:0,y:0};}},{key:\"on\",value:function on(t,e){var i=this.onEvents;return i[t]&&i[t](),i[t]=p(this.element,t,e),this;}},{key:\"opacitySetter\",value:function opacitySetter(t,e,i){var s=Number(Number(t).toFixed(3));this.opacity=s,i.setAttribute(e,s);}},{key:\"reAlign\",value:function reAlign(){var _this$alignOptions;((_this$alignOptions=this.alignOptions)===null||_this$alignOptions===void 0?void 0:_this$alignOptions.width)&&\"left\"!==this.alignOptions.align&&(this.alignOptions.width=this.getBBox().width,this.placed=!1,this.align());}},{key:\"removeClass\",value:function removeClass(t){return this.attr(\"class\",(\"\"+this.attr(\"class\")).replace(M(t)?RegExp(\"(^| )\".concat(t,\"( |$)\")):t,\" \").replace(/ +/g,\" \").trim());}},{key:\"removeTextOutline\",value:function removeTextOutline(){var t=this.element.querySelector(\"tspan.highcharts-text-outline\");t&&this.safeRemoveChild(t);}},{key:\"safeRemoveChild\",value:function safeRemoveChild(t){var e=t.parentNode;e&&e.removeChild(t);}},{key:\"setRadialReference\",value:function setRadialReference(t){var e=this.element.gradient&&this.renderer.gradients[this.element.gradient];return this.element.radialReference=t,e&&e.radAttr&&e.animate(this.renderer.getRadialAttr(t,e.radAttr)),this;}},{key:\"shadow\",value:function shadow(t){var _this$parentGroup;var e=this.renderer,i=w(((_this$parentGroup=this.parentGroup)===null||_this$parentGroup===void 0?void 0:_this$parentGroup.rotation)===90?{offsetX:-1,offsetY:-1}:{},k(t)?t:{}),s=e.shadowDefinition(i);return this.attr({filter:t?\"url(\".concat(e.url,\"#\").concat(s,\")\"):\"none\"});}},{key:\"show\",value:function show(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;return this.attr({visibility:t?\"inherit\":\"visible\"});}},{key:\"stroke-widthSetter\",value:function strokeWidthSetter(t,e,i){this[e]=t,i.setAttribute(e,t);}},{key:\"strokeWidth\",value:function strokeWidth(){if(!this.renderer.styledMode)return this[\"stroke-width\"]||0;var t=this.getStyle(\"stroke-width\"),e=0,i;return /px$/.test(t)?e=P(t):\"\"!==t&&(u(i=h.createElementNS(d,\"rect\"),{width:t,\"stroke-width\":0}),this.element.parentNode.appendChild(i),e=i.getBBox().width,i.parentNode.removeChild(i)),e;}},{key:\"symbolAttr\",value:function symbolAttr(t){var e=this;I.symbolCustomAttribs.forEach(function(i){e[i]=A(t[i],e[i]);}),e.attr({d:e.renderer.symbols[e.symbolName](e.x,e.y,e.width,e.height,e)});}},{key:\"textSetter\",value:function textSetter(t){t!==this.textStr&&(delete this.textPxLength,this.textStr=t,this.added&&this.renderer.buildText(this),this.reAlign());}},{key:\"titleSetter\",value:function titleSetter(t){var e=this.element,i=e.getElementsByTagName(\"title\")[0]||h.createElementNS(this.SVG_NS,\"title\");e.insertBefore?e.insertBefore(i,e.firstChild):e.appendChild(i),i.textContent=O(A(t,\"\"),[/<[^>]*>/g,\"\"]).replace(/&lt;/g,\"<\").replace(/&gt;/g,\">\");}},{key:\"toFront\",value:function toFront(){var t=this.element;return t.parentNode.appendChild(t),this;}},{key:\"translate\",value:function translate(t,e){return this.attr({translateX:t,translateY:e});}},{key:\"updateTransform\",value:function updateTransform(){var _this$text;var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"transform\";var e=this.element,i=this.matrix,_this$rotation=this.rotation,s=_this$rotation===void 0?0:_this$rotation,r=this.rotationOriginX,o=this.rotationOriginY,n=this.scaleX,a=this.scaleY,_this$translateX=this.translateX,h=_this$translateX===void 0?0:_this$translateX,_this$translateY=this.translateY,l=_this$translateY===void 0?0:_this$translateY,d=[\"translate(\"+h+\",\"+l+\")\"];x(i)&&d.push(\"matrix(\"+i.join(\",\")+\")\"),s&&(d.push(\"rotate(\"+s+\" \"+A(r,e.getAttribute(\"x\"),0)+\" \"+A(o,e.getAttribute(\"y\")||0)+\")\"),((_this$text=this.text)===null||_this$text===void 0?void 0:_this$text.element.tagName)===\"SPAN\"&&this.text.attr({rotation:s,rotationOriginX:(r||0)-this.padding,rotationOriginY:(o||0)-this.padding})),(x(n)||x(a))&&d.push(\"scale(\"+A(n,1)+\" \"+A(a,1)+\")\"),d.length&&!(this.text||this).textPath&&e.setAttribute(t,d.join(\" \"));}},{key:\"visibilitySetter\",value:function visibilitySetter(t,e,i){\"inherit\"===t?i.removeAttribute(e):this[e]!==t&&i.setAttribute(e,t),this[e]=t;}},{key:\"xGetter\",value:function xGetter(t){return\"circle\"===this.element.nodeName&&(\"x\"===t?t=\"cx\":\"y\"===t&&(t=\"cy\")),this._defaultGetter(t);}},{key:\"zIndexSetter\",value:function zIndexSetter(t,e){var i=this.renderer,s=this.parentGroup,r=(s||i).element||i.box,o=this.element,n=r===i.box,a,h,l,d=!1,c,p=this.added,u;if(x(t)?(o.setAttribute(\"data-z-index\",t),t=+t,this[e]===t&&(p=!1)):x(this[e])&&o.removeAttribute(\"data-z-index\"),this[e]=t,p){for((t=this.zIndex)&&s&&(s.handleZ=!0),u=(a=r.childNodes).length-1;u>=0&&!d;u--)c=!x(l=(h=a[u]).getAttribute(\"data-z-index\")),h!==o&&(t<0&&c&&!n&&!u?(r.insertBefore(o,a[u]),d=!0):(P(l)<=t||c&&(!x(t)||t>=0))&&(r.insertBefore(o,a[u+1]),d=!0));d||(r.insertBefore(o,a[n?3:0]),d=!0);}return d;}}]);return I;}();return I.symbolCustomAttribs=[\"anchorX\",\"anchorY\",\"clockwise\",\"end\",\"height\",\"innerR\",\"r\",\"start\",\"width\",\"x\",\"y\"],I.prototype.strokeSetter=I.prototype.fillSetter,I.prototype.yGetter=I.prototype.xGetter,I.prototype.matrixSetter=I.prototype.rotationOriginXSetter=I.prototype.rotationOriginYSetter=I.prototype.rotationSetter=I.prototype.scaleXSetter=I.prototype.scaleYSetter=I.prototype.translateXSetter=I.prototype.translateYSetter=I.prototype.verticalAlignSetter=function(t,e){this[e]=t,this.doTransform=!0;},I;}),i(e,\"Core/Renderer/SVG/SVGLabel.js\",[e[\"Core/Renderer/SVG/SVGElement.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=e.defined,s=e.extend,r=e.isNumber,o=e.merge,n=e.pick,a=e.removeEvent;var h=/*#__PURE__*/function(_t84){_inherits(h,_t84);var _super13=_createSuper(h);function h(t,e,i,s,r,o,n,a,l,d){var _this22;_classCallCheck(this,h);var c;_this22=_super13.call(this,t,\"g\"),_this22.paddingLeftSetter=_this22.paddingSetter,_this22.paddingRightSetter=_this22.paddingSetter,_this22.doUpdate=!1,_this22.textStr=e,_this22.x=i,_this22.y=s,_this22.anchorX=o,_this22.anchorY=n,_this22.baseline=l,_this22.className=d,_this22.addClass(\"button\"===d?\"highcharts-no-tooltip\":\"highcharts-label\"),d&&_this22.addClass(\"highcharts-\"+d),_this22.text=t.text(void 0,0,0,a).attr({zIndex:1}),\"string\"==typeof r&&((c=/^url\\((.*?)\\)$/.test(r))||_this22.renderer.symbols[r])&&(_this22.symbolKey=r),_this22.bBox=h.emptyBBox,_this22.padding=3,_this22.baselineOffset=0,_this22.needsBox=t.styledMode||c,_this22.deferredAttr={},_this22.alignFactor=0;return _this22;}_createClass(h,[{key:\"alignSetter\",value:function alignSetter(t){var e={left:0,center:.5,right:1}[t];e!==this.alignFactor&&(this.alignFactor=e,this.bBox&&r(this.xSetting)&&this.attr({x:this.xSetting}));}},{key:\"anchorXSetter\",value:function anchorXSetter(t,e){this.anchorX=t,this.boxAttr(e,Math.round(t)-this.getCrispAdjust()-this.xSetting);}},{key:\"anchorYSetter\",value:function anchorYSetter(t,e){this.anchorY=t,this.boxAttr(e,t-this.ySetting);}},{key:\"boxAttr\",value:function boxAttr(t,e){this.box?this.box.attr(t,e):this.deferredAttr[t]=e;}},{key:\"css\",value:function css(e){if(e){var _t85={};e=o(e),h.textProps.forEach(function(i){void 0!==e[i]&&(_t85[i]=e[i],delete e[i]);}),this.text.css(_t85),\"fontSize\"in _t85||\"fontWeight\"in _t85?this.updateTextPadding():(\"width\"in _t85||\"textOverflow\"in _t85)&&this.updateBoxSize();}return t.prototype.css.call(this,e);}},{key:\"destroy\",value:function destroy(){a(this.element,\"mouseenter\"),a(this.element,\"mouseleave\"),this.text&&this.text.destroy(),this.box&&(this.box=this.box.destroy()),t.prototype.destroy.call(this);}},{key:\"fillSetter\",value:function fillSetter(t,e){t&&(this.needsBox=!0),this.fill=t,this.boxAttr(e,t);}},{key:\"getBBox\",value:function getBBox(t,e){this.textStr&&0===this.bBox.width&&0===this.bBox.height&&this.updateBoxSize();var i=this.padding,_this$height=this.height,s=_this$height===void 0?0:_this$height,_this$translateX2=this.translateX,r=_this$translateX2===void 0?0:_this$translateX2,_this$translateY2=this.translateY,o=_this$translateY2===void 0?0:_this$translateY2,_this$width=this.width,a=_this$width===void 0?0:_this$width,_h6=n(this.paddingLeft,i),l=e!==null&&e!==void 0?e:this.rotation||0,d={width:a,height:s,x:r+this.bBox.x-_h6,y:o+this.bBox.y-i+this.baselineOffset};return l&&(d=this.getRotatedBox(d,l)),d;}},{key:\"getCrispAdjust\",value:function getCrispAdjust(){return(this.renderer.styledMode&&this.box?this.box.strokeWidth():this[\"stroke-width\"]?parseInt(this[\"stroke-width\"],10):0)%2/2;}},{key:\"heightSetter\",value:function heightSetter(t){this.heightSetting=t,this.doUpdate=!0;}},{key:\"afterSetters\",value:function afterSetters(){_get(_getPrototypeOf(h.prototype),\"afterSetters\",this).call(this),this.doUpdate&&(this.updateBoxSize(),this.doUpdate=!1);}},{key:\"onAdd\",value:function onAdd(){this.text.add(this),this.attr({text:n(this.textStr,\"\"),x:this.x||0,y:this.y||0}),this.box&&i(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY});}},{key:\"paddingSetter\",value:function paddingSetter(t,e){r(t)?t!==this[e]&&(this[e]=t,this.updateTextPadding()):this[e]=void 0;}},{key:\"rSetter\",value:function rSetter(t,e){this.boxAttr(e,t);}},{key:\"strokeSetter\",value:function strokeSetter(t,e){this.stroke=t,this.boxAttr(e,t);}},{key:\"stroke-widthSetter\",value:function strokeWidthSetter(t,e){t&&(this.needsBox=!0),this[\"stroke-width\"]=t,this.boxAttr(e,t);}},{key:\"text-alignSetter\",value:function textAlignSetter(t){this.textAlign=t;}},{key:\"textSetter\",value:function textSetter(t){void 0!==t&&this.text.attr({text:t}),this.updateTextPadding(),this.reAlign();}},{key:\"updateBoxSize\",value:function updateBoxSize(){var t;var e=this.text,o={},n=this.padding,a=this.bBox=(!r(this.widthSetting)||!r(this.heightSetting)||this.textAlign)&&i(e.textStr)?e.getBBox(void 0,0):h.emptyBBox;this.width=this.getPaddedWidth(),this.height=(this.heightSetting||a.height||0)+2*n;var l=this.renderer.fontMetrics(e);if(this.baselineOffset=n+Math.min((this.text.firstLineMetrics||l).b,a.height||1/0),this.heightSetting&&(this.baselineOffset+=(this.heightSetting-l.h)/2),this.needsBox&&!e.textPath){if(!this.box){var _t86=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect();_t86.addClass((\"button\"===this.className?\"\":\"highcharts-label-box\")+(this.className?\" highcharts-\"+this.className+\"-box\":\"\")),_t86.add(this);}t=this.getCrispAdjust(),o.x=t,o.y=(this.baseline?-this.baselineOffset:0)+t,o.width=Math.round(this.width),o.height=Math.round(this.height),this.box.attr(s(o,this.deferredAttr)),this.deferredAttr={};}}},{key:\"updateTextPadding\",value:function updateTextPadding(){var t=this.text;if(!t.textPath){this.updateBoxSize();var _e99=this.baseline?0:this.baselineOffset,_s71=n(this.paddingLeft,this.padding);i(this.widthSetting)&&this.bBox&&(\"center\"===this.textAlign||\"right\"===this.textAlign)&&(_s71+={center:.5,right:1}[this.textAlign]*(this.widthSetting-this.bBox.width)),(_s71!==t.x||_e99!==t.y)&&(t.attr(\"x\",_s71),t.hasBoxWidthChanged&&(this.bBox=t.getBBox(!0)),void 0!==_e99&&t.attr(\"y\",_e99)),t.x=_s71,t.y=_e99;}}},{key:\"widthSetter\",value:function widthSetter(t){this.widthSetting=r(t)?t:void 0,this.doUpdate=!0;}},{key:\"getPaddedWidth\",value:function getPaddedWidth(){var t=this.padding,e=n(this.paddingLeft,t),i=n(this.paddingRight,t);return(this.widthSetting||this.bBox.width||0)+e+i;}},{key:\"xSetter\",value:function xSetter(t){this.x=t,this.alignFactor&&(t-=this.alignFactor*this.getPaddedWidth(),this[\"forceAnimate:x\"]=!0),this.xSetting=Math.round(t),this.attr(\"translateX\",this.xSetting);}},{key:\"ySetter\",value:function ySetter(t){this.ySetting=this.y=Math.round(t),this.attr(\"translateY\",this.ySetting);}}]);return h;}(t);return h.emptyBBox={width:0,height:0,x:0,y:0},h.textProps=[\"color\",\"direction\",\"fontFamily\",\"fontSize\",\"fontStyle\",\"fontWeight\",\"lineHeight\",\"textAlign\",\"textDecoration\",\"textOutline\",\"textOverflow\",\"whiteSpace\",\"width\"],h;}),i(e,\"Core/Renderer/SVG/Symbols.js\",[e[\"Core/Utilities.js\"]],function(t){var e=t.defined,i=t.isNumber,s=t.pick;function r(t,i,r,o,n){var a=[];if(n){var h=n.start||0,l=s(n.r,r),d=s(n.r,o||r),_c5=2e-4/(n.borderRadius?1:Math.max(l,1)),_p2=Math.abs((n.end||0)-h-2*Math.PI)<_c5,u=(n.end||0)-(_p2?_c5:0),g=n.innerR,f=s(n.open,_p2),m=Math.cos(h),x=Math.sin(h),y=Math.cos(u),b=Math.sin(u),v=s(n.longArc,u-h-Math.PI<_c5?0:1),S=[\"A\",l,d,0,v,s(n.clockwise,1),t+l*y,i+d*b];S.params={start:h,end:u,cx:t,cy:i},a.push([\"M\",t+l*m,i+d*x],S),e(g)&&((S=[\"A\",g,g,0,v,e(n.clockwise)?1-n.clockwise:0,t+g*m,i+g*x]).params={start:u,end:h,cx:t,cy:i},a.push(f?[\"M\",t+g*y,i+g*b]:[\"L\",t+g*y,i+g*b],S)),f||a.push([\"Z\"]);}return a;}function o(t,e,i,s,r){return r&&r.r?n(t,e,i,s,r):[[\"M\",t,e],[\"L\",t+i,e],[\"L\",t+i,e+s],[\"L\",t,e+s],[\"Z\"]];}function n(t,e,i,s,r){var o=(r===null||r===void 0?void 0:r.r)||0;return[[\"M\",t+o,e],[\"L\",t+i-o,e],[\"A\",o,o,0,0,1,t+i,e+o],[\"L\",t+i,e+s-o],[\"A\",o,o,0,0,1,t+i-o,e+s],[\"L\",t+o,e+s],[\"A\",o,o,0,0,1,t,e+s-o],[\"L\",t,e+o],[\"A\",o,o,0,0,1,t+o,e],[\"Z\"]];}return{arc:r,callout:function callout(t,e,s,r,o){var a=Math.min(o&&o.r||0,s,r),h=a+6,l=o&&o.anchorX,d=o&&o.anchorY||0,c=n(t,e,s,r,{r:a});if(!i(l)||l<s&&l>0&&d<r&&d>0)return c;if(t+l>s-h){if(d>e+h&&d<e+r-h)c.splice(3,1,[\"L\",t+s,d-6],[\"L\",t+s+6,d],[\"L\",t+s,d+6],[\"L\",t+s,e+r-a]);else if(l<s){var _i62=d<e+h,_o39=_i62?e:e+r;c.splice(_i62?2:5,0,[\"L\",l,d],[\"L\",t+s-a,_o39]);}else c.splice(3,1,[\"L\",t+s,r/2],[\"L\",l,d],[\"L\",t+s,r/2],[\"L\",t+s,e+r-a]);}else if(t+l<h){if(d>e+h&&d<e+r-h)c.splice(7,1,[\"L\",t,d+6],[\"L\",t-6,d],[\"L\",t,d-6],[\"L\",t,e+a]);else if(l>0){var _i63=d<e+h,_s72=_i63?e:e+r;c.splice(_i63?1:6,0,[\"L\",l,d],[\"L\",t+a,_s72]);}else c.splice(7,1,[\"L\",t,r/2],[\"L\",l,d],[\"L\",t,r/2],[\"L\",t,e+a]);}else d>r&&l<s-h?c.splice(5,1,[\"L\",l+6,e+r],[\"L\",l,e+r+6],[\"L\",l-6,e+r],[\"L\",t+a,e+r]):d<0&&l>h&&c.splice(1,1,[\"L\",l-6,e],[\"L\",l,e-6],[\"L\",l+6,e],[\"L\",s-a,e]);return c;},circle:function circle(t,e,i,s){return r(t+i/2,e+s/2,i/2,s/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1});},diamond:function diamond(t,e,i,s){return[[\"M\",t+i/2,e],[\"L\",t+i,e+s/2],[\"L\",t+i/2,e+s],[\"L\",t,e+s/2],[\"Z\"]];},rect:o,roundedRect:n,square:o,triangle:function triangle(t,e,i,s){return[[\"M\",t+i/2,e],[\"L\",t+i,e+s],[\"L\",t,e+s],[\"Z\"]];},\"triangle-down\":function triangleDown(t,e,i,s){return[[\"M\",t,e],[\"L\",t+i,e],[\"L\",t+i/2,e+s],[\"Z\"]];}};}),i(e,\"Core/Renderer/SVG/TextBuilder.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=e.doc,r=e.SVG_NS,o=e.win,n=i.attr,a=i.extend,h=i.fireEvent,l=i.isString,d=i.objectEach,c=i.pick;return/*#__PURE__*/function(){function _class(t){_classCallCheck(this,_class);var e=t.styles;this.renderer=t.renderer,this.svgElement=t,this.width=t.textWidth,this.textLineHeight=e&&e.lineHeight,this.textOutline=e&&e.textOutline,this.ellipsis=!!(e&&\"ellipsis\"===e.textOverflow),this.noWrap=!!(e&&\"nowrap\"===e.whiteSpace);}_createClass(_class,[{key:\"buildSVG\",value:function buildSVG(){var e=this.svgElement,i=e.element,r=e.renderer,o=c(e.textStr,\"\").toString(),n=-1!==o.indexOf(\"<\"),a=i.childNodes,h=!e.added&&r.box,d=[o,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,e.getStyle(\"font-size\"),this.width].join(\",\");if(d!==e.textCache){e.textCache=d,delete e.actualWidth;for(var _t87=a.length;_t87--;)i.removeChild(a[_t87]);if(n||this.ellipsis||this.width||e.textPath||-1!==o.indexOf(\" \")&&(!this.noWrap||/<br.*?>/g.test(o))){if(\"\"!==o){h&&h.appendChild(i);var _s73=new t(o);this.modifyTree(_s73.nodes),_s73.addToDOM(i),this.modifyDOM(),this.ellipsis&&-1!==(i.textContent||\"\").indexOf(\"…\")&&e.attr(\"title\",this.unescapeEntities(e.textStr||\"\",[\"&lt;\",\"&gt;\"])),h&&h.removeChild(i);}}else i.appendChild(s.createTextNode(this.unescapeEntities(o)));l(this.textOutline)&&e.applyTextOutline&&e.applyTextOutline(this.textOutline);}}},{key:\"modifyDOM\",value:function modifyDOM(){var _this23=this;var t;var e=this.svgElement,i=n(e.element,\"x\");for(e.firstLineMetrics=void 0;t=e.element.firstChild;)if(/^[\\s\\u200B]*$/.test(t.textContent||\" \"))e.element.removeChild(t);else break;[].forEach.call(e.element.querySelectorAll(\"tspan.highcharts-br\"),function(t,s){t.nextSibling&&t.previousSibling&&(0===s&&1===t.previousSibling.nodeType&&(e.firstLineMetrics=e.renderer.fontMetrics(t.previousSibling)),n(t,{dy:_this23.getLineHeight(t.nextSibling),x:i}));});var a=this.width||0;if(!a)return;var h=function h(t,o){var h=t.textContent||\"\",l=h.replace(/([^\\^])-/g,\"$1- \").split(\" \"),d=!_this23.noWrap&&(l.length>1||e.element.childNodes.length>1),c=_this23.getLineHeight(o),p=0,u=e.actualWidth;if(_this23.ellipsis)h&&_this23.truncate(t,h,void 0,0,Math.max(0,a-.8*c),function(t,e){return t.substring(0,e)+\"…\";});else if(d){var _h7=[],_d2=[];for(;o.firstChild&&o.firstChild!==t;)_d2.push(o.firstChild),o.removeChild(o.firstChild);for(;l.length;)l.length&&!_this23.noWrap&&p>0&&(_h7.push(t.textContent||\"\"),t.textContent=l.join(\" \").replace(/- /g,\"-\")),_this23.truncate(t,void 0,l,0===p&&u||0,a,function(t,e){return l.slice(0,e).join(\" \").replace(/- /g,\"-\");}),u=e.actualWidth,p++;_d2.forEach(function(e){o.insertBefore(e,t);}),_h7.forEach(function(e){o.insertBefore(s.createTextNode(e),t);var a=s.createElementNS(r,\"tspan\");a.textContent=\"​\",n(a,{dy:c,x:i}),o.insertBefore(a,t);});}},l=function l(t){[].slice.call(t.childNodes).forEach(function(i){i.nodeType===o.Node.TEXT_NODE?h(i,t):(-1!==i.className.baseVal.indexOf(\"highcharts-br\")&&(e.actualWidth=0),l(i));});};l(e.element);}},{key:\"getLineHeight\",value:function getLineHeight(t){var e=t.nodeType===o.Node.TEXT_NODE?t.parentElement:t;return this.textLineHeight?parseInt(this.textLineHeight.toString(),10):this.renderer.fontMetrics(e||this.svgElement.element).h;}},{key:\"modifyTree\",value:function modifyTree(t){var _this24=this;var e=function e(i,s){var _i$attributes=i.attributes,r=_i$attributes===void 0?{}:_i$attributes,o=i.children,_i$style=i.style,n=_i$style===void 0?{}:_i$style,h=i.tagName,l=_this24.renderer.styledMode;if(\"b\"===h||\"strong\"===h?l?r[\"class\"]=\"highcharts-strong\":n.fontWeight=\"bold\":(\"i\"===h||\"em\"===h)&&(l?r[\"class\"]=\"highcharts-emphasized\":n.fontStyle=\"italic\"),n&&n.color&&(n.fill=n.color),\"br\"===h){r[\"class\"]=\"highcharts-br\",i.textContent=\"​\";var _e100=t[s+1];_e100&&_e100.textContent&&(_e100.textContent=_e100.textContent.replace(/^ +/gm,\"\"));}else\"a\"===h&&o&&o.some(function(t){return\"#text\"===t.tagName;})&&(i.children=[{children:o,tagName:\"tspan\"}]);\"#text\"!==h&&\"a\"!==h&&(i.tagName=\"tspan\"),a(i,{attributes:r,style:n}),o&&o.filter(function(t){return\"#text\"!==t.tagName;}).forEach(e);};t.forEach(e),h(this.svgElement,\"afterModifyTree\",{nodes:t});}},{key:\"truncate\",value:function truncate(t,e,i,s,r,o){var n,a;var h=this.svgElement,l=h.rotation,d=[],c=i?1:0,p=(e||i||\"\").length,u=p,g=function g(e,r){var o=r||e,n=t.parentNode;if(n&&void 0===d[o]&&n.getSubStringLength)try{d[o]=s+n.getSubStringLength(0,i?o+1:o);}catch(t){}return d[o];};if(h.rotation=0,s+(a=g(t.textContent.length))>r){for(;c<=p;)u=Math.ceil((c+p)/2),i&&(n=o(i,u)),a=g(u,n&&n.length-1),c===p?c=p+1:a>r?p=u-1:c=u;0===p?t.textContent=\"\":e&&p===e.length-1||(t.textContent=n||o(e||i,u));}i&&i.splice(0,u),h.actualWidth=a,h.rotation=l;}},{key:\"unescapeEntities\",value:function unescapeEntities(t,e){return d(this.renderer.escapes,function(i,s){e&&-1!==e.indexOf(i)||(t=t.toString().replace(RegExp(i,\"g\"),s));}),t;}}]);return _class;}();}),i(e,\"Core/Renderer/SVG/SVGRenderer.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Defaults.js\"],e[\"Core/Color/Color.js\"],e[\"Core/Globals.js\"],e[\"Core/Renderer/RendererRegistry.js\"],e[\"Core/Renderer/SVG/SVGElement.js\"],e[\"Core/Renderer/SVG/SVGLabel.js\"],e[\"Core/Renderer/SVG/Symbols.js\"],e[\"Core/Renderer/SVG/TextBuilder.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o,n,a,h,l){var d;var c=e.defaultOptions,p=s.charts,u=s.deg2rad,g=s.doc,f=s.isFirefox,m=s.isMS,x=s.isWebKit,y=s.noop,b=s.SVG_NS,v=s.symbolSizes,S=s.win,C=l.addEvent,k=l.attr,M=l.createElement,w=l.crisp,T=l.css,A=l.defined,P=l.destroyObjectProperties,L=l.extend,O=l.isArray,D=l.isNumber,E=l.isObject,I=l.isString,j=l.merge,B=l.pick,R=l.pInt,z=l.replaceNested,N=l.uniqueKey;var W=/*#__PURE__*/function(){function W(t,e,i,s,r,o,n){_classCallCheck(this,W);var a,h;var l=this.createElement(\"svg\").attr({version:\"1.1\",\"class\":\"highcharts-root\"}),d=l.element;n||l.css(this.getStyle(s||{})),t.appendChild(d),k(t,\"dir\",\"ltr\"),-1===t.innerHTML.indexOf(\"xmlns\")&&k(d,\"xmlns\",this.SVG_NS),this.box=d,this.boxWrapper=l,this.alignedObjects=[],this.url=this.getReferenceURL(),this.createElement(\"desc\").add().element.appendChild(g.createTextNode(\"Created with Highcharts 11.4.8\")),this.defs=this.createElement(\"defs\").add(),this.allowHTML=o,this.forExport=r,this.styledMode=n,this.gradients={},this.cache={},this.cacheKeys=[],this.imgCount=0,this.rootFontSize=l.getStyle(\"font-size\"),this.setSize(e,i,!1),f&&t.getBoundingClientRect&&((a=function a(){T(t,{left:0,top:0}),h=t.getBoundingClientRect(),T(t,{left:Math.ceil(h.left)-h.left+\"px\",top:Math.ceil(h.top)-h.top+\"px\"});})(),this.unSubPixelFix=C(S,\"resize\",a));}_createClass(W,[{key:\"definition\",value:function definition(e){return new t([e]).addToDOM(this.defs.element);}},{key:\"getReferenceURL\",value:function getReferenceURL(){if((f||x)&&g.getElementsByTagName(\"base\").length){if(!A(d)){var _e101=N(),_i64=new t([{tagName:\"svg\",attributes:{width:8,height:8},children:[{tagName:\"defs\",children:[{tagName:\"clipPath\",attributes:{id:_e101},children:[{tagName:\"rect\",attributes:{width:4,height:4}}]}]},{tagName:\"rect\",attributes:{id:\"hitme\",width:8,height:8,\"clip-path\":\"url(#\".concat(_e101,\")\"),fill:\"rgba(0,0,0,0.001)\"}}]}]).addToDOM(g.body);T(_i64,{position:\"fixed\",top:0,left:0,zIndex:9e5});var _s74=g.elementFromPoint(6,6);d=\"hitme\"===(_s74&&_s74.id),g.body.removeChild(_i64);}if(d)return z(S.location.href.split(\"#\")[0],[/<[^>]*>/g,\"\"],[/([\\('\\)])/g,\"\\\\$1\"],[/ /g,\"%20\"]);}return\"\";}},{key:\"getStyle\",value:function getStyle(t){return this.style=L({fontFamily:\"Helvetica, Arial, sans-serif\",fontSize:\"1rem\"},t),this.style;}},{key:\"setStyle\",value:function setStyle(t){this.boxWrapper.css(this.getStyle(t));}},{key:\"isHidden\",value:function isHidden(){return!this.boxWrapper.getBBox().width;}},{key:\"destroy\",value:function destroy(){var t=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),P(this.gradients||{}),this.gradients=null,this.defs=t.destroy(),this.unSubPixelFix&&this.unSubPixelFix(),this.alignedObjects=null,null;}},{key:\"createElement\",value:function createElement(t){return new this.Element(this,t);}},{key:\"getRadialAttr\",value:function getRadialAttr(t,e){return{cx:t[0]-t[2]/2+(e.cx||0)*t[2],cy:t[1]-t[2]/2+(e.cy||0)*t[2],r:(e.r||0)*t[2]};}},{key:\"shadowDefinition\",value:function shadowDefinition(t){var e=[\"highcharts-drop-shadow-\".concat(this.chartIndex)].concat(_toConsumableArray(Object.keys(t).map(function(e){return\"\".concat(e,\"-\").concat(t[e]);}))).join(\"-\").toLowerCase().replace(/[^a-z\\d\\-]/g,\"\"),i=j({color:\"#000000\",offsetX:1,offsetY:1,opacity:.15,width:5},t);return this.defs.element.querySelector(\"#\".concat(e))||this.definition({tagName:\"filter\",attributes:{id:e,filterUnits:i.filterUnits},children:this.getShadowFilterContent(i)}),e;}},{key:\"getShadowFilterContent\",value:function getShadowFilterContent(t){return[{tagName:\"feDropShadow\",attributes:{dx:t.offsetX,dy:t.offsetY,\"flood-color\":t.color,\"flood-opacity\":Math.min(5*t.opacity,1),stdDeviation:t.width/2}}];}},{key:\"buildText\",value:function buildText(t){new h(t).buildSVG();}},{key:\"getContrast\",value:function getContrast(t){var e=i.parse(t).rgba.map(function(t){var e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4);}),s=.2126*e[0]+.7152*e[1]+.0722*e[2];return 1.05/(s+.05)>(s+.05)/.05?\"#FFFFFF\":\"#000000\";}},{key:\"button\",value:function button(e,i,s,r){var o=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var n=arguments.length>5?arguments[5]:undefined;var a=arguments.length>6?arguments[6]:undefined;var h=arguments.length>7?arguments[7]:undefined;var l=arguments.length>8?arguments[8]:undefined;var d=arguments.length>9?arguments[9]:undefined;var p=this.label(e,i,s,l,void 0,void 0,d,void 0,\"button\"),u=this.styledMode,g=arguments,f=0;o=j(c.global.buttonTheme,o),u&&(delete o.fill,delete o.stroke,delete o[\"stroke-width\"]);var x=o.states||{},y=o.style||{};delete o.states,delete o.style;var b=[t.filterUserAttributes(o)],v=[y];return u||[\"hover\",\"select\",\"disabled\"].forEach(function(e,i){b.push(j(b[0],t.filterUserAttributes(g[i+5]||x[e]||{}))),v.push(b[i+1].style),delete b[i+1].style;}),C(p.element,m?\"mouseover\":\"mouseenter\",function(){3!==f&&p.setState(1);}),C(p.element,m?\"mouseout\":\"mouseleave\",function(){3!==f&&p.setState(f);}),p.setState=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;if(1!==t&&(p.state=f=t),p.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass(\"highcharts-button-\"+[\"normal\",\"hover\",\"pressed\",\"disabled\"][t]),!u){p.attr(b[t]);var _e102=v[t];E(_e102)&&p.css(_e102);}},p.attr(b[0]),!u&&(p.css(L({cursor:\"default\"},y)),d&&p.text.css({pointerEvents:\"none\"})),p.on(\"touchstart\",function(t){return t.stopPropagation();}).on(\"click\",function(t){3!==f&&r.call(p,t);});}},{key:\"crispLine\",value:function crispLine(t,e){var _t88=_slicedToArray(t,2),i=_t88[0],s=_t88[1];return A(i[1])&&i[1]===s[1]&&(i[1]=s[1]=w(i[1],e)),A(i[2])&&i[2]===s[2]&&(i[2]=s[2]=w(i[2],e)),t;}},{key:\"path\",value:function path(t){var e=this.styledMode?{}:{fill:\"none\"};return O(t)?e.d=t:E(t)&&L(e,t),this.createElement(\"path\").attr(e);}},{key:\"circle\",value:function circle(t,e,i){var s=E(t)?t:void 0===t?{}:{x:t,y:e,r:i},r=this.createElement(\"circle\");return r.xSetter=r.ySetter=function(t,e,i){i.setAttribute(\"c\"+e,t);},r.attr(s);}},{key:\"arc\",value:function arc(t,e,i,s,r,o){var n;E(t)?(e=(n=t).y,i=n.r,s=n.innerR,r=n.start,o=n.end,t=n.x):n={innerR:s,start:r,end:o};var a=this.symbol(\"arc\",t,e,i,i,n);return a.r=i,a;}},{key:\"rect\",value:function rect(t,e,i,s,r,o){var n=E(t)?t:void 0===t?{}:{x:t,y:e,r:r,width:Math.max(i||0,0),height:Math.max(s||0,0)},a=this.createElement(\"rect\");return this.styledMode||(void 0!==o&&(n[\"stroke-width\"]=o,L(n,a.crisp(n))),n.fill=\"none\"),a.rSetter=function(t,e,i){a.r=t,k(i,{rx:t,ry:t});},a.rGetter=function(){return a.r||0;},a.attr(n);}},{key:\"roundedRect\",value:function roundedRect(t){return this.symbol(\"roundedRect\").attr(t);}},{key:\"setSize\",value:function setSize(t,e,i){this.width=t,this.height=e,this.boxWrapper.animate({width:t,height:e},{step:function step(){this.attr({viewBox:\"0 0 \"+this.attr(\"width\")+\" \"+this.attr(\"height\")});},duration:B(i,!0)?void 0:0}),this.alignElements();}},{key:\"g\",value:function g(t){var e=this.createElement(\"g\");return t?e.attr({\"class\":\"highcharts-\"+t}):e;}},{key:\"image\",value:function image(t,e,i,s,r,o){var n={preserveAspectRatio:\"none\"};D(e)&&(n.x=e),D(i)&&(n.y=i),D(s)&&(n.width=s),D(r)&&(n.height=r);var a=this.createElement(\"image\").attr(n),h=function h(e){a.attr({href:t}),o.call(a,e);};if(o){a.attr({href:\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\"});var _e103=new S.Image();C(_e103,\"load\",h),_e103.src=t,_e103.complete&&h({});}else a.attr({href:t});return a;}},{key:\"symbol\",value:function symbol(t,e,i,s,r,o){var n,a,h,l;var d=this,c=/^url\\((.*?)\\)$/,u=c.test(t),f=!u&&(this.symbols[t]?t:\"circle\"),m=f&&this.symbols[f];if(m)\"number\"==typeof e&&(a=m.call(this.symbols,e||0,i||0,s||0,r||0,o)),n=this.path(a),d.styledMode||n.attr(\"fill\",\"none\"),L(n,{symbolName:f||void 0,x:e,y:i,width:s,height:r}),o&&L(n,o);else if(u){h=t.match(c)[1];var _s75=n=this.image(h);_s75.imgwidth=B(o&&o.width,v[h]&&v[h].width),_s75.imgheight=B(o&&o.height,v[h]&&v[h].height),l=function l(t){return t.attr({width:t.width,height:t.height});},[\"width\",\"height\"].forEach(function(t){_s75[\"\".concat(t,\"Setter\")]=function(t,e){this[e]=t;var i=this.alignByTranslate,s=this.element,r=this.width,n=this.height,a=this.imgwidth,h=this.imgheight,l=\"width\"===e?a:h,d=1;o&&\"within\"===o.backgroundSize&&r&&n&&a&&h?(d=Math.min(r/a,n/h),k(s,{width:Math.round(a*d),height:Math.round(h*d)})):s&&l&&s.setAttribute(e,l),!i&&a&&h&&this.translate(((r||0)-a*d)/2,((n||0)-h*d)/2);};}),A(e)&&_s75.attr({x:e,y:i}),_s75.isImg=!0,_s75.symbolUrl=t,A(_s75.imgwidth)&&A(_s75.imgheight)?l(_s75):(_s75.attr({width:0,height:0}),M(\"img\",{onload:function onload(){var t=p[d.chartIndex];0===this.width&&(T(this,{position:\"absolute\",top:\"-999em\"}),g.body.appendChild(this)),v[h]={width:this.width,height:this.height},_s75.imgwidth=this.width,_s75.imgheight=this.height,_s75.element&&l(_s75),this.parentNode&&this.parentNode.removeChild(this),d.imgCount--,d.imgCount||!t||t.hasLoaded||t.onload();},src:h}),this.imgCount++);}return n;}},{key:\"clipRect\",value:function clipRect(t,e,i,s){return this.rect(t,e,i,s,0);}},{key:\"text\",value:function text(t,e,i,s){var r={};if(s&&(this.allowHTML||!this.forExport))return this.html(t,e,i);r.x=Math.round(e||0),i&&(r.y=Math.round(i)),A(t)&&(r.text=t);var o=this.createElement(\"text\").attr(r);return s&&(!this.forExport||this.allowHTML)||(o.xSetter=function(t,e,i){var s=i.getElementsByTagName(\"tspan\"),r=i.getAttribute(e);for(var _i65=0,_o40;_i65<s.length;_i65++)(_o40=s[_i65]).getAttribute(e)===r&&_o40.setAttribute(e,t);i.setAttribute(e,t);}),o;}},{key:\"fontMetrics\",value:function fontMetrics(t){var e=R(o.prototype.getStyle.call(t,\"font-size\")||0),i=e<24?e+3:Math.round(1.2*e),s=Math.round(.8*i);return{h:i,b:s,f:e};}},{key:\"rotCorr\",value:function rotCorr(t,e,i){var s=t;return e&&i&&(s=Math.max(s*Math.cos(e*u),4)),{x:-t/3*Math.sin(e*u),y:s};}},{key:\"pathToSegments\",value:function pathToSegments(t){var e=[],i=[],s={A:8,C:7,H:2,L:3,M:3,Q:5,S:5,T:3,V:2};for(var _r15=0;_r15<t.length;_r15++)I(i[0])&&D(t[_r15])&&i.length===s[i[0].toUpperCase()]&&t.splice(_r15,0,i[0].replace(\"M\",\"L\").replace(\"m\",\"l\")),\"string\"==typeof t[_r15]&&(i.length&&e.push(i.slice(0)),i.length=0),i.push(t[_r15]);return e.push(i.slice(0)),e;}},{key:\"label\",value:function label(t,e,i,s,r,o,a,h,l){return new n(this,t,e,i,s,r,o,a,h,l);}},{key:\"alignElements\",value:function alignElements(){this.alignedObjects.forEach(function(t){return t.align();});}}]);return W;}();return L(W.prototype,{Element:o,SVG_NS:b,escapes:{\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"'\":\"&#39;\",'\"':\"&quot;\"},symbols:a,draw:y}),r.registerRendererType(\"svg\",W,!0),W;}),i(e,\"Core/Renderer/HTML/HTMLElement.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Globals.js\"],e[\"Core/Renderer/SVG/SVGElement.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s){var r=e.composed,o=s.attr,n=s.css,a=s.createElement,h=s.defined,l=s.extend,d=s.pInt,c=s.pushUnique;function p(t,e,s){var _this$div;var r=((_this$div=this.div)===null||_this$div===void 0?void 0:_this$div.style)||s.style;i.prototype[\"\".concat(e,\"Setter\")].call(this,t,e,s),r&&(r[e]=t);}var u=function u(t,e){if(!t.div){var _t$parentGroup;var _s76=o(t.element,\"class\"),_r16=t.css,_n35=a(\"div\",_s76?{className:_s76}:void 0,_objectSpread(_objectSpread({position:\"absolute\",left:\"\".concat(t.translateX||0,\"px\"),top:\"\".concat(t.translateY||0,\"px\")},t.styles),{},{display:t.display,opacity:t.opacity,visibility:t.visibility}),((_t$parentGroup=t.parentGroup)===null||_t$parentGroup===void 0?void 0:_t$parentGroup.div)||e);t.classSetter=function(t,e,i){i.setAttribute(\"class\",t),_n35.className=t;},t.translateXSetter=t.translateYSetter=function(e,i){t[i]=e,_n35.style[\"translateX\"===i?\"left\":\"top\"]=\"\".concat(e,\"px\"),t.doTransform=!0;},t.opacitySetter=t.visibilitySetter=p,t.css=function(e){return _r16.call(t,e),e.cursor&&(_n35.style.cursor=e.cursor),e.pointerEvents&&(_n35.style.pointerEvents=e.pointerEvents),t;},t.on=function(){return i.prototype.on.apply({element:_n35,onEvents:t.onEvents},arguments),t;},t.div=_n35;}return t.div;};var g=/*#__PURE__*/function(_i66){_inherits(g,_i66);var _super14=_createSuper(g);function g(t,e){var _this25;_classCallCheck(this,g);_this25=_super14.call(this,t,e),_this25.css(_objectSpread({position:\"absolute\"},t.styledMode?{}:{fontFamily:t.style.fontFamily,fontSize:t.style.fontSize})),_this25.element.style.whiteSpace=\"nowrap\";return _this25;}_createClass(g,[{key:\"getSpanCorrection\",value:function getSpanCorrection(t,e,i){this.xCorr=-t*i,this.yCorr=-e;}},{key:\"css\",value:function css(t){var e;var i=this.element,s=\"SPAN\"===i.tagName&&t&&\"width\"in t,r=s&&t.width;return s&&(delete t.width,this.textWidth=d(r)||void 0,e=!0),(t===null||t===void 0?void 0:t.textOverflow)===\"ellipsis\"&&(t.whiteSpace=\"nowrap\",t.overflow=\"hidden\"),l(this.styles,t),n(i,t),e&&this.updateTransform(),this;}},{key:\"htmlGetBBox\",value:function htmlGetBBox(){var t=this.element;return{x:t.offsetLeft,y:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight};}},{key:\"updateTransform\",value:function updateTransform(){if(!this.added){this.alignOnAdd=!0;return;}var t=this.element,e=this.renderer,i=this.rotation,s=this.rotationOriginX,r=this.rotationOriginY,o=this.styles,_this$textAlign=this.textAlign,a=_this$textAlign===void 0?\"left\":_this$textAlign,l=this.textWidth,_this$translateX3=this.translateX,d=_this$translateX3===void 0?0:_this$translateX3,_this$translateY3=this.translateY,c=_this$translateY3===void 0?0:_this$translateY3,_this$x=this.x,p=_this$x===void 0?0:_this$x,_this$y=this.y,u=_this$y===void 0?0:_this$y,_g4={left:0,center:.5,right:1}[a],f=o.whiteSpace;if(n(t,{marginLeft:\"\".concat(d,\"px\"),marginTop:\"\".concat(c,\"px\")}),\"SPAN\"===t.tagName){var _this$parentGroup2;var _o41=[i,a,t.innerHTML,l,this.textAlign].join(\",\"),_d3=-(((_this$parentGroup2=this.parentGroup)===null||_this$parentGroup2===void 0?void 0:_this$parentGroup2.padding)*1)||0,_c6,m=!1;if(l!==this.oldTextWidth){var _e104=this.textPxLength?this.textPxLength:(n(t,{width:\"\",whiteSpace:f||\"nowrap\"}),t.offsetWidth),_s77=l||0;(_s77>this.oldTextWidth||_e104>_s77)&&(/[ \\-]/.test(t.textContent||t.innerText)||\"ellipsis\"===t.style.textOverflow)&&(n(t,{width:_e104>_s77||i?l+\"px\":\"auto\",display:\"block\",whiteSpace:f||\"normal\"}),this.oldTextWidth=l,m=!0);}this.hasBoxWidthChanged=m,_o41!==this.cTT&&(_c6=e.fontMetrics(t).b,h(i)&&(i!==(this.oldRotation||0)||a!==this.oldAlign)&&this.setSpanRotation(i,_d3,_d3),this.getSpanCorrection(!h(i)&&this.textPxLength||t.offsetWidth,_c6,_g4));var _this$xCorr=this.xCorr,x=_this$xCorr===void 0?0:_this$xCorr,_this$yCorr=this.yCorr,y=_this$yCorr===void 0?0:_this$yCorr,b=(s!==null&&s!==void 0?s:p)-x-p-_d3,v=(r!==null&&r!==void 0?r:u)-y-u-_d3;n(t,{left:\"\".concat(p+x,\"px\"),top:\"\".concat(u+y,\"px\"),transformOrigin:\"\".concat(b,\"px \").concat(v,\"px\")}),this.cTT=_o41,this.oldRotation=i,this.oldAlign=a;}}},{key:\"setSpanRotation\",value:function setSpanRotation(t,e,i){n(this.element,{transform:\"rotate(\".concat(t,\"deg)\"),transformOrigin:\"\".concat(e,\"% \").concat(i,\"px\")});}},{key:\"add\",value:function add(t){var e;var i=this.renderer.box.parentNode,s=[];if(this.parentGroup=t,t&&!(e=t.div)){var _r17=t;for(;_r17;)s.push(_r17),_r17=_r17.parentGroup;var _iteratorNormalCompletion6=true;var _didIteratorError6=false;var _iteratorError6=undefined;try{for(var _iterator6=s.reverse()[Symbol.iterator](),_step6;!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=true){var _t89=_step6.value;e=u(_t89,i);}}catch(err){_didIteratorError6=true;_iteratorError6=err;}finally{try{if(!_iteratorNormalCompletion6&&_iterator6[\"return\"]!=null){_iterator6[\"return\"]();}}finally{if(_didIteratorError6){throw _iteratorError6;}}}}return(e||i).appendChild(this.element),this.added=!0,this.alignOnAdd&&this.updateTransform(),this;}},{key:\"textSetter\",value:function textSetter(e){e!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,t.setElementHTML(this.element,e!==null&&e!==void 0?e:\"\"),this.textStr=e,this.doTransform=!0);}},{key:\"alignSetter\",value:function alignSetter(t){this.alignValue=this.textAlign=t,this.doTransform=!0;}},{key:\"xSetter\",value:function xSetter(t,e){this[e]=t,this.doTransform=!0;}}],[{key:\"compose\",value:function compose(t){c(r,this.compose)&&(t.prototype.html=function(t,e,i){return new g(this,\"span\").attr({text:t,x:Math.round(e),y:Math.round(i)});});}}]);return g;}(i);var f=g.prototype;return f.visibilitySetter=f.opacitySetter=p,f.ySetter=f.rotationSetter=f.rotationOriginXSetter=f.rotationOriginYSetter=f.xSetter,g;}),i(e,\"Core/Axis/AxisDefaults.js\",[],function(){var t,e;return(e=t||(t={})).xAxis={alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:\"%H:%M:%S.%L\",range:!1},second:{main:\"%H:%M:%S\",range:!1},minute:{main:\"%H:%M\",range:!1},hour:{main:\"%H:%M\",range:!1},day:{main:\"%e %b\"},week:{main:\"%e %b\"},month:{main:\"%b '%y\"},year:{main:\"%Y\"}},endOnTick:!1,gridLineDashStyle:\"Solid\",gridZIndex:1,labels:{autoRotationLimit:80,distance:15,enabled:!0,indentation:10,overflow:\"justify\",reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,zIndex:7,style:{color:\"#333333\",cursor:\"default\",fontSize:\"0.8em\"}},maxPadding:.01,minorGridLineDashStyle:\"Solid\",minorTickLength:2,minorTickPosition:\"outside\",minorTicksPerMajor:5,minPadding:.01,offset:void 0,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:\"between\",tickPosition:\"outside\",title:{align:\"middle\",useHTML:!1,x:0,y:0,style:{color:\"#666666\",fontSize:\"0.8em\"}},visible:!0,minorGridLineColor:\"#f2f2f2\",minorGridLineWidth:1,minorTickColor:\"#999999\",lineColor:\"#333333\",lineWidth:1,gridLineColor:\"#e6e6e6\",gridLineWidth:void 0,tickColor:\"#333333\"},e.yAxis={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:void 0},startOnTick:!0,title:{text:\"Values\"},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:\"justify\",formatter:function formatter(){var t=this.axis.chart.numberFormatter;return t(this.total||0,-1);},style:{color:\"#000000\",fontSize:\"0.7em\",fontWeight:\"bold\",textOutline:\"1px contrast\"}},gridLineWidth:1,lineWidth:0},t;}),i(e,\"Core/Foundation.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.addEvent,s=t.isFunction,r=t.objectEach,o=t.removeEvent;return(e||(e={})).registerEventOptions=function(t,e){t.eventOptions=t.eventOptions||{},r(e.events,function(e,r){t.eventOptions[r]!==e&&(t.eventOptions[r]&&(o(t,r,t.eventOptions[r]),delete t.eventOptions[r]),s(e)&&(t.eventOptions[r]=e,i(t,r,e,{order:0})));});},e;}),i(e,\"Core/Axis/Tick.js\",[e[\"Core/Templating.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=e.deg2rad,r=i.clamp,o=i.correctFloat,n=i.defined,a=i.destroyObjectProperties,h=i.extend,l=i.fireEvent,d=i.isNumber,c=i.merge,p=i.objectEach,u=i.pick;return/*#__PURE__*/function(){function _class2(t,e,i,s,r){_classCallCheck(this,_class2);this.isNew=!0,this.isNewLabel=!0,this.axis=t,this.pos=e,this.type=i||\"\",this.parameters=r||{},this.tickmarkOffset=this.parameters.tickmarkOffset,this.options=this.parameters.options,l(this,\"init\"),i||s||this.addLabel();}_createClass(_class2,[{key:\"addLabel\",value:function addLabel(){var e=this,i=e.axis,s=i.options,r=i.chart,a=i.categories,c=i.logarithmic,p=i.names,g=e.pos,f=u(e.options&&e.options.labels,s.labels),m=i.tickPositions,x=g===m[0],y=g===m[m.length-1],b=(!f.step||1===f.step)&&1===i.tickInterval,v=m.info,S=e.label,C,k,M,w=this.parameters.category||(a?u(a[g],p[g],g):g);c&&d(w)&&(w=o(c.lin2log(w))),i.dateTime&&(v?C=(k=r.time.resolveDTLFormat(s.dateTimeLabelFormats[!s.grid&&v.higherRanks[g]||v.unitName])).main:d(w)&&(C=i.dateTime.getXDateFormat(w,s.dateTimeLabelFormats||{}))),e.isFirst=x,e.isLast=y;var T={axis:i,chart:r,dateTimeLabelFormat:C,isFirst:x,isLast:y,pos:g,tick:e,tickPositionInfo:v,value:w};l(this,\"labelFormat\",T);var A=function A(e){return f.formatter?f.formatter.call(e,e):f.format?(e.text=i.defaultLabelFormatter.call(e),t.format(f.format,e,r)):i.defaultLabelFormatter.call(e);},P=A.call(T,T),L=k&&k.list;L?e.shortenLabel=function(){for(M=0;M<L.length;M++)if(h(T,{dateTimeLabelFormat:L[M]}),S.attr({text:A.call(T,T)}),S.getBBox().width<i.getSlotWidth(e)-2*(f.padding||0))return;S.attr({text:\"\"});}:e.shortenLabel=void 0,b&&i._addedPlotLB&&e.moveLabel(P,f),n(S)||e.movedLabel?S&&S.textStr!==P&&!b&&(!S.textWidth||f.style.width||S.styles.width||S.css({width:null}),S.attr({text:P}),S.textPxLength=S.getBBox().width):(e.label=S=e.createLabel(P,f),e.rotation=0);}},{key:\"createLabel\",value:function createLabel(t,e,i){var s=this.axis,r=s.chart,o=n(t)&&e.enabled?r.renderer.text(t,i===null||i===void 0?void 0:i.x,i===null||i===void 0?void 0:i.y,e.useHTML).add(s.labelGroup):void 0;return o&&(r.styledMode||o.css(c(e.style)),o.textPxLength=o.getBBox().width),o;}},{key:\"destroy\",value:function destroy(){a(this,this.axis);}},{key:\"getPosition\",value:function getPosition(t,e,i,s){var n=this.axis,a=n.chart,h=s&&a.oldChartHeight||a.chartHeight,d={x:t?o(n.translate(e+i,void 0,void 0,s)+n.transB):n.left+n.offset+(n.opposite?(s&&a.oldChartWidth||a.chartWidth)-n.right-n.left:0),y:t?h-n.bottom+n.offset-(n.opposite?n.height:0):o(h-n.translate(e+i,void 0,void 0,s)-n.transB)};return d.y=r(d.y,-1e9,1e9),l(this,\"afterGetPosition\",{pos:d}),d;}},{key:\"getLabelPosition\",value:function getLabelPosition(t,e,i,r,o,a,h,d){var c,p;var g=this.axis,f=g.transA,m=g.isLinked&&g.linkedParent?g.linkedParent.reversed:g.reversed,x=g.staggerLines,y=g.tickRotCorr||{x:0,y:0},b=r||g.reserveSpaceDefault?0:-g.labelOffset*(\"center\"===g.labelAlign?.5:1),v=o.distance,S={};return c=0===g.side?i.rotation?-v:-i.getBBox().height:2===g.side?y.y+v:Math.cos(i.rotation*s)*(y.y-i.getBBox(!1,0).height/2),n(o.y)&&(c=0===g.side&&g.horiz?o.y+c:o.y),t=t+u(o.x,[0,1,0,-1][g.side]*v)+b+y.x-(a&&r?a*f*(m?-1:1):0),e=e+c-(a&&!r?a*f*(m?1:-1):0),x&&(p=h/(d||1)%x,g.opposite&&(p=x-p-1),e+=p*(g.labelOffset/x)),S.x=t,S.y=Math.round(e),l(this,\"afterGetLabelPosition\",{pos:S,tickmarkOffset:a,index:h}),S;}},{key:\"getLabelSize\",value:function getLabelSize(){return this.label?this.label.getBBox()[this.axis.horiz?\"height\":\"width\"]:0;}},{key:\"getMarkPath\",value:function getMarkPath(t,e,i,s){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:!1;var o=arguments.length>5?arguments[5]:undefined;return o.crispLine([[\"M\",t,e],[\"L\",t+(r?0:-i),e+(r?i:0)]],s);}},{key:\"handleOverflow\",value:function handleOverflow(t){var e=this.axis,i=e.options.labels,r=t.x,o=e.chart.chartWidth,n=e.chart.spacing,a=u(e.labelLeft,Math.min(e.pos,n[3])),h=u(e.labelRight,Math.max(e.isRadial?0:e.pos+e.len,o-n[1])),l=this.label,d=this.rotation,c={left:0,center:.5,right:1}[e.labelAlign||l.attr(\"align\")],p=l.getBBox().width,g=e.getSlotWidth(this),f={},m=g,x=1,y,b,v;d||\"justify\"!==i.overflow?d<0&&r-c*p<a?v=Math.round(r/Math.cos(d*s)-a):d>0&&r+c*p>h&&(v=Math.round((o-r)/Math.cos(d*s))):(y=r-c*p,b=r+(1-c)*p,y<a?m=t.x+m*(1-c)-a:b>h&&(m=h-t.x+m*c,x=-1),(m=Math.min(g,m))<g&&\"center\"===e.labelAlign&&(t.x+=x*(g-m-c*(g-Math.min(p,m)))),(p>m||e.autoRotation&&(l.styles||{}).width)&&(v=m)),v&&(this.shortenLabel?this.shortenLabel():(f.width=Math.floor(v)+\"px\",(i.style||{}).textOverflow||(f.textOverflow=\"ellipsis\"),l.css(f)));}},{key:\"moveLabel\",value:function moveLabel(t,e){var i=this,s=i.label,r=i.axis,o=!1,n;s&&s.textStr===t?(i.movedLabel=s,o=!0,delete i.label):p(r.ticks,function(e){o||e.isNew||e===i||!e.label||e.label.textStr!==t||(i.movedLabel=e.label,o=!0,e.labelPos=i.movedLabel.xy,delete e.label);}),!o&&(i.labelPos||s)&&(n=i.labelPos||s.xy,i.movedLabel=i.createLabel(t,e,n),i.movedLabel&&i.movedLabel.attr({opacity:0}));}},{key:\"render\",value:function render(t,e,i){var s=this.axis,r=s.horiz,n=this.pos,a=u(this.tickmarkOffset,s.tickmarkOffset),h=this.getPosition(r,n,a,e),d=h.x,c=h.y,p=s.pos,g=p+s.len,f=r?d:c;!s.chart.polar&&this.isNew&&(o(f)<p||f>g)&&(i=0);var m=u(i,this.label&&this.label.newOpacity,1);i=u(i,1),this.isActive=!0,this.renderGridLine(e,i),this.renderMark(h,i),this.renderLabel(h,e,m,t),this.isNew=!1,l(this,\"afterRender\");}},{key:\"renderGridLine\",value:function renderGridLine(t,e){var i=this.axis,s=i.options,r={},o=this.pos,n=this.type,a=u(this.tickmarkOffset,i.tickmarkOffset),h=i.chart.renderer,l=this.gridLine,d,c=s.gridLineWidth,p=s.gridLineColor,g=s.gridLineDashStyle;\"minor\"===this.type&&(c=s.minorGridLineWidth,p=s.minorGridLineColor,g=s.minorGridLineDashStyle),l||(i.chart.styledMode||(r.stroke=p,r[\"stroke-width\"]=c||0,r.dashstyle=g),n||(r.zIndex=1),t&&(e=0),this.gridLine=l=h.path().attr(r).addClass(\"highcharts-\"+(n?n+\"-\":\"\")+\"grid-line\").add(i.gridGroup)),l&&(d=i.getPlotLinePath({value:o+a,lineWidth:l.strokeWidth(),force:\"pass\",old:t,acrossPanes:!1}))&&l[t||this.isNew?\"attr\":\"animate\"]({d:d,opacity:e});}},{key:\"renderMark\",value:function renderMark(t,e){var i=this.axis,s=i.options,r=i.chart.renderer,o=this.type,n=i.tickSize(o?o+\"Tick\":\"tick\"),a=t.x,h=t.y,l=u(s[\"minor\"!==o?\"tickWidth\":\"minorTickWidth\"],!o&&i.isXAxis?1:0),d=s[\"minor\"!==o?\"tickColor\":\"minorTickColor\"],c=this.mark,p=!c;n&&(i.opposite&&(n[0]=-n[0]),c||(this.mark=c=r.path().addClass(\"highcharts-\"+(o?o+\"-\":\"\")+\"tick\").add(i.axisGroup),i.chart.styledMode||c.attr({stroke:d,\"stroke-width\":l})),c[p?\"attr\":\"animate\"]({d:this.getMarkPath(a,h,n[0],c.strokeWidth(),i.horiz,r),opacity:e}));}},{key:\"renderLabel\",value:function renderLabel(t,e,i,s){var r=this.axis,o=r.horiz,n=r.options,a=this.label,h=n.labels,l=h.step,c=u(this.tickmarkOffset,r.tickmarkOffset),p=t.x,g=t.y,f=!0;a&&d(p)&&(a.xy=t=this.getLabelPosition(p,g,a,o,h,c,s,l),(!this.isFirst||this.isLast||n.showFirstLabel)&&(!this.isLast||this.isFirst||n.showLastLabel)?!o||h.step||h.rotation||e||0===i||this.handleOverflow(t):f=!1,l&&s%l&&(f=!1),f&&d(t.y)?(t.opacity=i,a[this.isNewLabel?\"attr\":\"animate\"](t).show(!0),this.isNewLabel=!1):(a.hide(),this.isNewLabel=!0));}},{key:\"replaceMovedLabel\",value:function replaceMovedLabel(){var t=this.label,e=this.axis;t&&!this.isNew&&(t.animate({opacity:0},void 0,t.destroy),delete this.label),e.isDirty=!0,this.label=this.movedLabel,delete this.movedLabel;}}]);return _class2;}();}),i(e,\"Core/Axis/Axis.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Axis/AxisDefaults.js\"],e[\"Core/Color/Color.js\"],e[\"Core/Defaults.js\"],e[\"Core/Foundation.js\"],e[\"Core/Globals.js\"],e[\"Core/Axis/Tick.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o,n,a){var h=t.animObject,l=e.xAxis,d=e.yAxis,c=s.defaultOptions,p=r.registerEventOptions,u=o.deg2rad,g=a.arrayMax,f=a.arrayMin,m=a.clamp,x=a.correctFloat,y=a.defined,b=a.destroyObjectProperties,v=a.erase,S=a.error,C=a.extend,k=a.fireEvent,M=a.getClosestDistance,w=a.insertItem,T=a.isArray,A=a.isNumber,P=a.isString,L=a.merge,O=a.normalizeTickInterval,D=a.objectEach,E=a.pick,I=a.relativeLength,j=a.removeEvent,B=a.splat,R=a.syncTimeout,z=function z(t,e){return O(e,void 0,void 0,E(t.options.allowDecimals,e<.5||void 0!==t.tickAmount),!!t.tickAmount);};C(c,{xAxis:l,yAxis:L(l,d)});var N=/*#__PURE__*/function(){function N(t,e,i){_classCallCheck(this,N);this.init(t,e,i);}_createClass(N,[{key:\"init\",value:function init(t,e){var _this$type,_this$uniqueNames,_o$uniqueNames,_this$len;var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.coll;var s=\"xAxis\"===i,r=this.isZAxis||(t.inverted?!s:s);this.chart=t,this.horiz=r,this.isXAxis=s,this.coll=i,k(this,\"init\",{userOptions:e}),this.opposite=E(e.opposite,this.opposite),this.side=E(e.side,this.side,r?this.opposite?0:2:this.opposite?1:3),this.setOptions(e);var o=this.options,n=o.labels;(_this$type=this.type)!==null&&_this$type!==void 0?_this$type:this.type=o.type||\"linear\",(_this$uniqueNames=this.uniqueNames)!==null&&_this$uniqueNames!==void 0?_this$uniqueNames:this.uniqueNames=(_o$uniqueNames=o.uniqueNames)!==null&&_o$uniqueNames!==void 0?_o$uniqueNames:!0,k(this,\"afterSetType\"),this.userOptions=e,this.minPixelPadding=0,this.reversed=E(o.reversed,this.reversed),this.visible=o.visible,this.zoomEnabled=o.zoomEnabled,this.hasNames=\"category\"===this.type||!0===o.categories,this.categories=T(o.categories)&&o.categories||(this.hasNames?[]:void 0),this.names||(this.names=[],this.names.keys={}),this.plotLinesAndBandsGroups={},this.positiveValuesOnly=!!this.logarithmic,this.isLinked=y(o.linkedTo),this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},(_this$len=this.len)!==null&&_this$len!==void 0?_this$len:this.len=0,this.minRange=this.userMinRange=o.minRange||o.maxZoom,this.range=o.range,this.offset=o.offset||0,this.max=void 0,this.min=void 0;var a=E(o.crosshair,B(t.options.tooltip.crosshairs)[s?0:1]);this.crosshair=!0===a?{}:a,-1===t.axes.indexOf(this)&&(s?t.axes.splice(t.xAxis.length,0,this):t.axes.push(this),w(this,t[this.coll])),t.orderItems(this.coll),this.series=this.series||[],t.inverted&&!this.isZAxis&&s&&!y(this.reversed)&&(this.reversed=!0),this.labelRotation=A(n.rotation)?n.rotation:void 0,p(this,o),k(this,\"afterInit\");}},{key:\"setOptions\",value:function setOptions(t){var e=this.horiz?{labels:{autoRotation:[-45],padding:4},margin:15}:{labels:{padding:1},title:{rotation:90*this.side}};this.options=L(e,c[this.coll],t),k(this,\"afterSetOptions\",{userOptions:t});}},{key:\"defaultLabelFormatter\",value:function defaultLabelFormatter(){var t=this.axis,e=this.chart.numberFormatter,i=A(this.value)?this.value:NaN,s=t.chart.time,r=t.categories,o=this.dateTimeLabelFormat,n=c.lang,a=n.numericSymbols,h=n.numericSymbolMagnitude||1e3,l=t.logarithmic?Math.abs(i):t.tickInterval,d=a&&a.length,p,u;if(r)u=\"\".concat(this.value);else if(o)u=s.dateFormat(o,i);else if(d&&a&&l>=1e3)for(;d--&&void 0===u;)l>=(p=Math.pow(h,d+1))&&10*i%p==0&&null!==a[d]&&0!==i&&(u=e(i/p,-1)+a[d]);return void 0===u&&(u=Math.abs(i)>=1e4?e(i,-1):e(i,-1,void 0,\"\")),u;}},{key:\"getSeriesExtremes\",value:function getSeriesExtremes(){var t;var e=this;k(this,\"getSeriesExtremes\",null,function(){e.hasVisibleSeries=!1,e.dataMin=e.dataMax=e.threshold=void 0,e.softThreshold=!e.isXAxis,e.series.forEach(function(i){if(i.reserveSpace()){var _s78=i.options,_r18,_o42=_s78.threshold,_n36,_a11;if(e.hasVisibleSeries=!0,e.positiveValuesOnly&&0>=(_o42||0)&&(_o42=void 0),e.isXAxis)(_r18=i.xData)&&_r18.length&&(_r18=e.logarithmic?_r18.filter(function(t){return t>0;}):_r18,_n36=(t=i.getXExtremes(_r18)).min,_a11=t.max,A(_n36)||_n36 instanceof Date||(_r18=_r18.filter(A),_n36=(t=i.getXExtremes(_r18)).min,_a11=t.max),_r18.length&&(e.dataMin=Math.min(E(e.dataMin,_n36),_n36),e.dataMax=Math.max(E(e.dataMax,_a11),_a11)));else{var _t90=i.applyExtremes();A(_t90.dataMin)&&(_n36=_t90.dataMin,e.dataMin=Math.min(E(e.dataMin,_n36),_n36)),A(_t90.dataMax)&&(_a11=_t90.dataMax,e.dataMax=Math.max(E(e.dataMax,_a11),_a11)),y(_o42)&&(e.threshold=_o42),(!_s78.softThreshold||e.positiveValuesOnly)&&(e.softThreshold=!1);}}});}),k(this,\"afterGetSeriesExtremes\");}},{key:\"translate\",value:function translate(t,e,i,s,r,o){var _n$brokenAxis;var n=this.linkedParent||this,a=s&&n.old?n.old.min:n.min;if(!A(a))return NaN;var h=n.minPixelPadding,l=(n.isOrdinal||((_n$brokenAxis=n.brokenAxis)===null||_n$brokenAxis===void 0?void 0:_n$brokenAxis.hasBreaks)||n.logarithmic&&r)&&n.lin2val,d=1,c=0,p=s&&n.old?n.old.transA:n.transA,u=0;return p||(p=n.transA),i&&(d*=-1,c=n.len),n.reversed&&(d*=-1,c-=d*(n.sector||n.len)),e?(u=(t=t*d+c-h)/p+a,l&&(u=n.lin2val(u))):(l&&(t=n.val2lin(t)),u=d*(t-a)*p+c+d*h+(A(o)?p*o:0),n.isRadial||(u=x(u))),u;}},{key:\"toPixels\",value:function toPixels(t,e){return this.translate(t,!1,!this.horiz,void 0,!0)+(e?0:this.pos);}},{key:\"toValue\",value:function toValue(t,e){return this.translate(t-(e?0:this.pos),!0,!this.horiz,void 0,!0);}},{key:\"getPlotLinePath\",value:function getPlotLinePath(t){var e=this,i=e.chart,s=e.left,r=e.top,o=t.old,n=t.value,a=t.lineWidth,h=o&&i.oldChartHeight||i.chartHeight,l=o&&i.oldChartWidth||i.chartWidth,d=e.transB,c=t.translatedValue,p=t.force,u,g,f,x,y;function b(t,e,i){return\"pass\"!==p&&(t<e||t>i)&&(p?t=m(t,e,i):y=!0),t;}var v={value:n,lineWidth:a,old:o,force:p,acrossPanes:t.acrossPanes,translatedValue:c};return k(this,\"getPlotLinePath\",v,function(t){u=f=(c=m(c=E(c,e.translate(n,void 0,void 0,o)),-1e9,1e9))+d,g=x=h-c-d,A(c)?e.horiz?(g=r,x=h-e.bottom+(e.options.isInternal?0:i.scrollablePixelsY||0),u=f=b(u,s,s+e.width)):(u=s,f=l-e.right+(i.scrollablePixelsX||0),g=x=b(g,r,r+e.height)):(y=!0,p=!1),t.path=y&&!p?void 0:i.renderer.crispLine([[\"M\",u,g],[\"L\",f,x]],a||1);}),v.path;}},{key:\"getLinearTickPositions\",value:function getLinearTickPositions(t,e,i){var s,r,o;var n=x(Math.floor(e/t)*t),a=x(Math.ceil(i/t)*t),h=[];if(x(n+t)===n&&(o=20),this.single)return[e];for(s=n;s<=a&&(h.push(s),(s=x(s+t,o))!==r);)r=s;return h;}},{key:\"getMinorTickInterval\",value:function getMinorTickInterval(){var _this$options6=this.options,t=_this$options6.minorTicks,e=_this$options6.minorTickInterval;return!0===t?E(e,\"auto\"):!1!==t?e:void 0;}},{key:\"getMinorTickPositions\",value:function getMinorTickPositions(){var t=this.options,e=this.tickPositions,i=this.minorTickInterval,s=this.pointRangePadding||0,r=(this.min||0)-s,o=(this.max||0)+s,n=o-r,a=[],h;if(n&&n/i<this.len/3){var _s79=this.logarithmic;if(_s79)this.paddedTicks.forEach(function(t,e,r){e&&a.push.apply(a,_s79.getLogTickPositions(i,r[e-1],r[e],!0));});else if(this.dateTime&&\"auto\"===this.getMinorTickInterval())a=a.concat(this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(i),r,o,t.startOfWeek));else for(h=r+(e[0]-r)%i;h<=o&&h!==a[0];h+=i)a.push(h);}return 0!==a.length&&this.trimTicks(a),a;}},{key:\"adjustForMinRange\",value:function adjustForMinRange(){var t=this.options,e=this.logarithmic,i=this.max,s=this.min,r=this.minRange,o,n,a,h;this.isXAxis&&void 0===r&&!e&&(r=y(t.min)||y(t.max)||y(t.floor)||y(t.ceiling)?null:Math.min(5*(M(this.series.map(function(t){var _t$xData;return(t.xIncrement?(_t$xData=t.xData)===null||_t$xData===void 0?void 0:_t$xData.slice(0,2):t.xData)||[];}))||0),this.dataMax-this.dataMin)),A(i)&&A(s)&&A(r)&&i-s<r&&(n=this.dataMax-this.dataMin>=r,o=(r-i+s)/2,a=[s-o,E(t.min,s-o)],n&&(a[2]=e?e.log2lin(this.dataMin):this.dataMin),h=[(s=g(a))+r,E(t.max,s+r)],n&&(h[2]=e?e.log2lin(this.dataMax):this.dataMax),(i=f(h))-s<r&&(a[0]=i-r,a[1]=E(t.min,i-r),s=g(a))),this.minRange=r,this.min=s,this.max=i;}},{key:\"getClosest\",value:function getClosest(){var t,e;if(this.categories)e=1;else{var _i67=[];this.series.forEach(function(t){var _t$xData2;var s=t.closestPointRange;((_t$xData2=t.xData)===null||_t$xData2===void 0?void 0:_t$xData2.length)===1?_i67.push(t.xData[0]):!t.noSharedTooltip&&y(s)&&t.reserveSpace()&&(e=y(e)?Math.min(e,s):s);}),_i67.length&&(_i67.sort(function(t,e){return t-e;}),t=M([_i67]));}return t&&e?Math.min(t,e):t||e;}},{key:\"nameToX\",value:function nameToX(t){var e=T(this.options.categories),i=e?this.categories:this.names,s=t.options.x,r;return t.series.requireSorting=!1,y(s)||(s=this.uniqueNames&&i?e?i.indexOf(t.name):E(i.keys[t.name],-1):t.series.autoIncrement()),-1===s?!e&&i&&(r=i.length):r=s,void 0!==r?(this.names[r]=t.name,this.names.keys[t.name]=r):t.x&&(r=t.x),r;}},{key:\"updateNames\",value:function updateNames(){var t=this,e=this.names;e.length>0&&(Object.keys(e.keys).forEach(function(t){delete e.keys[t];}),e.length=0,this.minRange=this.userMinRange,(this.series||[]).forEach(function(e){e.xIncrement=null,(!e.points||e.isDirtyData)&&(t.max=Math.max(t.max,e.xData.length-1),e.processData(),e.generatePoints()),e.data.forEach(function(i,s){var r;(i===null||i===void 0?void 0:i.options)&&void 0!==i.name&&void 0!==(r=t.nameToX(i))&&r!==i.x&&(i.x=r,e.xData[s]=r);});}));}},{key:\"setAxisTranslation\",value:function setAxisTranslation(){var t=this,e=t.max-t.min,i=t.linkedParent,s=!!t.categories,r=t.isXAxis,o=t.axisPointRange||0,n,a=0,h=0,l,d=t.transA;(r||s||o)&&(n=t.getClosest(),i?(a=i.minPointOffset,h=i.pointRangePadding):t.series.forEach(function(e){var i=s?1:r?E(e.options.pointRange,n,0):t.axisPointRange||0,l=e.options.pointPlacement;if(o=Math.max(o,i),!t.single||s){var _t91=e.is(\"xrange\")?!r:r;a=Math.max(a,_t91&&P(l)?0:i/2),h=Math.max(h,_t91&&\"on\"===l?0:i);}}),l=t.ordinal&&t.ordinal.slope&&n?t.ordinal.slope/n:1,t.minPointOffset=a*=l,t.pointRangePadding=h*=l,t.pointRange=Math.min(o,t.single&&s?1:e),r&&n&&(t.closestPointRange=n)),t.translationSlope=t.transA=d=t.staticScale||t.len/(e+h||1),t.transB=t.horiz?t.left:t.bottom,t.minPixelPadding=d*a,k(this,\"afterSetAxisTranslation\");}},{key:\"minFromRange\",value:function minFromRange(){var t=this.max,e=this.min;return A(t)&&A(e)&&t-e||void 0;}},{key:\"setTickInterval\",value:function setTickInterval(t){var _i$this$coll;var e=this.categories,i=this.chart,s=this.dataMax,r=this.dataMin,o=this.dateTime,n=this.isXAxis,a=this.logarithmic,h=this.options,l=this.softThreshold,d=A(this.threshold)?this.threshold:void 0,c=this.minRange||0,p=h.ceiling,u=h.floor,g=h.linkedTo,f=h.softMax,m=h.softMin,b=A(g)&&((_i$this$coll=i[this.coll])===null||_i$this$coll===void 0?void 0:_i$this$coll[g]),v=h.tickPixelInterval,C=h.maxPadding,M=h.minPadding,w=0,T,P=A(h.tickInterval)&&h.tickInterval>=0?h.tickInterval:void 0,L,O,D,I;if(o||e||b||this.getTickAmount(),D=E(this.userMin,h.min),I=E(this.userMax,h.max),b?(this.linkedParent=b,T=b.getExtremes(),this.min=E(T.min,T.dataMin),this.max=E(T.max,T.dataMax),this.type!==b.type&&S(11,!0,i)):(l&&y(d)&&A(s)&&A(r)&&(r>=d?(L=d,M=0):s<=d&&(O=d,C=0)),this.min=E(D,L,r),this.max=E(I,O,s)),A(this.max)&&A(this.min)&&(a&&(this.positiveValuesOnly&&!t&&0>=Math.min(this.min,E(r,this.min))&&S(10,!0,i),this.min=x(a.log2lin(this.min),16),this.max=x(a.log2lin(this.max),16)),this.range&&A(r)&&(this.userMin=this.min=D=Math.max(r,this.minFromRange()||0),this.userMax=I=this.max,this.range=void 0)),k(this,\"foundExtremes\"),this.adjustForMinRange(),A(this.min)&&A(this.max)){var _this$stacking;if(!A(this.userMin)&&A(m)&&m<this.min&&(this.min=D=m),!A(this.userMax)&&A(f)&&f>this.max&&(this.max=I=f),e||this.axisPointRange||(_this$stacking=this.stacking)!==null&&_this$stacking!==void 0&&_this$stacking.usePercentage||b||!(w=this.max-this.min)||(!y(D)&&M&&(this.min-=w*M),y(I)||!C||(this.max+=w*C)),!A(this.userMin)&&A(u)&&(this.min=Math.max(this.min,u)),!A(this.userMax)&&A(p)&&(this.max=Math.min(this.max,p)),l&&A(r)&&A(s)){var _t92=d||0;!y(D)&&this.min<_t92&&r>=_t92?this.min=h.minRange?Math.min(_t92,this.max-c):_t92:!y(I)&&this.max>_t92&&s<=_t92&&(this.max=h.minRange?Math.max(_t92,this.min+c):_t92);}!i.polar&&this.min>this.max&&(y(h.min)?this.max=this.min:y(h.max)&&(this.min=this.max)),w=this.max-this.min;}if(this.min!==this.max&&A(this.min)&&A(this.max)?b&&!P&&v===b.options.tickPixelInterval?this.tickInterval=P=b.tickInterval:this.tickInterval=E(P,this.tickAmount?w/Math.max(this.tickAmount-1,1):void 0,e?1:w*v/Math.max(this.len,v)):this.tickInterval=1,n&&!t){var _this$old,_this$old2;var _t93=this.min!==((_this$old=this.old)===null||_this$old===void 0?void 0:_this$old.min)||this.max!==((_this$old2=this.old)===null||_this$old2===void 0?void 0:_this$old2.max);this.series.forEach(function(e){var _e$forceCropping;e.forceCrop=(_e$forceCropping=e.forceCropping)===null||_e$forceCropping===void 0?void 0:_e$forceCropping.call(e),e.processData(_t93);}),k(this,\"postProcessData\",{hasExtremesChanged:_t93});}this.setAxisTranslation(),k(this,\"initialAxisTranslation\"),this.pointRange&&!P&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));var j=E(h.minTickInterval,o&&!this.series.some(function(t){return t.noSharedTooltip;})?this.closestPointRange:0);!P&&this.tickInterval<j&&(this.tickInterval=j),o||a||P||(this.tickInterval=z(this,this.tickInterval)),this.tickAmount||(this.tickInterval=this.unsquish()),this.setTickPositions();}},{key:\"setTickPositions\",value:function setTickPositions(){var t=this.options,e=t.tickPositions,i=t.tickPositioner,s=this.getMinorTickInterval(),r=!this.isPanning,o=r&&t.startOnTick,n=r&&t.endOnTick,a=[],h;if(this.tickmarkOffset=this.categories&&\"between\"===t.tickmarkPlacement&&1===this.tickInterval?.5:0,this.single=this.min===this.max&&y(this.min)&&!this.tickAmount&&(this.min%1==0||!1!==t.allowDecimals),e)a=e.slice();else if(A(this.min)&&A(this.max)){var _this$ordinal,_this$ordinal2;if(!((_this$ordinal=this.ordinal)!==null&&_this$ordinal!==void 0&&_this$ordinal.positions)&&(this.max-this.min)/this.tickInterval>Math.max(2*this.len,200))a=[this.min,this.max],S(19,!1,this.chart);else if(this.dateTime)a=this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,t.units),this.min,this.max,t.startOfWeek,(_this$ordinal2=this.ordinal)===null||_this$ordinal2===void 0?void 0:_this$ordinal2.positions,this.closestPointRange,!0);else if(this.logarithmic)a=this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max);else{var _t94=this.tickInterval,_e105=_t94;for(;_e105<=2*_t94;)if(a=this.getLinearTickPositions(this.tickInterval,this.min,this.max),this.tickAmount&&a.length>this.tickAmount)this.tickInterval=z(this,_e105*=1.1);else break;}a.length>this.len&&(a=[a[0],a[a.length-1]])[0]===a[1]&&(a.length=1),i&&(this.tickPositions=a,(h=i.apply(this,[this.min,this.max]))&&(a=h));}this.tickPositions=a,this.minorTickInterval=\"auto\"===s&&this.tickInterval?this.tickInterval/t.minorTicksPerMajor:s,this.paddedTicks=a.slice(0),this.trimTicks(a,o,n),!this.isLinked&&A(this.min)&&A(this.max)&&(this.single&&a.length<2&&!this.categories&&!this.series.some(function(t){return t.is(\"heatmap\")&&\"between\"===t.options.pointPlacement;})&&(this.min-=.5,this.max+=.5),e||h||this.adjustTickAmount()),k(this,\"afterSetTickPositions\");}},{key:\"trimTicks\",value:function trimTicks(t,e,i){var s=t[0],r=t[t.length-1],o=!this.isOrdinal&&this.minPointOffset||0;if(k(this,\"trimTicks\"),!this.isLinked){if(e&&s!==-1/0)this.min=s;else for(;this.min-o>t[0];)t.shift();if(i)this.max=r;else for(;this.max+o<t[t.length-1];)t.pop();0===t.length&&y(s)&&!this.options.tickPositions&&t.push((r+s)/2);}}},{key:\"alignToOthers\",value:function alignToOthers(){var t;var e=this,i=e.chart,s=[this],r=e.options,o=i.options.chart,n=\"yAxis\"===this.coll&&o.alignThresholds,a=[];if(e.thresholdAlignment=void 0,(!1!==o.alignTicks&&r.alignTicks||n)&&!1!==r.startOnTick&&!1!==r.endOnTick&&!e.logarithmic){var _r19=function _r19(t){var e=t.horiz,i=t.options;return[e?i.left:i.top,i.width,i.height,i.pane].join(\",\");},_o43=_r19(this);i[this.coll].forEach(function(i){var n=i.series;n.length&&n.some(function(t){return t.visible;})&&i!==e&&_r19(i)===_o43&&(t=!0,s.push(i));});}if(t&&n){s.forEach(function(t){var i=t.getThresholdAlignment(e);A(i)&&a.push(i);});var _t95=a.length>1?a.reduce(function(t,e){return t+=e;},0)/a.length:void 0;s.forEach(function(e){e.thresholdAlignment=_t95;});}return t;}},{key:\"getThresholdAlignment\",value:function getThresholdAlignment(t){if((!A(this.dataMin)||this!==t&&this.series.some(function(t){return t.isDirty||t.isDirtyData;}))&&this.getSeriesExtremes(),A(this.threshold)){var _t96=m((this.threshold-(this.dataMin||0))/((this.dataMax||0)-(this.dataMin||0)),0,1);return this.options.reversed&&(_t96=1-_t96),_t96;}}},{key:\"getTickAmount\",value:function getTickAmount(){var t=this.options,e=t.tickPixelInterval,i=t.tickAmount;y(t.tickInterval)||i||!(this.len<e)||this.isRadial||this.logarithmic||!t.startOnTick||!t.endOnTick||(i=2),!i&&this.alignToOthers()&&(i=Math.ceil(this.len/e)+1),i<4&&(this.finalTickAmt=i,i=5),this.tickAmount=i;}},{key:\"adjustTickAmount\",value:function adjustTickAmount(){var t=this,e=t.finalTickAmt,i=t.max,s=t.min,r=t.options,o=t.tickPositions,n=t.tickAmount,a=t.thresholdAlignment,h=o===null||o===void 0?void 0:o.length,l=E(t.threshold,t.softThreshold?0:null),d,c,p=t.tickInterval,u,g=function g(){return o.push(x(o[o.length-1]+p));},f=function f(){return o.unshift(x(o[0]-p));};if(A(a)&&(u=a<.5?Math.ceil(a*(n-1)):Math.floor(a*(n-1)),r.reversed&&(u=n-1-u)),t.hasData()&&A(s)&&A(i)){var _a12=function _a12(){t.transA*=(h-1)/(n-1),t.min=r.startOnTick?o[0]:Math.min(s,o[0]),t.max=r.endOnTick?o[o.length-1]:Math.max(i,o[o.length-1]);};if(A(u)&&A(t.threshold)){for(;o[u]!==l||o.length!==n||o[0]>s||o[o.length-1]<i;){for(o.length=0,o.push(t.threshold);o.length<n;)void 0===o[u]||o[u]>t.threshold?f():g();if(p>8*t.tickInterval)break;p*=2;}_a12();}else if(h<n){for(;o.length<n;)o.length%2||s===l?g():f();_a12();}if(y(e)){for(c=d=o.length;c--;)(3===e&&c%2==1||e<=2&&c>0&&c<d-1)&&o.splice(c,1);t.finalTickAmt=void 0;}}}},{key:\"setScale\",value:function setScale(){var _this$old3,_this$old4;var t=this.coll,e=this.stacking,i=!1,s=!1;this.series.forEach(function(t){i=i||t.isDirtyData||t.isDirty,s=s||t.xAxis&&t.xAxis.isDirty||!1;}),this.setAxisSize();var r=this.len!==(this.old&&this.old.len);r||i||s||this.isLinked||this.forceRedraw||this.userMin!==(this.old&&this.old.userMin)||this.userMax!==(this.old&&this.old.userMax)||this.alignToOthers()?(e&&\"yAxis\"===t&&e.buildStacks(),this.forceRedraw=!1,this.userMinRange||(this.minRange=void 0),this.getSeriesExtremes(),this.setTickInterval(),e&&\"xAxis\"===t&&e.buildStacks(),this.isDirty||(this.isDirty=r||this.min!==((_this$old3=this.old)===null||_this$old3===void 0?void 0:_this$old3.min)||this.max!==((_this$old4=this.old)===null||_this$old4===void 0?void 0:_this$old4.max))):e&&e.cleanStacks(),i&&delete this.allExtremes,k(this,\"afterSetScale\");}},{key:\"setExtremes\",value:function setExtremes(t,e){var _this26=this;var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:!0;var s=arguments.length>3?arguments[3]:undefined;var r=arguments.length>4?arguments[4]:undefined;this.series.forEach(function(t){delete t.kdTree;}),k(this,\"setExtremes\",r=C(r,{min:t,max:e}),function(t){_this26.userMin=t.min,_this26.userMax=t.max,_this26.eventArgs=t,i&&_this26.chart.redraw(s);});}},{key:\"setAxisSize\",value:function setAxisSize(){var t=this.chart,e=this.options,i=e.offsets||[0,0,0,0],s=this.horiz,r=this.width=Math.round(I(E(e.width,t.plotWidth-i[3]+i[1]),t.plotWidth)),o=this.height=Math.round(I(E(e.height,t.plotHeight-i[0]+i[2]),t.plotHeight)),n=this.top=Math.round(I(E(e.top,t.plotTop+i[0]),t.plotHeight,t.plotTop)),a=this.left=Math.round(I(E(e.left,t.plotLeft+i[3]),t.plotWidth,t.plotLeft));this.bottom=t.chartHeight-o-n,this.right=t.chartWidth-r-a,this.len=Math.max(s?r:o,0),this.pos=s?a:n;}},{key:\"getExtremes\",value:function getExtremes(){var t=this.logarithmic;return{min:t?x(t.lin2log(this.min)):this.min,max:t?x(t.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax};}},{key:\"getThreshold\",value:function getThreshold(t){var e=this.logarithmic,i=e?e.lin2log(this.min):this.min,s=e?e.lin2log(this.max):this.max;return null===t||t===-1/0?t=i:t===1/0?t=s:i>t?t=i:s<t&&(t=s),this.translate(t,0,1,0,1);}},{key:\"autoLabelAlign\",value:function autoLabelAlign(t){var e=(E(t,0)-90*this.side+720)%360,i={align:\"center\"};return k(this,\"autoLabelAlign\",i,function(t){e>15&&e<165?t.align=\"right\":e>195&&e<345&&(t.align=\"left\");}),i.align;}},{key:\"tickSize\",value:function tickSize(t){var e=this.options,i=E(e[\"tick\"===t?\"tickWidth\":\"minorTickWidth\"],\"tick\"===t&&this.isXAxis&&!this.categories?1:0),s=e[\"tick\"===t?\"tickLength\":\"minorTickLength\"],r;i&&s&&(\"inside\"===e[t+\"Position\"]&&(s=-s),r=[s,i]);var o={tickSize:r};return k(this,\"afterTickSize\",o),o.tickSize;}},{key:\"labelMetrics\",value:function labelMetrics(){var t=this.chart.renderer,e=this.ticks,i=e[Object.keys(e)[0]]||{};return this.chart.renderer.fontMetrics(i.label||i.movedLabel||t.box);}},{key:\"unsquish\",value:function unsquish(){var t=this.options.labels,e=t.padding||0,i=this.horiz,s=this.tickInterval,r=this.len/(((this.categories?1:0)+this.max-this.min)/s),o=t.rotation,n=x(.8*this.labelMetrics().h),a=Math.max(this.max-this.min,0),h=function h(t){var i=(t+2*e)/(r||1);return(i=i>1?Math.ceil(i):1)*s>a&&t!==1/0&&r!==1/0&&a&&(i=Math.ceil(a/s)),x(i*s);},l=s,d,c=Number.MAX_VALUE,p;if(i){if(!t.staggerLines&&(A(o)?p=[o]:r<t.autoRotationLimit&&(p=t.autoRotation)),p){var _t97,_e106;var _iteratorNormalCompletion7=true;var _didIteratorError7=false;var _iteratorError7=undefined;try{for(var _iterator7=p[Symbol.iterator](),_step7;!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=true){var _i68=_step7.value;(_i68===o||_i68&&_i68>=-90&&_i68<=90)&&(_e106=(_t97=h(Math.abs(n/Math.sin(u*_i68))))+Math.abs(_i68/360))<c&&(c=_e106,d=_i68,l=_t97);}}catch(err){_didIteratorError7=true;_iteratorError7=err;}finally{try{if(!_iteratorNormalCompletion7&&_iterator7[\"return\"]!=null){_iterator7[\"return\"]();}}finally{if(_didIteratorError7){throw _iteratorError7;}}}}}else l=h(.75*n);return this.autoRotation=p,this.labelRotation=E(d,A(o)?o:0),t.step?s:l;}},{key:\"getSlotWidth\",value:function getSlotWidth(t){var e=this.chart,i=this.horiz,s=this.options.labels,r=Math.max(this.tickPositions.length-(this.categories?0:1),1),o=e.margin[3];if(t&&A(t.slotWidth))return t.slotWidth;if(i&&s.step<2)return s.rotation?0:(this.staggerLines||1)*this.len/r;if(!i){var _t98=s.style.width;if(void 0!==_t98)return parseInt(String(_t98),10);if(o)return o-e.spacing[3];}return .33*e.chartWidth;}},{key:\"renderUnsquish\",value:function renderUnsquish(){var t=this.chart,e=t.renderer,i=this.tickPositions,s=this.ticks,r=this.options.labels,o=r.style,n=this.horiz,a=this.getSlotWidth(),h=Math.max(1,Math.round(a-(n?2*(r.padding||0):r.distance||0))),l={},d=this.labelMetrics(),c=o.textOverflow,p,u,g=0,f,m;if(P(r.rotation)||(l.rotation=r.rotation||0),i.forEach(function(t){var e=s[t];e.movedLabel&&e.replaceMovedLabel(),e&&e.label&&e.label.textPxLength>g&&(g=e.label.textPxLength);}),this.maxLabelLength=g,this.autoRotation)g>h&&g>d.h?l.rotation=this.labelRotation:this.labelRotation=0;else if(a&&(p=h,!c))for(u=\"clip\",m=i.length;!n&&m--;)(f=s[i[m]].label)&&(\"ellipsis\"===f.styles.textOverflow?f.css({textOverflow:\"clip\"}):f.textPxLength>a&&f.css({width:a+\"px\"}),f.getBBox().height>this.len/i.length-(d.h-d.f)&&(f.specificTextOverflow=\"ellipsis\"));l.rotation&&(p=g>.5*t.chartHeight?.33*t.chartHeight:g,c||(u=\"ellipsis\")),this.labelAlign=r.align||this.autoLabelAlign(this.labelRotation),this.labelAlign&&(l.align=this.labelAlign),i.forEach(function(t){var e=s[t],i=e&&e.label,r=o.width,n={};i&&(i.attr(l),e.shortenLabel?e.shortenLabel():p&&!r&&\"nowrap\"!==o.whiteSpace&&(p<i.textPxLength||\"SPAN\"===i.element.tagName)?(n.width=p+\"px\",c||(n.textOverflow=i.specificTextOverflow||u),i.css(n)):!i.styles.width||n.width||r||i.css({width:null}),delete i.specificTextOverflow,e.rotation=l.rotation);},this),this.tickRotCorr=e.rotCorr(d.b,this.labelRotation||0,0!==this.side);}},{key:\"hasData\",value:function hasData(){return this.series.some(function(t){return t.hasData();})||this.options.showEmpty&&y(this.min)&&y(this.max);}},{key:\"addTitle\",value:function addTitle(t){var e;var i=this.chart.renderer,s=this.horiz,r=this.opposite,o=this.options.title,n=this.chart.styledMode;this.axisTitle||((e=o.textAlign)||(e=(s?{low:\"left\",middle:\"center\",high:\"right\"}:{low:r?\"right\":\"left\",middle:\"center\",high:r?\"left\":\"right\"})[o.align]),this.axisTitle=i.text(o.text||\"\",0,0,o.useHTML).attr({zIndex:7,rotation:o.rotation||0,align:e}).addClass(\"highcharts-axis-title\"),n||this.axisTitle.css(L(o.style)),this.axisTitle.add(this.axisGroup),this.axisTitle.isNew=!0),n||o.style.width||this.isRadial||this.axisTitle.css({width:this.len+\"px\"}),this.axisTitle[t?\"show\":\"hide\"](t);}},{key:\"generateTick\",value:function generateTick(t){var e=this.ticks;e[t]?e[t].addLabel():e[t]=new n(this,t);}},{key:\"createGroups\",value:function createGroups(){var _this27=this;var t=this.axisParent,e=this.chart,i=this.coll,s=this.options,r=e.renderer,o=function o(e,_o44,n){return r.g(e).attr({zIndex:n}).addClass(\"highcharts-\".concat(i.toLowerCase()).concat(_o44,\" \")+(_this27.isRadial?\"highcharts-radial-axis\".concat(_o44,\" \"):\"\")+(s.className||\"\")).add(t);};this.axisGroup||(this.gridGroup=o(\"grid\",\"-grid\",s.gridZIndex),this.axisGroup=o(\"axis\",\"\",s.zIndex),this.labelGroup=o(\"axis-labels\",\"-labels\",s.labels.zIndex));}},{key:\"getOffset\",value:function getOffset(){var t=this,e=t.chart,i=t.horiz,s=t.options,r=t.side,o=t.ticks,n=t.tickPositions,a=t.coll,h=e.inverted&&!t.isZAxis?[1,0,3,2][r]:r,l=t.hasData(),d=s.title,c=s.labels,p=A(s.crossing),u=e.axisOffset,g=e.clipOffset,f=[-1,1,1,-1][r],m,x=0,b,v=0,S=0,C,M;if(t.showAxis=m=l||s.showEmpty,t.staggerLines=t.horiz&&c.staggerLines||void 0,t.createGroups(),l||t.isLinked?(n.forEach(function(e){t.generateTick(e);}),t.renderUnsquish(),t.reserveSpaceDefault=0===r||2===r||{1:\"left\",3:\"right\"}[r]===t.labelAlign,E(c.reserveSpace,!p&&null,\"center\"===t.labelAlign||null,t.reserveSpaceDefault)&&n.forEach(function(t){S=Math.max(o[t].getLabelSize(),S);}),t.staggerLines&&(S*=t.staggerLines),t.labelOffset=S*(t.opposite?-1:1)):D(o,function(t,e){t.destroy(),delete o[e];}),d!==null&&d!==void 0&&d.text&&!1!==d.enabled&&(t.addTitle(m),m&&!p&&!1!==d.reserveSpace&&(t.titleOffset=x=t.axisTitle.getBBox()[i?\"height\":\"width\"],v=y(b=d.offset)?0:E(d.margin,i?5:10))),t.renderLine(),t.offset=f*E(s.offset,u[r]?u[r]+(s.margin||0):0),t.tickRotCorr=t.tickRotCorr||{x:0,y:0},M=0===r?-t.labelMetrics().h:2===r?t.tickRotCorr.y:0,C=Math.abs(S)+v,S&&(C-=M,C+=f*(i?E(c.y,t.tickRotCorr.y+f*c.distance):E(c.x,f*c.distance))),t.axisTitleMargin=E(b,C),t.getMaxLabelDimensions&&(t.maxLabelDimensions=t.getMaxLabelDimensions(o,n)),\"colorAxis\"!==a&&g){var _e107=this.tickSize(\"tick\");u[r]=Math.max(u[r],(t.axisTitleMargin||0)+x+f*t.offset,C,n&&n.length&&_e107?_e107[0]+f*t.offset:0);var _i69=!t.axisLine||s.offset?0:t.axisLine.strokeWidth()/2;g[h]=Math.max(g[h],_i69);}k(this,\"afterGetOffset\");}},{key:\"getLinePath\",value:function getLinePath(t){var e=this.chart,i=this.opposite,s=this.offset,r=this.horiz,o=this.left+(i?this.width:0)+s,n=e.chartHeight-this.bottom-(i?this.height:0)+s;return i&&(t*=-1),e.renderer.crispLine([[\"M\",r?this.left:o,r?n:this.top],[\"L\",r?e.chartWidth-this.right:o,r?n:e.chartHeight-this.bottom]],t);}},{key:\"renderLine\",value:function renderLine(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass(\"highcharts-axis-line\").add(this.axisGroup),this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,\"stroke-width\":this.options.lineWidth,zIndex:7}));}},{key:\"getTitlePosition\",value:function getTitlePosition(t){var e=this.horiz,i=this.left,s=this.top,r=this.len,o=this.options.title,n=e?i:s,a=this.opposite,h=this.offset,l=o.x,d=o.y,c=this.chart.renderer.fontMetrics(t),p=t?Math.max(t.getBBox(!1,0).height-c.h-1,0):0,u={low:n+(e?0:r),middle:n+r/2,high:n+(e?r:0)}[o.align],g=(e?s+this.height:i)+(e?1:-1)*(a?-1:1)*(this.axisTitleMargin||0)+[-p,p,c.f,-p][this.side],f={x:e?u+l:g+(a?this.width:0)+h+l,y:e?g+d-(a?this.height:0)+h:u+d};return k(this,\"afterGetTitlePosition\",{titlePosition:f}),f;}},{key:\"renderMinorTick\",value:function renderMinorTick(t,e){var i=this.minorTicks;i[t]||(i[t]=new n(this,t,\"minor\")),e&&i[t].isNew&&i[t].render(null,!0),i[t].render(null,!1,1);}},{key:\"renderTick\",value:function renderTick(t,e,i){var s=this.isLinked,r=this.ticks;(!s||t>=this.min&&t<=this.max||this.grid&&this.grid.isColumn)&&(r[t]||(r[t]=new n(this,t)),i&&r[t].isNew&&r[t].render(e,!0,-1),r[t].render(e));}},{key:\"render\",value:function render(){var t,e;var i=this,s=i.chart,r=i.logarithmic,a=s.renderer,l=i.options,d=i.isLinked,c=i.tickPositions,p=i.axisTitle,u=i.ticks,g=i.minorTicks,f=i.alternateBands,m=l.stackLabels,x=l.alternateGridColor,y=l.crossing,b=i.tickmarkOffset,v=i.axisLine,S=i.showAxis,C=h(a.globalAnimation);if(i.labelEdge.length=0,i.overlap=!1,[u,g,f].forEach(function(t){D(t,function(t){t.isActive=!1;});}),A(y)){var _t99=this.isXAxis?s.yAxis[0]:s.xAxis[0],_e108=[1,-1,-1,1][this.side];if(_t99){var _s80=_t99.toPixels(y,!0);i.horiz&&(_s80=_t99.len-_s80),i.offset=_e108*_s80;}}if(i.hasData()||d){var _a13=i.chart.hasRendered&&i.old&&A(i.old.min);i.minorTickInterval&&!i.categories&&i.getMinorTickPositions().forEach(function(t){i.renderMinorTick(t,_a13);}),c.length&&(c.forEach(function(t,e){i.renderTick(t,e,_a13);}),b&&(0===i.min||i.single)&&(u[-1]||(u[-1]=new n(i,-1,null,!0)),u[-1].render(-1))),x&&c.forEach(function(n,a){e=void 0!==c[a+1]?c[a+1]+b:i.max-b,a%2==0&&n<i.max&&e<=i.max+(s.polar?-b:b)&&(f[n]||(f[n]=new o.PlotLineOrBand(i,{})),t=n+b,f[n].options={from:r?r.lin2log(t):t,to:r?r.lin2log(e):e,color:x,className:\"highcharts-alternate-grid\"},f[n].render(),f[n].isActive=!0);}),i._addedPlotLB||(i._addedPlotLB=!0,(l.plotLines||[]).concat(l.plotBands||[]).forEach(function(t){i.addPlotBandOrLine(t);}));}[u,g,f].forEach(function(t){var e=[],i=C.duration;D(t,function(t,i){t.isActive||(t.render(i,!1,0),t.isActive=!1,e.push(i));}),R(function(){var i=e.length;for(;i--;)t[e[i]]&&!t[e[i]].isActive&&(t[e[i]].destroy(),delete t[e[i]]);},t!==f&&s.hasRendered&&i?i:0);}),v&&(v[v.isPlaced?\"animate\":\"attr\"]({d:this.getLinePath(v.strokeWidth())}),v.isPlaced=!0,v[S?\"show\":\"hide\"](S)),p&&S&&(p[p.isNew?\"attr\":\"animate\"](i.getTitlePosition(p)),p.isNew=!1),m&&m.enabled&&i.stacking&&i.stacking.renderStackTotals(),i.old={len:i.len,max:i.max,min:i.min,transA:i.transA,userMax:i.userMax,userMin:i.userMin},i.isDirty=!1,k(this,\"afterRender\");}},{key:\"redraw\",value:function redraw(){this.visible&&(this.render(),this.plotLinesAndBands.forEach(function(t){t.render();})),this.series.forEach(function(t){t.isDirty=!0;});}},{key:\"getKeepProps\",value:function getKeepProps(){return this.keepProps||N.keepProps;}},{key:\"destroy\",value:function destroy(t){var e=this,i=e.plotLinesAndBands,s=this.eventOptions;if(k(this,\"destroy\",{keepEvents:t}),t||j(e),[e.ticks,e.minorTicks,e.alternateBands].forEach(function(t){b(t);}),i){var _t100=i.length;for(;_t100--;)i[_t100].destroy();}for(var _t101 in[\"axisLine\",\"axisTitle\",\"axisGroup\",\"gridGroup\",\"labelGroup\",\"cross\",\"scrollbar\"].forEach(function(t){e[t]&&(e[t]=e[t].destroy());}),e.plotLinesAndBandsGroups)e.plotLinesAndBandsGroups[_t101]=e.plotLinesAndBandsGroups[_t101].destroy();D(e,function(t,i){-1===e.getKeepProps().indexOf(i)&&delete e[i];}),this.eventOptions=s;}},{key:\"drawCrosshair\",value:function drawCrosshair(t,e){var s=this.crosshair,r=E(s&&s.snap,!0),o=this.chart,n,a,h,l=this.cross,d;if(k(this,\"drawCrosshair\",{e:t,point:e}),t||(t=this.cross&&this.cross.e),s&&!1!==(y(e)||!r)){if(r?y(e)&&(a=E(\"colorAxis\"!==this.coll?e.crosshairPos:null,this.isXAxis?e.plotX:this.len-e.plotY)):a=t&&(this.horiz?t.chartX-this.pos:this.len-t.chartY+this.pos),y(a)&&(d={value:e&&(this.isXAxis?e.x:E(e.stackY,e.y)),translatedValue:a},o.polar&&C(d,{isCrosshair:!0,chartX:t&&t.chartX,chartY:t&&t.chartY,point:e}),n=this.getPlotLinePath(d)||null),!y(n)){this.hideCrosshair();return;}h=this.categories&&!this.isRadial,l||(this.cross=l=o.renderer.path().addClass(\"highcharts-crosshair highcharts-crosshair-\"+(h?\"category \":\"thin \")+(s.className||\"\")).attr({zIndex:E(s.zIndex,2)}).add(),!o.styledMode&&(l.attr({stroke:s.color||(h?i.parse(\"#ccd3ff\").setOpacity(.25).get():\"#cccccc\"),\"stroke-width\":E(s.width,1)}).css({\"pointer-events\":\"none\"}),s.dashStyle&&l.attr({dashstyle:s.dashStyle}))),l.show().attr({d:n}),h&&!s.width&&l.attr({\"stroke-width\":this.transA}),this.cross.e=t;}else this.hideCrosshair();k(this,\"afterDrawCrosshair\",{e:t,point:e});}},{key:\"hideCrosshair\",value:function hideCrosshair(){this.cross&&this.cross.hide(),k(this,\"afterHideCrosshair\");}},{key:\"update\",value:function update(t,e){var i=this.chart;t=L(this.userOptions,t),this.destroy(!0),this.init(i,t),i.isDirtyBox=!0,E(e,!0)&&i.redraw();}},{key:\"remove\",value:function remove(t){var e=this.chart,i=this.coll,s=this.series,r=s.length;for(;r--;)s[r]&&s[r].remove(!1);v(e.axes,this),v(e[i]||[],this),e.orderItems(i),this.destroy(),e.isDirtyBox=!0,E(t,!0)&&e.redraw();}},{key:\"setTitle\",value:function setTitle(t,e){this.update({title:t},e);}},{key:\"setCategories\",value:function setCategories(t,e){this.update({categories:t},e);}}]);return N;}();return N.keepProps=[\"coll\",\"extKey\",\"hcEvents\",\"len\",\"names\",\"series\",\"userMax\",\"userMin\"],N;}),i(e,\"Core/Axis/DateTimeAxis.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.addEvent,s=t.getMagnitude,r=t.normalizeTickInterval,o=t.timeUnits;return function(t){function e(){return this.chart.time.getTimeTicks.apply(this.chart.time,arguments);}function n(){if(\"datetime\"!==this.type){this.dateTime=void 0;return;}this.dateTime||(this.dateTime=new a(this));}t.compose=function(t){return t.keepProps.includes(\"dateTime\")||(t.keepProps.push(\"dateTime\"),t.prototype.getTimeTicks=e,i(t,\"afterSetType\",n)),t;};var a=/*#__PURE__*/function(){function a(t){_classCallCheck(this,a);this.axis=t;}_createClass(a,[{key:\"normalizeTimeTickInterval\",value:function normalizeTimeTickInterval(t,e){var i=e||[[\"millisecond\",[1,2,5,10,20,25,50,100,200,500]],[\"second\",[1,2,5,10,15,30]],[\"minute\",[1,2,5,10,15,30]],[\"hour\",[1,2,3,4,6,8,12]],[\"day\",[1,2]],[\"week\",[1,2]],[\"month\",[1,2,3,4,6]],[\"year\",null]],n=i[i.length-1],_a14=o[n[0]],h=n[1],l;for(l=0;l<i.length&&(_a14=o[(n=i[l])[0]],h=n[1],!i[l+1]||!(t<=(_a14*h[h.length-1]+o[i[l+1][0]])/2));l++);_a14===o.year&&t<5*_a14&&(h=[1,2,5]);var d=r(t/_a14,h,\"year\"===n[0]?Math.max(s(t/_a14),1):1);return{unitRange:_a14,count:d,unitName:n[0]};}},{key:\"getXDateFormat\",value:function getXDateFormat(t,e){var i=this.axis,s=i.chart.time;return i.closestPointRange?s.getDateFormat(i.closestPointRange,t,i.options.startOfWeek,e)||s.resolveDTLFormat(e.year).main:s.resolveDTLFormat(e.day).main;}}]);return a;}();t.Additions=a;}(e||(e={})),e;}),i(e,\"Core/Axis/LogarithmicAxis.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.addEvent,s=t.normalizeTickInterval,r=t.pick;return function(t){function e(){var _this$logarithmic;\"logarithmic\"!==this.type?this.logarithmic=void 0:(_this$logarithmic=this.logarithmic)!==null&&_this$logarithmic!==void 0?_this$logarithmic:this.logarithmic=new n(this);}function o(){var t=this.logarithmic;t&&(this.lin2val=function(e){return t.lin2log(e);},this.val2lin=function(e){return t.log2lin(e);});}t.compose=function(t){return t.keepProps.includes(\"logarithmic\")||(t.keepProps.push(\"logarithmic\"),i(t,\"afterSetType\",e),i(t,\"afterInit\",o)),t;};var n=/*#__PURE__*/function(){function n(t){_classCallCheck(this,n);this.axis=t;}_createClass(n,[{key:\"getLogTickPositions\",value:function getLogTickPositions(t,e,i,o){var _n37=this.axis,a=_n37.len,h=_n37.options,l=[];if(o||(this.minorAutoInterval=void 0),t>=.5)t=Math.round(t),l=_n37.getLinearTickPositions(t,e,i);else if(t>=.08){var _s81,_r20,_n38,_a15,_h8,d,_c7;var _p3=Math.floor(e);for(_s81=t>.3?[1,2,4]:t>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9],_r20=_p3;_r20<i+1&&!_c7;_r20++)for(_n38=0,_a15=_s81.length;_n38<_a15&&!_c7;_n38++)(_h8=this.log2lin(this.lin2log(_r20)*_s81[_n38]))>e&&(!o||d<=i)&&void 0!==d&&l.push(d),d>i&&(_c7=!0),d=_h8;}else{var _d4=this.lin2log(e),_c8=this.lin2log(i),_p4=o?_n37.getMinorTickInterval():h.tickInterval,u=h.tickPixelInterval/(o?5:1),g=o?a/_n37.tickPositions.length:a;t=s(t=r(\"auto\"===_p4?null:_p4,this.minorAutoInterval,(_c8-_d4)*u/(g||1))),l=_n37.getLinearTickPositions(t,_d4,_c8).map(this.log2lin),o||(this.minorAutoInterval=t/5);}return o||(_n37.tickInterval=t),l;}},{key:\"lin2log\",value:function lin2log(t){return Math.pow(10,t);}},{key:\"log2lin\",value:function log2lin(t){return Math.log(t)/Math.LN10;}}]);return n;}();t.Additions=n;}(e||(e={})),e;}),i(e,\"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.erase,s=t.extend,r=t.isNumber;return function(t){var e;function o(t){return this.addPlotBandOrLine(t,\"plotBands\");}function n(t,i){var _this28=this;var s=this.userOptions,r=new e(this,t);if(this.visible&&(r=r.render()),r){if(this._addedPlotLB||(this._addedPlotLB=!0,(s.plotLines||[]).concat(s.plotBands||[]).forEach(function(t){_this28.addPlotBandOrLine(t);})),i){var _e109=s[i]||[];_e109.push(t),s[i]=_e109;}this.plotLinesAndBands.push(r);}return r;}function a(t){return this.addPlotBandOrLine(t,\"plotLines\");}function h(t,e,i){i=i||this.options;var s=this.getPlotLinePath({value:e,force:!0,acrossPanes:i.acrossPanes}),o=[],n=this.horiz,a=!r(this.min)||!r(this.max)||t<this.min&&e<this.min||t>this.max&&e>this.max,h=this.getPlotLinePath({value:t,force:!0,acrossPanes:i.acrossPanes}),l,d=1,c;if(h&&s)for(a&&(c=h.toString()===s.toString(),d=0),l=0;l<h.length;l+=2){var _t102=h[l],_e110=h[l+1],_i70=s[l],_r21=s[l+1];(\"M\"===_t102[0]||\"L\"===_t102[0])&&(\"M\"===_e110[0]||\"L\"===_e110[0])&&(\"M\"===_i70[0]||\"L\"===_i70[0])&&(\"M\"===_r21[0]||\"L\"===_r21[0])&&(n&&_i70[1]===_t102[1]?(_i70[1]+=d,_r21[1]+=d):n||_i70[2]!==_t102[2]||(_i70[2]+=d,_r21[2]+=d),o.push([\"M\",_t102[1],_t102[2]],[\"L\",_e110[1],_e110[2]],[\"L\",_r21[1],_r21[2]],[\"L\",_i70[1],_i70[2]],[\"Z\"])),o.isFlat=c;}return o;}function l(t){this.removePlotBandOrLine(t);}function d(t){var e=this.plotLinesAndBands,s=this.options,r=this.userOptions;if(e){var _o45=e.length;for(;_o45--;)e[_o45].id===t&&e[_o45].destroy();[s.plotLines||[],r.plotLines||[],s.plotBands||[],r.plotBands||[]].forEach(function(e){for(_o45=e.length;_o45--;)(e[_o45]||{}).id===t&&i(e,e[_o45]);});}}function c(t){this.removePlotBandOrLine(t);}t.compose=function(t,i){var r=i.prototype;return r.addPlotBand||(e=t,s(r,{addPlotBand:o,addPlotLine:a,addPlotBandOrLine:n,getPlotBandPath:h,removePlotBand:l,removePlotLine:c,removePlotBandOrLine:d})),i;};}(e||(e={})),e;}),i(e,\"Core/Axis/PlotLineOrBand/PlotLineOrBand.js\",[e[\"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=e.addEvent,s=e.arrayMax,r=e.arrayMin,o=e.defined,n=e.destroyObjectProperties,a=e.erase,h=e.fireEvent,l=e.merge,d=e.objectEach,c=e.pick;var p=/*#__PURE__*/function(){function p(t,e){_classCallCheck(this,p);this.axis=t,this.options=e,this.id=e.id;}_createClass(p,[{key:\"render\",value:function render(){var _s$log2lin,_this29=this,_S,_S2;h(this,\"render\");var t=this.axis,e=this.options,i=t.horiz,s=t.logarithmic,r=e.color,n=e.events,_e$zIndex=e.zIndex,a=_e$zIndex===void 0?0:_e$zIndex,_p5={},u=t.chart.renderer,g=e.to,f=e.from,m=e.value,x=e.borderWidth,y=e.label,b=this.label,v=this.svgElem,S=[],C,k=o(f)&&o(g),M=o(m),w=!v,T={\"class\":\"highcharts-plot-\"+(k?\"band \":\"line \")+(e.className||\"\")},A=k?\"bands\":\"lines\";if(!t.chart.styledMode&&(M?(T.stroke=r||\"#999999\",T[\"stroke-width\"]=c(e.width,1),e.dashStyle&&(T.dashstyle=e.dashStyle)):k&&(T.fill=r||\"#e6e9ff\",x&&(T.stroke=e.borderColor,T[\"stroke-width\"]=x))),_p5.zIndex=a,A+=\"-\"+a,(C=t.plotLinesAndBandsGroups[A])||(t.plotLinesAndBandsGroups[A]=C=u.g(\"plot-\"+A).attr(_p5).add()),v||(this.svgElem=v=u.path().attr(T).add(C)),o(m))S=t.getPlotLinePath({value:(_s$log2lin=s===null||s===void 0?void 0:s.log2lin(m))!==null&&_s$log2lin!==void 0?_s$log2lin:m,lineWidth:v.strokeWidth(),acrossPanes:e.acrossPanes});else{var _s$log2lin2,_s$log2lin3;if(!(o(f)&&o(g)))return;S=t.getPlotBandPath((_s$log2lin2=s===null||s===void 0?void 0:s.log2lin(f))!==null&&_s$log2lin2!==void 0?_s$log2lin2:f,(_s$log2lin3=s===null||s===void 0?void 0:s.log2lin(g))!==null&&_s$log2lin3!==void 0?_s$log2lin3:g,e);}return!this.eventsAdded&&n&&(d(n,function(t,e){var _v2;(_v2=v)===null||_v2===void 0?void 0:_v2.on(e,function(t){n[e].apply(_this29,[t]);});}),this.eventsAdded=!0),(w||!v.d)&&(_S=S)!==null&&_S!==void 0&&_S.length?v.attr({d:S}):v&&(S?(v.show(),v.animate({d:S})):v.d&&(v.hide(),b&&(this.label=b=b.destroy()))),y&&(o(y.text)||o(y.formatter))&&(_S2=S)!==null&&_S2!==void 0&&_S2.length&&t.width>0&&t.height>0&&!S.isFlat?(y=l(_objectSpread({align:i&&k?\"center\":void 0,x:i?!k&&4:10,verticalAlign:!i&&k?\"middle\":void 0,y:i?k?16:10:k?6:-4,rotation:i&&!k?90:0},k?{inside:!0}:{}),y),this.renderLabel(y,S,k,a)):b&&b.hide(),this;}},{key:\"renderLabel\",value:function renderLabel(t,e,i,n){var _t$style;var a=this.axis,h=a.chart.renderer,d=t.inside,c=this.label;c||(this.label=c=h.text(this.getLabelText(t),0,0,t.useHTML).attr({align:t.textAlign||t.align,rotation:t.rotation,\"class\":\"highcharts-plot-\"+(i?\"band\":\"line\")+\"-label \"+(t.className||\"\"),zIndex:n}),a.chart.styledMode||c.css(l({fontSize:\"0.8em\",textOverflow:i&&!d?\"\":\"ellipsis\"},t.style)),c.add());var _p6=e.xBounds||[e[0][1],e[1][1],i?e[2][1]:e[0][1]],u=e.yBounds||[e[0][2],e[1][2],i?e[2][2]:e[0][2]],g=r(_p6),f=r(u),m=s(_p6)-g;c.align(t,!1,{x:g,y:f,width:m,height:s(u)-f}),(!c.alignValue||\"left\"===c.alignValue||o(d))&&c.css({width:(((_t$style=t.style)===null||_t$style===void 0?void 0:_t$style.width)||(i&&d?m:90===c.rotation?a.height-(c.alignAttr.y-a.top):(t.clip?a.width:a.chart.chartWidth)-(c.alignAttr.x-a.left)))+\"px\"}),c.show(!0);}},{key:\"getLabelText\",value:function getLabelText(t){return o(t.formatter)?t.formatter.call(this):t.text;}},{key:\"destroy\",value:function destroy(){a(this.axis.plotLinesAndBands,this),delete this.axis,n(this);}}],[{key:\"compose\",value:function compose(e,s){return i(e,\"afterInit\",function(){var _this30=this;this.labelCollectors.push(function(){var t=[];var _iteratorNormalCompletion8=true;var _didIteratorError8=false;var _iteratorError8=undefined;try{for(var _iterator8=_this30.axes[Symbol.iterator](),_step8;!(_iteratorNormalCompletion8=(_step8=_iterator8.next()).done);_iteratorNormalCompletion8=true){var _e111=_step8.value;var _iteratorNormalCompletion9=true;var _didIteratorError9=false;var _iteratorError9=undefined;try{for(var _iterator9=_e111.plotLinesAndBands[Symbol.iterator](),_step9;!(_iteratorNormalCompletion9=(_step9=_iterator9.next()).done);_iteratorNormalCompletion9=true){var _s82$label;var _step9$value=_step9.value,_i71=_step9$value.label,_s82=_step9$value.options;_i71&&!(_s82!==null&&_s82!==void 0&&(_s82$label=_s82.label)!==null&&_s82$label!==void 0&&_s82$label.allowOverlap)&&t.push(_i71);}}catch(err){_didIteratorError9=true;_iteratorError9=err;}finally{try{if(!_iteratorNormalCompletion9&&_iterator9[\"return\"]!=null){_iterator9[\"return\"]();}}finally{if(_didIteratorError9){throw _iteratorError9;}}}}}catch(err){_didIteratorError8=true;_iteratorError8=err;}finally{try{if(!_iteratorNormalCompletion8&&_iterator8[\"return\"]!=null){_iterator8[\"return\"]();}}finally{if(_didIteratorError8){throw _iteratorError8;}}}return t;});}),t.compose(p,s);}}]);return p;}();return p;}),i(e,\"Core/Tooltip.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Templating.js\"],e[\"Core/Globals.js\"],e[\"Core/Renderer/RendererUtilities.js\"],e[\"Core/Renderer/RendererRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o){var n;var a=t.animObject,h=e.format,l=i.composed,d=i.doc,c=i.isSafari,p=s.distribute,u=o.addEvent,g=o.clamp,f=o.css,m=o.discardElement,x=o.extend,y=o.fireEvent,b=o.isArray,v=o.isNumber,S=o.isString,C=o.merge,k=o.pick,M=o.pushUnique,w=o.splat,T=o.syncTimeout;var A=/*#__PURE__*/function(){function A(t,e,i){_classCallCheck(this,A);this.allowShared=!0,this.crosshairs=[],this.distance=0,this.isHidden=!0,this.isSticky=!1,this.options={},this.outside=!1,this.chart=t,this.init(t,e),this.pointer=i;}_createClass(A,[{key:\"bodyFormatter\",value:function bodyFormatter(t){return t.map(function(t){var e=t.series.tooltipOptions;return(e[(t.point.formatPrefix||\"point\")+\"Formatter\"]||t.point.tooltipFormatter).call(t.point,e[(t.point.formatPrefix||\"point\")+\"Format\"]||\"\");});}},{key:\"cleanSplit\",value:function cleanSplit(t){this.chart.series.forEach(function(e){var i=e&&e.tt;i&&(!i.isActive||t?e.tt=i.destroy():i.isActive=!1);});}},{key:\"defaultFormatter\",value:function defaultFormatter(t){var e;var i=this.points||w(this);return(e=(e=[t.tooltipFooterHeaderFormatter(i[0])]).concat(t.bodyFormatter(i))).push(t.tooltipFooterHeaderFormatter(i[0],!0)),e;}},{key:\"destroy\",value:function destroy(){this.label&&(this.label=this.label.destroy()),this.split&&(this.cleanSplit(!0),this.tt&&(this.tt=this.tt.destroy())),this.renderer&&(this.renderer=this.renderer.destroy(),m(this.container)),o.clearTimeout(this.hideTimer);}},{key:\"getAnchor\",value:function getAnchor(t,e){var i;var s=this.chart,r=this.pointer,o=s.inverted,n=s.plotTop,a=s.plotLeft;if((t=w(t))[0].series&&t[0].series.yAxis&&!t[0].series.yAxis.options.reversedStacks&&(t=t.slice().reverse()),this.followPointer&&e)void 0===e.chartX&&(e=r.normalize(e)),i=[e.chartX-a,e.chartY-n];else if(t[0].tooltipPos)i=t[0].tooltipPos;else{var _s83=0,_r22=0;t.forEach(function(t){var e=t.pos(!0);e&&(_s83+=e[0],_r22+=e[1]);}),_s83/=t.length,_r22/=t.length,this.shared&&t.length>1&&e&&(o?_s83=e.chartX:_r22=e.chartY),i=[_s83-a,_r22-n];}return i.map(Math.round);}},{key:\"getClassName\",value:function getClassName(t,e,i){var s=this.options,r=t.series,o=r.options;return[s.className,\"highcharts-label\",i&&\"highcharts-tooltip-header\",e?\"highcharts-tooltip-box\":\"highcharts-tooltip\",!i&&\"highcharts-color-\"+k(t.colorIndex,r.colorIndex),o&&o.className].filter(S).join(\" \");}},{key:\"getLabel\",value:function getLabel(){var _ref3=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{anchorX:0,anchorY:0},t=_ref3.anchorX,e=_ref3.anchorY;var s=this,o=this.chart.styledMode,n=this.options,a=this.split&&this.allowShared,h=this.container,l=this.chart.renderer;if(this.label){var _t103=!this.label.hasClass(\"highcharts-label\");(!a&&_t103||a&&!_t103)&&this.destroy();}if(!this.label){if(this.outside){var _t104=this.chart.options.chart.style,_e112=r.getRendererType();this.container=h=i.doc.createElement(\"div\"),h.className=\"highcharts-tooltip-container\",f(h,{position:\"absolute\",top:\"1px\",pointerEvents:\"none\",zIndex:Math.max(this.options.style.zIndex||0,(_t104&&_t104.zIndex||0)+3)}),this.renderer=l=new _e112(h,0,0,_t104,void 0,void 0,l.styledMode);}if(a?this.label=l.g(\"tooltip\"):(this.label=l.label(\"\",t,e,n.shape,void 0,void 0,n.useHTML,void 0,\"tooltip\").attr({padding:n.padding,r:n.borderRadius}),o||this.label.attr({fill:n.backgroundColor,\"stroke-width\":n.borderWidth||0}).css(n.style).css({pointerEvents:n.style.pointerEvents||(this.shouldStickOnContact()?\"auto\":\"none\")})),s.outside){var _t105=this.label;[_t105.xSetter,_t105.ySetter].forEach(function(e,i){_t105[i?\"ySetter\":\"xSetter\"]=function(r){e.call(_t105,s.distance),_t105[i?\"y\":\"x\"]=r,h&&(h.style[i?\"top\":\"left\"]=\"\".concat(r,\"px\"));};});}this.label.attr({zIndex:8}).shadow(n.shadow).add();}return h&&!h.parentElement&&i.doc.body.appendChild(h),this.label;}},{key:\"getPlayingField\",value:function getPlayingField(){var t=d.body,e=d.documentElement,i=this.chart,s=this.distance,r=this.outside;return{width:r?Math.max(t.scrollWidth,e.scrollWidth,t.offsetWidth,e.offsetWidth,e.clientWidth)-2*s:i.chartWidth,height:r?Math.max(t.scrollHeight,e.scrollHeight,t.offsetHeight,e.offsetHeight,e.clientHeight):i.chartHeight};}},{key:\"getPosition\",value:function getPosition(t,e,i){var _r$hoverSeries,_r$hoverSeries$yAxis;var s=this.distance,r=this.chart,o=this.outside,n=this.pointer,a=r.inverted,h=r.plotLeft,l=r.plotTop,d=r.polar,_i$plotX=i.plotX,c=_i$plotX===void 0?0:_i$plotX,_i$plotY=i.plotY,p=_i$plotY===void 0?0:_i$plotY,u={},g=a&&i.h||0,_this$getPlayingField=this.getPlayingField(),f=_this$getPlayingField.height,m=_this$getPlayingField.width,x=n.getChartPosition(),y=function y(t){return t*x.scaleX;},b=function b(t){return t*x.scaleY;},v=function v(i){var n=\"x\"===i;return[i,n?m:f,n?t:e].concat(o?[n?y(t):b(e),n?x.left-s+y(c+h):x.top-s+b(p+l),0,n?m:f]:[n?t:e,n?c+h:p+l,n?h:l,n?h+r.plotWidth:l+r.plotHeight]);},S=v(\"y\"),C=v(\"x\"),M,w=!!i.negative;!d&&((_r$hoverSeries=r.hoverSeries)===null||_r$hoverSeries===void 0?void 0:(_r$hoverSeries$yAxis=_r$hoverSeries.yAxis)===null||_r$hoverSeries$yAxis===void 0?void 0:_r$hoverSeries$yAxis.reversed)&&(w=!w);var T=!this.followPointer&&k(i.ttBelow,!d&&!a===w),_A=function _A(t,e,i,r,n,a,h){var l=o?\"y\"===t?b(s):y(s):s,d=(i-r)/2,c=r<n-s,p=n+s+r<e,f=n-l-i+d,m=n+l-d;if(T&&p)u[t]=m;else if(!T&&c)u[t]=f;else if(c)u[t]=Math.min(h-r,f-g<0?f:f-g);else{if(!p)return!1;u[t]=Math.max(a,m+g+i>e?m:m+g);}},P=function P(t,e,i,r,o){if(o<s||o>e-s)return!1;o<i/2?u[t]=1:o>e-r/2?u[t]=e-r-2:u[t]=o-i/2;},L=function L(t){var _ref4;(_ref4=[C,S],S=_ref4[0],C=_ref4[1]),M=t;},O=function O(){!1!==_A.apply(0,S)?!1!==P.apply(0,C)||M||(L(!0),O()):M?u.x=u.y=0:(L(!0),O());};return(a&&!d||this.len>1)&&L(),O(),u;}},{key:\"hide\",value:function hide(t){var e=this;o.clearTimeout(this.hideTimer),t=k(t,this.options.hideDelay),this.isHidden||(this.hideTimer=T(function(){var i=e.getLabel();e.getLabel().animate({opacity:0},{duration:t?150:t,complete:function complete(){i.hide(),e.container&&e.container.remove();}}),e.isHidden=!0;},t));}},{key:\"init\",value:function init(t,e){this.chart=t,this.options=e,this.crosshairs=[],this.isHidden=!0,this.split=e.split&&!t.inverted&&!t.polar,this.shared=e.shared||this.split,this.outside=k(e.outside,!!(t.scrollablePixelsX||t.scrollablePixelsY));}},{key:\"shouldStickOnContact\",value:function shouldStickOnContact(t){return!!(!this.followPointer&&this.options.stickOnContact&&(!t||this.pointer.inClass(t.target,\"highcharts-tooltip\")));}},{key:\"move\",value:function move(t,e,i,s){var r=this,o=a(!r.isHidden&&r.options.animation),n=r.followPointer||(r.len||0)>1,h={x:t,y:e};n||(h.anchorX=i,h.anchorY=s),o.step=function(){return r.drawTracker();},r.getLabel().animate(h,o);}},{key:\"refresh\",value:function refresh(t,e){var i=this.chart,s=this.options,r=this.pointer,n=this.shared,a=w(t),l=a[0],d=[],c=s.format,p=s.formatter||this.defaultFormatter,u=i.styledMode,f={},m=this.allowShared;if(!s.enabled||!l.series)return;o.clearTimeout(this.hideTimer),this.allowShared=!(!b(t)&&t.series&&t.series.noSharedTooltip),m=m&&!this.allowShared,this.followPointer=!this.split&&l.series.tooltipOptions.followPointer;var x=this.getAnchor(t,e),v=x[0],C=x[1];n&&this.allowShared?(r.applyInactiveState(a),a.forEach(function(t){t.setState(\"hover\"),d.push(t.getLabelConfig());}),(f=l.getLabelConfig()).points=d):f=l.getLabelConfig(),this.len=d.length;var M=S(c)?h(c,f,i):p.call(f,this),T=l.series;if(this.distance=k(T.tooltipOptions.distance,16),!1===M)this.hide();else{if(this.split&&this.allowShared)this.renderSplit(M,a);else{var _t106=v,_o46=C;if(e&&r.isDirectTouch&&(_t106=e.chartX-i.plotLeft,_o46=e.chartY-i.plotTop),i.polar||!1===T.options.clip||a.some(function(e){return r.isDirectTouch||e.series.shouldShowTooltip(_t106,_o46);})){var _t107=this.getLabel(m&&this.tt||{});(!s.style.width||u)&&_t107.css({width:(this.outside?this.getPlayingField():i.spacingBox).width+\"px\"}),_t107.attr({\"class\":this.getClassName(l),text:M&&M.join?M.join(\"\"):M}),this.outside&&_t107.attr({x:g(_t107.x||0,0,this.getPlayingField().width-(_t107.width||0))}),u||_t107.attr({stroke:s.borderColor||l.color||T.color||\"#666666\"}),this.updatePosition({plotX:v,plotY:C,negative:l.negative,ttBelow:l.ttBelow,h:x[2]||0});}else{this.hide();return;}}this.isHidden&&this.label&&this.label.attr({opacity:1}).show(),this.isHidden=!1;}y(this,\"refresh\");}},{key:\"renderSplit\",value:function renderSplit(t,e){var _s$scrollablePlotArea;var i=this,s=i.chart,_i$chart=i.chart,r=_i$chart.chartWidth,o=_i$chart.chartHeight,n=_i$chart.plotHeight,a=_i$chart.plotLeft,h=_i$chart.plotTop,_i$chart$scrollablePi=_i$chart.scrollablePixelsY,l=_i$chart$scrollablePi===void 0?0:_i$chart$scrollablePi,u=_i$chart.scrollablePixelsX,f=_i$chart.styledMode,m=i.distance,y=i.options,b=i.options.positioner,v=i.pointer,_ref5=((_s$scrollablePlotArea=s.scrollablePlotArea)===null||_s$scrollablePlotArea===void 0?void 0:_s$scrollablePlotArea.scrollingContainer)||{},_ref5$scrollLeft=_ref5.scrollLeft,C=_ref5$scrollLeft===void 0?0:_ref5$scrollLeft,_ref5$scrollTop=_ref5.scrollTop,M=_ref5$scrollTop===void 0?0:_ref5$scrollTop,w=i.outside&&\"number\"!=typeof u?d.documentElement.getBoundingClientRect():{left:C,right:C+r,top:M,bottom:M+o},T=i.getLabel(),_A2=this.renderer||s.renderer,P=!!(s.xAxis[0]&&s.xAxis[0].opposite),_v$getChartPosition=v.getChartPosition(),L=_v$getChartPosition.left,O=_v$getChartPosition.top,D=h+M,E=0,I=n-l;function j(t,e,s,r){var o=arguments.length>4&&arguments[4]!==undefined?arguments[4]:!0;var n,a;return s?(n=P?0:I,a=g(t-r/2,w.left,w.right-r-(i.outside?L:0))):(n=e-D,a=g(a=o?t-r-m:t+m,o?a:w.left,w.right)),{x:a,y:n};}S(t)&&(t=[!1,t]);var B=t.slice(0,e.length+1).reduce(function(t,s,r){if(!1!==s&&\"\"!==s){var _o47=e[r-1]||{isHeader:!0,plotX:e[0].plotX,plotY:n,series:{}},_l10=_o47.isHeader,_d5=_l10?i:_o47.series,_c9=_d5.tt=function(t,e,s){var r=t,o=e.isHeader,n=e.series;if(!r){var _y$borderWidth;var _t108={padding:y.padding,r:y.borderRadius};f||(_t108.fill=y.backgroundColor,_t108[\"stroke-width\"]=(_y$borderWidth=y.borderWidth)!==null&&_y$borderWidth!==void 0?_y$borderWidth:1),r=_A2.label(\"\",0,0,y[o?\"headerShape\":\"shape\"],void 0,void 0,y.useHTML).addClass(i.getClassName(e,!0,o)).attr(_t108).add(T);}return r.isActive=!0,r.attr({text:s}),f||r.css(y.style).attr({stroke:y.borderColor||e.color||n.color||\"#333333\"}),r;}(_d5.tt,_o47,s.toString()),_p7=_c9.getBBox(),_u2=_p7.width+_c9.strokeWidth();_l10&&(E=_p7.height,I+=E,P&&(D-=E));var _ref6=function(t){var e,i;var s=t.isHeader,_t$plotX=t.plotX,r=_t$plotX===void 0?0:_t$plotX,_t$plotY=t.plotY,o=_t$plotY===void 0?0:_t$plotY,l=t.series;if(s)e=Math.max(a+r,a),i=h+n/2;else{var _t109=l.xAxis,_s84=l.yAxis;e=_t109.pos+g(r,-m,_t109.len+m),l.shouldShowTooltip(0,_s84.pos-h+o,{ignoreX:!0})&&(i=_s84.pos+o);}return{anchorX:e=g(e,w.left-m,w.right+m),anchorY:i};}(_o47),_x5=_ref6.anchorX,_v3=_ref6.anchorY;if(\"number\"==typeof _v3){var _e113=_p7.height+1,_s85=b?b.call(i,_u2,_e113,_o47):j(_x5,_v3,_l10,_u2);t.push({align:b?0:void 0,anchorX:_x5,anchorY:_v3,boxWidth:_u2,point:_o47,rank:k(_s85.rank,_l10?1:0),size:_e113,target:_s85.y,tt:_c9,x:_s85.x});}else _c9.isActive=!1;}return t;},[]);!b&&B.some(function(t){var e=i.outside,s=(e?L:0)+t.anchorX;return s<w.left&&s+t.boxWidth<w.right||s<L-w.left+t.boxWidth&&w.right-s>s;})&&(B=B.map(function(t){var _j=j(t.anchorX,t.anchorY,t.point.isHeader,t.boxWidth,!1),e=_j.x,i=_j.y;return x(t,{target:i,x:e});})),i.cleanSplit(),p(B,I);var R={left:L,right:L};B.forEach(function(t){var e=t.x,s=t.boxWidth,r=t.isHeader;!r&&(i.outside&&L+e<R.left&&(R.left=L+e),!r&&i.outside&&R.left+s>R.right&&(R.right=L+e));}),B.forEach(function(t){var e=t.x,s=t.anchorX,r=t.anchorY,o=t.pos,n=t.point.isHeader,a={visibility:void 0===o?\"hidden\":\"inherit\",x:e,y:(o||0)+D,anchorX:s,anchorY:r};if(i.outside&&e<s){var _t110=L-R.left;_t110>0&&(n||(a.x=e+_t110,a.anchorX=s+_t110),n&&(a.x=(R.right-R.left)/2,a.anchorX=s+_t110));}t.tt.attr(a);});var z=i.container,N=i.outside,W=i.renderer;if(N&&z&&W){var _T$getBBox=T.getBBox(),_t111=_T$getBBox.width,_e114=_T$getBBox.height,_i72=_T$getBBox.x,_s86=_T$getBBox.y;W.setSize(_t111+_i72,_e114+_s86,!1),z.style.left=R.left+\"px\",z.style.top=O+\"px\";}c&&T.attr({opacity:1===T.opacity?.999:1});}},{key:\"drawTracker\",value:function drawTracker(){if(!this.shouldStickOnContact()){this.tracker&&(this.tracker=this.tracker.destroy());return;}var t=this.chart,e=this.label,i=this.shared?t.hoverPoints:t.hoverPoint;if(!e||!i)return;var s={x:0,y:0,width:0,height:0},r=this.getAnchor(i),o=e.getBBox();r[0]+=t.plotLeft-(e.translateX||0),r[1]+=t.plotTop-(e.translateY||0),s.x=Math.min(0,r[0]),s.y=Math.min(0,r[1]),s.width=r[0]<0?Math.max(Math.abs(r[0]),o.width-r[0]):Math.max(Math.abs(r[0]),o.width),s.height=r[1]<0?Math.max(Math.abs(r[1]),o.height-Math.abs(r[1])):Math.max(Math.abs(r[1]),o.height),this.tracker?this.tracker.attr(s):(this.tracker=e.renderer.rect(s).addClass(\"highcharts-tracker\").add(e),t.styledMode||this.tracker.attr({fill:\"rgba(0,0,0,0)\"}));}},{key:\"styledModeFormat\",value:function styledModeFormat(t){return t.replace('style=\"font-size: 0.8em\"','class=\"highcharts-header\"').replace(/style=\"color:{(point|series)\\.color}\"/g,'class=\"highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}\"');}},{key:\"tooltipFooterHeaderFormatter\",value:function tooltipFooterHeaderFormatter(t,e){var i=t.series,s=i.tooltipOptions,r=i.xAxis,o=r&&r.dateTime,n={isFooter:e,labelConfig:t},a=s.xDateFormat,l=s[e?\"footerFormat\":\"headerFormat\"];return y(this,\"headerFormatter\",n,function(e){o&&!a&&v(t.key)&&(a=o.getXDateFormat(t.key,s.dateTimeLabelFormats)),o&&a&&(t.point&&t.point.tooltipDateKeys||[\"key\"]).forEach(function(t){l=l.replace(\"{point.\"+t+\"}\",\"{point.\"+t+\":\"+a+\"}\");}),i.chart.styledMode&&(l=this.styledModeFormat(l)),e.text=h(l,{point:t,series:i},this.chart);}),n.text;}},{key:\"update\",value:function update(t){this.destroy(),this.init(this.chart,C(!0,this.options,t));}},{key:\"updatePosition\",value:function updatePosition(t){var e=this.chart,i=this.container,s=this.distance,r=this.options,o=this.pointer,n=this.renderer,_this$getLabel=this.getLabel(),_this$getLabel$height=_this$getLabel.height,a=_this$getLabel$height===void 0?0:_this$getLabel$height,_this$getLabel$width=_this$getLabel.width,h=_this$getLabel$width===void 0?0:_this$getLabel$width,_o$getChartPosition=o.getChartPosition(),l=_o$getChartPosition.left,d=_o$getChartPosition.top,c=_o$getChartPosition.scaleX,p=_o$getChartPosition.scaleY,u=(r.positioner||this.getPosition).call(this,h,a,t),g=(t.plotX||0)+e.plotLeft,m=(t.plotY||0)+e.plotTop,x;n&&i&&(r.positioner&&(u.x+=l-s,u.y+=d-s),x=(r.borderWidth||0)+2*s+2,n.setSize(h+x,a+x,!1),(1!==c||1!==p)&&(f(i,{transform:\"scale(\".concat(c,\", \").concat(p,\")\")}),g*=c,m*=p),g+=l-u.x,m+=d-u.y),this.move(Math.round(u.x),Math.round(u.y||0),g,m);}}]);return A;}();return(n=A||(A={})).compose=function(t){M(l,\"Core.Tooltip\")&&u(t,\"afterInit\",function(){var t=this.chart;t.options.tooltip&&(t.tooltip=new n(t,t.options.tooltip,this));});},A;}),i(e,\"Core/Series/Point.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Defaults.js\"],e[\"Core/Templating.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r){var o=e.animObject,n=i.defaultOptions,a=s.format,h=r.addEvent,l=r.crisp,d=r.erase,c=r.extend,p=r.fireEvent,u=r.getNestedProperty,g=r.isArray,f=r.isFunction,m=r.isNumber,x=r.isObject,y=r.merge,b=r.pick,v=r.syncTimeout,S=r.removeEvent,C=r.uniqueKey;var k=/*#__PURE__*/function(){function k(t,e,i){var _this$id;_classCallCheck(this,k);this.formatPrefix=\"point\",this.visible=!0,this.series=t,this.applyOptions(e,i),(_this$id=this.id)!==null&&_this$id!==void 0?_this$id:this.id=C(),this.resolveColor(),t.chart.pointCount++,p(this,\"afterInit\");}_createClass(k,[{key:\"animateBeforeDestroy\",value:function animateBeforeDestroy(){var t=this,e={x:t.startXPos,opacity:0},i=t.getGraphicalProps();i.singular.forEach(function(i){t[i]=t[i].animate(\"dataLabel\"===i?{x:t[i].startXPos,y:t[i].startYPos,opacity:0}:e);}),i.plural.forEach(function(e){t[e].forEach(function(e){e.element&&e.animate(c({x:t.startXPos},e.startYPos?{x:e.startXPos,y:e.startYPos}:{}));});});}},{key:\"applyOptions\",value:function applyOptions(t,e){var i=this.series,s=i.options.pointValKey||i.pointValKey;return c(this,t=k.prototype.optionsToObject.call(this,t)),this.options=this.options?c(this.options,t):t,t.group&&delete this.group,t.dataLabels&&delete this.dataLabels,s&&(this.y=k.prototype.getNestedProperty.call(this,s)),this.selected&&(this.state=\"select\"),\"name\"in this&&void 0===e&&i.xAxis&&i.xAxis.hasNames&&(this.x=i.xAxis.nameToX(this)),void 0===this.x&&i?this.x=e!==null&&e!==void 0?e:i.autoIncrement():m(t.x)&&i.options.relativeXValue&&(this.x=i.autoIncrement(t.x)),this.isNull=this.isValid&&!this.isValid(),this.formatPrefix=this.isNull?\"null\":\"point\",this;}},{key:\"destroy\",value:function destroy(){if(!this.destroyed){var _t112=this,_e115=_t112.series,_i73=_e115.chart,_s87=_e115.options.dataSorting,_r23=_i73.hoverPoints,_n39=o(_t112.series.chart.renderer.globalAnimation),_a16=function _a16(){for(var _e116 in(_t112.graphic||_t112.graphics||_t112.dataLabel||_t112.dataLabels)&&(S(_t112),_t112.destroyElements()),_t112)delete _t112[_e116];};_t112.legendItem&&_i73.legend.destroyItem(_t112),_r23&&(_t112.setState(),d(_r23,_t112),_r23.length||(_i73.hoverPoints=null)),_t112===_i73.hoverPoint&&_t112.onMouseOut(),_s87&&_s87.enabled?(this.animateBeforeDestroy(),v(_a16,_n39.duration)):_a16(),_i73.pointCount--;}this.destroyed=!0;}},{key:\"destroyElements\",value:function destroyElements(t){var e=this,i=e.getGraphicalProps(t);i.singular.forEach(function(t){e[t]=e[t].destroy();}),i.plural.forEach(function(t){e[t].forEach(function(t){t&&t.element&&t.destroy();}),delete e[t];});}},{key:\"firePointEvent\",value:function firePointEvent(t,e,i){var s=this,r=this.series.options;s.manageEvent(t),\"click\"===t&&r.allowPointSelect&&(i=function i(t){!s.destroyed&&s.select&&s.select(null,t.ctrlKey||t.metaKey||t.shiftKey);}),p(s,t,e,i);}},{key:\"getClassName\",value:function getClassName(){return\"highcharts-point\"+(this.selected?\" highcharts-point-select\":\"\")+(this.negative?\" highcharts-negative\":\"\")+(this.isNull?\" highcharts-null-point\":\"\")+(void 0!==this.colorIndex?\" highcharts-color-\"+this.colorIndex:\"\")+(this.options.className?\" \"+this.options.className:\"\")+(this.zone&&this.zone.className?\" \"+this.zone.className.replace(\"highcharts-negative\",\"\"):\"\");}},{key:\"getGraphicalProps\",value:function getGraphicalProps(t){var e,i;var s=this,r=[],o={singular:[],plural:[]};for((t=t||{graphic:1,dataLabel:1}).graphic&&r.push(\"graphic\",\"connector\"),t.dataLabel&&r.push(\"dataLabel\",\"dataLabelPath\",\"dataLabelUpper\"),i=r.length;i--;)s[e=r[i]]&&o.singular.push(e);return[\"graphic\",\"dataLabel\"].forEach(function(e){var i=e+\"s\";t[e]&&s[i]&&o.plural.push(i);}),o;}},{key:\"getLabelConfig\",value:function getLabelConfig(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal};}},{key:\"getNestedProperty\",value:function getNestedProperty(t){return t?0===t.indexOf(\"custom.\")?u(t,this.options):this[t]:void 0;}},{key:\"getZone\",value:function getZone(){var t=this.series,e=t.zones,i=t.zoneAxis||\"y\",s,r=0;for(s=e[0];this[i]>=s.value;)s=e[++r];return this.nonZonedColor||(this.nonZonedColor=this.color),s&&s.color&&!this.options.color?this.color=s.color:this.color=this.nonZonedColor,s;}},{key:\"hasNewShapeType\",value:function hasNewShapeType(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType;}},{key:\"isValid\",value:function isValid(){return(m(this.x)||this.x instanceof Date)&&m(this.y);}},{key:\"optionsToObject\",value:function optionsToObject(t){var e=this.series,i=e.options.keys,s=i||e.pointArrayMap||[\"y\"],r=s.length,o={},n,a=0,h=0;if(m(t)||null===t)o[s[0]]=t;else if(g(t))for(!i&&t.length>r&&(\"string\"==(n=_typeof(t[0]))?o.name=t[0]:\"number\"===n&&(o.x=t[0]),a++);h<r;)i&&void 0===t[a]||(s[h].indexOf(\".\")>0?k.prototype.setNestedProperty(o,t[a],s[h]):o[s[h]]=t[a]),a++,h++;else\"object\"==_typeof(t)&&(o=t,t.dataLabels&&(e.hasDataLabels=function(){return!0;}),t.marker&&(e._hasPointMarkers=!0));return o;}},{key:\"pos\",value:function pos(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.plotY;if(!this.destroyed){var _i74=this.plotX,_s88=this.series,_r24=_s88.chart,_o48=_s88.xAxis,_n40=_s88.yAxis,_a17=0,_h9=0;if(m(_i74)&&m(e))return t&&(_a17=_o48?_o48.pos:_r24.plotLeft,_h9=_n40?_n40.pos:_r24.plotTop),_r24.inverted&&_o48&&_n40?[_n40.len-e+_h9,_o48.len-_i74+_a17]:[_i74+_a17,e+_h9];}}},{key:\"resolveColor\",value:function resolveColor(){var t=this.series,e=t.chart.options.chart,i=t.chart.styledMode,s,r,o=e.colorCount,n;delete this.nonZonedColor,t.options.colorByPoint?(i||(s=(r=t.options.colors||t.chart.options.colors)[t.colorCounter],o=r.length),n=t.colorCounter,t.colorCounter++,t.colorCounter===o&&(t.colorCounter=0)):(i||(s=t.color),n=t.colorIndex),this.colorIndex=b(this.options.colorIndex,n),this.color=b(this.options.color,s);}},{key:\"setNestedProperty\",value:function setNestedProperty(t,e,i){return i.split(\".\").reduce(function(t,i,s,r){var o=r.length-1===s;return t[i]=o?e:x(t[i],!0)?t[i]:{},t[i];},t),t;}},{key:\"shouldDraw\",value:function shouldDraw(){return!this.isNull;}},{key:\"tooltipFormatter\",value:function tooltipFormatter(t){var e=this.series,i=e.tooltipOptions,s=b(i.valueDecimals,\"\"),r=i.valuePrefix||\"\",o=i.valueSuffix||\"\";return e.chart.styledMode&&(t=e.chart.tooltip.styledModeFormat(t)),(e.pointArrayMap||[\"y\"]).forEach(function(e){e=\"{point.\"+e,(r||o)&&(t=t.replace(RegExp(e+\"}\",\"g\"),r+e+\"}\"+o)),t=t.replace(RegExp(e+\"}\",\"g\"),e+\":,.\"+s+\"f}\");}),a(t,{point:this,series:this.series},e.chart);}},{key:\"update\",value:function update(t,e,i,s){var r;var o=this,n=o.series,a=o.graphic,h=n.chart,l=n.options;function d(){o.applyOptions(t);var s=a&&o.hasMockGraphic,d=null===o.y?!s:s;a&&d&&(o.graphic=a.destroy(),delete o.hasMockGraphic),x(t,!0)&&(a&&a.element&&t&&t.marker&&void 0!==t.marker.symbol&&(o.graphic=a.destroy()),t!==null&&t!==void 0&&t.dataLabels&&o.dataLabel&&(o.dataLabel=o.dataLabel.destroy())),r=o.index,n.updateParallelArrays(o,r),l.data[r]=x(l.data[r],!0)||x(t,!0)?o.options:b(t,l.data[r]),n.isDirty=n.isDirtyData=!0,!n.fixedBox&&n.hasCartesianSeries&&(h.isDirtyBox=!0),\"point\"===l.legendType&&(h.isDirtyLegend=!0),e&&h.redraw(i);}e=b(e,!0),!1===s?d():o.firePointEvent(\"update\",{options:t},d);}},{key:\"remove\",value:function remove(t,e){this.series.removePoint(this.series.data.indexOf(this),t,e);}},{key:\"select\",value:function select(t,e){var i=this,s=i.series,r=s.chart;t=b(t,!i.selected),this.selectedStaging=t,i.firePointEvent(t?\"select\":\"unselect\",{accumulate:e},function(){i.selected=i.options.selected=t,s.options.data[s.data.indexOf(i)]=i.options,i.setState(t&&\"select\"),e||r.getSelectedPoints().forEach(function(t){var e=t.series;t.selected&&t!==i&&(t.selected=t.options.selected=!1,e.options.data[e.data.indexOf(t)]=t.options,t.setState(r.hoverPoints&&e.options.inactiveOtherPoints?\"inactive\":\"\"),t.firePointEvent(\"unselect\"));});}),delete this.selectedStaging;}},{key:\"onMouseOver\",value:function onMouseOver(t){var _this$series$chart=this.series.chart,e=_this$series$chart.inverted,i=_this$series$chart.pointer;i&&(t=t?i.normalize(t):i.getChartCoordinatesFromPoint(this,e),i.runPointActions(t,this));}},{key:\"onMouseOut\",value:function onMouseOut(){var t=this.series.chart;this.firePointEvent(\"mouseOut\"),this.series.options.inactiveOtherPoints||(t.hoverPoints||[]).forEach(function(t){t.setState();}),t.hoverPoints=t.hoverPoint=null;}},{key:\"manageEvent\",value:function manageEvent(t){var _e$events,_this$hcEvents,_this$hcEvents2,_this$hcEvents2$t,_this$importedUserEve,_this$hcEvents3;var e=y(this.series.options.point,this.options),i=(_e$events=e.events)===null||_e$events===void 0?void 0:_e$events[t];f(i)&&(!((_this$hcEvents=this.hcEvents)!==null&&_this$hcEvents!==void 0&&_this$hcEvents[t])||((_this$hcEvents2=this.hcEvents)===null||_this$hcEvents2===void 0?void 0:(_this$hcEvents2$t=_this$hcEvents2[t])===null||_this$hcEvents2$t===void 0?void 0:_this$hcEvents2$t.map(function(t){return t.fn;}).indexOf(i))===-1)?((_this$importedUserEve=this.importedUserEvent)!==null&&_this$importedUserEve!==void 0&&_this$importedUserEve.call(this),this.importedUserEvent=h(this,t,i)):this.importedUserEvent&&!i&&((_this$hcEvents3=this.hcEvents)===null||_this$hcEvents3===void 0?void 0:_this$hcEvents3[t])&&(S(this,t),delete this.hcEvents[t],Object.keys(this.hcEvents)||delete this.importedUserEvent);}},{key:\"setState\",value:function setState(e,i){var _x6,_x6$point;var s=this.series,r=this.state,o=s.options.states[e||\"normal\"]||{},a=n.plotOptions[s.type].marker&&s.options.marker,h=a&&!1===a.enabled,l=a&&a.states&&a.states[e||\"normal\"]||{},d=!1===l.enabled,u=this.marker||{},g=s.chart,f=a&&s.markerAttribs,x=s.halo,y,v,S,C=s.stateMarkerGraphic,_k;if((e=e||\"\")===this.state&&!i||this.selected&&\"select\"!==e||!1===o.enabled||e&&(d||h&&!1===l.enabled)||e&&u.states&&u.states[e]&&!1===u.states[e].enabled)return;if(this.state=e,f&&(y=s.markerAttribs(this,e)),this.graphic&&!this.hasMockGraphic){if(r&&this.graphic.removeClass(\"highcharts-point-\"+r),e&&this.graphic.addClass(\"highcharts-point-\"+e),!g.styledMode){v=s.pointAttribs(this,e),S=b(g.options.chart.animation,o.animation);var _t113=v.opacity;s.options.inactiveOtherPoints&&m(_t113)&&(this.dataLabels||[]).forEach(function(e){e&&!e.hasClass(\"highcharts-data-label-hidden\")&&(e.animate({opacity:_t113},S),e.connector&&e.connector.animate({opacity:_t113},S));}),this.graphic.animate(v,S);}y&&this.graphic.animate(y,b(g.options.chart.animation,l.animation,a.animation)),C&&C.hide();}else e&&l&&(_k=u.symbol||s.symbol,C&&C.currentSymbol!==_k&&(C=C.destroy()),y&&(C?C[i?\"animate\":\"attr\"]({x:y.x,y:y.y}):_k&&(s.stateMarkerGraphic=C=g.renderer.symbol(_k,y.x,y.y,y.width,y.height).add(s.markerGroup),C.currentSymbol=_k)),!g.styledMode&&C&&\"inactive\"!==this.state&&C.attr(s.pointAttribs(this,e))),C&&(C[e&&this.isInside?\"show\":\"hide\"](),C.element.point=this,C.addClass(this.getClassName(),!0));var M=o.halo,w=this.graphic||C,T=w&&w.visibility||\"inherit\";M&&M.size&&w&&\"hidden\"!==T&&!this.isCluster?(x||(s.halo=x=g.renderer.path().add(w.parentGroup)),x.show()[i?\"animate\":\"attr\"]({d:this.haloPath(M.size)}),x.attr({\"class\":\"highcharts-halo highcharts-color-\"+b(this.colorIndex,s.colorIndex)+(this.className?\" \"+this.className:\"\"),visibility:T,zIndex:-1}),x.point=this,g.styledMode||x.attr(c({fill:this.color||s.color,\"fill-opacity\":M.opacity},t.filterUserAttributes(M.attributes||{})))):((_x6=x)===null||_x6===void 0?void 0:(_x6$point=_x6.point)===null||_x6$point===void 0?void 0:_x6$point.haloPath)&&!x.point.destroyed&&x.animate({d:x.point.haloPath(0)},null,x.hide),p(this,\"afterSetState\",{state:e});}},{key:\"haloPath\",value:function haloPath(t){var e=this.pos();return e?this.series.chart.renderer.symbols.circle(l(e[0],1)-t,e[1]-t,2*t,2*t):[];}}]);return k;}();return k;}),i(e,\"Core/Pointer.js\",[e[\"Core/Color/Color.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s;var r=t.parse,o=e.charts,n=e.composed,a=e.isTouchDevice,h=i.addEvent,l=i.attr,d=i.css,c=i.extend,p=i.find,u=i.fireEvent,g=i.isNumber,f=i.isObject,m=i.objectEach,x=i.offset,y=i.pick,b=i.pushUnique,v=i.splat;var S=/*#__PURE__*/function(){function S(t,e){var _e$chart$events;_classCallCheck(this,S);this.hasDragged=0,this.pointerCaptureEventsToUnbind=[],this.eventsToUnbind=[],this.options=e,this.chart=t,this.runChartClick=!!((_e$chart$events=e.chart.events)!==null&&_e$chart$events!==void 0&&_e$chart$events.click),this.pinchDown=[],this.setDOMEvents(),u(this,\"afterInit\");}_createClass(S,[{key:\"applyInactiveState\",value:function applyInactiveState(t){var e=[],i;(t||[]).forEach(function(t){i=t.series,e.push(i),i.linkedParent&&e.push(i.linkedParent),i.linkedSeries&&(e=e.concat(i.linkedSeries)),i.navigatorSeries&&e.push(i.navigatorSeries);}),this.chart.series.forEach(function(t){-1===e.indexOf(t)?t.setState(\"inactive\",!0):t.options.inactiveOtherPoints&&t.setAllPointsToState(\"inactive\");});}},{key:\"destroy\",value:function destroy(){var t=this;this.eventsToUnbind.forEach(function(t){return t();}),this.eventsToUnbind=[],!e.chartCount&&(S.unbindDocumentMouseUp&&S.unbindDocumentMouseUp.forEach(function(t){return t();}),S.unbindDocumentTouchEnd&&(S.unbindDocumentTouchEnd=S.unbindDocumentTouchEnd())),clearInterval(t.tooltipTimeout),m(t,function(e,i){t[i]=void 0;});}},{key:\"getSelectionMarkerAttrs\",value:function getSelectionMarkerAttrs(t,e){var _this31=this;var i={args:{chartX:t,chartY:e},attrs:{},shapeType:\"rect\"};return u(this,\"getSelectionMarkerAttrs\",i,function(i){var s;var r=_this31.chart,o=_this31.zoomHor,n=_this31.zoomVert,_r$mouseDownX=r.mouseDownX,a=_r$mouseDownX===void 0?0:_r$mouseDownX,_r$mouseDownY=r.mouseDownY,h=_r$mouseDownY===void 0?0:_r$mouseDownY,l=i.attrs;l.x=r.plotLeft,l.y=r.plotTop,l.width=o?1:r.plotWidth,l.height=n?1:r.plotHeight,o&&(s=t-a,l.width=Math.max(1,Math.abs(s)),l.x=(s>0?0:s)+a),n&&(s=e-h,l.height=Math.max(1,Math.abs(s)),l.y=(s>0?0:s)+h);}),i;}},{key:\"drag\",value:function drag(t){var e=this.chart,_e$mouseDownX=e.mouseDownX,i=_e$mouseDownX===void 0?0:_e$mouseDownX,_e$mouseDownY=e.mouseDownY,s=_e$mouseDownY===void 0?0:_e$mouseDownY,_e$options$chart=e.options.chart,o=_e$options$chart.panning,n=_e$options$chart.panKey,a=_e$options$chart.selectionMarkerFill,h=e.plotLeft,l=e.plotTop,d=e.plotWidth,c=e.plotHeight,p=f(o)?o.enabled:o,u=n&&t[\"\".concat(n,\"Key\")],g=t.chartX,m=t.chartY,x,y=this.selectionMarker;if((!y||!y.touch)&&(g<h?g=h:g>h+d&&(g=h+d),m<l?m=l:m>l+c&&(m=l+c),this.hasDragged=Math.sqrt(Math.pow(i-g,2)+Math.pow(s-m,2)),this.hasDragged>10)){x=e.isInsidePlot(i-h,s-l,{visiblePlotOnly:!0});var _this$getSelectionMar=this.getSelectionMarkerAttrs(g,m),_n41=_this$getSelectionMar.shapeType,_d6=_this$getSelectionMar.attrs;(e.hasCartesianSeries||e.mapView)&&this.hasZoom&&x&&!u&&!y&&(this.selectionMarker=y=e.renderer[_n41](),y.attr({\"class\":\"highcharts-selection-marker\",zIndex:7}).add(),e.styledMode||y.attr({fill:a||r(\"#334eff\").setOpacity(.25).get()})),y&&y.attr(_d6),x&&!y&&p&&e.pan(t,o);}}},{key:\"dragStart\",value:function dragStart(t){var e=this.chart;e.mouseIsDown=t.type,e.cancelClick=!1,e.mouseDownX=t.chartX,e.mouseDownY=t.chartY;}},{key:\"getSelectionBox\",value:function getSelectionBox(t){var e={args:{marker:t},result:t.getBBox()};return u(this,\"getSelectionBox\",e),e.result;}},{key:\"drop\",value:function drop(t){var _this32=this;var e;var i=this.chart,s=this.selectionMarker;var _iteratorNormalCompletion10=true;var _didIteratorError10=false;var _iteratorError10=undefined;try{for(var _iterator10=i.axes[Symbol.iterator](),_step10;!(_iteratorNormalCompletion10=(_step10=_iterator10.next()).done);_iteratorNormalCompletion10=true){var _t114=_step10.value;_t114.isPanning&&(_t114.isPanning=!1,(_t114.options.startOnTick||_t114.options.endOnTick||_t114.series.some(function(t){return t.boosted;}))&&(_t114.forceRedraw=!0,_t114.setExtremes(_t114.userMin,_t114.userMax,!1),e=!0));}}catch(err){_didIteratorError10=true;_iteratorError10=err;}finally{try{if(!_iteratorNormalCompletion10&&_iterator10[\"return\"]!=null){_iterator10[\"return\"]();}}finally{if(_didIteratorError10){throw _iteratorError10;}}}if(e&&i.redraw(),s&&t){if(this.hasDragged){var _e117=this.getSelectionBox(s);i.transform({axes:i.axes.filter(function(t){return t.zoomEnabled&&(\"xAxis\"===t.coll&&_this32.zoomX||\"yAxis\"===t.coll&&_this32.zoomY);}),selection:_objectSpread({originalEvent:t,xAxis:[],yAxis:[]},_e117),from:_e117});}g(i.index)&&(this.selectionMarker=s.destroy());}i&&g(i.index)&&(d(i.container,{cursor:i._cursor}),i.cancelClick=this.hasDragged>10,i.mouseIsDown=!1,this.hasDragged=0,this.pinchDown=[]);}},{key:\"findNearestKDPoint\",value:function findNearestKDPoint(t,e,i){var s;return t.forEach(function(t){var r=!(t.noSharedTooltip&&e)&&0>t.options.findNearestPointBy.indexOf(\"y\"),o=t.searchPoint(i,r);f(o,!0)&&o.series&&(!f(s,!0)||function(t,i,_i$series$group,_t$series$group){var s=t.distX-i.distX,r=t.dist-i.dist,o=((_i$series$group=i.series.group)===null||_i$series$group===void 0?void 0:_i$series$group.zIndex)-((_t$series$group=t.series.group)===null||_t$series$group===void 0?void 0:_t$series$group.zIndex);return 0!==s&&e?s:0!==r?r:0!==o?o:t.series.index>i.series.index?-1:1;}(s,o)>0)&&(s=o);}),s;}},{key:\"getChartCoordinatesFromPoint\",value:function getChartCoordinatesFromPoint(t,e){var _t$series=t.series,i=_t$series.xAxis,s=_t$series.yAxis,r=t.shapeArgs;if(i&&s){var _ref7,_t$clientX;var _o49=(_ref7=(_t$clientX=t.clientX)!==null&&_t$clientX!==void 0?_t$clientX:t.plotX)!==null&&_ref7!==void 0?_ref7:0,_n42=t.plotY||0;return t.isNode&&r&&g(r.x)&&g(r.y)&&(_o49=r.x,_n42=r.y),e?{chartX:s.len+s.pos-_n42,chartY:i.len+i.pos-_o49}:{chartX:_o49+i.pos,chartY:_n42+s.pos};}if(r&&r.x&&r.y)return{chartX:r.x,chartY:r.y};}},{key:\"getChartPosition\",value:function getChartPosition(){if(this.chartPosition)return this.chartPosition;var t=this.chart.container,e=x(t);this.chartPosition={left:e.left,top:e.top,scaleX:1,scaleY:1};var i=t.offsetHeight,s=t.offsetWidth;return s>2&&i>2&&(this.chartPosition.scaleX=e.width/s,this.chartPosition.scaleY=e.height/i),this.chartPosition;}},{key:\"getCoordinates\",value:function getCoordinates(t){var e={xAxis:[],yAxis:[]};var _iteratorNormalCompletion11=true;var _didIteratorError11=false;var _iteratorError11=undefined;try{for(var _iterator11=this.chart.axes[Symbol.iterator](),_step11;!(_iteratorNormalCompletion11=(_step11=_iterator11.next()).done);_iteratorNormalCompletion11=true){var _i75=_step11.value;e[_i75.isXAxis?\"xAxis\":\"yAxis\"].push({axis:_i75,value:_i75.toValue(t[_i75.horiz?\"chartX\":\"chartY\"])});}}catch(err){_didIteratorError11=true;_iteratorError11=err;}finally{try{if(!_iteratorNormalCompletion11&&_iterator11[\"return\"]!=null){_iterator11[\"return\"]();}}finally{if(_didIteratorError11){throw _iteratorError11;}}}return e;}},{key:\"getHoverData\",value:function getHoverData(t,e,i,s,r,o){var n=[],a=function a(t){return t.visible&&!(!r&&t.directTouch)&&y(t.options.enableMouseTracking,!0);},h=e,l,d={chartX:o?o.chartX:void 0,chartY:o?o.chartY:void 0,shared:r};u(this,\"beforeGetHoverData\",d),l=h&&!h.stickyTracking?[h]:i.filter(function(t){return t.stickyTracking&&(d.filter||a)(t);});var c=s&&t||!o?t:this.findNearestKDPoint(l,r,o);return h=c&&c.series,c&&(r&&!h.noSharedTooltip?(l=i.filter(function(t){return d.filter?d.filter(t):a(t)&&!t.noSharedTooltip;})).forEach(function(t){var e=p(t.points,function(t){return t.x===c.x&&!t.isNull;});f(e)&&(t.boosted&&t.boost&&(e=t.boost.getPoint(e)),n.push(e));}):n.push(c)),u(this,\"afterGetHoverData\",d={hoverPoint:c}),{hoverPoint:d.hoverPoint,hoverSeries:h,hoverPoints:n};}},{key:\"getPointFromEvent\",value:function getPointFromEvent(t){var e=t.target,i;for(;e&&!i;)i=e.point,e=e.parentNode;return i;}},{key:\"onTrackerMouseOut\",value:function onTrackerMouseOut(t){var e=this.chart,i=t.relatedTarget,s=e.hoverSeries;this.isDirectTouch=!1,!s||!i||s.stickyTracking||this.inClass(i,\"highcharts-tooltip\")||this.inClass(i,\"highcharts-series-\"+s.index)&&this.inClass(i,\"highcharts-tracker\")||s.onMouseOut();}},{key:\"inClass\",value:function inClass(t,e){var i=t,s;for(;i;){if(s=l(i,\"class\")){if(-1!==s.indexOf(e))return!0;if(-1!==s.indexOf(\"highcharts-container\"))return!1;}i=i.parentElement;}}},{key:\"normalize\",value:function normalize(t,e){var i=t.touches,s=i?i.length?i.item(0):y(i.changedTouches,t.changedTouches)[0]:t;e||(e=this.getChartPosition());var r=s.pageX-e.left,o=s.pageY-e.top;return c(t,{chartX:Math.round(r/=e.scaleX),chartY:Math.round(o/=e.scaleY)});}},{key:\"onContainerClick\",value:function onContainerClick(t){var e=this.chart,i=e.hoverPoint,s=this.normalize(t),r=e.plotLeft,o=e.plotTop;!e.cancelClick&&(i&&this.inClass(s.target,\"highcharts-tracker\")?(u(i.series,\"click\",c(s,{point:i})),e.hoverPoint&&i.firePointEvent(\"click\",s)):(c(s,this.getCoordinates(s)),e.isInsidePlot(s.chartX-r,s.chartY-o,{visiblePlotOnly:!0})&&u(e,\"click\",s)));}},{key:\"onContainerMouseDown\",value:function onContainerMouseDown(t){var _t$preventDefault,_t115;var i=(1&(t.buttons||t.button))==1;t=this.normalize(t),e.isFirefox&&0!==t.button&&this.onContainerMouseMove(t),(void 0===t.button||i)&&(this.zoomOption(t),i&&(_t$preventDefault=(_t115=t).preventDefault)!==null&&_t$preventDefault!==void 0&&_t$preventDefault.call(_t115),this.dragStart(t));}},{key:\"onContainerMouseLeave\",value:function onContainerMouseLeave(t){var _ref8=o[y(S.hoverChartIndex,-1)]||{},e=_ref8.pointer;t=this.normalize(t),this.onContainerMouseMove(t),e&&!this.inClass(t.relatedTarget,\"highcharts-tooltip\")&&(e.reset(),e.chartPosition=void 0);}},{key:\"onContainerMouseEnter\",value:function onContainerMouseEnter(){delete this.chartPosition;}},{key:\"onContainerMouseMove\",value:function onContainerMouseMove(t){var e=this.chart,i=e.tooltip,s=this.normalize(t);this.setHoverChartIndex(t),(\"mousedown\"===e.mouseIsDown||this.touchSelect(s))&&this.drag(s),!e.openMenu&&(this.inClass(s.target,\"highcharts-tracker\")||e.isInsidePlot(s.chartX-e.plotLeft,s.chartY-e.plotTop,{visiblePlotOnly:!0}))&&!(i&&i.shouldStickOnContact(s))&&(this.inClass(s.target,\"highcharts-no-tooltip\")?this.reset(!1,0):this.runPointActions(s));}},{key:\"onDocumentTouchEnd\",value:function onDocumentTouchEnd(t){this.onDocumentMouseUp(t);}},{key:\"onContainerTouchMove\",value:function onContainerTouchMove(t){this.touchSelect(t)?this.onContainerMouseMove(t):this.touch(t);}},{key:\"onContainerTouchStart\",value:function onContainerTouchStart(t){this.touchSelect(t)?this.onContainerMouseDown(t):(this.zoomOption(t),this.touch(t,!0));}},{key:\"onDocumentMouseMove\",value:function onDocumentMouseMove(t){var e=this.chart,i=e.tooltip,s=this.chartPosition,r=this.normalize(t,s);!s||e.isInsidePlot(r.chartX-e.plotLeft,r.chartY-e.plotTop,{visiblePlotOnly:!0})||i&&i.shouldStickOnContact(r)||r.target!==e.container.ownerDocument&&this.inClass(r.target,\"highcharts-tracker\")||this.reset();}},{key:\"onDocumentMouseUp\",value:function onDocumentMouseUp(t){var _o$y,_o$y$pointer;(_o$y=o[y(S.hoverChartIndex,-1)])===null||_o$y===void 0?void 0:(_o$y$pointer=_o$y.pointer)===null||_o$y$pointer===void 0?void 0:_o$y$pointer.drop(t);}},{key:\"pinch\",value:function pinch(t){var _this33=this;var e=this,i=e.chart,s=e.hasZoom,r=e.lastTouches,o=[].map.call(t.touches||[],function(t){return e.normalize(t);}),n=o.length,a=1===n&&(e.inClass(t.target,\"highcharts-tracker\")&&i.runTrackerClick||e.runChartClick),h=i.tooltip,l=1===n&&y(h===null||h===void 0?void 0:h.options.followTouchMove,!0);n>1?e.initiated=!0:l&&(e.initiated=!1),s&&e.initiated&&!a&&!1!==t.cancelable&&t.preventDefault(),\"touchstart\"===t.type?(e.pinchDown=o,e.res=!0,i.mouseDownX=t.chartX):l?this.runPointActions(e.normalize(t)):r&&(u(i,\"touchpan\",{originalEvent:t,touches:o},function(){var e=function e(t){var e=t[0],i=t[1]||e;return{x:e.chartX,y:e.chartY,width:i.chartX-e.chartX,height:i.chartY-e.chartY};};i.transform({axes:i.axes.filter(function(t){return t.zoomEnabled&&(_this33.zoomHor&&t.horiz||_this33.zoomVert&&!t.horiz);}),to:e(o),from:e(r),trigger:t.type});}),e.res&&(e.res=!1,this.reset(!1,0))),e.lastTouches=o;}},{key:\"reset\",value:function reset(t,e){var i=this.chart,s=i.hoverSeries,r=i.hoverPoint,o=i.hoverPoints,n=i.tooltip,a=n&&n.shared?o:r;t&&a&&v(a).forEach(function(e){e.series.isCartesian&&void 0===e.plotX&&(t=!1);}),t?n&&a&&v(a).length&&(n.refresh(a),n.shared&&o?o.forEach(function(t){t.setState(t.state,!0),t.series.isCartesian&&(t.series.xAxis.crosshair&&t.series.xAxis.drawCrosshair(null,t),t.series.yAxis.crosshair&&t.series.yAxis.drawCrosshair(null,t));}):r&&(r.setState(r.state,!0),i.axes.forEach(function(t){t.crosshair&&r.series[t.coll]===t&&t.drawCrosshair(null,r);}))):(r&&r.onMouseOut(),o&&o.forEach(function(t){t.setState();}),s&&s.onMouseOut(),n&&n.hide(e),this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove()),i.axes.forEach(function(t){t.hideCrosshair();}),i.hoverPoints=i.hoverPoint=void 0);}},{key:\"runPointActions\",value:function runPointActions(t,e,i){var s=this.chart,r=s.series,n=s.tooltip&&s.tooltip.options.enabled?s.tooltip:void 0,a=!!n&&n.shared,l=e||s.hoverPoint,d=l&&l.series||s.hoverSeries,c=(!t||\"touchmove\"!==t.type)&&(!!e||d&&d.directTouch&&this.isDirectTouch),u=this.getHoverData(l,d,r,c,a,t);l=u.hoverPoint,d=u.hoverSeries;var g=u.hoverPoints,f=d&&d.tooltipOptions.followPointer&&!d.tooltipOptions.split,m=a&&d&&!d.noSharedTooltip;if(l&&(i||l!==s.hoverPoint||n&&n.isHidden)){if((s.hoverPoints||[]).forEach(function(t){-1===g.indexOf(t)&&t.setState();}),s.hoverSeries!==d&&d.onMouseOver(),this.applyInactiveState(g),(g||[]).forEach(function(t){t.setState(\"hover\");}),s.hoverPoint&&s.hoverPoint.firePointEvent(\"mouseOut\"),!l.series)return;s.hoverPoints=g,s.hoverPoint=l,l.firePointEvent(\"mouseOver\",void 0,function(){n&&l&&n.refresh(m?g:l,t);});}else if(f&&n&&!n.isHidden){var _e118=n.getAnchor([{}],t);s.isInsidePlot(_e118[0],_e118[1],{visiblePlotOnly:!0})&&n.updatePosition({plotX:_e118[0],plotY:_e118[1]});}this.unDocMouseMove||(this.unDocMouseMove=h(s.container.ownerDocument,\"mousemove\",function(t){var _o50,_o50$pointer,_S$hoverChartIndex;return(_o50=o[(_S$hoverChartIndex=S.hoverChartIndex)!==null&&_S$hoverChartIndex!==void 0?_S$hoverChartIndex:-1])===null||_o50===void 0?void 0:(_o50$pointer=_o50.pointer)===null||_o50$pointer===void 0?void 0:_o50$pointer.onDocumentMouseMove(t);}),this.eventsToUnbind.push(this.unDocMouseMove)),s.axes.forEach(function(e){var i;var r=y((e.crosshair||{}).snap,!0);!r||(i=s.hoverPoint)&&i.series[e.coll]===e||(i=p(g,function(t){return t.series&&t.series[e.coll]===e;})),i||!r?e.drawCrosshair(t,i):e.hideCrosshair();});}},{key:\"setDOMEvents\",value:function setDOMEvents(){var _this34=this;var t=this.chart.container,e=t.ownerDocument;t.onmousedown=this.onContainerMouseDown.bind(this),t.onmousemove=this.onContainerMouseMove.bind(this),t.onclick=this.onContainerClick.bind(this),this.eventsToUnbind.push(h(t,\"mouseenter\",this.onContainerMouseEnter.bind(this)),h(t,\"mouseleave\",this.onContainerMouseLeave.bind(this))),S.unbindDocumentMouseUp||(S.unbindDocumentMouseUp=[]),S.unbindDocumentMouseUp.push(h(e,\"mouseup\",this.onDocumentMouseUp.bind(this)));var i=this.chart.renderTo.parentElement;for(;i&&\"BODY\"!==i.tagName;)this.eventsToUnbind.push(h(i,\"scroll\",function(){delete _this34.chartPosition;})),i=i.parentElement;this.eventsToUnbind.push(h(t,\"touchstart\",this.onContainerTouchStart.bind(this),{passive:!1}),h(t,\"touchmove\",this.onContainerTouchMove.bind(this),{passive:!1})),S.unbindDocumentTouchEnd||(S.unbindDocumentTouchEnd=h(e,\"touchend\",this.onDocumentTouchEnd.bind(this),{passive:!1})),this.setPointerCapture(),h(this.chart,\"redraw\",this.setPointerCapture.bind(this));}},{key:\"setPointerCapture\",value:function setPointerCapture(){var _e$options$tooltip,_e$options$chart$styl;if(!a)return;var t=this.pointerCaptureEventsToUnbind,e=this.chart,i=e.container,s=y((_e$options$tooltip=e.options.tooltip)===null||_e$options$tooltip===void 0?void 0:_e$options$tooltip.followTouchMove,!0)&&e.series.some(function(t){return t.options.findNearestPointBy.indexOf(\"y\")>-1;});!this.hasPointerCapture&&s?(t.push(h(i,\"pointerdown\",function(t){var _t$target,_t$target2;((_t$target=t.target)===null||_t$target===void 0?void 0:_t$target.hasPointerCapture(t.pointerId))&&((_t$target2=t.target)===null||_t$target2===void 0?void 0:_t$target2.releasePointerCapture(t.pointerId));}),h(i,\"pointermove\",function(t){var _e$pointer,_e$pointer$getPointFr;(_e$pointer=e.pointer)===null||_e$pointer===void 0?void 0:(_e$pointer$getPointFr=_e$pointer.getPointFromEvent(t))===null||_e$pointer$getPointFr===void 0?void 0:_e$pointer$getPointFr.onMouseOver(t);})),e.styledMode||d(i,{\"touch-action\":\"none\"}),i.className+=\" highcharts-no-touch-action\",this.hasPointerCapture=!0):this.hasPointerCapture&&!s&&(t.forEach(function(t){return t();}),t.length=0,e.styledMode||d(i,{\"touch-action\":y((_e$options$chart$styl=e.options.chart.style)===null||_e$options$chart$styl===void 0?void 0:_e$options$chart$styl[\"touch-action\"],\"manipulation\")}),i.className=i.className.replace(\" highcharts-no-touch-action\",\"\"),this.hasPointerCapture=!1);}},{key:\"setHoverChartIndex\",value:function setHoverChartIndex(t){var i=this.chart,s=e.charts[y(S.hoverChartIndex,-1)];if(s&&s!==i){var _t116,_s$pointer;var _e119={relatedTarget:i.container};t&&!((_t116=t)!==null&&_t116!==void 0&&_t116.relatedTarget)&&(t=_objectSpread(_objectSpread({},_e119),t)),(_s$pointer=s.pointer)===null||_s$pointer===void 0?void 0:_s$pointer.onContainerMouseLeave(t||_e119);}s&&s.mouseIsDown||(S.hoverChartIndex=i.index);}},{key:\"touch\",value:function touch(t,e){var i;var s=this.chart,_this$pinchDown=this.pinchDown,r=_this$pinchDown===void 0?[]:_this$pinchDown;this.setHoverChartIndex(),1===(t=this.normalize(t)).touches.length?s.isInsidePlot(t.chartX-s.plotLeft,t.chartY-s.plotTop,{visiblePlotOnly:!0})&&!s.openMenu?(e&&this.runPointActions(t),\"touchmove\"===t.type&&(i=!!r[0]&&Math.pow(r[0].chartX-t.chartX,2)+Math.pow(r[0].chartY-t.chartY,2)>=16),y(i,!0)&&this.pinch(t)):e&&this.reset():2===t.touches.length&&this.pinch(t);}},{key:\"touchSelect\",value:function touchSelect(t){return!!(this.chart.zooming.singleTouch&&t.touches&&1===t.touches.length);}},{key:\"zoomOption\",value:function zoomOption(t){var e=this.chart,i=e.inverted,s=e.zooming.type||\"\",r,o;/touch/.test(t.type)&&(s=y(e.zooming.pinchType,s)),this.zoomX=r=/x/.test(s),this.zoomY=o=/y/.test(s),this.zoomHor=r&&!i||o&&i,this.zoomVert=o&&!i||r&&i,this.hasZoom=r||o;}}]);return S;}();return(s=S||(S={})).compose=function(t){b(n,\"Core.Pointer\")&&h(t,\"beforeRender\",function(){this.pointer=new s(this,this.options);});},S;}),i(e,\"Core/Legend/LegendSymbol.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.extend,s=t.merge,r=t.pick;return function(t){function e(t,e,o){var _t$fontMetrics;var n=this.legendItem=this.legendItem||{},a=this.chart,h=this.options,_t$baseline=t.baseline,l=_t$baseline===void 0?0:_t$baseline,d=t.symbolWidth,c=t.symbolHeight,p=this.symbol||\"circle\",u=c/2,g=a.renderer,f=n.group,m=l-Math.round((((_t$fontMetrics=t.fontMetrics)===null||_t$fontMetrics===void 0?void 0:_t$fontMetrics.b)||c)*(o?.4:.3)),x={},y,b=h.marker,v=0;if(a.styledMode||(x[\"stroke-width\"]=Math.min(h.lineWidth||0,24),h.dashStyle?x.dashstyle=h.dashStyle:\"square\"===h.linecap||(x[\"stroke-linecap\"]=\"round\")),n.line=g.path().addClass(\"highcharts-graph\").attr(x).add(f),o&&(n.area=g.path().addClass(\"highcharts-area\").add(f)),x[\"stroke-linecap\"]&&(v=Math.min(n.line.strokeWidth(),d)/2),d){var _n$area;var _t117=[[\"M\",v,m],[\"L\",d-v,m]];n.line.attr({d:_t117}),(_n$area=n.area)===null||_n$area===void 0?void 0:_n$area.attr({d:[].concat(_t117,[[\"L\",d-v,l],[\"L\",v,l]])});}if(b&&!1!==b.enabled&&d){var _t118=Math.min(r(b.radius,u),u);0===p.indexOf(\"url\")&&(b=s(b,{width:c,height:c}),_t118=0),n.symbol=y=g.symbol(p,d/2-_t118,m-_t118,2*_t118,2*_t118,i({context:\"legend\"},b)).addClass(\"highcharts-point\").add(f),y.isMarker=!0;}}t.areaMarker=function(t,i){e.call(this,t,i,!0);},t.lineMarker=e,t.rectangle=function(t,e){var i=e.legendItem||{},s=t.options,o=t.symbolHeight,n=s.squareSymbol,a=n?o:t.symbolWidth;i.symbol=this.chart.renderer.rect(n?(t.symbolWidth-o)/2:0,t.baseline-o+1,a,o,r(t.options.symbolRadius,o/2)).addClass(\"highcharts-point\").attr({zIndex:3}).add(i.group);};}(e||(e={})),e;}),i(e,\"Core/Series/SeriesDefaults.js\",[],function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1e3},enableMouseTracking:!0,events:{},marker:{enabledThreshold:2,lineColor:\"#ffffff\",lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:150},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:\"#cccccc\",lineColor:\"#000000\",lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:\"center\",borderWidth:0,defer:!0,formatter:function formatter(){var t=this.series.chart.numberFormatter;return\"number\"!=typeof this.y?\"\":t(this.y,-1);},padding:5,style:{fontSize:\"0.7em\",fontWeight:\"bold\",color:\"contrast\",textOutline:\"1px contrast\"},verticalAlign:\"bottom\",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:150},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:150},opacity:.2}},stickyTracking:!0,turboThreshold:1e3,findNearestPointBy:\"x\"};}),i(e,\"Core/Series/SeriesRegistry.js\",[e[\"Core/Globals.js\"],e[\"Core/Defaults.js\"],e[\"Core/Series/Point.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s){var r;var o=e.defaultOptions,n=s.extend,a=s.extendClass,h=s.merge;return function(e){function s(t,s){var r=o.plotOptions||{},n=s.defaultOptions,a=s.prototype;return a.type=t,a.pointClass||(a.pointClass=i),!e.seriesTypes[t]&&(n&&(r[t]=n),e.seriesTypes[t]=s,!0);}e.seriesTypes=t.seriesTypes,e.registerSeriesType=s,e.seriesType=function(t,r,l,d,c){var p=o.plotOptions||{};if(r=r||\"\",p[t]=h(p[r],l),delete e.seriesTypes[t],s(t,a(e.seriesTypes[r]||function(){},d)),e.seriesTypes[t].prototype.type=t,c){var _s89=/*#__PURE__*/function(_i76){_inherits(_s89,_i76);var _super15=_createSuper(_s89);function _s89(){_classCallCheck(this,_s89);return _super15.apply(this,arguments);}return _createClass(_s89);}(i);n(_s89.prototype,c),e.seriesTypes[t].prototype.pointClass=_s89;}return e.seriesTypes[t];};}(r||(r={})),r;}),i(e,\"Core/Series/Series.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Defaults.js\"],e[\"Core/Foundation.js\"],e[\"Core/Globals.js\"],e[\"Core/Legend/LegendSymbol.js\"],e[\"Core/Series/Point.js\"],e[\"Core/Series/SeriesDefaults.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Renderer/SVG/SVGElement.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o,n,a,h,l){var d=t.animObject,c=t.setAnimation,p=e.defaultOptions,u=i.registerEventOptions,g=s.svg,f=s.win,m=a.seriesTypes,x=l.arrayMax,y=l.arrayMin,b=l.clamp,v=l.correctFloat,S=l.crisp,C=l.defined,k=l.destroyObjectProperties,M=l.diffObjects,w=l.erase,T=l.error,A=l.extend,P=l.find,L=l.fireEvent,O=l.getClosestDistance,D=l.getNestedProperty,E=l.insertItem,I=l.isArray,j=l.isNumber,B=l.isString,R=l.merge,z=l.objectEach,N=l.pick,W=l.removeEvent,G=l.splat,H=l.syncTimeout;var X=/*#__PURE__*/function(){function X(){_classCallCheck(this,X);this.zoneAxis=\"y\";}_createClass(X,[{key:\"init\",value:function init(t,e){var i;L(this,\"init\",{options:e});var s=this,r=t.series;this.eventsToUnbind=[],s.chart=t,s.options=s.setOptions(e);var o=s.options,n=!1!==o.visible;s.linkedSeries=[],s.bindAxes(),A(s,{name:o.name,state:\"\",visible:n,selected:!0===o.selected}),u(this,o);var a=o.events;(a&&a.click||o.point&&o.point.events&&o.point.events.click||o.allowPointSelect)&&(t.runTrackerClick=!0),s.getColor(),s.getSymbol(),s.parallelArrays.forEach(function(t){s[t+\"Data\"]||(s[t+\"Data\"]=[]);}),s.isCartesian&&(t.hasCartesianSeries=!0),r.length&&(i=r[r.length-1]),s._i=N(i&&i._i,-1)+1,s.opacity=s.options.opacity,t.orderItems(\"series\",E(this,r)),o.dataSorting&&o.dataSorting.enabled?s.setDataSortingOptions():s.points||s.data||s.setData(o.data,!1),L(this,\"afterInit\");}},{key:\"is\",value:function is(t){return m[t]&&this instanceof m[t];}},{key:\"bindAxes\",value:function bindAxes(){var t;var e=this,i=e.options,s=e.chart;L(this,\"bindAxes\",null,function(){(e.axisTypes||[]).forEach(function(r){(s[r]||[]).forEach(function(s){t=s.options,(N(i[r],0)===s.index||void 0!==i[r]&&i[r]===t.id)&&(E(e,s.series),e[r]=s,s.isDirty=!0);}),e[r]||e.optionalAxis===r||T(18,!0,s);});}),L(this,\"afterBindAxes\");}},{key:\"updateParallelArrays\",value:function updateParallelArrays(t,e,i){var s=t.series,r=j(e)?function(i){var r=\"y\"===i&&s.toYData?s.toYData(t):t[i];s[i+\"Data\"][e]=r;}:function(t){Array.prototype[e].apply(s[t+\"Data\"],i);};s.parallelArrays.forEach(r);}},{key:\"hasData\",value:function hasData(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin||this.visible&&this.yData&&this.yData.length>0;}},{key:\"hasMarkerChanged\",value:function hasMarkerChanged(t,e){var i=t.marker,s=e.marker||{};return i&&(s.enabled&&!i.enabled||s.symbol!==i.symbol||s.height!==i.height||s.width!==i.width);}},{key:\"autoIncrement\",value:function autoIncrement(t){var e=this.options,i=e.pointIntervalUnit,s=e.relativeXValue,r=this.chart.time,o=this.xIncrement,n,a;return(o=N(o,e.pointStart,0),this.pointInterval=a=N(this.pointInterval,e.pointInterval,1),s&&j(t)&&(a*=t),i&&(n=new r.Date(o),\"day\"===i?r.set(\"Date\",n,r.get(\"Date\",n)+a):\"month\"===i?r.set(\"Month\",n,r.get(\"Month\",n)+a):\"year\"===i&&r.set(\"FullYear\",n,r.get(\"FullYear\",n)+a),a=n.getTime()-o),s&&j(t))?o+a:(this.xIncrement=o+a,o);}},{key:\"setDataSortingOptions\",value:function setDataSortingOptions(){var t=this.options;A(this,{requireSorting:!1,sorted:!1,enabledDataSorting:!0,allowDG:!1}),C(t.pointRange)||(t.pointRange=1);}},{key:\"setOptions\",value:function setOptions(t){var _p$plotOptions$series,_l$series;var e;var i=this.chart,s=i.options.plotOptions,r=i.userOptions||{},o=R(t),n=i.styledMode,a={plotOptions:s,userOptions:o};L(this,\"setOptions\",a);var h=a.plotOptions[this.type],l=r.plotOptions||{},d=l.series||{},c=p.plotOptions[this.type]||{},u=l[this.type]||{};this.userOptions=a.userOptions;var g=R(h,s.series,u,o);this.tooltipOptions=R(p.tooltip,(_p$plotOptions$series=p.plotOptions.series)===null||_p$plotOptions$series===void 0?void 0:_p$plotOptions$series.tooltip,c===null||c===void 0?void 0:c.tooltip,i.userOptions.tooltip,(_l$series=l.series)===null||_l$series===void 0?void 0:_l$series.tooltip,u.tooltip,o.tooltip),this.stickyTracking=N(o.stickyTracking,u.stickyTracking,d.stickyTracking,!!this.tooltipOptions.shared&&!this.noSharedTooltip||g.stickyTracking),null===h.marker&&delete g.marker,this.zoneAxis=g.zoneAxis||\"y\";var f=this.zones=(g.zones||[]).map(function(t){return _objectSpread({},t);});return(g.negativeColor||g.negativeFillColor)&&!g.zones&&(e={value:g[this.zoneAxis+\"Threshold\"]||g.threshold||0,className:\"highcharts-negative\"},n||(e.color=g.negativeColor,e.fillColor=g.negativeFillColor),f.push(e)),f.length&&C(f[f.length-1].value)&&f.push(n?{}:{color:this.color,fillColor:this.fillColor}),L(this,\"afterSetOptions\",{options:g}),g;}},{key:\"getName\",value:function getName(){return N(this.options.name,\"Series \"+(this.index+1));}},{key:\"getCyclic\",value:function getCyclic(t,e,i){var s,r;var o=this.chart,n=\"\".concat(t,\"Index\"),a=\"\".concat(t,\"Counter\"),h=(i===null||i===void 0?void 0:i.length)||o.options.chart.colorCount;!e&&(C(r=N(\"color\"===t?this.options.colorIndex:void 0,this[n]))?s=r:(o.series.length||(o[a]=0),s=o[a]%h,o[a]+=1),i&&(e=i[s])),void 0!==s&&(this[n]=s),this[t]=e;}},{key:\"getColor\",value:function getColor(){this.chart.styledMode?this.getCyclic(\"color\"):this.options.colorByPoint?this.color=\"#cccccc\":this.getCyclic(\"color\",this.options.color||p.plotOptions[this.type].color,this.chart.options.colors);}},{key:\"getPointsCollection\",value:function getPointsCollection(){return(this.hasGroupedData?this.points:this.data)||[];}},{key:\"getSymbol\",value:function getSymbol(){var t=this.options.marker;this.getCyclic(\"symbol\",t.symbol,this.chart.options.symbols);}},{key:\"findPointIndex\",value:function findPointIndex(t,e){var i,s,r;var n=t.id,a=t.x,h=this.points,l=this.options.dataSorting;if(n){var _t119=this.chart.get(n);_t119 instanceof o&&(i=_t119);}else if(this.linkedParent||this.enabledDataSorting||this.options.relativeXValue){var _e120=function _e120(e){return!e.touched&&e.index===t.index;};if(l&&l.matchByName?_e120=function _e120(e){return!e.touched&&e.name===t.name;}:this.options.relativeXValue&&(_e120=function _e120(e){return!e.touched&&e.options.x===t.x;}),!(i=P(h,_e120)))return;}return i&&void 0!==(r=i&&i.index)&&(s=!0),void 0===r&&j(a)&&(r=this.xData.indexOf(a,e)),-1!==r&&void 0!==r&&this.cropped&&(r=r>=this.cropStart?r-this.cropStart:r),!s&&j(r)&&h[r]&&h[r].touched&&(r=void 0),r;}},{key:\"updateData\",value:function updateData(t,e){var i=this.options,s=i.dataSorting,r=this.points,o=[],n=this.requireSorting,a=t.length===r.length,h,l,d,c,p=!0;if(this.xIncrement=null,t.forEach(function(t,e){var l;var d=C(t)&&this.pointClass.prototype.optionsToObject.call({series:this},t)||{},p=d.x;d.id||j(p)?(-1===(l=this.findPointIndex(d,c))||void 0===l?o.push(t):r[l]&&t!==i.data[l]?(r[l].update(t,!1,null,!1),r[l].touched=!0,n&&(c=l+1)):r[l]&&(r[l].touched=!0),(!a||e!==l||s&&s.enabled||this.hasDerivedData)&&(h=!0)):o.push(t);},this),h)for(l=r.length;l--;)(d=r[l])&&!d.touched&&d.remove&&d.remove(!1,e);else!a||s&&s.enabled?p=!1:(t.forEach(function(t,e){t===r[e].y||r[e].destroyed||r[e].update(t,!1,null,!1);}),o.length=0);return r.forEach(function(t){t&&(t.touched=!1);}),!!p&&(o.forEach(function(t){this.addPoint(t,!1,null,null,!1);},this),null===this.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=x(this.xData),this.autoIncrement()),!0);}},{key:\"setData\",value:function setData(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var i=arguments.length>2?arguments[2]:undefined;var s=arguments.length>3?arguments[3]:undefined;var r=this,o=r.points,n=o&&o.length||0,a=r.options,h=r.chart,l=a.dataSorting,d=r.xAxis,c=a.turboThreshold,p=this.xData,u=this.yData,g=r.pointArrayMap,f=g&&g.length,m=a.keys,x,y,b,v=0,S=1,C;h.options.chart.allowMutatingData||(a.data&&delete r.options.data,r.userOptions.data&&delete r.userOptions.data,C=R(!0,t));var k=(t=C||t||[]).length;if(l&&l.enabled&&(t=this.sortData(t)),h.options.chart.allowMutatingData&&!1!==s&&k&&n&&!r.cropped&&!r.hasGroupedData&&r.visible&&!r.boosted&&(b=this.updateData(t,i)),!b){r.xIncrement=null,r.colorCounter=0,this.parallelArrays.forEach(function(t){r[t+\"Data\"].length=0;});var _e121=c&&k>c;if(_e121){var _i77=r.getFirstValidPoint(t),_s90=r.getFirstValidPoint(t,k-1,-1),_o51=function _o51(t){return!!(I(t)&&(m||j(t[0])));};if(j(_i77)&&j(_s90))for(x=0;x<k;x++)p[x]=this.autoIncrement(),u[x]=t[x];else if(_o51(_i77)&&_o51(_s90)){if(f){if(_i77.length===f)for(x=0;x<k;x++)p[x]=this.autoIncrement(),u[x]=t[x];else for(x=0;x<k;x++)y=t[x],p[x]=y[0],u[x]=y.slice(1,f+1);}else if(m&&(v=m.indexOf(\"x\"),S=m.indexOf(\"y\"),v=v>=0?v:0,S=S>=0?S:1),1===_i77.length&&(S=0),v===S)for(x=0;x<k;x++)p[x]=this.autoIncrement(),u[x]=t[x][S];else for(x=0;x<k;x++)y=t[x],p[x]=y[v],u[x]=y[S];}else _e121=!1;}if(!_e121)for(x=0;x<k;x++)y={series:r},r.pointClass.prototype.applyOptions.apply(y,[t[x]]),r.updateParallelArrays(y,x);for(u&&B(u[0])&&T(14,!0,h),r.data=[],r.options.data=r.userOptions.data=t,x=n;x--;){var _o$x;(_o$x=o[x])===null||_o$x===void 0?void 0:_o$x.destroy();}d&&(d.minRange=d.userMinRange),r.isDirty=h.isDirtyBox=!0,r.isDirtyData=!!o,i=!1;}\"point\"===a.legendType&&(this.processData(),this.generatePoints()),e&&h.redraw(i);}},{key:\"sortData\",value:function sortData(t){var e=this,i=e.options.dataSorting.sortKey||\"y\",s=function s(t,e){return C(e)&&t.pointClass.prototype.optionsToObject.call({series:t},e)||{};};return t.forEach(function(i,r){t[r]=s(e,i),t[r].index=r;},this),t.concat().sort(function(t,e){var s=D(i,t),r=D(i,e);return r<s?-1:r>s?1:0;}).forEach(function(t,e){t.x=e;},this),e.linkedSeries&&e.linkedSeries.forEach(function(e){var i=e.options,r=i.data;i.dataSorting&&i.dataSorting.enabled||!r||(r.forEach(function(i,o){r[o]=s(e,i),t[o]&&(r[o].x=t[o].x,r[o].index=o);}),e.setData(r,!1));}),t;}},{key:\"getProcessedData\",value:function getProcessedData(t){var e=this,i=e.xAxis,s=e.options.cropThreshold,r=i===null||i===void 0?void 0:i.logarithmic,o=e.isCartesian,n,a,h=0,l,d,c,p=e.xData,u=e.yData,g=!1,f=p.length;i&&(d=(l=i.getExtremes()).min,c=l.max,g=!!(i.categories&&!i.names.length)),o&&e.sorted&&!t&&(!s||f>s||e.forceCrop)&&(p[f-1]<d||p[0]>c?(p=[],u=[]):e.yData&&(p[0]<d||p[f-1]>c)&&(p=(n=this.cropData(e.xData,e.yData,d,c)).xData,u=n.yData,h=n.start,a=!0));var m=O([r?p.map(r.log2lin):p],function(){return e.requireSorting&&!g&&T(15,!1,e.chart);});return{xData:p,yData:u,cropped:a,cropStart:h,closestPointRange:m};}},{key:\"processData\",value:function processData(t){var e=this.xAxis;if(this.isCartesian&&!this.isDirty&&!e.isDirty&&!this.yAxis.isDirty&&!t)return!1;var i=this.getProcessedData();this.cropped=i.cropped,this.cropStart=i.cropStart,this.processedXData=i.xData,this.processedYData=i.yData,this.closestPointRange=this.basePointRange=i.closestPointRange,L(this,\"afterProcessData\");}},{key:\"cropData\",value:function cropData(t,e,i,s){var r=t.length,o,n,a=0,h=r;for(o=0;o<r;o++)if(t[o]>=i){a=Math.max(0,o-1);break;}for(n=o;n<r;n++)if(t[n]>s){h=n+1;break;}return{xData:t.slice(a,h),yData:e.slice(a,h),start:a,end:h};}},{key:\"generatePoints\",value:function generatePoints(){var t=this.options,e=this.processedData||t.data,i=this.processedXData,s=this.processedYData,r=this.pointClass,o=i.length,n=this.cropStart||0,a=this.hasGroupedData,h=t.keys,l=[],d=t.dataGrouping&&t.dataGrouping.groupAll?n:0,c,p,u,g,f=this.data;if(!f&&!a){var _t120=[];_t120.length=e.length,f=this.data=_t120;}for(h&&a&&(this.options.keys=!1),g=0;g<o;g++)p=n+g,a?((u=new r(this,[i[g]].concat(G(s[g])))).dataGroup=this.groupMap[d+g],u.dataGroup.options&&(u.options=u.dataGroup.options,A(u,u.dataGroup.options),delete u.dataLabels)):(u=f[p])||void 0===e[p]||(f[p]=u=new r(this,e[p],i[g])),u&&(u.index=a?d+g:p,l[g]=u);if(this.options.keys=h,f&&(o!==(c=f.length)||a))for(g=0;g<c;g++)g!==n||a||(g+=o),f[g]&&(f[g].destroyElements(),f[g].plotX=void 0);this.data=f,this.points=l,L(this,\"afterGeneratePoints\");}},{key:\"getXExtremes\",value:function getXExtremes(t){return{min:y(t),max:x(t)};}},{key:\"getExtremes\",value:function getExtremes(t,e){var i=this.xAxis,s=this.yAxis,r=[],o=this.requireSorting&&!this.is(\"column\")?1:0,n=!!s&&s.positiveValuesOnly,a=e||this.getExtremesFromAll||this.options.getExtremesFromAll,h=this.processedXData,l=this.processedYData,d,c,p,u,g,f,m,b=0,v=0,S=0;if(this.cropped&&a){var _t121=this.getProcessedData(!0);h=_t121.xData,l=_t121.yData;}var C=(t=t||this.stackedYData||l||[]).length,k=h||this.xData;for(i&&(b=(d=i.getExtremes()).min,v=d.max),f=0;f<C;f++)if(u=k[f],c=(j(g=t[f])||I(g))&&((j(g)?g>0:g.length)||!n),p=e||this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!i||(k[f+o]||u)>=b&&(k[f-o]||u)<=v,c&&p){if(m=g.length)for(;m--;)j(g[m])&&(r[S++]=g[m]);else r[S++]=g;}var M={activeYData:r,dataMin:y(r),dataMax:x(r)};return L(this,\"afterGetExtremes\",{dataExtremes:M}),M;}},{key:\"applyExtremes\",value:function applyExtremes(){var t=this.getExtremes();return this.dataMin=t.dataMin,this.dataMax=t.dataMax,t;}},{key:\"getFirstValidPoint\",value:function getFirstValidPoint(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;var s=t.length,r=e;for(;r>=0&&r<s;){if(C(t[r]))return t[r];r+=i;}}},{key:\"translate\",value:function translate(){this.processedXData||this.processData(),this.generatePoints();var t=this.options,e=t.stacking,i=this.xAxis,s=i.categories,r=this.enabledDataSorting,o=this.yAxis,n=this.points,a=n.length,h=this.pointPlacementToXValue(),l=!!h,d=t.threshold,c=t.startFromThreshold?d:0,p,u,g,f,m=Number.MAX_VALUE;function x(t){return b(t,-1e9,1e9);}for(p=0;p<a;p++){var _o$stacking;var _t122=void 0;var _a18=n[p],_y=_a18.x,_b=void 0,_S3=void 0,_k2=_a18.y,_M=_a18.low,_w2=e&&((_o$stacking=o.stacking)===null||_o$stacking===void 0?void 0:_o$stacking.stacks[(this.negStacks&&_k2<(c?0:d)?\"-\":\"\")+this.stackKey]);u=i.translate(_y,!1,!1,!1,!0,h),_a18.plotX=j(u)?v(x(u)):void 0,e&&this.visible&&_w2&&_w2[_y]&&(f=this.getStackIndicator(f,_y,this.index),!_a18.isNull&&f.key&&(_S3=(_b=_w2[_y]).points[f.key]),_b&&I(_S3)&&(_M=_S3[0],_k2=_S3[1],_M===c&&f.key===_w2[_y].base&&(_M=N(j(d)?d:o.min)),o.positiveValuesOnly&&C(_M)&&_M<=0&&(_M=void 0),_a18.total=_a18.stackTotal=N(_b.total),_a18.percentage=C(_a18.y)&&_b.total?_a18.y/_b.total*100:void 0,_a18.stackY=_k2,this.irregularWidths||_b.setOffset(this.pointXOffset||0,this.barW||0,void 0,void 0,void 0,this.xAxis))),_a18.yBottom=C(_M)?x(o.translate(_M,!1,!0,!1,!0)):void 0,this.dataModify&&(_k2=this.dataModify.modifyValue(_k2,p)),j(_k2)&&void 0!==_a18.plotX&&(_t122=j(_t122=o.translate(_k2,!1,!0,!1,!0))?x(_t122):void 0),_a18.plotY=_t122,_a18.isInside=this.isPointInside(_a18),_a18.clientX=l?v(i.translate(_y,!1,!1,!1,!0,h)):u,_a18.negative=(_a18.y||0)<(d||0),_a18.category=N(s&&s[_a18.x],_a18.x),_a18.isNull||!1===_a18.visible||(void 0!==g&&(m=Math.min(m,Math.abs(u-g))),g=u),_a18.zone=this.zones.length?_a18.getZone():void 0,!_a18.graphic&&this.group&&r&&(_a18.isNew=!0);}this.closestPointRangePx=m,L(this,\"afterTranslate\");}},{key:\"getValidPoints\",value:function getValidPoints(t,e,i){var s=this.chart;return(t||this.points||[]).filter(function(t){var r=t.plotX,o=t.plotY;return!!((i||!t.isNull&&j(o))&&(!e||s.isInsidePlot(r,o,{inverted:s.inverted})))&&!1!==t.visible;});}},{key:\"getClipBox\",value:function getClipBox(){var _ref9;var t=this.chart,e=this.xAxis,i=this.yAxis,_R=R(t.clipBox),s=_R.x,r=_R.y,o=_R.width,n=_R.height;return e&&e.len!==t.plotSizeX&&(o=e.len),i&&i.len!==t.plotSizeY&&(n=i.len),t.inverted&&!this.invertible&&(_ref9=[n,o],o=_ref9[0],n=_ref9[1],_ref9),{x:s,y:r,width:o,height:n};}},{key:\"getSharedClipKey\",value:function getSharedClipKey(){return this.sharedClipKey=(this.options.xAxis||0)+\",\"+(this.options.yAxis||0),this.sharedClipKey;}},{key:\"setClip\",value:function setClip(){var t=this.chart,e=this.group,i=this.markerGroup,s=t.sharedClips,r=t.renderer,o=this.getClipBox(),n=this.getSharedClipKey(),a=s[n];a?a.animate(o):s[n]=a=r.clipRect(o),e&&e.clip(!1===this.options.clip?void 0:a),i&&i.clip();}},{key:\"animate\",value:function animate(t){var e=this.chart,i=this.group,s=this.markerGroup,r=e.inverted,o=d(this.options.animation),n=[this.getSharedClipKey(),o.duration,o.easing,o.defer].join(\",\"),a=e.sharedClips[n],h=e.sharedClips[n+\"m\"];if(t&&i){var _t123=this.getClipBox();if(a)a.attr(\"height\",_t123.height);else{_t123.width=0,r&&(_t123.x=e.plotHeight),a=e.renderer.clipRect(_t123),e.sharedClips[n]=a;var _i78={x:-99,y:-99,width:r?e.plotWidth+199:99,height:r?99:e.plotHeight+199};h=e.renderer.clipRect(_i78),e.sharedClips[n+\"m\"]=h;}i.clip(a),s===null||s===void 0?void 0:s.clip(h);}else if(a&&!a.hasClass(\"highcharts-animating\")){var _t124=this.getClipBox(),_i79=o.step;(s!==null&&s!==void 0&&s.element.childNodes.length||e.series.length>1)&&(o.step=function(t,e){var _h10;_i79&&_i79.apply(e,arguments),\"width\"===e.prop&&((_h10=h)===null||_h10===void 0?void 0:_h10.element)&&h.attr(r?\"height\":\"width\",t+99);}),a.addClass(\"highcharts-animating\").animate(_t124,o);}}},{key:\"afterAnimate\",value:function afterAnimate(){var _this35=this;this.setClip(),z(this.chart.sharedClips,function(t,e,i){t&&!_this35.chart.container.querySelector(\"[clip-path=\\\"url(#\".concat(t.id,\")\\\"]\"))&&(t.destroy(),delete i[e]);}),this.finishedAnimating=!0,L(this,\"afterAnimate\");}},{key:\"drawPoints\",value:function drawPoints(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.points;var e,i,s,r,o,n,a;var h=this.chart,l=h.styledMode,d=this.colorAxis,c=this.options,p=c.marker,u=this[this.specialGroup||\"markerGroup\"],g=this.xAxis,f=N(p.enabled,!g||!!g.isRadial||null,this.closestPointRangePx>=p.enabledThreshold*p.radius);if(!1!==p.enabled||this._hasPointMarkers)for(e=0;e<t.length;e++)if(r=(s=(i=t[e]).graphic)?\"animate\":\"attr\",o=i.marker||{},n=!!i.marker,(f&&void 0===o.enabled||o.enabled)&&!i.isNull&&!1!==i.visible){var _t125=N(o.symbol,this.symbol,\"rect\");a=this.markerAttribs(i,i.selected&&\"select\"),this.enabledDataSorting&&(i.startXPos=g.reversed?-(a.width||0):g.width);var _e122=!1!==i.isInside;if(!s&&_e122&&((a.width||0)>0||i.hasImage)&&(i.graphic=s=h.renderer.symbol(_t125,a.x,a.y,a.width,a.height,n?o:p).add(u),this.enabledDataSorting&&h.hasRendered&&(s.attr({x:i.startXPos}),r=\"animate\")),s&&\"animate\"===r&&s[_e122?\"show\":\"hide\"](_e122).animate(a),s){var _t126=this.pointAttribs(i,l||!i.selected?void 0:\"select\");l?d&&s.css({fill:_t126.fill}):s[r](_t126);}s&&s.addClass(i.getClassName(),!0);}else s&&(i.graphic=s.destroy());}},{key:\"markerAttribs\",value:function markerAttribs(t,e){var i=this.options,s=i.marker,r=t.marker||{},o=r.symbol||s.symbol,n={},a,h,l=N(r.radius,s&&s.radius);e&&(a=s.states[e],l=N((h=r.states&&r.states[e])&&h.radius,a&&a.radius,l&&l+(a&&a.radiusPlus||0))),t.hasImage=o&&0===o.indexOf(\"url\"),t.hasImage&&(l=0);var d=t.pos();return j(l)&&d&&(i.crisp&&(d[0]=S(d[0],t.hasImage?0:\"rect\"===o?(s===null||s===void 0?void 0:s.lineWidth)||0:1)),n.x=d[0]-l,n.y=d[1]-l),l&&(n.width=n.height=2*l),n;}},{key:\"pointAttribs\",value:function pointAttribs(t,e){var i=this.options.marker,s=t&&t.options,r=s&&s.marker||{},o=s&&s.color,n=t&&t.color,a=t&&t.zone&&t.zone.color,h,l,d=this.color,c,p,u=N(r.lineWidth,i.lineWidth),g=1;return d=o||a||n||d,c=r.fillColor||i.fillColor||d,p=r.lineColor||i.lineColor||d,e=e||\"normal\",h=i.states[e]||{},u=N((l=r.states&&r.states[e]||{}).lineWidth,h.lineWidth,u+N(l.lineWidthPlus,h.lineWidthPlus,0)),c=l.fillColor||h.fillColor||c,{stroke:p=l.lineColor||h.lineColor||p,\"stroke-width\":u,fill:c,opacity:g=N(l.opacity,h.opacity,g)};}},{key:\"destroy\",value:function destroy(t){var e,i,s;var r=this,o=r.chart,n=/AppleWebKit\\/533/.test(f.navigator.userAgent),a=r.data||[];for(L(r,\"destroy\",{keepEventsForUpdate:t}),this.removeEvents(t),(r.axisTypes||[]).forEach(function(t){(s=r[t])&&s.series&&(w(s.series,r),s.isDirty=s.forceRedraw=!0);}),r.legendItem&&r.chart.legend.destroyItem(r),e=a.length;e--;)(i=a[e])&&i.destroy&&i.destroy();var _iteratorNormalCompletion12=true;var _didIteratorError12=false;var _iteratorError12=undefined;try{for(var _iterator12=r.zones[Symbol.iterator](),_step12;!(_iteratorNormalCompletion12=(_step12=_iterator12.next()).done);_iteratorNormalCompletion12=true){var _t127=_step12.value;k(_t127,void 0,!0);}}catch(err){_didIteratorError12=true;_iteratorError12=err;}finally{try{if(!_iteratorNormalCompletion12&&_iterator12[\"return\"]!=null){_iterator12[\"return\"]();}}finally{if(_didIteratorError12){throw _iteratorError12;}}}l.clearTimeout(r.animationTimeout),z(r,function(t,e){t instanceof h&&!t.survive&&t[n&&\"group\"===e?\"hide\":\"destroy\"]();}),o.hoverSeries===r&&(o.hoverSeries=void 0),w(o.series,r),o.orderItems(\"series\"),z(r,function(e,i){t&&\"hcEvents\"===i||delete r[i];});}},{key:\"applyZones\",value:function applyZones(){var t=this.area,e=this.chart,i=this.graph,s=this.zones,r=this.points,o=this.xAxis,n=this.yAxis,a=this.zoneAxis,h=e.inverted,l=e.renderer,d=this[\"\".concat(a,\"Axis\")],_ref10=d||{},c=_ref10.isXAxis,_ref10$len=_ref10.len,p=_ref10$len===void 0?0:_ref10$len,u=((i===null||i===void 0?void 0:i.strokeWidth())||0)/2+1,g=function g(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;h&&(i=p-i);var _t$translated=t.translated,s=_t$translated===void 0?0:_t$translated,r=t.lineClip,o=i-s;r===null||r===void 0?void 0:r.push([\"L\",e,Math.abs(o)<u?i-u*(o<=0?-1:1):s]);};if(s.length&&(i||t)&&d&&j(d.min)){var _e123=d.getExtremes().max,_u3=function _u3(t){t.forEach(function(e,i){(\"M\"===e[0]||\"L\"===e[0])&&(t[i]=[e[0],c?p-e[1]:e[1],c?e[2]:p-e[2]]);});};if(s.forEach(function(t){t.lineClip=[],t.translated=b(d.toPixels(N(t.value,_e123),!0)||0,0,p);}),i&&!this.showLine&&i.hide(),t&&t.hide(),\"y\"===a&&r.length<o.len){var _iteratorNormalCompletion13=true;var _didIteratorError13=false;var _iteratorError13=undefined;try{for(var _iterator13=r[Symbol.iterator](),_step13;!(_iteratorNormalCompletion13=(_step13=_iterator13.next()).done);_iteratorNormalCompletion13=true){var _t128=_step13.value;var _e124=_t128.plotX,_i80=_t128.plotY,_r25=_t128.zone,_o52=_r25&&s[s.indexOf(_r25)-1];_r25&&g(_r25,_e124,_i80),_o52&&g(_o52,_e124,_i80);}}catch(err){_didIteratorError13=true;_iteratorError13=err;}finally{try{if(!_iteratorNormalCompletion13&&_iterator13[\"return\"]!=null){_iterator13[\"return\"]();}}finally{if(_didIteratorError13){throw _iteratorError13;}}}}var _f=[],_m4=d.toPixels(d.getExtremes().min,!0);s.forEach(function(e){var _d7,_e$graph,_e$area;var s=e.lineClip||[],r=Math.round(e.translated||0);o.reversed&&s.reverse();var a=e.clip,d=e.simpleClip,p=0,g=0,x=o.len,y=n.len;c?(p=r,x=_m4):(g=r,y=_m4);var b=[[\"M\",p,g],[\"L\",x,g],[\"L\",x,y],[\"L\",p,y],[\"Z\"]],v=[b[0]].concat(_toConsumableArray(s),[b[1],b[2]],_toConsumableArray(_f),[b[3],b[4]]);_f=s.reverse(),_m4=r,h&&(_u3(v),t&&_u3(b)),a?(a.animate({d:v}),(_d7=d)===null||_d7===void 0?void 0:_d7.animate({d:b})):(a=e.clip=l.path(v),t&&(d=e.simpleClip=l.path(b))),i&&(_e$graph=e.graph)!==null&&_e$graph!==void 0&&_e$graph.clip(a),t&&((_e$area=e.area)===null||_e$area===void 0?void 0:_e$area.clip(d));});}else this.visible&&(i&&i.show(),t&&t.show());}},{key:\"plotGroup\",value:function plotGroup(t,e,i,s,r){var o=this[t],n=!o,a={visibility:i,zIndex:s||.1};return C(this.opacity)&&!this.chart.styledMode&&\"inactive\"!==this.state&&(a.opacity=this.opacity),o||(this[t]=o=this.chart.renderer.g().add(r)),o.addClass(\"highcharts-\"+e+\" highcharts-series-\"+this.index+\" highcharts-\"+this.type+\"-series \"+(C(this.colorIndex)?\"highcharts-color-\"+this.colorIndex+\" \":\"\")+(this.options.className||\"\")+(o.hasClass(\"highcharts-tracker\")?\" highcharts-tracker\":\"\"),!0),o.attr(a)[n?\"attr\":\"animate\"](this.getPlotBox(e)),o;}},{key:\"getPlotBox\",value:function getPlotBox(t){var e=this.xAxis,i=this.yAxis,s=this.chart,r=s.inverted&&!s.polar&&e&&this.invertible&&\"series\"===t;return s.inverted&&(e=i,i=this.xAxis),{translateX:e?e.left:s.plotLeft,translateY:i?i.top:s.plotTop,rotation:r?90:0,rotationOriginX:r?(e.len-i.len)/2:0,rotationOriginY:r?(e.len+i.len)/2:0,scaleX:r?-1:1,scaleY:1};}},{key:\"removeEvents\",value:function removeEvents(t){var e=this.eventsToUnbind;t||W(this),e.length&&(e.forEach(function(t){t();}),e.length=0);}},{key:\"render\",value:function render(){var _t$animate,_t$drawDataLabels,_t$redrawPoints,_t$drawTracker,_t$animate2;var t=this,e=t.chart,i=t.options,s=t.hasRendered,r=d(i.animation),o=t.visible?\"inherit\":\"hidden\",n=i.zIndex,a=e.seriesGroup,h=t.finishedAnimating?0:r.duration;L(this,\"render\"),t.plotGroup(\"group\",\"series\",o,n,a),t.markerGroup=t.plotGroup(\"markerGroup\",\"markers\",o,n,a),!1!==i.clip&&t.setClip(),h&&(_t$animate=t.animate)!==null&&_t$animate!==void 0&&_t$animate.call(t,!0),t.drawGraph&&(t.drawGraph(),t.applyZones()),t.visible&&t.drawPoints(),(_t$drawDataLabels=t.drawDataLabels)!==null&&_t$drawDataLabels!==void 0&&_t$drawDataLabels.call(t),(_t$redrawPoints=t.redrawPoints)!==null&&_t$redrawPoints!==void 0&&_t$redrawPoints.call(t),i.enableMouseTracking&&(_t$drawTracker=t.drawTracker)!==null&&_t$drawTracker!==void 0&&_t$drawTracker.call(t),h&&(_t$animate2=t.animate)!==null&&_t$animate2!==void 0&&_t$animate2.call(t),s||(h&&r.defer&&(h+=r.defer),t.animationTimeout=H(function(){t.afterAnimate();},h||0)),t.isDirty=!1,t.hasRendered=!0,L(t,\"afterRender\");}},{key:\"redraw\",value:function redraw(){var t=this.isDirty||this.isDirtyData;this.translate(),this.render(),t&&delete this.kdTree;}},{key:\"reserveSpace\",value:function reserveSpace(){return this.visible||!this.chart.options.chart.ignoreHiddenSeries;}},{key:\"searchPoint\",value:function searchPoint(t,e){var i=this.xAxis,s=this.yAxis,r=this.chart.inverted;return this.searchKDTree({clientX:r?i.len-t.chartY+i.pos:t.chartX-i.pos,plotY:r?s.len-t.chartX+s.pos:t.chartY-s.pos},e,t);}},{key:\"buildKDTree\",value:function buildKDTree(t){this.buildingKdTree=!0;var e=this,i=e.options.findNearestPointBy.indexOf(\"y\")>-1?2:1;delete e.kdTree,H(function(){e.kdTree=function t(i,s,r){var o,n;var a=i===null||i===void 0?void 0:i.length;if(a)return o=e.kdAxisArray[s%r],i.sort(function(t,e){return(t[o]||0)-(e[o]||0);}),{point:i[n=Math.floor(a/2)],left:t(i.slice(0,n),s+1,r),right:t(i.slice(n+1),s+1,r)};}(e.getValidPoints(void 0,!e.directTouch),i,i),e.buildingKdTree=!1;},e.options.kdNow||(t===null||t===void 0?void 0:t.type)===\"touchstart\"?0:1);}},{key:\"searchKDTree\",value:function searchKDTree(t,e,i){var s=this,_this$kdAxisArray=_slicedToArray(this.kdAxisArray,2),r=_this$kdAxisArray[0],o=_this$kdAxisArray[1],n=e?\"distX\":\"dist\",a=(s.options.findNearestPointBy||\"\").indexOf(\"y\")>-1?2:1,h=!!s.isBubble;if(this.kdTree||this.buildingKdTree||this.buildKDTree(i),this.kdTree)return function t(e,i,a,l,_d$marker){var d=i.point,c=s.kdAxisArray[a%l],p,u,g=d;!function(t,e,_e$marker){var i=t[r],s=e[r],n=C(i)&&C(s)?i-s:null,a=t[o],l=e[o],d=C(a)&&C(l)?a-l:0,c=h&&((_e$marker=e.marker)===null||_e$marker===void 0?void 0:_e$marker.radius)||0;e.dist=Math.sqrt((n&&n*n||0)+d*d)-c,e.distX=C(n)?Math.abs(n)-c:Number.MAX_VALUE;}(e,d);var f=(e[c]||0)-(d[c]||0)+(h&&((_d$marker=d.marker)===null||_d$marker===void 0?void 0:_d$marker.radius)||0),m=f<0?\"left\":\"right\",x=f<0?\"right\":\"left\";return i[m]&&(g=(p=t(e,i[m],a+1,l))[n]<g[n]?p:d),i[x]&&Math.sqrt(f*f)<g[n]&&(g=(u=t(e,i[x],a+1,l))[n]<g[n]?u:g),g;}(t,this.kdTree,a,a);}},{key:\"pointPlacementToXValue\",value:function pointPlacementToXValue(){var t=this.options,e=this.xAxis,i=t.pointPlacement;return\"between\"===i&&(i=e.reversed?-.5:.5),j(i)?i*(t.pointRange||e.pointRange):0;}},{key:\"isPointInside\",value:function isPointInside(t){var e=this.chart,i=this.xAxis,s=this.yAxis,_t$plotX2=t.plotX,r=_t$plotX2===void 0?-1:_t$plotX2,_t$plotY2=t.plotY,o=_t$plotY2===void 0?-1:_t$plotY2;return o>=0&&o<=(s?s.len:e.plotHeight)&&r>=0&&r<=(i?i.len:e.plotWidth);}},{key:\"drawTracker\",value:function drawTracker(){var _r$options$tooltip;var t=this,e=t.options,i=e.trackByArea,s=[].concat((i?t.areaPath:t.graphPath)||[]),r=t.chart,o=r.pointer,n=r.renderer,a=((_r$options$tooltip=r.options.tooltip)===null||_r$options$tooltip===void 0?void 0:_r$options$tooltip.snap)||0,h=function h(){e.enableMouseTracking&&r.hoverSeries!==t&&t.onMouseOver();},l=\"rgba(192,192,192,\"+(g?1e-4:.002)+\")\",d=t.tracker;d?d.attr({d:s}):t.graph&&(t.tracker=d=n.path(s).attr({visibility:t.visible?\"inherit\":\"hidden\",zIndex:2}).addClass(i?\"highcharts-tracker-area\":\"highcharts-tracker-line\").add(t.group),r.styledMode||d.attr({\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",stroke:l,fill:i?l:\"none\",\"stroke-width\":t.graph.strokeWidth()+(i?0:2*a)}),[t.tracker,t.markerGroup,t.dataLabelsGroup].forEach(function(t){t&&(t.addClass(\"highcharts-tracker\").on(\"mouseover\",h).on(\"mouseout\",function(t){o===null||o===void 0?void 0:o.onTrackerMouseOut(t);}),e.cursor&&!r.styledMode&&t.css({cursor:e.cursor}),t.on(\"touchstart\",h));})),L(this,\"afterDrawTracker\");}},{key:\"addPoint\",value:function addPoint(t,e,i,s,r){var o,n;var a=this.options,h=this.data,l=this.chart,d=this.xAxis,c=d&&d.hasNames&&d.names,p=a.data,u=this.xData;e=N(e,!0);var g={series:this};this.pointClass.prototype.applyOptions.apply(g,[t]);var f=g.x;if(n=u.length,this.requireSorting&&f<u[n-1])for(o=!0;n&&u[n-1]>f;)n--;this.updateParallelArrays(g,\"splice\",[n,0,0]),this.updateParallelArrays(g,n),c&&g.name&&(c[f]=g.name),p.splice(n,0,t),(o||this.processedData)&&(this.data.splice(n,0,null),this.processData()),\"point\"===a.legendType&&this.generatePoints(),i&&(h[0]&&h[0].remove?h[0].remove(!1):(h.shift(),this.updateParallelArrays(g,\"shift\"),p.shift())),!1!==r&&L(this,\"addPoint\",{point:g}),this.isDirty=!0,this.isDirtyData=!0,e&&l.redraw(s);}},{key:\"removePoint\",value:function removePoint(t,e,i){var s=this,r=s.data,o=r[t],n=s.points,a=s.chart,h=function h(){n&&n.length===r.length&&n.splice(t,1),r.splice(t,1),s.options.data.splice(t,1),s.updateParallelArrays(o||{series:s},\"splice\",[t,1]),o&&o.destroy(),s.isDirty=!0,s.isDirtyData=!0,e&&a.redraw();};c(i,a),e=N(e,!0),o?o.firePointEvent(\"remove\",null,h):h();}},{key:\"remove\",value:function remove(t,e,i,s){var r=this,o=r.chart;function n(){r.destroy(s),o.isDirtyLegend=o.isDirtyBox=!0,o.linkSeries(s),N(t,!0)&&o.redraw(e);}!1!==i?L(r,\"remove\",null,n):n();}},{key:\"update\",value:function update(t,e){var _ref11,_n$series$pointStart,_n$series,_i$xData;L(this,\"update\",{options:t=M(t,this.userOptions)});var i=this,s=i.chart,r=i.userOptions,o=i.initialType||i.type,n=s.options.plotOptions,a=m[o].prototype,h=i.finishedAnimating&&{animation:!1},l={},d,c,p=[\"colorIndex\",\"eventOptions\",\"navigatorSeries\",\"symbolIndex\",\"baseSeries\"],u=t.type||r.type||s.options.chart.type,g=!(this.hasDerivedData||u&&u!==this.type||void 0!==t.pointStart||void 0!==t.pointInterval||void 0!==t.relativeXValue||t.joinBy||t.mapData||[\"dataGrouping\",\"pointStart\",\"pointInterval\",\"pointIntervalUnit\",\"keys\"].some(function(t){return i.hasOptionChanged(t);}));u=u||o,g&&(p.push(\"data\",\"isDirtyData\",\"isDirtyCanvas\",\"points\",\"processedData\",\"processedXData\",\"processedYData\",\"xIncrement\",\"cropped\",\"_hasPointMarkers\",\"hasDataLabels\",\"nodes\",\"layout\",\"level\",\"mapMap\",\"mapData\",\"minY\",\"maxY\",\"minX\",\"maxX\",\"transformGroups\"),!1!==t.visible&&p.push(\"area\",\"graph\"),i.parallelArrays.forEach(function(t){p.push(t+\"Data\");}),t.data&&(t.dataSorting&&A(i.options.dataSorting,t.dataSorting),this.setData(t.data,!1))),t=R(r,{index:void 0===r.index?i.index:r.index,pointStart:(_ref11=(_n$series$pointStart=n===null||n===void 0?void 0:(_n$series=n.series)===null||_n$series===void 0?void 0:_n$series.pointStart)!==null&&_n$series$pointStart!==void 0?_n$series$pointStart:r.pointStart)!==null&&_ref11!==void 0?_ref11:(_i$xData=i.xData)===null||_i$xData===void 0?void 0:_i$xData[0]},!g&&{data:i.options.data},t,h),g&&t.data&&(t.data=i.options.data),(p=[\"group\",\"markerGroup\",\"dataLabelsGroup\",\"transformGroup\"].concat(p)).forEach(function(t){p[t]=i[t],delete i[t];});var f=!1;if(m[u]){if(f=u!==i.type,i.remove(!1,!1,!1,!0),f){if(s.propFromSeries(),Object.setPrototypeOf)Object.setPrototypeOf(i,m[u].prototype);else{var _t129=Object.hasOwnProperty.call(i,\"hcEvents\")&&i.hcEvents;for(c in a)i[c]=void 0;A(i,m[u].prototype),_t129?i.hcEvents=_t129:delete i.hcEvents;}}}else T(17,!0,s,{missingModuleFor:u});if(p.forEach(function(t){i[t]=p[t];}),i.init(s,t),g&&this.points){var _iteratorNormalCompletion14=true;var _didIteratorError14=false;var _iteratorError14=undefined;try{for(var _iterator14=(!1===(d=i.options).visible?(l.graphic=1,l.dataLabel=1):(this.hasMarkerChanged(d,r)&&(l.graphic=1),((_i$hasDataLabels=i.hasDataLabels)===null||_i$hasDataLabels===void 0?void 0:_i$hasDataLabels.call(i))||(l.dataLabel=1)),this.points)[Symbol.iterator](),_step14;!(_iteratorNormalCompletion14=(_step14=_iterator14.next()).done);_iteratorNormalCompletion14=true){var _i$hasDataLabels;var _t130=_step14.value;_t130&&_t130.series&&(_t130.resolveColor(),Object.keys(l).length&&_t130.destroyElements(l),!1===d.showInLegend&&_t130.legendItem&&s.legend.destroyItem(_t130));}}catch(err){_didIteratorError14=true;_iteratorError14=err;}finally{try{if(!_iteratorNormalCompletion14&&_iterator14[\"return\"]!=null){_iterator14[\"return\"]();}}finally{if(_didIteratorError14){throw _iteratorError14;}}}}i.initialType=o,s.linkSeries(),s.setSortedData(),f&&i.linkedSeries.length&&(i.isDirtyData=!0),L(this,\"afterUpdate\"),N(e,!0)&&s.redraw(!!g&&void 0);}},{key:\"setName\",value:function setName(t){this.name=this.options.name=this.userOptions.name=t,this.chart.isDirtyLegend=!0;}},{key:\"hasOptionChanged\",value:function hasOptionChanged(t){var _s$this$type,_s$series;var e=this.chart,i=this.options[t],s=e.options.plotOptions,r=this.userOptions[t],o=N(s===null||s===void 0?void 0:(_s$this$type=s[this.type])===null||_s$this$type===void 0?void 0:_s$this$type[t],s===null||s===void 0?void 0:(_s$series=s.series)===null||_s$series===void 0?void 0:_s$series[t]);return r&&!C(o)?i!==r:i!==N(o,i);}},{key:\"onMouseOver\",value:function onMouseOver(){var t=this.chart,e=t.hoverSeries,i=t.pointer;i!==null&&i!==void 0&&i.setHoverChartIndex(),e&&e!==this&&e.onMouseOut(),this.options.events.mouseOver&&L(this,\"mouseOver\"),this.setState(\"hover\"),t.hoverSeries=this;}},{key:\"onMouseOut\",value:function onMouseOut(){var t=this.options,e=this.chart,i=e.tooltip,s=e.hoverPoint;e.hoverSeries=null,s&&s.onMouseOut(),this&&t.events.mouseOut&&L(this,\"mouseOut\"),i&&!this.stickyTracking&&(!i.shared||this.noSharedTooltip)&&i.hide(),e.series.forEach(function(t){t.setState(\"\",!0);});}},{key:\"setState\",value:function setState(t,e){var i=this,s=i.options,r=i.graph,o=s.inactiveOtherPoints,n=s.states,a=N(n[t||\"normal\"]&&n[t||\"normal\"].animation,i.chart.options.chart.animation),h=s.lineWidth,l=s.opacity;if(t=t||\"\",i.state!==t&&([i.group,i.markerGroup,i.dataLabelsGroup].forEach(function(e){e&&(i.state&&e.removeClass(\"highcharts-series-\"+i.state),t&&e.addClass(\"highcharts-series-\"+t));}),i.state=t,!i.chart.styledMode)){if(n[t]&&!1===n[t].enabled)return;if(t&&(h=n[t].lineWidth||h+(n[t].lineWidthPlus||0),l=N(n[t].opacity,l)),r&&!r.dashstyle&&j(h))for(var _i81=0,_arr2=[r].concat(_toConsumableArray(this.zones.map(function(t){return t.graph;})));_i81<_arr2.length;_i81++){var _t131=_arr2[_i81];_t131===null||_t131===void 0?void 0:_t131.animate({\"stroke-width\":h},a);}o||[i.group,i.markerGroup,i.dataLabelsGroup,i.labelBySeries].forEach(function(t){t&&t.animate({opacity:l},a);});}e&&o&&i.points&&i.setAllPointsToState(t||void 0);}},{key:\"setAllPointsToState\",value:function setAllPointsToState(t){this.points.forEach(function(e){e.setState&&e.setState(t);});}},{key:\"setVisible\",value:function setVisible(t,e){var _s$hoverPoint;var i=this,s=i.chart,r=s.options.chart.ignoreHiddenSeries,o=i.visible;i.visible=t=i.options.visible=i.userOptions.visible=void 0===t?!o:t;var n=t?\"show\":\"hide\";[\"group\",\"dataLabelsGroup\",\"markerGroup\",\"tracker\",\"tt\"].forEach(function(t){var _i$t;(_i$t=i[t])===null||_i$t===void 0?void 0:_i$t[n]();}),(s.hoverSeries===i||((_s$hoverPoint=s.hoverPoint)===null||_s$hoverPoint===void 0?void 0:_s$hoverPoint.series)===i)&&i.onMouseOut(),i.legendItem&&s.legend.colorizeItem(i,t),i.isDirty=!0,i.options.stacking&&s.series.forEach(function(t){t.options.stacking&&t.visible&&(t.isDirty=!0);}),i.linkedSeries.forEach(function(e){e.setVisible(t,!1);}),r&&(s.isDirtyBox=!0),L(i,n),!1!==e&&s.redraw();}},{key:\"show\",value:function show(){this.setVisible(!0);}},{key:\"hide\",value:function hide(){this.setVisible(!1);}},{key:\"select\",value:function select(t){this.selected=t=this.options.selected=void 0===t?!this.selected:t,this.checkbox&&(this.checkbox.checked=t),L(this,t?\"select\":\"unselect\");}},{key:\"shouldShowTooltip\",value:function shouldShowTooltip(t,e){var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};return i.series=this,i.visiblePlotOnly=!0,this.chart.isInsidePlot(t,e,i);}},{key:\"drawLegendSymbol\",value:function drawLegendSymbol(t,e){var _r26;(_r26=r[this.options.legendSymbol||\"rectangle\"])===null||_r26===void 0?void 0:_r26.call(this,t,e);}}]);return X;}();return X.defaultOptions=n,X.types=a.seriesTypes,X.registerType=a.registerSeriesType,A(X.prototype,{axisTypes:[\"xAxis\",\"yAxis\"],coll:\"series\",colorCounter:0,directTouch:!1,invertible:!0,isCartesian:!0,kdAxisArray:[\"clientX\",\"plotY\"],parallelArrays:[\"x\",\"y\"],pointClass:o,requireSorting:!0,sorted:!0}),a.series=X,X;}),i(e,\"Core/Legend/Legend.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Foundation.js\"],e[\"Core/Globals.js\"],e[\"Core/Series/Series.js\"],e[\"Core/Series/Point.js\"],e[\"Core/Renderer/RendererUtilities.js\"],e[\"Core/Templating.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o,n,a){var h;var l=t.animObject,d=t.setAnimation,c=e.registerEventOptions,p=i.composed,u=i.marginNames,g=o.distribute,f=n.format,m=a.addEvent,x=a.createElement,y=a.css,b=a.defined,v=a.discardElement,S=a.find,C=a.fireEvent,k=a.isNumber,M=a.merge,w=a.pick,T=a.pushUnique,A=a.relativeLength,P=a.stableSort,L=a.syncTimeout;var O=/*#__PURE__*/function(){function O(t,e){var _this36=this;_classCallCheck(this,O);this.allItems=[],this.initialItemY=0,this.itemHeight=0,this.itemMarginBottom=0,this.itemMarginTop=0,this.itemX=0,this.itemY=0,this.lastItemY=0,this.lastLineHeight=0,this.legendHeight=0,this.legendWidth=0,this.maxItemWidth=0,this.maxLegendWidth=0,this.offsetWidth=0,this.padding=0,this.pages=[],this.symbolHeight=0,this.symbolWidth=0,this.titleHeight=0,this.totalItemWidth=0,this.widthOption=0,this.chart=t,this.setOptions(e),e.enabled&&(this.render(),c(this,e),m(this.chart,\"endResize\",function(){this.legend.positionCheckboxes();})),m(this.chart,\"render\",function(){_this36.options.enabled&&_this36.proximate&&(_this36.proximatePositions(),_this36.positionItems());});}_createClass(O,[{key:\"setOptions\",value:function setOptions(t){var e=w(t.padding,8);this.options=t,this.chart.styledMode||(this.itemStyle=t.itemStyle,this.itemHiddenStyle=M(this.itemStyle,t.itemHiddenStyle)),this.itemMarginTop=t.itemMarginTop,this.itemMarginBottom=t.itemMarginBottom,this.padding=e,this.initialItemY=e-5,this.symbolWidth=w(t.symbolWidth,16),this.pages=[],this.proximate=\"proximate\"===t.layout&&!this.chart.inverted,this.baseline=void 0;}},{key:\"update\",value:function update(t,e){var i=this.chart;this.setOptions(M(!0,this.options,t)),\"events\"in this.options&&c(this,this.options),this.destroy(),i.isDirtyLegend=i.isDirtyBox=!0,w(e,!0)&&i.redraw(),C(this,\"afterUpdate\",{redraw:e});}},{key:\"colorizeItem\",value:function colorizeItem(t,e){var _ref12=t.legendItem||{},i=_ref12.area,s=_ref12.group,r=_ref12.label,o=_ref12.line,n=_ref12.symbol;if(s!==null&&s!==void 0&&s[e?\"removeClass\":\"addClass\"](\"highcharts-legend-item-hidden\"),!this.chart.styledMode){var _this$itemHiddenStyle=this.itemHiddenStyle,_s91=_this$itemHiddenStyle===void 0?{}:_this$itemHiddenStyle,_a19=_s91.color,_t$options4=t.options,_h11=_t$options4.fillColor,_l11=_t$options4.fillOpacity,_d8=_t$options4.lineColor,_c10=_t$options4.marker,_p8=function _p8(t){return!e&&(t.fill&&(t.fill=_a19),t.stroke&&(t.stroke=_a19)),t;};r!==null&&r!==void 0&&r.css(M(e?this.itemStyle:_s91)),o!==null&&o!==void 0&&o.attr(_p8({stroke:_d8||t.color})),n&&n.attr(_p8(_c10&&n.isMarker?t.pointAttribs():{fill:t.color})),i===null||i===void 0?void 0:i.attr(_p8({fill:_h11||t.color,\"fill-opacity\":_h11?1:_l11!==null&&_l11!==void 0?_l11:.75}));}C(this,\"afterColorizeItem\",{item:t,visible:e});}},{key:\"positionItems\",value:function positionItems(){this.allItems.forEach(this.positionItem,this),this.chart.isResizing||this.positionCheckboxes();}},{key:\"positionItem\",value:function positionItem(t){var _this37=this;var _ref13=t.legendItem||{},e=_ref13.group,_ref13$x=_ref13.x,i=_ref13$x===void 0?0:_ref13$x,_ref13$y=_ref13.y,s=_ref13$y===void 0?0:_ref13$y,r=this.options,o=r.symbolPadding,n=!r.rtl,a=t.checkbox;if(e&&e.element){var _r27={translateX:n?i:this.legendWidth-i-2*o-4,translateY:s};e[b(e.translateY)?\"animate\":\"attr\"](_r27,void 0,function(){C(_this37,\"afterPositionItem\",{item:t});});}a&&(a.x=i,a.y=s);}},{key:\"destroyItem\",value:function destroyItem(t){var e=t.checkbox,i=t.legendItem||{};for(var _i82=0,_arr3=[\"group\",\"label\",\"line\",\"symbol\"];_i82<_arr3.length;_i82++){var _t132=_arr3[_i82];i[_t132]&&(i[_t132]=i[_t132].destroy());}e&&v(e),t.legendItem=void 0;}},{key:\"destroy\",value:function destroy(){var _iteratorNormalCompletion15=true;var _didIteratorError15=false;var _iteratorError15=undefined;try{for(var _iterator15=this.getAllItems()[Symbol.iterator](),_step15;!(_iteratorNormalCompletion15=(_step15=_iterator15.next()).done);_iteratorNormalCompletion15=true){var _t134=_step15.value;this.destroyItem(_t134);}}catch(err){_didIteratorError15=true;_iteratorError15=err;}finally{try{if(!_iteratorNormalCompletion15&&_iterator15[\"return\"]!=null){_iterator15[\"return\"]();}}finally{if(_didIteratorError15){throw _iteratorError15;}}}for(var _i83=0,_arr4=[\"clipRect\",\"up\",\"down\",\"pager\",\"nav\",\"box\",\"title\",\"group\"];_i83<_arr4.length;_i83++){var _t133=_arr4[_i83];this[_t133]&&(this[_t133]=this[_t133].destroy());}this.display=null;}},{key:\"positionCheckboxes\",value:function positionCheckboxes(){var t;var e=this.group&&this.group.alignAttr,i=this.clipHeight||this.legendHeight,s=this.titleHeight;e&&(t=e.translateY,this.allItems.forEach(function(r){var o;var n=r.checkbox;n&&(o=t+s+n.y+(this.scrollOffset||0)+3,y(n,{left:e.translateX+r.checkboxOffset+n.x-20+\"px\",top:o+\"px\",display:this.proximate||o>t-6&&o<t+i-6?\"\":\"none\"}));},this));}},{key:\"renderTitle\",value:function renderTitle(){var t=this.options,e=this.padding,i=t.title,s,r=0;i.text&&(this.title||(this.title=this.chart.renderer.label(i.text,e-3,e-4,void 0,void 0,void 0,t.useHTML,void 0,\"legend-title\").attr({zIndex:1}),this.chart.styledMode||this.title.css(i.style),this.title.add(this.group)),i.width||this.title.css({width:this.maxLegendWidth+\"px\"}),r=(s=this.title.getBBox()).height,this.offsetWidth=s.width,this.contentGroup.attr({translateY:r})),this.titleHeight=r;}},{key:\"setText\",value:function setText(t){var e=this.options;t.legendItem.label.attr({text:e.labelFormat?f(e.labelFormat,t,this.chart):e.labelFormatter.call(t)});}},{key:\"renderItem\",value:function renderItem(t){var e=t.legendItem=t.legendItem||{},i=this.chart,s=i.renderer,r=this.options,o=\"horizontal\"===r.layout,n=this.symbolWidth,a=r.symbolPadding||0,h=this.itemStyle,l=this.itemHiddenStyle,d=o?w(r.itemDistance,20):0,c=!r.rtl,p=!t.series,u=!p&&t.series.drawLegendSymbol?t.series:t,g=u.options,f=!!this.createCheckboxForItem&&g&&g.showCheckbox,m=r.useHTML,x=t.options.className,y=e.label,b=n+a+d+(f?20:0);!y&&(e.group=s.g(\"legend-item\").addClass(\"highcharts-\"+u.type+\"-series highcharts-color-\"+t.colorIndex+(x?\" \"+x:\"\")+(p?\" highcharts-series-\"+t.index:\"\")).attr({zIndex:1}).add(this.scrollGroup),e.label=y=s.text(\"\",c?n+a:-a,this.baseline||0,m),i.styledMode||y.css(M(t.visible?h:l)),y.attr({align:c?\"left\":\"right\",zIndex:2}).add(e.group),!this.baseline&&(this.fontMetrics=s.fontMetrics(y),this.baseline=this.fontMetrics.f+3+this.itemMarginTop,y.attr(\"y\",this.baseline),this.symbolHeight=w(r.symbolHeight,this.fontMetrics.f),r.squareSymbol&&(this.symbolWidth=w(r.symbolWidth,Math.max(this.symbolHeight,16)),b=this.symbolWidth+a+d+(f?20:0),c&&y.attr(\"x\",this.symbolWidth+a))),u.drawLegendSymbol(this,t),this.setItemEvents&&this.setItemEvents(t,y,m)),f&&!t.checkbox&&this.createCheckboxForItem&&this.createCheckboxForItem(t),this.colorizeItem(t,t.visible),(i.styledMode||!h.width)&&y.css({width:(r.itemWidth||this.widthOption||i.spacingBox.width)-b+\"px\"}),this.setText(t);var v=y.getBBox(),S=this.fontMetrics&&this.fontMetrics.h||0;t.itemWidth=t.checkboxOffset=r.itemWidth||e.labelWidth||v.width+b,this.maxItemWidth=Math.max(this.maxItemWidth,t.itemWidth),this.totalItemWidth+=t.itemWidth,this.itemHeight=t.itemHeight=Math.round(e.labelHeight||(v.height>1.5*S?v.height:S));}},{key:\"layoutItem\",value:function layoutItem(t){var e=this.options,i=this.padding,s=\"horizontal\"===e.layout,r=t.itemHeight,o=this.itemMarginBottom,n=this.itemMarginTop,a=s?w(e.itemDistance,20):0,h=this.maxLegendWidth,l=e.alignColumns&&this.totalItemWidth>h?this.maxItemWidth:t.itemWidth,d=t.legendItem||{};s&&this.itemX-i+l>h&&(this.itemX=i,this.lastLineHeight&&(this.itemY+=n+this.lastLineHeight+o),this.lastLineHeight=0),this.lastItemY=n+this.itemY+o,this.lastLineHeight=Math.max(r,this.lastLineHeight),d.x=this.itemX,d.y=this.itemY,s?this.itemX+=l:(this.itemY+=n+r+o,this.lastLineHeight=r),this.offsetWidth=this.widthOption||Math.max((s?this.itemX-i-(t.checkbox?0:a):l)+i,this.offsetWidth);}},{key:\"getAllItems\",value:function getAllItems(){var t=[];return this.chart.series.forEach(function(e){var i=e&&e.options;e&&w(i.showInLegend,!b(i.linkedTo)&&void 0,!0)&&(t=t.concat((e.legendItem||{}).labels||(\"point\"===i.legendType?e.data:e)));}),C(this,\"afterGetAllItems\",{allItems:t}),t;}},{key:\"getAlignment\",value:function getAlignment(){var t=this.options;return this.proximate?t.align.charAt(0)+\"tv\":t.floating?\"\":t.align.charAt(0)+t.verticalAlign.charAt(0)+t.layout.charAt(0);}},{key:\"adjustMargins\",value:function adjustMargins(t,e){var i=this.chart,s=this.options,r=this.getAlignment();r&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(o,n){o.test(r)&&!b(t[n])&&(i[u[n]]=Math.max(i[u[n]],i.legend[(n+1)%2?\"legendHeight\":\"legendWidth\"]+[1,-1,-1,1][n]*s[n%2?\"x\":\"y\"]+w(s.margin,12)+e[n]+(i.titleOffset[n]||0)));});}},{key:\"proximatePositions\",value:function proximatePositions(){var t;var e=this.chart,i=[],s=\"left\"===this.options.align;var _iteratorNormalCompletion16=true;var _didIteratorError16=false;var _iteratorError16=undefined;try{for(var _iterator16=(this.allItems.forEach(function(t){var r,o,n=s,a,h;t.yAxis&&(t.xAxis.options.reversed&&(n=!n),t.points&&(r=S(n?t.points:t.points.slice(0).reverse(),function(t){return k(t.plotY);})),o=this.itemMarginTop+t.legendItem.label.getBBox().height+this.itemMarginBottom,h=t.yAxis.top-e.plotTop,a=t.visible?(r?r.plotY:t.yAxis.height)+(h-.3*o):h+t.yAxis.height,i.push({target:a,size:o,item:t}));},this),g(i,e.plotHeight))[Symbol.iterator](),_step16;!(_iteratorNormalCompletion16=(_step16=_iterator16.next()).done);_iteratorNormalCompletion16=true){var _r28=_step16.value;t=_r28.item.legendItem||{},k(_r28.pos)&&(t.y=e.plotTop-e.spacing[0]+_r28.pos);}}catch(err){_didIteratorError16=true;_iteratorError16=err;}finally{try{if(!_iteratorNormalCompletion16&&_iterator16[\"return\"]!=null){_iterator16[\"return\"]();}}finally{if(_didIteratorError16){throw _iteratorError16;}}}}},{key:\"render\",value:function render(){var t=this.chart,e=t.renderer,i=this.options,s=this.padding,r=this.getAllItems(),o,n,a,h=this.group,l,d=this.box;this.itemX=s,this.itemY=this.initialItemY,this.offsetWidth=0,this.lastItemY=0,this.widthOption=A(i.width,t.spacingBox.width-s),l=t.spacingBox.width-2*s-i.x,[\"rm\",\"lm\"].indexOf(this.getAlignment().substring(0,2))>-1&&(l/=2),this.maxLegendWidth=this.widthOption||l,h||(this.group=h=e.g(\"legend\").addClass(i.className||\"\").attr({zIndex:7}).add(),this.contentGroup=e.g().attr({zIndex:1}).add(h),this.scrollGroup=e.g().add(this.contentGroup)),this.renderTitle(),P(r,function(t,e){return(t.options&&t.options.legendIndex||0)-(e.options&&e.options.legendIndex||0);}),i.reversed&&r.reverse(),this.allItems=r,this.display=o=!!r.length,this.lastLineHeight=0,this.maxItemWidth=0,this.totalItemWidth=0,this.itemHeight=0,r.forEach(this.renderItem,this),r.forEach(this.layoutItem,this),n=(this.widthOption||this.offsetWidth)+s,a=this.lastItemY+this.lastLineHeight+this.titleHeight,a=this.handleOverflow(a)+s,d||(this.box=d=e.rect().addClass(\"highcharts-legend-box\").attr({r:i.borderRadius}).add(h)),t.styledMode||d.attr({stroke:i.borderColor,\"stroke-width\":i.borderWidth||0,fill:i.backgroundColor||\"none\"}).shadow(i.shadow),n>0&&a>0&&d[d.placed?\"animate\":\"attr\"](d.crisp.call({},{x:0,y:0,width:n,height:a},d.strokeWidth())),h[o?\"show\":\"hide\"](),t.styledMode&&\"none\"===h.getStyle(\"display\")&&(n=a=0),this.legendWidth=n,this.legendHeight=a,o&&this.align(),this.proximate||this.positionItems(),C(this,\"afterRender\");}},{key:\"align\",value:function align(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.chart.spacingBox;var e=this.chart,i=this.options,s=t.y;/(lth|ct|rth)/.test(this.getAlignment())&&e.titleOffset[0]>0?s+=e.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&e.titleOffset[2]>0&&(s-=e.titleOffset[2]),s!==t.y&&(t=M(t,{y:s})),e.hasRendered||(this.group.placed=!1),this.group.align(M(i,{width:this.legendWidth,height:this.legendHeight,verticalAlign:this.proximate?\"top\":i.verticalAlign}),!0,t);}},{key:\"handleOverflow\",value:function handleOverflow(t){var e=this,i=this.chart,s=i.renderer,r=this.options,o=r.y,n=\"top\"===r.verticalAlign,a=this.padding,h=r.maxHeight,l=r.navigation,d=w(l.animation,!0),c=l.arrowSize||12,p=this.pages,u=this.allItems,g=function g(t){\"number\"==typeof t?S.attr({height:t}):S&&(e.clipRect=S.destroy(),e.contentGroup.clip()),e.contentGroup.div&&(e.contentGroup.div.style.clip=t?\"rect(\"+a+\"px,9999px,\"+(a+t)+\"px,0)\":\"auto\");},f=function f(t){return e[t]=s.circle(0,0,1.3*c).translate(c/2,c/2).add(v),i.styledMode||e[t].attr(\"fill\",\"rgba(0,0,0,0.0001)\"),e[t];},m,x,y,b=i.spacingBox.height+(n?-o:o)-a,v=this.nav,S=this.clipRect;return\"horizontal\"!==r.layout||\"middle\"===r.verticalAlign||r.floating||(b/=2),h&&(b=Math.min(b,h)),p.length=0,t&&b>0&&t>b&&!1!==l.enabled?(this.clipHeight=m=Math.max(b-20-this.titleHeight-a,0),this.currentPage=w(this.currentPage,1),this.fullHeight=t,u.forEach(function(t,e){var i=(y=t.legendItem||{}).y||0,s=Math.round(y.label.getBBox().height),r=p.length;(!r||i-p[r-1]>m&&(x||i)!==p[r-1])&&(p.push(x||i),r++),y.pageIx=r-1,x&&((u[e-1].legendItem||{}).pageIx=r-1),e===u.length-1&&i+s-p[r-1]>m&&i>p[r-1]&&(p.push(i),y.pageIx=r),i!==x&&(x=i);}),S||(S=e.clipRect=s.clipRect(0,a-2,9999,0),e.contentGroup.clip(S)),g(m),v||(this.nav=v=s.g().attr({zIndex:1}).add(this.group),this.up=s.symbol(\"triangle\",0,0,c,c).add(v),f(\"upTracker\").on(\"click\",function(){e.scroll(-1,d);}),this.pager=s.text(\"\",15,10).addClass(\"highcharts-legend-navigation\"),!i.styledMode&&l.style&&this.pager.css(l.style),this.pager.add(v),this.down=s.symbol(\"triangle-down\",0,0,c,c).add(v),f(\"downTracker\").on(\"click\",function(){e.scroll(1,d);})),e.scroll(0),t=b):v&&(g(),this.nav=v.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),t;}},{key:\"scroll\",value:function scroll(t,e){var _this38=this;var i=this.chart,s=this.pages,r=s.length,o=this.clipHeight,n=this.options.navigation,a=this.pager,h=this.padding,c=this.currentPage+t;c>r&&(c=r),c>0&&(void 0!==e&&d(e,i),this.nav.attr({translateX:h,translateY:o+this.padding+7+this.titleHeight,visibility:\"inherit\"}),[this.up,this.upTracker].forEach(function(t){t.attr({\"class\":1===c?\"highcharts-legend-nav-inactive\":\"highcharts-legend-nav-active\"});}),a.attr({text:c+\"/\"+r}),[this.down,this.downTracker].forEach(function(t){t.attr({x:18+this.pager.getBBox().width,\"class\":c===r?\"highcharts-legend-nav-inactive\":\"highcharts-legend-nav-active\"});},this),i.styledMode||(this.up.attr({fill:1===c?n.inactiveColor:n.activeColor}),this.upTracker.css({cursor:1===c?\"default\":\"pointer\"}),this.down.attr({fill:c===r?n.inactiveColor:n.activeColor}),this.downTracker.css({cursor:c===r?\"default\":\"pointer\"})),this.scrollOffset=-s[c-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=c,this.positionCheckboxes(),L(function(){C(_this38,\"afterScroll\",{currentPage:c});},l(w(e,i.renderer.globalAnimation,!0)).duration));}},{key:\"setItemEvents\",value:function setItemEvents(t,e,i){var o=this,n=t.legendItem||{},a=o.chart.renderer.boxWrapper,h=t instanceof r,l=t instanceof s,d=\"highcharts-legend-\"+(h?\"point\":\"series\")+\"-active\",c=o.chart.styledMode,p=i?[e,n.symbol]:[n.group],u=function u(e){o.allItems.forEach(function(i){t!==i&&[i].concat(i.linkedSeries||[]).forEach(function(t){t.setState(e,!h);});});};for(var _i84=0,_p9=p;_i84<_p9.length;_i84++){var _i85=_p9[_i84];_i85&&_i85.on(\"mouseover\",function(){t.visible&&u(\"inactive\"),t.setState(\"hover\"),t.visible&&a.addClass(d),c||e.css(o.options.itemHoverStyle);}).on(\"mouseout\",function(){o.chart.styledMode||e.css(M(t.visible?o.itemStyle:o.itemHiddenStyle)),u(\"\"),a.removeClass(d),t.setState();}).on(\"click\",function(e){var i=function i(){t.setVisible&&t.setVisible(),u(t.visible?\"inactive\":\"\");};a.removeClass(d),C(o,\"itemClick\",{browserEvent:e,legendItem:t},i),h?t.firePointEvent(\"legendItemClick\",{browserEvent:e}):l&&C(t,\"legendItemClick\",{browserEvent:e});});}}},{key:\"createCheckboxForItem\",value:function createCheckboxForItem(t){t.checkbox=x(\"input\",{type:\"checkbox\",className:\"highcharts-legend-checkbox\",checked:t.selected,defaultChecked:t.selected},this.options.itemCheckboxStyle,this.chart.container),m(t.checkbox,\"click\",function(e){var i=e.target;C(t.series||t,\"checkboxClick\",{checked:i.checked,item:t},function(){t.select();});});}}]);return O;}();return(h=O||(O={})).compose=function(t){T(p,\"Core.Legend\")&&m(t,\"beforeMargins\",function(){this.legend=new h(this,this.options.legend);});},O;}),i(e,\"Core/Chart/Chart.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Axis/Axis.js\"],e[\"Core/Defaults.js\"],e[\"Core/Templating.js\"],e[\"Core/Foundation.js\"],e[\"Core/Globals.js\"],e[\"Core/Renderer/RendererRegistry.js\"],e[\"Core/Series/Series.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Renderer/SVG/SVGRenderer.js\"],e[\"Core/Time.js\"],e[\"Core/Utilities.js\"],e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Axis/Tick.js\"]],function(t,e,i,s,r,o,n,a,h,l,d,c,p,u){var g=t.animate,f=t.animObject,m=t.setAnimation,x=i.defaultOptions,y=i.defaultTime,b=s.numberFormat,v=r.registerEventOptions,S=o.charts,C=o.doc,k=o.marginNames,M=o.svg,w=o.win,T=h.seriesTypes,A=c.addEvent,P=c.attr,L=c.createElement,O=c.css,D=c.defined,E=c.diffObjects,I=c.discardElement,j=c.erase,B=c.error,R=c.extend,z=c.find,N=c.fireEvent,W=c.getStyle,G=c.isArray,H=c.isNumber,X=c.isObject,F=c.isString,Y=c.merge,U=c.objectEach,V=c.pick,$=c.pInt,Z=c.relativeLength,_=c.removeEvent,q=c.splat,K=c.syncTimeout,J=c.uniqueKey;var Q=/*#__PURE__*/function(){function Q(t,e,i){_classCallCheck(this,Q);this.sharedClips={};var s=Array.prototype.slice.call(arguments);(F(t)||t.nodeName)&&(this.renderTo=s.shift()),this.init(s[0],s[1]);}_createClass(Q,[{key:\"setZoomOptions\",value:function setZoomOptions(){var t=this.options.chart,e=t.zooming;this.zooming=_objectSpread(_objectSpread({},e),{},{type:V(t.zoomType,e.type),key:V(t.zoomKey,e.key),pinchType:V(t.pinchType,e.pinchType),singleTouch:V(t.zoomBySingleTouch,e.singleTouch,!1),resetButton:Y(e.resetButton,t.resetZoomButton)});}},{key:\"init\",value:function init(t,e){N(this,\"init\",{args:arguments},function(){var i=Y(x,t),s=i.chart;this.userOptions=R({},t),this.margin=[],this.spacing=[],this.labelCollectors=[],this.callback=e,this.isResizing=0,this.options=i,this.axes=[],this.series=[],this.time=t.time&&Object.keys(t.time).length?new d(t.time):o.time,this.numberFormatter=s.numberFormatter||b,this.styledMode=s.styledMode,this.hasCartesianSeries=s.showAxes,this.index=S.length,S.push(this),o.chartCount++,v(this,s),this.xAxis=[],this.yAxis=[],this.pointCount=this.colorCounter=this.symbolCounter=0,this.setZoomOptions(),N(this,\"afterInit\"),this.firstRender();});}},{key:\"initSeries\",value:function initSeries(t){var e=this.options.chart,i=t.type||e.type,s=T[i];s||B(17,!0,this,{missingModuleFor:i});var r=new s();return\"function\"==typeof r.init&&r.init(this,t),r;}},{key:\"setSortedData\",value:function setSortedData(){this.getSeriesOrderByLinks().forEach(function(t){t.points||t.data||!t.enabledDataSorting||t.setData(t.options.data,!1);});}},{key:\"getSeriesOrderByLinks\",value:function getSeriesOrderByLinks(){return this.series.concat().sort(function(t,e){return t.linkedSeries.length||e.linkedSeries.length?e.linkedSeries.length-t.linkedSeries.length:0;});}},{key:\"orderItems\",value:function orderItems(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var i=this[t],s=this.options[t]=q(this.options[t]).slice(),r=this.userOptions[t]=this.userOptions[t]?q(this.userOptions[t]).slice():[];if(this.hasRendered&&(s.splice(e),r.splice(e)),i)for(var _t135=e,_o53=i.length;_t135<_o53;++_t135){var _e125=i[_t135];_e125&&(_e125.index=_t135,_e125 instanceof a&&(_e125.name=_e125.getName()),_e125.options.isInternal||(s[_t135]=_e125.options,r[_t135]=_e125.userOptions));}}},{key:\"isInsidePlot\",value:function isInsidePlot(t,e){var _this$scrollablePlotA;var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var s=this.inverted,r=this.plotBox,o=this.plotLeft,n=this.plotTop,a=this.scrollablePlotBox,_ref14=i.visiblePlotOnly&&((_this$scrollablePlotA=this.scrollablePlotArea)===null||_this$scrollablePlotA===void 0?void 0:_this$scrollablePlotA.scrollingContainer)||{},_ref14$scrollLeft=_ref14.scrollLeft,h=_ref14$scrollLeft===void 0?0:_ref14$scrollLeft,_ref14$scrollTop=_ref14.scrollTop,l=_ref14$scrollTop===void 0?0:_ref14$scrollTop,d=i.series,c=i.visiblePlotOnly&&a||r,p=i.inverted?e:t,u=i.inverted?t:e,g={x:p,y:u,isInsidePlot:!0,options:i};if(!i.ignoreX){var _t136=d&&(s&&!this.polar?d.yAxis:d.xAxis)||{pos:o,len:1/0},_e126=i.paneCoordinates?_t136.pos+p:o+p;_e126>=Math.max(h+o,_t136.pos)&&_e126<=Math.min(h+o+c.width,_t136.pos+_t136.len)||(g.isInsidePlot=!1);}if(!i.ignoreY&&g.isInsidePlot){var _t137=!s&&i.axis&&!i.axis.isXAxis&&i.axis||d&&(s?d.xAxis:d.yAxis)||{pos:n,len:1/0},_e127=i.paneCoordinates?_t137.pos+u:n+u;_e127>=Math.max(l+n,_t137.pos)&&_e127<=Math.min(l+n+c.height,_t137.pos+_t137.len)||(g.isInsidePlot=!1);}return N(this,\"afterIsInsidePlot\",g),g.isInsidePlot;}},{key:\"redraw\",value:function redraw(t){N(this,\"beforeRedraw\");var e=this.hasCartesianSeries?this.axes:this.colorAxis||[],i=this.series,s=this.pointer,r=this.legend,o=this.userOptions.legend,n=this.renderer,a=n.isHidden(),h=[],l,d,c,p=this.isDirtyBox,u=this.isDirtyLegend,g;for(n.rootFontSize=n.boxWrapper.getStyle(\"font-size\"),this.setResponsive&&this.setResponsive(!1),m(!!this.hasRendered&&t,this),a&&this.temporaryDisplay(),this.layOutTitles(!1),c=i.length;c--;)if(((g=i[c]).options.stacking||g.options.centerInCategory)&&(d=!0,g.isDirty)){l=!0;break;}if(l)for(c=i.length;c--;)(g=i[c]).options.stacking&&(g.isDirty=!0);i.forEach(function(t){t.isDirty&&(\"point\"===t.options.legendType?(\"function\"==typeof t.updateTotals&&t.updateTotals(),u=!0):o&&(o.labelFormatter||o.labelFormat)&&(u=!0)),t.isDirtyData&&N(t,\"updatedData\");}),u&&r&&r.options.enabled&&(r.render(),this.isDirtyLegend=!1),d&&this.getStacks(),e.forEach(function(t){t.updateNames(),t.setScale();}),this.getMargins(),e.forEach(function(t){t.isDirty&&(p=!0);}),e.forEach(function(t){var e=t.min+\",\"+t.max;t.extKey!==e&&(t.extKey=e,h.push(function(){N(t,\"afterSetExtremes\",R(t.eventArgs,t.getExtremes())),delete t.eventArgs;})),(p||d)&&t.redraw();}),p&&this.drawChartBox(),N(this,\"predraw\"),i.forEach(function(t){(p||t.isDirty)&&t.visible&&t.redraw(),t.isDirtyData=!1;}),s&&s.reset(!0),n.draw(),N(this,\"redraw\"),N(this,\"render\"),a&&this.temporaryDisplay(!0),h.forEach(function(t){t.call();});}},{key:\"get\",value:function get(t){var e=this.series;function i(e){return e.id===t||e.options&&e.options.id===t;}var s=z(this.axes,i)||z(this.series,i);for(var _t138=0;!s&&_t138<e.length;_t138++)s=z(e[_t138].points||[],i);return s;}},{key:\"getAxes\",value:function getAxes(){var t=this.userOptions;for(var _i86=0,_arr5=(N(this,\"getAxes\"),[\"xAxis\",\"yAxis\"]);_i86<_arr5.length;_i86++){var _i87=_arr5[_i86];var _iteratorNormalCompletion17=true;var _didIteratorError17=false;var _iteratorError17=undefined;try{for(var _iterator17=(t[_i87]=q(t[_i87]||{}))[Symbol.iterator](),_step17;!(_iteratorNormalCompletion17=(_step17=_iterator17.next()).done);_iteratorNormalCompletion17=true){var _s92=_step17.value;new e(this,_s92,_i87);}}catch(err){_didIteratorError17=true;_iteratorError17=err;}finally{try{if(!_iteratorNormalCompletion17&&_iterator17[\"return\"]!=null){_iterator17[\"return\"]();}}finally{if(_didIteratorError17){throw _iteratorError17;}}}}N(this,\"afterGetAxes\");}},{key:\"getSelectedPoints\",value:function getSelectedPoints(){return this.series.reduce(function(t,e){return e.getPointsCollection().forEach(function(e){V(e.selectedStaging,e.selected)&&t.push(e);}),t;},[]);}},{key:\"getSelectedSeries\",value:function getSelectedSeries(){return this.series.filter(function(t){return t.selected;});}},{key:\"setTitle\",value:function setTitle(t,e,i){this.applyDescription(\"title\",t),this.applyDescription(\"subtitle\",e),this.applyDescription(\"caption\",void 0),this.layOutTitles(i);}},{key:\"applyDescription\",value:function applyDescription(t,e){var i=this,s=this.options[t]=Y(this.options[t],e),r=this[t];r&&e&&(this[t]=r=r.destroy()),s&&!r&&((r=this.renderer.text(s.text,0,0,s.useHTML).attr({align:s.align,\"class\":\"highcharts-\"+t,zIndex:s.zIndex||4}).add()).update=function(e,s){i.applyDescription(t,e),i.layOutTitles(s);},this.styledMode||r.css(R(\"title\"===t?{fontSize:this.options.isStock?\"1em\":\"1.2em\"}:{},s.style)),this[t]=r);}},{key:\"layOutTitles\",value:function layOutTitles(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;var e=[0,0,0],i=this.renderer,s=this.spacingBox;[\"title\",\"subtitle\",\"caption\"].forEach(function(t){var r=this[t],o=this.options[t],n=o.verticalAlign||\"top\",a=\"title\"===t?\"top\"===n?-3:0:\"top\"===n?e[0]+2:0;if(r){r.css({width:(o.width||s.width+(o.widthAdjust||0))+\"px\"});var _t139=i.fontMetrics(r).b,_h12=Math.round(r.getBBox(o.useHTML).height);r.align(R({y:\"bottom\"===n?_t139:a+_t139,height:_h12},o),!1,\"spacingBox\"),o.floating||(\"top\"===n?e[0]=Math.ceil(e[0]+_h12):\"bottom\"===n&&(e[2]=Math.ceil(e[2]+_h12)));}},this),e[0]&&\"top\"===(this.options.title.verticalAlign||\"top\")&&(e[0]+=this.options.title.margin),e[2]&&\"bottom\"===this.options.caption.verticalAlign&&(e[2]+=this.options.caption.margin);var r=!this.titleOffset||this.titleOffset.join(\",\")!==e.join(\",\");this.titleOffset=e,N(this,\"afterLayOutTitles\"),!this.isDirtyBox&&r&&(this.isDirtyBox=this.isDirtyLegend=r,this.hasRendered&&t&&this.isDirtyBox&&this.redraw());}},{key:\"getContainerBox\",value:function getContainerBox(){var _this39=this;var t=[].map.call(this.renderTo.children,function(t){if(t!==_this39.container){var _e128=t.style.display;return t.style.display=\"none\",[t,_e128];}}),e={width:W(this.renderTo,\"width\",!0)||0,height:W(this.renderTo,\"height\",!0)||0};return t.filter(Boolean).forEach(function(_ref15){var _ref16=_slicedToArray(_ref15,2),t=_ref16[0],e=_ref16[1];t.style.display=e;}),e;}},{key:\"getChartSize\",value:function getChartSize(){var _this$renderTo$parent;var t=this.options.chart,e=t.width,i=t.height,s=this.getContainerBox(),r=s.height>1&&!(!((_this$renderTo$parent=this.renderTo.parentElement)!==null&&_this$renderTo$parent!==void 0&&_this$renderTo$parent.style.height)&&\"100%\"===this.renderTo.style.height);this.chartWidth=Math.max(0,e||s.width||600),this.chartHeight=Math.max(0,Z(i,this.chartWidth)||(r?s.height:400)),this.containerBox=s;}},{key:\"temporaryDisplay\",value:function temporaryDisplay(t){var e=this.renderTo,i;if(t)for(;e&&e.style;)e.hcOrigStyle&&(O(e,e.hcOrigStyle),delete e.hcOrigStyle),e.hcOrigDetached&&(C.body.removeChild(e),e.hcOrigDetached=!1),e=e.parentNode;else for(;e&&e.style&&(C.body.contains(e)||e.parentNode||(e.hcOrigDetached=!0,C.body.appendChild(e)),(\"none\"===W(e,\"display\",!1)||e.hcOricDetached)&&(e.hcOrigStyle={display:e.style.display,height:e.style.height,overflow:e.style.overflow},i={display:\"block\",overflow:\"hidden\"},e!==this.renderTo&&(i.height=0),O(e,i),e.offsetWidth||e.style.setProperty(\"display\",\"block\",\"important\")),(e=e.parentNode)!==C.body););}},{key:\"setClassName\",value:function setClassName(t){this.container.className=\"highcharts-container \"+(t||\"\");}},{key:\"getContainer\",value:function getContainer(){var _e$style;var t=this.options,e=t.chart,i=\"data-highcharts-chart\",s=J(),r,o=this.renderTo;o||(this.renderTo=o=e.renderTo),F(o)&&(this.renderTo=o=C.getElementById(o)),o||B(13,!0,this);var a=$(P(o,i));H(a)&&S[a]&&S[a].hasRendered&&S[a].destroy(),P(o,i,this.index),o.innerHTML=p.emptyHTML,e.skipClone||o.offsetWidth||this.temporaryDisplay(),this.getChartSize();var h=this.chartHeight,d=this.chartWidth;O(o,{overflow:\"hidden\"}),this.styledMode||(r=R({position:\"relative\",overflow:\"hidden\",width:d+\"px\",height:h+\"px\",textAlign:\"left\",lineHeight:\"normal\",zIndex:0,\"-webkit-tap-highlight-color\":\"rgba(0,0,0,0)\",userSelect:\"none\",\"touch-action\":\"manipulation\",outline:\"none\",padding:\"0px\"},e.style||{}));var c=L(\"div\",{id:s},r,o);this.container=c,this.getChartSize(),d===this.chartWidth||(d=this.chartWidth,this.styledMode||O(c,{width:V((_e$style=e.style)===null||_e$style===void 0?void 0:_e$style.width,d+\"px\")})),this.containerBox=this.getContainerBox(),this._cursor=c.style.cursor;var u=e.renderer||!M?n.getRendererType(e.renderer):l;if(this.renderer=new u(c,d,h,void 0,e.forExport,t.exporting&&t.exporting.allowHTML,this.styledMode),m(void 0,this),this.setClassName(e.className),this.styledMode)for(var _e129 in t.defs)this.renderer.definition(t.defs[_e129]);else this.renderer.setStyle(e.style);this.renderer.chartIndex=this.index,N(this,\"afterGetContainer\");}},{key:\"getMargins\",value:function getMargins(t){var e=this.spacing,i=this.margin,s=this.titleOffset;this.resetMargins(),s[0]&&!D(i[0])&&(this.plotTop=Math.max(this.plotTop,s[0]+e[0])),s[2]&&!D(i[2])&&(this.marginBottom=Math.max(this.marginBottom,s[2]+e[2])),this.legend&&this.legend.display&&this.legend.adjustMargins(i,e),N(this,\"getMargins\"),t||this.getAxisMargins();}},{key:\"getAxisMargins\",value:function getAxisMargins(){var t=this,e=t.axisOffset=[0,0,0,0],i=t.colorAxis,s=t.margin,r=function r(t){t.forEach(function(t){t.visible&&t.getOffset();});};t.hasCartesianSeries?r(t.axes):i&&i.length&&r(i),k.forEach(function(i,r){D(s[r])||(t[i]+=e[r]);}),t.setChartSize();}},{key:\"getOptions\",value:function getOptions(){return E(this.userOptions,x);}},{key:\"reflow\",value:function reflow(t){var _e$pointer2;var e=this,i=e.containerBox,s=e.getContainerBox();(_e$pointer2=e.pointer)===null||_e$pointer2===void 0?true:delete _e$pointer2.chartPosition,!e.isPrinting&&!e.isResizing&&i&&s.width&&((s.width!==i.width||s.height!==i.height)&&(c.clearTimeout(e.reflowTimeout),e.reflowTimeout=K(function(){e.container&&e.setSize(void 0,void 0,!1);},t?100:0)),e.containerBox=s);}},{key:\"setReflow\",value:function setReflow(){var t=this,e=function e(_e130){var _t$options5;((_t$options5=t.options)===null||_t$options5===void 0?void 0:_t$options5.chart.reflow)&&t.hasLoaded&&t.reflow(_e130);};if(\"function\"==typeof ResizeObserver)new ResizeObserver(e).observe(t.renderTo);else{var _t140=A(w,\"resize\",e);A(this,\"destroy\",_t140);}}},{key:\"setSize\",value:function setSize(t,e,i){var s=this,r=s.renderer;s.isResizing+=1,m(i,s);var o=r.globalAnimation;s.oldChartHeight=s.chartHeight,s.oldChartWidth=s.chartWidth,void 0!==t&&(s.options.chart.width=t),void 0!==e&&(s.options.chart.height=e),s.getChartSize();var n=s.chartWidth,a=s.chartHeight,_s$scrollablePixelsX=s.scrollablePixelsX,h=_s$scrollablePixelsX===void 0?0:_s$scrollablePixelsX,_s$scrollablePixelsY=s.scrollablePixelsY,l=_s$scrollablePixelsY===void 0?0:_s$scrollablePixelsY;(s.isDirtyBox||n!==s.oldChartWidth||a!==s.oldChartHeight)&&(s.styledMode||(o?g:O)(s.container,{width:\"\".concat(n+h,\"px\"),height:\"\".concat(a+l,\"px\")},o),s.setChartSize(!0),r.setSize(n,a,o),s.axes.forEach(function(t){t.isDirty=!0,t.setScale();}),s.isDirtyLegend=!0,s.isDirtyBox=!0,s.layOutTitles(),s.getMargins(),s.redraw(o),s.oldChartHeight=void 0,N(s,\"resize\"),setTimeout(function(){s&&N(s,\"endResize\");},f(o).duration)),s.isResizing-=1;}},{key:\"setChartSize\",value:function setChartSize(t){var e,i,s,r;var o=this.chartHeight,n=this.chartWidth,a=this.inverted,h=this.spacing,l=this.renderer,d=this.clipOffset,c=Math[a?\"floor\":\"round\"];this.plotLeft=e=Math.round(this.plotLeft),this.plotTop=i=Math.round(this.plotTop),this.plotWidth=s=Math.max(0,Math.round(n-e-this.marginRight)),this.plotHeight=r=Math.max(0,Math.round(o-i-this.marginBottom)),this.plotSizeX=a?r:s,this.plotSizeY=a?s:r,this.spacingBox=l.spacingBox={x:h[3],y:h[0],width:n-h[3]-h[1],height:o-h[0]-h[2]},this.plotBox=l.plotBox={x:e,y:i,width:s,height:r},d&&(this.clipBox={x:c(d[3]),y:c(d[0]),width:c(this.plotSizeX-d[1]-d[3]),height:c(this.plotSizeY-d[0]-d[2])}),t||(this.axes.forEach(function(t){t.setAxisSize(),t.setAxisTranslation();}),l.alignElements()),N(this,\"afterSetChartSize\",{skipAxes:t});}},{key:\"resetMargins\",value:function resetMargins(){N(this,\"resetMargins\");var t=this,e=t.options.chart,i=e.plotBorderWidth||0,s=i/2;[\"margin\",\"spacing\"].forEach(function(i){var s=e[i],r=X(s)?s:[s,s,s,s];[\"Top\",\"Right\",\"Bottom\",\"Left\"].forEach(function(s,o){t[i][o]=V(e[i+s],r[o]);});}),k.forEach(function(e,i){t[e]=V(t.margin[i],t.spacing[i]);}),t.axisOffset=[0,0,0,0],t.clipOffset=[s,s,s,s],t.plotBorderWidth=i;}},{key:\"drawChartBox\",value:function drawChartBox(){var t=this.options.chart,e=this.renderer,i=this.chartWidth,s=this.chartHeight,r=this.styledMode,o=this.plotBGImage,n=t.backgroundColor,a=t.plotBackgroundColor,h=t.plotBackgroundImage,l=this.plotLeft,d=this.plotTop,c=this.plotWidth,p=this.plotHeight,u=this.plotBox,g=this.clipRect,f=this.clipBox,m=this.chartBackground,x=this.plotBackground,y=this.plotBorder,b,v,S,C=\"animate\";m||(this.chartBackground=m=e.rect().addClass(\"highcharts-background\").add(),C=\"attr\"),r?b=v=m.strokeWidth():(v=(b=t.borderWidth||0)+(t.shadow?8:0),S={fill:n||\"none\"},(b||m[\"stroke-width\"])&&(S.stroke=t.borderColor,S[\"stroke-width\"]=b),m.attr(S).shadow(t.shadow)),m[C]({x:v/2,y:v/2,width:i-v-b%2,height:s-v-b%2,r:t.borderRadius}),C=\"animate\",x||(C=\"attr\",this.plotBackground=x=e.rect().addClass(\"highcharts-plot-background\").add()),x[C](u),!r&&(x.attr({fill:a||\"none\"}).shadow(t.plotShadow),h&&(o?(h!==o.attr(\"href\")&&o.attr(\"href\",h),o.animate(u)):this.plotBGImage=e.image(h,l,d,c,p).add())),g?g.animate({width:f.width,height:f.height}):this.clipRect=e.clipRect(f),C=\"animate\",y||(C=\"attr\",this.plotBorder=y=e.rect().addClass(\"highcharts-plot-border\").attr({zIndex:1}).add()),r||y.attr({stroke:t.plotBorderColor,\"stroke-width\":t.plotBorderWidth||0,fill:\"none\"}),y[C](y.crisp({x:l,y:d,width:c,height:p},-y.strokeWidth())),this.isDirtyBox=!1,N(this,\"afterDrawChartBox\");}},{key:\"propFromSeries\",value:function propFromSeries(){var t,e,i;var s=this,r=s.options.chart,o=s.options.series;[\"inverted\",\"angular\",\"polar\"].forEach(function(n){for(e=T[r.type],i=r[n]||e&&e.prototype[n],t=o&&o.length;!i&&t--;)(e=T[o[t].type])&&e.prototype[n]&&(i=!0);s[n]=i;});}},{key:\"linkSeries\",value:function linkSeries(t){var e=this,i=e.series;i.forEach(function(t){t.linkedSeries.length=0;}),i.forEach(function(t){var i=t.options.linkedTo;if(F(i)){var _s93;(_s93=\":previous\"===i?e.series[t.index-1]:e.get(i))&&_s93.linkedParent!==t&&(_s93.linkedSeries.push(t),t.linkedParent=_s93,_s93.enabledDataSorting&&t.setDataSortingOptions(),t.visible=V(t.options.visible,_s93.options.visible,t.visible));}}),N(this,\"afterLinkSeries\",{isUpdating:t});}},{key:\"renderSeries\",value:function renderSeries(){this.series.forEach(function(t){t.translate(),t.render();});}},{key:\"render\",value:function render(){var t=this.axes,e=this.colorAxis,i=this.renderer,s=this.options.chart.axisLayoutRuns||2,r=function r(t){t.forEach(function(t){t.visible&&t.render();});},o=0,n=!0,a,h=0;var _iteratorNormalCompletion18=true;var _didIteratorError18=false;var _iteratorError18=undefined;try{for(var _iterator18=(this.setTitle(),N(this,\"beforeMargins\"),(_this$getStacks=this.getStacks)!==null&&_this$getStacks!==void 0&&_this$getStacks.call(this),this.getMargins(!0),this.setChartSize(),t)[Symbol.iterator](),_step18;!(_iteratorNormalCompletion18=(_step18=_iterator18.next()).done);_iteratorNormalCompletion18=true){var _this$getStacks;var _e133=_step18.value;var _t141=_e133.options,_i89=_t141.labels;if(this.hasCartesianSeries&&_e133.horiz&&_e133.visible&&_i89.enabled&&_e133.series.length&&\"colorAxis\"!==_e133.coll&&!this.polar){o=_t141.tickLength,_e133.createGroups();var _s94=new u(_e133,0,\"\",!0),_r29=_s94.createLabel(\"x\",_i89);if(_s94.destroy(),_r29&&V(_i89.reserveSpace,!H(_t141.crossing))&&(o=_r29.getBBox().height+_i89.distance+Math.max(_t141.offset||0,0)),o){_r29===null||_r29===void 0?void 0:_r29.destroy();break;}}}}catch(err){_didIteratorError18=true;_iteratorError18=err;}finally{try{if(!_iteratorNormalCompletion18&&_iterator18[\"return\"]!=null){_iterator18[\"return\"]();}}finally{if(_didIteratorError18){throw _iteratorError18;}}}for(this.plotHeight=Math.max(this.plotHeight-o,0);(n||a||s>1)&&h<s;){var _e131=this.plotWidth,_i88=this.plotHeight;var _iteratorNormalCompletion19=true;var _didIteratorError19=false;var _iteratorError19=undefined;try{for(var _iterator19=t[Symbol.iterator](),_step19;!(_iteratorNormalCompletion19=(_step19=_iterator19.next()).done);_iteratorNormalCompletion19=true){var _e132=_step19.value;0===h?_e132.setScale():(_e132.horiz&&n||!_e132.horiz&&a)&&_e132.setTickInterval(!0);}}catch(err){_didIteratorError19=true;_iteratorError19=err;}finally{try{if(!_iteratorNormalCompletion19&&_iterator19[\"return\"]!=null){_iterator19[\"return\"]();}}finally{if(_didIteratorError19){throw _iteratorError19;}}}0===h?this.getAxisMargins():this.getMargins(),n=_e131/this.plotWidth>(h?1:1.1),a=_i88/this.plotHeight>(h?1:1.05),h++;}this.drawChartBox(),this.hasCartesianSeries?r(t):e&&e.length&&r(e),this.seriesGroup||(this.seriesGroup=i.g(\"series-group\").attr({zIndex:3}).shadow(this.options.chart.seriesGroupShadow).add()),this.renderSeries(),this.addCredits(),this.setResponsive&&this.setResponsive(),this.hasRendered=!0;}},{key:\"addCredits\",value:function addCredits(t){var e=this,i=Y(!0,this.options.credits,t);i.enabled&&!this.credits&&(this.credits=this.renderer.text(i.text+(this.mapCredits||\"\"),0,0).addClass(\"highcharts-credits\").on(\"click\",function(){i.href&&(w.location.href=i.href);}).attr({align:i.position.align,zIndex:8}),e.styledMode||this.credits.css(i.style),this.credits.add().align(i.position),this.credits.update=function(t){e.credits=e.credits.destroy(),e.addCredits(t);});}},{key:\"destroy\",value:function destroy(){var t;var e=this,i=e.axes,s=e.series,r=e.container,n=r&&r.parentNode;for(N(e,\"destroy\"),e.renderer.forExport?j(S,e):S[e.index]=void 0,o.chartCount--,e.renderTo.removeAttribute(\"data-highcharts-chart\"),_(e),t=i.length;t--;)i[t]=i[t].destroy();for(this.scroller&&this.scroller.destroy&&this.scroller.destroy(),t=s.length;t--;)s[t]=s[t].destroy();[\"title\",\"subtitle\",\"chartBackground\",\"plotBackground\",\"plotBGImage\",\"plotBorder\",\"seriesGroup\",\"clipRect\",\"credits\",\"pointer\",\"rangeSelector\",\"legend\",\"resetZoomButton\",\"tooltip\",\"renderer\"].forEach(function(t){var i=e[t];i&&i.destroy&&(e[t]=i.destroy());}),r&&(r.innerHTML=p.emptyHTML,_(r),n&&I(r)),U(e,function(t,i){delete e[i];});}},{key:\"firstRender\",value:function firstRender(){var _t$pointer;var t=this,e=t.options;t.getContainer(),t.resetMargins(),t.setChartSize(),t.propFromSeries(),t.getAxes();var i=G(e.series)?e.series:[];e.series=[],i.forEach(function(e){t.initSeries(e);}),t.linkSeries(),t.setSortedData(),N(t,\"beforeRender\"),t.render(),(_t$pointer=t.pointer)!==null&&_t$pointer!==void 0&&_t$pointer.getChartPosition(),t.renderer.imgCount||t.hasLoaded||t.onload(),t.temporaryDisplay(!0);}},{key:\"onload\",value:function onload(){this.callbacks.concat([this.callback]).forEach(function(t){t&&void 0!==this.index&&t.apply(this,[this]);},this),N(this,\"load\"),N(this,\"render\"),D(this.index)&&this.setReflow(),this.warnIfA11yModuleNotLoaded(),this.hasLoaded=!0;}},{key:\"warnIfA11yModuleNotLoaded\",value:function warnIfA11yModuleNotLoaded(){var t=this.options,e=this.title;!t||this.accessibility||(this.renderer.boxWrapper.attr({role:\"img\",\"aria-label\":(e&&e.element.textContent||\"\").replace(/</g,\"&lt;\")}),t.accessibility&&!1===t.accessibility.enabled||B('Highcharts warning: Consider including the \"accessibility.js\" module to make your chart more usable for people with disabilities. Set the \"accessibility.enabled\" option to false to remove this warning. See https://www.highcharts.com/docs/accessibility/accessibility-module.',!1,this));}},{key:\"addSeries\",value:function addSeries(t,e,i){var s;var r=this;return t&&(e=V(e,!0),N(r,\"addSeries\",{options:t},function(){s=r.initSeries(t),r.isDirtyLegend=!0,r.linkSeries(),s.enabledDataSorting&&s.setData(t.data,!1),N(r,\"afterAddSeries\",{series:s}),e&&r.redraw(i);})),s;}},{key:\"addAxis\",value:function addAxis(t,e,i,s){return this.createAxis(e?\"xAxis\":\"yAxis\",{axis:t,redraw:i,animation:s});}},{key:\"addColorAxis\",value:function addColorAxis(t,e,i){return this.createAxis(\"colorAxis\",{axis:t,redraw:e,animation:i});}},{key:\"createAxis\",value:function createAxis(t,i){var s=new e(this,i.axis,t);return V(i.redraw,!0)&&this.redraw(i.animation),s;}},{key:\"showLoading\",value:function showLoading(t){var e=this,i=e.options,s=i.loading,r=function r(){o&&O(o,{left:e.plotLeft+\"px\",top:e.plotTop+\"px\",width:e.plotWidth+\"px\",height:e.plotHeight+\"px\"});},o=e.loadingDiv,n=e.loadingSpan;o||(e.loadingDiv=o=L(\"div\",{className:\"highcharts-loading highcharts-loading-hidden\"},null,e.container)),n||(e.loadingSpan=n=L(\"span\",{className:\"highcharts-loading-inner\"},null,o),A(e,\"redraw\",r)),o.className=\"highcharts-loading\",p.setElementHTML(n,V(t,i.lang.loading,\"\")),e.styledMode||(O(o,R(s.style,{zIndex:10})),O(n,s.labelStyle),e.loadingShown||(O(o,{opacity:0,display:\"\"}),g(o,{opacity:s.style.opacity||.5},{duration:s.showDuration||0}))),e.loadingShown=!0,r();}},{key:\"hideLoading\",value:function hideLoading(){var t=this.options,e=this.loadingDiv;e&&(e.className=\"highcharts-loading highcharts-loading-hidden\",this.styledMode||g(e,{opacity:0},{duration:t.loading.hideDuration||100,complete:function complete(){O(e,{display:\"none\"});}})),this.loadingShown=!1;}},{key:\"update\",value:function update(t,e,i,s){var r,o,n;var a=this,h={credits:\"addCredits\",title:\"setTitle\",subtitle:\"setSubtitle\",caption:\"setCaption\"},l=t.isResponsiveOptions,c=[];N(a,\"update\",{options:t}),l||a.setResponsive(!1,!0),t=E(t,a.options),a.userOptions=Y(a.userOptions,t);var p=t.chart;p&&(Y(!0,a.options.chart,p),this.setZoomOptions(),\"className\"in p&&a.setClassName(p.className),(\"inverted\"in p||\"polar\"in p||\"type\"in p)&&(a.propFromSeries(),r=!0),\"alignTicks\"in p&&(r=!0),\"events\"in p&&v(this,p),U(p,function(t,e){-1!==a.propsRequireUpdateSeries.indexOf(\"chart.\"+e)&&(o=!0),-1!==a.propsRequireDirtyBox.indexOf(e)&&(a.isDirtyBox=!0),-1===a.propsRequireReflow.indexOf(e)||(a.isDirtyBox=!0,l||(n=!0));}),!a.styledMode&&p.style&&a.renderer.setStyle(a.options.chart.style||{})),!a.styledMode&&t.colors&&(this.options.colors=t.colors),t.time&&(this.time===y&&(this.time=new d(t.time)),Y(!0,a.options.time,t.time)),U(t,function(e,i){a[i]&&\"function\"==typeof a[i].update?a[i].update(e,!1):\"function\"==typeof a[h[i]]?a[h[i]](e):\"colors\"!==i&&-1===a.collectionsWithUpdate.indexOf(i)&&Y(!0,a.options[i],t[i]),\"chart\"!==i&&-1!==a.propsRequireUpdateSeries.indexOf(i)&&(o=!0);}),this.collectionsWithUpdate.forEach(function(e){t[e]&&(q(t[e]).forEach(function(t,s){var r;var o=D(t.id);o&&(r=a.get(t.id)),!r&&a[e]&&(r=a[e][V(t.index,s)])&&(o&&D(r.options.id)||r.options.isInternal)&&(r=void 0),r&&r.coll===e&&(r.update(t,!1),i&&(r.touched=!0)),!r&&i&&a.collectionsWithInit[e]&&(a.collectionsWithInit[e][0].apply(a,[t].concat(a.collectionsWithInit[e][1]||[]).concat([!1])).touched=!0);}),i&&a[e].forEach(function(t){t.touched||t.options.isInternal?delete t.touched:c.push(t);}));}),c.forEach(function(t){t.chart&&t.remove&&t.remove(!1);}),r&&a.axes.forEach(function(t){t.update({},!1);}),o&&a.getSeriesOrderByLinks().forEach(function(t){t.chart&&t.update({},!1);},this);var u=p&&p.width,g=p&&(F(p.height)?Z(p.height,u||a.chartWidth):p.height);n||H(u)&&u!==a.chartWidth||H(g)&&g!==a.chartHeight?a.setSize(u,g,s):V(e,!0)&&a.redraw(s),N(a,\"afterUpdate\",{options:t,redraw:e,animation:s});}},{key:\"setSubtitle\",value:function setSubtitle(t,e){this.applyDescription(\"subtitle\",t),this.layOutTitles(e);}},{key:\"setCaption\",value:function setCaption(t,e){this.applyDescription(\"caption\",t),this.layOutTitles(e);}},{key:\"showResetZoom\",value:function showResetZoom(){var t=this,e=x.lang,i=t.zooming.resetButton,s=i.theme,r=\"chart\"===i.relativeTo||\"spacingBox\"===i.relativeTo?null:\"plotBox\";function o(){t.zoomOut();}N(this,\"beforeShowResetZoom\",null,function(){t.resetZoomButton=t.renderer.button(e.resetZoom,null,null,o,s).attr({align:i.position.align,title:e.resetZoomTitle}).addClass(\"highcharts-reset-zoom\").add().align(i.position,!1,r);}),N(this,\"afterShowResetZoom\");}},{key:\"zoomOut\",value:function zoomOut(){var _this40=this;N(this,\"selection\",{resetSelection:!0},function(){return _this40.transform({reset:!0,trigger:\"zoom\"});});}},{key:\"pan\",value:function pan(t,e){var i=this,s=\"object\"==_typeof(e)?e:{enabled:e,type:\"x\"},r=s.type,o=r&&i[{x:\"xAxis\",xy:\"axes\",y:\"yAxis\"}[r]].filter(function(t){return t.options.panningEnabled&&!t.options.isInternal;}),n=i.options.chart;n!==null&&n!==void 0&&n.panning&&(n.panning=s),N(this,\"pan\",{originalEvent:t},function(){i.transform({axes:o,event:t,to:{x:t.chartX-(i.mouseDownX||0),y:t.chartY-(i.mouseDownY||0)},trigger:\"pan\"}),O(i.container,{cursor:\"move\"});});}},{key:\"transform\",value:function transform(t){var _this41=this,_this$options$chart$a;var _t$axes=t.axes,e=_t$axes===void 0?this.axes:_t$axes,i=t.event,_t$from=t.from,s=_t$from===void 0?{}:_t$from,r=t.reset,o=t.selection,_t$to=t.to,n=_t$to===void 0?{}:_t$to,a=t.trigger,h=this.inverted,l=!1,d,c;var _iteratorNormalCompletion20=true;var _didIteratorError20=false;var _iteratorError20=undefined;try{for(var _iterator20=((_this$hoverPoints=this.hoverPoints)!==null&&_this$hoverPoints!==void 0&&_this$hoverPoints.forEach(function(t){return t.setState();}),e)[Symbol.iterator](),_step20;!(_iteratorNormalCompletion20=(_step20=_iterator20.next()).done);_iteratorNormalCompletion20=true){var _this$hoverPoints,_n$_x,_ref17,_g5$min,_g5$max;var _t142=_step20.value;var _e134=_t142.horiz,_p10=_t142.len,_t142$minPointOffset=_t142.minPointOffset,_u4=_t142$minPointOffset===void 0?0:_t142$minPointOffset,_g5=_t142.options,_f2=_t142.reversed,_m5=_e134?\"width\":\"height\",_x7=_e134?\"x\":\"y\",_y2=V(n[_m5],_t142.len),_b2=V(s[_m5],_t142.len),_v4=10>Math.abs(_y2)?1:_y2/_b2,_S4=(s[_x7]||0)+_b2/2-_t142.pos,_C=_S4-(((_n$_x=n[_x7])!==null&&_n$_x!==void 0?_n$_x:_t142.pos)+_y2/2-_t142.pos)/_v4,_k3=_f2&&!h||!_f2&&h?-1:1;if(!r&&(_S4<0||_S4>_t142.len))continue;var _M2=_t142.toValue(_C,!0)+(o||_t142.isOrdinal?0:_u4*_k3),_w3=_t142.toValue(_C+_p10/_v4,!0)-(o||_t142.isOrdinal?0:_u4*_k3||0),_T=_t142.allExtremes;if(_M2>_w3&&(_ref17=[_w3,_M2],_M2=_ref17[0],_w3=_ref17[1],_ref17),1===_v4&&!r&&\"yAxis\"===_t142.coll&&!_T){var _iteratorNormalCompletion21=true;var _didIteratorError21=false;var _iteratorError21=undefined;try{for(var _iterator21=_t142.series[Symbol.iterator](),_step21;!(_iteratorNormalCompletion21=(_step21=_iterator21.next()).done);_iteratorNormalCompletion21=true){var _T2;var _e135=_step21.value;var _t143=_e135.getExtremes(_e135.getProcessedData(!0).yData,!0);(_T2=_T)!==null&&_T2!==void 0?_T2:_T={dataMin:Number.MAX_VALUE,dataMax:-Number.MAX_VALUE},H(_t143.dataMin)&&H(_t143.dataMax)&&(_T.dataMin=Math.min(_t143.dataMin,_T.dataMin),_T.dataMax=Math.max(_t143.dataMax,_T.dataMax));}}catch(err){_didIteratorError21=true;_iteratorError21=err;}finally{try{if(!_iteratorNormalCompletion21&&_iterator21[\"return\"]!=null){_iterator21[\"return\"]();}}finally{if(_didIteratorError21){throw _iteratorError21;}}}_t142.allExtremes=_T;}var _R2=R(_t142.getExtremes(),_T||{}),_A3=_R2.dataMin,_P=_R2.dataMax,_L=_R2.min,_O=_R2.max,_E=_A3!==null&&_A3!==void 0?_A3:_g5.min,_I2=_P!==null&&_P!==void 0?_P:_g5.max,_j2=_w3-_M2,_B=_t142.categories?0:Math.min(_j2,_I2-_E),_z=_E-_B*(D(_g5.min)?0:_g5.minPadding),_N=_I2+_B*(D(_g5.max)?0:_g5.maxPadding),_W=_t142.allowZoomOutside||1===_v4||\"zoom\"!==a&&_v4>1,_G=Math.min((_g5$min=_g5.min)!==null&&_g5$min!==void 0?_g5$min:_z,_z,_W?_L:_z),_X=Math.max((_g5$max=_g5.max)!==null&&_g5$max!==void 0?_g5$max:_N,_N,_W?_O:_N);(!_t142.isOrdinal||_t142.options.overscroll||1!==_v4||r)&&(_M2<_G&&(_M2=_G,_v4>=1&&(_w3=_M2+_j2)),_w3>_X&&(_w3=_X,_v4>=1&&(_M2=_w3-_j2)),(r||_t142.series.length&&(_M2!==_L||_w3!==_O)&&_M2>=_G&&_w3<=_X)&&(o?o[_t142.coll].push({axis:_t142,min:_M2,max:_w3}):(_t142.isPanning=\"zoom\"!==a,_t142.isPanning&&(c=!0),_t142.setExtremes(r?void 0:_M2,r?void 0:_w3,!1,!1,{move:_C,trigger:a,scale:_v4}),!r&&(_M2>_G||_w3<_X)&&\"mousewheel\"!==a&&(d=!0)),l=!0),i&&(this[_e134?\"mouseDownX\":\"mouseDownY\"]=i[_e134?\"chartX\":\"chartY\"]));}}catch(err){_didIteratorError20=true;_iteratorError20=err;}finally{try{if(!_iteratorNormalCompletion20&&_iterator20[\"return\"]!=null){_iterator20[\"return\"]();}}finally{if(_didIteratorError20){throw _iteratorError20;}}}return l&&(o?N(this,\"selection\",o,function(){delete t.selection,t.trigger=\"zoom\",_this41.transform(t);}):(!d||c||this.resetZoomButton?!d&&this.resetZoomButton&&(this.resetZoomButton=this.resetZoomButton.destroy()):this.showResetZoom(),this.redraw(\"zoom\"===a&&((_this$options$chart$a=this.options.chart.animation)!==null&&_this$options$chart$a!==void 0?_this$options$chart$a:this.pointCount<100)))),l;}}],[{key:\"chart\",value:function chart(t,e,i){return new Q(t,e,i);}}]);return Q;}();return R(Q.prototype,{callbacks:[],collectionsWithInit:{xAxis:[Q.prototype.addAxis,[!0]],yAxis:[Q.prototype.addAxis,[!1]],series:[Q.prototype.addSeries]},collectionsWithUpdate:[\"xAxis\",\"yAxis\",\"series\"],propsRequireDirtyBox:[\"backgroundColor\",\"borderColor\",\"borderWidth\",\"borderRadius\",\"plotBackgroundColor\",\"plotBackgroundImage\",\"plotBorderColor\",\"plotBorderWidth\",\"plotShadow\",\"shadow\"],propsRequireReflow:[\"margin\",\"marginTop\",\"marginRight\",\"marginBottom\",\"marginLeft\",\"spacing\",\"spacingTop\",\"spacingRight\",\"spacingBottom\",\"spacingLeft\"],propsRequireUpdateSeries:[\"chart.inverted\",\"chart.polar\",\"chart.ignoreHiddenSeries\",\"chart.type\",\"colors\",\"plotOptions\",\"time\",\"tooltip\"]}),Q;}),i(e,\"Extensions/ScrollablePlotArea.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Globals.js\"],e[\"Core/Renderer/RendererRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s){var r=t.stop,o=e.composed,n=s.addEvent,a=s.createElement,h=s.css,l=s.defined,d=s.merge,c=s.pushUnique;function p(){var _t144;var t=this.scrollablePlotArea;(this.scrollablePixelsX||this.scrollablePixelsY)&&!t&&(this.scrollablePlotArea=t=new g(this)),(_t144=t)===null||_t144===void 0?void 0:_t144.applyFixed();}function u(){this.chart.scrollablePlotArea&&(this.chart.scrollablePlotArea.isDirty=!0);}var g=/*#__PURE__*/function(){function g(t){var _s$style,_o$opacity;_classCallCheck(this,g);var e;var s=t.options.chart,r=i.getRendererType(),o=s.scrollablePlotArea||{},l=this.moveFixedElements.bind(this),d={WebkitOverflowScrolling:\"touch\",overflowX:\"hidden\",overflowY:\"hidden\"};t.scrollablePixelsX&&(d.overflowX=\"auto\"),t.scrollablePixelsY&&(d.overflowY=\"auto\"),this.chart=t;var c=this.parentDiv=a(\"div\",{className:\"highcharts-scrolling-parent\"},{position:\"relative\"},t.renderTo),p=this.scrollingContainer=a(\"div\",{className:\"highcharts-scrolling\"},d,c),u=this.innerContainer=a(\"div\",{className:\"highcharts-inner-container\"},void 0,p),_g6=this.fixedDiv=a(\"div\",{className:\"highcharts-fixed\"},{position:\"absolute\",overflow:\"hidden\",pointerEvents:\"none\",zIndex:(((_s$style=s.style)===null||_s$style===void 0?void 0:_s$style.zIndex)||0)+2,top:0},void 0,!0),f=this.fixedRenderer=new r(_g6,t.chartWidth,t.chartHeight,s.style);this.mask=f.path().attr({fill:s.backgroundColor||\"#fff\",\"fill-opacity\":(_o$opacity=o.opacity)!==null&&_o$opacity!==void 0?_o$opacity:.85,zIndex:-1}).addClass(\"highcharts-scrollable-mask\").add(),p.parentNode.insertBefore(_g6,p),h(t.renderTo,{overflow:\"visible\"}),n(t,\"afterShowResetZoom\",l),n(t,\"afterApplyDrilldown\",l),n(t,\"afterLayOutTitles\",l),n(p,\"scroll\",function(){var i=t.pointer,s=t.hoverPoint;i&&(delete i.chartPosition,s&&(e=s),i.runPointActions(void 0,e,!0));}),u.appendChild(t.container);}_createClass(g,[{key:\"applyFixed\",value:function applyFixed(){var _t$chartBackground;var t=this.chart,e=this.fixedRenderer,i=this.isDirty,s=this.scrollingContainer,o=t.axisOffset,n=t.chartWidth,a=t.chartHeight,d=t.container,c=t.plotHeight,p=t.plotLeft,u=t.plotTop,_g7=t.plotWidth,_t$scrollablePixelsX=t.scrollablePixelsX,f=_t$scrollablePixelsX===void 0?0:_t$scrollablePixelsX,_t$scrollablePixelsY=t.scrollablePixelsY,m=_t$scrollablePixelsY===void 0?0:_t$scrollablePixelsY,_ref18=t.options.chart.scrollablePlotArea||{},_ref18$scrollPosition=_ref18.scrollPositionX,x=_ref18$scrollPosition===void 0?0:_ref18$scrollPosition,_ref18$scrollPosition2=_ref18.scrollPositionY,y=_ref18$scrollPosition2===void 0?0:_ref18$scrollPosition2,b=n+f,v=a+m;e.setSize(n,a),(i!==null&&i!==void 0?i:!0)&&(this.isDirty=!1,this.moveFixedElements()),r(t.container),h(d,{width:\"\".concat(b,\"px\"),height:\"\".concat(v,\"px\")}),t.renderer.boxWrapper.attr({width:b,height:v,viewBox:[0,0,b,v].join(\" \")}),(_t$chartBackground=t.chartBackground)!==null&&_t$chartBackground!==void 0&&_t$chartBackground.attr({width:b,height:v}),h(s,{width:\"\".concat(n,\"px\"),height:\"\".concat(a,\"px\")}),l(i)||(s.scrollLeft=f*x,s.scrollTop=m*y);var S=u-o[0]-1,C=p-o[3]-1,k=u+c+o[2]+1,M=p+_g7+o[1]+1,w=p+_g7-f,T=u+c-m,A=[[\"M\",0,0]];f?A=[[\"M\",0,S],[\"L\",p-1,S],[\"L\",p-1,k],[\"L\",0,k],[\"Z\"],[\"M\",w,S],[\"L\",n,S],[\"L\",n,k],[\"L\",w,k],[\"Z\"]]:m&&(A=[[\"M\",C,0],[\"L\",C,u-1],[\"L\",M,u-1],[\"L\",M,0],[\"Z\"],[\"M\",C,T],[\"L\",C,a],[\"L\",M,a],[\"L\",M,T],[\"Z\"]]),\"adjustHeight\"!==t.redrawTrigger&&this.mask.attr({d:A});}},{key:\"moveFixedElements\",value:function moveFixedElements(){var t;var _this$chart=this.chart,e=_this$chart.container,i=_this$chart.inverted,s=_this$chart.scrollablePixelsX,r=_this$chart.scrollablePixelsY,o=this.fixedRenderer,n=g.fixedSelectors;var _iteratorNormalCompletion22=true;var _didIteratorError22=false;var _iteratorError22=undefined;try{for(var _iterator22=(s&&!i?t=\".highcharts-yaxis\":s&&i?t=\".highcharts-xaxis\":r&&!i?t=\".highcharts-xaxis\":r&&i&&(t=\".highcharts-yaxis\"),t&&n.push(\"\".concat(t,\":not(.highcharts-radial-axis)\"),\"\".concat(t,\"-labels:not(.highcharts-radial-axis-labels)\")),n)[Symbol.iterator](),_step22;!(_iteratorNormalCompletion22=(_step22=_iterator22.next()).done);_iteratorNormalCompletion22=true){var _a20=_step22.value;[].forEach.call(e.querySelectorAll(_a20),function(t){(t.namespaceURI===o.SVG_NS?o.box:o.box.parentNode).appendChild(t),t.style.pointerEvents=\"auto\";});}}catch(err){_didIteratorError22=true;_iteratorError22=err;}finally{try{if(!_iteratorNormalCompletion22&&_iterator22[\"return\"]!=null){_iterator22[\"return\"]();}}finally{if(_didIteratorError22){throw _iteratorError22;}}}}}],[{key:\"compose\",value:function compose(t,e,i){var _this42=this;c(o,this.compose)&&(n(t,\"afterInit\",u),n(e,\"afterSetChartSize\",function(t){return _this42.afterSetSize(t.target,t);}),n(e,\"render\",p),n(i,\"show\",u));}},{key:\"afterSetSize\",value:function afterSetSize(t,e){var i,s,r;var _ref19=t.options.chart.scrollablePlotArea||{},o=_ref19.minWidth,n=_ref19.minHeight,a=t.clipBox,h=t.plotBox,c=t.inverted,p=t.renderer;if(!p.forExport&&(o?(t.scrollablePixelsX=i=Math.max(0,o-t.chartWidth),i&&(t.scrollablePlotBox=d(t.plotBox),h.width=t.plotWidth+=i,a[c?\"height\":\"width\"]+=i,r=!0)):n&&(t.scrollablePixelsY=s=Math.max(0,n-t.chartHeight),l(s)&&(t.scrollablePlotBox=d(t.plotBox),h.height=t.plotHeight+=s,a[c?\"width\":\"height\"]+=s,r=!1)),l(r)&&!e.skipAxes)){var _iteratorNormalCompletion23=true;var _didIteratorError23=false;var _iteratorError23=undefined;try{for(var _iterator23=t.axes[Symbol.iterator](),_step23;!(_iteratorNormalCompletion23=(_step23=_iterator23.next()).done);_iteratorNormalCompletion23=true){var _e136=_step23.value;_e136.horiz===r&&(_e136.setAxisSize(),_e136.setAxisTranslation());}}catch(err){_didIteratorError23=true;_iteratorError23=err;}finally{try{if(!_iteratorNormalCompletion23&&_iterator23[\"return\"]!=null){_iterator23[\"return\"]();}}finally{if(_didIteratorError23){throw _iteratorError23;}}}}}}]);return g;}();return g.fixedSelectors=[\".highcharts-breadcrumbs-group\",\".highcharts-contextbutton\",\".highcharts-caption\",\".highcharts-credits\",\".highcharts-drillup-button\",\".highcharts-legend\",\".highcharts-legend-checkbox\",\".highcharts-navigator-series\",\".highcharts-navigator-xaxis\",\".highcharts-navigator-yaxis\",\".highcharts-navigator\",\".highcharts-range-selector-group\",\".highcharts-reset-zoom\",\".highcharts-scrollbar\",\".highcharts-subtitle\",\".highcharts-title\"],g;}),i(e,\"Core/Axis/Stacking/StackItem.js\",[e[\"Core/Templating.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=t.format,r=e.series,o=i.destroyObjectProperties,n=i.fireEvent,a=i.isNumber,h=i.pick;return/*#__PURE__*/function(){function _class3(t,e,i,s,r){_classCallCheck(this,_class3);var o=t.chart.inverted,n=t.reversed;this.axis=t;var a=this.isNegative=!!i!=!!n;this.options=e=e||{},this.x=s,this.total=null,this.cumulative=null,this.points={},this.hasValidPoints=!1,this.stack=r,this.leftCliff=0,this.rightCliff=0,this.alignOptions={align:e.align||(o?a?\"left\":\"right\":\"center\"),verticalAlign:e.verticalAlign||(o?\"middle\":a?\"bottom\":\"top\"),y:e.y,x:e.x},this.textAlign=e.textAlign||(o?a?\"right\":\"left\":\"center\");}_createClass(_class3,[{key:\"destroy\",value:function destroy(){o(this,this.axis);}},{key:\"render\",value:function render(t){var e=this.axis.chart,i=this.options,r=i.format,o=r?s(r,this,e):i.formatter.call(this);if(this.label)this.label.attr({text:o,visibility:\"hidden\"});else{this.label=e.renderer.label(o,null,void 0,i.shape,void 0,void 0,i.useHTML,!1,\"stack-labels\");var _s95={r:i.borderRadius||0,text:o,padding:h(i.padding,5),visibility:\"hidden\"};e.styledMode||(_s95.fill=i.backgroundColor,_s95.stroke=i.borderColor,_s95[\"stroke-width\"]=i.borderWidth,this.label.css(i.style||{})),this.label.attr(_s95),this.label.added||this.label.add(t);}this.label.labelrank=e.plotSizeY,n(this,\"afterRender\");}},{key:\"setOffset\",value:function setOffset(t,e,i,s,o,l){var d=this.alignOptions,c=this.axis,p=this.label,u=this.options,g=this.textAlign,f=c.chart,m=this.getStackBox({xOffset:t,width:e,boxBottom:i,boxTop:s,defaultX:o,xAxis:l}),x=d.verticalAlign;if(p&&m){var _t145=p.getBBox(void 0,0),_e137=p.padding,_i90=\"justify\"===h(u.overflow,\"justify\"),_s96;d.x=u.x||0,d.y=u.y||0;var _this$adjustStackPosi=this.adjustStackPosition({labelBox:_t145,verticalAlign:x,textAlign:g}),_o54=_this$adjustStackPosi.x,_n43=_this$adjustStackPosi.y;m.x-=_o54,m.y-=_n43,p.align(d,!1,m),(_s96=f.isInsidePlot(p.alignAttr.x+d.x+_o54,p.alignAttr.y+d.y+_n43))||(_i90=!1),_i90&&r.prototype.justifyDataLabel.call(c,p,d,p.alignAttr,_t145,m),p.attr({x:p.alignAttr.x,y:p.alignAttr.y,rotation:u.rotation,rotationOriginX:_t145.width*{left:0,center:.5,right:1}[u.textAlign||\"center\"],rotationOriginY:_t145.height/2}),h(!_i90&&u.crop,!0)&&(_s96=a(p.x)&&a(p.y)&&f.isInsidePlot(p.x-_e137+(p.width||0),p.y)&&f.isInsidePlot(p.x+_e137,p.y)),p[_s96?\"show\":\"hide\"]();}n(this,\"afterSetOffset\",{xOffset:t,width:e});}},{key:\"adjustStackPosition\",value:function adjustStackPosition(_ref20){var t=_ref20.labelBox,e=_ref20.verticalAlign,i=_ref20.textAlign;var s={bottom:0,middle:1,top:2,right:1,center:0,left:-1},r=s[e],o=s[i];return{x:t.width/2+t.width/2*o,y:t.height/2*r};}},{key:\"getStackBox\",value:function getStackBox(t){var e=this.axis,i=e.chart,s=t.boxTop,r=t.defaultX,o=t.xOffset,n=t.width,l=t.boxBottom,d=e.stacking.usePercentage?100:h(s,this.total,0),c=e.toPixels(d),p=t.xAxis||i.xAxis[0],u=h(r,p.translate(this.x))+o,g=Math.abs(c-e.toPixels(l||a(e.min)&&e.logarithmic&&e.logarithmic.lin2log(e.min)||0)),f=i.inverted,m=this.isNegative;return f?{x:(m?c:c-g)-i.plotLeft,y:p.height-u-n+p.top-i.plotTop,width:g,height:n}:{x:u+p.transB-i.plotLeft,y:(m?c-g:c)-i.plotTop,width:n,height:g};}}]);return _class3;}();}),i(e,\"Core/Axis/Stacking/StackingAxis.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Axis/Axis.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Axis/Stacking/StackItem.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r){var o;var n=t.getDeferredAnimation,a=i.series.prototype,h=r.addEvent,l=r.correctFloat,d=r.defined,c=r.destroyObjectProperties,p=r.fireEvent,u=r.isArray,g=r.isNumber,f=r.objectEach,m=r.pick;function x(){var t=this.inverted;this.axes.forEach(function(t){t.stacking&&t.stacking.stacks&&t.hasVisibleSeries&&(t.stacking.oldStacks=t.stacking.stacks);}),this.series.forEach(function(e){var i=e.xAxis&&e.xAxis.options||{};e.options.stacking&&e.reserveSpace()&&(e.stackKey=[e.type,m(e.options.stack,\"\"),t?i.top:i.left,t?i.height:i.width].join(\",\"));});}function y(){var t=this.stacking;if(t){var _t$stackTotalGroup;var _e138=t.stacks;f(_e138,function(t,i){c(t),delete _e138[i];}),(_t$stackTotalGroup=t.stackTotalGroup)===null||_t$stackTotalGroup===void 0?void 0:_t$stackTotalGroup.destroy();}}function b(){this.stacking||(this.stacking=new w(this));}function v(t,e,i,s){return!d(t)||t.x!==e||s&&t.stackKey!==s?t={x:e,index:0,key:s,stackKey:s}:t.index++,t.key=[i,e,t.index].join(\",\"),t;}function S(){var t;var e=this,i=e.yAxis,s=e.stackKey||\"\",r=i.stacking.stacks,o=e.processedXData,n=e.options.stacking,a=e[n+\"Stacker\"];a&&[s,\"-\"+s].forEach(function(i){var s=o.length,n,h,l;for(;s--;){var _r$i,_h13;n=o[s],t=e.getStackIndicator(t,n,e.index,i),h=(_r$i=r[i])===null||_r$i===void 0?void 0:_r$i[n],(l=(_h13=h)===null||_h13===void 0?void 0:_h13.points[t.key||\"\"])&&a.call(e,l,h,s);}});}function C(t,e,i){var s=e.total?100/e.total:0;t[0]=l(t[0]*s),t[1]=l(t[1]*s),this.stackedYData[i]=t[1];}function k(t){(this.is(\"column\")||this.is(\"columnrange\"))&&(this.options.centerInCategory&&!this.options.stacking&&this.chart.series.length>1?a.setStackedPoints.call(this,t,\"group\"):t.stacking.resetStacks());}function M(t,e){var i,r,o,n,a,h,c,p,g;var f=e||this.options.stacking;if(!f||!this.reserveSpace()||({group:\"xAxis\"}[f]||\"yAxis\")!==t.coll)return;var x=this.processedXData,y=this.processedYData,b=[],v=y.length,S=this.options,C=S.threshold||0,k=S.startFromThreshold?C:0,M=S.stack,w=e?\"\".concat(this.type,\",\").concat(f):this.stackKey||\"\",T=\"-\"+w,A=this.negStacks,P=t.stacking,L=P.stacks,O=P.oldStacks;for(P.stacksTouched+=1,c=0;c<v;c++){var _O$a,_L$n;p=x[c],g=y[c],h=(i=this.getStackIndicator(i,p,this.index)).key||\"\",L[a=(r=A&&g<(k?0:C))?T:w]||(L[a]={}),L[a][p]||((_O$a=O[a])!==null&&_O$a!==void 0&&_O$a[p]?(L[a][p]=O[a][p],L[a][p].total=null):L[a][p]=new s(t,t.options.stackLabels,!!r,p,M)),o=L[a][p],null!==g?(o.points[h]=o.points[this.index]=[m(o.cumulative,k)],d(o.cumulative)||(o.base=h),o.touched=P.stacksTouched,i.index>0&&!1===this.singleStacks&&(o.points[h][0]=o.points[this.index+\",\"+p+\",0\"][0])):(delete o.points[h],delete o.points[this.index]);var _e139=o.total||0;\"percent\"===f?(n=r?w:T,_e139=A&&(_L$n=L[n])!==null&&_L$n!==void 0&&_L$n[p]?(n=L[n][p]).total=Math.max(n.total||0,_e139)+Math.abs(g)||0:l(_e139+(Math.abs(g)||0))):\"group\"===f?(u(g)&&(g=g[0]),null!==g&&_e139++):_e139=l(_e139+(g||0)),\"group\"===f?o.cumulative=(_e139||1)-1:o.cumulative=l(m(o.cumulative,k)+(g||0)),o.total=_e139,null!==g&&(o.points[h].push(o.cumulative),b[c]=o.cumulative,o.hasValidPoints=!0);}\"percent\"===f&&(P.usePercentage=!0),\"group\"!==f&&(this.stackedYData=b),P.oldStacks={};}var w=/*#__PURE__*/function(){function w(t){_classCallCheck(this,w);this.oldStacks={},this.stacks={},this.stacksTouched=0,this.axis=t;}_createClass(w,[{key:\"buildStacks\",value:function buildStacks(){var t,e;var i=this.axis,s=i.series,r=\"xAxis\"===i.coll,o=i.options.reversedStacks,n=s.length;for(this.resetStacks(),this.usePercentage=!1,e=n;e--;)t=s[o?e:n-e-1],r&&t.setGroupedPoints(i),t.setStackedPoints(i);if(!r)for(e=0;e<n;e++)s[e].modifyStacks();p(i,\"afterBuildStacks\");}},{key:\"cleanStacks\",value:function cleanStacks(){this.oldStacks&&(this.stacks=this.oldStacks,f(this.stacks,function(t){f(t,function(t){t.cumulative=t.total;});}));}},{key:\"resetStacks\",value:function resetStacks(){var _this43=this;f(this.stacks,function(t){f(t,function(e,i){g(e.touched)&&e.touched<_this43.stacksTouched?(e.destroy(),delete t[i]):(e.total=null,e.cumulative=null);});});}},{key:\"renderStackTotals\",value:function renderStackTotals(){var _t$options$stackLabel;var t=this.axis,e=t.chart,i=e.renderer,s=this.stacks,r=n(e,((_t$options$stackLabel=t.options.stackLabels)===null||_t$options$stackLabel===void 0?void 0:_t$options$stackLabel.animation)||!1),o=this.stackTotalGroup=this.stackTotalGroup||i.g(\"stack-labels\").attr({zIndex:6,opacity:0}).add();o.translate(e.plotLeft,e.plotTop),f(s,function(t){f(t,function(t){t.render(o);});}),o.animate({opacity:1},r);}}]);return w;}();return(o||(o={})).compose=function(t,e,i){var s=e.prototype,r=i.prototype;s.getStacks||(h(t,\"init\",b),h(t,\"destroy\",y),s.getStacks=x,r.getStackIndicator=v,r.modifyStacks=S,r.percentStacker=C,r.setGroupedPoints=k,r.setStackedPoints=M);},o;}),i(e,\"Series/Line/LineSeries.js\",[e[\"Core/Series/Series.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=i.defined,r=i.merge,o=i.isObject;var n=/*#__PURE__*/function(_t146){_inherits(n,_t146);var _super16=_createSuper(n);function n(){_classCallCheck(this,n);return _super16.apply(this,arguments);}_createClass(n,[{key:\"drawGraph\",value:function drawGraph(){var _this44=this;var t=this.options,e=(this.gappedPath||this.getGraphPath).call(this),i=this.chart.styledMode;[this].concat(_toConsumableArray(this.zones)).forEach(function(s,_n44){var a,h=s.graph,l=h?\"animate\":\"attr\",d=s.dashStyle||t.dashStyle;h?(h.endX=_this44.preventGraphAnimation?null:e.xMap,h.animate({d:e})):e.length&&(s.graph=h=_this44.chart.renderer.path(e).addClass(\"highcharts-graph\"+(_n44?\" highcharts-zone-graph-\".concat(_n44-1,\" \"):\" \")+(_n44&&s.className||\"\")).attr({zIndex:1}).add(_this44.group)),h&&!i&&(a={stroke:!_n44&&t.lineColor||s.color||_this44.color||\"#cccccc\",\"stroke-width\":t.lineWidth||0,fill:_this44.fillGraph&&_this44.color||\"none\"},d?a.dashstyle=d:\"square\"!==t.linecap&&(a[\"stroke-linecap\"]=a[\"stroke-linejoin\"]=\"round\"),h[l](a).shadow(_n44<2&&t.shadow&&r({filterUnits:\"userSpaceOnUse\"},o(t.shadow)?t.shadow:{}))),h&&(h.startX=e.xMap,h.isArea=e.isArea);});}},{key:\"getGraphPath\",value:function getGraphPath(t,e,i){var r=this,o=r.options,_n45=[],a=[],h,l=o.step,d=(t=t||r.points).reversed;return d&&t.reverse(),(l={right:1,center:2}[l]||l&&3)&&d&&(l=4-l),(t=this.getValidPoints(t,!1,!(o.connectNulls&&!e&&!i))).forEach(function(d,c){var p;var u=d.plotX,g=d.plotY,f=t[c-1],m=d.isNull||\"number\"!=typeof g;(d.leftCliff||f&&f.rightCliff)&&!i&&(h=!0),m&&!s(e)&&c>0?h=!o.connectNulls:m&&!e?h=!0:(0===c||h?p=[[\"M\",d.plotX,d.plotY]]:r.getPointSpline?p=[r.getPointSpline(t,d,c)]:l?(p=1===l?[[\"L\",f.plotX,g]]:2===l?[[\"L\",(f.plotX+u)/2,f.plotY],[\"L\",(f.plotX+u)/2,g]]:[[\"L\",u,f.plotY]]).push([\"L\",u,g]):p=[[\"L\",u,g]],a.push(d.x),l&&(a.push(d.x),2===l&&a.push(d.x)),_n45.push.apply(_n45,p),h=!1);}),_n45.xMap=a,r.graphPath=_n45,_n45;}}]);return n;}(t);return n.defaultOptions=r(t.defaultOptions,{legendSymbol:\"lineMarker\"}),e.registerSeriesType(\"line\",n),n;}),i(e,\"Series/Area/AreaSeriesDefaults.js\",[],function(){return{threshold:0,legendSymbol:\"areaMarker\"};}),i(e,\"Series/Area/AreaSeries.js\",[e[\"Series/Area/AreaSeriesDefaults.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=e.seriesTypes.line,r=i.extend,o=i.merge,n=i.objectEach,a=i.pick;var h=/*#__PURE__*/function(_s97){_inherits(h,_s97);var _super17=_createSuper(h);function h(){_classCallCheck(this,h);return _super17.apply(this,arguments);}_createClass(h,[{key:\"drawGraph\",value:function drawGraph(){var _this45=this;this.areaPath=[],_get(_getPrototypeOf(h.prototype),\"drawGraph\",this).apply(this);var t=this.areaPath,e=this.options;[this].concat(_toConsumableArray(this.zones)).forEach(function(i,s){var _e$fillOpacity;var r={},o=i.fillColor||e.fillColor,n=i.area,a=n?\"animate\":\"attr\";n?(n.endX=_this45.preventGraphAnimation?null:t.xMap,n.animate({d:t})):(r.zIndex=0,(n=i.area=_this45.chart.renderer.path(t).addClass(\"highcharts-area\"+(s?\" highcharts-zone-area-\".concat(s-1,\" \"):\" \")+(s&&i.className||\"\")).add(_this45.group)).isArea=!0),_this45.chart.styledMode||(r.fill=o||i.color||_this45.color,r[\"fill-opacity\"]=o?1:(_e$fillOpacity=e.fillOpacity)!==null&&_e$fillOpacity!==void 0?_e$fillOpacity:.75,n.css({pointerEvents:_this45.stickyTracking?\"none\":\"auto\"})),n[a](r),n.startX=t.xMap,n.shiftUnit=e.step?2:1;});}},{key:\"getGraphPath\",value:function getGraphPath(t){var e,i,r;var o=s.prototype.getGraphPath,n=this.options,_h14=n.stacking,l=this.yAxis,d=[],c=[],p=this.index,u=l.stacking.stacks[this.stackKey],g=n.threshold,f=Math.round(l.getThreshold(n.threshold)),m=a(n.connectNulls,\"percent\"===_h14),x=function x(i,s,r){var o=t[i],n=_h14&&u[o.x].points[p],a=o[r+\"Null\"]||0,m=o[r+\"Cliff\"]||0,x,y,b=!0;m||a?(x=(a?n[0]:n[1])+m,y=n[0]+m,b=!!a):!_h14&&t[s]&&t[s].isNull&&(x=y=g),void 0!==x&&(c.push({plotX:e,plotY:null===x?f:l.getThreshold(x),isNull:b,isCliff:!0}),d.push({plotX:e,plotY:null===y?f:l.getThreshold(y),doCurve:!1}));};t=t||this.points,_h14&&(t=this.getStackPoints(t));for(var _s98=0,_o55=t.length;_s98<_o55;++_s98)_h14||(t[_s98].leftCliff=t[_s98].rightCliff=t[_s98].leftNull=t[_s98].rightNull=void 0),i=t[_s98].isNull,e=a(t[_s98].rectPlotX,t[_s98].plotX),r=_h14?a(t[_s98].yBottom,f):f,i&&!m||(m||x(_s98,_s98-1,\"left\"),i&&!_h14&&m||(c.push(t[_s98]),d.push({x:_s98,plotX:e,plotY:r})),m||x(_s98,_s98+1,\"right\"));var y=o.call(this,c,!0,!0);d.reversed=!0;var b=o.call(this,d,!0,!0),v=b[0];v&&\"M\"===v[0]&&(b[0]=[\"L\",v[1],v[2]]);var S=y.concat(b);S.length&&S.push([\"Z\"]);var C=o.call(this,c,!1,m);return this.chart.series.length>1&&_h14&&c.some(function(t){return t.isCliff;})&&(S.hasStackedCliffs=C.hasStackedCliffs=!0),S.xMap=y.xMap,this.areaPath=S,C;}},{key:\"getStackPoints\",value:function getStackPoints(t){var e=this,i=[],s=[],r=this.xAxis,o=this.yAxis,_h15=o.stacking.stacks[this.stackKey],l={},d=o.series,c=d.length,p=o.options.reversedStacks?1:-1,u=d.indexOf(e);if(t=t||this.points,this.options.stacking){for(var _e140=0;_e140<t.length;_e140++)t[_e140].leftNull=t[_e140].rightNull=void 0,l[t[_e140].x]=t[_e140];n(_h15,function(t,e){null!==t.total&&s.push(e);}),s.sort(function(t,e){return t-e;});var g=d.map(function(t){return t.visible;});s.forEach(function(t,n){var f=0,m,x;if(l[t]&&!l[t].isNull)i.push(l[t]),[-1,1].forEach(function(i){var r=1===i?\"rightNull\":\"leftNull\",o=_h15[s[n+i]],a=0;if(o){var _i91=u;for(;_i91>=0&&_i91<c;){var _s99=d[_i91].index;!(m=o.points[_s99])&&(_s99===e.index?l[t][r]=!0:g[_i91]&&(x=_h15[t].points[_s99])&&(a-=x[1]-x[0])),_i91+=p;}}l[t][1===i?\"rightCliff\":\"leftCliff\"]=a;});else{var _e141=u;for(;_e141>=0&&_e141<c;){var _i92=d[_e141].index;if(m=_h15[t].points[_i92]){f=m[1];break;}_e141+=p;}f=a(f,0),f=o.translate(f,0,1,0,1),i.push({isNull:!0,plotX:r.translate(t,0,0,0,1),x:t,plotY:f,yBottom:f});}});}return i;}}]);return h;}(s);return h.defaultOptions=o(s.defaultOptions,t),r(h.prototype,{singleStacks:!1}),e.registerSeriesType(\"area\",h),h;}),i(e,\"Series/Spline/SplineSeries.js\",[e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=t.seriesTypes.line,s=e.merge,r=e.pick;var o=/*#__PURE__*/function(_i93){_inherits(o,_i93);var _super18=_createSuper(o);function o(){_classCallCheck(this,o);return _super18.apply(this,arguments);}_createClass(o,[{key:\"getPointSpline\",value:function getPointSpline(t,e,i){var s,_o56,n,a;var h=e.plotX||0,l=e.plotY||0,d=t[i-1],c=t[i+1];function p(t){return t&&!t.isNull&&!1!==t.doCurve&&!e.isCliff;}if(p(d)&&p(c)){var _t147=d.plotX||0,_i94=d.plotY||0,_r30=c.plotX||0,_p11=c.plotY||0,_u5=0;s=(1.5*h+_t147)/2.5,_o56=(1.5*l+_i94)/2.5,n=(1.5*h+_r30)/2.5,a=(1.5*l+_p11)/2.5,n!==s&&(_u5=(a-_o56)*(n-h)/(n-s)+l-a),_o56+=_u5,a+=_u5,_o56>_i94&&_o56>l?(_o56=Math.max(_i94,l),a=2*l-_o56):_o56<_i94&&_o56<l&&(_o56=Math.min(_i94,l),a=2*l-_o56),a>_p11&&a>l?(a=Math.max(_p11,l),_o56=2*l-a):a<_p11&&a<l&&(a=Math.min(_p11,l),_o56=2*l-a),e.rightContX=n,e.rightContY=a,e.controlPoints={low:[s,_o56],high:[n,a]};}var u=[\"C\",r(d.rightContX,d.plotX,0),r(d.rightContY,d.plotY,0),r(s,h,0),r(_o56,l,0),h,l];return d.rightContX=d.rightContY=void 0,u;}}]);return o;}(i);return o.defaultOptions=s(i.defaultOptions),t.registerSeriesType(\"spline\",o),o;}),i(e,\"Series/AreaSpline/AreaSplineSeries.js\",[e[\"Series/Spline/SplineSeries.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var _e$seriesTypes=e.seriesTypes,s=_e$seriesTypes.area,r=_e$seriesTypes.area.prototype,o=i.extend,n=i.merge;var a=/*#__PURE__*/function(_t148){_inherits(a,_t148);var _super19=_createSuper(a);function a(){_classCallCheck(this,a);return _super19.apply(this,arguments);}return _createClass(a);}(t);return a.defaultOptions=n(t.defaultOptions,s.defaultOptions),o(a.prototype,{getGraphPath:r.getGraphPath,getStackPoints:r.getStackPoints,drawGraph:r.drawGraph}),e.registerSeriesType(\"areaspline\",a),a;}),i(e,\"Series/Column/ColumnSeriesDefaults.js\",[],function(){return{borderRadius:3,centerInCategory:!1,groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{halo:!1,brightness:.1},select:{color:\"#cccccc\",borderColor:\"#000000\"}},dataLabels:{align:void 0,verticalAlign:void 0,y:void 0},startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0,borderColor:\"#ffffff\"};}),i(e,\"Series/Column/ColumnSeries.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Color/Color.js\"],e[\"Series/Column/ColumnSeriesDefaults.js\"],e[\"Core/Globals.js\"],e[\"Core/Series/Series.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o,n){var a=t.animObject,h=e.parse,l=s.noop,d=n.clamp,c=n.crisp,p=n.defined,u=n.extend,g=n.fireEvent,f=n.isArray,m=n.isNumber,x=n.merge,y=n.pick,b=n.objectEach;var v=/*#__PURE__*/function(_r31){_inherits(v,_r31);var _super20=_createSuper(v);function v(){_classCallCheck(this,v);return _super20.apply(this,arguments);}_createClass(v,[{key:\"animate\",value:function animate(t){var e,i;var s=this,r=this.yAxis,o=r.pos,n=r.reversed,h=s.options,_this$chart2=this.chart,l=_this$chart2.clipOffset,c=_this$chart2.inverted,p={},g=c?\"translateX\":\"translateY\";t&&l?(p.scaleY=.001,i=d(r.toPixels(h.threshold),o,o+r.len),c?(i+=n?-Math.floor(l[0]):Math.ceil(l[2]),p.translateX=i-r.len):(i+=n?Math.ceil(l[0]):-Math.floor(l[2]),p.translateY=i),s.clipBox&&s.setClip(),s.group.attr(p)):(e=Number(s.group.attr(g)),s.group.animate({scaleY:1},u(a(s.options.animation),{step:function step(t,i){s.group&&(p[g]=e+i.pos*(o-e),s.group.attr(p));}})));}},{key:\"init\",value:function init(t,e){_get(_getPrototypeOf(v.prototype),\"init\",this).apply(this,arguments);var i=this;(t=i.chart).hasRendered&&t.series.forEach(function(t){t.type===i.type&&(t.isDirty=!0);});}},{key:\"getColumnMetrics\",value:function getColumnMetrics(){var _i$brokenAxis,_i$ordinal;var t=this,e=t.options,i=t.xAxis,s=t.yAxis,r=i.options.reversedStacks,o=i.reversed&&!r||!i.reversed&&r,n={},a,h=0;!1===e.grouping?h=1:t.chart.series.forEach(function(e){var i;var r=e.yAxis,o=e.options;e.type===t.type&&e.reserveSpace()&&s.len===r.len&&s.pos===r.pos&&(o.stacking&&\"group\"!==o.stacking?(void 0===n[a=e.stackKey]&&(n[a]=h++),i=n[a]):!1!==o.grouping&&(i=h++),e.columnIndex=i);});var l=Math.min(Math.abs(i.transA)*(!((_i$brokenAxis=i.brokenAxis)!==null&&_i$brokenAxis!==void 0&&_i$brokenAxis.hasBreaks)&&((_i$ordinal=i.ordinal)===null||_i$ordinal===void 0?void 0:_i$ordinal.slope)||e.pointRange||i.closestPointRange||i.tickInterval||1),i.len),d=l*e.groupPadding,c=(l-2*d)/(h||1),p=Math.min(e.maxPointWidth||i.len,y(e.pointWidth,c*(1-2*e.pointPadding))),u=(t.columnIndex||0)+(o?1:0);return t.columnMetrics={width:p,offset:(c-p)/2+(d+u*c-l/2)*(o?-1:1),paddedWidth:c,columnCount:h},t.columnMetrics;}},{key:\"crispCol\",value:function crispCol(t,e,i,s){var r=this.borderWidth,o=this.chart.inverted;return s=c(e+s,r,o)-(e=c(e,r,o)),this.options.crisp&&(i=c(t+i,r)-(t=c(t,r))),{x:t,y:e,width:i,height:s};}},{key:\"adjustForMissingColumns\",value:function adjustForMissingColumns(t,e,i,s){var _this46=this;if(!i.isNull&&s.columnCount>1){var _this$xAxis$stacking;var _r32=this.xAxis.series.filter(function(t){return t.visible;}).map(function(t){return t.index;}),_o57=0,_n46=0;b((_this$xAxis$stacking=this.xAxis.stacking)===null||_this$xAxis$stacking===void 0?void 0:_this$xAxis$stacking.stacks,function(t){if(\"number\"==typeof i.x){var _e142=t[i.x.toString()];if(_e142&&f(_e142.points[_this46.index])){var _t149=Object.keys(_e142.points).filter(function(t){return!t.match(\",\")&&_e142.points[t]&&_e142.points[t].length>1;}).map(parseFloat).filter(function(t){return-1!==_r32.indexOf(t);}).sort(function(t,e){return e-t;});_o57=_t149.indexOf(_this46.index),_n46=_t149.length;}}}),_o57=this.xAxis.reversed?_n46-1-_o57:_o57;var _a21=(_n46-1)*s.paddedWidth+e;t=(i.plotX||0)+_a21/2-e-_o57*s.paddedWidth;}return t;}},{key:\"translate\",value:function translate(){var t=this,e=t.chart,i=t.options,s=t.dense=t.closestPointRange*t.xAxis.transA<2,o=t.borderWidth=y(i.borderWidth,s?0:1),n=t.xAxis,a=t.yAxis,h=i.threshold,l=y(i.minPointLength,5),c=t.getColumnMetrics(),u=c.width,f=t.pointXOffset=c.offset,x=t.dataMin,b=t.dataMax,_v5=t.translatedThreshold=a.getThreshold(h),S=t.barW=Math.max(u,1+2*o);i.pointPadding&&(S=Math.ceil(S)),r.prototype.translate.apply(t),t.points.forEach(function(s){var r=y(s.yBottom,_v5),o=999+Math.abs(r),g=s.plotX||0,C=d(s.plotY,-o,a.len+o),k,M=Math.min(C,r),w=Math.max(C,r)-M,T=u,A=g+f,P=S;l&&Math.abs(w)<l&&(w=l,k=!a.reversed&&!s.negative||a.reversed&&s.negative,m(h)&&m(b)&&s.y===h&&b<=h&&(a.min||0)<h&&(x!==b||(a.max||0)<=h)&&(k=!k,s.negative=!s.negative),M=Math.abs(M-_v5)>l?r-l:_v5-(k?l:0)),p(s.options.pointWidth)&&(A-=Math.round(((T=P=Math.ceil(s.options.pointWidth))-u)/2)),i.centerInCategory&&!i.stacking&&(A=t.adjustForMissingColumns(A,T,s,c)),s.barX=A,s.pointWidth=T,s.tooltipPos=e.inverted?[d(a.len+a.pos-e.plotLeft-C,a.pos-e.plotLeft,a.len+a.pos-e.plotLeft),n.len+n.pos-e.plotTop-A-P/2,w]:[n.left-e.plotLeft+A+P/2,d(C+a.pos-e.plotTop,a.pos-e.plotTop,a.len+a.pos-e.plotTop),w],s.shapeType=t.pointClass.prototype.shapeType||\"roundedRect\",s.shapeArgs=t.crispCol(A,s.isNull?_v5:M,P,s.isNull?0:w);}),g(this,\"afterColumnTranslate\");}},{key:\"drawGraph\",value:function drawGraph(){this.group[this.dense?\"addClass\":\"removeClass\"](\"highcharts-dense-data\");}},{key:\"pointAttribs\",value:function pointAttribs(t,e){var i=this.options,s=this.pointAttrToOptions||{},r=s.stroke||\"borderColor\",o=s[\"stroke-width\"]||\"borderWidth\",n,a,l,d=t&&t.color||this.color,c=t&&t[r]||i[r]||d,p=t&&t.options.dashStyle||i.dashStyle,u=t&&t[o]||i[o]||this[o]||0,g=y(t&&t.opacity,i.opacity,1);t&&this.zones.length&&(a=t.getZone(),d=t.options.color||a&&(a.color||t.nonZonedColor)||this.color,a&&(c=a.borderColor||c,p=a.dashStyle||p,u=a.borderWidth||u)),e&&t&&(l=(n=x(i.states[e],t.options.states&&t.options.states[e]||{})).brightness,d=n.color||void 0!==l&&h(d).brighten(n.brightness).get()||d,c=n[r]||c,u=n[o]||u,p=n.dashStyle||p,g=y(n.opacity,g));var f={fill:d,stroke:c,\"stroke-width\":u,opacity:g};return p&&(f.dashstyle=p),f;}},{key:\"drawPoints\",value:function drawPoints(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.points;var e;var i=this,s=this.chart,r=i.options,o=s.renderer,n=r.animationLimit||250;t.forEach(function(t){var a=t.plotY,h=t.graphic,l=!!h,d=h&&s.pointCount<n?\"animate\":\"attr\";m(a)&&null!==t.y?(e=t.shapeArgs,h&&t.hasNewShapeType()&&(h=h.destroy()),i.enabledDataSorting&&(t.startXPos=i.xAxis.reversed?-(e&&e.width||0):i.xAxis.width),!h&&(t.graphic=h=o[t.shapeType](e).add(t.group||i.group),h&&i.enabledDataSorting&&s.hasRendered&&s.pointCount<n&&(h.attr({x:t.startXPos}),l=!0,d=\"animate\")),h&&l&&h[d](x(e)),s.styledMode||h[d](i.pointAttribs(t,t.selected&&\"select\")).shadow(!1!==t.allowShadow&&r.shadow),h&&(h.addClass(t.getClassName(),!0),h.attr({visibility:t.visible?\"inherit\":\"hidden\"}))):h&&(t.graphic=h.destroy());});}},{key:\"drawTracker\",value:function drawTracker(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.points;var e;var i=this,s=i.chart,r=s.pointer,o=function o(t){var e=r===null||r===void 0?void 0:r.getPointFromEvent(t);r&&e&&i.options.enableMouseTracking&&(r.isDirectTouch=!0,e.onMouseOver(t));};t.forEach(function(t){e=f(t.dataLabels)?t.dataLabels:t.dataLabel?[t.dataLabel]:[],t.graphic&&(t.graphic.element.point=t),e.forEach(function(e){(e.div||e.element).point=t;});}),i._hasTracking||(i.trackerGroups.forEach(function(t){i[t]&&(i[t].addClass(\"highcharts-tracker\").on(\"mouseover\",o).on(\"mouseout\",function(t){r===null||r===void 0?void 0:r.onTrackerMouseOut(t);}).on(\"touchstart\",o),!s.styledMode&&i.options.cursor&&i[t].css({cursor:i.options.cursor}));}),i._hasTracking=!0),g(this,\"afterDrawTracker\");}},{key:\"remove\",value:function remove(){var t=this,e=t.chart;e.hasRendered&&e.series.forEach(function(e){e.type===t.type&&(e.isDirty=!0);}),r.prototype.remove.apply(t,arguments);}}]);return v;}(r);return v.defaultOptions=x(r.defaultOptions,i),u(v.prototype,{directTouch:!0,getSymbol:l,negStacks:!0,trackerGroups:[\"group\",\"dataLabelsGroup\"]}),o.registerSeriesType(\"column\",v),v;}),i(e,\"Core/Series/DataLabel.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Templating.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s;var r=t.getDeferredAnimation,o=e.format,n=i.defined,a=i.extend,h=i.fireEvent,l=i.isArray,d=i.isString,c=i.merge,p=i.objectEach,u=i.pick,g=i.pInt,f=i.splat;return function(t){function e(){return v(this).some(function(t){return t===null||t===void 0?void 0:t.enabled;});}function i(t,e,i,s,r){var o=this.chart,h=this.enabledDataSorting,l=this.isCartesian&&o.inverted,d=t.plotX,p=t.plotY,g=i.rotation||0,f=n(d)&&n(p)&&o.isInsidePlot(d,Math.round(p),{inverted:l,paneCoordinates:!0,series:this}),m=0===g&&\"justify\"===u(i.overflow,h?\"none\":\"justify\"),x=this.visible&&!1!==t.visible&&n(d)&&(t.series.forceDL||h&&!m||f||u(i.inside,!!this.options.stacking)&&s&&o.isInsidePlot(d,l?s.x+1:s.y+s.height-1,{inverted:l,paneCoordinates:!0,series:this})),y=t.pos();if(x&&y){var _this$yAxis;var b;var _n47=e.getBBox(),_d9=e.getBBox(void 0,0),_p12={right:1,center:.5}[i.align||0]||0,_v6={bottom:1,middle:.5}[i.verticalAlign||0]||0;if(s=a({x:y[0],y:Math.round(y[1]),width:0,height:0},s||{}),\"plotEdges\"===i.alignTo&&this.isCartesian&&(s[l?\"x\":\"y\"]=0,s[l?\"width\":\"height\"]=((_this$yAxis=this.yAxis)===null||_this$yAxis===void 0?void 0:_this$yAxis.len)||0),a(i,{width:_n47.width,height:_n47.height}),b=s,h&&this.xAxis&&!m&&this.setDataLabelStartPos(t,e,r,f,b),e.align(c(i,{width:_d9.width,height:_d9.height}),!1,s,!1),e.alignAttr.x+=_p12*(_d9.width-_n47.width),e.alignAttr.y+=_v6*(_d9.height-_n47.height),e[e.placed?\"animate\":\"attr\"]({x:e.alignAttr.x+(_n47.width-_d9.width)/2,y:e.alignAttr.y+(_n47.height-_d9.height)/2,rotationOriginX:(e.width||0)/2,rotationOriginY:(e.height||0)/2}),m&&s.height>=0)this.justifyDataLabel(e,i,e.alignAttr,_n47,s,r);else if(u(i.crop,!0)){var _e$alignAttr=e.alignAttr,_t150=_e$alignAttr.x,_i95=_e$alignAttr.y;x=o.isInsidePlot(_t150,_i95,{paneCoordinates:!0,series:this})&&o.isInsidePlot(_t150+_n47.width-1,_i95+_n47.height-1,{paneCoordinates:!0,series:this});}i.shape&&!g&&e[r?\"attr\":\"animate\"]({anchorX:y[0],anchorY:y[1]});}r&&h&&(e.placed=!1),x||h&&!m?(e.show(),e.placed=!0):(e.hide(),e.placed=!1);}function s(){return this.plotGroup(\"dataLabelsGroup\",\"data-labels\",this.hasRendered?\"inherit\":\"hidden\",this.options.dataLabels.zIndex||6);}function m(t){var e=this.hasRendered||0,i=this.initDataLabelsGroup().attr({opacity:+e});return!e&&i&&(this.visible&&i.show(),this.options.animation?i.animate({opacity:1},t):i.attr({opacity:1})),i;}function x(t){var _i$hasDataLabels2;var e;t=t||this.points;var i=this,s=i.chart,a=i.options,l=s.renderer,_s$options$chart=s.options.chart,c=_s$options$chart.backgroundColor,m=_s$options$chart.plotBackgroundColor,x=l.getContrast(d(m)&&m||d(c)&&c||\"#000000\"),y=v(i),_y$=y[0],S=_y$.animation,C=_y$.defer,k=C?r(s,S,i):{defer:0,duration:0};h(this,\"drawDataLabels\"),(_i$hasDataLabels2=i.hasDataLabels)!==null&&_i$hasDataLabels2!==void 0&&_i$hasDataLabels2.call(i)&&(e=this.initDataLabels(k),t.forEach(function(t){var _t$options6;var r=t.dataLabels||[];f(b(y,t.dlOptions||((_t$options6=t.options)===null||_t$options6===void 0?void 0:_t$options6.dataLabels))).forEach(function(c,f){var m=c.enabled&&(t.visible||t.dataLabelOnHidden)&&(!t.isNull||t.dataLabelOnNull)&&function(t,e){var i=e.filter;if(i){var _e143=i.operator,_s100=t[i.property],_r33=i.value;return\">\"===_e143&&_s100>_r33||\"<\"===_e143&&_s100<_r33||\">=\"===_e143&&_s100>=_r33||\"<=\"===_e143&&_s100<=_r33||\"==\"===_e143&&_s100==_r33||\"===\"===_e143&&_s100===_r33||\"!=\"===_e143&&_s100!=_r33||\"!==\"===_e143&&_s100!==_r33;}return!0;}(t,c),y=c.backgroundColor,b=c.borderColor,v=c.distance,_c$style=c.style,S=_c$style===void 0?{}:_c$style,C,k,M,w,T={},A=r[f],P=!A,L;m&&(k=u(c[t.formatPrefix+\"Format\"],c.format),C=t.getLabelConfig(),M=n(k)?o(k,C,s):(c[t.formatPrefix+\"Formatter\"]||c.formatter).call(C,c),w=c.rotation,!s.styledMode&&(S.color=u(c.color,S.color,d(i.color)?i.color:void 0,\"#000000\"),\"contrast\"===S.color?(\"none\"!==y&&(L=y),t.contrastColor=l.getContrast(\"auto\"!==L&&L||t.color||i.color),S.color=L||!n(v)&&c.inside||0>g(v||0)||a.stacking?t.contrastColor:x):delete t.contrastColor,a.cursor&&(S.cursor=a.cursor)),T={r:c.borderRadius||0,rotation:w,padding:c.padding,zIndex:1},s.styledMode||(T.fill=\"auto\"===y?t.color:y,T.stroke=\"auto\"===b?t.color:b,T[\"stroke-width\"]=c.borderWidth),p(T,function(t,e){void 0===t&&delete T[e];})),!A||m&&n(M)&&!!A.div==!!c.useHTML&&(A.rotation&&c.rotation||A.rotation===c.rotation)||(A=void 0,P=!0),m&&n(M)&&(A?T.text=M:(A=l.label(M,0,0,c.shape,void 0,void 0,c.useHTML,void 0,\"data-label\")).addClass(\" highcharts-data-label-color-\"+t.colorIndex+\" \"+(c.className||\"\")+(c.useHTML?\" highcharts-tracker\":\"\")),A&&(A.options=c,A.attr(T),s.styledMode?S.width&&A.css({width:S.width,textOverflow:S.textOverflow}):A.css(S).shadow(c.shadow),h(A,\"beforeAddingDataLabel\",{labelOptions:c,point:t}),A.added||A.add(e),i.alignDataLabel(t,A,c,void 0,P),A.isActive=!0,r[f]&&r[f]!==A&&r[f].destroy(),r[f]=A));});var c=r.length;for(;c--;){var _r$c;r[c]&&r[c].isActive?r[c].isActive=!1:((_r$c=r[c])!==null&&_r$c!==void 0&&_r$c.destroy(),r.splice(c,1));}t.dataLabel=r[0],t.dataLabels=r;})),h(this,\"afterDrawDataLabels\");}function y(t,e,i,s,r,o){var n=this.chart,a=e.align,h=e.verticalAlign,l=t.box?0:t.padding||0,d=n.inverted?this.yAxis:this.xAxis,c=d?d.left-n.plotLeft:0,p=n.inverted?this.xAxis:this.yAxis,u=p?p.top-n.plotTop:0,_e$x=e.x,g=_e$x===void 0?0:_e$x,_e$y=e.y,f=_e$y===void 0?0:_e$y,m,x;return(m=(i.x||0)+l+c)<0&&(\"right\"===a&&g>=0?(e.align=\"left\",e.inside=!0):g-=m,x=!0),(m=(i.x||0)+s.width-l+c)>n.plotWidth&&(\"left\"===a&&g<=0?(e.align=\"right\",e.inside=!0):g+=n.plotWidth-m,x=!0),(m=i.y+l+u)<0&&(\"bottom\"===h&&f>=0?(e.verticalAlign=\"top\",e.inside=!0):f-=m,x=!0),(m=(i.y||0)+s.height-l+u)>n.plotHeight&&(\"top\"===h&&f<=0?(e.verticalAlign=\"bottom\",e.inside=!0):f+=n.plotHeight-m,x=!0),x&&(e.x=g,e.y=f,t.placed=!o,t.align(e,void 0,r)),x;}function b(t,e){var i=[],s;if(l(t)&&!l(e))i=t.map(function(t){return c(t,e);});else if(l(e)&&!l(t))i=e.map(function(e){return c(t,e);});else if(l(t)||l(e)){if(l(t)&&l(e))for(s=Math.max(t.length,e.length);s--;)i[s]=c(t[s],e[s]);}else i=c(t,e);return i;}function v(t){var _e$series,_e$t$type;var e=t.chart.options.plotOptions;return f(b(b(e===null||e===void 0?void 0:(_e$series=e.series)===null||_e$series===void 0?void 0:_e$series.dataLabels,e===null||e===void 0?void 0:(_e$t$type=e[t.type])===null||_e$t$type===void 0?void 0:_e$t$type.dataLabels),t.options.dataLabels));}function S(t,e,i,s,r){var o=this.chart,n=o.inverted,a=this.xAxis,h=a.reversed,l=((n?e.height:e.width)||0)/2,d=t.pointWidth,c=d?d/2:0;e.startXPos=n?r.x:h?-l-c:a.width-l+c,e.startYPos=n?h?this.yAxis.height-l+c:-l-c:r.y,s?\"hidden\"===e.visibility&&(e.show(),e.attr({opacity:0}).animate({opacity:1})):e.attr({opacity:1}).animate({opacity:0},void 0,e.hide),o.hasRendered&&(i&&e.attr({x:e.startXPos,y:e.startYPos}),e.placed=!0);}t.compose=function(t){var r=t.prototype;r.initDataLabels||(r.initDataLabels=m,r.initDataLabelsGroup=s,r.alignDataLabel=i,r.drawDataLabels=x,r.justifyDataLabel=y,r.setDataLabelStartPos=S,r.hasDataLabels=e);};}(s||(s={})),s;}),i(e,\"Series/Column/ColumnDataLabel.js\",[e[\"Core/Series/DataLabel.js\"],e[\"Core/Globals.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s){var r;var o=e.composed,n=i.series,a=s.merge,h=s.pick,l=s.pushUnique;return function(e){function i(t,e,i,s,r){var o=this.chart.inverted,l=t.series,d=(l.xAxis?l.xAxis.len:this.chart.plotSizeX)||0,c=(l.yAxis?l.yAxis.len:this.chart.plotSizeY)||0,p=t.dlBox||t.shapeArgs,u=h(t.below,t.plotY>h(this.translatedThreshold,c)),g=h(i.inside,!!this.options.stacking);if(p){if(s=a(p),!(\"allow\"===i.overflow&&!1===i.crop)){s.y<0&&(s.height+=s.y,s.y=0);var _t151=s.y+s.height-c;_t151>0&&_t151<s.height-1&&(s.height-=_t151);}o&&(s={x:c-s.y-s.height,y:d-s.x-s.width,width:s.height,height:s.width}),g||(o?(s.x+=u?0:s.width,s.width=0):(s.y+=u?s.height:0,s.height=0));}i.align=h(i.align,!o||g?\"center\":u?\"right\":\"left\"),i.verticalAlign=h(i.verticalAlign,o||g?\"middle\":u?\"top\":\"bottom\"),n.prototype.alignDataLabel.call(this,t,e,i,s,r),i.inside&&t.contrastColor&&e.css({color:t.contrastColor});}e.compose=function(e){t.compose(n),l(o,\"ColumnDataLabel\")&&(e.prototype.alignDataLabel=i);};}(r||(r={})),r;}),i(e,\"Series/Bar/BarSeries.js\",[e[\"Series/Column/ColumnSeries.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=i.extend,r=i.merge;var o=/*#__PURE__*/function(_t152){_inherits(o,_t152);var _super21=_createSuper(o);function o(){_classCallCheck(this,o);return _super21.apply(this,arguments);}return _createClass(o);}(t);return o.defaultOptions=r(t.defaultOptions,{}),s(o.prototype,{inverted:!0}),e.registerSeriesType(\"bar\",o),o;}),i(e,\"Series/Scatter/ScatterSeriesDefaults.js\",[],function(){return{lineWidth:0,findNearestPointBy:\"xy\",jitter:{x:0,y:0},marker:{enabled:!0},tooltip:{headerFormat:'<span style=\"color:{point.color}\">●</span> <span style=\"font-size: 0.8em\"> {series.name}</span><br/>',pointFormat:\"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>\"}};}),i(e,\"Series/Scatter/ScatterSeries.js\",[e[\"Series/Scatter/ScatterSeriesDefaults.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var _e$seriesTypes2=e.seriesTypes,s=_e$seriesTypes2.column,r=_e$seriesTypes2.line,o=i.addEvent,n=i.extend,a=i.merge;var h=/*#__PURE__*/function(_r34){_inherits(h,_r34);var _super22=_createSuper(h);function h(){_classCallCheck(this,h);return _super22.apply(this,arguments);}_createClass(h,[{key:\"applyJitter\",value:function applyJitter(){var t=this,e=this.options.jitter,i=this.points.length;e&&this.points.forEach(function(s,r){[\"x\",\"y\"].forEach(function(o,n){if(e[o]&&!s.isNull){var _a22=\"plot\".concat(o.toUpperCase()),_h16=t[\"\".concat(o,\"Axis\")],l=e[o]*_h16.transA;if(_h16&&!_h16.logarithmic){var _t153=Math.max(0,(s[_a22]||0)-l),_e144=Math.min(_h16.len,(s[_a22]||0)+l);s[_a22]=_t153+(_e144-_t153)*function(t){var e=1e4*Math.sin(t);return e-Math.floor(e);}(r+n*i),\"x\"===o&&(s.clientX=s.plotX);}}});});}},{key:\"drawGraph\",value:function drawGraph(){this.options.lineWidth?_get(_getPrototypeOf(h.prototype),\"drawGraph\",this).call(this):this.graph&&(this.graph=this.graph.destroy());}}]);return h;}(r);return h.defaultOptions=a(r.defaultOptions,t),n(h.prototype,{drawTracker:s.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[\"group\",\"markerGroup\",\"dataLabelsGroup\"]}),o(h,\"afterTranslate\",function(){this.applyJitter();}),e.registerSeriesType(\"scatter\",h),h;}),i(e,\"Series/CenteredUtilities.js\",[e[\"Core/Globals.js\"],e[\"Core/Series/Series.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s,r;var o=t.deg2rad,n=i.fireEvent,a=i.isNumber,h=i.pick,l=i.relativeLength;return(r=s||(s={})).getCenter=function(){var t=this.options,i=this.chart,s=2*(t.slicedOffset||0),r=i.plotWidth-2*s,o=i.plotHeight-2*s,d=t.center,c=Math.min(r,o),p=t.thickness,u,g=t.size,f=t.innerSize||0,m,x;\"string\"==typeof g&&(g=parseFloat(g)),\"string\"==typeof f&&(f=parseFloat(f));var y=[h(d[0],\"50%\"),h(d[1],\"50%\"),h(g&&g<0?void 0:t.size,\"100%\"),h(f&&f<0?void 0:t.innerSize||0,\"0%\")];for(!i.angular||this instanceof e||(y[3]=0),m=0;m<4;++m)x=y[m],u=m<2||2===m&&/%$/.test(x),y[m]=l(x,[r,o,c,y[2]][m])+(u?s:0);return y[3]>y[2]&&(y[3]=y[2]),a(p)&&2*p<y[2]&&p>0&&(y[3]=y[2]-2*p),n(this,\"afterGetCenter\",{positions:y}),y;},r.getStartAndEndRadians=function(t,e){var i=a(t)?t:0,s=a(e)&&e>i&&e-i<360?e:i+360;return{start:o*(i+-90),end:o*(s+-90)};},s;}),i(e,\"Series/Pie/PiePoint.js\",[e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Series/Point.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=t.setAnimation,r=i.addEvent,o=i.defined,n=i.extend,a=i.isNumber,h=i.pick,l=i.relativeLength;var d=/*#__PURE__*/function(_e145){_inherits(d,_e145);var _super23=_createSuper(d);function d(t,e,i){var _this47$name;var _this47;_classCallCheck(this,d);_this47=_super23.call(this,t,e,i),_this47.half=0,(_this47$name=_this47.name)!==null&&_this47$name!==void 0?_this47$name:_this47.name=\"Slice\";var s=function s(t){_this47.slice(\"select\"===t.type);};r(_assertThisInitialized(_this47),\"select\",s),r(_assertThisInitialized(_this47),\"unselect\",s);return _this47;}_createClass(d,[{key:\"getConnectorPath\",value:function getConnectorPath(t){var e=t.dataLabelPosition,i=t.options||{},s=i.connectorShape,r=this.connectorShapes[s]||s;return e&&r.call(this,_objectSpread(_objectSpread({},e.computed),{},{alignment:e.alignment}),e.connectorPosition,i)||[];}},{key:\"getTranslate\",value:function getTranslate(){return this.sliced&&this.slicedTranslation||{translateX:0,translateY:0};}},{key:\"haloPath\",value:function haloPath(t){var e=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+t,e.r+t,{innerR:e.r-1,start:e.start,end:e.end,borderRadius:e.borderRadius});}},{key:\"isValid\",value:function isValid(){return a(this.y)&&this.y>=0;}},{key:\"setVisible\",value:function setVisible(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;t!==this.visible&&this.update({visible:t!==null&&t!==void 0?t:!this.visible},e,void 0,!1);}},{key:\"slice\",value:function slice(t,e,i){var r=this.series;s(i,r.chart),e=h(e,!0),this.sliced=this.options.sliced=t=o(t)?t:!this.sliced,r.options.data[r.data.indexOf(this)]=this.options,this.graphic&&this.graphic.animate(this.getTranslate());}}]);return d;}(e);return n(d.prototype,{connectorShapes:{fixedOffset:function fixedOffset(t,e,i){var s=e.breakAt,r=e.touchingSliceAt,o=i.softConnector?[\"C\",t.x+(\"left\"===t.alignment?-5:5),t.y,2*s.x-r.x,2*s.y-r.y,s.x,s.y]:[\"L\",s.x,s.y];return[[\"M\",t.x,t.y],o,[\"L\",r.x,r.y]];},straight:function straight(t,e){var i=e.touchingSliceAt;return[[\"M\",t.x,t.y],[\"L\",i.x,i.y]];},crookedLine:function crookedLine(t,e,i){var s=e.breakAt,r=e.touchingSliceAt,o=this.series,_o$center=_slicedToArray(o.center,3),n=_o$center[0],a=_o$center[1],h=_o$center[2],d=h/2,_o$chart=o.chart,c=_o$chart.plotLeft,p=_o$chart.plotWidth,u=\"left\"===t.alignment,g=t.x,f=t.y,m=s.x;if(i.crookDistance){var _t154=l(i.crookDistance,1);m=u?n+d+(p+c-n-d)*(1-_t154):c+(n-d)*_t154;}else m=n+(a-f)*Math.tan((this.angle||0)-Math.PI/2);var x=[[\"M\",g,f]];return(u?m<=g&&m>=s.x:m>=g&&m<=s.x)&&x.push([\"L\",m,f]),x.push([\"L\",s.x,s.y],[\"L\",r.x,r.y]),x;}}}),d;}),i(e,\"Series/Pie/PieSeriesDefaults.js\",[],function(){return{borderRadius:3,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{connectorPadding:5,connectorShape:\"crookedLine\",crookDistance:void 0,distance:30,enabled:!0,formatter:function formatter(){return this.point.isNull?void 0:this.point.name;},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:\"point\",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:\"#ffffff\",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}};}),i(e,\"Series/Pie/PieSeries.js\",[e[\"Series/CenteredUtilities.js\"],e[\"Series/Column/ColumnSeries.js\"],e[\"Core/Globals.js\"],e[\"Series/Pie/PiePoint.js\"],e[\"Series/Pie/PieSeriesDefaults.js\"],e[\"Core/Series/Series.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Renderer/SVG/Symbols.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r,o,n,a,h){var l=t.getStartAndEndRadians,d=i.noop,c=h.clamp,p=h.extend,u=h.fireEvent,g=h.merge,f=h.pick;var m=/*#__PURE__*/function(_o58){_inherits(m,_o58);var _super24=_createSuper(m);function m(){_classCallCheck(this,m);return _super24.apply(this,arguments);}_createClass(m,[{key:\"animate\",value:function animate(t){var e=this,i=e.points,s=e.startAngleRad;t||i.forEach(function(t){var i=t.graphic,r=t.shapeArgs;i&&r&&(i.attr({r:f(t.startR,e.center&&e.center[3]/2),start:s,end:s}),i.animate({r:r.r,start:r.start,end:r.end},e.options.animation));});}},{key:\"drawEmpty\",value:function drawEmpty(){var t,e;var i=this.startAngleRad,s=this.endAngleRad,r=this.options;0===this.total&&this.center?(t=this.center[0],e=this.center[1],this.graph||(this.graph=this.chart.renderer.arc(t,e,this.center[1]/2,0,i,s).addClass(\"highcharts-empty-series\").add(this.group)),this.graph.attr({d:a.arc(t,e,this.center[2]/2,0,{start:i,end:s,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({\"stroke-width\":r.borderWidth,fill:r.fillColor||\"none\",stroke:r.color||\"#cccccc\"})):this.graph&&(this.graph=this.graph.destroy());}},{key:\"drawPoints\",value:function drawPoints(){var t=this.chart.renderer;this.points.forEach(function(e){e.graphic&&e.hasNewShapeType()&&(e.graphic=e.graphic.destroy()),e.graphic||(e.graphic=t[e.shapeType](e.shapeArgs).add(e.series.group),e.delayedRendering=!0);});}},{key:\"generatePoints\",value:function generatePoints(){_get(_getPrototypeOf(m.prototype),\"generatePoints\",this).call(this),this.updateTotals();}},{key:\"getX\",value:function getX(t,e,i,s){var r=this.center,o=this.radii?this.radii[i.index]||0:r[2]/2,n=s.dataLabelPosition,a=(n===null||n===void 0?void 0:n.distance)||0,h=Math.asin(c((t-r[1])/(o+a),-1,1));return r[0]+Math.cos(h)*(o+a)*(e?-1:1)+(a>0?(e?-1:1)*(s.padding||0):0);}},{key:\"hasData\",value:function hasData(){return!!this.processedXData.length;}},{key:\"redrawPoints\",value:function redrawPoints(){var t,e,i,s;var r=this,o=r.chart;this.drawEmpty(),r.group&&!o.styledMode&&r.group.shadow(r.options.shadow),r.points.forEach(function(n){var a={};e=n.graphic,!n.isNull&&e?(s=n.shapeArgs,t=n.getTranslate(),o.styledMode||(i=r.pointAttribs(n,n.selected&&\"select\")),n.delayedRendering?(e.setRadialReference(r.center).attr(s).attr(t),o.styledMode||e.attr(i).attr({\"stroke-linejoin\":\"round\"}),n.delayedRendering=!1):(e.setRadialReference(r.center),o.styledMode||g(!0,a,i),g(!0,a,s,t),e.animate(a)),e.attr({visibility:n.visible?\"inherit\":\"hidden\"}),e.addClass(n.getClassName(),!0)):e&&(n.graphic=e.destroy());});}},{key:\"sortByAngle\",value:function sortByAngle(t,e){t.sort(function(t,i){return void 0!==t.angle&&(i.angle-t.angle)*e;});}},{key:\"translate\",value:function translate(t){u(this,\"translate\"),this.generatePoints();var e=this.options,i=e.slicedOffset,s=l(e.startAngle,e.endAngle),r=this.startAngleRad=s.start,o=(this.endAngleRad=s.end)-r,n=this.points,a=e.ignoreHiddenPoint,h=n.length,d,c,p,g,f,_m6,x,y=0;for(t||(this.center=t=this.getCenter()),_m6=0;_m6<h;_m6++){x=n[_m6],d=r+y*o,x.isValid()&&(!a||x.visible)&&(y+=x.percentage/100),c=r+y*o;var _e146={x:t[0],y:t[1],r:t[2]/2,innerR:t[3]/2,start:Math.round(1e3*d)/1e3,end:Math.round(1e3*c)/1e3};x.shapeType=\"arc\",x.shapeArgs=_e146,(p=(c+d)/2)>1.5*Math.PI?p-=2*Math.PI:p<-Math.PI/2&&(p+=2*Math.PI),x.slicedTranslation={translateX:Math.round(Math.cos(p)*i),translateY:Math.round(Math.sin(p)*i)},g=Math.cos(p)*t[2]/2,f=Math.sin(p)*t[2]/2,x.tooltipPos=[t[0]+.7*g,t[1]+.7*f],x.half=p<-Math.PI/2||p>Math.PI/2?1:0,x.angle=p;}u(this,\"afterTranslate\");}},{key:\"updateTotals\",value:function updateTotals(){var t=this.points,e=t.length,i=this.options.ignoreHiddenPoint,s,r,o=0;for(s=0;s<e;s++)(r=t[s]).isValid()&&(!i||r.visible)&&(o+=r.y);for(s=0,this.total=o;s<e;s++)(r=t[s]).percentage=o>0&&(r.visible||!i)?r.y/o*100:0,r.total=o;}}]);return m;}(o);return m.defaultOptions=g(o.defaultOptions,r),p(m.prototype,{axisTypes:[],directTouch:!0,drawGraph:void 0,drawTracker:e.prototype.drawTracker,getCenter:t.getCenter,getSymbol:d,invertible:!1,isCartesian:!1,noSharedTooltip:!0,pointAttribs:e.prototype.pointAttribs,pointClass:s,requireSorting:!1,searchPoint:d,trackerGroups:[\"group\",\"dataLabelsGroup\"]}),n.registerSeriesType(\"pie\",m),m;}),i(e,\"Series/Pie/PieDataLabel.js\",[e[\"Core/Series/DataLabel.js\"],e[\"Core/Globals.js\"],e[\"Core/Renderer/RendererUtilities.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Core/Utilities.js\"]],function(t,e,i,s,r){var o;var n=e.composed,a=e.noop,h=i.distribute,l=s.series,d=r.arrayMax,c=r.clamp,p=r.defined,u=r.pick,g=r.pushUnique,f=r.relativeLength;return function(e){var i={radialDistributionY:function radialDistributionY(t,e){var _e$dataLabelPosition;return(((_e$dataLabelPosition=e.dataLabelPosition)===null||_e$dataLabelPosition===void 0?void 0:_e$dataLabelPosition.top)||0)+t.distributeBox.pos;},radialDistributionX:function radialDistributionX(t,e,i,s,r){var o=r.dataLabelPosition;return t.getX(i<((o===null||o===void 0?void 0:o.top)||0)+2||i>((o===null||o===void 0?void 0:o.bottom)||0)-2?s:i,e.half,e,r);},justify:function justify(t,e,i,s){var _e$dataLabelPosition2;return s[0]+(t.half?-1:1)*(i+(((_e$dataLabelPosition2=e.dataLabelPosition)===null||_e$dataLabelPosition2===void 0?void 0:_e$dataLabelPosition2.distance)||0));},alignToPlotEdges:function alignToPlotEdges(t,e,i,s){var r=t.getBBox().width;return e?r+s:i-r-s;},alignToConnectors:function alignToConnectors(t,e,i,s){var r=0,o;return t.forEach(function(t){(o=t.dataLabel.getBBox().width)>r&&(r=o);}),e?r+s:i-r-s;}};function s(t,e){var i=this.center,s=this.options,r=i[2]/2,o=t.angle||0,n=Math.cos(o),a=Math.sin(o),h=i[0]+n*r,l=i[1]+a*r,d=Math.min((s.slicedOffset||0)+(s.borderWidth||0),e/5);return{natural:{x:h+n*e,y:l+a*e},computed:{},alignment:e<0?\"center\":t.half?\"right\":\"left\",connectorPosition:{breakAt:{x:h+n*d,y:l+a*d},touchingSliceAt:{x:h,y:l}},distance:e};}function r(){var _t$hasDataLabels,_this48=this;var t=this,e=t.points,i=t.chart,s=i.plotWidth,r=i.plotHeight,o=i.plotLeft,n=Math.round(i.chartWidth/3),a=t.center,c=a[2]/2,g=a[1],m=[[],[]],x=[0,0,0,0],y=t.dataLabelPositioners,b,v,S,C=0;t.visible&&((_t$hasDataLabels=t.hasDataLabels)===null||_t$hasDataLabels===void 0?void 0:_t$hasDataLabels.call(t))&&(e.forEach(function(t){(t.dataLabels||[]).forEach(function(t){t.shortened&&(t.attr({width:\"auto\"}).css({width:\"auto\",textOverflow:\"clip\"}),t.shortened=!1);});}),l.prototype.drawDataLabels.apply(t),e.forEach(function(t){(t.dataLabels||[]).forEach(function(e,i){var _r$style;var s=a[2]/2,r=e.options,o=f((r===null||r===void 0?void 0:r.distance)||0,s);0===i&&m[t.half].push(t),!p(r===null||r===void 0?void 0:(_r$style=r.style)===null||_r$style===void 0?void 0:_r$style.width)&&e.getBBox().width>n&&(e.css({width:Math.round(.7*n)+\"px\"}),e.shortened=!0),e.dataLabelPosition=_this48.getDataLabelPosition(t,o),C=Math.max(C,o);});}),m.forEach(function(e,n){var l=e.length,d=[],f,m,b=0,k;l&&(t.sortByAngle(e,n-.5),C>0&&(f=Math.max(0,g-c-C),m=Math.min(g+c+C,i.plotHeight),e.forEach(function(t){(t.dataLabels||[]).forEach(function(e){var _e$dataLabelPosition3;var s=e.dataLabelPosition;s&&s.distance>0&&(s.top=Math.max(0,g-c-s.distance),s.bottom=Math.min(g+c+s.distance,i.plotHeight),b=e.getBBox().height||21,e.lineHeight=i.renderer.fontMetrics(e.text||e).h+2*e.padding,t.distributeBox={target:(((_e$dataLabelPosition3=e.dataLabelPosition)===null||_e$dataLabelPosition3===void 0?void 0:_e$dataLabelPosition3.natural.y)||0)-s.top+e.lineHeight/2,size:b,rank:t.y},d.push(t.distributeBox));});}),h(d,k=m+b-f,k/5)),e.forEach(function(i){(i.dataLabels||[]).forEach(function(h){var l=h.options||{},g=i.distributeBox,f=h.dataLabelPosition,m=(f===null||f===void 0?void 0:f.natural.y)||0,b=l.connectorPadding||0,C=h.lineHeight||21,k=(C-h.getBBox().height)/2,M=0,w=m,T=\"inherit\";if(f){if(d&&p(g)&&f.distance>0&&(void 0===g.pos?T=\"hidden\":(S=g.size,w=y.radialDistributionY(i,h))),l.justify)M=y.justify(i,h,c,a);else switch(l.alignTo){case\"connectors\":M=y.alignToConnectors(e,n,s,o);break;case\"plotEdges\":M=y.alignToPlotEdges(h,n,s,o);break;default:M=y.radialDistributionX(t,i,w-k,m,h);}if(f.attribs={visibility:T,align:f.alignment},f.posAttribs={x:M+(l.x||0)+({left:b,right:-b}[f.alignment]||0),y:w+(l.y||0)-C/2},f.computed.x=M,f.computed.y=w-k,u(l.crop,!0)){var _t155;M-(v=h.getBBox().width)<b&&1===n?(_t155=Math.round(v-M+b),x[3]=Math.max(_t155,x[3])):M+v>s-b&&0===n&&(_t155=Math.round(M+v-s+b),x[1]=Math.max(_t155,x[1])),w-S/2<0?x[0]=Math.max(Math.round(-w+S/2),x[0]):w+S/2>r&&(x[2]=Math.max(Math.round(w+S/2-r),x[2])),f.sideOverflow=_t155;}}});}));}),(0===d(x)||this.verifyDataLabelOverflow(x))&&(this.placeDataLabels(),this.points.forEach(function(e){(e.dataLabels||[]).forEach(function(s){var _ref21=s.options||{},r=_ref21.connectorColor,_ref21$connectorWidth=_ref21.connectorWidth,o=_ref21$connectorWidth===void 0?1:_ref21$connectorWidth,n=s.dataLabelPosition;if(o){var _n$attribs;var _a23;b=s.connector,n&&n.distance>0?(_a23=!b,b||(s.connector=b=i.renderer.path().addClass(\"highcharts-data-label-connector  highcharts-color-\"+e.colorIndex+(e.className?\" \"+e.className:\"\")).add(t.dataLabelsGroup)),i.styledMode||b.attr({\"stroke-width\":o,stroke:r||e.color||\"#666666\"}),b[_a23?\"attr\":\"animate\"]({d:e.getConnectorPath(s)}),b.attr({visibility:(_n$attribs=n.attribs)===null||_n$attribs===void 0?void 0:_n$attribs.visibility})):b&&(s.connector=b.destroy());}});})));}function o(){this.points.forEach(function(t){(t.dataLabels||[]).forEach(function(t){var _t$options7;var e=t.dataLabelPosition;e?(e.sideOverflow&&(t.css({width:Math.max(t.getBBox().width-e.sideOverflow,0)+\"px\",textOverflow:(((_t$options7=t.options)===null||_t$options7===void 0?void 0:_t$options7.style)||{}).textOverflow||\"ellipsis\"}),t.shortened=!0),t.attr(e.attribs),t[t.moved?\"animate\":\"attr\"](e.posAttribs),t.moved=!0):t&&t.attr({y:-9999});}),delete t.distributeBox;},this);}function m(t){var e=this.center,i=this.options,s=i.center,r=i.minSize||80,o=r,n=null!==i.size;return!n&&(null!==s[0]?o=Math.max(e[2]-Math.max(t[1],t[3]),r):(o=Math.max(e[2]-t[1]-t[3],r),e[0]+=(t[3]-t[1])/2),null!==s[1]?o=c(o,r,e[2]-Math.max(t[0],t[2])):(o=c(o,r,e[2]-t[0]-t[2]),e[1]+=(t[0]-t[2])/2),o<e[2]?(e[2]=o,e[3]=Math.min(i.thickness?Math.max(0,o-2*i.thickness):Math.max(0,f(i.innerSize||0,o)),o),this.translate(e),this.drawDataLabels&&this.drawDataLabels()):n=!0),n;}e.compose=function(e){if(t.compose(l),g(n,\"PieDataLabel\")){var _t156=e.prototype;_t156.dataLabelPositioners=i,_t156.alignDataLabel=a,_t156.drawDataLabels=r,_t156.getDataLabelPosition=s,_t156.placeDataLabels=o,_t156.verifyDataLabelOverflow=m;}};}(o||(o={})),o;}),i(e,\"Core/Geometry/GeometryUtilities.js\",[],function(){var t,e;return(e=t||(t={})).getCenterOfPoints=function(t){var e=t.reduce(function(t,e){return t.x+=e.x,t.y+=e.y,t;},{x:0,y:0});return{x:e.x/t.length,y:e.y/t.length};},e.getDistanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));},e.getAngleBetweenPoints=function(t,e){return Math.atan2(e.x-t.x,e.y-t.y);},e.pointInPolygon=function(_ref22,i){var t=_ref22.x,e=_ref22.y;var s=i.length,r,o,n=!1;for(r=0,o=s-1;r<s;o=r++){var _i$r=_slicedToArray(i[r],2),_s101=_i$r[0],a=_i$r[1],_i$o=_slicedToArray(i[o],2),h=_i$o[0],l=_i$o[1];a>e!=l>e&&t<(h-_s101)*(e-a)/(l-a)+_s101&&(n=!n);}return n;},t;}),i(e,\"Extensions/OverlappingDataLabels.js\",[e[\"Core/Geometry/GeometryUtilities.js\"],e[\"Core/Utilities.js\"]],function(t,e){var i=t.pointInPolygon,s=e.addEvent,r=e.fireEvent,o=e.objectEach,n=e.pick;function a(t){var e=t.length,s=function s(t,e){return!(e.x>=t.x+t.width||e.x+e.width<=t.x||e.y>=t.y+t.height||e.y+e.height<=t.y);},o=function o(t,e){var _iteratorNormalCompletion24=true;var _didIteratorError24=false;var _iteratorError24=undefined;try{for(var _iterator24=t[Symbol.iterator](),_step24;!(_iteratorNormalCompletion24=(_step24=_iterator24.next()).done);_iteratorNormalCompletion24=true){var _s102=_step24.value;if(i({x:_s102[0],y:_s102[1]},e))return!0;}}catch(err){_didIteratorError24=true;_iteratorError24=err;}finally{try{if(!_iteratorNormalCompletion24&&_iterator24[\"return\"]!=null){_iterator24[\"return\"]();}}finally{if(_didIteratorError24){throw _iteratorError24;}}}return!1;},n,a,l,d,c,p=!1;for(var _i96=0;_i96<e;_i96++)(n=t[_i96])&&(n.oldOpacity=n.opacity,n.newOpacity=1,n.absoluteBox=function(t){if(t&&(!t.alignAttr||t.placed)){var _t$parentGroup2,_t$parentGroup3;var _e147=t.box?0:t.padding||0,_i97=t.alignAttr||{x:t.attr(\"x\"),y:t.attr(\"y\")},_s103=t.getBBox();return t.width=_s103.width,t.height=_s103.height,{x:_i97.x+(((_t$parentGroup2=t.parentGroup)===null||_t$parentGroup2===void 0?void 0:_t$parentGroup2.translateX)||0)+_e147,y:_i97.y+(((_t$parentGroup3=t.parentGroup)===null||_t$parentGroup3===void 0?void 0:_t$parentGroup3.translateY)||0)+_e147,width:(t.width||0)-2*_e147,height:(t.height||0)-2*_e147,polygon:_s103===null||_s103===void 0?void 0:_s103.polygon};}}(n));t.sort(function(t,e){return(e.labelrank||0)-(t.labelrank||0);});for(var _i98=0;_i98<e;++_i98){var _d10;d=(a=t[_i98])&&a.absoluteBox;var _r35=(_d10=d)===null||_d10===void 0?void 0:_d10.polygon;for(var _n48=_i98+1;_n48<e;++_n48){c=(l=t[_n48])&&l.absoluteBox;var _e148=!1;if(d&&c&&a!==l&&0!==a.newOpacity&&0!==l.newOpacity&&\"hidden\"!==a.visibility&&\"hidden\"!==l.visibility){var _t157=c.polygon;if(_r35&&_t157&&_r35!==_t157?o(_r35,_t157)&&(_e148=!0):s(d,c)&&(_e148=!0),_e148){var _t158=a.labelrank<l.labelrank?a:l,_e149=_t158.text;_t158.newOpacity=0,(_e149===null||_e149===void 0?void 0:_e149.element.querySelector(\"textPath\"))&&_e149.hide();}}}}var _iteratorNormalCompletion25=true;var _didIteratorError25=false;var _iteratorError25=undefined;try{for(var _iterator25=t[Symbol.iterator](),_step25;!(_iteratorNormalCompletion25=(_step25=_iterator25.next()).done);_iteratorNormalCompletion25=true){var _e150=_step25.value;h(_e150,this)&&(p=!0);}}catch(err){_didIteratorError25=true;_iteratorError25=err;}finally{try{if(!_iteratorNormalCompletion25&&_iterator25[\"return\"]!=null){_iterator25[\"return\"]();}}finally{if(_didIteratorError25){throw _iteratorError25;}}}p&&r(this,\"afterHideAllOverlappingLabels\");}function h(t,e){var i,s,o=!1;return t&&(s=t.newOpacity,t.oldOpacity!==s&&(t.hasClass(\"highcharts-data-label\")?(t[s?\"removeClass\":\"addClass\"](\"highcharts-data-label-hidden\"),i=function i(){e.styledMode||t.css({pointerEvents:s?\"auto\":\"none\"});},o=!0,t[t.isOld?\"animate\":\"attr\"]({opacity:s},void 0,i),r(e,\"afterHideOverlappingLabel\")):t.attr({opacity:s})),t.isOld=!0),o;}function l(){var t=this,e=[];var _iteratorNormalCompletion26=true;var _didIteratorError26=false;var _iteratorError26=undefined;try{for(var _iterator26=(t.labelCollectors||[])[Symbol.iterator](),_step26;!(_iteratorNormalCompletion26=(_step26=_iterator26.next()).done);_iteratorNormalCompletion26=true){var _i99=_step26.value;e=e.concat(_i99());}}catch(err){_didIteratorError26=true;_iteratorError26=err;}finally{try{if(!_iteratorNormalCompletion26&&_iterator26[\"return\"]!=null){_iterator26[\"return\"]();}}finally{if(_didIteratorError26){throw _iteratorError26;}}}var _iteratorNormalCompletion27=true;var _didIteratorError27=false;var _iteratorError27=undefined;try{for(var _iterator27=(t.yAxis||[])[Symbol.iterator](),_step27;!(_iteratorNormalCompletion27=(_step27=_iterator27.next()).done);_iteratorNormalCompletion27=true){var _i100=_step27.value;_i100.stacking&&_i100.options.stackLabels&&!_i100.options.stackLabels.allowOverlap&&o(_i100.stacking.stacks,function(t){o(t,function(t){t.label&&e.push(t.label);});});}}catch(err){_didIteratorError27=true;_iteratorError27=err;}finally{try{if(!_iteratorNormalCompletion27&&_iterator27[\"return\"]!=null){_iterator27[\"return\"]();}}finally{if(_didIteratorError27){throw _iteratorError27;}}}var _iteratorNormalCompletion28=true;var _didIteratorError28=false;var _iteratorError28=undefined;try{for(var _iterator28=(t.series||[])[Symbol.iterator](),_step28;!(_iteratorNormalCompletion28=(_step28=_iterator28.next()).done);_iteratorNormalCompletion28=true){var _i101$hasDataLabels;var _i101=_step28.value;if(_i101.visible&&(_i101$hasDataLabels=_i101.hasDataLabels)!==null&&_i101$hasDataLabels!==void 0&&_i101$hasDataLabels.call(_i101)){var _s104=function _s104(i){var _iteratorNormalCompletion29=true;var _didIteratorError29=false;var _iteratorError29=undefined;try{var _loop3=function _loop3(){var s=_step29.value;s.visible&&(s.dataLabels||[]).forEach(function(i){var _s$shapeArgs,_r$allowOverlap;var r=i.options||{};i.labelrank=n(r.labelrank,s.labelrank,(_s$shapeArgs=s.shapeArgs)===null||_s$shapeArgs===void 0?void 0:_s$shapeArgs.height),((_r$allowOverlap=r.allowOverlap)!==null&&_r$allowOverlap!==void 0?_r$allowOverlap:Number(r.distance)>0)?(i.oldOpacity=i.opacity,i.newOpacity=1,h(i,t)):e.push(i);});};for(var _iterator29=i[Symbol.iterator](),_step29;!(_iteratorNormalCompletion29=(_step29=_iterator29.next()).done);_iteratorNormalCompletion29=true){_loop3();}}catch(err){_didIteratorError29=true;_iteratorError29=err;}finally{try{if(!_iteratorNormalCompletion29&&_iterator29[\"return\"]!=null){_iterator29[\"return\"]();}}finally{if(_didIteratorError29){throw _iteratorError29;}}}};_s104(_i101.nodes||[]),_s104(_i101.points);}}}catch(err){_didIteratorError28=true;_iteratorError28=err;}finally{try{if(!_iteratorNormalCompletion28&&_iterator28[\"return\"]!=null){_iterator28[\"return\"]();}}finally{if(_didIteratorError28){throw _iteratorError28;}}}this.hideOverlappingLabels(e);}return{compose:function compose(t){var e=t.prototype;e.hideOverlappingLabels||(e.hideOverlappingLabels=a,s(t,\"render\",l));}};}),i(e,\"Extensions/BorderRadius.js\",[e[\"Core/Defaults.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,i){var s=t.defaultOptions,r=e.noop,o=i.addEvent,n=i.extend,a=i.isObject,h=i.merge,l=i.relativeLength,d={radius:0,scope:\"stack\",where:void 0},c=r,p=r;function u(t,e,i,s){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var o=c(t,e,i,s,r),_r$innerR=r.innerR,n=_r$innerR===void 0?0:_r$innerR,_r$r=r.r,a=_r$r===void 0?i:_r$r,_r$start=r.start,h=_r$start===void 0?0:_r$start,_r$end=r.end,d=_r$end===void 0?0:_r$end;if(r.open||!r.borderRadius)return o;var p=d-h,g=Math.sin(p/2),f=Math.max(Math.min(l(r.borderRadius||0,a-n),(a-n)/2,a*g/(1+g)),0),m=Math.min(f,p/Math.PI*2*n),x=o.length-1;for(;x--;)!function(t,e,i){var s,r,o;var n=t[e],a=t[e+1];if(\"Z\"===a[0]&&(a=t[0]),(\"M\"===n[0]||\"L\"===n[0])&&\"A\"===a[0]?(s=n,r=a,o=!0):\"A\"===n[0]&&(\"M\"===a[0]||\"L\"===a[0])&&(s=a,r=n),s&&r&&r.params){var _n49=r[1],_a24=r[5],_h17=r.params,_l12=_h17.start,_d11=_h17.end,_c11=_h17.cx,_p13=_h17.cy,_u6=_a24?_n49-i:_n49+i,_g8=_u6?Math.asin(i/_u6):0,_f3=_a24?_g8:-_g8,_m7=Math.cos(_g8)*_u6;o?(_h17.start=_l12+_f3,s[1]=_c11+_m7*Math.cos(_l12),s[2]=_p13+_m7*Math.sin(_l12),t.splice(e+1,0,[\"A\",i,i,0,0,1,_c11+_n49*Math.cos(_h17.start),_p13+_n49*Math.sin(_h17.start)])):(_h17.end=_d11-_f3,r[6]=_c11+_n49*Math.cos(_h17.end),r[7]=_p13+_n49*Math.sin(_h17.end),t.splice(e+1,0,[\"A\",i,i,0,0,1,_c11+_m7*Math.cos(_d11),_p13+_m7*Math.sin(_d11)])),r[4]=Math.abs(_h17.end-_h17.start)<Math.PI?0:1;}}(o,x,x>1?m:f);return o;}function g(){if(this.options.borderRadius&&!(this.chart.is3d&&this.chart.is3d())){var _s$plotOptions,_s$plotOptions$this$t;var _t159=this.options,_e151=this.yAxis,_i102=\"percent\"===_t159.stacking,_r36=(_s$plotOptions=s.plotOptions)===null||_s$plotOptions===void 0?void 0:(_s$plotOptions$this$t=_s$plotOptions[this.type])===null||_s$plotOptions$this$t===void 0?void 0:_s$plotOptions$this$t.borderRadius,_o59=f(_t159.borderRadius,a(_r36)?_r36:{}),_h18=_e151.options.reversed;var _iteratorNormalCompletion30=true;var _didIteratorError30=false;var _iteratorError30=undefined;try{for(var _iterator30=this.points[Symbol.iterator](),_step30;!(_iteratorNormalCompletion30=(_step30=_iterator30.next()).done);_iteratorNormalCompletion30=true){var _s105=_step30.value;var _r37=_s105.shapeArgs;if(\"roundedRect\"===_s105.shapeType&&_r37){var _r37$width=_r37.width,_a25=_r37$width===void 0?0:_r37$width,_r37$height=_r37.height,_d12=_r37$height===void 0?0:_r37$height,_r37$y=_r37.y,_c12=_r37$y===void 0?0:_r37$y,_p14=_c12,_u7=_d12;if(\"stack\"===_o59.scope&&_s105.stackTotal){var _r38=_e151.translate(_i102?100:_s105.stackTotal,!1,!0,!1,!0),_o60=_e151.translate(_t159.threshold||0,!1,!0,!1,!0),_n50=this.crispCol(0,Math.min(_r38,_o60),0,Math.abs(_r38-_o60));_p14=_n50.y,_u7=_n50.height;}var _g9=(_s105.negative?-1:1)*(_h18?-1:1)==-1,_f4=_o59.where;!_f4&&this.is(\"waterfall\")&&Math.abs((_s105.yBottom||0)-(this.translatedThreshold||0))>this.borderWidth&&(_f4=\"all\"),_f4||(_f4=\"end\");var _m8=Math.min(l(_o59.radius,_a25),_a25/2,\"all\"===_f4?_d12/2:1/0)||0;\"end\"===_f4&&(_g9&&(_p14-=_m8),_u7+=_m8),n(_r37,{brBoxHeight:_u7,brBoxY:_p14,r:_m8});}}}catch(err){_didIteratorError30=true;_iteratorError30=err;}finally{try{if(!_iteratorNormalCompletion30&&_iterator30[\"return\"]!=null){_iterator30[\"return\"]();}}finally{if(_didIteratorError30){throw _iteratorError30;}}}}}function f(t,e){return a(t)||(t={radius:t||0}),h(d,e,t);}function m(){var t=f(this.options.borderRadius);var _iteratorNormalCompletion31=true;var _didIteratorError31=false;var _iteratorError31=undefined;try{for(var _iterator31=this.points[Symbol.iterator](),_step31;!(_iteratorNormalCompletion31=(_step31=_iterator31.next()).done);_iteratorNormalCompletion31=true){var _e152=_step31.value;var _i103=_e152.shapeArgs;_i103&&(_i103.borderRadius=l(t.radius,(_i103.r||0)-(_i103.innerR||0)));}}catch(err){_didIteratorError31=true;_iteratorError31=err;}finally{try{if(!_iteratorNormalCompletion31&&_iterator31[\"return\"]!=null){_iterator31[\"return\"]();}}finally{if(_didIteratorError31){throw _iteratorError31;}}}}function x(t,e,i,s){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var o=p(t,e,i,s,r),_r$r2=r.r,n=_r$r2===void 0?0:_r$r2,_r$brBoxHeight=r.brBoxHeight,a=_r$brBoxHeight===void 0?s:_r$brBoxHeight,_r$brBoxY=r.brBoxY,h=_r$brBoxY===void 0?e:_r$brBoxY,l=e-h,d=h+a-(e+s),c=l-n>-.1?0:n,u=d-n>-.1?0:n,g=Math.max(c&&l,0),f=Math.max(u&&d,0),m=[t+c,e],y=[t+i-c,e],b=[t+i,e+c],v=[t+i,e+s-u],S=[t+i-u,e+s],C=[t+u,e+s],k=[t,e+s-u],M=[t,e+c],w=function w(t,e){return Math.sqrt(Math.pow(t,2)-Math.pow(e,2));};if(g){var _t160=w(c,c-g);m[0]-=_t160,y[0]+=_t160,b[1]=M[1]=e+c-g;}if(s<c-g){var _r39=w(c,c-g-s);b[0]=v[0]=t+i-c+_r39,S[0]=Math.min(b[0],S[0]),C[0]=Math.max(v[0],C[0]),k[0]=M[0]=t+c-_r39,b[1]=M[1]=e+s;}if(f){var _t161=w(u,u-f);S[0]+=_t161,C[0]-=_t161,v[1]=k[1]=e+s-u+f;}if(s<u-f){var _r40=w(u,u-f-s);b[0]=v[0]=t+i-u+_r40,y[0]=Math.min(b[0],y[0]),m[0]=Math.max(v[0],m[0]),k[0]=M[0]=t+u-_r40,v[1]=k[1]=e;}return o.length=0,o.push([\"M\"].concat(m),[\"L\"].concat(y),[\"A\",c,c,0,0,1].concat(b),[\"L\"].concat(v),[\"A\",u,u,0,0,1].concat(S),[\"L\"].concat(C),[\"A\",u,u,0,0,1].concat(k),[\"L\"].concat(M),[\"A\",c,c,0,0,1].concat(m),[\"Z\"]),o;}return{compose:function compose(t,e,i){var s=t.types.pie;if(!e.symbolCustomAttribs.includes(\"borderRadius\")){var _r41=i.prototype.symbols;o(t,\"afterColumnTranslate\",g,{order:9}),o(s,\"afterTranslate\",m),e.symbolCustomAttribs.push(\"borderRadius\",\"brBoxHeight\",\"brBoxY\"),c=_r41.arc,p=_r41.roundedRect,_r41.arc=u,_r41.roundedRect=x;}},optionsToObject:f};}),i(e,\"Core/Responsive.js\",[e[\"Core/Utilities.js\"]],function(t){var e;var i=t.diffObjects,s=t.extend,r=t.find,o=t.merge,n=t.pick,a=t.uniqueKey;return function(t){function e(t,e){var i=t.condition;(i.callback||function(){return this.chartWidth<=n(i.maxWidth,Number.MAX_VALUE)&&this.chartHeight<=n(i.maxHeight,Number.MAX_VALUE)&&this.chartWidth>=n(i.minWidth,0)&&this.chartHeight>=n(i.minHeight,0);}).call(this)&&e.push(t._id);}function h(t,e){var _this49=this;var s=this.options.responsive,n=this.currentResponsive,h=[],l;!e&&s&&s.rules&&s.rules.forEach(function(t){void 0===t._id&&(t._id=a()),_this49.matchResponsiveRule(t,h);},this);var d=o.apply(void 0,_toConsumableArray(h.map(function(t){return r((s||{}).rules||[],function(e){return e._id===t;});}).map(function(t){return t&&t.chartOptions;})));d.isResponsiveOptions=!0,h=h.toString()||void 0;var c=n&&n.ruleIds;h===c||(n&&(this.currentResponsive=void 0,this.updatingResponsive=!0,this.update(n.undoOptions,t,!0),this.updatingResponsive=!1),h?((l=i(d,this.options,!0,this.collectionsWithUpdate)).isResponsiveOptions=!0,this.currentResponsive={ruleIds:h,mergedOptions:d,undoOptions:l},this.updatingResponsive||this.update(d,t,!0)):this.currentResponsive=void 0);}t.compose=function(t){var i=t.prototype;return i.matchResponsiveRule||s(i,{matchResponsiveRule:e,setResponsive:h}),t;};}(e||(e={})),e;}),i(e,\"masters/highcharts.src.js\",[e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"],e[\"Core/Defaults.js\"],e[\"Core/Animation/Fx.js\"],e[\"Core/Animation/AnimationUtilities.js\"],e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Templating.js\"],e[\"Core/Renderer/RendererRegistry.js\"],e[\"Core/Renderer/RendererUtilities.js\"],e[\"Core/Renderer/SVG/SVGElement.js\"],e[\"Core/Renderer/SVG/SVGRenderer.js\"],e[\"Core/Renderer/HTML/HTMLElement.js\"],e[\"Core/Axis/Axis.js\"],e[\"Core/Axis/DateTimeAxis.js\"],e[\"Core/Axis/LogarithmicAxis.js\"],e[\"Core/Axis/PlotLineOrBand/PlotLineOrBand.js\"],e[\"Core/Axis/Tick.js\"],e[\"Core/Tooltip.js\"],e[\"Core/Series/Point.js\"],e[\"Core/Pointer.js\"],e[\"Core/Legend/Legend.js\"],e[\"Core/Legend/LegendSymbol.js\"],e[\"Core/Chart/Chart.js\"],e[\"Extensions/ScrollablePlotArea.js\"],e[\"Core/Axis/Stacking/StackingAxis.js\"],e[\"Core/Axis/Stacking/StackItem.js\"],e[\"Core/Series/Series.js\"],e[\"Core/Series/SeriesRegistry.js\"],e[\"Series/Column/ColumnDataLabel.js\"],e[\"Series/Pie/PieDataLabel.js\"],e[\"Core/Series/DataLabel.js\"],e[\"Extensions/OverlappingDataLabels.js\"],e[\"Extensions/BorderRadius.js\"],e[\"Core/Responsive.js\"],e[\"Core/Color/Color.js\"],e[\"Core/Time.js\"]],function(t,e,i,s,r,o,n,a,h,l,d,c,p,u,g,f,m,x,y,b,v,S,C,k,M,w,T,A,P,L,O,D,E,I,j,B){return t.AST=o,t.Axis=p,t.Chart=C,t.Color=j,t.DataLabel=O,t.Fx=s,t.HTMLElement=c,t.Legend=v,t.LegendSymbol=S,t.OverlappingDataLabels=t.OverlappingDataLabels||D,t.PlotLineOrBand=f,t.Point=y,t.Pointer=b,t.RendererRegistry=a,t.Series=T,t.SeriesRegistry=A,t.StackItem=w,t.SVGElement=l,t.SVGRenderer=d,t.Templating=n,t.Tick=m,t.Time=B,t.Tooltip=x,t.animate=r.animate,t.animObject=r.animObject,t.chart=C.chart,t.color=j.parse,t.dateFormat=n.dateFormat,t.defaultOptions=i.defaultOptions,t.distribute=h.distribute,t.format=n.format,t.getDeferredAnimation=r.getDeferredAnimation,t.getOptions=i.getOptions,t.numberFormat=n.numberFormat,t.seriesType=A.seriesType,t.setAnimation=r.setAnimation,t.setOptions=i.setOptions,t.stop=r.stop,t.time=i.defaultTime,t.timers=s.timers,E.compose(t.Series,t.SVGElement,t.SVGRenderer),P.compose(t.Series.types.column),O.compose(t.Series),u.compose(t.Axis),c.compose(t.SVGRenderer),v.compose(t.Chart),g.compose(t.Axis),D.compose(t.Chart),L.compose(t.Series.types.pie),f.compose(t.Chart,t.Axis),b.compose(t.Chart),I.compose(t.Chart),k.compose(t.Axis,t.Chart,t.Series),M.compose(t.Axis,t.Chart,t.Series),x.compose(t.Pointer),e.extend(t,e),t;}),e[\"masters/highcharts.src.js\"]._modules=e,e[\"masters/highcharts.src.js\"];});!/**\n * Highcharts JS v11.4.8 (2024-08-29)\n *\n * (c) 2009-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */function(e){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(e[\"default\"]=e,module.exports=e):\"function\"==typeof define&&define.amd?define(\"highcharts/modules/draggable-points\",[\"highcharts\"],function(t){return e(t),e.Highcharts=t,e;}):e(\"undefined\"!=typeof Highcharts?Highcharts:void 0);}(function(e){\"use strict\";var t=e?e._modules:{};function r(t,r,o,a){t.hasOwnProperty(r)||(t[r]=a.apply(null,o),\"function\"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent(\"HighchartsModuleLoaded\",{detail:{path:r,module:t[r]}})));}r(t,\"Extensions/DraggablePoints/DragDropUtilities.js\",[t[\"Core/Utilities.js\"]],function(e){var t=e.addEvent;return{addEvents:function addEvents(e,r,o,a){var i=r.map(function(r){return t(e,r,o,a);});return function(){var _iteratorNormalCompletion32=true;var _didIteratorError32=false;var _iteratorError32=undefined;try{for(var _iterator32=i[Symbol.iterator](),_step32;!(_iteratorNormalCompletion32=(_step32=_iterator32.next()).done);_iteratorNormalCompletion32=true){var _e153=_step32.value;_e153();}}catch(err){_didIteratorError32=true;_iteratorError32=err;}finally{try{if(!_iteratorNormalCompletion32&&_iterator32[\"return\"]!=null){_iterator32[\"return\"]();}}finally{if(_didIteratorError32){throw _iteratorError32;}}}};},countProps:function countProps(e){return Object.keys(e).length;},getFirstProp:function getFirstProp(e){for(var _t162 in e)if(Object.hasOwnProperty.call(e,_t162))return e[_t162];},getNormalizedEvent:function getNormalizedEvent(e,t){var _t$pointer2;return(void 0===e.chartX||void 0===e.chartY)&&((_t$pointer2=t.pointer)===null||_t$pointer2===void 0?void 0:_t$pointer2.normalize(e))||e;}};}),r(t,\"Extensions/DraggablePoints/DragDropDefaults.js\",[],function(){return{dragSensitivity:2,dragHandle:{className:\"highcharts-drag-handle\",color:\"#fff\",lineColor:\"rgba(0, 0, 0, 0.6)\",lineWidth:1,zIndex:901},guideBox:{\"default\":{className:\"highcharts-drag-box-default\",lineWidth:1,lineColor:\"#888\",color:\"rgba(0, 0, 0, 0.1)\",cursor:\"move\",zIndex:900}}};}),r(t,\"Extensions/DraggablePoints/DraggableChart.js\",[t[\"Core/Animation/AnimationUtilities.js\"],t[\"Extensions/DraggablePoints/DragDropUtilities.js\"],t[\"Extensions/DraggablePoints/DragDropDefaults.js\"],t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t,r,o,a){var i=e.animObject,s=t.addEvents,n=t.countProps,d=t.getFirstProp,l=t.getNormalizedEvent,g=o.doc,p=a.addEvent,h=a.merge,u=a.pick;function x(){var e=this.dragHandles||{};if(e){for(var _i104=0,_Object$keys=Object.keys(e);_i104<_Object$keys.length;_i104++){var _t163=_Object$keys[_i104];e[_t163].destroy&&e[_t163].destroy();}delete this.dragHandles;}}function c(e,t){var o=this.dragGuideBox,a=h(r.guideBox,t),i=h(a[\"default\"],a[e]);return o.attr({\"class\":i.className,stroke:i.lineColor,strokeWidth:i.lineWidth,fill:i.color,cursor:i.cursor,zIndex:i.zIndex}).css({pointerEvents:\"none\"});}function m(e){var t=this.options.chart||{},r=t.panKey&&t.panKey+\"Key\";return e[this.zooming.key&&this.zooming.key+\"Key\"]||e[r];}function f(e){return{left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\"}[e];}function D(e,t){var r;var o=function(e){var t=e.series,r=t.options.data||[],o=t.options.dragDrop.groupBy,a=[];if(t.boosted)for(var _e154=0,_o61=r.length;_e154<_o61;++_e154)a.push(new t.pointClass(t,r[_e154])),a[a.length-1].index=_e154;else a=t.points;return e.options[o]?a.filter(function(t){return t.options[o]===e.options[o];}):[e];}(t),a=t.series,i=a.chart;u(a.options.dragDrop&&a.options.dragDrop.liveRedraw,!0)||(i.dragGuideBox=r=a.getGuideBox(o),i.setGuideBoxState(\"default\",a.options.dragDrop.guideBox).add(a.group)),i.dragDropData={origin:function(e,t,r){var o={chartX:e.chartX,chartY:e.chartY,guideBox:r&&{x:r.attr(\"x\"),y:r.attr(\"y\"),width:r.attr(\"width\"),height:r.attr(\"height\")},points:{}};var _iteratorNormalCompletion33=true;var _didIteratorError33=false;var _iteratorError33=undefined;try{for(var _iterator33=t[Symbol.iterator](),_step33;!(_iteratorNormalCompletion33=(_step33=_iterator33.next()).done);_iteratorNormalCompletion33=true){var _r42=_step33.value;var _t164=_r42.series.dragDropProps||{},_a26={};for(var _i105=0,_Object$keys2=Object.keys(_t164);_i105<_Object$keys2.length;_i105++){var _o62=_Object$keys2[_i105];var _i106=_t164[_o62],_s106=_r42.series[_i106.axis+\"Axis\"];_a26[_o62]=_r42[_o62],_r42.series.chart.mapView&&_r42.plotX&&_r42.plotY?_a26[_o62+\"Offset\"]=\"x\"===_o62?_r42.plotX:_r42.plotY:_a26[_o62+\"Offset\"]=_s106.toPixels(_r42[_o62])-(_s106.horiz?e.chartX:e.chartY);}_a26.point=_r42,o.points[_r42.id]=_a26;}}catch(err){_didIteratorError33=true;_iteratorError33=err;}finally{try{if(!_iteratorNormalCompletion33&&_iterator33[\"return\"]!=null){_iterator33[\"return\"]();}}finally{if(_didIteratorError33){throw _iteratorError33;}}}return o;}(e,o,r),point:t,groupedPoints:o,isDragging:!0};}function y(e,t){var r=t.dragDropData;if(r&&r.isDragging&&r.draggedPastSensitivity&&r.point.series){var _o63=r.point,_a27=r.newPoints,_i107=n(_a27),_s107=1===_i107?d(_a27):null;t.dragHandles&&t.hideDragHandles(),e.preventDefault(),t.cancelClick=!0,_o63.firePointEvent(\"drop\",{origin:r.origin,chartX:e.chartX,chartY:e.chartY,newPoints:_a27,numNewPoints:_i107,newPoint:_s107&&_s107.newValues,newPointId:_s107&&_s107.point.id},function(){v(t);});}delete t.dragDropData,t.dragGuideBox&&(t.dragGuideBox.destroy(),delete t.dragGuideBox);}function P(){this.hasAddedDragDropEvents||function(e){var t=e.container;(function(e){var t=e.series?e.series.length:0;if(e.hasCartesianSeries&&!e.polar||e.mapView){for(;t--;)if(e.series[t].options.dragDrop&&function(e){var t;var r=[\"draggableX\",\"draggableY\"],o=e.dragDropProps||{};for(var _i108=0,_Object$keys3=Object.keys(o);_i108<_Object$keys3.length;_i108++){var _e155=_Object$keys3[_i108];(t=o[_e155]).optionName&&r.push(t.optionName);}var a=r.length;for(;a--;)if(e.options.dragDrop[r[a]])return!0;}(e.series[t]))return!0;}return!1;})(e)&&(s(t,[\"mousedown\",\"touchstart\"],function(t){(function(e,t){var r=t.hoverPoint,o=h(r&&r.series.options.dragDrop,r&&r.options.dragDrop),a=o.draggableX||!1,i=o.draggableY||!1;if(t.cancelClick=!1,!(!(a||i)||t.zoomOrPanKeyPressed(e))&&!t.hasDraggedAnnotation){if(t.dragDropData&&t.dragDropData.isDragging){y(e,t);return;}r&&function(e){var t,r,o;var a=e.series,i=a.chart,s=a.options.dragDrop||{},n=e.options&&e.options.dragDrop,d=a.dragDropProps;for(var _e156 in d)\"x\"===(t=d[_e156]).axis&&t.move?r=!0:\"y\"===t.axis&&t.move&&(o=!0);return(s.draggableX&&r||s.draggableY&&o)&&!(n&&!1===n.draggableX&&!1===n.draggableY)&&(!!(a.yAxis&&a.xAxis)||i.mapView);}(r)&&(t.mouseIsDown=!1,D(e,r),r.firePointEvent(\"dragStart\",e));}})(l(t,e),e);}),s(t,[\"mousemove\",\"touchmove\"],function(t){(function(e,t){if(t.zoomOrPanKeyPressed(e))return;var o=t.dragDropData,a,i,s,l=0,g;o&&o.isDragging&&o.point.series&&(i=(a=o.point).series.options.dragDrop,e.preventDefault(),o.draggedPastSensitivity||(o.draggedPastSensitivity=function(e,t,r){var o=t.dragDropData.origin,a=o.chartX,i=o.chartY,s=e.chartX,n=e.chartY;return Math.sqrt((s-a)*(s-a)+(n-i)*(n-i))>r;}(e,t,u(a.options.dragDrop&&a.options.dragDrop.dragSensitivity,i&&i.dragSensitivity,r.dragSensitivity))),o.draggedPastSensitivity&&(o.newPoints=function(e,t){var r=e.point,o=r.series,a=o.chart,i=h(o.options.dragDrop,r.options.dragDrop),s={},n=e.updateProp,d={},l=r.series.dragDropProps;for(var _e157 in l){var _t165=l[_e157];(!n||n===_e157&&_t165.resize&&(!_t165.optionName||!1!==i[_t165.optionName]))&&(n||_t165.move&&(\"x\"===_t165.axis&&i.draggableX||\"y\"===_t165.axis&&i.draggableY))&&(a.mapView?s[\"x\"===_e157?\"lon\":\"lat\"]=_t165:s[_e157]=_t165);}var _iteratorNormalCompletion34=true;var _didIteratorError34=false;var _iteratorError34=undefined;try{for(var _iterator34=(n?[r]:e.groupedPoints)[Symbol.iterator](),_step34;!(_iteratorNormalCompletion34=(_step34=_iterator34.next()).done);_iteratorNormalCompletion34=true){var _o64=_step34.value;d[_o64.id]={point:_o64,newValues:_o64.getDropValues(e.origin,t,s)};}}catch(err){_didIteratorError34=true;_iteratorError34=err;}finally{try{if(!_iteratorNormalCompletion34&&_iterator34[\"return\"]!=null){_iterator34[\"return\"]();}}finally{if(_didIteratorError34){throw _iteratorError34;}}}return d;}(o,e),g=1===(l=n(s=o.newPoints))?d(s):null,a.firePointEvent(\"drag\",{origin:o.origin,newPoints:o.newPoints,newPoint:g&&g.newValues,newPointId:g&&g.point.id,numNewPoints:l,chartX:e.chartX,chartY:e.chartY},function(){!function(e,t){var r=t.series,o=r.chart,a=o.dragDropData,i=h(r.options.dragDrop,t.options.dragDrop),s=i.draggableX,n=i.draggableY,d=a.origin,l=a.updateProp,g=e.chartX-d.chartX,p=e.chartY-d.chartY,x=g;o.inverted&&(g=-p,p=-x),u(i.liveRedraw,!0)?(v(o,!1),t.showDragHandles()):l?function(e,t,r){var o=e.series,a=o.chart,i=a.dragDropData,s=o.dragDropProps[i.updateProp],n=i.newPoints[e.id].newValues,d=\"function\"==typeof s.resizeSide?s.resizeSide(n,e):s.resizeSide;s.beforeResize&&s.beforeResize(a.dragGuideBox,n,e),function(e,t,r){var o;switch(t){case\"left\":o={x:e.attr(\"x\")+r.x,width:Math.max(1,e.attr(\"width\")-r.x)};break;case\"right\":o={width:Math.max(1,e.attr(\"width\")+r.x)};break;case\"top\":o={y:e.attr(\"y\")+r.y,height:Math.max(1,e.attr(\"height\")-r.y)};break;case\"bottom\":o={height:Math.max(1,e.attr(\"height\")+r.y)};}e.attr(o);}(a.dragGuideBox,\"x\"===s.axis&&o.xAxis.reversed||\"y\"===s.axis&&o.yAxis.reversed?f(d):d,{x:\"x\"===s.axis?t-(i.origin.prevdX||0):0,y:\"y\"===s.axis?r-(i.origin.prevdY||0):0});}(t,g,p):o.dragGuideBox.translate(s?g:0,n?p:0),d.prevdX=g,d.prevdY=p;}(e,a);})));})(l(t,e),e);},{passive:!1}),p(t,\"mouseleave\",function(t){y(l(t,e),e);}),e.unbindDragDropMouseUp=s(g,[\"mouseup\",\"touchend\"],function(t){y(l(t,e),e);},{passive:!1}),e.hasAddedDragDropEvents=!0,p(e,\"destroy\",function(){e.unbindDragDropMouseUp&&e.unbindDragDropMouseUp();}));}(this);}function v(e,t){var r;var o=e.dragDropData.newPoints,a=i(t);for(var _i109=0,_arr6=(e.isDragDropAnimating=!0,Object.keys(o));_i109<_arr6.length;_i109++){var _t166=_arr6[_i109];(r=o[_t166]).point.update(r.newValues,!1);}e.redraw(a),setTimeout(function(){delete e.isDragDropAnimating,e.hoverPoint&&!e.dragHandles&&e.hoverPoint.showDragHandles();},a.duration);}return{compose:function compose(e){var t=e.prototype;t.hideDragHandles||(t.hideDragHandles=x,t.setGuideBoxState=c,t.zoomOrPanKeyPressed=m,p(e,\"render\",P));},flipResizeSide:f,initDragDrop:D};}),r(t,\"Extensions/DraggablePoints/DragDropProps.js\",[t[\"Extensions/DraggablePoints/DraggableChart.js\"],t[\"Core/Utilities.js\"]],function(e,t){var r=e.flipResizeSide,o=t.isNumber,a=t.merge,i=t.pick,s={x:{axis:\"x\",move:!0},y:{axis:\"y\",move:!0}},n={x:{axis:\"x\",move:!0},y:{axis:\"y\",move:!1,resize:!0,beforeResize:function beforeResize(e,t,r){var a,s;var n=i(r.yBottom,r.series.translatedThreshold),d=e.attr(\"y\"),l=o(r.stackY)?r.stackY-(r.y||0):r.series.options.threshold||0,g=l+t.y;(r.series.yAxis.reversed?g<l:g>=l)?(a=e.attr(\"height\"),s=n?n-d-a:0,e.attr({height:Math.max(0,Math.round(a+s))})):e.attr({y:Math.round(d+(n?n-d:0))});},resizeSide:function resizeSide(e,t){var o=t.series.chart.dragHandles,a=e.y>=(t.series.options.threshold||0)?\"top\":\"bottom\",i=r(a);return o&&o[i]&&(o[i].destroy(),delete o[i]),a;},handlePositioner:function handlePositioner(e){var t=e.shapeArgs||e.graphic&&e.graphic.getBBox()||{},r=e.series.yAxis.reversed,o=e.series.options.threshold||0,a=e.y||0;return{x:t.x||0,y:!r&&a>=o||r&&a<o?t.y||0:(t.y||0)+(t.height||0)};},handleFormatter:function handleFormatter(e){var t=e.shapeArgs||{},r=t.r||0,o=t.width||0,a=o/2;return[[\"M\",r,0],[\"L\",a-5,0],[\"A\",1,1,0,0,0,a+5,0],[\"A\",1,1,0,0,0,a-5,0],[\"M\",a+5,0],[\"L\",o-r,0]];}}},d={x:n.x,low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x||0,y:e.lowPlot};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.q1;}},q1:{optionName:\"draggableQ1\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x||0,y:e.q1Plot};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.median&&e>=t.low;}},median:{axis:\"y\",move:!0},q3:{optionName:\"draggableQ3\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x||0,y:e.q3Plot};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.high&&e>=t.median;}},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x||0,y:e.highPlot};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e>=t.q3;}}},l={x:n.x,low:_objectSpread(_objectSpread({},d.low),{},{propValidate:function propValidate(e,t){return e<=t.high;}}),high:_objectSpread(_objectSpread({},d.high),{},{propValidate:function propValidate(e,t){return e>=t.low;}})},g={x:n.x,y:n.y,target:{optionName:\"draggableTarget\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function handlePositioner(e){var t=e.targetGraphic.getBBox();return{x:e.barX,y:t.y+t.height/2};},handleFormatter:n.y.handleFormatter}},p={x:n.x,low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x,y:e.plotLow};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.open&&e<=t.close;}},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x,y:e.plotHigh};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e>=t.open&&e>=t.close;}},open:{optionName:\"draggableOpen\",axis:\"y\",move:!0,resize:!0,resizeSide:function resizeSide(e){return e.open>=e.close?\"top\":\"bottom\";},handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x,y:e.plotOpen};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.high&&e>=t.low;}},close:{optionName:\"draggableClose\",axis:\"y\",move:!0,resize:!0,resizeSide:function resizeSide(e){return e.open>=e.close?\"bottom\":\"top\";},handlePositioner:function handlePositioner(e){return{x:e.shapeArgs.x,y:e.plotClose};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.high&&e>=t.low;}}},h={x:n.x,y:a(n.y,{handleFormatter:function handleFormatter(e){return e.isSum||e.isIntermediateSum?null:n.y.handleFormatter(e);}})},u={x:{axis:\"x\",move:!0},low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function handlePositioner(e){var t=e.shapeArgs||e.graphic.getBBox();return{x:t.x||0,y:(t.y||0)+(t.height||0)};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e<=t.high;}},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function handlePositioner(e){var t=e.shapeArgs||e.graphic.getBBox();return{x:t.x||0,y:t.y||0};},handleFormatter:n.y.handleFormatter,propValidate:function propValidate(e,t){return e>=t.low;}}},x={x:u.x,low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function handlePositioner(e){var t=e.graphics&&e.graphics[0]&&e.graphics[0].getBBox();return t?{x:t.x+t.width/2,y:t.y+t.height/2}:{x:-999,y:-999};},handleFormatter:m,propValidate:u.low.propValidate},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function handlePositioner(e){var t=e.graphics&&e.graphics[1]&&e.graphics[1].getBBox();return t?{x:t.x+t.width/2,y:t.y+t.height/2}:{x:-999,y:-999};},handleFormatter:m,propValidate:u.high.propValidate}},c={y:{axis:\"y\",move:!0},x:{optionName:\"draggableX1\",axis:\"x\",move:!0,resize:!0,resizeSide:\"left\",handlePositioner:function handlePositioner(e){return D(e,\"x\");},handleFormatter:f,propValidate:function propValidate(e,t){return e<=t.x2;}},x2:{optionName:\"draggableX2\",axis:\"x\",move:!0,resize:!0,resizeSide:\"right\",handlePositioner:function handlePositioner(e){return D(e,\"x2\");},handleFormatter:f,propValidate:function propValidate(e,t){return e>=t.x;}}};function m(e){var t=e.graphic?e.graphic.getBBox().width/2+1:4;return[[\"M\",0-t,0],[\"a\",t,t,0,1,0,2*t,0],[\"a\",t,t,0,1,0,-2*t,0]];}function f(e){var t=e.shapeArgs||e.graphic.getBBox(),r=t.r||0,o=t.height-r,a=t.height/2;return[[\"M\",0,r],[\"L\",0,a-5],[\"A\",1,1,0,0,0,0,a+5],[\"A\",1,1,0,0,0,0,a-5],[\"M\",0,a+5],[\"L\",0,o]];}function D(e,t){var r=e.series,o=r.xAxis,a=r.yAxis,i=r.chart.inverted,s=r.columnMetrics?r.columnMetrics.offset:-e.shapeArgs.height/2,n=o.toPixels(e[t],!0),d=a.toPixels(e.y,!0);return i&&(n=o.len-n,d=a.len-d),{x:Math.round(n),y:Math.round(d+=s)};}return{arearange:x,boxplot:d,bullet:g,column:n,columnrange:u,errorbar:l,flags:s,gantt:{y:c.y,start:a(c.x,{optionName:\"draggableStart\",validateIndividualDrag:function validateIndividualDrag(e){return!e.milestone;}}),end:a(c.x2,{optionName:\"draggableEnd\",validateIndividualDrag:function validateIndividualDrag(e){return!e.milestone;}})},line:s,ohlc:p,waterfall:h,xrange:c};}),r(t,\"Extensions/DraggablePoints/DraggablePoints.js\",[t[\"Extensions/DraggablePoints/DragDropUtilities.js\"],t[\"Extensions/DraggablePoints/DraggableChart.js\"],t[\"Extensions/DraggablePoints/DragDropDefaults.js\"],t[\"Extensions/DraggablePoints/DragDropProps.js\"],t[\"Core/Utilities.js\"]],function(e,t,r,o,a){var i=e.addEvents,s=e.getNormalizedEvent,n=t.initDragDrop,d=a.addEvent,l=a.clamp,g=a.isNumber,p=a.merge,h=a.pick;function u(e){var t=e.series&&e.series.chart,r=t&&t.dragDropData;t&&t.dragHandles&&!(r&&(r.isDragging&&r.draggedPastSensitivity||r.isHoveringHandle===e.id))&&t.hideDragHandles();}function x(){var e=this;setTimeout(function(){e.series&&u(e);},10);}function c(){var e=this;setTimeout(function(){return function(e){var t=e.series,r=t&&t.chart,o=r&&r.dragDropData,a=r&&r.is3d&&r.is3d();!r||o&&o.isDragging&&o.draggedPastSensitivity||r.isDragDropAnimating||!t.options.dragDrop||a||(r.dragHandles&&r.hideDragHandles(),e.showDragHandles());}(e);},12);}function m(){var e=this.series.chart,t=e.dragHandles;t&&t.point===this.id&&e.hideDragHandles();}function f(e,t,r){var o=this.series,a=o.chart,i=a.mapView,s=p(o.options.dragDrop,this.options.dragDrop),n={},d=e.points[this.id],u=1===Object.keys(r).length,x=function x(e,t){var r=o[t.toLowerCase()+\"Axis\"].categories?1:0,a=h(s[\"dragPrecision\"+t],r),i=h(s[\"dragMin\"+t],-1/0),n=h(s[\"dragMax\"+t],1/0),d=e;return a&&(d=Math.round(d/a)*a),l(d,i,n);},c=function c(e,t,r){if(i){var _o65=h(s[\"dragPrecision\"+t],0),_n51=i.pixelsToLonLat({x:0,y:0}),_d13=i.pixelsToLonLat({x:a.plotBox.width,y:a.plotBox.height}),_g10=h(s[\"dragMin\"+t],_n51&&_n51[r],-1/0),_p15=h(s[\"dragMax\"+t],_d13&&_d13[r],1/0),_u8=e[r];if(\"Orthographic\"===i.projection.options.name)return _u8;if(\"lat\"===r){(isNaN(_g10)||_g10>i.projection.maxLatitude)&&(_g10=i.projection.maxLatitude),(isNaN(_p15)||_p15<-1*i.projection.maxLatitude)&&(_p15=-1*i.projection.maxLatitude);var _e158=_p15;_p15=_g10,_g10=_e158;}if(!i.projection.hasCoordinates){var _t167=i.pixelsToLonLat({x:e.chartX-a.plotLeft,y:a.plotHeight-e.chartY+a.plotTop});_t167&&(_u8=_t167[r]);}return _o65&&(_u8=Math.round(_u8/_o65)*_o65),l(_u8,_g10,_p15);}};for(var _i110=0,_Object$keys4=Object.keys(r);_i110<_Object$keys4.length;_i110++){var _e159=_Object$keys4[_i110];var _a28=r[_e159],_s108=d.point[_e159],_l13=o[_a28.axis+\"Axis\"],_p16=i?c(t,_a28.axis.toUpperCase(),_e159):x(_l13.toValue((_l13.horiz?t.chartX:t.chartY)+d[_e159+\"Offset\"]),_a28.axis.toUpperCase());g(_p16)&&!(u&&_a28.propValidate&&!_a28.propValidate(_p16,this))&&void 0!==_s108&&(n[_e159]=_p16);}return n;}function D(){var e=this,t=e.series,o=t.chart,a=o.inverted,l=o.renderer,g=p(t.options.dragDrop,e.options.dragDrop),h=t.dragDropProps||{},x=o.dragHandles;var _loop4=function _loop4(){var c=_Object$keys5[_i111];var m,f,D;var y=h[c],P=p(r.dragHandle,y.handleOptions,g.dragHandle),v={\"class\":P.className,\"stroke-width\":P.lineWidth,fill:P.color,stroke:P.lineColor},b=P.pathFormatter||y.handleFormatter,w=y.handlePositioner,z=!y.validateIndividualDrag||y.validateIndividualDrag(e);if(y.resize&&z&&y.resizeSide&&b&&(g[\"draggable\"+y.axis.toUpperCase()]||g[y.optionName])&&!1!==g[y.optionName]){x?x.point=e.id:x=o.dragHandles={group:l.g(\"drag-drop-handles\").add(t.markerGroup||t.group),point:e.id},m=w(e),v.d=D=b(e);var _r43=e.series.xAxis.categories?-.5:0;if(!D||m.x<_r43||m.y<0)return{v:void 0};v.cursor=P.cursor||(\"x\"===y.axis!=!!a?\"ew-resize\":\"ns-resize\"),(f=x[y.optionName])||(f=x[y.optionName]=l.path().add(x.group)),v.translateX=a?t.yAxis.len-m.y:m.x,v.translateY=a?t.xAxis.len-m.x:m.y,a&&(v.rotation=-90),f.attr(v),i(f.element,[\"touchstart\",\"mousedown\"],function(t){!function(e,t,r){var o=t.series.chart;o.zoomOrPanKeyPressed(e)||(o.mouseIsDown=!1,n(e,t),o.dragDropData.updateProp=e.updateProp=r,t.firePointEvent(\"dragStart\",e),e.stopPropagation(),e.preventDefault());}(s(t,o),e,c);},{passive:!1}),d(x.group.element,\"mouseover\",function(){o.dragDropData=o.dragDropData||{},o.dragDropData.isHoveringHandle=e.id;}),i(x.group.element,[\"touchend\",\"mouseout\"],function(){!function(e){var t=e.series.chart;t.dragDropData&&e.id===t.dragDropData.isHoveringHandle&&delete t.dragDropData.isHoveringHandle,t.hoverPoint||u(e);}(e);});}},_ret;for(var _i111=0,_Object$keys5=Object.keys(h);_i111<_Object$keys5.length;_i111++){_ret=_loop4();if(_ret)return _ret.v;}}function y(e){var t=this.chart,r=1/0,o=-1/0,a=1/0,i=-1/0,s;var _iteratorNormalCompletion35=true;var _didIteratorError35=false;var _iteratorError35=undefined;try{for(var _iterator35=e[Symbol.iterator](),_step35;!(_iteratorNormalCompletion35=(_step35=_iterator35.next()).done);_iteratorNormalCompletion35=true){var _t168=_step35.value;var _e160=_t168.graphic&&_t168.graphic.getBBox()||_t168.shapeArgs;if(_e160){var _n52=void 0;var _d14=_t168.x2;g(_d14)&&(_n52=_t168.series.xAxis.translate(_d14,!1,!1,!1,!0));var _l14=!(_e160.width||_e160.height||_e160.x||_e160.y);s=!0,r=Math.min(_t168.plotX||0,_n52||0,_l14?1/0:_e160.x||0,r),o=Math.max(_t168.plotX||0,_n52||0,(_e160.x||0)+(_e160.width||0),o),a=Math.min(_t168.plotY||0,_l14?1/0:_e160.y||0,a),i=Math.max((_e160.y||0)+(_e160.height||0),i);}}}catch(err){_didIteratorError35=true;_iteratorError35=err;}finally{try{if(!_iteratorNormalCompletion35&&_iterator35[\"return\"]!=null){_iterator35[\"return\"]();}}finally{if(_didIteratorError35){throw _iteratorError35;}}}return s?t.renderer.rect(r,a,o-r,i-a):t.renderer.g();}return{compose:function compose(e,r){t.compose(e);var a=r.prototype;if(!a.dragDropProps){var _e161=r.prototype.pointClass,_t169=r.types,_i112=_e161.prototype;for(var _i113=0,_arr7=(_i112.getDropValues=f,_i112.showDragHandles=D,d(_e161,\"mouseOut\",x),d(_e161,\"mouseOver\",c),d(_e161,\"remove\",m),a.dragDropProps=o.line,a.getGuideBox=y,[\"arearange\",\"boxplot\",\"bullet\",\"column\",\"columnrange\",\"errorbar\",\"flags\",\"gantt\",\"ohlc\",\"waterfall\",\"xrange\"]);_i113<_arr7.length;_i113++){var _r44=_arr7[_i113];_t169[_r44]&&(_t169[_r44].prototype.dragDropProps=o[_r44]);}for(var _i114=0,_arr8=[\"bellcurve\",\"gauge\",\"histogram\",\"map\",\"mapline\",\"pareto\",\"pie\",\"sankey\",\"sma\",\"sunburst\",\"treemap\",\"vector\",\"windbarb\",\"wordcloud\"];_i114<_arr8.length;_i114++){var _e162=_arr8[_i114];_t169[_e162]&&(_t169[_e162].prototype.dragDropProps=null);}}}};}),r(t,\"masters/modules/draggable-points.src.js\",[t[\"Core/Globals.js\"],t[\"Extensions/DraggablePoints/DraggablePoints.js\"]],function(e,t){return t.compose(e.Chart,e.Series),e;});});!/**\n * Highcharts JS v11.4.8 (2024-08-29)\n *\n * Accessibility module\n *\n * (c) 2010-2024 Highsoft AS\n * Author: Oystein Moseng\n *\n * License: www.highcharts.com/license\n */function(e){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(e[\"default\"]=e,module.exports=e):\"function\"==typeof define&&define.amd?define(\"highcharts/modules/accessibility\",[\"highcharts\"],function(t){return e(t),e.Highcharts=t,e;}):e(\"undefined\"!=typeof Highcharts?Highcharts:void 0);}(function(e){\"use strict\";var t=e?e._modules:{};function i(t,i,s,n){t.hasOwnProperty(i)||(t[i]=n.apply(null,s),\"function\"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent(\"HighchartsModuleLoaded\",{detail:{path:i,module:t[i]}})));}i(t,\"Accessibility/Utils/HTMLUtilities.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=e.doc,s=e.win,n=t.css,r=s.EventTarget&&new s.EventTarget()||\"none\";function o(e){if(\"function\"==typeof s.MouseEvent)return new s.MouseEvent(e.type,e);if(i.createEvent){var _t170=i.createEvent(\"MouseEvent\");if(_t170.initMouseEvent)return _t170.initMouseEvent(e.type,e.bubbles,e.cancelable,e.view||s,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),_t170;}return a(e.type);}function a(e,t,n){var o=t||{x:0,y:0};if(\"function\"==typeof s.MouseEvent)return new s.MouseEvent(e,{bubbles:!0,cancelable:!0,composed:!0,button:0,buttons:1,relatedTarget:n||r,view:s,detail:\"click\"===e?1:0,screenX:o.x,screenY:o.y,clientX:o.x,clientY:o.y});if(i.createEvent){var _t171=i.createEvent(\"MouseEvent\");if(_t171.initMouseEvent)return _t171.initMouseEvent(e,!0,!0,s,\"click\"===e?1:0,o.x,o.y,o.x,o.y,!1,!1,!1,!1,0,null),_t171;}return{type:e};}return{addClass:function addClass(e,t){e.classList?e.classList.add(t):0>e.className.indexOf(t)&&(e.className+=\" \"+t);},cloneMouseEvent:o,cloneTouchEvent:function cloneTouchEvent(e){var t=function t(e){var t=[];for(var _i115=0;_i115<e.length;++_i115){var _s109=e.item(_i115);_s109&&t.push(_s109);}return t;};if(\"function\"==typeof s.TouchEvent){var _i116=new s.TouchEvent(e.type,{touches:t(e.touches),targetTouches:t(e.targetTouches),changedTouches:t(e.changedTouches),ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey,bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e.detail,view:e.view});return e.defaultPrevented&&_i116.preventDefault(),_i116;}var i=o(e);return i.touches=e.touches,i.changedTouches=e.changedTouches,i.targetTouches=e.targetTouches,i;},escapeStringForHTML:function escapeStringForHTML(e){return e.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#x27;\").replace(/\\//g,\"&#x2F;\");},getElement:function getElement(e){return i.getElementById(e);},getFakeMouseEvent:a,getHeadingTagNameForElement:function getHeadingTagNameForElement(e){var t=function t(e){return\"h\"+Math.min(6,parseInt(e.slice(1),10)+1);},i=function i(e){return /^H[1-6]$/i.test(e);},s=function s(e){var t=e;for(;t=t.previousSibling;){var _e163=t.tagName||\"\";if(i(_e163))return _e163;}return\"\";},n=function n(e){var r=s(e);if(r)return t(r);var o=e.parentElement;if(!o)return\"p\";var a=o.tagName;return i(a)?t(a):n(o);};return n(e);},removeChildNodes:function removeChildNodes(e){for(;e.lastChild;)e.removeChild(e.lastChild);},removeClass:function removeClass(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(t,\"g\"),\"\");},removeElement:function removeElement(e){e&&e.parentNode&&e.parentNode.removeChild(e);},reverseChildNodes:function reverseChildNodes(e){var t=e.childNodes.length;for(;t--;)e.appendChild(e.childNodes[t]);},simulatedEventTarget:r,stripHTMLTagsFromString:function stripHTMLTagsFromString(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;return\"string\"==typeof e?t?e.replace(/<\\/?[^>]+(>|$)/g,\"\"):e.replace(/<\\/?(?!\\s)[^>]+(>|$)/g,\"\"):e;},visuallyHideElement:function visuallyHideElement(e){n(e,{position:\"absolute\",width:\"1px\",height:\"1px\",overflow:\"hidden\",whiteSpace:\"nowrap\",clip:\"rect(1px, 1px, 1px, 1px)\",marginTop:\"-3px\",\"-ms-filter\":\"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)\",filter:\"alpha(opacity=1)\",opacity:.01});}};}),i(t,\"Accessibility/A11yI18n.js\",[t[\"Core/Templating.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i;var s=e.format,n=t.getNestedProperty,r=t.pick;return function(e){function t(e,t,i){var o=function o(e,t){var i=e.slice(t||0),s=i.indexOf(\"{\"),n=i.indexOf(\"}\");if(s>-1&&n>s)return{statement:i.substring(s+1,n),begin:t+s+1,end:t+n};},a=[],l,h,c=0;do l=o(e,c),(h=e.substring(c,l&&l.begin-1)).length&&a.push({value:h,type:\"constant\"}),l&&a.push({value:l.statement,type:\"statement\"}),c=l?l.end+1:c+1;while(l);return a.forEach(function(e){\"statement\"===e.type&&(e.value=function(e,t){var i,s;var o=e.indexOf(\"#each(\"),a=e.indexOf(\"#plural(\"),l=e.indexOf(\"[\"),h=e.indexOf(\"]\");if(o>-1){var _r45=e.slice(o).indexOf(\")\")+o,_a29=e.substring(0,o),_l15=e.substring(_r45+1),_h19=e.substring(o+6,_r45).split(\",\"),_c13=Number(_h19[1]),d;if(s=\"\",i=n(_h19[0],t)){d=(_c13=isNaN(_c13)?i.length:_c13)<0?i.length+_c13:Math.min(_c13,i.length);for(var _e164=0;_e164<d;++_e164)s+=_a29+i[_e164]+_l15;}return s.length?s:\"\";}if(a>-1){var c;var _i117=e.slice(a).indexOf(\")\")+a,_o66=e.substring(a+8,_i117).split(\",\");switch(Number(n(_o66[0],t))){case 0:s=r(_o66[4],_o66[1]);break;case 1:s=r(_o66[2],_o66[1]);break;case 2:s=r(_o66[3],_o66[1]);break;default:s=_o66[1];}return s?(c=s).trim&&c.trim()||c.replace(/^\\s+|\\s+$/g,\"\"):\"\";}if(l>-1){var _s110;var _r46=e.substring(0,l),_o67=Number(e.substring(l+1,h));return i=n(_r46,t),!isNaN(_o67)&&i&&(_o67<0?void 0===(_s110=i[i.length+_o67])&&(_s110=i[0]):void 0===(_s110=i[_o67])&&(_s110=i[i.length-1])),void 0!==_s110?_s110:\"\";}return\"{\"+e+\"}\";}(e.value,t));}),s(a.reduce(function(e,t){return e+t.value;},\"\"),t,i);}function i(e,i){var s=e.split(\".\"),n=this.options.lang,r=0;for(;r<s.length;++r)n=n&&n[s[r]];return\"string\"==typeof n?t(n,i,this):\"\";}e.compose=function(e){var t=e.prototype;t.langFormat||(t.langFormat=i);},e.i18nFormat=t;}(i||(i={})),i;}),i(t,\"Accessibility/Utils/ChartUtilities.js\",[t[\"Core/Globals.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Core/Utilities.js\"]],function(e,t,i){var s=e.doc,n=t.stripHTMLTagsFromString,r=i.defined,o=i.find,a=i.fireEvent;function l(e){if(e.points&&e.points.length){var _t172=o(e.points,function(e){return!!e.graphic;});return _t172&&_t172.graphic&&_t172.graphic.element;}}function h(e){var t=l(e);return t&&t.parentNode||e.graph&&e.graph.element||e.group&&e.group.element;}return{fireEventOnWrappedOrUnwrappedElement:function e(t,i){var n=i.type,r=t.hcEvents;s.createEvent&&(t.dispatchEvent||t.fireEvent)?t.dispatchEvent?t.dispatchEvent(i):t.fireEvent(n,i):r&&r[n]?a(t,n,i):t.element&&e(t.element,i);},getChartTitle:function getChartTitle(e){return n(e.options.title.text||e.langFormat(\"accessibility.defaultChartTitle\",{chart:e}),e.renderer.forExport);},getAxisDescription:function getAxisDescription(e){var _e$options$accessibil,_e$axisTitle;return e&&(((_e$options$accessibil=e.options.accessibility)===null||_e$options$accessibil===void 0?void 0:_e$options$accessibil.description)||((_e$axisTitle=e.axisTitle)===null||_e$axisTitle===void 0?void 0:_e$axisTitle.textStr)||e.options.id||e.categories&&\"categories\"||e.dateTime&&\"Time\"||\"values\");},getAxisRangeDescription:function getAxisRangeDescription(e){var t=e.options||{};return t.accessibility&&void 0!==t.accessibility.rangeDescription?t.accessibility.rangeDescription:e.categories?function(e){var t=e.chart;return e.dataMax&&e.dataMin?t.langFormat(\"accessibility.axis.rangeCategories\",{chart:t,axis:e,numCategories:e.dataMax-e.dataMin+1}):\"\";}(e):e.dateTime&&(0===e.min||0===e.dataMin)?function(e){var t=e.chart,i={},s=e.dataMin||e.min||0,n=e.dataMax||e.max||0,r=\"Seconds\";i.Seconds=(n-s)/1e3,i.Minutes=i.Seconds/60,i.Hours=i.Minutes/60,i.Days=i.Hours/24,[\"Minutes\",\"Hours\",\"Days\"].forEach(function(e){i[e]>2&&(r=e);});var o=i[r].toFixed(\"Seconds\"!==r&&\"Minutes\"!==r?1:0);return t.langFormat(\"accessibility.axis.timeRange\"+r,{chart:t,axis:e,range:o.replace(\".0\",\"\")});}(e):function(e){var t=e.chart,i=t.options,s=i&&i.accessibility&&i.accessibility.screenReaderSection.axisRangeDateFormat||\"\",n={min:e.dataMin||e.min||0,max:e.dataMax||e.max||0},r=function r(i){return e.dateTime?t.time.dateFormat(s,n[i]):n[i].toString();};return t.langFormat(\"accessibility.axis.rangeFromTo\",{chart:t,axis:e,rangeFrom:r(\"min\"),rangeTo:r(\"max\")});}(e);},getPointFromXY:function getPointFromXY(e,t,i){var s=e.length,n;for(;s--;)if(n=o(e[s].points||[],function(e){return e.x===t&&e.y===i;}))return n;},getSeriesFirstPointElement:l,getSeriesFromName:function getSeriesFromName(e,t){return t?(e.series||[]).filter(function(e){return e.name===t;}):e.series;},getSeriesA11yElement:h,unhideChartElementFromAT:function e(t,i){i.setAttribute(\"aria-hidden\",!1),i!==t.renderTo&&i.parentNode&&i.parentNode!==s.body&&(Array.prototype.forEach.call(i.parentNode.childNodes,function(e){e.hasAttribute(\"aria-hidden\")||e.setAttribute(\"aria-hidden\",!0);}),e(t,i.parentNode));},hideSeriesFromAT:function hideSeriesFromAT(e){var t=h(e);t&&t.setAttribute(\"aria-hidden\",!0);},scrollAxisToPoint:function scrollAxisToPoint(e){var t=e.series.xAxis,i=e.series.yAxis,s=t&&t.scrollbar?t:i,n=s&&s.scrollbar;if(n&&r(n.to)&&r(n.from)){var _t173=n.to-n.from,_i118=function(e,t){if(!r(e.dataMin)||!r(e.dataMax))return 0;var i=e.toPixels(e.dataMin),s=e.toPixels(e.dataMax),n=\"xAxis\"===e.coll?\"x\":\"y\";return(e.toPixels(t[n]||0)-i)/(s-i);}(s,e);n.updatePosition(_i118-_t173/2,_i118+_t173/2),a(n,\"changed\",{from:n.from,to:n.to,trigger:\"scrollbar\",DOMEvent:null});}}};}),i(t,\"Accessibility/Utils/DOMElementProvider.js\",[t[\"Core/Globals.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t){var i=e.doc,s=t.removeElement;return/*#__PURE__*/function(){function _class4(){_classCallCheck(this,_class4);this.elements=[];}_createClass(_class4,[{key:\"createElement\",value:function createElement(){var e=i.createElement.apply(i,arguments);return this.elements.push(e),e;}},{key:\"removeElement\",value:function removeElement(e){s(e),this.elements.splice(this.elements.indexOf(e),1);}},{key:\"destroyCreatedElements\",value:function destroyCreatedElements(){this.elements.forEach(function(e){s(e);}),this.elements=[];}}]);return _class4;}();}),i(t,\"Accessibility/Utils/EventProvider.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.addEvent;return/*#__PURE__*/function(){function _class5(){_classCallCheck(this,_class5);this.eventRemovers=[];}_createClass(_class5,[{key:\"addEvent\",value:function addEvent(){var t=i.apply(e,arguments);return this.eventRemovers.push({element:arguments[0],remover:t}),t;}},{key:\"removeEvent\",value:function removeEvent(e){var t=this.eventRemovers.map(function(e){return e.remover;}).indexOf(e);this.eventRemovers[t].remover(),this.eventRemovers.splice(t,1);}},{key:\"removeAddedEvents\",value:function removeAddedEvents(){this.eventRemovers.map(function(e){return e.remover;}).forEach(function(e){return e();}),this.eventRemovers=[];}}]);return _class5;}();}),i(t,\"Accessibility/AccessibilityComponent.js\",[t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/DOMElementProvider.js\"],t[\"Accessibility/Utils/EventProvider.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t,i,s){var n=e.fireEventOnWrappedOrUnwrappedElement,r=s.getFakeMouseEvent;return/*#__PURE__*/function(){function _class6(){_classCallCheck(this,_class6);}_createClass(_class6,[{key:\"destroy\",value:function destroy(){}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){return[];}},{key:\"init\",value:function init(){}},{key:\"onChartRender\",value:function onChartRender(){}},{key:\"onChartUpdate\",value:function onChartUpdate(){}},{key:\"initBase\",value:function initBase(e,s){this.chart=e,this.eventProvider=new i(),this.domElementProvider=new t(),this.proxyProvider=s,this.keyCodes={left:37,right:39,up:38,down:40,enter:13,space:32,esc:27,tab:9,pageUp:33,pageDown:34,end:35,home:36};}},{key:\"addEvent\",value:function addEvent(e,t,i,s){return this.eventProvider.addEvent(e,t,i,s);}},{key:\"createElement\",value:function createElement(e,t){return this.domElementProvider.createElement(e,t);}},{key:\"fakeClickEvent\",value:function fakeClickEvent(e){n(e,r(\"click\"));}},{key:\"destroyBase\",value:function destroyBase(){this.domElementProvider.destroyCreatedElements(),this.eventProvider.removeAddedEvents();}}]);return _class6;}();}),i(t,\"Accessibility/KeyboardNavigationHandler.js\",[t[\"Core/Utilities.js\"]],function(e){var t=e.find;return/*#__PURE__*/function(){function _class7(e,t){_classCallCheck(this,_class7);this.chart=e,this.keyCodeMap=t.keyCodeMap||[],this.validate=t.validate,this.init=t.init,this.terminate=t.terminate,this.response={success:1,prev:2,next:3,noHandler:4,fail:5};}_createClass(_class7,[{key:\"run\",value:function run(e){var i=e.which||e.keyCode,s=this.response.noHandler,n=t(this.keyCodeMap,function(e){return e[0].indexOf(i)>-1;});return n?s=n[1].call(this,i,e):9===i&&(s=this.response[e.shiftKey?\"prev\":\"next\"]),s;}}]);return _class7;}();}),i(t,\"Accessibility/Components/ContainerComponent.js\",[t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Core/Globals.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t,i,s,n){var r=i.unhideChartElementFromAT,o=i.getChartTitle,a=s.doc,l=n.stripHTMLTagsFromString;return/*#__PURE__*/function(_e165){_inherits(_class8,_e165);var _super25=_createSuper(_class8);function _class8(){_classCallCheck(this,_class8);return _super25.apply(this,arguments);}_createClass(_class8,[{key:\"onChartUpdate\",value:function onChartUpdate(){this.handleSVGTitleElement(),this.setSVGContainerLabel(),this.setGraphicContainerAttrs(),this.setRenderToAttrs(),this.makeCreditsAccessible();}},{key:\"handleSVGTitleElement\",value:function handleSVGTitleElement(){var e=this.chart,t=\"highcharts-title-\"+e.index,i=l(e.langFormat(\"accessibility.svgContainerTitle\",{chartTitle:o(e)}));if(i.length){var _s111=this.svgTitleElement=this.svgTitleElement||a.createElementNS(\"http://www.w3.org/2000/svg\",\"title\");_s111.textContent=i,_s111.id=t,e.renderTo.insertBefore(_s111,e.renderTo.firstChild);}}},{key:\"setSVGContainerLabel\",value:function setSVGContainerLabel(){var e=this.chart,t=e.langFormat(\"accessibility.svgContainerLabel\",{chartTitle:o(e)});e.renderer.box&&t.length&&e.renderer.box.setAttribute(\"aria-label\",t);}},{key:\"setGraphicContainerAttrs\",value:function setGraphicContainerAttrs(){var e=this.chart,t=e.langFormat(\"accessibility.graphicContainerLabel\",{chartTitle:o(e)});t.length&&e.container.setAttribute(\"aria-label\",t);}},{key:\"setRenderToAttrs\",value:function setRenderToAttrs(){var e=this.chart,t=\"disabled\"!==e.options.accessibility.landmarkVerbosity,i=e.langFormat(\"accessibility.chartContainerLabel\",{title:o(e),chart:e});i&&(e.renderTo.setAttribute(\"role\",t?\"region\":\"group\"),e.renderTo.setAttribute(\"aria-label\",i));}},{key:\"makeCreditsAccessible\",value:function makeCreditsAccessible(){var e=this.chart,t=e.credits;t&&(t.textStr&&t.element.setAttribute(\"aria-label\",e.langFormat(\"accessibility.credits\",{creditsStr:l(t.textStr,e.renderer.forExport)})),r(e,t.element));}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){var e=this.chart;return new t(e,{keyCodeMap:[],validate:function validate(){return!0;},init:function init(){var t=e.accessibility;t&&t.keyboardNavigation.tabindexContainer.focus();}});}},{key:\"destroy\",value:function destroy(){this.chart.renderTo.setAttribute(\"aria-hidden\",!0);}}]);return _class8;}(e);}),i(t,\"Accessibility/FocusBorder.js\",[t[\"Core/Utilities.js\"]],function(e){var t;var i=e.addEvent,s=e.pick;return function(e){var t=[\"x\",\"y\",\"transform\",\"width\",\"height\",\"r\",\"d\",\"stroke-width\"];function n(){var e=this.focusElement,t=this.options.accessibility.keyboardNavigation.focusBorder;e&&(e.removeFocusBorder(),t.enabled&&e.addFocusBorder(t.margin,{stroke:t.style.color,strokeWidth:t.style.lineWidth,r:t.style.borderRadius}));}function r(e,t){var s=this.options.accessibility.keyboardNavigation.focusBorder,n=t||e.element;n&&n.focus&&(n.hcEvents&&n.hcEvents.focusin||i(n,\"focusin\",function(){}),n.focus(),s.hideBrowserFocusOutline&&(n.style.outline=\"none\")),this.focusElement&&this.focusElement.removeFocusBorder(),this.focusElement=e,this.renderFocusBorder();}function o(e,i){this.focusBorder&&this.removeFocusBorder();var n=this.getBBox(),r=s(e,3),o=this.parentGroup,a=this.scaleX||o&&o.scaleX,l=this.scaleY||o&&o.scaleY,h=(a?!l:l)?Math.abs(a||l||1):(Math.abs(a||1)+Math.abs(l||1))/2;n.x+=this.translateX?this.translateX:0,n.y+=this.translateY?this.translateY:0;var c=n.x-r,d=n.y-r,u=n.width+2*r,p=n.height+2*r,g=!!this.text;if(\"text\"===this.element.nodeName||g){var _e166,_t174;var _i119=!!this.rotation,_s112=g?{x:_i119?1:0,y:0}:(_e166=0,_t174=0,\"middle\"===this.attr(\"text-anchor\")?_e166=_t174=.5:this.rotation?_e166=.25:_t174=.75,{x:_e166,y:_t174}),_o68=+this.attr(\"x\"),_a30=+this.attr(\"y\");if(isNaN(_o68)||(c=_o68-n.width*_s112.x-r),isNaN(_a30)||(d=_a30-n.height*_s112.y-r),g&&_i119){var _e167=u;u=p,p=_e167,isNaN(_o68)||(c=_o68-n.height*_s112.x-r),isNaN(_a30)||(d=_a30-n.width*_s112.y-r);}}this.focusBorder=this.renderer.rect(c,d,u,p,parseInt((i&&i.r||0).toString(),10)/h).addClass(\"highcharts-focus-border\").attr({zIndex:99}).add(o),this.renderer.styledMode||this.focusBorder.attr({stroke:i&&i.stroke,\"stroke-width\":(i&&i.strokeWidth||0)/h}),function(e){for(var _len4=arguments.length,i=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++){i[_key4-1]=arguments[_key4];}e.focusBorderUpdateHooks||(e.focusBorderUpdateHooks={},t.forEach(function(t){var s=t+\"Setter\",n=e[s]||e._defaultSetter;e.focusBorderUpdateHooks[s]=n,e[s]=function(){var t=n.apply(e,arguments);return e.addFocusBorder.apply(e,i),t;};}));}(this,e,i),function(e){if(e.focusBorderDestroyHook)return;var t=e.destroy;e.destroy=function(){return e.focusBorder&&e.focusBorder.destroy&&e.focusBorder.destroy(),t.apply(e,arguments);},e.focusBorderDestroyHook=t;}(this);}function a(){var e;e=this,e.focusBorderUpdateHooks&&(Object.keys(e.focusBorderUpdateHooks).forEach(function(t){var i=e.focusBorderUpdateHooks[t];i===e._defaultSetter?delete e[t]:e[t]=i;}),delete e.focusBorderUpdateHooks),this.focusBorderDestroyHook&&(this.destroy=this.focusBorderDestroyHook,delete this.focusBorderDestroyHook),this.focusBorder&&(this.focusBorder.destroy(),delete this.focusBorder);}e.compose=function(e,t){var i=e.prototype,s=t.prototype;i.renderFocusBorder||(i.renderFocusBorder=n,i.setFocusToElement=r),s.addFocusBorder||(s.addFocusBorder=o,s.removeFocusBorder=a);};}(t||(t={})),t;}),i(t,\"Accessibility/Utils/Announcer.js\",[t[\"Core/Renderer/HTML/AST.js\"],t[\"Accessibility/Utils/DOMElementProvider.js\"],t[\"Core/Globals.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n){var r=i.doc,o=s.addClass,a=s.visuallyHideElement,l=n.attr;return/*#__PURE__*/function(){function _class9(e,i){_classCallCheck(this,_class9);this.chart=e,this.domElementProvider=new t(),this.announceRegion=this.addAnnounceRegion(i);}_createClass(_class9,[{key:\"destroy\",value:function destroy(){this.domElementProvider.destroyCreatedElements();}},{key:\"announce\",value:function announce(t){var _this50=this;e.setElementHTML(this.announceRegion,t),this.clearAnnouncementRegionTimer&&clearTimeout(this.clearAnnouncementRegionTimer),this.clearAnnouncementRegionTimer=setTimeout(function(){_this50.announceRegion.innerHTML=e.emptyHTML,delete _this50.clearAnnouncementRegionTimer;},3e3);}},{key:\"addAnnounceRegion\",value:function addAnnounceRegion(e){var t=this.chart.announcerContainer||this.createAnnouncerContainer(),i=this.domElementProvider.createElement(\"div\");return l(i,{\"aria-hidden\":!1,\"aria-live\":e,\"aria-atomic\":!0}),this.chart.styledMode?o(i,\"highcharts-visually-hidden\"):a(i),t.appendChild(i),i;}},{key:\"createAnnouncerContainer\",value:function createAnnouncerContainer(){var e=this.chart,t=r.createElement(\"div\");return l(t,{\"aria-hidden\":!1,\"class\":\"highcharts-announcer-container\"}),t.style.position=\"relative\",e.renderTo.insertBefore(t,e.renderTo.firstChild),e.announcerContainer=t,t;}}]);return _class9;}();}),i(t,\"Accessibility/Components/AnnotationsA11y.js\",[t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e){var t=e.escapeStringForHTML,i=e.stripHTMLTagsFromString;function s(e){return(e.annotations||[]).reduce(function(e,t){return t.options&&!1!==t.options.visible&&(e=e.concat(t.labels)),e;},[]);}function n(e){return e.options&&e.options.accessibility&&e.options.accessibility.description||e.graphic&&e.graphic.text&&e.graphic.text.textStr||\"\";}function r(e){var t=e.options&&e.options.accessibility&&e.options.accessibility.description;if(t)return t;var i=e.chart,s=n(e),r=e.points,o=function o(e){return e.graphic&&e.graphic.element&&e.graphic.element.getAttribute(\"aria-label\")||\"\";},a=r.filter(function(e){return!!e.graphic;}).map(function(e){var t=e.accessibility&&e.accessibility.valueDescription||o(e),i=e&&e.series.name||\"\";return(i?i+\", \":\"\")+\"data point \"+t;}).filter(function(e){return!!e;}),l=a.length,h=l>1?\"MultiplePoints\":l?\"SinglePoint\":\"NoPoints\",c={annotationText:s,annotation:e,numPoints:l,annotationPoint:a[0],additionalAnnotationPoints:a.slice(1)};return i.langFormat(\"accessibility.screenReaderSection.annotations.description\"+h,c);}function o(e){return s(e).map(function(s){var n=t(i(r(s),e.renderer.forExport));return n?\"<li>\".concat(n,\"</li>\"):\"\";});}return{getAnnotationsInfoHTML:function getAnnotationsInfoHTML(e){var t=e.annotations;if(!(t&&t.length))return\"\";var i=o(e);return\"<ul style=\\\"list-style-type: none\\\">\".concat(i.join(\" \"),\"</ul>\");},getAnnotationLabelDescription:r,getAnnotationListItems:o,getPointAnnotationTexts:function getPointAnnotationTexts(e){var t=s(e.series.chart).filter(function(t){return t.points.indexOf(e)>-1;});return t.length?t.map(function(e){return\"\".concat(n(e));}):[];}};}),i(t,\"Accessibility/Components/InfoRegionsComponent.js\",[t[\"Accessibility/A11yI18n.js\"],t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/Utils/Announcer.js\"],t[\"Accessibility/Components/AnnotationsA11y.js\"],t[\"Core/Renderer/HTML/AST.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Core/Templating.js\"],t[\"Core/Globals.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n,r,o,a,l,h){var c=s.getAnnotationsInfoHTML,d=r.getAxisDescription,u=r.getAxisRangeDescription,p=r.getChartTitle,g=r.unhideChartElementFromAT,m=o.format,b=a.doc,y=l.addClass,f=l.getElement,x=l.getHeadingTagNameForElement,v=l.stripHTMLTagsFromString,A=l.visuallyHideElement,C=h.attr,w=h.pick,E=h.replaceNested;function T(e){return E(e,[/<([\\w\\-.:!]+)\\b[^<>]*>\\s*<\\/\\1>/g,\"\"]);}return/*#__PURE__*/function(_t175){_inherits(_class10,_t175);var _super26=_createSuper(_class10);function _class10(){var _this51;_classCallCheck(this,_class10);_this51=_super26.apply(this,arguments),_this51.screenReaderSections={};return _this51;}_createClass(_class10,[{key:\"init\",value:function init(){var e=this.chart,t=this;this.initRegionsDefinitions(),this.addEvent(e,\"aftergetTableAST\",function(e){t.onDataTableCreated(e);}),this.addEvent(e,\"afterViewData\",function(e){e.wasHidden&&(t.dataTableDiv=e.element,setTimeout(function(){t.focusDataTable();},300));}),this.addEvent(e,\"afterHideData\",function(){t.viewDataTableButton&&t.viewDataTableButton.setAttribute(\"aria-expanded\",\"false\");}),e.exporting&&this.addEvent(e,\"afterPrint\",function(){t.updateAllScreenReaderSections();}),this.announcer=new i(e,\"assertive\");}},{key:\"initRegionsDefinitions\",value:function initRegionsDefinitions(){var e=this,t=this.chart.options.accessibility;this.screenReaderSections={before:{element:null,buildContent:function buildContent(i){var s=t.screenReaderSection.beforeChartFormatter;return s?s(i):e.defaultBeforeChartFormatter(i);},insertIntoDOM:function insertIntoDOM(e,t){t.renderTo.insertBefore(e,t.renderTo.firstChild);},afterInserted:function afterInserted(){void 0!==e.sonifyButtonId&&e.initSonifyButton(e.sonifyButtonId),void 0!==e.dataTableButtonId&&e.initDataTableButton(e.dataTableButtonId);}},after:{element:null,buildContent:function buildContent(i){var s=t.screenReaderSection.afterChartFormatter;return s?s(i):e.defaultAfterChartFormatter();},insertIntoDOM:function insertIntoDOM(e,t){t.renderTo.insertBefore(e,t.container.nextSibling);},afterInserted:function afterInserted(){e.chart.accessibility&&t.keyboardNavigation.enabled&&e.chart.accessibility.keyboardNavigation.updateExitAnchor();}}};}},{key:\"onChartRender\",value:function onChartRender(){this.linkedDescriptionElement=this.getLinkedDescriptionElement(),this.setLinkedDescriptionAttrs(),this.updateAllScreenReaderSections();}},{key:\"updateAllScreenReaderSections\",value:function updateAllScreenReaderSections(){var e=this;Object.keys(this.screenReaderSections).forEach(function(t){e.updateScreenReaderSection(t);});}},{key:\"getLinkedDescriptionElement\",value:function getLinkedDescriptionElement(){var e=this.chart.options.accessibility.linkedDescription;if(!e)return;if(\"string\"!=typeof e)return e;var t=m(e,this.chart),i=b.querySelectorAll(t);if(1===i.length)return i[0];}},{key:\"setLinkedDescriptionAttrs\",value:function setLinkedDescriptionAttrs(){var e=this.linkedDescriptionElement;e&&(e.setAttribute(\"aria-hidden\",\"true\"),y(e,\"highcharts-linked-description\"));}},{key:\"updateScreenReaderSection\",value:function updateScreenReaderSection(e){var t=this.chart,i=this.screenReaderSections[e],s=i.buildContent(t),r=i.element=i.element||this.createElement(\"div\"),o=r.firstChild||this.createElement(\"div\");s?(this.setScreenReaderSectionAttribs(r,e),n.setElementHTML(o,s),r.appendChild(o),i.insertIntoDOM(r,t),t.styledMode?y(o,\"highcharts-visually-hidden\"):A(o),g(t,o),i.afterInserted&&i.afterInserted()):(r.parentNode&&r.parentNode.removeChild(r),i.element=null);}},{key:\"setScreenReaderSectionAttribs\",value:function setScreenReaderSectionAttribs(e,t){var i=this.chart,s=i.langFormat(\"accessibility.screenReaderSection.\"+t+\"RegionLabel\",{chart:i,chartTitle:p(i)});C(e,{id:\"highcharts-screen-reader-region-\".concat(t,\"-\").concat(i.index),\"aria-label\":s||void 0}),e.style.position=\"relative\",s&&e.setAttribute(\"role\",\"all\"===i.options.accessibility.landmarkVerbosity?\"region\":\"group\");}},{key:\"defaultBeforeChartFormatter\",value:function defaultBeforeChartFormatter(){var t=this.chart,i=t.options.accessibility.screenReaderSection.beforeChartFormat;if(!i)return\"\";var s=this.getAxesDescription(),n=t.sonify&&t.options.sonification&&t.options.sonification.enabled,r=\"highcharts-a11y-sonify-data-btn-\"+t.index,o=\"hc-linkto-highcharts-data-table-\"+t.index,a=c(t),l=t.langFormat(\"accessibility.screenReaderSection.annotations.heading\",{chart:t}),h={headingTagName:x(t.renderTo),chartTitle:p(t),typeDescription:this.getTypeDescriptionText(),chartSubtitle:this.getSubtitleText(),chartLongdesc:this.getLongdescText(),xAxisDescription:s.xAxis,yAxisDescription:s.yAxis,playAsSoundButton:n?this.getSonifyButtonText(r):\"\",viewTableButton:t.getCSV?this.getDataTableButtonText(o):\"\",annotationsTitle:a?l:\"\",annotationsList:a},d=e.i18nFormat(i,h,t);return this.dataTableButtonId=o,this.sonifyButtonId=r,T(d);}},{key:\"defaultAfterChartFormatter\",value:function defaultAfterChartFormatter(){var t=this.chart,i=t.options.accessibility.screenReaderSection.afterChartFormat;if(!i)return\"\";var s={endOfChartMarker:this.getEndOfChartMarkerText()};return T(e.i18nFormat(i,s,t));}},{key:\"getLinkedDescription\",value:function getLinkedDescription(){var e=this.linkedDescriptionElement;return v(e&&e.innerHTML||\"\",this.chart.renderer.forExport);}},{key:\"getLongdescText\",value:function getLongdescText(){var e=this.chart.options,t=e.caption,i=t&&t.text,s=this.getLinkedDescription();return e.accessibility.description||s||i||\"\";}},{key:\"getTypeDescriptionText\",value:function getTypeDescriptionText(){var e=this.chart;return e.types?e.options.accessibility.typeDescription||function(e,t){var i=t[0],s=e.series&&e.series[0]||{},n=e.mapView&&e.mapView.geoMap&&e.mapView.geoMap.title,r={numSeries:e.series.length,numPoints:s.points&&s.points.length,chart:e,mapTitle:n};return i?\"map\"===i||\"tiledwebmap\"===i?r.mapTitle?e.langFormat(\"accessibility.chartTypes.mapTypeDescription\",r):e.langFormat(\"accessibility.chartTypes.unknownMap\",r):e.types.length>1?e.langFormat(\"accessibility.chartTypes.combinationChart\",r):function(e,t,i){var s=t[0],n=e.langFormat(\"accessibility.seriesTypeDescriptions.\"+s,i),r=e.series&&e.series.length<2?\"Single\":\"Multiple\";return(e.langFormat(\"accessibility.chartTypes.\"+s+r,i)||e.langFormat(\"accessibility.chartTypes.default\"+r,i))+(n?\" \"+n:\"\");}(e,t,r):e.langFormat(\"accessibility.chartTypes.emptyChart\",r);}(e,e.types):\"\";}},{key:\"getDataTableButtonText\",value:function getDataTableButtonText(e){var t=this.chart;return'<button id=\"'+e+'\">'+t.langFormat(\"accessibility.table.viewAsDataTableButtonText\",{chart:t,chartTitle:p(t)})+\"</button>\";}},{key:\"getSonifyButtonText\",value:function getSonifyButtonText(e){var t=this.chart;return t.options.sonification&&!1===t.options.sonification.enabled?\"\":'<button id=\"'+e+'\">'+t.langFormat(\"accessibility.sonification.playAsSoundButtonText\",{chart:t,chartTitle:p(t)})+\"</button>\";}},{key:\"getSubtitleText\",value:function getSubtitleText(){var e=this.chart.options.subtitle;return v(e&&e.text||\"\",this.chart.renderer.forExport);}},{key:\"getEndOfChartMarkerText\",value:function getEndOfChartMarkerText(){var e=f(\"highcharts-end-of-chart-marker-\".concat(this.chart.index));if(e)return e.outerHTML;var t=this.chart,i=t.langFormat(\"accessibility.screenReaderSection.endOfChartMarker\",{chart:t});return'<div id=\"highcharts-end-of-chart-marker-'+t.index+'\">'+i+\"</div>\";}},{key:\"onDataTableCreated\",value:function onDataTableCreated(e){var t=this.chart;if(t.options.accessibility.enabled){this.viewDataTableButton&&this.viewDataTableButton.setAttribute(\"aria-expanded\",\"true\");var _i120=e.tree.attributes||{};_i120.tabindex=-1,_i120.summary=t.langFormat(\"accessibility.table.tableSummary\",{chart:t}),e.tree.attributes=_i120;}}},{key:\"focusDataTable\",value:function focusDataTable(){var e=this.dataTableDiv,t=e&&e.getElementsByTagName(\"table\")[0];t&&t.focus&&t.focus();}},{key:\"initSonifyButton\",value:function initSonifyButton(e){var _this52=this;var t=this.sonifyButton=f(e),i=this.chart,s=function s(e){t&&(t.setAttribute(\"aria-hidden\",\"true\"),t.setAttribute(\"aria-label\",\"\")),e.preventDefault(),e.stopPropagation();var s=i.langFormat(\"accessibility.sonification.playAsSoundClickAnnouncement\",{chart:i});_this52.announcer.announce(s),setTimeout(function(){t&&(t.removeAttribute(\"aria-hidden\"),t.removeAttribute(\"aria-label\")),i.sonify&&i.sonify();},1e3);};t&&i&&(t.setAttribute(\"tabindex\",-1),t.onclick=function(e){(i.options.accessibility&&i.options.accessibility.screenReaderSection.onPlayAsSoundClick||s).call(this,e,i);});}},{key:\"initDataTableButton\",value:function initDataTableButton(e){var t=this.viewDataTableButton=f(e),i=this.chart,s=e.replace(\"hc-linkto-\",\"\");t&&(C(t,{tabindex:-1,\"aria-expanded\":!!f(s)}),t.onclick=i.options.accessibility.screenReaderSection.onViewDataTableClick||function(){i.viewData();});}},{key:\"getAxesDescription\",value:function getAxesDescription(){var e=this.chart,t=function t(_t176,i){var s=e[_t176];return s.length>1||s[0]&&w(s[0].options.accessibility&&s[0].options.accessibility.enabled,i);},i=!!e.types&&0>e.types.indexOf(\"map\")&&0>e.types.indexOf(\"treemap\")&&0>e.types.indexOf(\"tilemap\"),s=!!e.hasCartesianSeries,n=t(\"xAxis\",!e.angular&&s&&i),r=t(\"yAxis\",s&&i),o={};return n&&(o.xAxis=this.getAxisDescriptionText(\"xAxis\")),r&&(o.yAxis=this.getAxisDescriptionText(\"yAxis\")),o;}},{key:\"getAxisDescriptionText\",value:function getAxisDescriptionText(e){var t=this.chart,i=t[e];return t.langFormat(\"accessibility.axis.\"+e+\"Description\"+(i.length>1?\"Plural\":\"Singular\"),{chart:t,names:i.map(function(e){return d(e);}),ranges:i.map(function(e){return u(e);}),numAxes:i.length});}},{key:\"destroy\",value:function destroy(){this.announcer&&this.announcer.destroy();}}]);return _class10;}(t);}),i(t,\"Accessibility/Components/MenuComponent.js\",[t[\"Core/Utilities.js\"],t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t,i,s,n){var r=e.attr,o=s.getChartTitle,a=s.unhideChartElementFromAT,l=n.getFakeMouseEvent;function h(e){return e.exportSVGElements&&e.exportSVGElements[0];}var c=/*#__PURE__*/function(_t177){_inherits(c,_t177);var _super27=_createSuper(c);function c(){_classCallCheck(this,c);return _super27.apply(this,arguments);}_createClass(c,[{key:\"init\",value:function init(){var e=this.chart,t=this;this.addEvent(e,\"exportMenuShown\",function(){t.onMenuShown();}),this.addEvent(e,\"exportMenuHidden\",function(){t.onMenuHidden();}),this.createProxyGroup();}},{key:\"onMenuHidden\",value:function onMenuHidden(){var e=this.chart.exportContextMenu;e&&e.setAttribute(\"aria-hidden\",\"true\"),this.setExportButtonExpandedState(\"false\");}},{key:\"onMenuShown\",value:function onMenuShown(){var e=this.chart,t=e.exportContextMenu;t&&(this.addAccessibleContextMenuAttribs(),a(e,t)),this.setExportButtonExpandedState(\"true\");}},{key:\"setExportButtonExpandedState\",value:function setExportButtonExpandedState(e){this.exportButtonProxy&&this.exportButtonProxy.innerElement.setAttribute(\"aria-expanded\",e);}},{key:\"onChartRender\",value:function onChartRender(){var e=this.chart,t=e.focusElement,i=e.accessibility;this.proxyProvider.clearGroup(\"chartMenu\"),this.proxyMenuButton(),this.exportButtonProxy&&t&&t===e.exportingGroup&&(t.focusBorder?e.setFocusToElement(t,this.exportButtonProxy.innerElement):i&&i.keyboardNavigation.tabindexContainer.focus());}},{key:\"proxyMenuButton\",value:function proxyMenuButton(){var e=this.chart,t=this.proxyProvider,i=h(e);(function(e){var t=e.options.exporting,i=h(e);return!!(t&&!1!==t.enabled&&t.accessibility&&t.accessibility.enabled&&i&&i.element);})(e)&&i&&(this.exportButtonProxy=t.addProxyElement(\"chartMenu\",{click:i},\"button\",{\"aria-label\":e.langFormat(\"accessibility.exporting.menuButtonLabel\",{chart:e,chartTitle:o(e)}),\"aria-expanded\":!1,title:e.options.lang.contextButtonTitle||null}));}},{key:\"createProxyGroup\",value:function createProxyGroup(){this.chart&&this.proxyProvider&&this.proxyProvider.addGroup(\"chartMenu\");}},{key:\"addAccessibleContextMenuAttribs\",value:function addAccessibleContextMenuAttribs(){var e=this.chart,t=e.exportDivElements;if(t&&t.length){t.forEach(function(e){e&&(\"LI\"!==e.tagName||e.children&&e.children.length?e.setAttribute(\"aria-hidden\",\"true\"):e.setAttribute(\"tabindex\",-1));});var _i121=t[0]&&t[0].parentNode;_i121&&r(_i121,{\"aria-hidden\":void 0,\"aria-label\":e.langFormat(\"accessibility.exporting.chartMenuLabel\",{chart:e}),role:\"list\"});}}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){var e=this.keyCodes,t=this.chart,s=this;return new i(t,{keyCodeMap:[[[e.left,e.up],function(){return s.onKbdPrevious(this);}],[[e.right,e.down],function(){return s.onKbdNext(this);}],[[e.enter,e.space],function(){return s.onKbdClick(this);}]],validate:function validate(){return!!t.exporting&&!1!==t.options.exporting.enabled&&!1!==t.options.exporting.accessibility.enabled;},init:function init(){var e=s.exportButtonProxy,i=s.chart.exportingGroup;e&&i&&t.setFocusToElement(i,e.innerElement);},terminate:function terminate(){t.hideExportMenu();}});}},{key:\"onKbdPrevious\",value:function onKbdPrevious(e){var t=this.chart,i=t.options.accessibility,s=e.response,n=t.highlightedExportItemIx||0;for(;n--;)if(t.highlightExportItem(n))return s.success;return i.keyboardNavigation.wrapAround?(t.highlightLastExportItem(),s.success):s.prev;}},{key:\"onKbdNext\",value:function onKbdNext(e){var t=this.chart,i=t.options.accessibility,s=e.response;for(var _e168=(t.highlightedExportItemIx||0)+1;_e168<t.exportDivElements.length;++_e168)if(t.highlightExportItem(_e168))return s.success;return i.keyboardNavigation.wrapAround?(t.highlightExportItem(0),s.success):s.next;}},{key:\"onKbdClick\",value:function onKbdClick(e){var t=this.chart,i=t.exportDivElements[t.highlightedExportItemIx],s=h(t).element;return t.openMenu?this.fakeClickEvent(i):(this.fakeClickEvent(s),t.highlightExportItem(0)),e.response.success;}}]);return c;}(t);return function(e){function t(){var e=h(this);if(e){var _t178=e.element;_t178.onclick&&_t178.onclick(l(\"click\"));}}function i(){var e=this.exportDivElements;e&&this.exportContextMenu&&this.openMenu&&(e.forEach(function(e){e&&\"highcharts-menu-item\"===e.className&&e.onmouseout&&e.onmouseout(l(\"mouseout\"));}),this.highlightedExportItemIx=0,this.exportContextMenu.hideMenu(),this.container.focus());}function s(e){var t=this.exportDivElements&&this.exportDivElements[e],i=this.exportDivElements&&this.exportDivElements[this.highlightedExportItemIx];if(t&&\"LI\"===t.tagName&&!(t.children&&t.children.length)){var _s113=!!(this.renderTo.getElementsByTagName(\"g\")[0]||{}).focus;return t.focus&&_s113&&t.focus(),i&&i.onmouseout&&i.onmouseout(l(\"mouseout\")),t.onmouseover&&t.onmouseover(l(\"mouseover\")),this.highlightedExportItemIx=e,!0;}return!1;}function n(){if(this.exportDivElements){var _e169=this.exportDivElements.length;for(;_e169--;)if(this.highlightExportItem(_e169))return!0;}return!1;}e.compose=function(e){var r=e.prototype;r.hideExportMenu||(r.hideExportMenu=i,r.highlightExportItem=s,r.highlightLastExportItem=n,r.showExportMenu=t);};}(c||(c={})),c;}),i(t,\"Accessibility/KeyboardNavigation.js\",[t[\"Core/Globals.js\"],t[\"Accessibility/Components/MenuComponent.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/Utils/EventProvider.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t,i,s,n){var r=e.doc,o=e.win,a=i.addEvent,l=i.defined,h=i.fireEvent,c=n.getElement,d=n.simulatedEventTarget;var u=/*#__PURE__*/function(){function u(e,t){_classCallCheck(this,u);this.currentModuleIx=NaN,this.modules=[],this.init(e,t);}_createClass(u,[{key:\"init\",value:function init(e,t){var _this53=this;var i=this.eventProvider=new s();this.chart=e,this.components=t,this.modules=[],this.currentModuleIx=0,this.update(),i.addEvent(this.tabindexContainer,\"keydown\",function(e){return _this53.onKeydown(e);}),i.addEvent(this.tabindexContainer,\"focus\",function(e){return _this53.onFocus(e);}),[\"mouseup\",\"touchend\"].forEach(function(e){return i.addEvent(r,e,function(e){return _this53.onMouseUp(e);});}),[\"mousedown\",\"touchstart\"].forEach(function(t){return i.addEvent(e.renderTo,t,function(){_this53.isClickingChart=!0;});});}},{key:\"update\",value:function update(e){var t=this.chart.options.accessibility,i=t&&t.keyboardNavigation,s=this.components;this.updateContainerTabindex(),i&&i.enabled&&e&&e.length?(this.modules=e.reduce(function(e,t){var i=s[t].getKeyboardNavigation();return e.concat(i);},[]),this.updateExitAnchor()):(this.modules=[],this.currentModuleIx=0,this.removeExitAnchor());}},{key:\"updateExitAnchor\",value:function updateExitAnchor(){var e=c(\"highcharts-end-of-chart-marker-\".concat(this.chart.index));this.removeExitAnchor(),e?(this.makeElementAnExitAnchor(e),this.exitAnchor=e):this.createExitAnchor();}},{key:\"move\",value:function move(e){var t=this.modules&&this.modules[this.currentModuleIx];t&&t.terminate&&t.terminate(e),this.chart.focusElement&&this.chart.focusElement.removeFocusBorder(),this.currentModuleIx+=e;var i=this.modules&&this.modules[this.currentModuleIx];if(i){if(i.validate&&!i.validate())return this.move(e);if(i.init)return i.init(e),!0;}return this.currentModuleIx=0,this.exiting=!0,e>0?this.exitAnchor&&this.exitAnchor.focus():this.tabindexContainer.focus(),!1;}},{key:\"onFocus\",value:function onFocus(e){var t=this.chart,i=e.relatedTarget&&t.container.contains(e.relatedTarget),s=t.options.accessibility,n=s&&s.keyboardNavigation;if(n&&n.enabled&&!this.exiting&&!this.tabbingInBackwards&&!this.isClickingChart&&!i){var _e170=this.getFirstValidModuleIx();null!==_e170&&(this.currentModuleIx=_e170,this.modules[_e170].init(1));}this.keyboardReset=!1,this.exiting=!1;}},{key:\"onMouseUp\",value:function onMouseUp(e){if(delete this.isClickingChart,!this.keyboardReset&&e.relatedTarget!==d){var _t179=this.chart;if(!e.target||!_t179.container.contains(e.target)){var _e171=this.modules&&this.modules[this.currentModuleIx||0];_e171&&_e171.terminate&&_e171.terminate(),this.currentModuleIx=0;}_t179.focusElement&&(_t179.focusElement.removeFocusBorder(),delete _t179.focusElement),this.keyboardReset=!0;}}},{key:\"onKeydown\",value:function onKeydown(e){var t;var i=e||o.event,s=this.modules&&this.modules.length&&this.modules[this.currentModuleIx],n=i.target;if((!n||\"INPUT\"!==n.nodeName||n.classList.contains(\"highcharts-a11y-proxy-element\"))&&(this.keyboardReset=!1,this.exiting=!1,s)){var _e172=s.run(i);_e172===s.response.success?t=!0:_e172===s.response.prev?t=this.move(-1):_e172===s.response.next&&(t=this.move(1)),t&&(i.preventDefault(),i.stopPropagation());}}},{key:\"updateContainerTabindex\",value:function updateContainerTabindex(){var e;var t=this.chart.options.accessibility,i=t&&t.keyboardNavigation,s=!(i&&!1===i.enabled),n=this.chart,r=n.container;n.renderTo.hasAttribute(\"tabindex\")?(r.removeAttribute(\"tabindex\"),e=n.renderTo):e=r,this.tabindexContainer=e;var o=e.getAttribute(\"tabindex\");s&&!o?e.setAttribute(\"tabindex\",\"0\"):s||n.container.removeAttribute(\"tabindex\");}},{key:\"createExitAnchor\",value:function createExitAnchor(){var e=this.chart,t=this.exitAnchor=r.createElement(\"div\");e.renderTo.appendChild(t),this.makeElementAnExitAnchor(t);}},{key:\"makeElementAnExitAnchor\",value:function makeElementAnExitAnchor(e){var t=this.tabindexContainer.getAttribute(\"tabindex\")||0;e.setAttribute(\"class\",\"highcharts-exit-anchor\"),e.setAttribute(\"tabindex\",t),e.setAttribute(\"aria-hidden\",!1),this.addExitAnchorEventsToEl(e);}},{key:\"removeExitAnchor\",value:function removeExitAnchor(){var _this54=this;if(this.exitAnchor){var _e173=this.eventProvider.eventRemovers.find(function(e){return e.element===_this54.exitAnchor;});_e173&&l(_e173.remover)&&this.eventProvider.removeEvent(_e173.remover),this.exitAnchor.parentNode&&this.exitAnchor.parentNode.removeChild(this.exitAnchor),delete this.exitAnchor;}}},{key:\"addExitAnchorEventsToEl\",value:function addExitAnchorEventsToEl(e){var t=this.chart,i=this;this.eventProvider.addEvent(e,\"focus\",function(e){var s=e||o.event,n=!(s.relatedTarget&&t.container.contains(s.relatedTarget)||i.exiting);if(t.focusElement&&delete t.focusElement,n){if(i.tabbingInBackwards=!0,i.tabindexContainer.focus(),delete i.tabbingInBackwards,s.preventDefault(),i.modules&&i.modules.length){i.currentModuleIx=i.modules.length-1;var _e174=i.modules[i.currentModuleIx];_e174&&_e174.validate&&!_e174.validate()?i.move(-1):_e174&&_e174.init(-1);}}else i.exiting=!1;});}},{key:\"getFirstValidModuleIx\",value:function getFirstValidModuleIx(){var e=this.modules.length;for(var _t180=0;_t180<e;++_t180){var _e175=this.modules[_t180];if(!_e175.validate||_e175.validate())return _t180;}return null;}},{key:\"destroy\",value:function destroy(){this.removeExitAnchor(),this.eventProvider.removeAddedEvents(),this.chart.container.removeAttribute(\"tabindex\");}}]);return u;}();return function(i){function s(){var e=this;h(this,\"dismissPopupContent\",{},function(){e.tooltip&&e.tooltip.hide(0),e.hideExportMenu();});}function n(t){27===(t.which||t.keyCode)&&e.charts&&e.charts.forEach(function(e){e&&e.dismissPopupContent&&e.dismissPopupContent();});}i.compose=function(e){t.compose(e);var i=e.prototype;return i.dismissPopupContent||(i.dismissPopupContent=s,a(r,\"keydown\",n)),e;};}(u||(u={})),u;}),i(t,\"Accessibility/Components/LegendComponent.js\",[t[\"Core/Animation/AnimationUtilities.js\"],t[\"Core/Globals.js\"],t[\"Core/Legend/Legend.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t,i,s,n,r,o,a){var l=e.animObject,h=t.doc,c=s.addEvent,d=s.fireEvent,u=s.isNumber,p=s.pick,g=s.syncTimeout,m=o.getChartTitle,b=a.stripHTMLTagsFromString,y=a.addClass,f=a.removeClass;function x(e){var t=e.legend&&e.legend.allItems,i=e.options.legend.accessibility||{},s=e.colorAxis&&e.colorAxis.some(function(e){return!e.dataClasses||!e.dataClasses.length;});return!!(t&&t.length&&!s&&!1!==i.enabled);}function v(e,t){var i=t.legendItem||{};for(var _i122=0,_arr9=(t.setState(e?\"hover\":\"\",!0),[\"group\",\"label\",\"symbol\"]);_i122<_arr9.length;_i122++){var _s114=_arr9[_i122];var _t181=i[_s114],_n53=_t181&&_t181.element||_t181;_n53&&d(_n53,e?\"mouseover\":\"mouseout\");}}var A=/*#__PURE__*/function(_n54){_inherits(A,_n54);var _super28=_createSuper(A);function A(){var _this55;_classCallCheck(this,A);_this55=_super28.apply(this,arguments),_this55.highlightedLegendItemIx=NaN,_this55.proxyGroup=null;return _this55;}_createClass(A,[{key:\"init\",value:function init(){var e=this;this.recreateProxies(),this.addEvent(i,\"afterScroll\",function(){this.chart===e.chart&&(e.proxyProvider.updateGroupProxyElementPositions(\"legend\"),e.updateLegendItemProxyVisibility(),e.highlightedLegendItemIx>-1&&this.chart.highlightLegendItem(e.highlightedLegendItemIx));}),this.addEvent(i,\"afterPositionItem\",function(t){this.chart===e.chart&&this.chart.renderer&&e.updateProxyPositionForItem(t.item);}),this.addEvent(i,\"afterRender\",function(){this.chart===e.chart&&this.chart.renderer&&e.recreateProxies()&&g(function(){return e.proxyProvider.updateGroupProxyElementPositions(\"legend\");},l(p(this.chart.renderer.globalAnimation,!0)).duration);});}},{key:\"updateLegendItemProxyVisibility\",value:function updateLegendItemProxyVisibility(){var e;var t=this.chart,i=t.legend,s=i.allItems||[],n=i.currentPage||1,r=i.clipHeight||0;s.forEach(function(s){if(s.a11yProxyElement){var _o69=i.pages&&i.pages.length,_a31=s.a11yProxyElement.element,_l16=!1;if(e=s.legendItem||{},_o69){var _t182=e.pageIx||0;_l16=(e.y||0)+(e.label?Math.round(e.label.getBBox().height):0)-i.pages[_t182]>r||_t182!==n-1;}_l16?t.styledMode?y(_a31,\"highcharts-a11y-invisible\"):_a31.style.visibility=\"hidden\":(f(_a31,\"highcharts-a11y-invisible\"),_a31.style.visibility=\"\");}});}},{key:\"onChartRender\",value:function onChartRender(){x(this.chart)||this.removeProxies();}},{key:\"highlightAdjacentLegendPage\",value:function highlightAdjacentLegendPage(e){var t=this.chart,i=t.legend,s=(i.currentPage||1)+e,n=i.pages||[];if(s>0&&s<=n.length){var _e176=0;var _iteratorNormalCompletion36=true;var _didIteratorError36=false;var _iteratorError36=undefined;try{for(var _iterator36=i.allItems[Symbol.iterator](),_step36;!(_iteratorNormalCompletion36=(_step36=_iterator36.next()).done);_iteratorNormalCompletion36=true){var _n55=_step36.value;((_n55.legendItem||{}).pageIx||0)+1===s&&t.highlightLegendItem(_e176)&&(this.highlightedLegendItemIx=_e176),++_e176;}}catch(err){_didIteratorError36=true;_iteratorError36=err;}finally{try{if(!_iteratorNormalCompletion36&&_iterator36[\"return\"]!=null){_iterator36[\"return\"]();}}finally{if(_didIteratorError36){throw _iteratorError36;}}}}}},{key:\"updateProxyPositionForItem\",value:function updateProxyPositionForItem(e){e.a11yProxyElement&&e.a11yProxyElement.refreshPosition();}},{key:\"recreateProxies\",value:function recreateProxies(){var e=h.activeElement,t=this.proxyGroup,i=e&&t&&t.contains(e);return this.removeProxies(),!!x(this.chart)&&(this.addLegendProxyGroup(),this.proxyLegendItems(),this.updateLegendItemProxyVisibility(),this.updateLegendTitle(),i&&this.chart.highlightLegendItem(this.highlightedLegendItemIx),!0);}},{key:\"removeProxies\",value:function removeProxies(){this.proxyProvider.removeGroup(\"legend\");}},{key:\"updateLegendTitle\",value:function updateLegendTitle(){var e=this.chart,t=b((e.legend&&e.legend.options.title&&e.legend.options.title.text||\"\").replace(/<br ?\\/?>/g,\" \"),e.renderer.forExport),i=e.langFormat(\"accessibility.legend.legendLabel\"+(t?\"\":\"NoTitle\"),{chart:e,legendTitle:t,chartTitle:m(e)});this.proxyProvider.updateGroupAttrs(\"legend\",{\"aria-label\":i});}},{key:\"addLegendProxyGroup\",value:function addLegendProxyGroup(){var e=\"all\"===this.chart.options.accessibility.landmarkVerbosity?\"region\":null;this.proxyGroup=this.proxyProvider.addGroup(\"legend\",\"ul\",{\"aria-label\":\"_placeholder_\",role:e});}},{key:\"proxyLegendItems\",value:function proxyLegendItems(){var e;var t=this;((this.chart.legend||{}).allItems||[]).forEach(function(i){(e=i.legendItem||{}).label&&e.label.element&&t.proxyLegendItem(i);});}},{key:\"proxyLegendItem\",value:function proxyLegendItem(e){var t=e.legendItem||{};if(!t.label||!t.group)return;var i=this.chart.langFormat(\"accessibility.legend.legendItem\",{chart:this.chart,itemName:b(e.name,this.chart.renderer.forExport),item:e}),s={tabindex:-1,\"aria-pressed\":e.visible,\"aria-label\":i},n=t.group.div?t.label:t.group;e.a11yProxyElement=this.proxyProvider.addProxyElement(\"legend\",{click:t.label,visual:n.element},\"button\",s);}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){var e=this.keyCodes,t=this,i=this.chart;return new r(i,{keyCodeMap:[[[e.left,e.right,e.up,e.down],function(e){return t.onKbdArrowKey(this,e);}],[[e.enter,e.space],function(){return t.onKbdClick(this);}],[[e.pageDown,e.pageUp],function(i){var s=i===e.pageDown?1:-1;return t.highlightAdjacentLegendPage(s),this.response.success;}]],validate:function validate(){return t.shouldHaveLegendNavigation();},init:function init(){i.highlightLegendItem(0),t.highlightedLegendItemIx=0;},terminate:function terminate(){t.highlightedLegendItemIx=-1,i.legend.allItems.forEach(function(e){return v(!1,e);});}});}},{key:\"onKbdArrowKey\",value:function onKbdArrowKey(e,t){var _this$keyCodes=this.keyCodes,i=_this$keyCodes.left,s=_this$keyCodes.up,n=this.highlightedLegendItemIx,r=this.chart,o=r.legend.allItems.length,a=r.options.accessibility.keyboardNavigation.wrapAround,l=t===i||t===s?-1:1;return r.highlightLegendItem(n+l)?this.highlightedLegendItemIx+=l:a&&o>1&&(this.highlightedLegendItemIx=l>0?0:o-1,r.highlightLegendItem(this.highlightedLegendItemIx)),e.response.success;}},{key:\"onKbdClick\",value:function onKbdClick(e){var t=this.chart.legend.allItems[this.highlightedLegendItemIx];return t&&t.a11yProxyElement&&t.a11yProxyElement.click(),e.response.success;}},{key:\"shouldHaveLegendNavigation\",value:function shouldHaveLegendNavigation(){if(!x(this.chart))return!1;var e=this.chart,t=(e.options.legend||{}).accessibility||{};return!!(e.legend.display&&t.keyboardNavigation&&t.keyboardNavigation.enabled);}},{key:\"destroy\",value:function destroy(){this.removeProxies();}}]);return A;}(n);return function(e){function t(e){var t=this.legend.allItems,i=this.accessibility&&this.accessibility.components.legend.highlightedLegendItemIx,s=t[e],n=(s===null||s===void 0?void 0:s.legendItem)||{};if(s){u(i)&&t[i]&&v(!1,t[i]),function(e,t){var i=(e.allItems[t].legendItem||{}).pageIx,s=e.currentPage;void 0!==i&&i+1!==s&&e.scroll(1+i-s);}(this.legend,e);var _r47=n.label,_o70=s.a11yProxyElement&&s.a11yProxyElement.innerElement;return _r47&&_r47.element&&_o70&&this.setFocusToElement(_r47,_o70),v(!0,s),!0;}return!1;}function i(e){var t=this.chart.options.accessibility,i=e.item;t.enabled&&i&&i.a11yProxyElement&&i.a11yProxyElement.innerElement.setAttribute(\"aria-pressed\",e.visible?\"true\":\"false\");}e.compose=function(e,s){var n=e.prototype;n.highlightLegendItem||(n.highlightLegendItem=t,c(s,\"afterColorizeItem\",i));};}(A||(A={})),A;}),i(t,\"Stock/Navigator/ChartNavigatorComposition.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i;var s=e.isTouchDevice,n=t.addEvent,r=t.merge,o=t.pick,a=[];function l(){this.navigator&&this.navigator.setBaseSeries(null,!1);}function h(){var e,t,i;var s=this.legend,n=this.navigator;if(n){var _this$scrollbar;e=s&&s.options,t=n.xAxis,i=n.yAxis;var _r48=n.scrollbarHeight,_a32=n.scrollButtonSize;this.inverted?(n.left=n.opposite?this.chartWidth-_r48-n.height:this.spacing[3]+_r48,n.top=this.plotTop+_a32):(n.left=o(t.left,this.plotLeft+_a32),n.top=n.navigatorOptions.top||this.chartHeight-n.height-_r48-(((_this$scrollbar=this.scrollbar)===null||_this$scrollbar===void 0?void 0:_this$scrollbar.options.margin)||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(e&&\"bottom\"===e.verticalAlign&&\"proximate\"!==e.layout&&e.enabled&&!e.floating?s.legendHeight+o(e.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),t&&i&&(this.inverted?t.options.left=i.options.left=n.left:t.options.top=i.options.top=n.top,t.setAxisSize(),i.setAxisSize());}}function c(e){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new i(this),o(e.redraw,!0)&&this.redraw(e.animation));}function d(){var e=this.options;(e.navigator.enabled||e.scrollbar.enabled)&&(this.scroller=this.navigator=new i(this));}function u(){var e=this.options,t=e.navigator,i=e.rangeSelector;if((t&&t.enabled||i&&i.enabled)&&(!s&&\"x\"===this.zooming.type||s&&\"x\"===this.zooming.pinchType))return!1;}function p(e){var t=e.navigator;if(t&&e.xAxis[0]){var _i123=e.xAxis[0].getExtremes();t.render(_i123.min,_i123.max);}}function g(e){var t=e.options.navigator||{},i=e.options.scrollbar||{};!this.navigator&&!this.scroller&&(t.enabled||i.enabled)&&(r(!0,this.options.navigator,t),r(!0,this.options.scrollbar,i),delete e.options.navigator,delete e.options.scrollbar);}return{compose:function compose(e,s){if(t.pushUnique(a,e)){var _t183=e.prototype;i=s,_t183.callbacks.push(p),n(e,\"afterAddSeries\",l),n(e,\"afterSetChartSize\",h),n(e,\"afterUpdate\",c),n(e,\"beforeRender\",d),n(e,\"beforeShowResetZoom\",u),n(e,\"update\",g);}}};}),i(t,\"Core/Axis/NavigatorAxisComposition.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=e.isTouchDevice,s=t.addEvent,n=t.correctFloat,r=t.defined,o=t.isNumber,a=t.pick;function l(){this.navigatorAxis||(this.navigatorAxis=new c(this));}function h(e){var t;var s=this.chart,n=s.options,o=n.navigator,a=this.navigatorAxis,l=s.zooming.pinchType,h=n.rangeSelector,c=s.zooming.type;if(this.isXAxis&&(o!==null&&o!==void 0&&o.enabled||h!==null&&h!==void 0&&h.enabled)){if(\"y\"===c&&\"zoom\"===e.trigger)t=!1;else if((\"zoom\"===e.trigger&&\"xy\"===c||i&&\"xy\"===l)&&this.options.range){var _t184=a.previousZoom;r(e.min)?a.previousZoom=[this.min,this.max]:_t184&&(e.min=_t184[0],e.max=_t184[1],a.previousZoom=void 0);}}void 0!==t&&e.preventDefault();}var c=/*#__PURE__*/function(){function c(e){_classCallCheck(this,c);this.axis=e;}_createClass(c,[{key:\"destroy\",value:function destroy(){this.axis=void 0;}},{key:\"toFixedRange\",value:function toFixedRange(e,t,i,s){var l=this.axis,h=(l.pointRange||0)/2,_c14=a(i,l.translate(e,!0,!l.horiz)),d=a(s,l.translate(t,!0,!l.horiz));return r(i)||(_c14=n(_c14+h)),r(s)||(d=n(d-h)),o(_c14)&&o(d)||(_c14=d=void 0),{min:_c14,max:d};}}],[{key:\"compose\",value:function compose(e){e.keepProps.includes(\"navigatorAxis\")||(e.keepProps.push(\"navigatorAxis\"),s(e,\"init\",l),s(e,\"setExtremes\",h));}}]);return c;}();return c;}),i(t,\"Stock/Navigator/NavigatorDefaults.js\",[t[\"Core/Color/Color.js\"],t[\"Core/Series/SeriesRegistry.js\"]],function(e,t){var i=e.parse,s=t.seriesTypes;return{height:40,margin:25,maskInside:!0,handles:{width:7,borderRadius:0,height:15,symbols:[\"navigator-handle\",\"navigator-handle\"],enabled:!0,lineWidth:1,backgroundColor:\"#f2f2f2\",borderColor:\"#999999\"},maskFill:i(\"#667aff\").setOpacity(.3).get(),outlineColor:\"#999999\",outlineWidth:1,series:{type:void 0===s.areaspline?\"line\":\"areaspline\",fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:\"average\",enabled:!0,groupPixelWidth:2,firstAnchor:\"firstPoint\",anchor:\"middle\",lastAnchor:\"lastPoint\",units:[[\"millisecond\",[1,2,5,10,20,25,50,100,200,500]],[\"second\",[1,2,5,10,15,30]],[\"minute\",[1,2,5,10,15,30]],[\"hour\",[1,2,3,4,6,8,12]],[\"day\",[1,2,3,4]],[\"week\",[1,2,3]],[\"month\",[1,3,6]],[\"year\",null]]},dataLabels:{enabled:!1,zIndex:2},id:\"highcharts-navigator-series\",className:\"highcharts-navigator-series\",lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{className:\"highcharts-navigator-xaxis\",tickLength:0,lineWidth:0,gridLineColor:\"#e6e6e6\",id:\"navigator-x-axis\",gridLineWidth:1,tickPixelInterval:200,labels:{align:\"left\",style:{color:\"#000000\",fontSize:\"0.7em\",opacity:.6,textOutline:\"2px contrast\"},x:3,y:-4},crosshair:!1},yAxis:{className:\"highcharts-navigator-yaxis\",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,id:\"navigator-y-axis\",maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}};}),i(t,\"Stock/Navigator/NavigatorSymbols.js\",[t[\"Core/Renderer/SVG/Symbols.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i=t.relativeLength;return{\"navigator-handle\":function navigatorHandle(t,s,n,r){var o=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var a=o.width?o.width/2:n,l=i(o.borderRadius||0,Math.min(2*a,r));return[[\"M\",-1.5,(r=o.height||r)/2-3.5],[\"L\",-1.5,r/2+4.5],[\"M\",.5,r/2-3.5],[\"L\",.5,r/2+4.5]].concat(_toConsumableArray(e.rect(-a-1,.5,2*a+1,r,{r:l})));}};}),i(t,\"Stock/Utilities/StockUtilities.js\",[t[\"Core/Utilities.js\"]],function(e){var t=e.defined;return{setFixedRange:function setFixedRange(e){var i=this.xAxis[0];t(i.dataMax)&&t(i.dataMin)&&e?this.fixedRange=Math.min(e,i.dataMax-i.dataMin):this.fixedRange=e;}};}),i(t,\"Stock/Navigator/NavigatorComposition.js\",[t[\"Core/Defaults.js\"],t[\"Core/Globals.js\"],t[\"Core/Axis/NavigatorAxisComposition.js\"],t[\"Stock/Navigator/NavigatorDefaults.js\"],t[\"Stock/Navigator/NavigatorSymbols.js\"],t[\"Core/Renderer/RendererRegistry.js\"],t[\"Stock/Utilities/StockUtilities.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n,r,o,a){var l=e.setOptions,h=t.composed,c=r.getRendererType,d=o.setFixedRange,u=a.addEvent,p=a.extend,g=a.pushUnique;function m(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1);}return{compose:function compose(e,t,r){i.compose(t),g(h,\"Navigator\")&&(e.prototype.setFixedRange=d,p(c().prototype.symbols,n),u(r,\"afterUpdate\",m),l({navigator:s}));}};}),i(t,\"Core/Axis/ScrollbarAxis.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i;var s=e.composed,n=t.addEvent,r=t.defined,o=t.pick,a=t.pushUnique;return function(e){var t;function i(e){var t=o(e.options&&e.options.min,e.min),i=o(e.options&&e.options.max,e.max);return{axisMin:t,axisMax:i,scrollMin:r(e.dataMin)?Math.min(t,e.min,e.dataMin,o(e.threshold,1/0)):t,scrollMax:r(e.dataMax)?Math.max(i,e.max,e.dataMax,o(e.threshold,-1/0)):i};}function l(){var e=this.scrollbar,t=e&&!e.options.opposite,i=this.horiz?2:t?3:1;e&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[i]+=e.size+(e.options.margin||0));}function h(){var e=this;e.options&&e.options.scrollbar&&e.options.scrollbar.enabled&&(e.options.scrollbar.vertical=!e.horiz,e.options.startOnTick=e.options.endOnTick=!1,e.scrollbar=new t(e.chart.renderer,e.options.scrollbar,e.chart),n(e.scrollbar,\"changed\",function(t){var s,n;var _i124=i(e),o=_i124.axisMin,a=_i124.axisMax,l=_i124.scrollMin,h=_i124.scrollMax,c=h-l;if(r(o)&&r(a)){if(e.horiz&&!e.reversed||!e.horiz&&e.reversed?(s=l+c*this.to,n=l+c*this.from):(s=l+c*(1-this.from),n=l+c*(1-this.to)),this.shouldUpdateExtremes(t.DOMType)){var _i125=\"mousemove\"!==t.DOMType&&\"touchmove\"!==t.DOMType&&void 0;e.setExtremes(n,s,!0,_i125,t);}else this.setRange(this.from,this.to);}}));}function c(){var e,t,s;var _i126=i(this),n=_i126.scrollMin,o=_i126.scrollMax,a=this.scrollbar,l=this.axisTitleMargin+(this.titleOffset||0),h=this.chart.scrollbarsOffsets,c=this.options.margin||0;if(a&&h){if(this.horiz)this.opposite||(h[1]+=l),a.position(this.left,this.top+this.height+2+h[1]-(this.opposite?c:0),this.width,this.height),this.opposite||(h[1]+=c),e=1;else{var _t185;this.opposite&&(h[0]+=l),_t185=a.options.opposite?this.left+this.width+2+h[0]-(this.opposite?0:c):this.opposite?0:c,a.position(_t185,this.top,this.width,this.height),this.opposite&&(h[0]+=c),e=0;}if(h[e]+=a.size+(a.options.margin||0),isNaN(n)||isNaN(o)||!r(this.min)||!r(this.max)||this.dataMin===this.dataMax)a.setRange(0,1);else if(this.min===this.max){var _e177=this.pointRange/(this.dataMax+1);t=_e177*this.min,s=_e177*(this.max+1),a.setRange(t,s);}else t=(this.min-n)/(o-n),s=(this.max-n)/(o-n),this.horiz&&!this.reversed||!this.horiz&&this.reversed?a.setRange(t,s):a.setRange(1-s,1-t);}}e.compose=function(e,i){a(s,\"Axis.Scrollbar\")&&(t=i,n(e,\"afterGetOffset\",l),n(e,\"afterInit\",h),n(e,\"afterRender\",c));};}(i||(i={})),i;}),i(t,\"Stock/Scrollbar/ScrollbarDefaults.js\",[],function(){return{height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:\"#cccccc\",barBorderWidth:0,barBorderColor:\"#cccccc\",buttonArrowColor:\"#333333\",buttonBackgroundColor:\"#e6e6e6\",buttonBorderColor:\"#cccccc\",buttonBorderWidth:1,rifleColor:\"none\",trackBackgroundColor:\"rgba(255, 255, 255, 0.001)\",trackBorderColor:\"#cccccc\",trackBorderRadius:5,trackBorderWidth:1};}),i(t,\"Stock/Scrollbar/Scrollbar.js\",[t[\"Core/Defaults.js\"],t[\"Core/Globals.js\"],t[\"Core/Axis/ScrollbarAxis.js\"],t[\"Stock/Scrollbar/ScrollbarDefaults.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n){var r=e.defaultOptions,o=n.addEvent,a=n.correctFloat,l=n.crisp,h=n.defined,c=n.destroyObjectProperties,d=n.fireEvent,u=n.merge,p=n.pick,g=n.removeEvent;var m=/*#__PURE__*/function(){function m(e,t,i){_classCallCheck(this,m);this._events=[],this.chartX=0,this.chartY=0,this.from=0,this.scrollbarButtons=[],this.scrollbarLeft=0,this.scrollbarStrokeWidth=1,this.scrollbarTop=0,this.size=0,this.to=0,this.trackBorderWidth=1,this.x=0,this.y=0,this.init(e,t,i);}_createClass(m,[{key:\"addEvents\",value:function addEvents(){var e=this.options.inverted?[1,0]:[0,1],t=this.scrollbarButtons,i=this.scrollbarGroup.element,s=this.track.element,n=this.mouseDownHandler.bind(this),r=this.mouseMoveHandler.bind(this),a=this.mouseUpHandler.bind(this),l=[[t[e[0]].element,\"click\",this.buttonToMinClick.bind(this)],[t[e[1]].element,\"click\",this.buttonToMaxClick.bind(this)],[s,\"click\",this.trackClick.bind(this)],[i,\"mousedown\",n],[i.ownerDocument,\"mousemove\",r],[i.ownerDocument,\"mouseup\",a],[i,\"touchstart\",n],[i.ownerDocument,\"touchmove\",r],[i.ownerDocument,\"touchend\",a]];l.forEach(function(e){o.apply(null,e);}),this._events=l;}},{key:\"buttonToMaxClick\",value:function buttonToMaxClick(e){var t=(this.to-this.from)*p(this.options.step,.2);this.updatePosition(this.from+t,this.to+t),d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMEvent:e});}},{key:\"buttonToMinClick\",value:function buttonToMinClick(e){var t=a(this.to-this.from)*p(this.options.step,.2);this.updatePosition(a(this.from-t),a(this.to-t)),d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMEvent:e});}},{key:\"cursorToScrollbarPosition\",value:function cursorToScrollbarPosition(e){var t=this.options,i=t.minWidth>this.calculatedWidth?t.minWidth:0;return{chartX:(e.chartX-this.x-this.xOffset)/(this.barWidth-i),chartY:(e.chartY-this.y-this.yOffset)/(this.barWidth-i)};}},{key:\"destroy\",value:function destroy(){var e=this,t=e.chart.scroller;e.removeEvents(),[\"track\",\"scrollbarRifles\",\"scrollbar\",\"scrollbarGroup\",\"group\"].forEach(function(t){e[t]&&e[t].destroy&&(e[t]=e[t].destroy());}),t&&e===t.scrollbar&&(t.scrollbar=null,c(t.scrollbarButtons));}},{key:\"drawScrollbarButton\",value:function drawScrollbarButton(e){var t=this.renderer,i=this.scrollbarButtons,s=this.options,n=this.size,r=t.g().add(this.group);if(i.push(r),s.buttonsEnabled){var _o71=t.rect().addClass(\"highcharts-scrollbar-button\").add(r);this.chart.styledMode||_o71.attr({stroke:s.buttonBorderColor,\"stroke-width\":s.buttonBorderWidth,fill:s.buttonBackgroundColor}),_o71.attr(_o71.crisp({x:-.5,y:-.5,width:n,height:n,r:s.buttonBorderRadius},_o71.strokeWidth()));var _a33=t.path(m.swapXY([[\"M\",n/2+(e?-1:1),n/2-3],[\"L\",n/2+(e?-1:1),n/2+3],[\"L\",n/2+(e?2:-2),n/2]],s.vertical)).addClass(\"highcharts-scrollbar-arrow\").add(i[e]);this.chart.styledMode||_a33.attr({fill:s.buttonArrowColor});}}},{key:\"init\",value:function init(e,t,i){this.scrollbarButtons=[],this.renderer=e,this.userOptions=t,this.options=u(s,r.scrollbar,t),this.options.margin=p(this.options.margin,10),this.chart=i,this.size=p(this.options.size,this.options.height),t.enabled&&(this.render(),this.addEvents());}},{key:\"mouseDownHandler\",value:function mouseDownHandler(e){var _this$chart$pointer;var t=((_this$chart$pointer=this.chart.pointer)===null||_this$chart$pointer===void 0?void 0:_this$chart$pointer.normalize(e))||e,i=this.cursorToScrollbarPosition(t);this.chartX=i.chartX,this.chartY=i.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0;}},{key:\"mouseMoveHandler\",value:function mouseMoveHandler(e){var _this$chart$pointer2;var t;var i=((_this$chart$pointer2=this.chart.pointer)===null||_this$chart$pointer2===void 0?void 0:_this$chart$pointer2.normalize(e))||e,s=this.options.vertical?\"chartY\":\"chartX\",n=this.initPositions||[];this.grabbedCenter&&(!e.touches||0!==e.touches[0][s])&&(t=this.cursorToScrollbarPosition(i)[s]-this[s],this.hasDragged=!0,this.updatePosition(n[0]+t,n[1]+t),this.hasDragged&&d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMType:e.type,DOMEvent:e}));}},{key:\"mouseUpHandler\",value:function mouseUpHandler(e){this.hasDragged&&d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMType:e.type,DOMEvent:e}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null;}},{key:\"position\",value:function position(e,t,i,s){var _this$options7=this.options,n=_this$options7.buttonsEnabled,_this$options7$margin=_this$options7.margin,r=_this$options7$margin===void 0?0:_this$options7$margin,o=_this$options7.vertical,a=this.rendered?\"animate\":\"attr\",l=s,h=0;this.group.show(),this.x=e,this.y=t+this.trackBorderWidth,this.width=i,this.height=s,this.xOffset=l,this.yOffset=h,o?(this.width=this.yOffset=i=h=this.size,this.xOffset=l=0,this.yOffset=h=n?this.size:0,this.barWidth=s-(n?2*i:0),this.x=e+=r):(this.height=s=this.size,this.xOffset=l=n?this.size:0,this.barWidth=i-(n?2*s:0),this.y=this.y+r),this.group[a]({translateX:e,translateY:this.y}),this.track[a]({width:i,height:s}),this.scrollbarButtons[1][a]({translateX:o?0:i-l,translateY:o?s-h:0});}},{key:\"removeEvents\",value:function removeEvents(){this._events.forEach(function(e){g.apply(null,e);}),this._events.length=0;}},{key:\"render\",value:function render(){var e=this.renderer,t=this.options,i=this.size,s=this.chart.styledMode,n=e.g(\"scrollbar\").attr({zIndex:t.zIndex}).hide().add();this.group=n,this.track=e.rect().addClass(\"highcharts-scrollbar-track\").attr({r:t.trackBorderRadius||0,height:i,width:i}).add(n),s||this.track.attr({fill:t.trackBackgroundColor,stroke:t.trackBorderColor,\"stroke-width\":t.trackBorderWidth});var r=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-l(0,r),y:-l(0,r)}),this.scrollbarGroup=e.g().add(n),this.scrollbar=e.rect().addClass(\"highcharts-scrollbar-thumb\").attr({height:i-r,width:i-r,r:t.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=e.path(m.swapXY([[\"M\",-3,i/4],[\"L\",-3,2*i/3],[\"M\",0,i/4],[\"L\",0,2*i/3],[\"M\",3,i/4],[\"L\",3,2*i/3]],t.vertical)).addClass(\"highcharts-scrollbar-rifles\").add(this.scrollbarGroup),s||(this.scrollbar.attr({fill:t.barBackgroundColor,stroke:t.barBorderColor,\"stroke-width\":t.barBorderWidth}),this.scrollbarRifles.attr({stroke:t.rifleColor,\"stroke-width\":1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-l(0,this.scrollbarStrokeWidth),-l(0,this.scrollbarStrokeWidth)),this.drawScrollbarButton(0),this.drawScrollbarButton(1);}},{key:\"setRange\",value:function setRange(e,t){var i,s;var n=this.options,r=n.vertical,o=n.minWidth,l=this.barWidth,c=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?\"attr\":\"animate\";if(!h(l))return;var d=l*Math.min(t,1);i=Math.ceil(l*(e=Math.max(e,0))),this.calculatedWidth=s=a(d-i),s<o&&(i=(l-o+s)*e,s=o);var u=Math.floor(i+this.xOffset+this.yOffset),p=s/2-.5;this.from=e,this.to=t,r?(this.scrollbarGroup[c]({translateY:u}),this.scrollbar[c]({height:s}),this.scrollbarRifles[c]({translateY:p}),this.scrollbarTop=u,this.scrollbarLeft=0):(this.scrollbarGroup[c]({translateX:u}),this.scrollbar[c]({width:s}),this.scrollbarRifles[c]({translateX:p}),this.scrollbarLeft=u,this.scrollbarTop=0),s<=12?this.scrollbarRifles.hide():this.scrollbarRifles.show(),!1===n.showFull&&(e<=0&&t>=1?this.group.hide():this.group.show()),this.rendered=!0;}},{key:\"shouldUpdateExtremes\",value:function shouldUpdateExtremes(e){return p(this.options.liveRedraw,t.svg&&!t.isTouchDevice&&!this.chart.boosted)||\"mouseup\"===e||\"touchend\"===e||!h(e);}},{key:\"trackClick\",value:function trackClick(e){var _this$chart$pointer3;var t=((_this$chart$pointer3=this.chart.pointer)===null||_this$chart$pointer3===void 0?void 0:_this$chart$pointer3.normalize(e))||e,i=this.to-this.from,s=this.y+this.scrollbarTop,n=this.x+this.scrollbarLeft;this.options.vertical&&t.chartY>s||!this.options.vertical&&t.chartX>n?this.updatePosition(this.from+i,this.to+i):this.updatePosition(this.from-i,this.to-i),d(this,\"changed\",{from:this.from,to:this.to,trigger:\"scrollbar\",DOMEvent:e});}},{key:\"update\",value:function update(e){this.destroy(),this.init(this.chart.renderer,u(!0,this.options,e),this.chart);}},{key:\"updatePosition\",value:function updatePosition(e,t){t>1&&(e=a(1-a(t-e)),t=1),e<0&&(t=a(t-e),e=0),this.from=e,this.to=t;}}],[{key:\"compose\",value:function compose(e){i.compose(e,m);}},{key:\"swapXY\",value:function swapXY(e,t){return t&&e.forEach(function(e){var t;var i=e.length;for(var _s115=0;_s115<i;_s115+=2)\"number\"==typeof(t=e[_s115+1])&&(e[_s115+1]=e[_s115+2],e[_s115+2]=t);}),e;}}]);return m;}();return m.defaultOptions=s,r.scrollbar=u(!0,m.defaultOptions,r.scrollbar),m;}),i(t,\"Stock/Navigator/Navigator.js\",[t[\"Core/Axis/Axis.js\"],t[\"Stock/Navigator/ChartNavigatorComposition.js\"],t[\"Core/Defaults.js\"],t[\"Core/Globals.js\"],t[\"Core/Axis/NavigatorAxisComposition.js\"],t[\"Stock/Navigator/NavigatorComposition.js\"],t[\"Stock/Scrollbar/Scrollbar.js\"],t[\"Core/Renderer/SVG/SVGRenderer.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n,r,o,a,l){var h=i.defaultOptions,c=s.isTouchDevice,d=a.prototype.symbols,u=l.addEvent,p=l.clamp,g=l.correctFloat,m=l.defined,b=l.destroyObjectProperties,y=l.erase,f=l.extend,x=l.find,v=l.fireEvent,A=l.isArray,C=l.isNumber,w=l.merge,E=l.pick,T=l.removeEvent,M=l.splat;function S(e){for(var _len5=arguments.length,t=new Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++){t[_key5-1]=arguments[_key5];}var i=[].filter.call(t,C);if(i.length)return Math[e].apply(0,i);}var k=/*#__PURE__*/function(){function k(e){_classCallCheck(this,k);this.isDirty=!1,this.scrollbarHeight=0,this.init(e);}_createClass(k,[{key:\"drawHandle\",value:function drawHandle(e,t,i,s){var n=this.navigatorOptions.handles.height;this.handles[t][s](i?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(e,10)+.5-n)}:{translateX:Math.round(this.left+parseInt(e,10)),translateY:Math.round(this.top+this.height/2-n/2-1)});}},{key:\"drawOutline\",value:function drawOutline(e,t,i,s){var n=this.navigatorOptions.maskInside,r=this.outline.strokeWidth(),o=r/2,a=r%2/2,l=this.scrollButtonSize,h=this.size,c=this.top,d=this.height,u=c-o,p=c+d,g=this.left,m,b;i?(m=c+t+a,t=c+e+a,b=[[\"M\",g+d,c-l-a],[\"L\",g+d,m],[\"L\",g,m],[\"M\",g,t],[\"L\",g+d,t],[\"L\",g+d,c+h+l]],n&&b.push([\"M\",g+d,m-o],[\"L\",g+d,t+o])):(g-=l,e+=g+l-a,t+=g+l-a,b=[[\"M\",g,u],[\"L\",e,u],[\"L\",e,p],[\"M\",t,p],[\"L\",t,u],[\"L\",g+h+2*l,u]],n&&b.push([\"M\",e-o,u],[\"L\",t+o,u])),this.outline[s]({d:b});}},{key:\"drawMasks\",value:function drawMasks(e,t,i,s){var n,r,o,a;var l=this.left,h=this.top,c=this.height;i?(o=[l,l,l],a=[h,h+e,h+t],r=[c,c,c],n=[e,t-e,this.size-t]):(o=[l,l+e,l+t],a=[h,h,h],r=[e,t-e,this.size-t],n=[c,c,c]),this.shades.forEach(function(e,t){e[s]({x:o[t],y:a[t],width:r[t],height:n[t]});});}},{key:\"renderElements\",value:function renderElements(){var _e$navigatorGroup,_t$handles;var e=this,t=e.navigatorOptions,i=t.maskInside,s=e.chart,n=s.inverted,r=s.renderer,o={cursor:n?\"ns-resize\":\"ew-resize\"},a=(_e$navigatorGroup=e.navigatorGroup)!==null&&_e$navigatorGroup!==void 0?_e$navigatorGroup:e.navigatorGroup=r.g(\"navigator\").attr({zIndex:8,visibility:\"hidden\"}).add();if([!i,i,!i].forEach(function(i,n){var _e$shades$n;var l=(_e$shades$n=e.shades[n])!==null&&_e$shades$n!==void 0?_e$shades$n:e.shades[n]=r.rect().addClass(\"highcharts-navigator-mask\"+(1===n?\"-inside\":\"-outside\")).add(a);s.styledMode||(l.attr({fill:i?t.maskFill:\"rgba(0,0,0,0)\"}),1===n&&l.css(o));}),e.outline||(e.outline=r.path().addClass(\"highcharts-navigator-outline\").add(a)),s.styledMode||e.outline.attr({\"stroke-width\":t.outlineWidth,stroke:t.outlineColor}),(_t$handles=t.handles)!==null&&_t$handles!==void 0&&_t$handles.enabled){var _i127=t.handles,_n56=_i127.height,_l17=_i127.width;[0,1].forEach(function(t){var _e$handles$t;var h=_i127.symbols[t];if(e.handles[t]&&e.handles[t].symbolUrl===h){if(!e.handles[t].isImg&&e.handles[t].symbolName!==h){var _i128=d[h].call(d,-_l17/2-1,0,_l17,_n56);e.handles[t].attr({d:_i128}),e.handles[t].symbolName=h;}}else(_e$handles$t=e.handles[t])!==null&&_e$handles$t!==void 0&&_e$handles$t.destroy(),e.handles[t]=r.symbol(h,-_l17/2-1,0,_l17,_n56,_i127),e.handles[t].attr({zIndex:7-t}).addClass(\"highcharts-navigator-handle highcharts-navigator-handle-\"+[\"left\",\"right\"][t]).add(a),e.addMouseEvents();s.inverted&&e.handles[t].attr({rotation:90,rotationOriginX:Math.floor(-_l17/2),rotationOriginY:(_n56+_l17)/2}),s.styledMode||e.handles[t].attr({fill:_i127.backgroundColor,stroke:_i127.borderColor,\"stroke-width\":_i127.lineWidth,width:_i127.width,height:_i127.height,x:-_l17/2-1,y:0}).css(o);});}}},{key:\"update\",value:function update(e){var _i$scrollbar,_this56=this;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;var i=this.chart,s=i.options.chart.inverted!==((_i$scrollbar=i.scrollbar)===null||_i$scrollbar===void 0?void 0:_i$scrollbar.options.vertical);if(w(!0,i.options.navigator,e),this.navigatorOptions=i.options.navigator||{},this.setOpposite(),m(e.enabled)||s)return this.destroy(),this.navigatorEnabled=e.enabled||this.navigatorEnabled,this.init(i);if(this.navigatorEnabled&&(this.isDirty=!0,!1===e.adaptToUpdatedData&&this.baseSeries.forEach(function(e){T(e,\"updatedData\",_this56.updatedDataHandler);},this),e.adaptToUpdatedData&&this.baseSeries.forEach(function(e){e.eventsToUnbind.push(u(e,\"updatedData\",_this56.updatedDataHandler));},this),(e.series||e.baseSeries)&&this.setBaseSeries(void 0,!1),e.height||e.xAxis||e.yAxis)){var _e$height;this.height=(_e$height=e.height)!==null&&_e$height!==void 0?_e$height:this.height;var _t186=this.getXAxisOffsets();this.xAxis.update(_objectSpread(_objectSpread({},e.xAxis),{},_defineProperty(_defineProperty({offsets:_t186},i.inverted?\"width\":\"height\",this.height),i.inverted?\"height\":\"width\",void 0)),!1),this.yAxis.update(_objectSpread(_objectSpread({},e.yAxis),{},_defineProperty({},i.inverted?\"width\":\"height\",this.height)),!1);}t&&i.redraw();}},{key:\"render\",value:function render(e,t,i,s){var n=this.chart,r=this.xAxis,o=r.pointRange||0,a=r.navigatorAxis.fake?n.xAxis[0]:r,l=this.navigatorEnabled,h=this.rendered,c=n.inverted,d=n.xAxis[0].minRange,u=n.xAxis[0].options.maxRange,b=this.scrollButtonSize,y,f,x,A=this.scrollbarHeight,w,T;if(this.hasDragged&&!m(i))return;if(this.isDirty&&this.renderElements(),e=g(e-o/2),t=g(t+o/2),!C(e)||!C(t)){if(!h)return;i=0,s=E(r.width,a.width);}this.left=E(r.left,n.plotLeft+b+(c?n.plotWidth:0));var M=this.size=w=E(r.len,(c?n.plotHeight:n.plotWidth)-2*b);y=c?A:w+2*b,i=E(i,r.toPixels(e,!0)),s=E(s,r.toPixels(t,!0)),C(i)&&Math.abs(i)!==1/0||(i=0,s=y);var S=r.toValue(i,!0),_k4=r.toValue(s,!0),P=Math.abs(g(_k4-S));P<d?this.grabbedLeft?i=r.toPixels(_k4-d-o,!0):this.grabbedRight&&(s=r.toPixels(S+d+o,!0)):m(u)&&g(P-o)>u&&(this.grabbedLeft?i=r.toPixels(_k4-u-o,!0):this.grabbedRight&&(s=r.toPixels(S+u+o,!0))),this.zoomedMax=p(Math.max(i,s),0,M),this.zoomedMin=p(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(i,s),0,M),this.range=this.zoomedMax-this.zoomedMin,M=Math.round(this.zoomedMax);var D=Math.round(this.zoomedMin);l&&(this.navigatorGroup.attr({visibility:\"inherit\"}),T=h&&!this.hasDragged?\"animate\":\"attr\",this.drawMasks(D,M,c,T),this.drawOutline(D,M,c,T),this.navigatorOptions.handles.enabled&&(this.drawHandle(D,0,c,T),this.drawHandle(M,1,c,T))),this.scrollbar&&(c?(x=this.top-b,f=this.left-A+(l||!a.opposite?0:(a.titleOffset||0)+a.axisTitleMargin),A=w+2*b):(x=this.top+(l?this.height:-A),f=this.left-b),this.scrollbar.position(f,x,y,A),this.scrollbar.setRange(this.zoomedMin/(w||1),this.zoomedMax/(w||1))),this.rendered=!0,this.isDirty=!1,v(this,\"afterRender\");}},{key:\"addMouseEvents\",value:function addMouseEvents(){var e=this,t=e.chart,i=t.container,s=[],n,r;e.mouseMoveHandler=n=function n(t){e.onMouseMove(t);},e.mouseUpHandler=r=function r(t){e.onMouseUp(t);},(s=e.getPartsEvents(\"mousedown\")).push(u(t.renderTo,\"mousemove\",n),u(i.ownerDocument,\"mouseup\",r),u(t.renderTo,\"touchmove\",n),u(i.ownerDocument,\"touchend\",r)),s.concat(e.getPartsEvents(\"touchstart\")),e.eventsToUnbind=s,e.series&&e.series[0]&&s.push(u(e.series[0].xAxis,\"foundExtremes\",function(){t.navigator.modifyNavigatorAxisExtremes();}));}},{key:\"getPartsEvents\",value:function getPartsEvents(e){var t=this,i=[];return[\"shades\",\"handles\"].forEach(function(s){t[s].forEach(function(n,r){i.push(u(n.element,e,function(e){t[s+\"Mousedown\"](e,r);}));});}),i;}},{key:\"shadesMousedown\",value:function shadesMousedown(e,t){var _this$chart$pointer4;e=((_this$chart$pointer4=this.chart.pointer)===null||_this$chart$pointer4===void 0?void 0:_this$chart$pointer4.normalize(e))||e;var i=this.chart,s=this.xAxis,n=this.zoomedMin,r=this.size,o=this.range,a=this.left,l=e.chartX,h,c,d,u;i.inverted&&(l=e.chartY,a=this.top),1===t?(this.grabbedCenter=l,this.fixedWidth=o,this.dragOffset=l-n):(u=l-a-o/2,0===t?u=Math.max(0,u):2===t&&u+o>=r&&(u=r-o,this.reversedExtremes?(u-=o,c=this.getUnionExtremes().dataMin):h=this.getUnionExtremes().dataMax),u!==n&&(this.fixedWidth=o,m((d=s.navigatorAxis.toFixedRange(u,u+o,c,h)).min)&&v(this,\"setRange\",{min:Math.min(d.min,d.max),max:Math.max(d.min,d.max),redraw:!0,eventArguments:{trigger:\"navigator\"}})));}},{key:\"handlesMousedown\",value:function handlesMousedown(e,t){var _this$chart$pointer5;e=((_this$chart$pointer5=this.chart.pointer)===null||_this$chart$pointer5===void 0?void 0:_this$chart$pointer5.normalize(e))||e;var i=this.chart,s=i.xAxis[0],n=this.reversedExtremes;0===t?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=n?s.min:s.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=n?s.max:s.min),i.setFixedRange(void 0);}},{key:\"onMouseMove\",value:function onMouseMove(e){var _i$pointer;var t=this,i=t.chart,s=t.navigatorSize,n=t.range,r=t.dragOffset,o=i.inverted,a=t.left,l;(!e.touches||0!==e.touches[0].pageX)&&(l=(e=((_i$pointer=i.pointer)===null||_i$pointer===void 0?void 0:_i$pointer.normalize(e))||e).chartX,o&&(a=t.top,l=e.chartY),t.grabbedLeft?(t.hasDragged=!0,t.render(0,0,l-a,t.otherHandlePos)):t.grabbedRight?(t.hasDragged=!0,t.render(0,0,t.otherHandlePos,l-a)):t.grabbedCenter&&(t.hasDragged=!0,l<r?l=r:l>s+r-n&&(l=s+r-n),t.render(0,0,l-r,l-r+n)),t.hasDragged&&t.scrollbar&&E(t.scrollbar.options.liveRedraw,!c&&!this.chart.boosted)&&(e.DOMType=e.type,setTimeout(function(){t.onMouseUp(e);},0)));}},{key:\"onMouseUp\",value:function onMouseUp(e){var t,i,s,n,r,o;var a=this.chart,l=this.xAxis,h=this.scrollbar,c=e.DOMEvent||e,d=a.inverted,u=this.rendered&&!this.hasDragged?\"animate\":\"attr\";(this.hasDragged&&(!h||!h.hasDragged)||\"scrollbar\"===e.trigger)&&(s=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?n=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(r=this.fixedExtreme),this.zoomedMax===this.size&&(r=this.reversedExtremes?s.dataMin:s.dataMax),0===this.zoomedMin&&(n=this.reversedExtremes?s.dataMax:s.dataMin),m((o=l.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,n,r)).min)&&v(this,\"setRange\",{min:Math.min(o.min,o.max),max:Math.max(o.min,o.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:\"navigator\",triggerOp:\"navigator-drag\",DOMEvent:c}})),\"mousemove\"!==e.DOMType&&\"touchmove\"!==e.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&C(this.zoomedMin)&&C(this.zoomedMax)&&(i=Math.round(this.zoomedMin),t=Math.round(this.zoomedMax),this.shades&&this.drawMasks(i,t,d,u),this.outline&&this.drawOutline(i,t,d,u),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(i,0,d,u),this.drawHandle(t,1,d,u)));}},{key:\"removeEvents\",value:function removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(e){e();}),this.eventsToUnbind=void 0),this.removeBaseSeriesEvents();}},{key:\"removeBaseSeriesEvents\",value:function removeBaseSeriesEvents(){var e=this.baseSeries||[];this.navigatorEnabled&&e[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&e.forEach(function(e){T(e,\"updatedData\",this.updatedDataHandler);},this),e[0].xAxis&&T(e[0].xAxis,\"foundExtremes\",this.modifyBaseAxisExtremes));}},{key:\"getXAxisOffsets\",value:function getXAxisOffsets(){return this.chart.inverted?[this.scrollButtonSize,0,-this.scrollButtonSize,0]:[0,-this.scrollButtonSize,0,this.scrollButtonSize];}},{key:\"init\",value:function init(t){var i=t.options,s=i.navigator||{},r=s.enabled,a=i.scrollbar||{},l=a.enabled,h=r&&s.height||0,c=l&&a.height||0,d=a.buttonsEnabled&&c||0;this.handles=[],this.shades=[],this.chart=t,this.setBaseSeries(),this.height=h,this.scrollbarHeight=c,this.scrollButtonSize=d,this.scrollbarEnabled=l,this.navigatorEnabled=r,this.navigatorOptions=s,this.scrollbarOptions=a,this.setOpposite();var p=this,g=p.baseSeries,m=t.xAxis.length,b=t.yAxis.length,y=g&&g[0]&&g[0].xAxis||t.xAxis[0]||{options:{}};if(t.isDirtyBox=!0,p.navigatorEnabled){var _s$yAxis;var _i129=this.getXAxisOffsets();p.xAxis=new e(t,w({breaks:y.options.breaks,ordinal:y.options.ordinal,overscroll:y.options.overscroll},s.xAxis,{type:\"datetime\",yAxis:(_s$yAxis=s.yAxis)===null||_s$yAxis===void 0?void 0:_s$yAxis.id,index:m,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:y.options.ordinal?0:y.options.minPadding,maxPadding:y.options.ordinal?0:y.options.maxPadding,zoomEnabled:!1},t.inverted?{offsets:_i129,width:h}:{offsets:_i129,height:h}),\"xAxis\"),p.yAxis=new e(t,w(s.yAxis,{alignTicks:!1,offset:0,index:b,isInternal:!0,reversed:E(s.yAxis&&s.yAxis.reversed,t.yAxis[0]&&t.yAxis[0].reversed,!1),zoomEnabled:!1},t.inverted?{width:h}:{height:h}),\"yAxis\"),g||s.series.data?p.updateNavigatorSeries(!1):0===t.series.length&&(p.unbindRedraw=u(t,\"beforeRedraw\",function(){t.series.length>0&&!p.series&&(p.setBaseSeries(),p.unbindRedraw());})),p.reversedExtremes=t.inverted&&!p.xAxis.reversed||!t.inverted&&p.xAxis.reversed,p.renderElements(),p.addMouseEvents();}else p.xAxis={chart:t,navigatorAxis:{fake:!0},translate:function translate(e,i){var s=t.xAxis[0],n=s.getExtremes(),r=s.len-2*d,o=S(\"min\",s.options.min,n.dataMin),a=S(\"max\",s.options.max,n.dataMax)-o;return i?e*a/r+o:r*(e-o)/a;},toPixels:function toPixels(e){return this.translate(e);},toValue:function toValue(e){return this.translate(e,!0);}},p.xAxis.navigatorAxis.axis=p.xAxis,p.xAxis.navigatorAxis.toFixedRange=n.prototype.toFixedRange.bind(p.xAxis.navigatorAxis);if(t.options.scrollbar.enabled){var _e178=w(t.options.scrollbar,{vertical:t.inverted});!C(_e178.margin)&&p.navigatorEnabled&&(_e178.margin=t.inverted?-3:3),t.scrollbar=p.scrollbar=new o(t.renderer,_e178,t),u(p.scrollbar,\"changed\",function(e){var t=p.size,i=t*this.to,s=t*this.from;p.hasDragged=p.scrollbar.hasDragged,p.render(0,0,s,i),this.shouldUpdateExtremes(e.DOMType)&&setTimeout(function(){p.onMouseUp(e);});});}p.addBaseSeriesEvents(),p.addChartEvents();}},{key:\"setOpposite\",value:function setOpposite(){var e=this.navigatorOptions,t=this.navigatorEnabled,i=this.chart;this.opposite=E(e.opposite,!!(!t&&i.inverted));}},{key:\"getUnionExtremes\",value:function getUnionExtremes(e){var t;var i=this.chart.xAxis[0],s=this.xAxis,n=s.options,r=i.options;return e&&null===i.dataMin||(t={dataMin:E(n&&n.min,S(\"min\",r.min,i.dataMin,s.dataMin,s.min)),dataMax:E(n&&n.max,S(\"max\",r.max,i.dataMax,s.dataMax,s.max))}),t;}},{key:\"setBaseSeries\",value:function setBaseSeries(e,t){var i=this.chart,s=this.baseSeries=[];e=e||i.options&&i.options.navigator.baseSeries||(i.series.length?x(i.series,function(e){return!e.options.isInternal;}).index:0),(i.series||[]).forEach(function(t,i){!t.options.isInternal&&(t.options.showInNavigator||(i===e||t.options.id===e)&&!1!==t.options.showInNavigator)&&s.push(t);}),this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,t);}},{key:\"updateNavigatorSeries\",value:function updateNavigatorSeries(e,t){var _this$navigatorOption,_this$navigatorOption2;var i=this,s=i.chart,n=i.baseSeries,r={enableMouseTracking:!1,index:null,linkedTo:null,group:\"nav\",padXAxis:!1,xAxis:(_this$navigatorOption=this.navigatorOptions.xAxis)===null||_this$navigatorOption===void 0?void 0:_this$navigatorOption.id,yAxis:(_this$navigatorOption2=this.navigatorOptions.yAxis)===null||_this$navigatorOption2===void 0?void 0:_this$navigatorOption2.id,showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},o=i.series=(i.series||[]).filter(function(e){var t=e.baseSeries;return!(0>n.indexOf(t))||(t&&(T(t,\"updatedData\",i.updatedDataHandler),delete t.navigatorSeries),e.chart&&e.destroy(),!1);}),a,l,c=i.navigatorOptions.series,d;n&&n.length&&n.forEach(function(e){var u=e.navigatorSeries,p=f({color:e.color,visible:e.visible},A(c)?h.navigator.series:c);if(u&&!1===i.navigatorOptions.adaptToUpdatedData)return;r.name=\"Navigator \"+n.length,d=(a=e.options||{}).navigatorOptions||{},p.dataLabels=M(p.dataLabels),(l=w(a,r,p,d)).pointRange=E(p.pointRange,d.pointRange,h.plotOptions[l.type||\"line\"].pointRange);var g=d.data||p.data;i.hasNavigatorData=i.hasNavigatorData||!!g,l.data=g||a.data&&a.data.slice(0),u&&u.options?u.update(l,t):(e.navigatorSeries=s.initSeries(l),s.setSortedData(),e.navigatorSeries.baseSeries=e,o.push(e.navigatorSeries));}),(c.data&&!(n&&n.length)||A(c))&&(i.hasNavigatorData=!1,(c=M(c)).forEach(function(e,t){r.name=\"Navigator \"+(o.length+1),(l=w(h.navigator.series,{color:s.series[t]&&!s.series[t].options.isInternal&&s.series[t].color||s.options.colors[t]||s.options.colors[0]},r,e)).data=e.data,l.data&&(i.hasNavigatorData=!0,o.push(s.initSeries(l)));})),e&&this.addBaseSeriesEvents();}},{key:\"addBaseSeriesEvents\",value:function addBaseSeriesEvents(){var _this57=this;var e=this,t=e.baseSeries||[];t[0]&&t[0].xAxis&&t[0].eventsToUnbind.push(u(t[0].xAxis,\"foundExtremes\",this.modifyBaseAxisExtremes)),t.forEach(function(i){i.eventsToUnbind.push(u(i,\"show\",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1);})),i.eventsToUnbind.push(u(i,\"hide\",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1);})),!1!==_this57.navigatorOptions.adaptToUpdatedData&&i.xAxis&&i.eventsToUnbind.push(u(i,\"updatedData\",_this57.updatedDataHandler)),i.eventsToUnbind.push(u(i,\"remove\",function(){t&&y(t,i),this.navigatorSeries&&(y(e.series,this.navigatorSeries),m(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries);}));});}},{key:\"getBaseSeriesMin\",value:function getBaseSeriesMin(e){return this.baseSeries.reduce(function(e,t){return Math.min(e,t.xData&&t.xData.length?t.xData[0]:e);},e);}},{key:\"modifyNavigatorAxisExtremes\",value:function modifyNavigatorAxisExtremes(){var e=this.xAxis;if(void 0!==e.getExtremes){var _t187=this.getUnionExtremes(!0);_t187&&(_t187.dataMin!==e.min||_t187.dataMax!==e.max)&&(e.min=_t187.dataMin,e.max=_t187.dataMax);}}},{key:\"modifyBaseAxisExtremes\",value:function modifyBaseAxisExtremes(){var _this$ordinal3;var e,t;var i=this.chart.navigator,s=this.getExtremes(),n=s.min,r=s.max,o=s.dataMin,a=s.dataMax,l=r-n,h=i.stickToMin,c=i.stickToMax,d=E((_this$ordinal3=this.ordinal)===null||_this$ordinal3===void 0?void 0:_this$ordinal3.convertOverscroll(this.options.overscroll),0),u=i.series&&i.series[0],p=!!this.setExtremes;!(this.eventArgs&&\"rangeSelectorButton\"===this.eventArgs.trigger)&&(h&&(e=(t=o)+l),c&&(e=a+d,h||(t=Math.max(o,e-l,i.getBaseSeriesMin(u&&u.xData?u.xData[0]:-Number.MAX_VALUE)))),p&&(h||c)&&C(t)&&(this.min=this.userMin=t,this.max=this.userMax=e)),i.stickToMin=i.stickToMax=null;}},{key:\"updatedDataHandler\",value:function updatedDataHandler(){var e=this.chart.navigator,t=this.navigatorSeries,i=e.reversedExtremes?0===Math.round(e.zoomedMin):Math.round(e.zoomedMax)>=Math.round(e.size);e.stickToMax=E(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,i),e.stickToMin=e.shouldStickToMin(this,e),t&&!e.hasNavigatorData&&(t.options.pointStart=this.xData[0],t.setData(this.options.data,!1,null,!1));}},{key:\"shouldStickToMin\",value:function shouldStickToMin(e,t){var i=t.getBaseSeriesMin(e.xData[0]),s=e.xAxis,n=s.max,r=s.min,o=s.options.range;return!!(C(n)&&C(r))&&(o&&n-i>0?n-i<o:r<=i);}},{key:\"addChartEvents\",value:function addChartEvents(){this.eventsToUnbind||(this.eventsToUnbind=[]),this.eventsToUnbind.push(u(this.chart,\"redraw\",function(){var e=this.navigator,t=e&&(e.baseSeries&&e.baseSeries[0]&&e.baseSeries[0].xAxis||this.xAxis[0]);t&&e.render(t.min,t.max);}),u(this.chart,\"getMargins\",function(){var e=this.navigator,t=e.opposite?\"plotTop\":\"marginBottom\";this.inverted&&(t=e.opposite?\"marginRight\":\"plotLeft\"),this[t]=(this[t]||0)+(e.navigatorEnabled||!this.inverted?e.height+e.scrollbarHeight:0)+e.navigatorOptions.margin;}),u(k,\"setRange\",function(e){this.chart.xAxis[0].setExtremes(e.min,e.max,e.redraw,e.animation,e.eventArguments);}));}},{key:\"destroy\",value:function destroy(){var _this58=this;this.removeEvents(),this.xAxis&&(y(this.chart.xAxis,this.xAxis),y(this.chart.axes,this.xAxis)),this.yAxis&&(y(this.chart.yAxis,this.yAxis),y(this.chart.axes,this.yAxis)),(this.series||[]).forEach(function(e){e.destroy&&e.destroy();}),[\"series\",\"xAxis\",\"yAxis\",\"shades\",\"outline\",\"scrollbarTrack\",\"scrollbarRifles\",\"scrollbarGroup\",\"scrollbar\",\"navigatorGroup\",\"rendered\"].forEach(function(e){_this58[e]&&_this58[e].destroy&&_this58[e].destroy(),_this58[e]=null;}),[this.handles].forEach(function(e){b(e);}),this.navigatorEnabled=!1;}}],[{key:\"compose\",value:function compose(e,i,s){t.compose(e,k),r.compose(e,i,s);}}]);return k;}();return k;}),i(t,\"Accessibility/Components/NavigatorComponent.js\",[t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/Utils/Announcer.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Stock/Navigator/Navigator.js\"],t[\"Core/Animation/AnimationUtilities.js\"],t[\"Core/Templating.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"]],function(e,t,i,s,n,r,o,a,l){var h=n.animObject,c=r.format,d=o.clamp,u=o.pick,p=o.syncTimeout,g=a.getFakeMouseEvent,m=l.getAxisRangeDescription,b=l.fireEventOnWrappedOrUnwrappedElement;return/*#__PURE__*/function(_e179){_inherits(_class11,_e179);var _super29=_createSuper(_class11);function _class11(){_classCallCheck(this,_class11);return _super29.apply(this,arguments);}_createClass(_class11,[{key:\"init\",value:function init(){var e=this.chart,i=this;this.announcer=new t(e,\"polite\"),this.addEvent(s,\"afterRender\",function(){this.chart===i.chart&&this.chart.renderer&&p(function(){i.proxyProvider.updateGroupProxyElementPositions(\"navigator\"),i.updateHandleValues();},h(u(this.chart.renderer.globalAnimation,!0)).duration);});}},{key:\"onChartUpdate\",value:function onChartUpdate(){var _i$accessibility,_this59=this;var e=this.chart,t=e.options,i=t.navigator;if(i.enabled&&(_i$accessibility=i.accessibility)!==null&&_i$accessibility!==void 0&&_i$accessibility.enabled){var _t$lang$accessibility,_t$lang$accessibility2;var _i130=t.accessibility.landmarkVerbosity,_s116=(_t$lang$accessibility=t.lang.accessibility)===null||_t$lang$accessibility===void 0?void 0:_t$lang$accessibility.navigator.groupLabel;this.proxyProvider.removeGroup(\"navigator\"),this.proxyProvider.addGroup(\"navigator\",\"div\",{role:\"all\"===_i130?\"region\":\"group\",\"aria-label\":c(_s116,{chart:e},e)});var _n57=(_t$lang$accessibility2=t.lang.accessibility)===null||_t$lang$accessibility2===void 0?void 0:_t$lang$accessibility2.navigator.handleLabel;[0,1].forEach(function(t){var i=_this59.getHandleByIx(t);if(i){var _s117=_this59.proxyProvider.addProxyElement(\"navigator\",{click:i},\"input\",{type:\"range\",\"aria-label\":c(_n57,{handleIx:t,chart:e},e)});_this59[t?\"maxHandleProxy\":\"minHandleProxy\"]=_s117.innerElement,_s117.innerElement.style.pointerEvents=\"none\",_s117.innerElement.oninput=function(){return _this59.updateNavigator();};}}),this.updateHandleValues();}else this.proxyProvider.removeGroup(\"navigator\");}},{key:\"getNavigatorHandleNavigation\",value:function getNavigatorHandleNavigation(e){var _this60=this;var t=this,s=this.chart,n=e?this.maxHandleProxy:this.minHandleProxy,r=this.keyCodes;return new i(s,{keyCodeMap:[[[r.left,r.right,r.up,r.down],function(i){if(n){var _o72=i===r.left||i===r.up?-1:1;n.value=\"\"+d(parseFloat(n.value)+_o72,0,100),t.updateNavigator(function(){var i=t.getHandleByIx(e);i&&s.setFocusToElement(i,n);});}return this.response.success;}]],init:function init(){s.setFocusToElement(_this60.getHandleByIx(e),n);},validate:function validate(){var _s$options$navigator$;return!!(_this60.getHandleByIx(e)&&n&&(_s$options$navigator$=s.options.navigator.accessibility)!==null&&_s$options$navigator$!==void 0&&_s$options$navigator$.enabled);}});}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){return[this.getNavigatorHandleNavigation(0),this.getNavigatorHandleNavigation(1)];}},{key:\"destroy\",value:function destroy(){this.updateNavigatorThrottleTimer&&clearTimeout(this.updateNavigatorThrottleTimer),this.proxyProvider.removeGroup(\"navigator\"),this.announcer&&this.announcer.destroy();}},{key:\"updateHandleValues\",value:function updateHandleValues(){var e=this.chart.navigator;if(e&&this.minHandleProxy&&this.maxHandleProxy){var _t188=e.size;this.minHandleProxy.value=\"\"+Math.round(e.zoomedMin/_t188*100),this.maxHandleProxy.value=\"\"+Math.round(e.zoomedMax/_t188*100);}}},{key:\"getHandleByIx\",value:function getHandleByIx(e){var t=this.chart.navigator;return t&&t.handles&&t.handles[e];}},{key:\"updateNavigator\",value:function updateNavigator(e){var _this61=this;this.updateNavigatorThrottleTimer&&clearTimeout(this.updateNavigatorThrottleTimer),this.updateNavigatorThrottleTimer=setTimeout(function(e){var t=_this61.chart,i=t.navigator,s=t.pointer;if(i&&s&&_this61.minHandleProxy&&_this61.maxHandleProxy){var _t$options$lang$acces;var _n58=s.getChartPosition(),_r49=parseFloat(_this61.minHandleProxy.value)/100*i.size,_o73=parseFloat(_this61.maxHandleProxy.value)/100*i.size;[[0,\"mousedown\",i.zoomedMin],[0,\"mousemove\",_r49],[0,\"mouseup\",_r49],[1,\"mousedown\",i.zoomedMax],[1,\"mousemove\",_o73],[1,\"mouseup\",_o73]].forEach(function(_ref23){var _this61$getHandleByIx;var _ref24=_slicedToArray(_ref23,3),e=_ref24[0],t=_ref24[1],s=_ref24[2];var r=(_this61$getHandleByIx=_this61.getHandleByIx(e))===null||_this61$getHandleByIx===void 0?void 0:_this61$getHandleByIx.element;r&&b(r,g(t,{x:_n58.left+i.left+s,y:_n58.top+i.top},r));}),e&&e();var _a34=(_t$options$lang$acces=t.options.lang.accessibility)===null||_t$options$lang$acces===void 0?void 0:_t$options$lang$acces.navigator.changeAnnouncement,_l18=m(t.xAxis[0]);_this61.announcer.announce(c(_a34,{axisRangeDescription:_l18,chart:t},t));}}.bind(this,e),20);}}]);return _class11;}(e);}),i(t,\"Accessibility/Components/SeriesComponent/SeriesDescriber.js\",[t[\"Accessibility/Components/AnnotationsA11y.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Core/Templating.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n){var r=e.getPointAnnotationTexts,o=t.getAxisDescription,a=t.getSeriesFirstPointElement,l=t.getSeriesA11yElement,h=t.unhideChartElementFromAT,c=i.format,d=i.numberFormat,u=s.reverseChildNodes,p=s.stripHTMLTagsFromString,g=n.find,m=n.isNumber,b=n.isString,y=n.pick,f=n.defined;function x(e){var t=e.chart.options.accessibility.series.pointDescriptionEnabledThreshold;return!!(!1!==t&&e.points&&e.points.length>=+t);}function v(e,t){var i=e.series,s=i.chart,n=s.options.accessibility.point||{},r=i.options.accessibility&&i.options.accessibility.point||{},o=i.tooltipOptions||{},a=s.options.lang;return m(t)?d(t,r.valueDecimals||n.valueDecimals||o.valueDecimals||-1,a.decimalPoint,a.accessibility.thousandsSep||a.thousandsSep):t;}function A(e,t){var i=e[t];return e.chart.langFormat(\"accessibility.series.\"+t+\"Description\",{name:o(i),series:e});}function C(e){var t=e.series,i=t.chart.series.length>1||t.options.name,s=function(e){var t=e.series,i=t.chart,s=t.options.accessibility,n=s&&s.point&&s.point.valueDescriptionFormat||i.options.accessibility.point.valueDescriptionFormat,r=y(t.xAxis&&t.xAxis.options.accessibility&&t.xAxis.options.accessibility.enabled,!i.angular&&\"flowmap\"!==t.type),o=r?function(e){var t=function(e){var t=e.series,i=t.chart,s=t.options.accessibility&&t.options.accessibility.point||{},n=i.options.accessibility.point||{},r=t.xAxis&&t.xAxis.dateTime;if(r){var _t189=r.getXDateFormat(e.x||0,i.options.tooltip.dateTimeLabelFormats),_o74=s.dateFormatter&&s.dateFormatter(e)||n.dateFormatter&&n.dateFormatter(e)||s.dateFormat||n.dateFormat||_t189;return i.time.dateFormat(_o74,e.x||0,void 0);}}(e),i=(e.series.xAxis||{}).categories&&f(e.category)&&(\"\"+e.category).replace(\"<br/>\",\" \"),s=f(e.id)&&0>(\"\"+e.id).indexOf(\"highcharts-\"),n=\"x, \"+e.x;return e.name||t||i||(s?e.id:n);}(e):\"\";return c(n,{point:e,index:f(e.index)?e.index+1:\"\",xDescription:o,value:function(e){var t=e.series,i=t.chart.options.accessibility.point||{},s=t.chart.options.accessibility&&t.chart.options.accessibility.point||{},n=t.tooltipOptions||{},r=s.valuePrefix||i.valuePrefix||n.valuePrefix||\"\",o=s.valueSuffix||i.valueSuffix||n.valueSuffix||\"\",a=void 0!==e.value?\"value\":\"y\",l=v(e,e[a]);return e.isNull?t.chart.langFormat(\"accessibility.series.nullPointValue\",{point:e}):t.pointArrayMap?function(e,t,i){var s=t||\"\",n=i||\"\",r=function r(t){var i=v(e,y(e[t],e.options[t]));return void 0!==i?t+\": \"+s+i+n:i;};return e.series.pointArrayMap.reduce(function(e,t){var i=r(t);return i?e+(e.length?\", \":\"\")+i:e;},\"\");}(e,r,o):r+l+o;}(e),separator:r?\", \":\"\"},i);}(e),n=e.options&&e.options.accessibility&&e.options.accessibility.description,o=i?\" \"+t.name+\".\":\"\",a=function(e){var t=e.series.chart,i=r(e);return i.length?t.langFormat(\"accessibility.series.pointAnnotationsDescription\",{point:e,annotations:i}):\"\";}(e);return e.accessibility=e.accessibility||{},e.accessibility.valueDescription=s,s+(n?\" \"+n:\"\")+o+(a?\" \"+a:\"\");}function w(e){var t=e.chart,i=t.types||[],s=function(e){var t=(e.options.accessibility||{}).description;return t&&e.chart.langFormat(\"accessibility.series.description\",{description:t,series:e})||\"\";}(e),n=function n(i){return t[i]&&t[i].length>1&&e[i];},r=e.index+1,o=A(e,\"xAxis\"),a=A(e,\"yAxis\"),l={seriesNumber:r,series:e,chart:t},h=i.length>1?\"Combination\":\"\",d=t.langFormat(\"accessibility.series.summary.\"+e.type+h,l)||t.langFormat(\"accessibility.series.summary.default\"+h,l),u=(n(\"yAxis\")?\" \"+a+\".\":\"\")+(n(\"xAxis\")?\" \"+o+\".\":\"\");return c(y(e.options.accessibility&&e.options.accessibility.descriptionFormat,t.options.accessibility.series.descriptionFormat,\"\"),{seriesDescription:d,authorDescription:s?\" \"+s:\"\",axisDescription:u,series:e,chart:t,seriesNumber:r},void 0);}return{defaultPointDescriptionFormatter:C,defaultSeriesDescriptionFormatter:w,describeSeries:function describeSeries(e){var t=e.chart,i=a(e),s=l(e),n=t.is3d&&t.is3d();s&&(s.lastChild!==i||n||u(s),function(e){var t=function(e){var t=e.options.accessibility||{};return!x(e)&&!t.exposeAsGroupOnly;}(e),i=function(e){var t=e.chart.options.accessibility.keyboardNavigation.seriesNavigation;return!!(e.points&&(e.points.length<+t.pointNavigationEnabledThreshold||!1===t.pointNavigationEnabledThreshold));}(e),s=e.chart.options.accessibility.point.describeNull;(t||i)&&e.points.forEach(function(i){var n=i.graphic&&i.graphic.element||function(e){var t=e.series,i=t&&t.chart,s=t&&t.is(\"sunburst\"),n=e.isNull,r=i&&i.options.accessibility.point.describeNull;return n&&!s&&r;}(i)&&function(e){var t=e.series,i=function(e){var t=e.index;return e.series&&e.series.data&&f(t)&&g(e.series.data,function(e){return!!(e&&void 0!==e.index&&e.index>t&&e.graphic&&e.graphic.element);})||null;}(e),s=i&&i.graphic,n=s?s.parentGroup:t.graph||t.group,r=i?{x:y(e.plotX,i.plotX,0),y:y(e.plotY,i.plotY,0)}:{x:y(e.plotX,0),y:y(e.plotY,0)},o=function(e,t){var i=e.series.chart.renderer.rect(t.x,t.y,1,1);return i.attr({\"class\":\"highcharts-a11y-mock-point\",fill:\"none\",opacity:0,\"fill-opacity\":0,\"stroke-opacity\":0}),i;}(e,r);if(n&&n.element)return e.graphic=o,e.hasMockGraphic=!0,o.add(n),n.element.insertBefore(o.element,s?s.element:null),o.element;}(i),r=i.options&&i.options.accessibility&&!1===i.options.accessibility.enabled;if(n){if(i.isNull&&!s){n.setAttribute(\"aria-hidden\",!0);return;}n.setAttribute(\"tabindex\",\"-1\"),e.chart.styledMode||(n.style.outline=\"none\"),t&&!r?function(e,t,_i$options$accessibil,_s$descriptionFormatt,_n$descriptionFormatt){var i=e.series,s=((_i$options$accessibil=i.options.accessibility)===null||_i$options$accessibil===void 0?void 0:_i$options$accessibil.point)||{},n=i.chart.options.accessibility.point||{},r=p(b(s.descriptionFormat)&&c(s.descriptionFormat,e,i.chart)||((_s$descriptionFormatt=s.descriptionFormatter)===null||_s$descriptionFormatt===void 0?void 0:_s$descriptionFormatt.call(s,e))||b(n.descriptionFormat)&&c(n.descriptionFormat,e,i.chart)||((_n$descriptionFormatt=n.descriptionFormatter)===null||_n$descriptionFormatt===void 0?void 0:_n$descriptionFormatt.call(n,e))||C(e),i.chart.renderer.forExport);t.setAttribute(\"role\",\"img\"),t.setAttribute(\"aria-label\",r);}(i,n):n.setAttribute(\"aria-hidden\",!0);}});}(e),h(t,s),function(e){var t=e.chart,i=t.options.chart,s=i.options3d&&i.options3d.enabled,n=t.series.length>1,r=t.options.accessibility.series.describeSingleSeries,o=(e.options.accessibility||{}).exposeAsGroupOnly;return!(s&&n)&&(n||r||o||x(e));}(e)?function(e,t){var i=e.options.accessibility||{},s=e.chart.options.accessibility,n=s.landmarkVerbosity;i.exposeAsGroupOnly?t.setAttribute(\"role\",\"img\"):\"all\"===n?t.setAttribute(\"role\",\"region\"):t.setAttribute(\"role\",\"group\"),t.setAttribute(\"tabindex\",\"-1\"),e.chart.styledMode||(t.style.outline=\"none\"),t.setAttribute(\"aria-label\",p(s.series.descriptionFormatter&&s.series.descriptionFormatter(e)||w(e),e.chart.renderer.forExport));}(e,s):s.removeAttribute(\"aria-label\"));}};}),i(t,\"Accessibility/Components/SeriesComponent/NewDataAnnouncer.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/Utils/Announcer.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/EventProvider.js\"],t[\"Accessibility/Components/SeriesComponent/SeriesDescriber.js\"]],function(e,t,i,s,n,r){var o=e.composed,a=t.addEvent,l=t.defined,h=t.pushUnique,c=s.getChartTitle,d=r.defaultPointDescriptionFormatter,u=r.defaultSeriesDescriptionFormatter;function p(e){return!!e.options.accessibility.announceNewData.enabled;}var g=/*#__PURE__*/function(){function g(e){_classCallCheck(this,g);this.dirty={allSeries:{}},this.lastAnnouncementTime=0,this.chart=e;}_createClass(g,[{key:\"init\",value:function init(){var e=this.chart,t=e.options.accessibility.announceNewData.interruptUser?\"assertive\":\"polite\";this.lastAnnouncementTime=0,this.dirty={allSeries:{}},this.eventProvider=new n(),this.announcer=new i(e,t),this.addEventListeners();}},{key:\"destroy\",value:function destroy(){this.eventProvider.removeAddedEvents(),this.announcer.destroy();}},{key:\"addEventListeners\",value:function addEventListeners(){var e=this,t=this.chart,i=this.eventProvider;i.addEvent(t,\"afterApplyDrilldown\",function(){e.lastAnnouncementTime=0;}),i.addEvent(t,\"afterAddSeries\",function(t){e.onSeriesAdded(t.series);}),i.addEvent(t,\"redraw\",function(){e.announceDirtyData();});}},{key:\"onSeriesAdded\",value:function onSeriesAdded(e){p(this.chart)&&(this.dirty.hasDirty=!0,this.dirty.allSeries[e.name+e.index]=e,this.dirty.newSeries=l(this.dirty.newSeries)?void 0:e);}},{key:\"announceDirtyData\",value:function announceDirtyData(){var e=this.chart,t=this;if(e.options.accessibility.announceNewData&&this.dirty.hasDirty){var _e180=this.dirty.newPoint;_e180&&(_e180=function(e){var t=e.series.data.filter(function(t){return e.x===t.x&&e.y===t.y;});return 1===t.length?t[0]:e;}(_e180)),this.queueAnnouncement(Object.keys(this.dirty.allSeries).map(function(e){return t.dirty.allSeries[e];}),this.dirty.newSeries,_e180),this.dirty={allSeries:{}};}}},{key:\"queueAnnouncement\",value:function queueAnnouncement(e,t,i){var _this62=this;var s=this.chart.options.accessibility.announceNewData;if(s.enabled){var _n59=+new Date(),_r50=_n59-this.lastAnnouncementTime,_o75=Math.max(0,s.minAnnounceInterval-_r50),_a35=function(e,t){var i=(e||[]).concat(t||[]).reduce(function(e,t){return e[t.name+t.index]=t,e;},{});return Object.keys(i).map(function(e){return i[e];});}(this.queuedAnnouncement&&this.queuedAnnouncement.series,e),_l19=this.buildAnnouncementMessage(_a35,t,i);_l19&&(this.queuedAnnouncement&&clearTimeout(this.queuedAnnouncementTimer),this.queuedAnnouncement={time:_n59,message:_l19,series:_a35},this.queuedAnnouncementTimer=setTimeout(function(){_this62&&_this62.announcer&&(_this62.lastAnnouncementTime=+new Date(),_this62.announcer.announce(_this62.queuedAnnouncement.message),delete _this62.queuedAnnouncement,delete _this62.queuedAnnouncementTimer);},_o75));}}},{key:\"buildAnnouncementMessage\",value:function buildAnnouncementMessage(t,i,s){var n=this.chart,r=n.options.accessibility.announceNewData;if(r.announcementFormatter){var _e181=r.announcementFormatter(t,i,s);if(!1!==_e181)return _e181.length?_e181:null;}var o=e.charts&&e.charts.length>1?\"Multiple\":\"Single\",a=i?\"newSeriesAnnounce\"+o:s?\"newPointAnnounce\"+o:\"newDataAnnounce\",l=c(n);return n.langFormat(\"accessibility.announceNewData.\"+a,{chartTitle:l,seriesDesc:i?u(i):null,pointDesc:s?d(s):null,point:s,series:i});}}]);return g;}();return function(e){function t(e){var _t$accessibility;var t=this.chart,i=(_t$accessibility=t.accessibility)===null||_t$accessibility===void 0?void 0:_t$accessibility.components.series.newDataAnnouncer;i&&i.chart===t&&p(t)&&(i.dirty.newPoint=l(i.dirty.newPoint)?void 0:e.point);}function i(){var _e$accessibility;var e=this.chart,t=(_e$accessibility=e.accessibility)===null||_e$accessibility===void 0?void 0:_e$accessibility.components.series.newDataAnnouncer;t&&t.chart===e&&p(e)&&(t.dirty.hasDirty=!0,t.dirty.allSeries[this.name+this.index]=this);}e.compose=function(e){h(o,\"A11y.NDA\")&&(a(e,\"addPoint\",t),a(e,\"updatedData\",i));};}(g||(g={})),g;}),i(t,\"Accessibility/ProxyElement.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/Utils/EventProvider.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"]],function(e,t,i,s,n){var r=e.doc,o=t.attr,a=t.css,l=t.merge,h=s.fireEventOnWrappedOrUnwrappedElement,c=n.cloneMouseEvent,d=n.cloneTouchEvent,u=n.getFakeMouseEvent,p=n.removeElement;return/*#__PURE__*/function(){function _class12(e,t){var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"button\";var n=arguments.length>3?arguments[3]:undefined;var o=arguments.length>4?arguments[4]:undefined;_classCallCheck(this,_class12);this.chart=e,this.target=t,this.eventProvider=new i();var a=this.innerElement=r.createElement(s),l=this.element=n?r.createElement(n):a;e.styledMode||this.hideElementVisually(a),n&&(\"li\"!==n||e.styledMode||(l.style.listStyle=\"none\"),l.appendChild(a),this.element=l),this.updateTarget(t,o);}_createClass(_class12,[{key:\"click\",value:function click(){var e=this.getTargetPosition();e.x+=e.width/2,e.y+=e.height/2;var t=u(\"click\",e);h(this.target.click,t);}},{key:\"updateTarget\",value:function updateTarget(e,t){this.target=e,this.updateCSSClassName();var i=t||{};Object.keys(i).forEach(function(e){null===i[e]&&delete i[e];});var s=this.getTargetAttr(e.click,\"aria-label\");o(this.innerElement,l(s?{\"aria-label\":s}:{},i)),this.eventProvider.removeAddedEvents(),this.addProxyEventsToElement(this.innerElement,e.click),this.refreshPosition();}},{key:\"refreshPosition\",value:function refreshPosition(){var e=this.getTargetPosition();a(this.innerElement,{width:(e.width||1)+\"px\",height:(e.height||1)+\"px\",left:(Math.round(e.x)||0)+\"px\",top:(Math.round(e.y)||0)+\"px\"});}},{key:\"remove\",value:function remove(){this.eventProvider.removeAddedEvents(),p(this.element);}},{key:\"updateCSSClassName\",value:function updateCSSClassName(){var e=function e(_e182){return _e182.indexOf(\"highcharts-no-tooltip\")>-1;},t=this.chart.legend,i=t.group&&t.group.div,s=e(i&&i.className||\"\"),n=e(this.getTargetAttr(this.target.click,\"class\")||\"\");this.innerElement.className=s||n?\"highcharts-a11y-proxy-element highcharts-no-tooltip\":\"highcharts-a11y-proxy-element\";}},{key:\"addProxyEventsToElement\",value:function addProxyEventsToElement(e,t){var _this63=this;[\"click\",\"touchstart\",\"touchend\",\"touchcancel\",\"touchmove\",\"mouseover\",\"mouseenter\",\"mouseleave\",\"mouseout\"].forEach(function(i){var s=0===i.indexOf(\"touch\");_this63.eventProvider.addEvent(e,i,function(e){var i=s?d(e):c(e);t&&h(t,i),e.stopPropagation(),s||e.preventDefault();},{passive:!1});});}},{key:\"hideElementVisually\",value:function hideElementVisually(e){a(e,{borderWidth:0,backgroundColor:\"transparent\",cursor:\"pointer\",outline:\"none\",opacity:.001,filter:\"alpha(opacity=1)\",zIndex:999,overflow:\"hidden\",padding:0,margin:0,display:\"block\",position:\"absolute\",\"-ms-filter\":\"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)\"});}},{key:\"getTargetPosition\",value:function getTargetPosition(){var e=this.target.click,t=e.element?e.element:e,i=this.target.visual||t,s=this.chart.renderTo,n=this.chart.pointer;if(s&&i!==null&&i!==void 0&&i.getBoundingClientRect&&n){var _e183=i.getBoundingClientRect(),_t190=n.getChartPosition();return{x:(_e183.left-_t190.left)/_t190.scaleX,y:(_e183.top-_t190.top)/_t190.scaleY,width:_e183.right/_t190.scaleX-_e183.left/_t190.scaleX,height:_e183.bottom/_t190.scaleY-_e183.top/_t190.scaleY};}return{x:0,y:0,width:1,height:1};}},{key:\"getTargetAttr\",value:function getTargetAttr(e,t){return e.element?e.element.getAttribute(t):e.getAttribute(t);}}]);return _class12;}();}),i(t,\"Accessibility/ProxyProvider.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/DOMElementProvider.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Accessibility/ProxyElement.js\"]],function(e,t,i,s,n,r){var o=e.doc,a=t.attr,l=t.css,h=i.unhideChartElementFromAT,c=n.removeChildNodes;return/*#__PURE__*/function(){function _class13(e){_classCallCheck(this,_class13);this.chart=e,this.domElementProvider=new s(),this.groups={},this.groupOrder=[],this.beforeChartProxyPosContainer=this.createProxyPosContainer(\"before\"),this.afterChartProxyPosContainer=this.createProxyPosContainer(\"after\"),this.update();}_createClass(_class13,[{key:\"addProxyElement\",value:function addProxyElement(e,t){var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"button\";var s=arguments.length>3?arguments[3]:undefined;var n=this.groups[e];if(!n)throw Error(\"ProxyProvider.addProxyElement: Invalid group key \"+e);var o=\"ul\"===n.type||\"ol\"===n.type?\"li\":void 0,a=new r(this.chart,t,i,o,s);return n.proxyContainerElement.appendChild(a.element),n.proxyElements.push(a),a;}},{key:\"addGroup\",value:function addGroup(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"div\";var i=arguments.length>2?arguments[2]:undefined;var s;var n=this.groups[e];if(n)return n.groupElement;var r=this.domElementProvider.createElement(t);return i&&i.role&&\"div\"!==t?(s=this.domElementProvider.createElement(\"div\")).appendChild(r):s=r,s.className=\"highcharts-a11y-proxy-group highcharts-a11y-proxy-group-\"+e.replace(/\\W/g,\"-\"),this.groups[e]={proxyContainerElement:r,groupElement:s,type:t,proxyElements:[]},a(s,i||{}),\"ul\"===t&&r.setAttribute(\"role\",\"list\"),this.afterChartProxyPosContainer.appendChild(s),this.updateGroupOrder(this.groupOrder),s;}},{key:\"updateGroupAttrs\",value:function updateGroupAttrs(e,t){var i=this.groups[e];if(!i)throw Error(\"ProxyProvider.updateGroupAttrs: Invalid group key \"+e);a(i.groupElement,t);}},{key:\"updateGroupOrder\",value:function updateGroupOrder(e){var _this64=this;if(this.groupOrder=e.slice(),this.isDOMOrderGroupOrder())return;var t=e.indexOf(\"series\"),i=t>-1?e.slice(0,t):e,s=t>-1?e.slice(t+1):[],n=o.activeElement;[\"before\",\"after\"].forEach(function(e){var t=_this64[\"before\"===e?\"beforeChartProxyPosContainer\":\"afterChartProxyPosContainer\"];c(t),(\"before\"===e?i:s).forEach(function(e){var i=_this64.groups[e];i&&t.appendChild(i.groupElement);});}),(this.beforeChartProxyPosContainer.contains(n)||this.afterChartProxyPosContainer.contains(n))&&n&&n.focus&&n.focus();}},{key:\"clearGroup\",value:function clearGroup(e){var t=this.groups[e];if(!t)throw Error(\"ProxyProvider.clearGroup: Invalid group key \"+e);c(t.proxyContainerElement);}},{key:\"removeGroup\",value:function removeGroup(e){var t=this.groups[e];t&&(this.domElementProvider.removeElement(t.groupElement),t.groupElement!==t.proxyContainerElement&&this.domElementProvider.removeElement(t.proxyContainerElement),delete this.groups[e]);}},{key:\"update\",value:function update(){this.updatePosContainerPositions(),this.updateGroupOrder(this.groupOrder),this.updateProxyElementPositions();}},{key:\"updateProxyElementPositions\",value:function updateProxyElementPositions(){Object.keys(this.groups).forEach(this.updateGroupProxyElementPositions.bind(this));}},{key:\"updateGroupProxyElementPositions\",value:function updateGroupProxyElementPositions(e){var t=this.groups[e];t&&t.proxyElements.forEach(function(e){return e.refreshPosition();});}},{key:\"destroy\",value:function destroy(){this.domElementProvider.destroyCreatedElements();}},{key:\"createProxyPosContainer\",value:function createProxyPosContainer(e){var t=this.domElementProvider.createElement(\"div\");return t.setAttribute(\"aria-hidden\",\"false\"),t.className=\"highcharts-a11y-proxy-container\"+(e?\"-\"+e:\"\"),l(t,{top:\"0\",left:\"0\"}),this.chart.styledMode||(t.style.whiteSpace=\"nowrap\",t.style.position=\"absolute\"),t;}},{key:\"getCurrentGroupOrderInDOM\",value:function getCurrentGroupOrderInDOM(){var _this65=this;var e=function e(_e184){var t=Object.keys(_this65.groups),i=t.length;for(;i--;){var _s118=t[i],_n60=_this65.groups[_s118];if(_n60&&_e184===_n60.groupElement)return _s118;}},t=function t(_t192){var i=[],s=_t192.children;for(var _t191=0;_t191<s.length;++_t191){var _n61=e(s[_t191]);_n61&&i.push(_n61);}return i;},i=t(this.beforeChartProxyPosContainer),s=t(this.afterChartProxyPosContainer);return i.push(\"series\"),i.concat(s);}},{key:\"isDOMOrderGroupOrder\",value:function isDOMOrderGroupOrder(){var _this66=this;var e=this.getCurrentGroupOrderInDOM(),t=this.groupOrder.filter(function(e){return\"series\"===e||!!_this66.groups[e];}),i=e.length;if(i!==t.length)return!1;for(;i--;)if(e[i]!==t[i])return!1;return!0;}},{key:\"updatePosContainerPositions\",value:function updatePosContainerPositions(){var e=this.chart;if(e.renderer.forExport)return;var t=e.renderer.box;e.container.insertBefore(this.afterChartProxyPosContainer,t.nextSibling),e.container.insertBefore(this.beforeChartProxyPosContainer,t),h(this.chart,this.afterChartProxyPosContainer),h(this.chart,this.beforeChartProxyPosContainer);}}]);return _class13;}();}),i(t,\"Accessibility/Components/RangeSelectorComponent.js\",[t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/Utils/Announcer.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n){var r=i.unhideChartElementFromAT,o=i.getAxisRangeDescription,a=n.addEvent,l=n.attr;var h=/*#__PURE__*/function(_e185){_inherits(h,_e185);var _super30=_createSuper(h);function h(){_classCallCheck(this,h);return _super30.apply(this,arguments);}_createClass(h,[{key:\"init\",value:function init(){var e=this.chart;this.announcer=new t(e,\"polite\");}},{key:\"onChartUpdate\",value:function onChartUpdate(){var e=this.chart,t=this,i=e.rangeSelector;i&&(this.updateSelectorVisibility(),this.setDropdownAttrs(),i.buttons&&i.buttons.length&&i.buttons.forEach(function(e){t.setRangeButtonAttrs(e);}),i.maxInput&&i.minInput&&[\"minInput\",\"maxInput\"].forEach(function(s,n){var o=i[s];o&&(r(e,o),t.setRangeInputAttrs(o,\"accessibility.rangeSelector.\"+(n?\"max\":\"min\")+\"InputLabel\"));}));}},{key:\"updateSelectorVisibility\",value:function updateSelectorVisibility(){var e=this.chart,t=e.rangeSelector,i=t&&t.dropdown,s=t&&t.buttons||[],n=function n(e){return e.setAttribute(\"aria-hidden\",!0);};t&&t.hasVisibleDropdown&&i?(r(e,i),s.forEach(function(e){return n(e.element);})):(i&&n(i),s.forEach(function(t){return r(e,t.element);}));}},{key:\"setDropdownAttrs\",value:function setDropdownAttrs(){var e=this.chart,t=e.rangeSelector&&e.rangeSelector.dropdown;if(t){var _i131=e.langFormat(\"accessibility.rangeSelector.dropdownLabel\",{rangeTitle:e.options.lang.rangeSelectorZoom});t.setAttribute(\"aria-label\",_i131),t.setAttribute(\"tabindex\",-1);}}},{key:\"setRangeButtonAttrs\",value:function setRangeButtonAttrs(e){l(e.element,{tabindex:-1,role:\"button\"});}},{key:\"setRangeInputAttrs\",value:function setRangeInputAttrs(e,t){var i=this.chart;l(e,{tabindex:-1,\"aria-label\":i.langFormat(t,{chart:i})});}},{key:\"onButtonNavKbdArrowKey\",value:function onButtonNavKbdArrowKey(e,t){var i=e.response,s=this.keyCodes,n=this.chart,r=n.options.accessibility.keyboardNavigation.wrapAround,o=t===s.left||t===s.up?-1:1;return n.highlightRangeSelectorButton(n.highlightedRangeSelectorItemIx+o)?i.success:r?(e.init(o),i.success):i[o>0?\"next\":\"prev\"];}},{key:\"onButtonNavKbdClick\",value:function onButtonNavKbdClick(e){var t=e.response,i=this.chart;return 3!==i.oldRangeSelectorItemState&&this.fakeClickEvent(i.rangeSelector.buttons[i.highlightedRangeSelectorItemIx].element),t.success;}},{key:\"onAfterBtnClick\",value:function onAfterBtnClick(){var e=this.chart,t=o(e.xAxis[0]),i=e.langFormat(\"accessibility.rangeSelector.clickButtonAnnouncement\",{chart:e,axisRangeDescription:t});i&&this.announcer.announce(i);}},{key:\"onInputKbdMove\",value:function onInputKbdMove(e){var t=this.chart,i=t.rangeSelector,s=t.highlightedInputRangeIx=(t.highlightedInputRangeIx||0)+e;if(s>1||s<0){if(t.accessibility)return t.accessibility.keyboardNavigation.exiting=!0,t.accessibility.keyboardNavigation.tabindexContainer.focus(),t.accessibility.keyboardNavigation.move(e);}else if(i){var _e186=i[s?\"maxDateBox\":\"minDateBox\"],_n62=i[s?\"maxInput\":\"minInput\"];_e186&&_n62&&t.setFocusToElement(_e186,_n62);}return!0;}},{key:\"onInputNavInit\",value:function onInputNavInit(e){var _this67=this;var t=this,i=this.chart,s=e>0?0:1,n=i.rangeSelector,r=n&&n[s?\"maxDateBox\":\"minDateBox\"],o=n&&n.minInput,l=n&&n.maxInput;if(i.highlightedInputRangeIx=s,r&&o&&l){i.setFocusToElement(r,s?l:o),this.removeInputKeydownHandler&&this.removeInputKeydownHandler();var _e187=function _e187(e){(e.which||e.keyCode)===_this67.keyCodes.tab&&t.onInputKbdMove(e.shiftKey?-1:1)&&(e.preventDefault(),e.stopPropagation());},_n63=a(o,\"keydown\",_e187),_h20=a(l,\"keydown\",_e187);this.removeInputKeydownHandler=function(){_n63(),_h20();};}}},{key:\"onInputNavTerminate\",value:function onInputNavTerminate(){var e=this.chart.rangeSelector||{};e.maxInput&&e.hideInput(\"max\"),e.minInput&&e.hideInput(\"min\"),this.removeInputKeydownHandler&&(this.removeInputKeydownHandler(),delete this.removeInputKeydownHandler);}},{key:\"initDropdownNav\",value:function initDropdownNav(){var _this68=this;var e=this.chart,t=e.rangeSelector,i=t&&t.dropdown;t&&i&&(e.setFocusToElement(t.buttonGroup,i),this.removeDropdownKeydownHandler&&this.removeDropdownKeydownHandler(),this.removeDropdownKeydownHandler=a(i,\"keydown\",function(t){var i=(t.which||t.keyCode)===_this68.keyCodes.tab,s=e.accessibility;i&&(t.preventDefault(),t.stopPropagation(),s&&(s.keyboardNavigation.tabindexContainer.focus(),s.keyboardNavigation.move(t.shiftKey?-1:1)));}));}},{key:\"getRangeSelectorButtonNavigation\",value:function getRangeSelectorButtonNavigation(){var e=this.chart,t=this.keyCodes,i=this;return new s(e,{keyCodeMap:[[[t.left,t.right,t.up,t.down],function(e){return i.onButtonNavKbdArrowKey(this,e);}],[[t.enter,t.space],function(){return i.onButtonNavKbdClick(this);}]],validate:function validate(){return!!(e.rangeSelector&&e.rangeSelector.buttons&&e.rangeSelector.buttons.length);},init:function init(t){var s=e.rangeSelector;if(s&&s.hasVisibleDropdown)i.initDropdownNav();else if(s){var _i132=s.buttons.length-1;e.highlightRangeSelectorButton(t>0?0:_i132);}},terminate:function terminate(){i.removeDropdownKeydownHandler&&(i.removeDropdownKeydownHandler(),delete i.removeDropdownKeydownHandler);}});}},{key:\"getRangeSelectorInputNavigation\",value:function getRangeSelectorInputNavigation(){var e=this.chart,t=this;return new s(e,{keyCodeMap:[],validate:function validate(){return!!(e.rangeSelector&&e.rangeSelector.inputGroup&&\"hidden\"!==e.rangeSelector.inputGroup.element.style.visibility&&!1!==e.options.rangeSelector.inputEnabled&&e.rangeSelector.minInput&&e.rangeSelector.maxInput);},init:function init(e){t.onInputNavInit(e);},terminate:function terminate(){t.onInputNavTerminate();}});}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){return[this.getRangeSelectorButtonNavigation(),this.getRangeSelectorInputNavigation()];}},{key:\"destroy\",value:function destroy(){this.removeDropdownKeydownHandler&&this.removeDropdownKeydownHandler(),this.removeInputKeydownHandler&&this.removeInputKeydownHandler(),this.announcer&&this.announcer.destroy();}}]);return h;}(e);return function(e){function t(e){var t=this.rangeSelector&&this.rangeSelector.buttons||[],i=this.highlightedRangeSelectorItemIx,s=this.rangeSelector&&this.rangeSelector.selected;return void 0!==i&&t[i]&&i!==s&&t[i].setState(this.oldRangeSelectorItemState||0),this.highlightedRangeSelectorItemIx=e,!!t[e]&&(this.setFocusToElement(t[e].box,t[e].element),e!==s&&(this.oldRangeSelectorItemState=t[e].state,t[e].setState(1)),!0);}function i(){var e=this.chart.accessibility;if(e&&e.components.rangeSelector)return e.components.rangeSelector.onAfterBtnClick();}e.compose=function(e,s){var n=e.prototype;n.highlightRangeSelectorButton||(n.highlightRangeSelectorButton=t,a(s,\"afterBtnClick\",i));};}(h||(h={})),h;}),i(t,\"Accessibility/Components/SeriesComponent/ForcedMarkers.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var i;var s=e.composed,n=t.addEvent,r=t.merge,o=t.pushUnique;return function(e){function t(e){r(!0,e,{marker:{enabled:!0,states:{normal:{opacity:0}}}});}function i(e){return e.marker.states&&e.marker.states.normal&&e.marker.states.normal.opacity;}function a(e){return!!(e._hasPointMarkers&&e.points&&e.points.length);}function l(){this.chart.styledMode&&(this.markerGroup&&this.markerGroup[this.a11yMarkersForced?\"addClass\":\"removeClass\"](\"highcharts-a11y-markers-hidden\"),a(this)&&this.points.forEach(function(e){e.graphic&&(e.graphic[e.hasForcedA11yMarker?\"addClass\":\"removeClass\"](\"highcharts-a11y-marker-hidden\"),e.graphic[!1===e.hasForcedA11yMarker?\"addClass\":\"removeClass\"](\"highcharts-a11y-marker-visible\"));}));}function h(e){this.resetA11yMarkerOptions=r(e.options.marker||{},this.userOptions.marker||{});}function c(){var e=this.options;(function(e){var t=e.chart.options.accessibility.enabled,i=!1!==(e.options.accessibility&&e.options.accessibility.enabled);return t&&i&&function(e){var t=e.chart.options.accessibility;return e.points.length<t.series.pointDescriptionEnabledThreshold||!1===t.series.pointDescriptionEnabledThreshold;}(e);})(this)?(e.marker&&!1===e.marker.enabled&&(this.a11yMarkersForced=!0,t(this.options)),a(this)&&function(e){var s=e.points.length;for(;s--;){var _n64=e.points[s],_o76=_n64.options,_a36=_n64.hasForcedA11yMarker;if(delete _n64.hasForcedA11yMarker,_o76.marker){var _e188=_a36&&0===i(_o76);_o76.marker.enabled&&!_e188?(r(!0,_o76.marker,{states:{normal:{opacity:i(_o76)||1}}}),_n64.hasForcedA11yMarker=!1):!1===_o76.marker.enabled&&(t(_o76),_n64.hasForcedA11yMarker=!0);}}}(this)):this.a11yMarkersForced&&(delete this.a11yMarkersForced,function(e){var t=e.resetA11yMarkerOptions;if(t){var _i133=t.states&&t.states.normal&&t.states.normal.opacity;e.userOptions&&e.userOptions.marker&&(e.userOptions.marker.enabled=!0),e.update({marker:{enabled:t.enabled,states:{normal:{opacity:_i133}}}});}}(this),delete this.resetA11yMarkerOptions);}function d(){this.boosted&&this.a11yMarkersForced&&(r(!0,this.options,{marker:{enabled:!1}}),delete this.a11yMarkersForced);}e.compose=function(e){o(s,\"A11y.FM\")&&(n(e,\"afterSetOptions\",h),n(e,\"render\",c),n(e,\"afterRender\",l),n(e,\"renderCanvas\",d));};}(i||(i={})),i;}),i(t,\"Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js\",[t[\"Core/Series/Point.js\"],t[\"Core/Series/Series.js\"],t[\"Core/Series/SeriesRegistry.js\"],t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Accessibility/Utils/EventProvider.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"]],function(e,t,i,s,n,r,o,a){var l=i.seriesTypes,h=s.doc,c=n.defined,d=n.fireEvent,u=a.getPointFromXY,p=a.getSeriesFromName,g=a.scrollAxisToPoint;function m(e){var t=e.index,i=e.series.points,s=i.length;if(i[t]===e)return t;for(;s--;)if(i[s]===e)return s;}function b(e){var t=e.chart.options.accessibility.keyboardNavigation.seriesNavigation,i=e.options.accessibility||{},s=i.keyboardNavigation;return s&&!1===s.enabled||!1===i.enabled||!1===e.options.enableMouseTracking||!e.visible||t.pointNavigationEnabledThreshold&&+t.pointNavigationEnabledThreshold<=e.points.length;}function y(e){var t=e.series.chart.options.accessibility,i=e.options.accessibility&&!1===e.options.accessibility.enabled;return e.isNull&&t.keyboardNavigation.seriesNavigation.skipNullPoints||!1===e.visible||!1===e.isInside||i||b(e.series);}function f(e){var t=e.series||[],i=t.length;for(var _e189=0;_e189<i;++_e189)if(!b(t[_e189])){var _i134=function(e){var t=e.points||[],i=t.length;for(var _e190=0;_e190<i;++_e190)if(!y(t[_e190]))return t[_e190];return null;}(t[_e189]);if(_i134)return _i134;}return null;}function x(e){var t=e.series.length,i=!1;for(;t--&&(e.highlightedPoint=e.series[t].points[e.series[t].points.length-1],!(i=e.series[t].highlightNextValidPoint())););return i;}function v(e){delete e.highlightedPoint;var t=f(e);return!!t&&t.highlight();}var A=/*#__PURE__*/function(){function A(e,t){_classCallCheck(this,A);this.keyCodes=t,this.chart=e;}_createClass(A,[{key:\"init\",value:function init(){var i=this,s=this.chart,n=this.eventProvider=new o();n.addEvent(t,\"destroy\",function(){return i.onSeriesDestroy(this);}),n.addEvent(s,\"afterApplyDrilldown\",function(){!function(e){var t=f(e);t&&t.highlight(!1);}(this);}),n.addEvent(s,\"drilldown\",function(e){var t=e.point,s=t.series;i.lastDrilledDownPoint={x:t.x,y:t.y,seriesName:s?s.name:\"\"};}),n.addEvent(s,\"drillupall\",function(){setTimeout(function(){i.onDrillupAll();},10);}),n.addEvent(e,\"afterSetState\",function(){var e=this.graphic&&this.graphic.element,t=h.activeElement,i=t&&t.getAttribute(\"class\"),n=i&&i.indexOf(\"highcharts-a11y-proxy-element\")>-1;s.highlightedPoint===this&&t!==e&&!n&&e&&e.focus&&e.focus();});}},{key:\"onDrillupAll\",value:function onDrillupAll(){var e;var t=this.lastDrilledDownPoint,i=this.chart,s=t&&p(i,t.seriesName);t&&s&&c(t.x)&&c(t.y)&&(e=u(s,t.x,t.y)),e=e||f(i),i.container&&i.container.focus(),e&&e.highlight&&e.highlight(!1);}},{key:\"getKeyboardNavigationHandler\",value:function getKeyboardNavigationHandler(){var e=this,t=this.keyCodes,i=this.chart,s=i.inverted;return new r(i,{keyCodeMap:[[s?[t.up,t.down]:[t.left,t.right],function(t){return e.onKbdSideways(this,t);}],[s?[t.left,t.right]:[t.up,t.down],function(t){return e.onKbdVertical(this,t);}],[[t.enter,t.space],function(e,t){var s=i.highlightedPoint;if(s){var _s$graphic;var _this$chart3=this.chart,_e191=_this$chart3.plotLeft,_i135=_this$chart3.plotTop,_s$plotX=s.plotX,_n65=_s$plotX===void 0?0:_s$plotX,_s$plotY=s.plotY,_r51=_s$plotY===void 0?0:_s$plotY;t=_objectSpread(_objectSpread({},t),{},{chartX:_e191+_n65,chartY:_i135+_r51,point:s,target:((_s$graphic=s.graphic)===null||_s$graphic===void 0?void 0:_s$graphic.element)||t.target}),d(s.series,\"click\",t),s.firePointEvent(\"click\",t);}return this.response.success;}],[[t.home],function(){return v(i),this.response.success;}],[[t.end],function(){return x(i),this.response.success;}],[[t.pageDown,t.pageUp],function(e){return i.highlightAdjacentSeries(e===t.pageDown),this.response.success;}]],init:function init(){return e.onHandlerInit(this);},validate:function validate(){return!!f(i);},terminate:function terminate(){return e.onHandlerTerminate();}});}},{key:\"onKbdSideways\",value:function onKbdSideways(e,t){var i=this.keyCodes,s=t===i.right||t===i.down;return this.attemptHighlightAdjacentPoint(e,s);}},{key:\"onHandlerInit\",value:function onHandlerInit(e){var t=this.chart;return t.options.accessibility.keyboardNavigation.seriesNavigation.rememberPointFocus&&t.highlightedPoint?t.highlightedPoint.highlight():v(t),e.response.success;}},{key:\"onKbdVertical\",value:function onKbdVertical(e,t){var i=this.chart,s=this.keyCodes,n=t===s.down||t===s.right,r=i.options.accessibility.keyboardNavigation.seriesNavigation;if(r.mode&&\"serialize\"===r.mode)return this.attemptHighlightAdjacentPoint(e,n);var o=i.highlightedPoint&&i.highlightedPoint.series.keyboardMoveVertical?\"highlightAdjacentPointVertical\":\"highlightAdjacentSeries\";return i[o](n),e.response.success;}},{key:\"onHandlerTerminate\",value:function onHandlerTerminate(){var e=this.chart,t=e.options.accessibility.keyboardNavigation;e.tooltip&&e.tooltip.hide(0);var i=e.highlightedPoint&&e.highlightedPoint.series;i&&i.onMouseOut&&i.onMouseOut(),e.highlightedPoint&&e.highlightedPoint.onMouseOut&&e.highlightedPoint.onMouseOut(),t.seriesNavigation.rememberPointFocus||delete e.highlightedPoint;}},{key:\"attemptHighlightAdjacentPoint\",value:function attemptHighlightAdjacentPoint(e,t){var i=this.chart,s=i.options.accessibility.keyboardNavigation.wrapAround;return i.highlightAdjacentPoint(t)?e.response.success:s&&(t?v(i):x(i))?e.response.success:e.response[t?\"next\":\"prev\"];}},{key:\"onSeriesDestroy\",value:function onSeriesDestroy(e){var t=this.chart;t.highlightedPoint&&t.highlightedPoint.series===e&&(delete t.highlightedPoint,t.focusElement&&t.focusElement.removeFocusBorder());}},{key:\"destroy\",value:function destroy(){this.eventProvider.removeAddedEvents();}}]);return A;}();return function(e){function t(e){var t,i;var s=this.series,n=this.highlightedPoint,r=n&&m(n)||0,o=n&&n.series.points||[],a=this.series&&this.series[this.series.length-1],l=a&&a.points&&a.points[a.points.length-1];if(!s[0]||!s[0].points)return!1;if(n){if(t=s[n.series.index+(e?1:-1)],(i=o[r+(e?1:-1)])||!t||(i=t.points[e?0:t.points.length-1]),!i)return!1;}else i=e?s[0].points[0]:l;return y(i)?(b(t=i.series)?this.highlightedPoint=e?t.points[t.points.length-1]:t.points[0]:this.highlightedPoint=i,this.highlightAdjacentPoint(e)):i.highlight();}function i(e){var t=this.highlightedPoint,i=1/0,s;return!!(c(t.plotX)&&c(t.plotY))&&(this.series.forEach(function(n){b(n)||n.points.forEach(function(r){if(!c(r.plotY)||!c(r.plotX)||r===t)return;var o=r.plotY-t.plotY,a=Math.abs(r.plotX-t.plotX),l=Math.abs(o)*Math.abs(o)+a*a*4;n.yAxis&&n.yAxis.reversed&&(o*=-1),!(o<=0&&e||o>=0&&!e||l<5||y(r))&&l<i&&(i=l,s=r);});}),!!s&&s.highlight());}function s(e){var t,i,s;var n=this.highlightedPoint,r=this.series&&this.series[this.series.length-1],o=r&&r.points&&r.points[r.points.length-1];return this.highlightedPoint?!!((t=this.series[n.series.index+(e?-1:1)])&&(i=function(e,t,i,s){var n=1/0,r,o,a,l=t.points.length,h=function h(e){return!(c(e.plotX)&&c(e.plotY));};if(!h(e)){for(;l--;)!h(r=t.points[l])&&(a=(e.plotX-r.plotX)*(e.plotX-r.plotX)*4+(e.plotY-r.plotY)*(e.plotY-r.plotY)*1)<n&&(n=a,o=l);return c(o)?t.points[o]:void 0;}}(n,t,0)))&&(b(t)?(i.highlight(),s=this.highlightAdjacentSeries(e))?s:(n.highlight(),!1):(i.highlight(),i.series.highlightNextValidPoint())):(t=e?this.series&&this.series[0]:r,!!(i=e?t&&t.points&&t.points[0]:o)&&i.highlight());}function n(){var _t$tooltip,_t$tooltip$label;var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;var t=this.series.chart,i=(_t$tooltip=t.tooltip)===null||_t$tooltip===void 0?void 0:(_t$tooltip$label=_t$tooltip.label)===null||_t$tooltip$label===void 0?void 0:_t$tooltip$label.element;!this.isNull&&e?this.onMouseOver():t.tooltip&&t.tooltip.hide(0),g(this),this.graphic&&(t.setFocusToElement(this.graphic),!e&&t.focusElement&&t.focusElement.removeFocusBorder()),t.highlightedPoint=this;var s=i===null||i===void 0?void 0:i.getBoundingClientRect().top;if(i&&s&&s<0){var _e192=window.scrollY;window.scrollTo({behavior:\"smooth\",top:_e192+s});}return this;}function r(){var e=this.chart.highlightedPoint,t=(e&&e.series)===this?m(e):0,i=this.points,s=i.length;if(i&&s){for(var _e193=t;_e193<s;++_e193)if(!y(i[_e193]))return i[_e193].highlight();for(var _e194=t;_e194>=0;--_e194)if(!y(i[_e194]))return i[_e194].highlight();}return!1;}e.compose=function(e,o,a){var h=e.prototype,c=o.prototype,d=a.prototype;h.highlightAdjacentPoint||(h.highlightAdjacentPoint=t,h.highlightAdjacentPointVertical=i,h.highlightAdjacentSeries=s,c.highlight=n,d.keyboardMoveVertical=!0,[\"column\",\"gantt\",\"pie\"].forEach(function(e){l[e]&&(l[e].prototype.keyboardMoveVertical=!1);}),d.highlightNextValidPoint=r);};}(A||(A={})),A;}),i(t,\"Accessibility/Components/SeriesComponent/SeriesComponent.js\",[t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Components/SeriesComponent/ForcedMarkers.js\"],t[\"Accessibility/Components/SeriesComponent/NewDataAnnouncer.js\"],t[\"Accessibility/Components/SeriesComponent/SeriesDescriber.js\"],t[\"Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js\"]],function(e,t,i,s,n,r){var o=t.hideSeriesFromAT,a=n.describeSeries;return/*#__PURE__*/function(_e195){_inherits(_class14,_e195);var _super31=_createSuper(_class14);function _class14(){_classCallCheck(this,_class14);return _super31.apply(this,arguments);}_createClass(_class14,[{key:\"init\",value:function init(){this.newDataAnnouncer=new s(this.chart),this.newDataAnnouncer.init(),this.keyboardNavigation=new r(this.chart,this.keyCodes),this.keyboardNavigation.init(),this.hideTooltipFromATWhenShown(),this.hideSeriesLabelsFromATWhenShown();}},{key:\"hideTooltipFromATWhenShown\",value:function hideTooltipFromATWhenShown(){var e=this;this.chart.tooltip&&this.addEvent(this.chart.tooltip.constructor,\"refresh\",function(){this.chart===e.chart&&this.label&&this.label.element&&this.label.element.setAttribute(\"aria-hidden\",!0);});}},{key:\"hideSeriesLabelsFromATWhenShown\",value:function hideSeriesLabelsFromATWhenShown(){this.addEvent(this.chart,\"afterDrawSeriesLabels\",function(){this.series.forEach(function(e){e.labelBySeries&&e.labelBySeries.attr(\"aria-hidden\",!0);});});}},{key:\"onChartRender\",value:function onChartRender(){this.chart.series.forEach(function(e){!1!==(e.options.accessibility&&e.options.accessibility.enabled)&&e.visible&&0!==e.getPointsCollection().length?a(e):o(e);});}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){return this.keyboardNavigation.getKeyboardNavigationHandler();}},{key:\"destroy\",value:function destroy(){this.newDataAnnouncer.destroy(),this.keyboardNavigation.destroy();}}],[{key:\"compose\",value:function compose(e,t,n){s.compose(n),i.compose(n),r.compose(e,t,n);}}]);return _class14;}(e);}),i(t,\"Accessibility/Components/ZoomComponent.js\",[t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Core/Utilities.js\"]],function(e,t,i,s,n){var r=t.unhideChartElementFromAT,o=i.getFakeMouseEvent,a=n.attr,l=n.pick;return/*#__PURE__*/function(_e196){_inherits(_class15,_e196);var _super32=_createSuper(_class15);function _class15(){var _this69;_classCallCheck(this,_class15);_this69=_super32.apply(this,arguments),_this69.focusedMapNavButtonIx=-1;return _this69;}_createClass(_class15,[{key:\"init\",value:function init(){var e=this,t=this.chart;this.proxyProvider.addGroup(\"zoom\",\"div\"),[\"afterShowResetZoom\",\"afterApplyDrilldown\",\"drillupall\"].forEach(function(i){e.addEvent(t,i,function(){e.updateProxyOverlays();});});}},{key:\"onChartUpdate\",value:function onChartUpdate(){var e=this.chart,t=this;e.mapNavigation&&e.mapNavigation.navButtons.forEach(function(i,s){r(e,i.element),t.setMapNavButtonAttrs(i.element,\"accessibility.zoom.mapZoom\"+(s?\"Out\":\"In\"));});}},{key:\"setMapNavButtonAttrs\",value:function setMapNavButtonAttrs(e,t){var i=this.chart;a(e,{tabindex:-1,role:\"button\",\"aria-label\":i.langFormat(t,{chart:i})});}},{key:\"onChartRender\",value:function onChartRender(){this.updateProxyOverlays();}},{key:\"updateProxyOverlays\",value:function updateProxyOverlays(){var e=this.chart;if(this.proxyProvider.clearGroup(\"zoom\"),e.resetZoomButton&&this.createZoomProxyButton(e.resetZoomButton,\"resetZoomProxyButton\",e.langFormat(\"accessibility.zoom.resetZoomButton\",{chart:e})),e.drillUpButton&&e.breadcrumbs&&e.breadcrumbs.list){var _t193=e.breadcrumbs.list[e.breadcrumbs.list.length-1];this.createZoomProxyButton(e.drillUpButton,\"drillUpProxyButton\",e.langFormat(\"accessibility.drillUpButton\",{chart:e,buttonText:e.breadcrumbs.getButtonText(_t193)}));}}},{key:\"createZoomProxyButton\",value:function createZoomProxyButton(e,t,i){this[t]=this.proxyProvider.addProxyElement(\"zoom\",{click:e},\"button\",{\"aria-label\":i,tabindex:-1});}},{key:\"getMapZoomNavigation\",value:function getMapZoomNavigation(){var e=this.keyCodes,t=this.chart,i=this;return new s(t,{keyCodeMap:[[[e.up,e.down,e.left,e.right],function(e){return i.onMapKbdArrow(this,e);}],[[e.tab],function(e,t){return i.onMapKbdTab(this,t);}],[[e.space,e.enter],function(){return i.onMapKbdClick(this);}]],validate:function validate(){return!!(t.mapView&&t.mapNavigation&&t.mapNavigation.navButtons.length);},init:function init(e){return i.onMapNavInit(e);}});}},{key:\"onMapKbdArrow\",value:function onMapKbdArrow(e,t){var i=this.chart,s=this.keyCodes,n=i.container,r=t===s.up||t===s.down,a=t===s.left||t===s.up?1:-1,l=(r?i.plotHeight:i.plotWidth)/10*a,h=10*Math.random(),c={x:n.offsetLeft+i.plotLeft+i.plotWidth/2+h,y:n.offsetTop+i.plotTop+i.plotHeight/2+h},d=r?{x:c.x,y:c.y+l}:{x:c.x+l,y:c.y};return[o(\"mousedown\",c),o(\"mousemove\",d),o(\"mouseup\",d)].forEach(function(e){return n.dispatchEvent(e);}),e.response.success;}},{key:\"onMapKbdTab\",value:function onMapKbdTab(e,t){var i=this.chart,s=e.response,n=t.shiftKey,r=n&&!this.focusedMapNavButtonIx||!n&&this.focusedMapNavButtonIx;if(i.mapNavigation.navButtons[this.focusedMapNavButtonIx].setState(0),r)return i.mapView&&i.mapView.zoomBy(),s[n?\"prev\":\"next\"];this.focusedMapNavButtonIx+=n?-1:1;var o=i.mapNavigation.navButtons[this.focusedMapNavButtonIx];return i.setFocusToElement(o.box,o.element),o.setState(2),s.success;}},{key:\"onMapKbdClick\",value:function onMapKbdClick(e){var t=this.chart.mapNavigation.navButtons[this.focusedMapNavButtonIx].element;return this.fakeClickEvent(t),e.response.success;}},{key:\"onMapNavInit\",value:function onMapNavInit(e){var t=this.chart,i=t.mapNavigation.navButtons[0],s=t.mapNavigation.navButtons[1],n=e>0?i:s;t.setFocusToElement(n.box,n.element),n.setState(2),this.focusedMapNavButtonIx=e>0?0:1;}},{key:\"simpleButtonNavigation\",value:function simpleButtonNavigation(e,t,i){var n=this.keyCodes,r=this,o=this.chart;return new s(o,{keyCodeMap:[[[n.tab,n.up,n.down,n.left,n.right],function(e,t){var i=e===n.tab&&t.shiftKey||e===n.left||e===n.up;return this.response[i?\"prev\":\"next\"];}],[[n.space,n.enter],function(){return l(i(this,o),this.response.success);}]],validate:function validate(){return o[e]&&o[e].box&&r[t].innerElement;},init:function init(){o.setFocusToElement(o[e].box,r[t].innerElement);}});}},{key:\"getKeyboardNavigation\",value:function getKeyboardNavigation(){return[this.simpleButtonNavigation(\"resetZoomButton\",\"resetZoomProxyButton\",function(e,t){t.zoomOut();}),this.simpleButtonNavigation(\"drillUpButton\",\"drillUpProxyButton\",function(e,t){return t.drillUp(),e.response.prev;}),this.getMapZoomNavigation()];}}]);return _class15;}(e);}),i(t,\"Accessibility/HighContrastMode.js\",[t[\"Core/Globals.js\"]],function(e){var t=e.doc,i=e.isMS,s=e.win;return{isHighContrastModeActive:function isHighContrastModeActive(){var e=/(Edg)/.test(s.navigator.userAgent);if(s.matchMedia&&e)return s.matchMedia(\"(-ms-high-contrast: active)\").matches;if(i&&s.getComputedStyle){var _e197=t.createElement(\"div\");_e197.style.backgroundImage=\"url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)\",t.body.appendChild(_e197);var _i136=(_e197.currentStyle||s.getComputedStyle(_e197)).backgroundImage;return t.body.removeChild(_e197),\"none\"===_i136;}return s.matchMedia&&s.matchMedia(\"(forced-colors: active)\").matches;},setHighContrastTheme:function setHighContrastTheme(e){var _t$colors;e.highContrastModeActive=!0;var t=e.options.accessibility.highContrastTheme;e.update(t,!1);var i=((_t$colors=t.colors)===null||_t$colors===void 0?void 0:_t$colors.length)>1;e.series.forEach(function(e){var s=t.plotOptions[e.type]||{},n=i&&void 0!==e.colorIndex?t.colors[e.colorIndex]:s.color||\"window\",r={color:s.color||\"windowText\",colors:i?t.colors:[s.color||\"windowText\"],borderColor:s.borderColor||\"window\",fillColor:n};e.update(r,!1),e.points&&e.points.forEach(function(e){e.options&&e.options.color&&e.update({color:s.color||\"windowText\",borderColor:s.borderColor||\"window\"},!1);});}),e.redraw();}};}),i(t,\"Accessibility/HighContrastTheme.js\",[],function(){return{chart:{backgroundColor:\"window\"},title:{style:{color:\"windowText\"}},subtitle:{style:{color:\"windowText\"}},colorAxis:{minColor:\"windowText\",maxColor:\"windowText\",stops:[],dataClasses:[]},colors:[\"windowText\"],xAxis:{gridLineColor:\"windowText\",labels:{style:{color:\"windowText\"}},lineColor:\"windowText\",minorGridLineColor:\"windowText\",tickColor:\"windowText\",title:{style:{color:\"windowText\"}}},yAxis:{gridLineColor:\"windowText\",labels:{style:{color:\"windowText\"}},lineColor:\"windowText\",minorGridLineColor:\"windowText\",tickColor:\"windowText\",title:{style:{color:\"windowText\"}}},tooltip:{backgroundColor:\"window\",borderColor:\"windowText\",style:{color:\"windowText\"}},plotOptions:{series:{lineColor:\"windowText\",fillColor:\"window\",borderColor:\"windowText\",edgeColor:\"windowText\",borderWidth:1,dataLabels:{connectorColor:\"windowText\",color:\"windowText\",style:{color:\"windowText\",textOutline:\"none\"}},marker:{lineColor:\"windowText\",fillColor:\"windowText\"}},pie:{color:\"window\",colors:[\"window\"],borderColor:\"windowText\",borderWidth:1},boxplot:{fillColor:\"window\"},candlestick:{lineColor:\"windowText\",fillColor:\"window\"},errorbar:{fillColor:\"window\"}},legend:{backgroundColor:\"window\",itemStyle:{color:\"windowText\"},itemHoverStyle:{color:\"windowText\"},itemHiddenStyle:{color:\"#555\"},title:{style:{color:\"windowText\"}}},credits:{style:{color:\"windowText\"}},drilldown:{activeAxisLabelStyle:{color:\"windowText\"},activeDataLabelStyle:{color:\"windowText\"}},navigation:{buttonOptions:{symbolStroke:\"windowText\",theme:{fill:\"window\"}}},rangeSelector:{buttonTheme:{fill:\"window\",stroke:\"windowText\",style:{color:\"windowText\"},states:{hover:{fill:\"window\",stroke:\"windowText\",style:{color:\"windowText\"}},select:{fill:\"#444\",stroke:\"windowText\",style:{color:\"windowText\"}}}},inputBoxBorderColor:\"windowText\",inputStyle:{backgroundColor:\"window\",color:\"windowText\"},labelStyle:{color:\"windowText\"}},navigator:{handles:{backgroundColor:\"window\",borderColor:\"windowText\"},outlineColor:\"windowText\",maskFill:\"transparent\",series:{color:\"windowText\",lineColor:\"windowText\"},xAxis:{gridLineColor:\"windowText\"}},scrollbar:{barBackgroundColor:\"#444\",barBorderColor:\"windowText\",buttonArrowColor:\"windowText\",buttonBackgroundColor:\"window\",buttonBorderColor:\"windowText\",rifleColor:\"windowText\",trackBackgroundColor:\"window\",trackBorderColor:\"windowText\"}};}),i(t,\"Accessibility/Options/A11yDefaults.js\",[],function(){return{accessibility:{enabled:!0,screenReaderSection:{beforeChartFormat:\"<{headingTagName}>{chartTitle}</{headingTagName}><div>{typeDescription}</div><div>{chartSubtitle}</div><div>{chartLongdesc}</div><div>{playAsSoundButton}</div><div>{viewTableButton}</div><div>{xAxisDescription}</div><div>{yAxisDescription}</div><div>{annotationsTitle}{annotationsList}</div>\",afterChartFormat:\"{endOfChartMarker}\",axisRangeDateFormat:\"%Y-%m-%d %H:%M:%S\"},series:{descriptionFormat:\"{seriesDescription}{authorDescription}{axisDescription}\",describeSingleSeries:!1,pointDescriptionEnabledThreshold:200},point:{valueDescriptionFormat:\"{xDescription}{separator}{value}.\",describeNull:!0},landmarkVerbosity:\"all\",linkedDescription:'*[data-highcharts-chart=\"{index}\"] + .highcharts-description',highContrastMode:\"auto\",keyboardNavigation:{enabled:!0,focusBorder:{enabled:!0,hideBrowserFocusOutline:!0,style:{color:\"#334eff\",lineWidth:2,borderRadius:3},margin:2},order:[\"series\",\"zoom\",\"rangeSelector\",\"navigator\",\"legend\",\"chartMenu\"],wrapAround:!0,seriesNavigation:{skipNullPoints:!0,pointNavigationEnabledThreshold:!1,rememberPointFocus:!1}},announceNewData:{enabled:!1,minAnnounceInterval:5e3,interruptUser:!1}},legend:{accessibility:{enabled:!0,keyboardNavigation:{enabled:!0}}},exporting:{accessibility:{enabled:!0}},navigator:{accessibility:{enabled:!0}}};}),i(t,\"Accessibility/Options/LangDefaults.js\",[],function(){return{accessibility:{defaultChartTitle:\"Chart\",chartContainerLabel:\"{title}. Highcharts interactive chart.\",svgContainerLabel:\"Interactive chart\",drillUpButton:\"{buttonText}\",credits:\"Chart credits: {creditsStr}\",thousandsSep:\",\",svgContainerTitle:\"\",graphicContainerLabel:\"\",screenReaderSection:{beforeRegionLabel:\"\",afterRegionLabel:\"\",annotations:{heading:\"Chart annotations summary\",descriptionSinglePoint:\"{annotationText}. Related to {annotationPoint}\",descriptionMultiplePoints:\"{annotationText}. Related to {annotationPoint}{#each additionalAnnotationPoints}, also related to {this}{/each}\",descriptionNoPoints:\"{annotationText}\"},endOfChartMarker:\"End of interactive chart.\"},sonification:{playAsSoundButtonText:\"Play as sound, {chartTitle}\",playAsSoundClickAnnouncement:\"Play\"},legend:{legendLabelNoTitle:\"Toggle series visibility, {chartTitle}\",legendLabel:\"Chart legend: {legendTitle}\",legendItem:\"Show {itemName}\"},zoom:{mapZoomIn:\"Zoom chart\",mapZoomOut:\"Zoom out chart\",resetZoomButton:\"Reset zoom\"},rangeSelector:{dropdownLabel:\"{rangeTitle}\",minInputLabel:\"Select start date.\",maxInputLabel:\"Select end date.\",clickButtonAnnouncement:\"Viewing {axisRangeDescription}\"},navigator:{handleLabel:\"{#eq handleIx 0}Start, percent{else}End, percent{/eq}\",groupLabel:\"Axis zoom\",changeAnnouncement:\"{axisRangeDescription}\"},table:{viewAsDataTableButtonText:\"View as data table, {chartTitle}\",tableSummary:\"Table representation of chart.\"},announceNewData:{newDataAnnounce:\"Updated data for chart {chartTitle}\",newSeriesAnnounceSingle:\"New data series: {seriesDesc}\",newPointAnnounceSingle:\"New data point: {pointDesc}\",newSeriesAnnounceMultiple:\"New data series in chart {chartTitle}: {seriesDesc}\",newPointAnnounceMultiple:\"New data point in chart {chartTitle}: {pointDesc}\"},seriesTypeDescriptions:{boxplot:\"Box plot charts are typically used to display groups of statistical data. Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile, and maximum.\",arearange:\"Arearange charts are line charts displaying a range between a lower and higher value for each point.\",areasplinerange:\"These charts are line charts displaying a range between a lower and higher value for each point.\",bubble:\"Bubble charts are scatter charts where each data point also has a size value.\",columnrange:\"Columnrange charts are column charts displaying a range between a lower and higher value for each point.\",errorbar:\"Errorbar series are used to display the variability of the data.\",funnel:\"Funnel charts are used to display reduction of data in stages.\",pyramid:\"Pyramid charts consist of a single pyramid with item heights corresponding to each point value.\",waterfall:\"A waterfall chart is a column chart where each column contributes towards a total end value.\"},chartTypes:{emptyChart:\"Empty chart\",mapTypeDescription:\"Map of {mapTitle} with {numSeries} data series.\",unknownMap:\"Map of unspecified region with {numSeries} data series.\",combinationChart:\"Combination chart with {numSeries} data series.\",defaultSingle:\"Chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.\",defaultMultiple:\"Chart with {numSeries} data series.\",splineSingle:\"Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.\",splineMultiple:\"Line chart with {numSeries} lines.\",lineSingle:\"Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.\",lineMultiple:\"Line chart with {numSeries} lines.\",columnSingle:\"Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.\",columnMultiple:\"Bar chart with {numSeries} data series.\",barSingle:\"Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.\",barMultiple:\"Bar chart with {numSeries} data series.\",pieSingle:\"Pie chart with {numPoints} {#eq numPoints 1}slice{else}slices{/eq}.\",pieMultiple:\"Pie chart with {numSeries} pies.\",scatterSingle:\"Scatter chart with {numPoints} {#eq numPoints 1}point{else}points{/eq}.\",scatterMultiple:\"Scatter chart with {numSeries} data series.\",boxplotSingle:\"Boxplot with {numPoints} {#eq numPoints 1}box{else}boxes{/eq}.\",boxplotMultiple:\"Boxplot with {numSeries} data series.\",bubbleSingle:\"Bubble chart with {numPoints} {#eq numPoints 1}bubbles{else}bubble{/eq}.\",bubbleMultiple:\"Bubble chart with {numSeries} data series.\"},axis:{xAxisDescriptionSingular:\"The chart has 1 X axis displaying {names[0]}. {ranges[0]}\",xAxisDescriptionPlural:\"The chart has {numAxes} X axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.\",yAxisDescriptionSingular:\"The chart has 1 Y axis displaying {names[0]}. {ranges[0]}\",yAxisDescriptionPlural:\"The chart has {numAxes} Y axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.\",timeRangeDays:\"Data range: {range} days.\",timeRangeHours:\"Data range: {range} hours.\",timeRangeMinutes:\"Data range: {range} minutes.\",timeRangeSeconds:\"Data range: {range} seconds.\",rangeFromTo:\"Data ranges from {rangeFrom} to {rangeTo}.\",rangeCategories:\"Data range: {numCategories} categories.\"},exporting:{chartMenuLabel:\"Chart menu\",menuButtonLabel:\"View chart menu, {chartTitle}\"},series:{summary:{\"default\":\"{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",defaultCombination:\"{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",line:\"{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",lineCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",spline:\"{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",splineCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",column:\"{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.\",columnCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.\",bar:\"{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.\",barCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.\",pie:\"{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.\",pieCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.\",scatter:\"{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.\",scatterCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.\",boxplot:\"{series.name}, boxplot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.\",boxplotCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Boxplot with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.\",bubble:\"{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.\",bubbleCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.\",map:\"{series.name}, map {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.\",mapCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Map with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.\",mapline:\"{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",maplineCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.\",mapbubble:\"{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.\",mapbubbleCombination:\"{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.\"},description:\"{description}\",xAxisDescription:\"X axis, {name}\",yAxisDescription:\"Y axis, {name}\",nullPointValue:\"No value\",pointAnnotationsDescription:\"{#each annotations}Annotation: {this}{/each}\"}}};}),i(t,\"Accessibility/Options/DeprecatedOptions.js\",[t[\"Core/Utilities.js\"]],function(e){var t=e.error,i=e.pick;function s(e,t,s){var n=e,r,o=0;for(;o<t.length-1;++o)n=n[r=t[o]]=i(n[r],{});n[t[t.length-1]]=s;}function n(e,i,n,r){function o(e,t){return t.reduce(function(e,t){return e[t];},e);}var a=o(e.options,i),l=o(e.options,n);Object.keys(r).forEach(function(o){var h=a[o];void 0!==h&&(s(l,r[o],h),t(32,!1,e,_defineProperty({},i.join(\".\")+\".\"+o,n.join(\".\")+\".\"+r[o].join(\".\"))));});}return function(e){(function(e){var i=e.options.chart,s=e.options.accessibility||{};[\"description\",\"typeDescription\"].forEach(function(n){i[n]&&(s[n]=i[n],t(32,!1,e,_defineProperty({},\"chart.\".concat(n),\"use accessibility.\".concat(n))));});})(e),function(e){e.axes.forEach(function(i){var s=i.options;s&&s.description&&(s.accessibility=s.accessibility||{},s.accessibility.description=s.description,t(32,!1,e,{\"axis.description\":\"use axis.accessibility.description\"}));});}(e),e.series&&function(e){var i={description:[\"accessibility\",\"description\"],exposeElementToA11y:[\"accessibility\",\"exposeAsGroupOnly\"],pointDescriptionFormatter:[\"accessibility\",\"point\",\"descriptionFormatter\"],skipKeyboardNavigation:[\"accessibility\",\"keyboardNavigation\",\"enabled\"],\"accessibility.pointDescriptionFormatter\":[\"accessibility\",\"point\",\"descriptionFormatter\"]};e.series.forEach(function(n){Object.keys(i).forEach(function(r){var o=n.options[r];\"accessibility.pointDescriptionFormatter\"===r&&(o=n.options.accessibility&&n.options.accessibility.pointDescriptionFormatter),void 0!==o&&(s(n.options,i[r],\"skipKeyboardNavigation\"===r?!o:o),t(32,!1,e,_defineProperty({},\"series.\".concat(r),\"series.\"+i[r].join(\".\"))));});});}(e),n(e,[\"accessibility\"],[\"accessibility\"],{pointDateFormat:[\"point\",\"dateFormat\"],pointDateFormatter:[\"point\",\"dateFormatter\"],pointDescriptionFormatter:[\"point\",\"descriptionFormatter\"],pointDescriptionThreshold:[\"series\",\"pointDescriptionEnabledThreshold\"],pointNavigationThreshold:[\"keyboardNavigation\",\"seriesNavigation\",\"pointNavigationEnabledThreshold\"],pointValueDecimals:[\"point\",\"valueDecimals\"],pointValuePrefix:[\"point\",\"valuePrefix\"],pointValueSuffix:[\"point\",\"valueSuffix\"],screenReaderSectionFormatter:[\"screenReaderSection\",\"beforeChartFormatter\"],describeSingleSeries:[\"series\",\"describeSingleSeries\"],seriesDescriptionFormatter:[\"series\",\"descriptionFormatter\"],onTableAnchorClick:[\"screenReaderSection\",\"onViewDataTableClick\"],axisRangeDateFormat:[\"screenReaderSection\",\"axisRangeDateFormat\"]}),n(e,[\"accessibility\",\"keyboardNavigation\"],[\"accessibility\",\"keyboardNavigation\",\"seriesNavigation\"],{skipNullPoints:[\"skipNullPoints\"],mode:[\"mode\"]}),n(e,[\"lang\",\"accessibility\"],[\"lang\",\"accessibility\"],{legendItem:[\"legend\",\"legendItem\"],legendLabel:[\"legend\",\"legendLabel\"],mapZoomIn:[\"zoom\",\"mapZoomIn\"],mapZoomOut:[\"zoom\",\"mapZoomOut\"],resetZoomButton:[\"zoom\",\"resetZoomButton\"],screenReaderRegionLabel:[\"screenReaderSection\",\"beforeRegionLabel\"],rangeSelectorButton:[\"rangeSelector\",\"buttonText\"],rangeSelectorMaxInput:[\"rangeSelector\",\"maxInputLabel\"],rangeSelectorMinInput:[\"rangeSelector\",\"minInputLabel\"],svgContainerEnd:[\"screenReaderSection\",\"endOfChartMarker\"],viewAsDataTable:[\"table\",\"viewAsDataTableButtonText\"],tableSummary:[\"table\",\"tableSummary\"]});};}),i(t,\"Accessibility/Accessibility.js\",[t[\"Core/Defaults.js\"],t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Accessibility/A11yI18n.js\"],t[\"Accessibility/Components/ContainerComponent.js\"],t[\"Accessibility/FocusBorder.js\"],t[\"Accessibility/Components/InfoRegionsComponent.js\"],t[\"Accessibility/KeyboardNavigation.js\"],t[\"Accessibility/Components/LegendComponent.js\"],t[\"Accessibility/Components/MenuComponent.js\"],t[\"Accessibility/Components/NavigatorComponent.js\"],t[\"Accessibility/Components/SeriesComponent/NewDataAnnouncer.js\"],t[\"Accessibility/ProxyProvider.js\"],t[\"Accessibility/Components/RangeSelectorComponent.js\"],t[\"Accessibility/Components/SeriesComponent/SeriesComponent.js\"],t[\"Accessibility/Components/ZoomComponent.js\"],t[\"Accessibility/HighContrastMode.js\"],t[\"Accessibility/HighContrastTheme.js\"],t[\"Accessibility/Options/A11yDefaults.js\"],t[\"Accessibility/Options/LangDefaults.js\"],t[\"Accessibility/Options/DeprecatedOptions.js\"]],function(e,t,i,s,n,r,o,a,l,h,c,d,u,p,g,m,b,y,f,x,v,A){var C=e.defaultOptions,w=t.doc,E=i.addEvent,T=i.extend,M=i.fireEvent,S=i.merge,k=s.removeElement;var P=/*#__PURE__*/function(){function P(e){_classCallCheck(this,P);this.init(e);}_createClass(P,[{key:\"init\",value:function init(e){if(this.chart=e,!w.addEventListener){this.zombie=!0,this.components={},e.renderTo.setAttribute(\"aria-hidden\",!0);return;}A(e),this.proxyProvider=new p(this.chart),this.initComponents(),this.keyboardNavigation=new l(e,this.components);}},{key:\"initComponents\",value:function initComponents(){var e=this.chart,t=this.proxyProvider,i=e.options.accessibility;this.components={container:new r(),infoRegions:new a(),legend:new h(),chartMenu:new c(),rangeSelector:new g(),series:new m(),zoom:new b(),navigator:new d()},i.customComponents&&T(this.components,i.customComponents);var s=this.components;this.getComponentOrder().forEach(function(i){s[i].initBase(e,t),s[i].init();});}},{key:\"getComponentOrder\",value:function getComponentOrder(){return this.components?this.components.series?[\"series\"].concat(Object.keys(this.components).filter(function(e){return\"series\"!==e;})):Object.keys(this.components):[];}},{key:\"update\",value:function update(){var e=this.components,t=this.chart,i=t.options.accessibility;M(t,\"beforeA11yUpdate\"),t.types=this.getChartTypes();var s=i.keyboardNavigation.order;this.proxyProvider.updateGroupOrder(s),this.getComponentOrder().forEach(function(i){e[i].onChartUpdate(),M(t,\"afterA11yComponentUpdate\",{name:i,component:e[i]});}),this.keyboardNavigation.update(s),!t.highContrastModeActive&&!1!==i.highContrastMode&&(y.isHighContrastModeActive()||!0===i.highContrastMode)&&y.setHighContrastTheme(t),M(t,\"afterA11yUpdate\",{accessibility:this});}},{key:\"destroy\",value:function destroy(){var e=this.chart||{},t=this.components;Object.keys(t).forEach(function(e){t[e].destroy(),t[e].destroyBase();}),this.proxyProvider&&this.proxyProvider.destroy(),e.announcerContainer&&k(e.announcerContainer),this.keyboardNavigation&&this.keyboardNavigation.destroy(),e.renderTo&&e.renderTo.setAttribute(\"aria-hidden\",!0),e.focusElement&&e.focusElement.removeFocusBorder();}},{key:\"getChartTypes\",value:function getChartTypes(){var e={};return this.chart.series.forEach(function(t){e[t.type]=1;}),Object.keys(e);}}]);return P;}();return function(e){function t(){this.accessibility&&this.accessibility.destroy();}function i(){this.a11yDirty&&this.renderTo&&(delete this.a11yDirty,this.updateA11yEnabled());var e=this.accessibility;e&&!e.zombie&&(e.proxyProvider.updateProxyElementPositions(),e.getComponentOrder().forEach(function(t){e.components[t].onChartRender();}));}function s(e){var t=e.options.accessibility;t&&(t.customComponents&&(this.options.accessibility.customComponents=t.customComponents,delete t.customComponents),S(!0,this.options.accessibility,t),this.accessibility&&this.accessibility.destroy&&(this.accessibility.destroy(),delete this.accessibility)),this.a11yDirty=!0;}function r(){var t=this.accessibility,i=this.options.accessibility,s=this.renderer.boxWrapper.element,n=this.title;if(i&&i.enabled)t&&!t.zombie?t.update():(this.accessibility=t=new e(this),t&&!t.zombie&&t.update(),\"img\"===s.getAttribute(\"role\")&&s.removeAttribute(\"role\"));else if(t)t.destroy&&t.destroy(),delete this.accessibility;else{this.renderTo.setAttribute(\"role\",\"img\"),this.renderTo.setAttribute(\"aria-hidden\",!1),this.renderTo.setAttribute(\"aria-label\",(n&&n.element.textContent||\"\").replace(/</g,\"&lt;\")),s.setAttribute(\"aria-hidden\",!0);var _e198=document.getElementsByClassName(\"highcharts-description\")[0];_e198&&(_e198.setAttribute(\"aria-hidden\",!1),_e198.classList.remove(\"highcharts-linked-description\"));}}function a(){this.series.chart.accessibility&&(this.series.chart.a11yDirty=!0);}e.i18nFormat=n.i18nFormat,e.compose=function(e,d,p,b,y,f){l.compose(e),u.compose(b),h.compose(e,d),c.compose(e),m.compose(e,p,b),n.compose(e),o.compose(e,y),f&&g.compose(e,f);var x=e.prototype;x.updateA11yEnabled||(x.updateA11yEnabled=r,E(e,\"destroy\",t),E(e,\"render\",i),E(e,\"update\",s),[\"addSeries\",\"init\"].forEach(function(t){E(e,t,function(){this.a11yDirty=!0;});}),[\"afterApplyDrilldown\",\"drillupall\"].forEach(function(t){E(e,t,function(){var e=this.accessibility;e&&!e.zombie&&e.update();});}),E(p,\"update\",a),[\"update\",\"updatedData\",\"remove\"].forEach(function(e){E(b,e,function(){this.chart.accessibility&&(this.chart.a11yDirty=!0);});}));};}(P||(P={})),S(!0,C,x,{accessibility:{highContrastTheme:f},lang:v}),P;}),i(t,\"masters/modules/accessibility.src.js\",[t[\"Core/Globals.js\"],t[\"Accessibility/Accessibility.js\"],t[\"Accessibility/AccessibilityComponent.js\"],t[\"Accessibility/Utils/ChartUtilities.js\"],t[\"Accessibility/Utils/HTMLUtilities.js\"],t[\"Accessibility/KeyboardNavigationHandler.js\"],t[\"Accessibility/Components/SeriesComponent/SeriesDescriber.js\"]],function(e,t,i,s,n,r,o){return e.i18nFormat=t.i18nFormat,e.A11yChartUtilities=s,e.A11yHTMLUtilities=n,e.AccessibilityComponent=i,e.KeyboardNavigationHandler=r,e.SeriesAccessibilityDescriber=o,t.compose(e.Chart,e.Legend,e.Point,e.Series,e.SVGElement,e.RangeSelector),e;});});!/**\n * Highcharts Dashboards v2.3.0 (2024-08-26)\n *\n * (c) 2009-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n */function(t,e){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(e[\"default\"]=e,module.exports=t&&t.document?e(t):e):\"function\"==typeof define&&define.amd?define(\"dashboards/dashboards\",function(){return e(t);}):(t.Dashboards&&t.Dashboards.error(16,!0),t.Dashboards=e(t));}(\"undefined\"!=typeof window?window:void 0,function(t){\"use strict\";var e={};function s(e,s,i,n){!e.hasOwnProperty(s)&&(e[s]=n.apply(null,i),t&&\"function\"==typeof CustomEvent&&t.dispatchEvent(new CustomEvent(\"DashboardsModuleLoaded\",{detail:{path:s,module:e[s]}})));}return s(e,\"Core/Globals.js\",[],function(){var e,s;return(s=e||(e={})).SVG_NS=\"http://www.w3.org/2000/svg\",s.product=\"Highcharts\",s.version=\"2.3.0\",s.win=void 0!==t?t:{},s.doc=s.win.document,s.svg=s.doc&&s.doc.createElementNS&&!!s.doc.createElementNS(s.SVG_NS,\"svg\").createSVGRect,s.userAgent=s.win.navigator&&s.win.navigator.userAgent||\"\",s.isChrome=s.win.chrome,s.isFirefox=-1!==s.userAgent.indexOf(\"Firefox\"),s.isMS=/(edge|msie|trident)/i.test(s.userAgent)&&!s.win.opera,s.isSafari=!s.isChrome&&-1!==s.userAgent.indexOf(\"Safari\"),s.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(s.userAgent),s.isWebKit=-1!==s.userAgent.indexOf(\"AppleWebKit\"),s.deg2rad=2*Math.PI/360,s.hasBidiBug=s.isFirefox&&4>parseInt(s.userAgent.split(\"Firefox/\")[1],10),s.marginNames=[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"],s.noop=function(){},s.supportsPassiveEvents=function(){var t=!1;if(!s.isMS){var _e199=Object.defineProperty({},\"passive\",{get:function get(){t=!0;}});s.win.addEventListener&&s.win.removeEventListener&&(s.win.addEventListener(\"testPassive\",s.noop,_e199),s.win.removeEventListener(\"testPassive\",s.noop,_e199));}return t;}(),s.charts=[],s.composed=[],s.dateFormats={},s.seriesTypes={},s.symbolSizes={},s.chartCount=0,e;}),s(e,\"Core/Utilities.js\",[e[\"Core/Globals.js\"]],function(t){var e;var s=t.charts,i=t.doc,n=t.win;function o(e,s,i,r){var a=s?\"Highcharts error\":\"Highcharts warning\";32===e&&(e=\"\".concat(a,\": Deprecated member\"));var l=u(e),h=l?\"\".concat(a,\" #\").concat(e,\": www.highcharts.com/errors/\").concat(e,\"/\"):e.toString();if(void 0!==r){var _t197=\"\";l&&(h+=\"?\"),O(r,function(e,s){_t197+=\"\\n - \".concat(s,\": \").concat(e),l&&(h+=encodeURI(s)+\"=\"+encodeURI(e));}),h+=_t197;}x(t,\"displayError\",{chart:i,code:e,message:h,params:r},function(){if(s)throw Error(h);n.console&&-1===o.messages.indexOf(h)&&console.warn(h);}),o.messages.push(h);}function r(t,e){return parseInt(t,e||10);}function a(t){return\"string\"==typeof t;}function l(t){var e=Object.prototype.toString.call(t);return\"[object Array]\"===e||\"[object Array Iterator]\"===e;}function h(t,e){return!!t&&\"object\"==_typeof(t)&&(!e||!l(t));}function c(t){return h(t)&&\"number\"==typeof t.nodeType;}function d(t){var e=t&&t.constructor;return!!(h(t,!0)&&!c(t)&&e&&e.name&&\"Object\"!==e.name);}function u(t){return\"number\"==typeof t&&!isNaN(t)&&t<1/0&&t>-1/0;}function p(t){return null!=t;}function m(t,e,s){var i;var n=a(e)&&!p(s),o=function o(e,s){p(e)?t.setAttribute(s,e):n?(i=t.getAttribute(s))||\"class\"!==s||(i=t.getAttribute(s+\"Name\")):t.removeAttribute(s);};return a(e)?o(s,e):O(e,o),i;}function f(t){return l(t)?t:[t];}function g(t,e){var s;for(s in t||(t={}),e)t[s]=e[s];return t;}function y(){var t=arguments,e=t.length;for(var _s119=0;_s119<e;_s119++){var _e200=t[_s119];if(null!=_e200)return _e200;}}function b(t,e){g(t.style,e);}function C(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10));}function w(t,e){return t>1e14?t:parseFloat(t.toPrecision(e||14));}(o||(o={})).messages=[],Math.easeInOutSine=function(t){return-.5*(Math.cos(Math.PI*t)-1);};var v=Array.prototype.find?function(t,e){return t.find(e);}:function(t,e){var s;var i=t.length;for(s=0;s<i;s++)if(e(t[s],s))return t[s];};function O(t,e,s){for(var _i137 in t)Object.hasOwnProperty.call(t,_i137)&&e.call(s||t[_i137],t[_i137],_i137,t);}function D(t,e,s){function i(e,s){var i=t.removeEventListener;i&&i.call(t,e,s,!1);}function n(s){var n,o;t.nodeName&&(e?(n={})[e]=!0:n=s,O(n,function(t,e){if(s[e])for(o=s[e].length;o--;)i(e,s[e][o].fn);}));}var o=\"function\"==typeof t&&t.prototype||t;if(Object.hasOwnProperty.call(o,\"hcEvents\")){var _t198=o.hcEvents;if(e){var _o77=_t198[e]||[];s?(_t198[e]=_o77.filter(function(t){return s!==t.fn;}),i(e,s)):(n(_t198),_t198[e]=[]);}else n(_t198),delete o.hcEvents;}}function x(e,s,n,o){if(n=n||{},i.createEvent&&(e.dispatchEvent||e.fireEvent&&e!==t)){var _t199=i.createEvent(\"Events\");_t199.initEvent(s,!0,!0),n=g(_t199,n),e.dispatchEvent?e.dispatchEvent(n):e.fireEvent(s,n);}else if(e.hcEvents){n.target||g(n,{preventDefault:function preventDefault(){n.defaultPrevented=!0;},target:e,type:s});var _t200=[],_i138=e,_o78=!1;for(;_i138.hcEvents;)Object.hasOwnProperty.call(_i138,\"hcEvents\")&&_i138.hcEvents[s]&&(_t200.length&&(_o78=!0),_t200.unshift.apply(_t200,_i138.hcEvents[s])),_i138=Object.getPrototypeOf(_i138);_o78&&_t200.sort(function(t,e){return t.order-e.order;}),_t200.forEach(function(t){!1===t.fn.call(e,n)&&n.preventDefault();});}o&&!n.defaultPrevented&&o.call(e,n);}O({map:\"map\",each:\"forEach\",grep:\"filter\",reduce:\"reduce\",some:\"some\"},function(e,s){t[s]=function(t){return o(32,!1,void 0,_defineProperty({},\"Highcharts.\".concat(s),\"use Array.\".concat(e))),Array.prototype[e].apply(t,[].slice.call(arguments,1));};});var S=function(){var t=Math.random().toString(36).substring(2,9)+\"-\",s=0;return function(){return\"highcharts-\"+(e?\"\":t)+s++;};}();return n.jQuery&&(n.jQuery.fn.highcharts=function(){var e=[].slice.call(arguments);if(this[0])return e[0]?(new t[a(e[0])?e.shift():\"Chart\"](this[0],e[0],e[1]),this):s[m(this[0],\"data-highcharts-chart\")];}),{addEvent:function addEvent(e,s,i){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var o=\"function\"==typeof e&&e.prototype||e;Object.hasOwnProperty.call(o,\"hcEvents\")||(o.hcEvents={});var r=o.hcEvents;t.Point&&e instanceof t.Point&&e.series&&e.series.chart&&(e.series.chart.runTrackerClick=!0);var a=e.addEventListener;a&&a.call(e,s,i,!!t.supportsPassiveEvents&&{passive:void 0===n.passive?-1!==s.indexOf(\"touch\"):n.passive,capture:!1}),r[s]||(r[s]=[]);var l={fn:i,order:\"number\"==typeof n.order?n.order:1/0};return r[s].push(l),r[s].sort(function(t,e){return t.order-e.order;}),function(){D(e,s,i);};},arrayMax:function arrayMax(t){var e=t.length,s=t[0];for(;e--;)t[e]>s&&(s=t[e]);return s;},arrayMin:function arrayMin(t){var e=t.length,s=t[0];for(;e--;)t[e]<s&&(s=t[e]);return s;},attr:m,clamp:function clamp(t,e,s){return t>e?t<s?t:s:e;},clearTimeout:function(_clearTimeout3){function clearTimeout(_x8){return _clearTimeout3.apply(this,arguments);}clearTimeout.toString=function(){return _clearTimeout3.toString();};return clearTimeout;}(function(t){p(t)&&clearTimeout(t);}),correctFloat:w,createElement:function createElement(t,e,s,n,o){var r=i.createElement(t);return e&&g(r,e),o&&b(r,{padding:\"0\",border:\"none\",margin:\"0\"}),s&&b(r,s),n&&n.appendChild(r),r;},crisp:function crisp(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var s=arguments.length>2?arguments[2]:undefined;var i=e%2/2,n=s?-1:1;return(Math.round(t*n-i)+i)*n;},css:b,defined:p,destroyObjectProperties:function destroyObjectProperties(t,e,s){O(t,function(i,n){i!==e&&i!==null&&i!==void 0&&i.destroy&&i.destroy(),((i===null||i===void 0?void 0:i.destroy)||!s)&&delete t[n];});},diffObjects:function diffObjects(t,e,s,i){var n={};return function t(e,n,o,r){var a=s?n:e;O(e,function(s,c){if(!r&&i&&i.indexOf(c)>-1&&n[c]){s=f(s),o[c]=[];for(var _e201=0;_e201<Math.max(s.length,n[c].length);_e201++)n[c][_e201]&&(void 0===s[_e201]?o[c][_e201]=n[c][_e201]:(o[c][_e201]={},t(s[_e201],n[c][_e201],o[c][_e201],r+1)));}else h(s,!0)&&!s.nodeType?(o[c]=l(s)?[]:{},t(s,n[c]||{},o[c],r+1),0!==Object.keys(o[c]).length||\"colorAxis\"===c&&0===r||delete o[c]):(e[c]!==n[c]||c in e&&!(c in n))&&\"__proto__\"!==c&&\"constructor\"!==c&&(o[c]=a[c]);});}(t,e,n,0),n;},discardElement:function discardElement(t){t&&t.parentElement&&t.parentElement.removeChild(t);},erase:function erase(t,e){var s=t.length;for(;s--;)if(t[s]===e){t.splice(s,1);break;}},error:o,extend:g,extendClass:function extendClass(t,e){var s=function s(){};return s.prototype=new t(),g(s.prototype,e),s;},find:v,fireEvent:x,getClosestDistance:function getClosestDistance(t,e){var s,i,n,o;var r=!e;return t.forEach(function(t){if(t.length>1)for(o=i=t.length-1;o>0;o--){var _e202;(n=t[o]-t[o-1])<0&&!r?((_e202=e)!==null&&_e202!==void 0&&_e202(),e=void 0):n&&(void 0===s||n<s)&&(s=n);}}),s;},getMagnitude:C,getNestedProperty:function getNestedProperty(t,e){var s=t.split(\".\");for(;s.length&&p(e);){var _t201=s.shift();if(void 0===_t201||\"__proto__\"===_t201)return;if(\"this\"===_t201){var _t203;var _t202=void 0;return h(e)&&(_t202=e[\"@this\"]),(_t203=_t202)!==null&&_t203!==void 0?_t203:e;}var _i139=e[_t201];if(!p(_i139)||\"function\"==typeof _i139||\"number\"==typeof _i139.nodeType||_i139===n)return;e=_i139;}return e;},getStyle:function t(e,s,i){var o;if(\"width\"===s){var _s120=Math.min(e.offsetWidth,e.scrollWidth),_i140=e.getBoundingClientRect&&e.getBoundingClientRect().width;return _i140<_s120&&_i140>=_s120-1&&(_s120=Math.floor(_i140)),Math.max(0,_s120-(t(e,\"padding-left\",!0)||0)-(t(e,\"padding-right\",!0)||0));}if(\"height\"===s)return Math.max(0,Math.min(e.offsetHeight,e.scrollHeight)-(t(e,\"padding-top\",!0)||0)-(t(e,\"padding-bottom\",!0)||0));var a=n.getComputedStyle(e,void 0);return a&&(o=a.getPropertyValue(s),y(i,\"opacity\"!==s)&&(o=r(o))),o;},inArray:function inArray(t,e,s){return o(32,!1,void 0,{\"Highcharts.inArray\":\"use Array.indexOf\"}),e.indexOf(t,s);},insertItem:function insertItem(t,e){var s;var i=t.options.index,n=e.length;for(s=t.options.isInternal?n:0;s<n+1;s++)if(!e[s]||u(i)&&i<y(e[s].options.index,e[s]._i)||e[s].options.isInternal){e.splice(s,0,t);break;}return s;},isArray:l,isClass:d,isDOMElement:c,isFunction:function isFunction(t){return\"function\"==typeof t;},isNumber:u,isObject:h,isString:a,keys:function keys(t){return o(32,!1,void 0,{\"Highcharts.keys\":\"use Object.keys\"}),Object.keys(t);},merge:function merge(){var t,e=arguments,s={},i=function i(t,e){return\"object\"!=_typeof(t)&&(t={}),O(e,function(s,n){\"__proto__\"!==n&&\"constructor\"!==n&&(!h(s,!0)||d(s)||c(s)?t[n]=e[n]:t[n]=i(t[n]||{},s));}),t;};!0===e[0]&&(s=e[1],e=Array.prototype.slice.call(e,2));var n=e.length;for(t=0;t<n;t++)s=i(s,e[t]);return s;},normalizeTickInterval:function normalizeTickInterval(t,e,s,i,n){var o,r=t;s=y(s,C(t));var a=t/s;for(!e&&(e=n?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===i&&(1===s?e=e.filter(function(t){return t%1==0;}):s<=.1&&(e=[1/s]))),o=0;o<e.length&&(r=e[o],(!n||!(r*s>=t))&&(n||!(a<=(e[o]+(e[o+1]||e[o]))/2)));o++);return w(r*s,-Math.round(Math.log(.001)/Math.LN10));},objectEach:O,offset:function offset(t){var e=i.documentElement,s=t.parentElement||t.parentNode?t.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:s.top+(n.pageYOffset||e.scrollTop)-(e.clientTop||0),left:s.left+(n.pageXOffset||e.scrollLeft)-(e.clientLeft||0),width:s.width,height:s.height};},pad:function pad(t,e,s){return Array((e||2)+1-String(t).replace(\"-\",\"\").length).join(s||\"0\")+t;},pick:y,pInt:r,pushUnique:function pushUnique(t,e){return 0>t.indexOf(e)&&!!t.push(e);},relativeLength:function relativeLength(t,e,s){return /%$/.test(t)?e*parseFloat(t)/100+(s||0):parseFloat(t);},removeEvent:D,replaceNested:function replaceNested(t){var s,i;for(var _len6=arguments.length,e=new Array(_len6>1?_len6-1:0),_key6=1;_key6<_len6;_key6++){e[_key6-1]=arguments[_key6];}do{var _iteratorNormalCompletion37=true;var _didIteratorError37=false;var _iteratorError37=undefined;try{for(var _iterator37=(s=t,e)[Symbol.iterator](),_step37;!(_iteratorNormalCompletion37=(_step37=_iterator37.next()).done);_iteratorNormalCompletion37=true){i=_step37.value;t=t.replace(i[0],i[1]);}}catch(err){_didIteratorError37=true;_iteratorError37=err;}finally{try{if(!_iteratorNormalCompletion37&&_iterator37[\"return\"]!=null){_iterator37[\"return\"]();}}finally{if(_didIteratorError37){throw _iteratorError37;}}}}while(t!==s);return t;},splat:f,stableSort:function stableSort(t,e){var s,i;var n=t.length;for(i=0;i<n;i++)t[i].safeI=i;for(t.sort(function(t,i){return 0===(s=e(t,i))?t.safeI-i.safeI:s;}),i=0;i<n;i++)delete t[i].safeI;},syncTimeout:function syncTimeout(t,e,s){return e>0?setTimeout(t,e,s):(t.call(0,s),-1);},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:S,useSerialIds:function useSerialIds(t){return e=y(t,e);},wrap:function wrap(t,e,s){var i=t[e];t[e]=function(){var t=arguments,e=this;return s.apply(this,[function(){return i.apply(e,arguments.length?arguments:t);}].concat([].slice.call(arguments)));};}};}),s(e,\"Core/Renderer/HTML/AST.js\",[e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=t.SVG_NS,i=t.win,n=e.attr,o=e.createElement,r=e.css,a=e.error,l=e.isFunction,h=e.isString,c=e.objectEach,d=e.splat,u=i.trustedTypes,p=u&&l(u.createPolicy)&&u.createPolicy(\"highcharts\",{createHTML:function createHTML(t){return t;}}),m=p?p.createHTML(\"\"):\"\",f=function(){try{return!!new DOMParser().parseFromString(m,\"text/html\");}catch(t){return!1;}}();var g=/*#__PURE__*/function(){function g(t){_classCallCheck(this,g);this.nodes=\"string\"==typeof t?this.parseMarkup(t):t;}_createClass(g,[{key:\"addToDOM\",value:function addToDOM(e){return function e(i,o){var l;return d(i).forEach(function(i){var h;var d=i.tagName,u=i.textContent?t.doc.createTextNode(i.textContent):void 0,p=g.bypassHTMLFiltering;if(d){if(\"#text\"===d)h=u;else if(-1!==g.allowedTags.indexOf(d)||p){var _a37=\"svg\"===d?s:o.namespaceURI||s,_l20=t.doc.createElementNS(_a37,d),_m9=i.attributes||{};c(i,function(t,e){\"tagName\"!==e&&\"attributes\"!==e&&\"children\"!==e&&\"style\"!==e&&\"textContent\"!==e&&(_m9[e]=t);}),n(_l20,p?_m9:g.filterUserAttributes(_m9)),i.style&&r(_l20,i.style),u&&_l20.appendChild(u),e(i.children||[],_l20),h=_l20;}else a(33,!1,void 0,{\"Invalid tagName in config\":d});}h&&o.appendChild(h),l=h;}),l;}(this.nodes,e);}},{key:\"parseMarkup\",value:function parseMarkup(t){var e;var s=[];if(t=t.trim().replace(/ style=([\"'])/g,\" data-style=$1\"),f)e=new DOMParser().parseFromString(p?p.createHTML(t):t,\"text/html\");else{var _s121=o(\"div\");_s121.innerHTML=t,e={body:_s121};}var i=function i(t,e){var s=t.nodeName.toLowerCase(),n={tagName:s};\"#text\"===s&&(n.textContent=t.textContent||\"\");var o=t.attributes;if(o){var _t204={};[].forEach.call(o,function(e){\"data-style\"===e.name?n.style=g.parseStyle(e.value):_t204[e.name]=e.value;}),n.attributes=_t204;}if(t.childNodes.length){var _e203=[];[].forEach.call(t.childNodes,function(t){i(t,_e203);}),_e203.length&&(n.children=_e203);}e.push(n);};return[].forEach.call(e.body.childNodes,function(t){return i(t,s);}),s;}}],[{key:\"filterUserAttributes\",value:function filterUserAttributes(t){return c(t,function(e,s){var i=!0;-1===g.allowedAttributes.indexOf(s)&&(i=!1),-1!==[\"background\",\"dynsrc\",\"href\",\"lowsrc\",\"src\"].indexOf(s)&&(i=h(e)&&g.allowedReferences.some(function(t){return 0===e.indexOf(t);})),i||(a(33,!1,void 0,{\"Invalid attribute in config\":\"\".concat(s)}),delete t[s]),h(e)&&t[s]&&(t[s]=e.replace(/</g,\"&lt;\"));}),t;}},{key:\"parseStyle\",value:function parseStyle(t){return t.split(\";\").reduce(function(t,e){var s=e.split(\":\").map(function(t){return t.trim();}),i=s.shift();return i&&s.length&&(t[i.replace(/-([a-z])/g,function(t){return t[1].toUpperCase();})]=s.join(\":\")),t;},{});}},{key:\"setElementHTML\",value:function setElementHTML(t,e){t.innerHTML=g.emptyHTML,e&&new g(e).addToDOM(t);}}]);return g;}();return g.allowedAttributes=[\"alt\",\"aria-controls\",\"aria-describedby\",\"aria-expanded\",\"aria-haspopup\",\"aria-hidden\",\"aria-label\",\"aria-labelledby\",\"aria-live\",\"aria-pressed\",\"aria-readonly\",\"aria-roledescription\",\"aria-selected\",\"class\",\"clip-path\",\"color\",\"colspan\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"disabled\",\"fill\",\"filterUnits\",\"flood-color\",\"flood-opacity\",\"height\",\"href\",\"id\",\"in\",\"in2\",\"markerHeight\",\"markerWidth\",\"offset\",\"opacity\",\"operator\",\"orient\",\"padding\",\"paddingLeft\",\"paddingRight\",\"patternUnits\",\"r\",\"radius\",\"refX\",\"refY\",\"role\",\"scope\",\"slope\",\"src\",\"startOffset\",\"stdDeviation\",\"stroke\",\"stroke-linecap\",\"stroke-width\",\"style\",\"tableValues\",\"result\",\"rowspan\",\"summary\",\"target\",\"tabindex\",\"text-align\",\"text-anchor\",\"textAnchor\",\"textLength\",\"title\",\"type\",\"valign\",\"width\",\"x\",\"x1\",\"x2\",\"xlink:href\",\"y\",\"y1\",\"y2\",\"zIndex\"],g.allowedReferences=[\"https://\",\"http://\",\"mailto:\",\"/\",\"../\",\"./\",\"#\"],g.allowedTags=[\"a\",\"abbr\",\"b\",\"br\",\"button\",\"caption\",\"circle\",\"clipPath\",\"code\",\"dd\",\"defs\",\"div\",\"dl\",\"dt\",\"em\",\"feComponentTransfer\",\"feComposite\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feMorphology\",\"feOffset\",\"feMerge\",\"feMergeNode\",\"filter\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"hr\",\"i\",\"img\",\"li\",\"linearGradient\",\"marker\",\"ol\",\"p\",\"path\",\"pattern\",\"pre\",\"rect\",\"small\",\"span\",\"stop\",\"strong\",\"style\",\"sub\",\"sup\",\"svg\",\"table\",\"text\",\"textPath\",\"thead\",\"title\",\"tbody\",\"tspan\",\"td\",\"th\",\"tr\",\"u\",\"ul\",\"#text\"],g.emptyHTML=m,g.bypassHTMLFiltering=!1,g;}),s(e,\"Dashboards/Components/ComponentRegistry.js\",[],function(){var t,e;return(e=t||(t={})).types={},e.registerComponent=function(t,s){return!!t&&!e.types[t]&&!!(e.types[t]=s);},t;}),s(e,\"Dashboards/Globals.js\",[],function(){var e,s;return(s=e||(e={})).classNamePrefix=\"highcharts-dashboards-\",s.classNames={layout:s.classNamePrefix+\"layout\",cell:s.classNamePrefix+\"cell\",cellHover:s.classNamePrefix+\"cell-state-hover\",cellActive:s.classNamePrefix+\"cell-state-active\",cellLoading:s.classNamePrefix+\"cell-state-loading\",row:s.classNamePrefix+\"row\",layoutsWrapper:s.classNamePrefix+\"layouts-wrapper\",boardContainer:s.classNamePrefix+\"wrapper\"},s.guiElementType={row:\"row\",cell:\"cell\",layout:\"layout\"},s.boards=[],s.win=t,s.doc=document,s.noop=function(){},s.isMS=/(edge|msie|trident)/i.test(s.win.navigator&&s.win.navigator.userAgent||\"\")&&!s.win.opera,s.supportsPassiveEvents=function(){var t=!1;if(!s.isMS){var _e204=Object.defineProperty({},\"passive\",{get:function get(){t=!0;}});s.win.addEventListener&&s.win.removeEventListener&&(s.win.addEventListener(\"testPassive\",s.noop,_e204),s.win.removeEventListener(\"testPassive\",s.noop,_e204));}return t;}(),e;}),s(e,\"Dashboards/EditMode/EditGlobals.js\",[e[\"Dashboards/Globals.js\"]],function(t){var e=t.classNamePrefix+\"edit-\";return{classNames:{resizeSnap:e+\"resize-snap\",resizeSnapX:e+\"resize-snap-x\",resizeSnapY:e+\"resize-snap-y\",separator:e+\"separator\",contextMenuBtn:e+\"context-menu-btn\",contextMenuBtnText:e+\"context-menu-btn-text\",contextMenu:e+\"context-menu\",contextMenuItem:e+\"context-menu-item\",editModeEnabled:e+\"enabled\",editToolbar:e+\"toolbar\",editToolbarCellOutline:e+\"toolbar-cell-outline\",editToolbarRowOutline:e+\"toolbar-row-outline\",editToolbarItem:e+\"toolbar-item\",editToolbarRow:e+\"toolbar-row\",editToolbarCell:e+\"toolbar-cell\",editSidebar:e+\"sidebar\",editSidebarShow:e+\"sidebar-show\",editSidebarHide:e+\"sidebar-hide\",editSidebarTitle:e+\"sidebar-title\",editSidebarMenuItem:e+\"sidebar-item\",rowContextHighlight:e+\"row-context-highlight\",cellEditHighlight:e+\"cell-highlight\",dashboardCellEditHighlightActive:e+\"cell-highlight-active\",dragMock:e+\"drag-mock\",dropPointer:e+\"drop-pointer\",contextDetectionPointer:e+\"ctx-detection-pointer\",resizePointer:e+\"resize-pointer\",currentEditedElement:e+\"unmask\",maskElement:e+\"mask\",menuItem:e+\"menu-item\",menu:e+\"menu\",menuVerticalSeparator:e+\"menu-vertical-separator\",menuHorizontalSeparator:e+\"menu-horizontal-separator\",menuDestroy:e+\"menu-destroy\",editSidebarWrapper:e+\"sidebar-wrapper\",customSelect:e+\"custom-select\",customSelectButton:e+\"custom-option-button\",toggleContainer:e+\"toggle-container\",toggleWrapper:e+\"toggle-wrapper\",toggleSlider:e+\"toggle-slider\",toggleWrapperColored:e+\"toggle-wrapper-colored\",toggleLabels:e+\"toggle-labels\",button:e+\"button\",sidebarNavButton:e+\"sidebar-button-nav\",labelText:e+\"label-text\",editSidebarTabBtn:e+\"sidebar-tab-btn\",editToolsBtn:e+\"tools-btn\",editTools:e+\"tools\",editGridItems:e+\"grid-items\",confirmationPopup:e+\"confirmation-popup\",popupButtonContainer:e+\"confirmation-popup-button-container\",popupContentContainer:e+\"confirmation-popup-content\",popupCancelBtn:e+\"confirmation-popup-cancel-btn\",popupConfirmBtn:e+\"confirmation-popup-confirm-btn\",popupCloseButton:e+\"popup-close\",editOverlay:e+\"overlay\",editOverlayActive:e+\"overlay-active\",resizerMenuBtnActive:e+\"resizer-menu-btn-active\",sidebarCloseButton:e+\"close-btn\",editSidebarTabBtnWrapper:e+\"tabs-buttons-wrapper\",editSidebarRight:e+\"sidebar-right\",editSidebarRightShow:e+\"sidebar-right-show\",viewFullscreen:e+\"view-fullscreen\",accordionMenu:e+\"accordion-menu\",accordionContainer:e+\"accordion\",accordionHeader:e+\"accordion-header\",accordionHeaderBtn:e+\"accordion-header-btn\",accordionHeaderIcon:e+\"accordion-header-icon\",accordionContent:e+\"accordion-content\",accordionNestedWrapper:e+\"accordion-nested\",accordionMenuButtonsContainer:e+\"accordion-menu-buttons-container\",accordionMenuButton:e+\"accordion-menu-button\",hiddenElement:e+\"hidden-element\",collapsableContentHeader:e+\"collapsable-content-header\",standaloneElement:e+\"standalone-element\",collapsedElement:e+\"collapsed-element\",dropdown:e+\"dropdown\",dropdownContent:e+\"dropdown-content\",dropdownButton:e+\"dropdown-button\",dropdownButtonContent:e+\"dropdown-button-content\",dropdownIcon:e+\"pointer\",icon:e+\"icon\"},lang:{accessibility:{contextMenu:{button:\"Context menu\"},editMode:{editMode:\"Edit mode toggle button\"}},addComponent:\"Add component\",cancelButton:\"Cancel\",caption:\"Caption\",chartClassName:\"Chart class name\",chartConfig:\"Chart configuration\",chartID:\"Chart ID\",chartOptions:\"Chart options\",chartType:\"Chart type\",connectorName:\"Connector name\",confirmButton:\"Confirm\",confirmDestroyCell:\"Do you really want to destroy the cell?\",confirmDestroyRow:\"Do you really want to destroy the row?\",confirmDiscardChanges:\"Do you really want to discard the changes?\",dataLabels:\"Data labels\",editMode:\"Edit mode\",errorMessage:\"Something went wrong\",exitFullscreen:\"Exit full screen\",htmlInput:\"HTML\",id:\"Id\",off:\"off\",on:\"on\",pointFormat:\"Point format\",settings:\"Settings\",style:\"Styles\",title:\"Title\",viewFullscreen:\"View in full screen\",sidebar:{HTML:\"HTML\",row:\"Row\",Highcharts:\"Highcharts\",DataGrid:\"DataGrid\",KPI:\"KPI\"}}};}),s(e,\"Dashboards/Layout/GUIElement.js\",[e[\"Dashboards/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.addEvent,i=e.createElement,n=e.uniqueKey,o=e.objectEach,r=e.error;return/*#__PURE__*/function(){function _class16(){_classCallCheck(this,_class16);}_createClass(_class16,[{key:\"getElementContainer\",value:function getElementContainer(t){var e;var n=this;if(t.render)t.attribs&&!t.attribs.id&&delete t.attribs.id;else if(\"string\"==typeof t.elementId){var _e205=document.getElementById(t.elementId);_e205?n.container=_e205:r(\"Element \"+t.elementId+\" does not exist\");}return t.element instanceof HTMLElement?e=t.element:e=i(\"div\",t.attribs||{},t.style||{},t.parentContainer),n.removeBindedEventFn=s(e,\"bindedGUIElement\",function(t){t.guiElement=n,t.stopImmediatePropagation();}),e;}},{key:\"destroy\",value:function destroy(){var t=this;t.removeBindedEventFn&&t.removeBindedEventFn(),t.container&&t.container.parentNode&&t.container.parentNode.removeChild(t.container),o(t,function(e,s){delete t[s];});}},{key:\"getType\",value:function getType(){return this.type;}},{key:\"changeVisibility\",value:function changeVisibility(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;var e=arguments.length>1?arguments[1]:undefined;var s=this.isVisible&&!t||!this.isVisible&&t;this.container&&s&&(this.container.style.display=t?e||\"block\":\"none\",this.isVisible=t);}},{key:\"hide\",value:function hide(){this.changeVisibility(!1);}},{key:\"show\",value:function show(){this.changeVisibility();}}],[{key:\"getOffsets\",value:function getOffsets(t,e){var s={left:0,top:0,right:0,bottom:0};if(!t.container)return s;var i=t.container.getBoundingClientRect(),n=e?e.getBoundingClientRect():{left:0,top:0};return s.left=i.left-n.left,s.top=i.top-n.top,s.right=i.right-n.left,s.bottom=i.bottom-n.top,s;}},{key:\"getDimFromOffsets\",value:function getDimFromOffsets(t){return{width:t.right-t.left,height:t.bottom-t.top};}},{key:\"getElementId\",value:function getElementId(e){return t.classNamePrefix+e+\"-\"+n().slice(11);}},{key:\"getPercentageWidth\",value:function getPercentageWidth(t){var e;var s=/^(\\d{1})[\\-\\/\\.](\\d{1,2})$/;if(s.test(t)){var _i141=t.match(s)||[];e=((e=100*+_i141[1]/+_i141[2])<=100?e:100)+\"%\";}else if(-1!==t.indexOf(\"%\")){var _s122=parseFloat(t);e=(_s122<=100?_s122>=0?_s122:0:100)+\"%\";}return e;}}]);return _class16;}();}),s(e,\"Dashboards/Layout/CellHTML.js\",[e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Layout/GUIElement.js\"]],function(t,e,s){return/*#__PURE__*/function(_s123){_inherits(_class17,_s123);var _super33=_createSuper(_class17);function _class17(t){var _this70;_classCallCheck(this,_class17);_this70=_super33.call(this),_this70.type=\"cell-html\",_this70.options=t,_this70.id=t.id,_this70.container=t.container,_this70.mountedComponent=t.mountedComponent;return _this70;}_createClass(_class17,[{key:\"destroy\",value:function destroy(){var _this$mountedComponen;(_this$mountedComponen=this.mountedComponent)!==null&&_this$mountedComponen!==void 0&&_this$mountedComponen.destroy(),_get(_getPrototypeOf(_class17.prototype),\"destroy\",this).call(this);}},{key:\"setHighlight\",value:function setHighlight(){var _this$mountedComponen2;this.container.classList.toggle(t.classNames.cellEditHighlight),(_this$mountedComponen2=this.mountedComponent)===null||_this$mountedComponen2===void 0?void 0:_this$mountedComponen2.board.container.classList.toggle(t.classNames.dashboardCellEditHighlightActive);}},{key:\"setActiveState\",value:function setActiveState(){this.container&&this.container.classList.add(e.classNames.cellActive);}}]);return _class17;}(s);}),s(e,\"Dashboards/Actions/Bindings.js\",[e[\"Dashboards/Components/ComponentRegistry.js\"],e[\"Dashboards/Layout/CellHTML.js\"],e[\"Dashboards/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i){var n;var o=i.addEvent,r=i.fireEvent;return function(i){function n(t,e){var s;\"string\"==typeof t&&document.querySelectorAll(\"#\"+t).length>1&&console.warn(\"Multiple cells have identical ID %c\".concat(t,\"%c, potentially leading to unexpected behavior. \\nEnsure that each cell has a unique ID on the page.\"),\"font-weight: bold\",\"\");var i=e?e.querySelector(\"#\"+t):document.getElementById(t);return null!==i&&r(i,\"bindedGUIElement\",{},function(t){s=t.guiElement;}),s;}function a(_x9,_x10,_x11){return _a38.apply(this,arguments);}function _a38(){_a38=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee2(n,a,l){var _l21,_a$editMode,_h$active,_h$active2,_h$hover;var h,c,d,u,p,m,f;return regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:h=n.states,c=n.events,d=n.renderTo||n.cell;if(d){_context2.next=4;break;}console.error(\"The%c renderTo%c option is required to render the component.\",\"font-weight: bold\",\"\");return _context2.abrupt(\"return\");case 4:if(!(a.mountedComponents.filter(function(t){return(t.options.renderTo||t.options.cell)===d;}).length>0)){_context2.next=7;break;}console.error(\"A component has already been declared in the cell %c\".concat(d,\"%c use a different cell.\"),\"font-weight: bold\",\"\");return _context2.abrupt(\"return\");case 7:l=l||i.getCell(d,a.container);u=((_l21=l)===null||_l21===void 0?void 0:_l21.container)||document.querySelector(\"#\"+d);if(!(!u||!n.type)){_context2.next=12;break;}console.error(\"The component is unable to find the HTML cell element %c\".concat(d,\"%c to render the content.\"),\"font-weight: bold\",\"\");return _context2.abrupt(\"return\");case 12:p=t.types[n.type];!p&&(console.error(\"The component's type %c\".concat(n.type,\"%c does not exist.\"),\"font-weight: bold\",\"\"),l&&(p=t.types.HTML,n.title={text:((_a$editMode=a.editMode)===null||_a$editMode===void 0?void 0:_a$editMode.lang.errorMessage)||\"Something went wrong\",className:s.classNamePrefix+\"component-title-error \"+s.classNamePrefix+\"component-title\"}));m=new p(l,n,a),f=m.load()[\"catch\"](function(t){var _a$editMode2;console.error(t),m.update({connector:{id:\"\"},title:{text:((_a$editMode2=a.editMode)===null||_a$editMode2===void 0?void 0:_a$editMode2.lang.errorMessage)||\"Something went wrong\",className:s.classNamePrefix+\"component-title-error \"+s.classNamePrefix+\"component-title\"}});});return _context2.abrupt(\"return\",(l&&(m.setCell(l),l.mountedComponent=m),a.mountedComponents.push({options:n,component:m,cell:l||new e({id:d,container:u,mountedComponent:m})}),l&&h!==null&&h!==void 0&&(_h$active=h.active)!==null&&_h$active!==void 0&&_h$active.enabled&&h!==null&&h!==void 0&&(_h$active2=h.active)!==null&&_h$active2!==void 0&&_h$active2.isActive&&(l.setActiveState(),m.isActive=!0),r(m,\"mount\"),o(u,\"click\",function(){var _h$active3;c&&c.click&&c.click.call(m),l&&m&&u&&(h===null||h===void 0?void 0:(_h$active3=h.active)===null||_h$active3===void 0?void 0:_h$active3.enabled)&&(l.setActiveState(),m.isActive=!0);}),h!==null&&h!==void 0&&(_h$hover=h.hover)!==null&&_h$hover!==void 0&&_h$hover.enabled&&u.classList.add(s.classNames.cellHover),r(m,\"afterLoad\"),f));case 16:case\"end\":return _context2.stop();}},_callee2);}));return _a38.apply(this,arguments);}i.addComponent=a,i.componentFromJSON=function(e){var s=t.types[e.$class];if(!s)return;var n=i.getCell(e.options.renderTo||\"\");if(!n)return;var o=s.fromJSON(e,n);return o&&o.render(),o;},i.getCell=function(t,e){var s=n(t,e);if(s&&\"cell\"===s.getType())return s;},i.getRow=function(t,e){var s=n(t,e);if(s&&\"row\"===s.getType())return s;},i.getLayout=function(t,e){var s=n(t,e);if(s&&\"layout\"===s.getType())return s;};}(n||(n={})),n;}),s(e,\"Dashboards/Layout/Cell.js\",[e[\"Dashboards/Actions/Bindings.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,n){var o=t.componentFromJSON,r=n.merge,a=n.fireEvent;var l=/*#__PURE__*/function(_i142){_inherits(l,_i142);var _super34=_createSuper(l);function l(t,e,i){var _this71;_classCallCheck(this,l);var n;_this71=_super34.call(this),_this71.type=s.guiElementType.cell,_this71.id=e.id,_this71.options=e,_this71.row=t,_this71.isVisible=!0;var o=document.getElementById(e.parentContainerId||\"\")||t.container,a=t.layout.options||{},_l22=t.options||{},h=a.cellClassName||\"\";if(e.height&&(n=\"number\"==typeof e.height?e.height+\"px\":e.height),_this71.container=_this71.getElementContainer({render:t.layout.board.guiEnabled,parentContainer:o,attribs:{id:e.id,className:s.classNames.cell+\" \"+h},element:i,elementId:e.id,style:r(a.style,_l22.style,e.style,{height:n})}),_this71.options.mountedComponentJSON&&_this71.mountComponentFromJSON(_this71.options.mountedComponentJSON),_this71.options.layout&&_this71.setNestedLayout(),_this71.options.layoutJSON){var _t205=_this71.row.layout,_e206=_t205.board,_s124=_t205.constructor.fromJSON;_this71.nestedLayout=_s124(r(_this71.options.layoutJSON,{parentContainerId:_this71.options.id}),_e206,_assertThisInitialized(_this71));}return _this71;}_createClass(l,[{key:\"setNestedLayout\",value:function setNestedLayout(){var t=this.row.layout.board,e=this.row.layout.constructor,s=t.options.gui;this.nestedLayout=new e(t,r({},s&&s.layoutOptions,this.options.layout,{parentContainerId:this.options.id}),this);}},{key:\"mountComponentFromJSON\",value:function mountComponentFromJSON(t){this.id!==t.options.parentElement&&(t.options.parentElement=this.id);var e=o(t);return!!e&&(this.mountedComponent=e,!0);}},{key:\"destroy\",value:function destroy(){var _this$mountedComponen3,_this$nestedLayout,_t$cells;var t=this.row;(_this$mountedComponen3=this.mountedComponent)!==null&&_this$mountedComponen3!==void 0&&_this$mountedComponen3.destroy(),(_this$nestedLayout=this.nestedLayout)!==null&&_this$nestedLayout!==void 0&&_this$nestedLayout.destroy(),t.unmountCell(this);var e=((_t$cells=t.cells)===null||_t$cells===void 0?void 0:_t$cells.length)===0;_get(_getPrototypeOf(l.prototype),\"destroy\",this).call(this),e&&t.destroy();}},{key:\"toJSON\",value:function toJSON(){var t=(this.row.container||{}).id||\"\";return{$class:\"Dashboards.Layout.Cell\",options:{containerId:this.container.id,parentContainerId:t,width:this.options.width,height:this.options.height,mountedComponentJSON:this.mountedComponent&&this.mountedComponent.toJSON(),style:this.options.style,layoutJSON:this.nestedLayout&&this.nestedLayout.toJSON()}};}},{key:\"getOptions\",value:function getOptions(){return this.options;}},{key:\"changeVisibility\",value:function changeVisibility(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;_get(_getPrototypeOf(l.prototype),\"changeVisibility\",this).call(this,t);var e=this,s=e.row;e.row.getVisibleCells().length?e.isVisible&&!s.isVisible&&e.row.show():e.row.hide(),setTimeout(function(){a(s,\"cellChange\",{row:s,cell:e});},0);}},{key:\"getParentCell\",value:function getParentCell(t){var e;if(t<=this.row.layout.level){if(this.row.layout.level===t)return this;if(this.row.layout.level-1>=0&&(e=this.row.layout.parentCell))return e.getParentCell(t);}}},{key:\"getOverlappingLevels\",value:function getOverlappingLevels(t,e,s){var n=this.row.layout.parentCell,o=[this.row.layout.level];if(n){var _r52=s||i.getOffsets(this)[t],_a39=i.getOffsets(n)[t];Math.abs(_r52-_a39)<e&&(o=[].concat(_toConsumableArray(o),_toConsumableArray(n.getOverlappingLevels(t,e,_a39))));}return o;}},{key:\"setSize\",value:function setSize(t,e){var s=this.row.layout.board.editMode;if(this.container){if(t){if(\"auto\"===t&&\"1 1 0%\"!==this.container.style.flex)this.container.style.flex=\"1 1 0%\";else{var _e207=this.convertWidthToValue(t);_e207&&this.container.style.flex!==\"0 0 \"+_e207&&(this.container.style.flex=\"0 0 \"+_e207),this.options.width=_e207;}}e&&(this.options.height=this.container.style.height=e+\"px\"),s&&(s.hideContextPointer(),s.cellToolbar&&s.cellToolbar.isVisible&&(s.cellToolbar.cell===this?s.cellToolbar.showToolbar(this):s.cellToolbar.hide())),a(this.row.layout.board,\"cellResize\",{cell:this}),a(this.row,\"cellChange\",{cell:this,row:this.row});}}},{key:\"setHighlight\",value:function setHighlight(t){var s=this.row.layout.board.editMode;if(this.container&&s){var _s125=this.container,_i143=_s125.classList.contains(e.classNames.cellEditHighlight);t||_i143?t&&_i143&&(_s125.classList.remove(e.classNames.cellEditHighlight),this.row.layout.board.container.classList.remove(e.classNames.dashboardCellEditHighlightActive),this.isHighlighted=!1):(_s125.classList.add(e.classNames.cellEditHighlight),this.row.layout.board.container.classList.add(e.classNames.dashboardCellEditHighlightActive),this.isHighlighted=!0);}}},{key:\"setActiveState\",value:function setActiveState(){this.row.layout.board.mountedComponents.forEach(function(t){t.cell.container&&t.cell.container.classList.remove(s.classNames.cellActive),t.component.isActive=!1;}),this.container&&this.container.classList.add(s.classNames.cellActive);}},{key:\"setLoadingState\",value:function setLoadingState(){var _this$container,_this$container$class;var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;(_this$container=this.container)===null||_this$container===void 0?void 0:(_this$container$class=_this$container.classList)===null||_this$container$class===void 0?void 0:_this$container$class.toggle(s.classNames.cellLoading,t);}},{key:\"convertWidthToValue\",value:function convertWidthToValue(t){return\"number\"==typeof t?t+\"px\":/px/.test(t)?t:i.getPercentageWidth(t)||\"\";}}],[{key:\"fromJSON\",value:function fromJSON(t,e){if(e){var _s126=t.options,_i144=_s126.containerId;return e.layout.copyId&&(_i144=_i144+\"_\"+e.layout.copyId),new l(e,{id:_i144,parentContainerId:e.container&&e.container.id||_s126.parentContainerId,mountedComponentJSON:_s126.mountedComponentJSON,style:_s126.style,layoutJSON:_s126.layoutJSON,width:_s126.width,height:_s126.height});}}}]);return l;}(i);return l;}),s(e,\"Dashboards/CallbackRegistry.js\",[],function(){return/*#__PURE__*/function(){function _class18(){_classCallCheck(this,_class18);this.registry={};}_createClass(_class18,[{key:\"addCallback\",value:function addCallback(t,e){this.registry[t]=e;}},{key:\"getCallback\",value:function getCallback(t){return this.registry[t];}},{key:\"toJSON\",value:function toJSON(){var _this72=this;var t={};return Object.keys(this.registry).forEach(function(e){var _this72$getCallback=_this72.getCallback(e),s=_this72$getCallback.func,i=_this72$getCallback.type;t[e]={func:s.toString(),type:i};}),t;}}]);return _class18;}();}),s(e,\"Dashboards/Components/ConnectorHandler.js\",[e[\"Dashboards/Layout/Cell.js\"],e[\"Dashboards/Globals.js\"]],function(t,e){return/*#__PURE__*/function(){function _class19(t,e){_classCallCheck(this,_class19);this.tableEvents=[],this.component=t,this.options=e;}_createClass(_class19,[{key:\"initConnector\",value:function(){var _initConnector=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee3(){var e,s,i,n;return regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:e=this.component,s=this.options.id,i=this.component.board.dataPool;if(!(s&&(this.connectorId!==s||i.isNewConnector(s)))){_context3.next=7;break;}e.cell instanceof t&&e.cell.setLoadingState();_context3.next=5;return i.getConnector(s);case 5:n=_context3.sent;this.setConnector(n);case 7:return _context3.abrupt(\"return\",e);case 8:case\"end\":return _context3.stop();}},_callee3,this);}));function initConnector(){return _initConnector.apply(this,arguments);}return initConnector;}()},{key:\"setConnector\",value:function setConnector(t){var _this73=this;for(;this.tableEvents.length;){var _t206=this.tableEvents.pop();\"function\"==typeof _t206&&_t206();}return this.connector=t,t&&(this.clearTableListeners(),this.setupTableListeners(t.table),t.table.on(\"setModifier\",function(){return _this73.clearTableListeners();}),t.table.on(\"afterSetModifier\",function(e){\"afterSetModifier\"===e.type&&e.modified&&(_this73.setupTableListeners(e.modified),_this73.component.emit({type:\"tableChanged\",connector:t}));}),t.table&&(this.presentationModifier?this.presentationTable=this.presentationModifier.modifyTable(t.table.modified.clone()).modified:this.presentationTable=t.table)),this.component;}},{key:\"setupTableListeners\",value:function setupTableListeners(t){var _this74=this;var s=this.connector;s&&t&&[\"afterDeleteRows\",\"afterSetCell\",\"afterSetColumns\",\"afterSetRows\"].forEach(function(i){_this74.tableEvents.push(t.on(i,function(t){clearTimeout(_this74.tableEventTimeout),_this74.tableEventTimeout=e.win.setTimeout(function(){_this74.component.emit(_objectSpread(_objectSpread({},t),{},{type:\"tableChanged\",targetConnector:s})),_this74.tableEventTimeout=void 0;});}));});}},{key:\"clearTableListeners\",value:function clearTableListeners(){var _this75=this;var t=this.connector,s=this.tableEvents;this.destroy(),t&&s.push(t.table.on(\"afterSetModifier\",function(s){\"afterSetModifier\"===s.type&&(clearTimeout(_this75.tableEventTimeout),_this75.tableEventTimeout=e.win.setTimeout(function(){t.emit(_objectSpread(_objectSpread({},s),{},{type:\"tableChanged\",targetConnector:t})),_this75.tableEventTimeout=void 0;}));}));}},{key:\"updateOptions\",value:function updateOptions(t){this.options=t;}},{key:\"destroy\",value:function destroy(){this.tableEvents.forEach(function(t){return t();}),this.tableEvents.length=0;}}]);return _class19;}();}),s(e,\"Dashboards/Components/EditableOptions.js\",[],function(){var t=/*#__PURE__*/function(){function t(e){var s=arguments.length>1&&arguments[1]!==undefined?arguments[1]:t.defaultBindings;_classCallCheck(this,t);this.component=e,this.bindings=s;}_createClass(t,[{key:\"getOptions\",value:function getOptions(){var _t207=this.component.options.editableOptions;if(!_t207)return[];for(var _e208=0,_s127=_t207.length;_e208<_s127;_e208++){var _s128=_t207[_e208];if(\"connectorName\"===_s128.name){var _t208=this.component.board,_e209=_t208?_t208.dataPool.getConnectorIds().map(function(_t209){return{name:_t209};}):[];_s128.selectOptions=_e209;}}return _t207;}}]);return t;}();return t.defaultBindings={keyMap:{color:\"colorPicker\",title:\"text\",caption:\"text\",style:\"textarea\"},typeMap:{string:\"text\",number:\"input\",\"boolean\":\"toggle\"},skipRedraw:[]},t.defaultTypeMap={string:\"text\",number:\"input\",\"boolean\":\"toggle\"},t;}),s(e,\"Dashboards/Components/Sync/Emitter.js\",[],function(){var t=/*#__PURE__*/function(){function t(e,s){_classCallCheck(this,t);this.id=e,this.func=s,t.register(this);}_createClass(t,[{key:\"create\",value:function create(_t212){this.callback=this.func.call(_t212);}},{key:\"remove\",value:function remove(){this.callback&&this.callback();}}],[{key:\"register\",value:function register(_t210){var e=_t210.id;this.registry[e]=_t210;}},{key:\"get\",value:function get(_t211){return this.registry[_t211];}}]);return t;}();return t.registry={},t;}),s(e,\"Dashboards/Components/Sync/Handler.js\",[],function(){var t=/*#__PURE__*/function(){function t(e,s){_classCallCheck(this,t);this.id=e,this.func=s,t.register(this);}_createClass(t,[{key:\"register\",value:function register(_t215){var e=this.func;this.callback=e.call(_t215);}},{key:\"remove\",value:function remove(){this.callback&&this.callback();}}],[{key:\"register\",value:function register(_t213){var e=_t213.id;this.registry[e]=_t213;}},{key:\"get\",value:function get(_t214){return this.registry[_t214];}}]);return t;}();return t.registry={},t;}),s(e,\"Dashboards/Components/Sync/Sync.js\",[e[\"Dashboards/Components/Sync/Emitter.js\"],e[\"Dashboards/Components/Sync/Handler.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=s.merge,n=s.isObject;var o=/*#__PURE__*/function(){function o(t,e){_classCallCheck(this,o);this.component=t,this.predefinedSyncConfig=e,this.syncConfig=o.prepareSyncConfig(e,t.options.sync),this.registeredSyncHandlers={},this.registeredSyncEmitters={},this.isSyncing=!1,this.listeners=[];}_createClass(o,[{key:\"registerSyncEmitter\",value:function registerSyncEmitter(t){var e=t.id;this.registeredSyncEmitters[e]=t;}},{key:\"isRegisteredEmitter\",value:function isRegisteredEmitter(t){return!!this.registeredSyncEmitters[t];}},{key:\"registerSyncHandler\",value:function registerSyncHandler(t){var e=t.id;this.registeredSyncHandlers[e]=t;}},{key:\"isRegisteredHandler\",value:function isRegisteredHandler(t){return!!this.registeredSyncHandlers[t];}},{key:\"start\",value:function start(){var _this76=this;var s=this.component;for(var _i145=0,_arr10=(this.syncConfig=o.prepareSyncConfig(this.predefinedSyncConfig,s.options.sync),Object.keys(this.syncConfig));_i145<_arr10.length;_i145++){var _i146=_arr10[_i145];var _n66=this.syncConfig[_i146];if(!_n66)continue;var r=_n66.emitter,a=_n66.handler;if(a){!0===a&&(a=o.defaultHandlers[_i146].handler);var _t216=new e(_i146,a);this.isRegisteredHandler(_t216.id)||(this.registerSyncHandler(_t216),_t216.register(s));}if(r){!0===r&&(r=o.defaultHandlers[_i146].emitter);var _e210=new t(_i146,r);this.isRegisteredEmitter(_e210.id)||(this.registerSyncEmitter(_e210),_e210.create(s));}}this.isSyncing=!0,this.listeners.push(s.on(\"update\",function(){return _this76.stop();}));}},{key:\"stop\",value:function stop(){var _this77=this;var t=this.component,e=this.listeners,s=this.registeredSyncHandlers,i=this.registeredSyncEmitters;Object.keys(s).forEach(function(t){s[t].remove(),delete s[t];}),Object.keys(i).forEach(function(t){i[t].remove(),delete i[t];}),this.isSyncing=!1;for(var _t217=0,_s129=e.length;_t217<_s129;++_t217)e[_t217]();this.listeners.length=0,this.listeners.push(t.on(\"afterUpdate\",function(){_this77.start();}));}}],[{key:\"prepareSyncConfig\",value:function prepareSyncConfig(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var s=t.defaultSyncPairs,_o80=t.defaultSyncOptions;return Object.keys(e).reduce(function(t,r){if(r){var a=s[r],l=_o80[r],h=e[r],_c15=i(l||{},{enabled:n(h)?h.enabled:h},n(h)?h:{});if(a&&_c15.enabled)for(var _i147=0,_arr11=[\"emitter\",\"handler\"];_i147<_arr11.length;_i147++){var _t218=_arr11[_i147];(!0===_c15[_t218]||void 0===_c15[_t218])&&(_c15[_t218]=a[_t218]);}t[r]=_c15;}return t;},{});}}]);return o;}();return o.defaultHandlers={},o;}),s(e,\"Dashboards/Components/ComponentUtilities.js\",[],function(){var e;return function(e){function s(e,s){var i=t.getComputedStyle(e);return s.map(function(t){return i[t];});}function i(t,e){return e&&(t+=\"number\"==typeof e?e:parseFloat(e)),t;}e.getMargins=function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!0;var n={x:[\"borderLeft\",\"borderRight\"],y:[\"borderTop\",\"borderBottom\"]};return{y:s(t,[\"marginTop\",\"marginBottom\"].concat(_toConsumableArray(e?n.y:[]))).reduce(i,0),x:s(t,[\"marginLeft\",\"marginTop\"].concat(_toConsumableArray(e?n.x:[]))).reduce(i,0)};},e.getPaddings=function(t){return{x:s(t,[\"paddingLeft\",\"paddingRight\"]).reduce(i,0),y:s(t,[\"paddingTop\",\"paddingBottom\"]).reduce(i,0)};},e.getStyles=s,e.sumPixels=i;}(e||(e={})),e;}),s(e,\"Dashboards/Utilities.js\",[e[\"Dashboards/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=t.doc,i=t.supportsPassiveEvents,n=e.error,o=e.isClass,r=e.isDOMElement,a=e.isObject,l=e.objectEach,h=e.uniqueKey;function c(t,e){var s;for(s in t||(t={}),e)t[s]=e[s];return t;}function d(t,e,s){function i(e,s){var i=t.removeEventListener;i&&i.call(t,e,s,!1);}function n(s){var n,o;t.nodeName&&(e?(n={})[e]=!0:n=s,l(n,function(t,e){if(s[e])for(o=s[e].length;o--;)i(e,s[e][o].fn);}));}var o=\"function\"==typeof t&&t.prototype||t;if(Object.hasOwnProperty.call(o,\"hcEvents\")){var _t219=o.hcEvents;if(e){var _o81=_t219[e]||[];s?(_t219[e]=_o81.filter(function(t){return s!==t.fn;}),i(e,s)):(n(_t219),_t219[e]=[]);}else n(_t219),delete o.hcEvents;}}return{addEvent:function addEvent(t,e,s){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var o=\"function\"==typeof t&&t.prototype||t;Object.hasOwnProperty.call(o,\"hcEvents\")||(o.hcEvents={});var r=o.hcEvents,a=t.addEventListener;a&&a.call(t,e,s,!!i&&{passive:void 0===n.passive?-1!==e.indexOf(\"touch\"):n.passive,capture:!1}),r[e]||(r[e]=[]);var l={fn:s,order:\"number\"==typeof n.order?n.order:1/0};return r[e].push(l),r[e].sort(function(t,e){return t.order-e.order;}),function(){d(t,e,s);};},error:function error(t,e){if(16===t){console.warn(\"Dashboard error: Dashboards library loaded more than once.This may cause undefined behavior.\");return;}n(t,e);},fireEvent:function fireEvent(e,i,n,o){if(n=n||{},s.createEvent&&(e.dispatchEvent||e.fireEvent&&e!==t)){var _t220=s.createEvent(\"Events\");_t220.initEvent(i,!0,!0),n=c(_t220,n),e.dispatchEvent?e.dispatchEvent(n):e.fireEvent(i,n);}else if(e.hcEvents){n.target||c(n,{preventDefault:function preventDefault(){n.defaultPrevented=!0;},target:e,type:i});var _t221=[],_s130=e,_o82=!1;for(;_s130.hcEvents;)Object.hasOwnProperty.call(_s130,\"hcEvents\")&&_s130.hcEvents[i]&&(_t221.length&&(_o82=!0),_t221.unshift.apply(_t221,_s130.hcEvents[i])),_s130=Object.getPrototypeOf(_s130);_o82&&_t221.sort(function(t,e){return t.order-e.order;}),_t221.forEach(function(t){!1===t.fn.call(e,n)&&n.preventDefault();});}o&&!n.defaultPrevented&&o.call(e,n);},merge:function merge(t){var s=0,i={},n=Error(\"Recursive copy depth > 100\"),h=function h(t,e){if(\"object\"!=_typeof(t)&&(t={}),++s>100)throw n;return l(e,function(s,i){\"__proto__\"!==i&&\"constructor\"!==i&&(!a(s,!0)||o(s)||r(s)?t[i]=e[i]:t[i]=h(t[i]||{},s));}),--s,t;};for(var _len7=arguments.length,e=new Array(_len7>1?_len7-1:0),_key7=1;_key7<_len7;_key7++){e[_key7-1]=arguments[_key7];}!0===t?i=e.shift():e.unshift(t);for(var _t222=0,_s131=e.length;_t222<_s131;++_t222)i=h(i,e[_t222]);return i;},removeEvent:d,uniqueKey:function uniqueKey(){return\"dashboard-\".concat(h().replace(\"highcharts-\",\"\"));}};}),s(e,\"Dashboards/Components/Component.js\",[e[\"Dashboards/Layout/Cell.js\"],e[\"Dashboards/CallbackRegistry.js\"],e[\"Dashboards/Components/ConnectorHandler.js\"],e[\"Dashboards/Components/EditableOptions.js\"],e[\"Dashboards/Components/Sync/Sync.js\"],e[\"Dashboards/Globals.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/Components/ComponentUtilities.js\"],e[\"Dashboards/Utilities.js\"]],function(e,s,i,n,o,r,a,l,h){var c=r.classNamePrefix,d=a.createElement,u=a.isArray,p=a.merge,m=a.fireEvent,f=a.addEvent,g=a.objectEach,y=a.isFunction,b=a.getStyle,C=a.diffObjects,w=l.getMargins,v=l.getPaddings,O=h.uniqueKey;var D=/*#__PURE__*/function(){function D(t,r,a){var _t$row,_t$row$layout,_this78=this;_classCallCheck(this,D);this.connectorHandlers=[],this.callbackRegistry=new s(),this.cellListeners=[],this.resizeTimeouts=[],this.innerResizeTimeouts=[];var l=r.renderTo||r.cell;if(this.board=a||(t===null||t===void 0?void 0:(_t$row=t.row)===null||_t$row===void 0?void 0:(_t$row$layout=_t$row.layout)===null||_t$row$layout===void 0?void 0:_t$row$layout.board)||{},this.parentElement=(t===null||t===void 0?void 0:t.container)||document.querySelector(\"#\"+l),this.cell=t,this.options=p(D.defaultOptions,r),this.id=this.options.id&&this.options.id.length?this.options.id:O(),this.options.connector){var _iteratorNormalCompletion38=true;var _didIteratorError38=false;var _iteratorError38=undefined;try{for(var _iterator38=(u(this.options.connector)?this.options.connector:[this.options.connector])[Symbol.iterator](),_step38;!(_iteratorNormalCompletion38=(_step38=_iterator38.next()).done);_iteratorNormalCompletion38=true){var _t223=_step38.value;this.connectorHandlers.push(new i(this,_t223));}}catch(err){_didIteratorError38=true;_iteratorError38=err;}finally{try{if(!_iteratorNormalCompletion38&&_iterator38[\"return\"]!=null){_iterator38[\"return\"]();}}finally{if(_didIteratorError38){throw _iteratorError38;}}}}this.editableOptions=new n(this,r.editableOptionsBindings),this.dimensions={width:null,height:null},this.element=d(\"div\",{className:this.options.className},{},this.parentElement),Number(b(this.element,\"padding\"))||(this.element.style.padding=\"0.1px\"),this.contentElement=d(\"div\",{className:\"\".concat(this.options.className,\"-content\")},{},this.element,!0),this.sync=new o(this,this.constructor.predefinedSyncConfig),this.setupEventListeners(),t&&(this.attachCellListeners(),this.on(\"update\",function(){_this78.cell instanceof e&&_this78.cell.setLoadingState();}),this.on(\"afterRender\",function(){_this78.cell instanceof e&&_this78.cell.setLoadingState(!1);})),this.on(\"tableChanged\",function(){_this78.onTableChanged();});}_createClass(D,[{key:\"getOptionsOnDrop\",value:function getOptionsOnDrop(t){return{};}},{key:\"getFirstConnector\",value:function getFirstConnector(){var _this$connectorHandle;return(_this$connectorHandle=this.connectorHandlers[0])===null||_this$connectorHandle===void 0?void 0:_this$connectorHandle.connector;}},{key:\"attachCellListeners\",value:function attachCellListeners(){var _this79=this;for(;this.cellListeners.length;){var _t224=this.cellListeners.pop();_t224&&_t224();}if(this.cell&&this.cell instanceof e&&Object.keys(this.cell).length){var _t225=this.cell.row.layout.board;this.cellListeners.push(f(_t225,\"cellResize\",function(){_this79.resizeTo(_this79.parentElement);}),f(this.cell.row,\"cellChange\",function(t){var e=t.row;e&&_this79.cell&&void 0===e.getCellIndex(_this79.cell)&&_this79.cell&&_this79.setCell(_this79.cell);}));}}},{key:\"setCell\",value:function setCell(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;this.cell=t,t.container&&(this.parentElement=t.container),this.attachCellListeners(),e&&this.resizeTo(this.parentElement);}},{key:\"initConnectors\",value:function(){var _initConnectors=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee4(){var _iteratorNormalCompletion39,_didIteratorError39,_iteratorError39,_iterator39,_step39,_t226;return regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_iteratorNormalCompletion39=true;_didIteratorError39=false;_iteratorError39=undefined;_context4.prev=3;_iterator39=(m(this,\"setConnectors\",{connectorHandlers:this.connectorHandlers}),this.connectorHandlers)[Symbol.iterator]();case 5:if(_iteratorNormalCompletion39=(_step39=_iterator39.next()).done){_context4.next=12;break;}_t226=_step39.value;_context4.next=9;return _t226.initConnector();case 9:_iteratorNormalCompletion39=true;_context4.next=5;break;case 12:_context4.next=18;break;case 14:_context4.prev=14;_context4.t0=_context4[\"catch\"](3);_didIteratorError39=true;_iteratorError39=_context4.t0;case 18:_context4.prev=18;_context4.prev=19;if(!_iteratorNormalCompletion39&&_iterator39[\"return\"]!=null){_iterator39[\"return\"]();}case 21:_context4.prev=21;if(!_didIteratorError39){_context4.next=24;break;}throw _iteratorError39;case 24:return _context4.finish(21);case 25:return _context4.finish(18);case 26:return _context4.abrupt(\"return\",(m(this,\"afterSetConnectors\",{connectorHandlers:this.connectorHandlers}),this));case 27:case\"end\":return _context4.stop();}},_callee4,this,[[3,14,18,26],[19,,21,25]]);}));function initConnectors(){return _initConnectors.apply(this,arguments);}return initConnectors;}()},{key:\"getContentHeight\",value:function getContentHeight(){return(this.titleElement?this.titleElement.clientHeight+w(this.titleElement).y:0)+(this.captionElement?this.captionElement.clientHeight+w(this.captionElement).y:0);}},{key:\"resize\",value:function resize(t,e){if(e){var _t227=v(this.element).y+w(this.element).y;this.element.style.height=\"calc(100% - \"+_t227+\"px)\",this.contentElement.style.height=\"calc(100% - \"+this.getContentHeight()+\"px)\";}else null===e&&(this.dimensions.height=null,this.element.style.removeProperty(\"height\"));m(this,\"resize\",{width:t,height:e});}},{key:\"resizeTo\",value:function resizeTo(t){var _this80=this;for(;this.resizeTimeouts.length;){var _t228=this.resizeTimeouts.pop();_t228&&cancelAnimationFrame(_t228);}var e=requestAnimationFrame(function(){var _t$getBoundingClientR=t.getBoundingClientRect(),e=_t$getBoundingClientR.width,s=_t$getBoundingClientR.height,i=v(t),n=w(t);_this80.resize(e-i.x-n.x,s-i.y-n.y);});this.resizeTimeouts.push(e);}},{key:\"update\",value:function(){var _update=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee5(t){var e,s,n,o,_t229,_e211,_this$connectorHandle2,_n$_t,_iteratorNormalCompletion40,_didIteratorError40,_iteratorError40,_iterator40,_step40,_t230,_iteratorNormalCompletion41,_didIteratorError41,_iteratorError41,_iterator41,_step41,_t231,_args5=arguments;return regeneratorRuntime.wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:e=_args5.length>1&&_args5[1]!==undefined?_args5[1]:!0;s={options:t,shouldForceRerender:!1};m(this,\"update\",s),t.connector&&Array.isArray(this.options.connector)&&(this.options.connector=void 0),this.options=p(this.options,t);n=this.options.connector?u(this.options.connector)?this.options.connector:[this.options.connector]:[],o=n.length!==this.connectorHandlers.length;if(o){_context5.next=14;break;}_t229=0,_e211=n.length;case 6:if(!(_t229<_e211)){_context5.next=14;break;}if(!(((_this$connectorHandle2=this.connectorHandlers[_t229])===null||_this$connectorHandle2===void 0?void 0:_this$connectorHandle2.options.id)!==((_n$_t=n[_t229])===null||_n$_t===void 0?void 0:_n$_t.id))){_context5.next=10;break;}o=!0;return _context5.abrupt(\"break\",14);case 10:this.connectorHandlers[_t229].updateOptions(n[_t229]);case 11:_t229++;_context5.next=6;break;case 14:if(!o){_context5.next=55;break;}_iteratorNormalCompletion40=true;_didIteratorError40=false;_iteratorError40=undefined;_context5.prev=18;for(_iterator40=this.connectorHandlers[Symbol.iterator]();!(_iteratorNormalCompletion40=(_step40=_iterator40.next()).done);_iteratorNormalCompletion40=true){_t230=_step40.value;_t230.destroy();}_context5.next=26;break;case 22:_context5.prev=22;_context5.t0=_context5[\"catch\"](18);_didIteratorError40=true;_iteratorError40=_context5.t0;case 26:_context5.prev=26;_context5.prev=27;if(!_iteratorNormalCompletion40&&_iterator40[\"return\"]!=null){_iterator40[\"return\"]();}case 29:_context5.prev=29;if(!_didIteratorError40){_context5.next=32;break;}throw _iteratorError40;case 32:return _context5.finish(29);case 33:return _context5.finish(26);case 34:_iteratorNormalCompletion41=true;_didIteratorError41=false;_iteratorError41=undefined;_context5.prev=37;for(_iterator41=(this.connectorHandlers.length=0,n)[Symbol.iterator]();!(_iteratorNormalCompletion41=(_step41=_iterator41.next()).done);_iteratorNormalCompletion41=true){_t231=_step41.value;this.connectorHandlers.push(new i(this,_t231));}_context5.next=45;break;case 41:_context5.prev=41;_context5.t1=_context5[\"catch\"](37);_didIteratorError41=true;_iteratorError41=_context5.t1;case 45:_context5.prev=45;_context5.prev=46;if(!_iteratorNormalCompletion41&&_iterator41[\"return\"]!=null){_iterator41[\"return\"]();}case 48:_context5.prev=48;if(!_didIteratorError41){_context5.next=51;break;}throw _iteratorError41;case 51:return _context5.finish(48);case 52:return _context5.finish(45);case 53:_context5.next=55;return this.initConnectors();case 55:(e||s.shouldForceRerender)&&this.render();case 56:case\"end\":return _context5.stop();}},_callee5,this,[[18,22,26,34],[27,,29,33],[37,41,45,53],[46,,48,52]]);}));function update(_x12){return _update.apply(this,arguments);}return update;}()},{key:\"setupEventListeners\",value:function setupEventListeners(){var _this81=this;var e=this.options.events;e&&(Object.keys(e).forEach(function(t){var s=e[t];s&&_this81.callbackRegistry.addCallback(t,{type:\"component\",func:s});}),g(e,function(t,e){y(t)&&_this81.on(e,t);}));var s=function s(){_this81.resizeTo(_this81.parentElement);};if(\"function\"==typeof ResizeObserver)this.resizeObserver=new ResizeObserver(s),this.resizeObserver.observe(this.element);else{var _e212=f(t,\"resize\",s);f(this,\"destroy\",_e212);}}},{key:\"setTitle\",value:function setTitle(t){var e=this.titleElement;if(t&&(\"string\"==typeof t||t.text)){var _s132=D.createTextElement(\"h2\",\"title\",t);_s132&&(e?e.replaceWith(_s132):this.element.insertBefore(_s132,this.element.firstChild),this.titleElement=_s132);}else if(e){e.remove(),delete this.titleElement;return;}}},{key:\"setCaption\",value:function setCaption(t){var e=this.captionElement;if(t&&(\"string\"==typeof t||t.text)){var _s133=D.createTextElement(\"div\",\"caption\",t);_s133&&(e?e.replaceWith(_s133):this.element.appendChild(_s133),this.captionElement=_s133);}else if(e){e.remove(),delete this.captionElement;return;}}},{key:\"load\",value:function(){var _load=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee6(){return regeneratorRuntime.wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:_context6.next=2;return this.initConnectors();case 2:this.render();return _context6.abrupt(\"return\",this);case 4:case\"end\":return _context6.stop();}},_callee6,this);}));function load(){return _load.apply(this,arguments);}return load;}()},{key:\"render\",value:function render(){return this.emit({type:\"render\"}),this.setTitle(this.options.title),this.setCaption(this.options.caption),this.resizeTo(this.parentElement),this;}},{key:\"destroy\",value:function destroy(){for(this.sync.stop();this.element.firstChild;)this.element.firstChild.remove();var _iteratorNormalCompletion42=true;var _didIteratorError42=false;var _iteratorError42=undefined;try{for(var _iterator42=(m(this,\"unmount\"),this.connectorHandlers)[Symbol.iterator](),_step42;!(_iteratorNormalCompletion42=(_step42=_iterator42.next()).done);_iteratorNormalCompletion42=true){var _t232=_step42.value;_t232.destroy();}}catch(err){_didIteratorError42=true;_iteratorError42=err;}finally{try{if(!_iteratorNormalCompletion42&&_iterator42[\"return\"]!=null){_iterator42[\"return\"]();}}finally{if(_didIteratorError42){throw _iteratorError42;}}}this.element.remove();}},{key:\"on\",value:function on(t,e){return f(this,t,e);}},{key:\"emit\",value:function emit(t){t.target||(t.target=this),m(this,t.type,t);}},{key:\"toJSON\",value:function toJSON(){var t={width:0,height:0};return g(this.dimensions,function(e,s){null!==e&&(t[s]=e);}),{$class:this.options.type,options:{renderTo:this.options.renderTo,parentElement:this.parentElement.id,dimensions:t,id:this.id,type:this.type}};}},{key:\"getOptions\",value:function getOptions(){return C(this.options,D.defaultOptions);}},{key:\"getEditableOptions\",value:function getEditableOptions(){return p(this.options);}},{key:\"getEditableOptionValue\",value:function getEditableOptionValue(t){if(!t)return;var e=this.getEditableOptions();for(var _s134=0,_i148=t.length;_s134<_i148;_s134++){if(u(e)){if(\"connector\"===t[0]&&e.length>1)return\"multiple connectors\";e=e[0];}if(!e)return;!1===(e=e[t[_s134]])&&(t.indexOf(\"title\")>=0||t.indexOf(\"subtitle\")>=0||t.indexOf(\"caption\")>=0)&&(e=\"\");}return e;}}],[{key:\"createTextElement\",value:function createTextElement(t,e,s){if(\"object\"==_typeof(s)){var _i149=s.className,_n67=s.text,_o83=s.style;return d(t,{className:_i149||\"\".concat(c,\"component-\").concat(e),textContent:_n67},_o83);}if(\"string\"==typeof s)return d(t,{className:\"\".concat(c,\"component-\").concat(e),textContent:s},{});}}]);return D;}();return D.Sync=o,D.predefinedSyncConfig={defaultSyncOptions:{},defaultSyncPairs:{}},D.defaultOptions={className:\"\".concat(c,\"component\"),id:\"\",title:!1,caption:!1,sync:o.defaultHandlers,editableOptions:[{name:\"title\",propertyPath:[\"title\"],type:\"input\"},{name:\"caption\",propertyPath:[\"caption\"],type:\"input\"}]},D;}),s(e,\"Dashboards/Components/HTMLComponent/HTMLComponentDefaults.js\",[e[\"Dashboards/Components/Component.js\"]],function(t){return{type:\"HTML\",className:[t.defaultOptions.className,\"\".concat(t.defaultOptions.className,\"-html\")].join(\" \"),elements:[],editableOptions:[].concat(_toConsumableArray(t.defaultOptions.editableOptions||[]),[{name:\"htmlInput\",propertyPath:[\"html\"],type:\"textarea\"}])};}),s(e,\"Dashboards/Components/HTMLComponent/HTMLSyncs/HTMLSyncs.js\",[],function(){return{defaultSyncPairs:{},defaultSyncOptions:{}};}),s(e,\"Dashboards/Components/HTMLComponent/HTMLComponent.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Dashboards/Components/Component.js\"],e[\"Dashboards/Components/HTMLComponent/HTMLComponentDefaults.js\"],e[\"Dashboards/Components/HTMLComponent/HTMLSyncs/HTMLSyncs.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,n){var o=n.merge,r=n.diffObjects;t.allowedTags=[].concat(_toConsumableArray(t.allowedTags),[\"option\",\"select\",\"label\",\"input\",\"textarea\"]),t.allowedAttributes=[].concat(_toConsumableArray(t.allowedAttributes),[\"for\",\"value\",\"checked\",\"src\",\"name\",\"selected\"]),t.allowedReferences=[].concat(_toConsumableArray(t.allowedReferences),[\"data:image/\"]);var a=/*#__PURE__*/function(_e213){_inherits(a,_e213);var _super35=_createSuper(a);function a(t,e){var _this82;_classCallCheck(this,a);e.className&&(e.className=\"\".concat(a.defaultOptions.className,\" \").concat(e.className)),_this82=_super35.call(this,t,e=o(a.defaultOptions,e)),_this82.options=e,_this82.type=\"HTML\",_this82.elements=[];return _this82;}_createClass(a,[{key:\"load\",value:function(){var _load2=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee7(){var _e$elements;var e,s;return regeneratorRuntime.wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:this.emit({type:\"load\"});_context7.next=3;return _get(_getPrototypeOf(a.prototype),\"load\",this).call(this);case 3:e=this.options,s=!1;if(!((_e$elements=e.elements)!==null&&_e$elements!==void 0&&_e$elements.length?this.elements=e.elements.map(function(e){return\"string\"==typeof e?new t(e).nodes[0]:(e.textContent||e.tagName||!e.attributes||(s=!0),e);}):e.html&&(this.elements=this.getElementsFromString(e.html),this.options.elements=this.elements),this.constructTree(),this.emit({type:\"afterLoad\"}),s)){_context7.next=6;break;}throw Error(\"Missing tagName param in component: \".concat(e.renderTo));case 6:return _context7.abrupt(\"return\",this);case 7:case\"end\":return _context7.stop();}},_callee7,this);}));function load(){return _load2.apply(this,arguments);}return load;}()},{key:\"render\",value:function render(){return _get(_getPrototypeOf(a.prototype),\"render\",this).call(this),this.constructTree(),this.sync.start(),this.emit({type:\"afterRender\"}),this;}},{key:\"resize\",value:function resize(t,e){return _get(_getPrototypeOf(a.prototype),\"resize\",this).call(this,t,e),this;}},{key:\"update\",value:function(){var _update2=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee8(t){var e,_args8=arguments;return regeneratorRuntime.wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:e=_args8.length>1&&_args8[1]!==undefined?_args8[1]:!0;t.html&&(this.elements=this.getElementsFromString(t.html),this.options.elements=this.elements,this.constructTree());_context8.next=4;return _get(_getPrototypeOf(a.prototype),\"update\",this).call(this,t,e);case 4:this.emit({type:\"afterUpdate\"});case 5:case\"end\":return _context8.stop();}},_callee8,this);}));function update(_x13){return _update2.apply(this,arguments);}return update;}()},{key:\"getOptionsOnDrop\",value:function getOptionsOnDrop(){return{cell:\"\",type:\"HTML\",elements:[{tagName:\"span\",textContent:\"[Your custom HTML here- edit the component]\"}]};}},{key:\"constructTree\",value:function constructTree(){for(;this.contentElement.firstChild;)this.contentElement.firstChild.remove();new t(this.options.elements||[]).addToDOM(this.contentElement);}},{key:\"getElementsFromString\",value:function getElementsFromString(e){return new t(e).nodes;}},{key:\"toJSON\",value:function toJSON(){var t=(this.options.elements||[]).map(function(t){return JSON.stringify(t);}),e=o(_get(_getPrototypeOf(a.prototype),\"toJSON\",this).call(this),{elements:t,options:this.options});return this.emit({type:\"toJSON\",json:e}),e;}},{key:\"getOptions\",value:function getOptions(){return _objectSpread(_objectSpread({},r(this.options,a.defaultOptions)),{},{type:\"HTML\"});}},{key:\"getEditableOptions\",value:function getEditableOptions(){return this.elements.length?o(this.options,{elements:this.elements}):this.options;}},{key:\"getEditableOptionValue\",value:function getEditableOptionValue(t){if(t){if(\"html\"===t[0]){var _e214=this.getEditableOptions();return!_e214.html&&_e214.elements?this.getStringFromElements(_e214.elements):_e214[t[0]];}return _get(_getPrototypeOf(a.prototype),\"getEditableOptionValue\",this).call(this,t);}}},{key:\"getStringFromElements\",value:function getStringFromElements(t){var e=\"\";var _iteratorNormalCompletion43=true;var _didIteratorError43=false;var _iteratorError43=undefined;try{for(var _iterator43=t[Symbol.iterator](),_step43;!(_iteratorNormalCompletion43=(_step43=_iterator43.next()).done);_iteratorNormalCompletion43=true){var _s135=_step43.value;e+=this.serializeNode(_s135);}}catch(err){_didIteratorError43=true;_iteratorError43=err;}finally{try{if(!_iteratorNormalCompletion43&&_iterator43[\"return\"]!=null){_iterator43[\"return\"]();}}finally{if(_didIteratorError43){throw _iteratorError43;}}}return e;}},{key:\"serializeNode\",value:function serializeNode(t){var _this83=this;if(!t.tagName||\"#text\"===t.tagName)return t.textContent||\"\";var e=t.attributes,s=\"<\".concat(t.tagName);if(e){for(var _t233 in e)if(Object.prototype.hasOwnProperty.call(e,_t233)){var _i150=e[_t233];void 0!==_i150&&(s+=\" \".concat(_t233,\"=\\\"\").concat(_i150,\"\\\"\"));}}return s+=\">\"+(t.textContent||\"\"),(t.children||[]).forEach(function(t){s+=_this83.serializeNode(t);}),s+=\"</\".concat(t.tagName,\">\");}},{key:\"onTableChanged\",value:function onTableChanged(t){var _t$detail;((_t$detail=t.detail)===null||_t$detail===void 0?void 0:_t$detail.sender)!==this.id&&this.render();}}],[{key:\"fromJSON\",value:function fromJSON(t,e){var s=new a(e,o(t.options,{elements:t.elements?t.elements.map(function(t){return JSON.parse(t);}):[]}));return s.emit({type:\"fromJSON\",json:t}),s;}}]);return a;}(e);return a.defaultOptions=o(e.defaultOptions,s),a.predefinedSyncConfig=i,a;}),s(e,\"Data/DataTable.js\",[e[\"Core/Utilities.js\"]],function(t){var e=t.addEvent,s=t.defined,i=t.fireEvent,n=t.uniqueKey;var o=/*#__PURE__*/function(){function o(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,o);this.autoId=!t.id,this.columns={},this.id=t.id||n(),this.modified=this,this.rowCount=0,this.versionTag=n();var e=t.columns||{},s=Object.keys(e),i=this.columns,_o84=0;for(var _t234=0,_n68=s.length,r,a;_t234<_n68;++_t234)r=e[a=s[_t234]].slice(),i[a]=r,_o84=Math.max(_o84,r.length);for(var _t235=0,_e215=s.length;_t235<_e215;++_t235)i[s[_t235]].length=_o84;this.rowCount=_o84;}_createClass(o,[{key:\"clone\",value:function clone(t,e){var s={};this.emit({type:\"cloneTable\",detail:e}),t||(s.columns=this.columns),this.autoId||(s.id=this.id);var i=new o(s);return t||(i.versionTag=this.versionTag,i.originalRowIndexes=this.originalRowIndexes,i.localRowIndexes=this.localRowIndexes),this.emit({type:\"afterCloneTable\",detail:e,tableClone:i}),i;}},{key:\"deleteColumns\",value:function deleteColumns(t,e){var s=this.columns,i={},n={},_o85=this.modifier,r=this.rowCount;if((t=t||Object.keys(s)).length){this.emit({type:\"deleteColumns\",columnNames:t,detail:e});for(var _e216=0,_o95=t.length,a,l;_e216<_o95;++_e216)(a=s[l=t[_e216]])&&(i[l]=a,n[l]=Array(r)),delete s[l];return Object.keys(s).length||(this.rowCount=0,this.deleteRowIndexReferences()),_o85&&_o85.modifyColumns(this,n,0,e),this.emit({type:\"afterDeleteColumns\",columns:i,columnNames:t,detail:e}),i;}}},{key:\"deleteRowIndexReferences\",value:function deleteRowIndexReferences(){delete this.originalRowIndexes,delete this.localRowIndexes;}},{key:\"deleteRows\",value:function deleteRows(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var s=arguments.length>2?arguments[2]:undefined;var i=[],n=[],_o87=this.modifier;if(this.emit({type:\"deleteRows\",detail:s,rowCount:e,rowIndex:t||0}),void 0===t&&(t=0,e=this.rowCount),e>0&&t<this.rowCount){var _s136=this.columns,_o88=Object.keys(_s136);for(var r=0,a=_o88.length,l,h;r<a;++r){h=(l=_s136[_o88[r]]).splice(t,e),r||(this.rowCount=l.length);for(var _t236=0,_e217=h.length;_t236<_e217;++_t236)i[_t236]=i[_t236]||[],i[_t236][r]=h[_t236];n.push(Array(a));}}return _o87&&_o87.modifyRows(this,n,t||0,s),this.emit({type:\"afterDeleteRows\",detail:s,rowCount:e,rowIndex:t||0,rows:i}),i;}},{key:\"emit\",value:function emit(t){switch(t.type){case\"afterDeleteColumns\":case\"afterDeleteRows\":case\"afterSetCell\":case\"afterSetColumns\":case\"afterSetRows\":this.versionTag=n();}i(this,t.type,t);}},{key:\"getCell\",value:function getCell(t,e){var s=this.columns[t];if(s)return s[e];}},{key:\"getCellAsBoolean\",value:function getCellAsBoolean(t,e){var s=this.columns[t];return!!(s&&s[e]);}},{key:\"getCellAsNumber\",value:function getCellAsNumber(t,e,s){var _n69;var i=this.columns[t],n=i&&i[e];switch(_typeof(n)){case\"boolean\":return n?1:0;case\"number\":return isNaN(n)&&!s?null:n;}return isNaN(n=parseFloat(\"\".concat((_n69=n)!==null&&_n69!==void 0?_n69:\"\")))&&!s?null:n;}},{key:\"getCellAsString\",value:function getCellAsString(t,e){var s=this.columns[t];return\"\".concat(s&&s[e]);}},{key:\"getColumn\",value:function getColumn(t,e){return this.getColumns([t],e)[t];}},{key:\"getColumnAsNumbers\",value:function getColumnAsNumbers(t,e){var s=this.columns[t],i=[];if(s){var _n70=s.length;if(e)for(var _e218=0;_e218<_n70;++_e218)i.push(this.getCellAsNumber(t,_e218,!0));else{for(var _t237=0,_e219;_t237<_n70;++_t237){if(\"number\"==typeof(_e219=s[_t237]))return s.slice();if(null!=_e219)break;}for(var _e220=0;_e220<_n70;++_e220)i.push(this.getCellAsNumber(t,_e220));}}return i;}},{key:\"getColumnNames\",value:function getColumnNames(){return Object.keys(this.columns);}},{key:\"getColumns\",value:function getColumns(t,e){var s=this.columns,i={};t=t||Object.keys(s);for(var _n71=0,_o96=t.length,r,a;_n71<_o96;++_n71)(r=s[a=t[_n71]])&&(i[a]=e?r:r.slice());return i;}},{key:\"getLocalRowIndex\",value:function getLocalRowIndex(t){var e=this.localRowIndexes;return e?e[t]:t;}},{key:\"getModifier\",value:function getModifier(){return this.modifier;}},{key:\"getOriginalRowIndex\",value:function getOriginalRowIndex(t){var e=this.originalRowIndexes;return e?e[t]:t;}},{key:\"getRow\",value:function getRow(t,e){return this.getRows(t,1,e)[0];}},{key:\"getRowCount\",value:function getRowCount(){return this.rowCount;}},{key:\"getRowIndexBy\",value:function getRowIndexBy(t,e,s){var i=this.columns[t];if(i){var _t238=i.indexOf(e,s);if(-1!==_t238)return _t238;}}},{key:\"getRowObject\",value:function getRowObject(t,e){return this.getRowObjects(t,1,e)[0];}},{key:\"getRowObjects\",value:function getRowObjects(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.rowCount-t;var s=arguments.length>2?arguments[2]:undefined;var i=this.columns,n=Array(e);s=s||Object.keys(i);for(var _o97=t,r=0,a=Math.min(this.rowCount,t+e),l,h;_o97<a;++_o97,++r){var _iteratorNormalCompletion44=true;var _didIteratorError44=false;var _iteratorError44=undefined;try{for(var _iterator44=(h=n[r]={},s)[Symbol.iterator](),_step44;!(_iteratorNormalCompletion44=(_step44=_iterator44.next()).done);_iteratorNormalCompletion44=true){var _t239=_step44.value;l=i[_t239],h[_t239]=l?l[_o97]:void 0;}}catch(err){_didIteratorError44=true;_iteratorError44=err;}finally{try{if(!_iteratorNormalCompletion44&&_iterator44[\"return\"]!=null){_iterator44[\"return\"]();}}finally{if(_didIteratorError44){throw _iteratorError44;}}}}return n;}},{key:\"getRows\",value:function getRows(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.rowCount-t;var s=arguments.length>2?arguments[2]:undefined;var i=this.columns,n=Array(e);s=s||Object.keys(i);for(var _o98=t,r=0,a=Math.min(this.rowCount,t+e),l,h;_o98<a;++_o98,++r){var _iteratorNormalCompletion45=true;var _didIteratorError45=false;var _iteratorError45=undefined;try{for(var _iterator45=(h=n[r]=[],s)[Symbol.iterator](),_step45;!(_iteratorNormalCompletion45=(_step45=_iterator45.next()).done);_iteratorNormalCompletion45=true){var _t240=_step45.value;l=i[_t240],h.push(l?l[_o98]:void 0);}}catch(err){_didIteratorError45=true;_iteratorError45=err;}finally{try{if(!_iteratorNormalCompletion45&&_iterator45[\"return\"]!=null){_iterator45[\"return\"]();}}finally{if(_didIteratorError45){throw _iteratorError45;}}}}return n;}},{key:\"getVersionTag\",value:function getVersionTag(){return this.versionTag;}},{key:\"hasColumns\",value:function hasColumns(t){var e=this.columns;for(var _s137=0,_i151=t.length;_s137<_i151;++_s137)if(!e[t[_s137]])return!1;return!0;}},{key:\"hasRowWith\",value:function hasRowWith(t,e){var s=this.columns[t];return!!s&&-1!==s.indexOf(e);}},{key:\"on\",value:function on(t,s){return e(this,t,s);}},{key:\"renameColumn\",value:function renameColumn(t,e){var s=this.columns;return!!s[t]&&(t!==e&&(s[e]=s[t],delete s[t]),!0);}},{key:\"setCell\",value:function setCell(t,e,s,i){var n=this.columns,_o92=this.modifier,r=n[t];r&&r[e]===s||(this.emit({type:\"setCell\",cellValue:s,columnName:t,detail:i,rowIndex:e}),r||(r=n[t]=Array(this.rowCount)),e>=this.rowCount&&(this.rowCount=e+1),r[e]=s,_o92&&_o92.modifyCell(this,t,e,s),this.emit({type:\"afterSetCell\",cellValue:s,columnName:t,detail:i,rowIndex:e}));}},{key:\"setColumn\",value:function setColumn(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var i=arguments.length>3?arguments[3]:undefined;this.setColumns(_defineProperty({},t,e),s,i);}},{key:\"setColumns\",value:function setColumns(t,e,s){var i=this.columns,n=this.modifier,_o93=void 0===e,r=Object.keys(t);this.emit({type:\"setColumns\",columns:t,columnNames:r,detail:s,rowIndex:e});for(var _s138=0,_n72=r.length,_a40,l;_s138<_n72;++_s138)if(_a40=t[l=r[_s138]],_o93)i[l]=_a40.slice(),this.rowCount=_a40.length;else{var _t241=i[l]?i[l]:i[l]=Array(this.rowCount);for(var _s139=e||0,_i152=_a40.length;_s139<_i152;++_s139)_t241[_s139]=_a40[_s139];this.rowCount=Math.max(this.rowCount,_t241.length);}var a=Object.keys(i);for(var _t242=0,_e221=a.length;_t242<_e221;++_t242)i[a[_t242]].length=this.rowCount;n&&n.modifyColumns(this,t,e||0),this.emit({type:\"afterSetColumns\",columns:t,columnNames:r,detail:s,rowIndex:e});}},{key:\"setModifier\",value:function setModifier(t,e){var s=this;return s.emit({type:\"setModifier\",detail:e,modifier:t,modified:s.modified}),s.modified=s,s.modifier=t,(t?t.modify(s):Promise.resolve(s)).then(function(s){return s.emit({type:\"afterSetModifier\",detail:e,modifier:t,modified:s.modified}),s;})[\"catch\"](function(e){throw s.emit({type:\"setModifierError\",error:e,modifier:t,modified:s.modified}),e;});}},{key:\"setOriginalRowIndexes\",value:function setOriginalRowIndexes(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:!1;if(this.originalRowIndexes=t,e)return;var i=this.localRowIndexes=[];for(var _e222=0,_n73=t.length,_o99;_e222<_n73;++_e222)s(_o99=t[_e222])&&(i[_o99]=_e222);}},{key:\"setRow\",value:function setRow(t,e,s){this.setRows([t],e,s);}},{key:\"setRows\",value:function setRows(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.rowCount;var s=arguments.length>2?arguments[2]:undefined;var i=this.columns,n=Object.keys(i),r=this.modifier,a=t.length;this.emit({type:\"setRows\",detail:s,rowCount:a,rowIndex:e,rows:t});for(var _s140=0,_r53=e,_l23;_s140<a;++_s140,++_r53)if((_l23=t[_s140])===o.NULL)for(var _t243=0,_e223=n.length;_t243<_e223;++_t243)i[n[_t243]][_r53]=null;else if(_l23 instanceof Array)for(var _t244=0,_e224=n.length;_t244<_e224;++_t244)i[n[_t244]][_r53]=_l23[_t244];else{var _t245=Object.keys(_l23);for(var _e225=0,_s141=_t245.length,_n74;_e225<_s141;++_e225)i[_n74=_t245[_e225]]||(i[_n74]=Array(_r53+1)),i[_n74][_r53]=_l23[_n74];}var l=e+a;if(l>this.rowCount){this.rowCount=l;for(var _t246=0,_e226=n.length;_t246<_e226;++_t246)i[n[_t246]].length=l;}r&&r.modifyRows(this,t,e),this.emit({type:\"afterSetRows\",detail:s,rowCount:a,rowIndex:e,rows:t});}}],[{key:\"isNull\",value:function isNull(t){if(t===o.NULL)return!0;if(t instanceof Array){if(!t.length)return!1;for(var _e227=0,_s142=t.length;_e227<_s142;++_e227)if(null!==t[_e227])return!1;}else{var _e228=Object.keys(t);if(!_e228.length)return!1;for(var _s143=0,_i153=_e228.length;_s143<_i153;++_s143)if(null!==t[_e228[_s143]])return!1;}return!0;}}]);return o;}();return o.NULL={},o.version=\"1.0.0\",o;}),s(e,\"Data/Converters/DataConverter.js\",[e[\"Data/DataTable.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.addEvent,i=e.fireEvent,n=e.isNumber,o=e.merge;var r=/*#__PURE__*/function(){function r(t){_classCallCheck(this,r);this.dateFormats={\"YYYY/mm/dd\":{regex:/^(\\d{4})([\\-\\.\\/])(\\d{1,2})\\2(\\d{1,2})$/,parser:function parser(t){return t?Date.UTC(+t[1],t[3]-1,+t[4]):NaN;}},\"dd/mm/YYYY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{4})$/,parser:function parser(t){return t?Date.UTC(+t[4],t[3]-1,+t[1]):NaN;},alternative:\"mm/dd/YYYY\"},\"mm/dd/YYYY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{4})$/,parser:function parser(t){return t?Date.UTC(+t[4],t[1]-1,+t[3]):NaN;}},\"dd/mm/YY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{2})$/,parser:function parser(t){var e=new Date();if(!t)return NaN;var s=+t[4];return s>e.getFullYear()-2e3?s+=1900:s+=2e3,Date.UTC(s,t[3]-1,+t[1]);},alternative:\"mm/dd/YY\"},\"mm/dd/YY\":{regex:/^(\\d{1,2})([\\-\\.\\/])(\\d{1,2})\\2(\\d{2})$/,parser:function parser(t){return t?Date.UTC(+t[4]+2e3,t[1]-1,+t[3]):NaN;}}};var e=o(r.defaultOptions,t),s=e.decimalPoint;(\".\"===s||\",\"===s)&&(s=\".\"===s?\"\\\\.\":\",\",this.decimalRegExp=RegExp(\"^(-?[0-9]+)\"+s+\"([0-9]+)$\")),this.options=e;}_createClass(r,[{key:\"asBoolean\",value:function asBoolean(t){return\"boolean\"==typeof t?t:\"string\"==typeof t?\"\"!==t&&\"0\"!==t&&\"false\"!==t:!!this.asNumber(t);}},{key:\"asDate\",value:function asDate(t){var e;if(\"string\"==typeof t)e=this.parseDate(t);else if(\"number\"==typeof t)e=t;else{if(t instanceof Date)return t;e=this.parseDate(this.asString(t));}return new Date(e);}},{key:\"asGuessedType\",value:function asGuessedType(t){return{number:this.asNumber,Date:this.asDate,string:this.asString}[this.guessType(t)].call(this,t);}},{key:\"asNumber\",value:function asNumber(t){if(\"number\"==typeof t)return t;if(\"boolean\"==typeof t)return t?1:0;if(\"string\"==typeof t){var _e229=this.decimalRegExp;if(t.indexOf(\" \")>-1&&(t=t.replace(/\\s+/g,\"\")),_e229){if(!_e229.test(t))return NaN;t=t.replace(_e229,\"$1.$2\");}return parseFloat(t);}return t instanceof Date?t.getDate():t?t.getRowCount():NaN;}},{key:\"asString\",value:function asString(t){return\"\"+t;}},{key:\"deduceDateFormat\",value:function deduceDateFormat(t,e,s){var i=[],n=[],o=\"YYYY/mm/dd\",_r54,a=[],l=0,h=!1,c,d;for((!e||e>t.length)&&(e=t.length);l<e;l++)if(void 0!==t[l]&&t[l]&&t[l].length)for(d=0,_r54=t[l].trim().replace(/[\\-\\.\\/]/g,\" \").split(\" \"),a=[\"\",\"\",\"\"];d<_r54.length;d++)d<a.length&&(c=parseInt(_r54[d],10))&&(n[d]=!n[d]||n[d]<c?c:n[d],void 0!==i[d]?i[d]!==c&&(i[d]=!1):i[d]=c,c>31?c<100?a[d]=\"YY\":a[d]=\"YYYY\":c>12&&c<=31?(a[d]=\"dd\",h=!0):a[d].length||(a[d]=\"mm\"));if(h){for(d=0;d<i.length;d++)!1!==i[d]?n[d]>12&&\"YY\"!==a[d]&&\"YYYY\"!==a[d]&&(a[d]=\"YY\"):n[d]>12&&\"mm\"===a[d]&&(a[d]=\"dd\");3===a.length&&\"dd\"===a[1]&&\"dd\"===a[2]&&(a[2]=\"YY\"),o=a.join(\"/\");}return s&&(this.options.dateFormat=o),o;}},{key:\"emit\",value:function emit(t){i(this,t.type,t);}},{key:\"export\",value:function _export(t,e){throw this.emit({type:\"exportError\",columns:[],headers:[]}),Error(\"Not implemented\");}},{key:\"getTable\",value:function getTable(){throw Error(\"Not implemented\");}},{key:\"guessType\",value:function guessType(t){var e=\"string\";if(\"string\"==typeof t){var _s144=this.trim(\"\".concat(t)),_i154=this.decimalRegExp,_o100=this.trim(_s144,!0);_i154&&(_o100=_i154.test(_o100)?_o100.replace(_i154,\"$1.$2\"):\"\");var _r55=parseFloat(_o100);+_o100===_r55?t=_r55:e=n(this.parseDate(t))?\"Date\":\"string\";}return\"number\"==typeof t&&(e=t>31536e6?\"Date\":\"number\"),e;}},{key:\"on\",value:function on(t,e){return s(this,t,e);}},{key:\"parse\",value:function parse(t){throw this.emit({type:\"parseError\",columns:[],headers:[]}),Error(\"Not implemented\");}},{key:\"parseDate\",value:function parseDate(t,e){var s=this.options,i=e||s.dateFormat,o=NaN,_r56,a,l;if(s.parseDate)o=s.parseDate(t);else{if(i)(a=this.dateFormats[i])||(a=this.dateFormats[\"YYYY/mm/dd\"]),(l=t.match(a.regex))&&(o=a.parser(l));else for(_r56 in this.dateFormats)if(a=this.dateFormats[_r56],l=t.match(a.regex)){i=_r56,o=a.parser(l);break;}!l&&(\"object\"==_typeof(l=Date.parse(t))&&null!==l&&l.getTime?o=l.getTime()-6e4*l.getTimezoneOffset():n(l)&&(o=l-6e4*new Date(l).getTimezoneOffset(),-1===t.indexOf(\"2001\")&&2001===new Date(o).getFullYear()&&(o=NaN)));}return o;}},{key:\"trim\",value:function trim(t,e){return\"string\"==typeof t&&(t=t.replace(/^\\s+|\\s+$/g,\"\"),e&&/^[\\d\\s]+$/.test(t)&&(t=t.replace(/\\s/g,\"\"))),t;}}]);return r;}();return r.defaultOptions={dateFormat:\"\",alternativeFormat:\"\",startColumn:0,endColumn:Number.MAX_VALUE,startRow:0,endRow:Number.MAX_VALUE,firstRowAsNames:!0,switchRowsAndColumns:!1},(r||(r={})).getTableFromColumns=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var s=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var i=new t();for(var _t247=0,_n75=Math.max(s.length,e.length);_t247<_n75;++_t247)i.setColumn(s[_t247]||\"\".concat(_t247),e[_t247]);return i;},r;}),s(e,\"Data/Converters/CSVConverter.js\",[e[\"Data/Converters/DataConverter.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge;var i=/*#__PURE__*/function(_t248){_inherits(i,_t248);var _super36=_createSuper(i);function i(t){var _this84;_classCallCheck(this,i);var e=s(i.defaultOptions,t);_this84=_super36.call(this,e),_this84.columns=[],_this84.headers=[],_this84.dataTypes=[],_this84.options=e;return _this84;}_createClass(i,[{key:\"export\",value:function _export(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options;var s=e.useLocalDecimalPoint,_i155=e.lineDelimiter,n=!1!==this.options.firstRowAsNames,o=e.decimalPoint,r=e.itemDelimiter;o||(o=\",\"!==r&&s?1.1.toLocaleString()[1]:\".\"),r||(r=\",\"===o?\";\":\",\");var a=t.getSortedColumns(e.usePresentationOrder),l=Object.keys(a),h=[],c=l.length,d=[];n&&h.push(l.map(function(t){return\"\\\"\".concat(t,\"\\\"\");}).join(r));for(var _e230=0;_e230<c;_e230++){var _s145=void 0;var _i156=l[_e230],_n76=a[_i156],u=_n76.length,_p17=t.whatIs(_i156);_p17&&(_s145=_p17.dataType);for(var _t249=0;_t249<u;_t249++){var _i157=_n76[_t249];if(d[_t249]||(d[_t249]=[]),\"string\"===_s145?_i157='\"'+_i157+'\"':\"number\"==typeof _i157?_i157=String(_i157).replace(\".\",o):\"string\"==typeof _i157&&(_i157=\"\\\"\".concat(_i157,\"\\\"\")),d[_t249][_e230]=_i157,_e230===c-1){var _s146=_e230;for(;d[_t249].length>2&&void 0===d[_t249][_s146];)d[_t249].pop(),_s146--;h.push(d[_t249].join(r));}}}return h.join(_i155);}},{key:\"parse\",value:function parse(t,e){var _i158=this.dataTypes,n=s(this.options,t),o=n.beforeParse,r=n.lineDelimiter,a=n.firstRowAsNames,l=n.itemDelimiter,h,c=0,d=n.csv,u=n.startRow,p=n.endRow,m;if(this.columns=[],this.emit({type:\"parse\",columns:this.columns,detail:e,headers:this.headers}),d&&o&&(d=o(d)),d){if(h=d.replace(/\\r\\n|\\r/g,\"\\n\").split(r||\"\\n\"),(!u||u<0)&&(u=0),(!p||p>=h.length)&&(p=h.length-1),l||(this.guessedItemDelimiter=this.guessDelimiter(h)),a){var _t250=h[0].split(l||this.guessedItemDelimiter||\",\");for(var _e231=0;_e231<_t250.length;_e231++)_t250[_e231]=_t250[_e231].trim().replace(/^[\"']|[\"']$/g,\"\");this.headers=_t250,u++;}var _t251=0;for(c=u;c<=p;c++)\"#\"===h[c][0]?_t251++:this.parseCSVRow(h[c],c-u-_t251);_i158.length&&_i158[0].length&&\"date\"===_i158[0][1]&&!this.options.dateFormat&&this.deduceDateFormat(this.columns[0],null,!0);for(var _t252=0,_e232=this.columns.length;_t252<_e232;++_t252){m=this.columns[_t252];for(var _e233=0,_s147=m.length;_e233<_s147;++_e233)if(m[_e233]&&\"string\"==typeof m[_e233]){var _s148=this.asGuessedType(m[_e233]);_s148 instanceof Date&&(_s148=_s148.getTime()),this.columns[_t252][_e233]=_s148;}}}this.emit({type:\"afterParse\",columns:this.columns,detail:e,headers:this.headers});}},{key:\"parseCSVRow\",value:function parseCSVRow(t,e){var s=this,_i159=s.columns||[],n=s.dataTypes,_s$options=s.options,o=_s$options.startColumn,r=_s$options.endColumn,a=s.options.itemDelimiter||s.guessedItemDelimiter,l=s.options.decimalPoint;l&&l!==a||(l=s.guessedDecimalPoint||\".\");var h=0,c=\"\",d=\"\",u=0,p=0,m=function m(e){c=t[e];},f=function f(t){n.length<p+1&&n.push([t]),n[p][n[p].length-1]!==t&&n[p].push(t);},g=function g(){if(o>u||u>r){++u,d=\"\";return;}if(\"string\"==typeof d?!isNaN(parseFloat(d))&&isFinite(d)?(d=parseFloat(d),f(\"number\")):isNaN(Date.parse(d))?f(\"string\"):(d=d.replace(/\\//g,\"-\"),f(\"date\")):f(\"number\"),_i159.length<p+1&&_i159.push([]),\"number\"!=typeof d&&\"number\"!==s.guessType(d)&&l){var _t253=d;d=d.replace(l,\".\"),\"number\"!==s.guessType(d)&&(d=_t253);}_i159[p][e]=d,d=\"\",++p,++u;};if(t.trim().length&&\"#\"!==t.trim()[0]){for(;h<t.length;h++){if(m(h),\"#\"===c&&!/^#[A-F\\d]{3,3}|[A-F\\d]{6,6}/i.test(t.substring(h))){g();return;}if('\"'===c)for(m(++h);h<t.length&&'\"'!==c;)d+=c,m(++h);else c===a?g():d+=c;}g();}}},{key:\"guessDelimiter\",value:function guessDelimiter(t){var e=0,s=0,_i160,n={\",\":0,\";\":0,\"\t\":0},o=t.length;for(var _i162=0;_i162<o;_i162++){var _o101=!1,r=void 0,a=void 0,l=void 0,h=\"\";if(_i162>13)break;var _c16=t[_i162];for(var _t254=0;_t254<_c16.length&&(r=_c16[_t254],a=_c16[_t254+1],l=_c16[_t254-1],\"#\"!==r);_t254++){if('\"'===r){if(_o101){if('\"'!==l&&'\"'!==a){for(;\" \"===a&&_t254<_c16.length;)a=_c16[++_t254];void 0!==n[a]&&n[a]++,_o101=!1;}}else _o101=!0;}else void 0!==n[r]?(isNaN(Date.parse(h=h.trim()))?(isNaN(Number(h))||!isFinite(Number(h)))&&n[r]++:n[r]++,h=\"\"):h+=r;\",\"===r&&s++,\".\"===r&&e++;}}return n[\";\"]>n[\",\"]?_i160=\";\":(n[\",\"],n[\";\"],_i160=\",\"),e>s?this.guessedDecimalPoint=\".\":this.guessedDecimalPoint=\",\",_i160;}},{key:\"getTable\",value:function getTable(){return t.getTableFromColumns(this.columns,this.headers);}}]);return i;}(t);return i.defaultOptions=_objectSpread(_objectSpread({},t.defaultOptions),{},{lineDelimiter:\"\\n\"}),i;}),s(e,\"Data/Modifiers/DataModifier.js\",[e[\"Core/Utilities.js\"]],function(e){var s;var i=e.addEvent,n=e.fireEvent,o=e.merge;var r=/*#__PURE__*/function(){function r(){_classCallCheck(this,r);}_createClass(r,[{key:\"benchmark\",value:function benchmark(e,s){var i=[],n=this,_r57=function _r57(){n.modifyTable(e),n.emit({type:\"afterBenchmarkIteration\"});},_o102=o({iterations:1},s),a=_o102.iterations;n.on(\"afterBenchmarkIteration\",function(){if(i.length===a){n.emit({type:\"afterBenchmark\",results:i});return;}_r57();});var l={startTime:0,endTime:0};return n.on(\"modify\",function(){l.startTime=t.performance.now();}),n.on(\"afterModify\",function(){l.endTime=t.performance.now(),i.push(l.endTime-l.startTime);}),_r57(),i;}},{key:\"emit\",value:function emit(t){n(this,t.type,t);}},{key:\"modify\",value:function modify(t,e){var s=this;return new Promise(function(i,n){t.modified===t&&(t.modified=t.clone(!1,e));try{i(s.modifyTable(t,e));}catch(i){s.emit({type:\"error\",detail:e,table:t}),n(i);}});}},{key:\"modifyCell\",value:function modifyCell(t,e,s,i,n){return this.modifyTable(t);}},{key:\"modifyColumns\",value:function modifyColumns(t,e,s,i){return this.modifyTable(t);}},{key:\"modifyRows\",value:function modifyRows(t,e,s,i){return this.modifyTable(t);}},{key:\"on\",value:function on(t,e){return i(this,t,e);}}]);return r;}();return(s=r||(r={})).types={},s.registerType=function(t,e){return!!t&&!s.types[t]&&!!(s.types[t]=e);},r;}),s(e,\"Data/Connectors/DataConnector.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Data/DataTable.js\"],e[\"Core/Utilities.js\"]],function(e,s,i){var n;var o=i.addEvent,r=i.fireEvent,a=i.merge,l=i.pick;var h=/*#__PURE__*/function(){function h(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,h);this.table=new s(t.dataTable),this.metadata=t.metadata||{columns:{}};}_createClass(h,[{key:\"polling\",get:function get(){return!!this.polling;}},{key:\"describeColumn\",value:function describeColumn(t,e){var s=this.metadata.columns;s[t]=a(s[t]||{},e);}},{key:\"describeColumns\",value:function describeColumns(t){var e;var s=Object.keys(t);for(;\"string\"==typeof(e=s.pop());)this.describeColumn(e,t[e]);}},{key:\"emit\",value:function emit(t){r(this,t.type,t);}},{key:\"getColumnOrder\",value:function getColumnOrder(t){var e=this.metadata.columns,s=Object.keys(e||{});if(s.length)return s.sort(function(t,s){return l(e[t].index,0)-l(e[s].index,0);});}},{key:\"getSortedColumns\",value:function getSortedColumns(t){return this.table.getColumns(this.getColumnOrder(t));}},{key:\"load\",value:function load(){return r(this,\"afterLoad\",{table:this.table}),Promise.resolve(this);}},{key:\"on\",value:function on(t,e){return o(this,t,e);}},{key:\"save\",value:function save(){return r(this,\"saveError\",{table:this.table}),Promise.reject(Error(\"Not implemented\"));}},{key:\"setColumnOrder\",value:function setColumnOrder(t){for(var _e234=0,_s149=t.length;_e234<_s149;++_e234)this.describeColumn(t[_e234],{index:_e234});}},{key:\"setModifierOptions\",value:function setModifierOptions(t){var _this85=this;var s=t&&e.types[t.type];return this.table.setModifier(s?new s(t):void 0).then(function(){return _this85;});}},{key:\"startPolling\",value:function startPolling(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1e3;var s=this;t.clearTimeout(s._polling),s._polling=t.setTimeout(function(){return s.load()[\"catch\"](function(t){return s.emit({type:\"loadError\",error:t,table:s.table});}).then(function(){s._polling&&s.startPolling(e);});},e);}},{key:\"stopPolling\",value:function stopPolling(){t.clearTimeout(this._polling),delete this._polling;}},{key:\"whatIs\",value:function whatIs(t){return this.metadata.columns[t];}}]);return h;}();return(n=h||(h={})).types={},n.registerType=function(t,e){return!!t&&!n.types[t]&&!!(n.types[t]=e);},h;}),s(e,\"Data/Connectors/CSVConnector.js\",[e[\"Data/Converters/CSVConverter.js\"],e[\"Data/Connectors/DataConnector.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=s.merge;var n=/*#__PURE__*/function(_e235){_inherits(n,_e235);var _super37=_createSuper(n);function n(e){var _this86;_classCallCheck(this,n);var s=i(n.defaultOptions,e);_this86=_super37.call(this,s),_this86.converter=new t(s),_this86.options=s,s.enablePolling&&_this86.startPolling(1e3*Math.max(s.dataRefreshRate||0,1));return _this86;}_createClass(n,[{key:\"load\",value:function load(t){var e=this,s=e.converter,i=e.table,_e$options=e.options,_n77=_e$options.csv,o=_e$options.csvURL,r=_e$options.dataModifier;return e.emit({type:\"load\",csv:_n77,detail:t,table:i}),Promise.resolve(o?fetch(o).then(function(t){return t.text();}):_n77||\"\").then(function(t){return t&&(i.deleteColumns(),s.parse({csv:t}),i.setColumns(s.getTable().getColumns())),e.setModifierOptions(r).then(function(){return t;});}).then(function(s){return e.emit({type:\"afterLoad\",csv:s,detail:t,table:i}),e;})[\"catch\"](function(s){throw e.emit({type:\"loadError\",detail:t,error:s,table:i}),s;});}}]);return n;}(e);return n.defaultOptions={csv:\"\",csvURL:\"\",enablePolling:!1,dataRefreshRate:1,firstRowAsNames:!0},e.registerType(\"CSV\",n),n;}),s(e,\"Data/Converters/GoogleSheetsConverter.js\",[e[\"Data/Converters/DataConverter.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge,i=e.uniqueKey;var n=/*#__PURE__*/function(_t255){_inherits(n,_t255);var _super38=_createSuper(n);function n(t){var _this87;_classCallCheck(this,n);var e=s(n.defaultOptions,t);_this87=_super38.call(this,e),_this87.columns=[],_this87.header=[],_this87.options=e;return _this87;}_createClass(n,[{key:\"parse\",value:function parse(t,e){var _o$json2;var _n78;var o=s(this.options,t),r=(((_o$json2=o.json)===null||_o$json2===void 0?void 0:_o$json2.values)||[]).map(function(t){return t.slice();});if(0===r.length)return!1;this.header=[],this.columns=[],this.emit({type:\"parse\",columns:this.columns,detail:e,headers:this.header});var a=o.beforeParse,l=o.json;a&&l&&(r=a(l.values)),this.columns=r;for(var _t256=0,_e236=r.length;_t256<_e236;_t256++){_n78=r[_t256],this.header[_t256]=o.firstRowAsNames?\"\".concat(_n78.shift()):i();for(var _e237=0,_s150=_n78.length;_e237<_s150;++_e237)if(_n78[_e237]&&\"string\"==typeof _n78[_e237]){var _s151=this.asGuessedType(_n78[_e237]);_s151 instanceof Date&&(_s151=_s151.getTime()),this.columns[_t256][_e237]=_s151;}}this.emit({type:\"afterParse\",columns:this.columns,detail:e,headers:this.header});}},{key:\"getTable\",value:function getTable(){return t.getTableFromColumns(this.columns,this.header);}}]);return n;}(t);return n.defaultOptions=_objectSpread({},t.defaultOptions),n;}),s(e,\"Data/Connectors/GoogleSheetsConnector.js\",[e[\"Data/Connectors/DataConnector.js\"],e[\"Data/Converters/GoogleSheetsConverter.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=s.merge,n=s.pick;var o=/*#__PURE__*/function(_t257){_inherits(o,_t257);var _super39=_createSuper(o);function o(t){var _this88;_classCallCheck(this,o);var s=i(o.defaultOptions,t);_this88=_super39.call(this,s),_this88.converter=new e(s),_this88.options=s;return _this88;}_createClass(o,[{key:\"load\",value:function load(t){var e=this,s=e.converter,i=e.table,_e$options2=e.options,n=_e$options2.dataModifier,r=_e$options2.dataRefreshRate,a=_e$options2.enablePolling,l=_e$options2.firstRowAsNames,h=_e$options2.googleAPIKey,c=_e$options2.googleSpreadsheetKey,d=o.buildFetchURL(h,c,e.options);if(e.emit({type:\"load\",detail:t,table:i,url:d}),!URL.canParse(d))throw Error(\"Invalid URL: \"+d);return fetch(d).then(function(t){return t.json();}).then(function(t){if(\"object\"==_typeof(t)&&t&&\"object\"==_typeof(t.error)&&t.error&&\"number\"==typeof t.error.code&&\"string\"==typeof t.error.message&&\"string\"==typeof t.error.status)throw Error(t.error.message);return s.parse({firstRowAsNames:l,json:t}),i.deleteColumns(),i.setColumns(s.getTable().getColumns()),e.setModifierOptions(n);}).then(function(){return e.emit({type:\"afterLoad\",detail:t,table:i,url:d}),a&&setTimeout(function(){return e.load();},1e3*Math.max(r||0,1)),e;})[\"catch\"](function(s){throw e.emit({type:\"loadError\",detail:t,error:s,table:i}),s;});}}]);return o;}(t);return o.defaultOptions={googleAPIKey:\"\",googleSpreadsheetKey:\"\",enablePolling:!1,dataRefreshRate:2,firstRowAsNames:!0},function(t){var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";function s(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var i=t.endColumn,o=t.endRow,r=t.googleSpreadsheetRange,a=t.startColumn,l=t.startRow;return r||(e[a||0]||\"A\")+(Math.max(l||0,0)+1)+\":\"+(e[n(i,25)]||\"Z\")+(o?Math.max(o,0):\"Z\");}t.buildFetchURL=function(t,e){var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var n=new URL(\"https://sheets.googleapis.com/v4/spreadsheets/\".concat(e,\"/values/\")),o=i.onlyColumnNames?\"A1:Z1\":s(i);n.pathname+=o;var r=n.searchParams;return r.set(\"alt\",\"json\"),i.onlyColumnNames||(r.set(\"dateTimeRenderOption\",\"FORMATTED_STRING\"),r.set(\"majorDimension\",\"COLUMNS\"),r.set(\"valueRenderOption\",\"UNFORMATTED_VALUE\")),r.set(\"prettyPrint\",\"false\"),r.set(\"key\",t),n.href;},t.buildQueryRange=s;}(o||(o={})),t.registerType(\"GoogleSheets\",o),o;}),s(e,\"Data/Converters/HTMLTableConverter.js\",[e[\"Data/Converters/DataConverter.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge;var i=/*#__PURE__*/function(_t258){_inherits(i,_t258);var _super40=_createSuper(i);function i(t){var _this89;_classCallCheck(this,i);var e=s(i.defaultOptions,t);_this89=_super40.call(this,e),_this89.columns=[],_this89.headers=[],_this89.options=e,e.tableElement&&(_this89.tableElement=e.tableElement,_this89.tableElementID=e.tableElement.id);return _this89;}_createClass(i,[{key:\"export\",value:function _export(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:this.options;var s=!1!==e.firstRowAsNames,_i163=e.useMultiLevelHeaders,n=t.getSortedColumns(e.usePresentationOrder),o=Object.keys(n),r=[],a=o.length,l=[],h=\"\";if(s){var _t259=[];if(_i163){var _iteratorNormalCompletion46=true;var _didIteratorError46=false;var _iteratorError46=undefined;try{for(var _iterator46=o[Symbol.iterator](),_step46;!(_iteratorNormalCompletion46=(_step46=_iterator46.next()).done);_iteratorNormalCompletion46=true){var _e238=_step46.value;var _s152=(n[_e238].shift()||\"\").toString();_t259.push(_s152);}}catch(err){_didIteratorError46=true;_iteratorError46=err;}finally{try{if(!_iteratorNormalCompletion46&&_iterator46[\"return\"]!=null){_iterator46[\"return\"]();}}finally{if(_didIteratorError46){throw _iteratorError46;}}}h=this.getTableHeaderHTML(o,_t259,e);}else h=this.getTableHeaderHTML(void 0,o,e);}for(var _t260=0;_t260<a;_t260++){var _e239=n[o[_t260]],_s153=_e239.length;for(var _i168=0;_i168<_s153;_i168++){var _s154=_e239[_i168];l[_i168]||(l[_i168]=[]),\"string\"==typeof _s154||\"number\"==typeof _s154||void 0===_s154||(_s154=(_s154||\"\").toString()),l[_i168][_t260]=this.getCellHTMLFromValue(_t260?\"td\":\"th\",null,_t260?\"\":'scope=\"row\"',_s154),_t260===a-1&&r.push(\"<tr>\"+l[_i168].join(\"\")+\"</tr>\");}}var c=\"\";return e.tableCaption&&(c='<caption class=\"highcharts-table-caption\">'+e.tableCaption+\"</caption>\"),\"<table>\"+c+h+\"<tbody>\"+r.join(\"\")+\"</tbody></table>\";}},{key:\"getCellHTMLFromValue\",value:function getCellHTMLFromValue(t,e,s,_i165,n){var o=_i165,r=\"text\"+(e?\" \"+e:\"\");return\"number\"==typeof o?(o=o.toString(),\",\"===n&&(o=o.replace(\".\",n)),r=\"number\"):_i165||(o=\"\",r=\"empty\"),\"<\"+t+(s?\" \"+s:\"\")+' class=\"'+r+'\">'+o+\"</\"+t+\">\";}},{key:\"getTableHeaderHTML\",value:function getTableHeaderHTML(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:this.options;var _i166=s.useMultiLevelHeaders,n=s.useRowspanHeaders,o=\"<thead>\",r=0,a=e&&e.length,l,h=0,c;if(_i166&&t&&e&&!function(t,e){var s=t.length;if(e.length!==s)return!1;for(;--s;)if(t[s]!==e[s])return!1;return!0;}(t,e)){for(o+=\"<tr>\";r<a;++r)(l=t[r])===t[r+1]?++h:h?(o+=this.getCellHTMLFromValue(\"th\",\"highcharts-table-topheading\",'scope=\"col\" colspan=\"'+(h+1)+'\"',l),h=0):(l===e[r]?n?(c=2,delete e[r]):(c=1,e[r]=\"\"):c=1,o+=this.getCellHTMLFromValue(\"th\",\"highcharts-table-topheading\",'scope=\"col\"'+(c>1?' valign=\"top\" rowspan=\"'+c+'\"':\"\"),l));o+=\"</tr>\";}if(e){for(o+=\"<tr>\",r=0,a=e.length;r<a;++r)void 0!==e[r]&&(o+=this.getCellHTMLFromValue(\"th\",null,'scope=\"col\"',e[r]));o+=\"</tr>\";}return o+\"</thead>\";}},{key:\"parse\",value:function parse(t,e){var _i167=[],n=[],o=s(this.options,t),r=o.endRow,a=o.startColumn,l=o.endColumn,h=o.firstRowAsNames,c=o.tableElement||this.tableElement;if(!(c instanceof HTMLElement)){this.emit({type:\"parseError\",columns:_i167,detail:e,headers:n,error:\"Not a valid HTML Table\"});return;}this.tableElement=c,this.tableElementID=c.id,this.emit({type:\"parse\",columns:this.columns,detail:e,headers:this.headers});var d=c.getElementsByTagName(\"tr\"),u=d.length,p=0,m,f=o.startRow;if(h&&u){var _t261=d[0].children,_e240=_t261.length;for(var _s155=a;_s155<_e240&&!(_s155>l);_s155++)(\"TD\"===(m=_t261[_s155]).tagName||\"TH\"===m.tagName)&&n.push(m.innerHTML);f++;}for(;p<u;){if(p>=f&&p<=r){var _t262=d[p].children,_e241=_t262.length,_s156=0;for(;_s156<_e241;){var _e242=_s156-a,_n79=_i167[_e242];if((\"TD\"===(m=_t262[_s156]).tagName||\"TH\"===m.tagName)&&_s156>=a&&_s156<=l){_i167[_e242]||(_i167[_e242]=[]);var _t263=this.asGuessedType(m.innerHTML);_t263 instanceof Date&&(_t263=_t263.getTime()),_i167[_e242][p-f]=_t263;var _s157=1;for(;p-f>=_s157&&void 0===_n79[p-f-_s157];)_n79[p-f-_s157]=null,_s157++;}_s156++;}}p++;}this.columns=_i167,this.headers=n,this.emit({type:\"afterParse\",columns:_i167,detail:e,headers:n});}},{key:\"getTable\",value:function getTable(){return t.getTableFromColumns(this.columns,this.headers);}}]);return i;}(t);return i.defaultOptions=_objectSpread(_objectSpread({},t.defaultOptions),{},{useRowspanHeaders:!0,useMultiLevelHeaders:!0}),i;}),s(e,\"Data/Connectors/HTMLTableConnector.js\",[e[\"Data/Connectors/DataConnector.js\"],e[\"Core/Globals.js\"],e[\"Data/Converters/HTMLTableConverter.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i){var n=e.win,o=i.merge;var r=/*#__PURE__*/function(_t264){_inherits(r,_t264);var _super41=_createSuper(r);function r(t){var _this90;_classCallCheck(this,r);var e=o(r.defaultOptions,t);_this90=_super41.call(this,e),_this90.converter=new s(e),_this90.options=e;return _this90;}_createClass(r,[{key:\"load\",value:function load(t){var e;var s=this,i=s.converter,_r58=s.table,_s$options2=s.options,a=_s$options2.dataModifier,l=_s$options2.table;if(s.emit({type:\"load\",detail:t,table:_r58,tableElement:s.tableElement}),\"string\"==typeof l?(s.tableID=l,e=n.document.getElementById(l)):(e=l,s.tableID=e.id),s.tableElement=e||void 0,!s.tableElement){var _e243=\"HTML table not provided, or element with ID not found\";return s.emit({type:\"loadError\",detail:t,error:_e243,table:_r58}),Promise.reject(Error(_e243));}return i.parse(o({tableElement:s.tableElement},s.options),t),_r58.deleteColumns(),_r58.setColumns(i.getTable().getColumns()),s.setModifierOptions(a).then(function(){return s.emit({type:\"afterLoad\",detail:t,table:_r58,tableElement:s.tableElement}),s;});}}]);return r;}(t);return r.defaultOptions={table:\"\"},t.registerType(\"HTMLTable\",r),r;}),s(e,\"Data/Converters/JSONConverter.js\",[e[\"Data/Converters/DataConverter.js\"],e[\"Data/DataTable.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=s.error,n=s.isArray,o=s.merge,r=s.objectEach;var a=/*#__PURE__*/function(_t265){_inherits(a,_t265);var _super42=_createSuper(a);function a(t){var _this91;_classCallCheck(this,a);var s=o(a.defaultOptions,t);_this91=_super42.call(this,s),_this91.columns=[],_this91.headers=[],_this91.options=s,_this91.table=new e();return _this91;}_createClass(a,[{key:\"parse\",value:function parse(t,e){var _this92=this;var _t266=t=o(this.options,t),s=_t266.beforeParse,_a41=_t266.orientation,l=_t266.firstRowAsNames,h=_t266.columnNames,c=t.data;if(c){if(this.columns=[],this.emit({type:\"parse\",columns:this.columns,detail:e,headers:this.headers}),s&&(c=s(c)),c=c.slice(),\"columns\"===_a41)for(var _t267=0,_e244=c.length;_t267<_e244;_t267++){var _e245=c[_t267];if(!(_e245 instanceof Array))return;this.headers instanceof Array?(l?this.headers.push(\"\".concat(_e245.shift())):h&&h instanceof Array&&this.headers.push(h[_t267]),this.table.setColumn(this.headers[_t267]||_t267.toString(),_e245)):i(\"JSONConverter: Invalid `columnNames` option.\",!1);}else if(\"rows\"===_a41){l?this.headers=c.shift():h&&(this.headers=h);var _loop5=function _loop5(){var e=c[_t268];if(n(e))for(var _t269=0,_s158=e.length;_t269<_s158;_t269++)_this92.columns.length<_t269+1&&_this92.columns.push([]),_this92.columns[_t269].push(e[_t269]),_this92.headers instanceof Array?_this92.table.setColumn(_this92.headers[_t269]||_t269.toString(),_this92.columns[_t269]):i(\"JSONConverter: Invalid `columnNames` option.\",!1);else{var _s159=_this92.headers;if(_s159&&!(_s159 instanceof Array)){var _t270={};r(_s159,function(s,i){_t270[i]=s.reduce(function(t,e){return t[e];},e);}),e=_t270;}_this92.table.setRows([e],_t268);}};for(var _t268=0,_e246=c.length;_t268<_e246;_t268++){_loop5();}}this.emit({type:\"afterParse\",columns:this.columns,detail:e,headers:this.headers});}}},{key:\"getTable\",value:function getTable(){return this.table;}}]);return a;}(t);return a.defaultOptions=_objectSpread(_objectSpread({},t.defaultOptions),{},{data:[],orientation:\"rows\"}),a;}),s(e,\"Data/Connectors/JSONConnector.js\",[e[\"Data/Connectors/DataConnector.js\"],e[\"Core/Utilities.js\"],e[\"Data/Converters/JSONConverter.js\"]],function(t,e,s){var i=e.merge;var n=/*#__PURE__*/function(_t271){_inherits(n,_t271);var _super43=_createSuper(n);function n(t){var _this93;_classCallCheck(this,n);var e=i(n.defaultOptions,t);_this93=_super43.call(this,e),_this93.converter=new s(e),_this93.options=e,e.enablePolling&&_this93.startPolling(1e3*Math.max(e.dataRefreshRate||0,1));return _this93;}_createClass(n,[{key:\"load\",value:function load(t){var e=this,s=e.converter,i=e.table,_e$options3=e.options,_n80=_e$options3.data,o=_e$options3.dataUrl,r=_e$options3.dataModifier;return e.emit({type:\"load\",data:_n80,detail:t,table:i}),Promise.resolve(o?fetch(o).then(function(t){return t.json();}):_n80||[]).then(function(t){return t&&(i.deleteColumns(),s.parse({data:t}),i.setColumns(s.getTable().getColumns())),e.setModifierOptions(r).then(function(){return t;});}).then(function(s){return e.emit({type:\"afterLoad\",data:s,detail:t,table:i}),e;})[\"catch\"](function(s){throw e.emit({type:\"loadError\",detail:t,error:s,table:i}),s;});}}]);return n;}(t);return n.defaultOptions={data:[],enablePolling:!1,dataRefreshRate:0,firstRowAsNames:!0,orientation:\"rows\"},t.registerType(\"JSON\",n),n;}),s(e,\"Data/Modifiers/ChainModifier.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge;var i=/*#__PURE__*/function(_t272){_inherits(i,_t272);var _super44=_createSuper(i);function i(e){var _this94;_classCallCheck(this,i);for(var _len8=arguments.length,n=new Array(_len8>1?_len8-1:0),_key8=1;_key8<_len8;_key8++){n[_key8-1]=arguments[_key8];}_this94=_super44.call(this),_this94.chain=n,_this94.options=s(i.defaultOptions,e);var o=_this94.options.chain||[];for(var _e247=0,_s160=o.length,_i175,r;_e247<_s160;++_e247)(_i175=o[_e247]).type&&(r=t.types[_i175.type])&&n.push(new r(_i175));return _this94;}_createClass(i,[{key:\"add\",value:function add(t,e){this.emit({type:\"addModifier\",detail:e,modifier:t}),this.chain.push(t),this.emit({type:\"addModifier\",detail:e,modifier:t});}},{key:\"clear\",value:function clear(t){this.emit({type:\"clearChain\",detail:t}),this.chain.length=0,this.emit({type:\"afterClearChain\",detail:t});}},{key:\"modify\",value:function(){var _modify2=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee9(t,e){var s,_i170,n,o;return regeneratorRuntime.wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:s=this.options.reverse?this.chain.slice().reverse():this.chain.slice();t.modified===t&&(t.modified=t.clone(!1,e));_i170=t;n=0,o=s.length;case 4:if(!(n<o)){_context9.next=17;break;}_context9.prev=5;_context9.next=8;return s[n].modify(_i170,e);case 8:_context9.next=13;break;case 10:_context9.prev=10;_context9.t0=_context9[\"catch\"](5);throw this.emit({type:\"error\",detail:e,table:t}),_context9.t0;case 13:_i170=_i170.modified;case 14:++n;_context9.next=4;break;case 17:return _context9.abrupt(\"return\",(t.modified=_i170,t));case 18:case\"end\":return _context9.stop();}},_callee9,this,[[5,10]]);}));function modify(_x14,_x15){return _modify2.apply(this,arguments);}return modify;}()},{key:\"modifyCell\",value:function modifyCell(t,e,s,_i171,n){var o=this.options.reverse?this.chain.reverse():this.chain;if(o.length){var r=t.clone();for(var _t273=0,a=o.length;_t273<a;++_t273)o[_t273].modifyCell(r,e,s,_i171,n),r=r.modified;t.modified=r;}return t;}},{key:\"modifyColumns\",value:function modifyColumns(t,e,s,_i172){var n=this.options.reverse?this.chain.reverse():this.chain.slice();if(n.length){var o=t.clone();for(var _t274=0,r=n.length;_t274<r;++_t274)n[_t274].modifyColumns(o,e,s,_i172),o=o.modified;t.modified=o;}return t;}},{key:\"modifyRows\",value:function modifyRows(t,e,s,_i173){var n=this.options.reverse?this.chain.reverse():this.chain.slice();if(n.length){var o=t.clone();for(var _t275=0,r=n.length;_t275<r;++_t275)n[_t275].modifyRows(o,e,s,_i173),o=o.modified;t.modified=o;}return t;}},{key:\"modifyTable\",value:function modifyTable(t,e){this.emit({type:\"modify\",detail:e,table:t});var s=this.options.reverse?this.chain.reverse():this.chain.slice(),_i174=t.modified;for(var _t276=0,n=s.length;_t276<n;++_t276)_i174=s[_t276].modifyTable(_i174,e).modified;return t.modified=_i174,this.emit({type:\"afterModify\",detail:e,table:t}),t;}},{key:\"remove\",value:function remove(t,e){var s=this.chain;this.emit({type:\"removeModifier\",detail:e,modifier:t}),s.splice(s.indexOf(t),1),this.emit({type:\"afterRemoveModifier\",detail:e,modifier:t});}}]);return i;}(t);return i.defaultOptions={type:\"Chain\"},t.registerType(\"Chain\",i),i;}),s(e,\"Data/Modifiers/InvertModifier.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge;var i=/*#__PURE__*/function(_t277){_inherits(i,_t277);var _super45=_createSuper(i);function i(t){var _this95;_classCallCheck(this,i);_this95=_super45.call(this),_this95.options=s(i.defaultOptions,t);return _this95;}_createClass(i,[{key:\"modifyCell\",value:function modifyCell(t,e,s,_i176,n){var o=t.modified,r=o.getRowIndexBy(\"columnNames\",e);return void 0===r?o.setColumns(this.modifyTable(t.clone()).getColumns(),void 0,n):o.setCell(\"\".concat(s),r,_i176,n),t;}},{key:\"modifyColumns\",value:function modifyColumns(t,e,s,_i177){var n=t.modified,o=n.getColumn(\"columnNames\")||[],r=t.getColumnNames(),a=t.getRowCount()!==o.length;if(!a){for(var _t278=0,_e248=r.length;_t278<_e248;++_t278)if(r[_t278]!==o[_t278]){a=!0;break;}}if(a)return this.modifyTable(t,_i177);r=Object.keys(e);for(var _t279=0,_o103=r.length,_a42,l,h;_t279<_o103;++_t279){_a42=e[l=r[_t279]],h=n.getRowIndexBy(\"columnNames\",l)||n.getRowCount();for(var _t280=0,_e249=s,_o104=_a42.length;_t280<_o104;++_t280,++_e249)n.setCell(\"\".concat(_e249),h,_a42[_t280],_i177);}return t;}},{key:\"modifyRows\",value:function modifyRows(t,e,s,_i178){var n=t.getColumnNames(),o=t.modified,r=o.getColumn(\"columnNames\")||[],a=t.getRowCount()!==r.length;if(!a){for(var _t281=0,_e250=n.length;_t281<_e250;++_t281)if(n[_t281]!==r[_t281]){a=!0;break;}}if(a)return this.modifyTable(t,_i178);for(var _t282=0,_r59=s,_a43=e.length,l;_t282<_a43;++_t282,++_r59)if((l=e[_t282])instanceof Array)o.setColumn(\"\".concat(_r59),l);else for(var _t283=0,_e251=n.length;_t283<_e251;++_t283)o.setCell(\"\".concat(_r59),_t283,l[n[_t283]],_i178);return t;}},{key:\"modifyTable\",value:function modifyTable(t,e){this.emit({type:\"modify\",detail:e,table:t});var s=t.modified;if(t.hasColumns([\"columnNames\"])){var _e252=((t.deleteColumns([\"columnNames\"])||{}).columnNames||[]).map(function(t){return\"\".concat(t);}),_i179={};for(var _s161=0,n=t.getRowCount(),o;_s161<n;++_s161)(o=t.getRow(_s161))&&(_i179[_e252[_s161]]=o);s.deleteColumns(),s.setColumns(_i179);}else{var _e253={};for(var _s162=0,_i181=t.getRowCount(),_n81;_s162<_i181;++_s162)(_n81=t.getRow(_s162))&&(_e253[\"\".concat(_s162)]=_n81);_e253.columnNames=t.getColumnNames(),s.deleteColumns(),s.setColumns(_e253);}return this.emit({type:\"afterModify\",detail:e,table:t}),t;}}]);return i;}(t);return i.defaultOptions={type:\"Invert\"},t.registerType(\"Invert\",i),i;}),s(e,\"Data/Modifiers/RangeModifier.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge;var i=/*#__PURE__*/function(_t284){_inherits(i,_t284);var _super46=_createSuper(i);function i(t){var _this96;_classCallCheck(this,i);_this96=_super46.call(this),_this96.options=s(i.defaultOptions,t);return _this96;}_createClass(i,[{key:\"modifyTable\",value:function modifyTable(t,e){this.emit({type:\"modify\",detail:e,table:t});var s=[],_this$options8=this.options,_i182=_this$options8.additive,n=_this$options8.ranges,o=_this$options8.strict;if(n.length){var _e254=t.modified,r=t.getColumns(),a=[];for(var l=0,h=n.length,_c17,d;l<h;++l)if(_c17=n[l],!o||_typeof(_c17.minValue)==_typeof(_c17.maxValue)){l>0&&!_i182&&(_e254.deleteRows(),_e254.setRows(a),_e254.setOriginalRowIndexes(s,!0),r=_e254.getColumns(),a=[],s=[]),d=r[_c17.column]||[];for(var _n82=0,_r60=d.length,_l24,_h21,u;_n82<_r60;++_n82){switch(_typeof(_l24=d[_n82])){default:continue;case\"boolean\":case\"number\":case\"string\":}(!o||_typeof(_l24)==_typeof(_c17.minValue))&&_l24>=_c17.minValue&&_l24<=_c17.maxValue&&(_i182?(_h21=t.getRow(_n82),u=t.getOriginalRowIndex(_n82)):(_h21=_e254.getRow(_n82),u=_e254.getOriginalRowIndex(_n82)),_h21&&(a.push(_h21),s.push(u)));}}_e254.deleteRows(),_e254.setRows(a),_e254.setOriginalRowIndexes(s);}return this.emit({type:\"afterModify\",detail:e,table:t}),t;}}]);return i;}(t);return i.defaultOptions={type:\"Range\",ranges:[]},t.registerType(\"Range\",i),i;}),s(e,\"Data/Modifiers/SortModifier.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Data/DataTable.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=s.merge;var n=/*#__PURE__*/function(_t285){_inherits(n,_t285);var _super47=_createSuper(n);function n(t){var _this97;_classCallCheck(this,n);_this97=_super47.call(this),_this97.options=i(n.defaultOptions,t);return _this97;}_createClass(n,[{key:\"getRowReferences\",value:function getRowReferences(t){var e=t.getRows(),s=[];for(var _t286=0,_i183=e.length;_t286<_i183;++_t286)s.push({index:_t286,row:e[_t286]});return s;}},{key:\"modifyCell\",value:function modifyCell(t,s,i,_n83,o){var _this$options9=this.options,r=_this$options9.orderByColumn,a=_this$options9.orderInColumn;return s===r&&(a?(t.modified.setCell(s,i,_n83),t.modified.setColumn(a,this.modifyTable(new e({columns:t.getColumns([r,a])})).modified.getColumn(a))):this.modifyTable(t,o)),t;}},{key:\"modifyColumns\",value:function modifyColumns(t,s,i,_n84){var _this$options10=this.options,o=_this$options10.orderByColumn,r=_this$options10.orderInColumn,a=Object.keys(s);return a.indexOf(o)>-1&&(r&&s[a[0]].length?(t.modified.setColumns(s,i),t.modified.setColumn(r,this.modifyTable(new e({columns:t.getColumns([o,r])})).modified.getColumn(r))):this.modifyTable(t,_n84)),t;}},{key:\"modifyRows\",value:function modifyRows(t,s,i,_n85){var _this$options11=this.options,o=_this$options11.orderByColumn,r=_this$options11.orderInColumn;return r&&s.length?(t.modified.setRows(s,i),t.modified.setColumn(r,this.modifyTable(new e({columns:t.getColumns([o,r])})).modified.getColumn(r))):this.modifyTable(t,_n85),t;}},{key:\"modifyTable\",value:function modifyTable(t,e){this.emit({type:\"modify\",detail:e,table:t});var s=t.getColumnNames(),i=t.getRowCount(),o=this.getRowReferences(t),_this$options12=this.options,r=_this$options12.direction,a=_this$options12.orderByColumn,l=_this$options12.orderInColumn,h=\"asc\"===r?n.ascending:n.descending,c=s.indexOf(a),d=t.modified;if(-1!==c&&o.sort(function(t,e){return h(t.row[c],e.row[c]);}),l){var _t287=[];for(var _e255=0;_e255<i;++_e255)_t287[o[_e255].index]=_e255;d.setColumns(_defineProperty({},l,_t287));}else{var _t288;var _e256=[],_s163=[];for(var _n87=0;_n87<i;++_n87)_t288=o[_n87],_e256.push(d.getOriginalRowIndex(_t288.index)),_s163.push(_t288.row);d.setRows(_s163,0),d.setOriginalRowIndexes(_e256);}return this.emit({type:\"afterModify\",detail:e,table:t}),t;}}],[{key:\"ascending\",value:function ascending(t,e){return(t||0)<(e||0)?-1:(t||0)>(e||0)?1:0;}},{key:\"descending\",value:function descending(t,e){return(e||0)<(t||0)?-1:(e||0)>(t||0)?1:0;}}]);return n;}(t);return n.defaultOptions={type:\"Sort\",direction:\"desc\",orderByColumn:\"y\"},t.registerType(\"Sort\",n),n;}),s(e,\"Dashboards/Accessibility/DashboardsAccessibility.js\",[],function(){return/*#__PURE__*/function(){function _class20(t){_classCallCheck(this,_class20);this.board=t,this.addTabIndexToCells();}_createClass(_class20,[{key:\"addTabIndexToCells\",value:function addTabIndexToCells(){var t;var e=this.board.mountedComponents;for(var _s164=0,i=e.length;_s164<i;++_s164)(t=e[_s164].cell)&&t.container&&t.container.setAttribute(\"tabindex\",-1);}}]);return _class20;}();}),s(e,\"Data/DataCursor.js\",[],function(){var t=/*#__PURE__*/function(){function t(){var _t289=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};_classCallCheck(this,t);this.emittingRegister=[],this.listenerMap={},this.stateMap=_t289;}_createClass(t,[{key:\"addListener\",value:function addListener(_t290,e,s){var i=this.listenerMap[_t290]=this.listenerMap[_t290]||{};return(i[e]=i[e]||[]).push(s),this;}},{key:\"buildEmittingTag\",value:function buildEmittingTag(_t291){return(\"position\"===_t291.cursor.type?[_t291.table.id,_t291.cursor.column,_t291.cursor.row,_t291.cursor.state,_t291.cursor.type]:[_t291.table.id,_t291.cursor.columns,_t291.cursor.firstRow,_t291.cursor.lastRow,_t291.cursor.state,_t291.cursor.type]).join(\"\\0\");}},{key:\"emitCursor\",value:function emitCursor(e,s,i,n){var o=e.id,r=s.state,a=this.listenerMap[o]&&this.listenerMap[o][r];if(a){var _this$stateMap$o2;var _r61=this.stateMap[o]=(_this$stateMap$o2=this.stateMap[o])!==null&&_this$stateMap$o2!==void 0?_this$stateMap$o2:{},l=_r61[s.state]||[];n&&(l.length||(_r61[s.state]=l),-1===t.getIndex(s,l)&&l.push(s));var h={cursor:s,cursors:l,table:e};i&&(h.event=i);var _c18=this.emittingRegister,d=this.buildEmittingTag(h);if(_c18.indexOf(d)>=0)return this;try{this.emittingRegister.push(d);for(var _t296=0,_e257=a.length;_t296<_e257;++_t296)a[_t296].call(this,h);}finally{var _t293=this.emittingRegister.indexOf(d);_t293>=0&&this.emittingRegister.splice(_t293,1);}}return this;}},{key:\"remitCursor\",value:function remitCursor(e,s){var i=this.stateMap[e]&&this.stateMap[e][s.state];if(i){var _e258=t.getIndex(s,i);_e258>=0&&i.splice(_e258,1);}return this;}},{key:\"removeListener\",value:function removeListener(_t294,e,s){var i=this.listenerMap[_t294]&&this.listenerMap[_t294][e];if(i){var _t295=i.indexOf(s);_t295>=0&&i.splice(_t295,1);}return this;}}]);return t;}();return t.version=\"1.0.0\",function(t){function e(t,e){var _ref25,_t$row2,_ref26,_t$row3;if(\"range\"===t.type)return t;var s={type:\"range\",firstRow:(_ref25=(_t$row2=t.row)!==null&&_t$row2!==void 0?_t$row2:e&&e.firstRow)!==null&&_ref25!==void 0?_ref25:0,lastRow:(_ref26=(_t$row3=t.row)!==null&&_t$row3!==void 0?_t$row3:e&&e.lastRow)!==null&&_ref26!==void 0?_ref26:Number.MAX_VALUE,state:t.state};return void 0!==t.column&&(s.columns=[t.column]),s;}t.getIndex=function(t,e){if(\"position\"===t.type){for(var _s165,i=0,n=e.length;i<n;++i)if(\"position\"===(_s165=e[i]).type&&_s165.state===t.state&&_s165.column===t.column&&_s165.row===t.row)return i;}else{var _s166=JSON.stringify(t.columns);for(var _i184,_n88=0,o=e.length;_n88<o;++_n88)if(\"range\"===(_i184=e[_n88]).type&&_i184.state===t.state&&_i184.firstRow===t.firstRow&&_i184.lastRow===t.lastRow&&JSON.stringify(_i184.columns)===_s166)return _n88;}return-1;},t.isEqual=function(t,e){return\"position\"===t.type&&\"position\"===e.type?t.column===e.column&&t.row===e.row&&t.state===e.state:\"range\"===t.type&&\"range\"===e.type&&t.firstRow===e.firstRow&&t.lastRow===e.lastRow&&JSON.stringify(t.columns)===JSON.stringify(e.columns);},t.isInRange=function(t,s){\"position\"===s.type&&(s=e(s)),\"position\"===t.type&&(t=e(t,s));var i=t.columns,n=s.columns;return t.firstRow>=s.firstRow&&t.lastRow<=s.lastRow&&(!i||!n||i.every(function(t){return n.indexOf(t)>=0;}));},t.toPositions=function(t){if(\"position\"===t.type)return[t];var e=t.columns||[],s=[],i=t.state;for(var n=t.firstRow,o=t.lastRow;n<o;++n){if(!e.length){s.push({type:\"position\",row:n,state:i});continue;}for(var _t297=0,_o105=e.length;_t297<_o105;++_t297)s.push({type:\"position\",column:e[_t297],row:n,state:i});}return s;},t.toRange=e;}(t||(t={})),t;}),s(e,\"Dashboards/Serializable.js\",[],function(){var t;return function(t){var e={},s={};t.fromJSON=function(t){var i=t.$class;if(\"string\"!=typeof i)throw Error(\"JSON has no $class property.\");var n=e[i];if(n)return n.fromJSON(t);var o=s[i];if(o)return o.fromJSON(t);throw Error(\"'\".concat(i,\"' unknown.\"));},t.registerClassPrototype=function(t,s){if(e[t])throw Error(\"A serializer for '\"+t+\"' is already registered.\");e[t]=s;},t.registerHelper=function(t){if(s[t.$class])throw Error(\"A serializer for '\"+t.$class+\"' is already registered.\");s[t.$class]=t;},t.toJSON=function(t){var e;if(\"function\"==typeof t.fromJSON&&\"function\"==typeof t.toJSON)return t.toJSON();var i=Object.keys(s),n=i.length;for(var o=0;o<n;++o)if((e=s[i[o]]).jsonSupportFor(t))return e.toJSON(t);throw Error(\"Object is not supported.\");};}(t||(t={})),t;}),s(e,\"Dashboards/SerializeHelper/DataCursorHelper.js\",[e[\"Data/DataCursor.js\"],e[\"Dashboards/Serializable.js\"]],function(t,e){var s={$class:\"Data.DataCursor\",fromJSON:function fromJSON(e){return new t(e.stateMap);},jsonSupportFor:function jsonSupportFor(e){return e instanceof t;},toJSON:function toJSON(t){var e,s,i,n,o;var r=t.stateMap,a={},l=Object.keys(t.stateMap);for(var _t298=0,h=l.length;_t298<h;++_t298){o=Object.keys(r[i=l[_t298]]),a[i]={};for(var _t299=0,_l25=o.length;_t299<_l25;++_t299){n=o[_t299],e=r[i][n],a[i][n]=s=[];for(var _t300=0,_i185=e.length;_t300<_i185;++_t300)s.push(_objectSpread({},e[_t300]));}}return{$class:\"Data.DataCursor\",stateMap:a};}};return e.registerHelper(s),s;}),s(e,\"Data/DataPoolDefaults.js\",[],function(){return{connectors:[]};}),s(e,\"Data/DataPool.js\",[e[\"Data/Connectors/DataConnector.js\"],e[\"Data/DataPoolDefaults.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=/*#__PURE__*/function(){function i(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:e;_classCallCheck(this,i);t.connectors=t.connectors||[],this.connectors={},this.options=t,this.waiting={};}_createClass(i,[{key:\"emit\",value:function emit(t){s.fireEvent(this,t.type,t);}},{key:\"getConnector\",value:function getConnector(t){var _this98=this;var e=this.connectors[t];if(e)return Promise.resolve(e);var s=this.waiting[t];if(!s){s=this.waiting[t]=[];var _e259=this.getConnectorOptions(t);if(!_e259)throw Error(\"Connector '\".concat(t,\"' not found.\"));this.loadConnector(_e259).then(function(e){delete _this98.waiting[t];for(var _t301=0,_i192=s.length;_t301<_i192;++_t301)s[_t301][0](e);})[\"catch\"](function(e){delete _this98.waiting[t];for(var _t302=0,_i193=s.length;_t302<_i193;++_t302)s[_t302][1](e);});}return new Promise(function(t,e){s.push([t,e]);});}},{key:\"getConnectorIds\",value:function getConnectorIds(){var t=this.options.connectors,e=[];for(var _s167=0,_i194=t.length;_s167<_i194;++_s167)e.push(t[_s167].id);return e;}},{key:\"getConnectorOptions\",value:function getConnectorOptions(t){var e=this.options.connectors;for(var _s168=0,_i195=e.length;_s168<_i195;++_s168)if(e[_s168].id===t)return e[_s168];}},{key:\"getConnectorTable\",value:function getConnectorTable(t){return this.getConnector(t).then(function(t){return t.table;});}},{key:\"isNewConnector\",value:function isNewConnector(t){return!this.connectors[t];}},{key:\"loadConnector\",value:function loadConnector(e){var _this99=this;return new Promise(function(s,_i190){_this99.emit({type:\"load\",options:e});var n=t.types[e.type];if(!n)throw Error(\"Connector type not found. (\".concat(e.type,\")\"));new n(e.options).load().then(function(t){_this99.connectors[e.id]=t,_this99.emit({type:\"afterLoad\",options:e}),s(t);})[\"catch\"](_i190);});}},{key:\"on\",value:function on(t,e){return s.addEvent(this,t,e);}},{key:\"setConnectorOptions\",value:function setConnectorOptions(t){var e=this.options.connectors,s=this.connectors;this.emit({type:\"setConnectorOptions\",options:t});for(var _s169=0,_i196=e.length;_s169<_i196;++_s169)if(e[_s169].id===t.id){e.splice(_s169,1);break;}s[t.id]&&(s[t.id].stopPolling(),delete s[t.id]),e.push(t),this.emit({type:\"afterSetConnectorOptions\",options:t});}}]);return i;}();return i.version=\"1.0.0\",i;}),s(e,\"Dashboards/Layout/Row.js\",[e[\"Dashboards/Globals.js\"],e[\"Dashboards/Layout/Cell.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"]],function(t,e,s,i,n){var o=i.pick,r=i.defined,a=i.merge,l=i.objectEach,h=i.fireEvent;var c=/*#__PURE__*/function(_s170){_inherits(c,_s170);var _super48=_createSuper(c);function c(e,s,i){var _this100;_classCallCheck(this,c);_this100=_super48.call(this),_this100.type=t.guiElementType.row,_this100.layout=e,_this100.cells=[],_this100.options=s,_this100.isVisible=!0;var n=document.getElementById(s.parentContainerId||\"\")||e.container,o=e.options||{},r=o.rowClassName||\"\";_this100.container=_this100.getElementContainer({render:e.board.guiEnabled,parentContainer:n,attribs:{id:s.id,className:t.classNames.row+\" \"+r},element:i,elementId:s.id,style:a(o.style,s.style)}),_this100.options.cells&&_this100.setCells(),s.cellsJSON&&!_this100.cells.length&&_this100.setCellsFromJSON(s.cellsJSON);return _this100;}_createClass(c,[{key:\"setCells\",value:function setCells(){var t,e,s;var i=(this.layout.options||{}).cellClassName||\"\",n=o(this.options.cells,this.container&&this.container.getElementsByClassName(i))||[];for(e=0,s=n.length;e<s;++e)t=n[e],this.addCell(this.layout.board.guiEnabled?t:{id:\"\"},t instanceof HTMLElement?t:void 0);}},{key:\"setCellsFromJSON\",value:function setCellsFromJSON(t){var s,i;var n=[];for(var _o106=0,_r62=t.length;_o106<_r62;++_o106)i=t[_o106],(s=e.fromJSON({$class:i.$class,options:{containerId:i.options.containerId,parentContainerId:i.options.parentContainerId,width:i.options.width,height:i.options.height,style:i.options.style,layoutJSON:i.options.layoutJSON,mountedComponentJSON:void 0}},this))&&(this.cells.push(s),i.options.mountedComponentJSON&&n.push({cell:s,mountedComponentJSON:i.options.mountedComponentJSON}));for(var _t303=0,_e260=n.length;_t303<_e260;++_t303)n[_t303].cell.mountComponentFromJSON(n[_t303].mountedComponentJSON);}},{key:\"addCell\",value:function addCell(t,s,i){var n=new e(this,t,s);return r(i)?this.mountCell(n,i):this.cells.push(n),this.layout.board.editMode&&this.layout.board.editMode.setCellEvents(n),n;}},{key:\"destroy\",value:function destroy(){var _t$rows;var t=this.layout,e=_toConsumableArray(this.cells);for(var _t304=0,_s171=e===null||e===void 0?void 0:e.length;_t304<_s171;++_t304)e[_t304]&&e[_t304].destroy();this.layout&&(this.layout.unmountRow(this),_get(_getPrototypeOf(c.prototype),\"destroy\",this).call(this),((_t$rows=t.rows)===null||_t$rows===void 0?void 0:_t$rows.length)===0&&t.destroy());}},{key:\"toJSON\",value:function toJSON(){var t=(this.layout.container||{}).id||\"\",e=[];for(var _t305=0,_s172=this.cells.length;_t305<_s172;++_t305)e.push(this.cells[_t305].toJSON());return{$class:\"Dashboards.Layout.Row\",options:{containerId:this.container.id,parentContainerId:t,cells:e,style:this.options.style}};}},{key:\"getOptions\",value:function getOptions(){var t=[];for(var _e261=0,_s173=this.cells.length;_e261<_s173;++_e261)t.push(this.cells[_e261].getOptions());return{id:this.options.id,style:this.options.style,cells:t};}},{key:\"setSize\",value:function setSize(t){c.setContainerHeight(this.container,t);}},{key:\"getCellIndex\",value:function getCellIndex(t){for(var _e262=0,_s174=(_this$cells=this.cells)===null||_this$cells===void 0?void 0:_this$cells.length;_e262<_s174;++_e262){var _this$cells;if(this.cells[_e262].id===t.id)return _e262;}}},{key:\"mountCell\",value:function mountCell(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var s=this,i=s.cells[e],n=s.cells[e-1];t.container&&(i&&i.container?i.container.parentNode.insertBefore(t.container,i.container):n&&n.container?n.container.parentNode.insertBefore(t.container,n.container.nextSibling):n||i||!s.container||s.container.appendChild(t.container),s.cells.splice(e,0,t),t.row=s,setTimeout(function(){h(s,\"cellChange\",{row:s,cell:t});},0));}},{key:\"unmountCell\",value:function unmountCell(t){var _this101=this;var e=this.getCellIndex(t);r(e)&&this.cells.splice(e,1),setTimeout(function(){h(_this101,\"cellChange\",{row:_this101,cell:t});},0);}},{key:\"getVisibleCells\",value:function getVisibleCells(){var t=[];for(var _e263=0,_s175=this.cells.length;_e263<_s175;++_e263)this.cells[_e263].isVisible&&t.push(this.cells[_e263]);return t;}},{key:\"changeVisibility\",value:function changeVisibility(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;var e=arguments.length>1?arguments[1]:undefined;_get(_getPrototypeOf(c.prototype),\"changeVisibility\",this).call(this,t,e),this.layout.getVisibleRows().length?this.isVisible&&!this.layout.isVisible&&this.layout.show():this.layout.hide();}},{key:\"show\",value:function show(){this.changeVisibility(!0,\"flex\");}},{key:\"setHighlight\",value:function setHighlight(){this.container.classList.toggle(n.classNames.rowContextHighlight);}},{key:\"getRowLevels\",value:function getRowLevels(){var t,e;var i={},n=[];for(var _n89=0,_o107=this.cells.length;_n89<_o107;++_n89)(t=this.cells[_n89]).isVisible&&(i[(e=s.getOffsets(t)).top]||(i[e.top]={top:e.top,bottom:e.bottom,cells:[]}),i[e.top].bottom<e.bottom&&(i[e.top].bottom=e.bottom),i[e.top].cells.push(t));return l(i,function(t){n.push(t);}),n;}},{key:\"getRowLevelInfo\",value:function getRowLevelInfo(t){var e;var s=this.getRowLevels();for(var _i197=0,_n90=s.length;_i197<_n90;++_i197)s[_i197].top<=t&&s[_i197].bottom>t&&(e={index:_i197,rowLevels:s,rowLevel:s[_i197]});return e;}}],[{key:\"fromJSON\",value:function fromJSON(t,e){if(e){var _s176=t.options,_i198=_s176.containerId||\"\";return _i198&&e.copyId&&(_i198=_i198+\"_\"+e.copyId),new c(e,{id:_i198,parentContainerId:e.container&&e.container.id||_s176.parentContainerId,cellsJSON:_s176.cells,style:_s176.style});}}},{key:\"setContainerHeight\",value:function setContainerHeight(t,e){e&&(t.style.height=e+\"px\");}}]);return c;}(s);return c;}),s(e,\"Dashboards/Layout/Layout.js\",[e[\"Dashboards/Utilities.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/Layout/Row.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Dashboards/Globals.js\"]],function(t,e,s,i,n){var o=t.uniqueKey,r=e.pick,a=e.defined;var l=/*#__PURE__*/function(_i199){_inherits(l,_i199);var _super49=_createSuper(l);function l(t,e,s){var _this102;_classCallCheck(this,l);_this102=_super49.call(this),_this102.type=n.guiElementType.layout,_this102.board=t,_this102.rows=[],_this102.options=e,_this102.isVisible=!0;var i=s?s.container:document.getElementById(e.parentContainerId||\"\")||t.layoutsWrapper;s?(_this102.parentCell=s,_this102.level=s.row.layout.level+1):_this102.level=0,e.copyId&&(_this102.copyId=e.copyId);var o=(_this102.options||{}).rowClassName||\"\";_this102.container=_this102.getElementContainer({render:t.guiEnabled,parentContainer:i,attribs:{id:(e.id||\"\")+(_this102.copyId?\"_\"+_this102.copyId:\"\"),className:n.classNames.layout+\" \"+o},elementId:e.id,style:_this102.options.style}),_this102.options.rows&&_this102.setRows(),e.rowsJSON&&!_this102.rows.length&&_this102.setRowsFromJSON(e.rowsJSON);return _this102;}_createClass(l,[{key:\"setRows\",value:function setRows(){var t,e,s;var i=r(this.options.rows,this.container&&this.container.getElementsByClassName(this.options.rowClassName||\"\"))||[];for(e=0,s=i.length;e<s;++e)t=i[e],this.addRow(this.board.guiEnabled?t:{},t instanceof HTMLElement?t:void 0);}},{key:\"setRowsFromJSON\",value:function setRowsFromJSON(t){var e;for(var _i200=0,_n91=t.length;_i200<_n91;++_i200)(e=s.fromJSON(t[_i200],this))&&this.rows.push(e);}},{key:\"addRow\",value:function addRow(t,e,i){var n=new s(this,t,e);return a(i)?this.mountRow(n,i):this.rows.push(n),this.board.editMode&&this.board.editMode.setRowEvents(n),n;}},{key:\"destroy\",value:function destroy(){for(var _t306=this.board.layouts.length-1;_t306>=0;_t306--)this.board.layouts[_t306]===this&&this.board.layouts.splice(_t306,1);this.parentCell&&delete this.parentCell.nestedLayout;for(var _t307=this.rows.length-1;_t307>=0;_t307--)this.rows[_t307].destroy();this.parentCell&&this.parentCell.destroy(),_get(_getPrototypeOf(l.prototype),\"destroy\",this).call(this);}},{key:\"exportLocal\",value:function exportLocal(){localStorage.setItem(n.classNamePrefix+this.options.id,JSON.stringify(this.toJSON()));}},{key:\"getRowIndex\",value:function getRowIndex(t){for(var _e264=0,_s177=this.rows.length;_e264<_s177;++_e264)if(this.rows[_e264]===t)return _e264;}},{key:\"mountRow\",value:function mountRow(t,e){var s=this.rows[e],i=this.rows[e-1];t.container&&(s&&s.container?s.container.parentNode.insertBefore(t.container,s.container):i&&i.container&&i.container.parentNode.insertBefore(t.container,i.container.nextSibling),this.rows.splice(e,0,t),t.layout=this);}},{key:\"unmountRow\",value:function unmountRow(t){var e=this.getRowIndex(t);a(e)&&this.rows.splice(e,1);}},{key:\"getVisibleRows\",value:function getVisibleRows(){var t=[];for(var _e265=0,_s178=this.rows.length;_e265<_s178;++_e265)this.rows[_e265].isVisible&&t.push(this.rows[_e265]);return t;}},{key:\"changeVisibility\",value:function changeVisibility(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:!0;_get(_getPrototypeOf(l.prototype),\"changeVisibility\",this).call(this,t),this.parentCell&&(this.isVisible&&!this.parentCell.isVisible?this.parentCell.show():!this.isVisible&&this.parentCell.isVisible&&this.parentCell.hide());}},{key:\"toJSON\",value:function toJSON(){var t=(this.board.container||{}).id||\"\",e=[];for(var _t308=0,_s179=this.rows.length;_t308<_s179;++_t308)e.push(this.rows[_t308].toJSON());return{$class:\"Dashboards.Layout\",options:{containerId:this.container.id,parentContainerId:t,rows:e,style:this.options.style}};}},{key:\"getOptions\",value:function getOptions(){var t=[];for(var _e266=0,_s180=this.rows.length;_e266<_s180;++_e266)t.push(this.rows[_e266].getOptions());return{id:this.options.id,layoutClassName:this.options.layoutClassName,rowClassName:this.options.rowClassName,cellClassName:this.options.cellClassName,style:this.options.style,rows:t};}}],[{key:\"fromJSON\",value:function fromJSON(t,e,s){var i=t.options,n=document.getElementById(t.options.containerId),r=new l(e,{id:i.containerId,copyId:n?o():\"\",parentContainerId:i.parentContainerId||e.container.id,rowsJSON:i.rows,style:i.style},s);return r&&!s&&e.layouts.push(r),r;}},{key:\"importLocal\",value:function importLocal(t,e){var s;var i=localStorage.getItem(n.classNamePrefix+t);return i&&(s=l.fromJSON(JSON.parse(i),e)),s;}}]);return l;}(i);return l;}),s(e,\"Dashboards/Board.js\",[e[\"Dashboards/Actions/Bindings.js\"],e[\"Dashboards/Components/ComponentRegistry.js\"],e[\"Dashboards/Accessibility/DashboardsAccessibility.js\"],e[\"Data/DataCursor.js\"],e[\"Dashboards/SerializeHelper/DataCursorHelper.js\"],e[\"Data/DataPool.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Layout/Layout.js\"],e[\"Dashboards/Serializable.js\"],e[\"Dashboards/Components/HTMLComponent/HTMLComponent.js\"],e[\"Core/Utilities.js\"]],function(e,s,i,n,o,r,a,l,h,c,d){var u;var p=d.merge,m=d.addEvent,f=d.error,g=d.objectEach,y=d.uniqueKey;var b=/*#__PURE__*/function(){function b(t,e){var _this$options13,_this$options13$gui,_this$options14,_this$options14$editM;_classCallCheck(this,b);this.componentTypes=s.types,this.options=p(b.defaultOptions,e),this.dataPool=new r(e.dataPool),this.id=y(),this.guiEnabled=!!e.gui&&((_this$options13=this.options)===null||_this$options13===void 0?void 0:(_this$options13$gui=_this$options13.gui)===null||_this$options13$gui===void 0?void 0:_this$options13$gui.enabled),this.editModeEnabled=!!e.editMode&&((_this$options14=this.options)===null||_this$options14===void 0?void 0:(_this$options14$editM=_this$options14.editMode)===null||_this$options14$editM===void 0?void 0:_this$options14$editM.enabled),this.layouts=[],this.mountedComponents=[],this.initContainer(t),this.initEditMode(),this.dataCursor=new n(),this.index=a.boards.length,a.boards.push(this),this.a11y=new i(this);}_createClass(b,[{key:\"init\",value:function init(t){var _this103=this;var e=this.options,s=e.components?this.setComponents(e.components):[];return(this.initEvents(),t)?Promise.all(s).then(function(){return _this103;}):this;}},{key:\"initEvents\",value:function initEvents(){var e=this,s=function s(){e.reflow();};if(\"function\"==typeof ResizeObserver)this.resizeObserver=new ResizeObserver(s),this.resizeObserver.observe(e.container);else{var _e267=m(t,\"resize\",s);m(this,\"destroy\",_e267);}}},{key:\"initContainer\",value:function initContainer(e){\"string\"==typeof e&&(e=t.document.getElementById(e)),e||f(13,!0),this.container=e;}},{key:\"initEditMode\",value:function initEditMode(){if(Dashboards.EditMode)this.editMode=new Dashboards.EditMode(this,this.options.editMode);else if(this.editModeEnabled)throw Error(\"Missing layout.js module\");}},{key:\"setComponents\",value:function setComponents(t){var s=[];for(var _i201=0,_n92=t.length;_i201<_n92;++_i201)s.push(e.addComponent(t[_i201],this));return s;}},{key:\"destroy\",value:function destroy(){var _this$resizeObserver,_t$container;var t=this;for(var _e268=0,_s181=(_t$layouts=t.layouts)===null||_t$layouts===void 0?void 0:_t$layouts.length;_e268<_s181;++_e268){var _t$layouts;t.layouts[_e268].destroy();}(_this$resizeObserver=this.resizeObserver)!==null&&_this$resizeObserver!==void 0&&_this$resizeObserver.unobserve(t.container),(_t$container=t.container)!==null&&_t$container!==void 0&&_t$container.remove(),g(t,function(e,s){delete t[s];}),a.boards[this.index]=void 0;}},{key:\"exportLocal\",value:function exportLocal(){localStorage.setItem(a.classNamePrefix+\"1\",JSON.stringify(this.toJSON()));}},{key:\"importLayoutLocal\",value:function importLayoutLocal(t){return l.importLocal(t,this);}},{key:\"reflow\",value:function reflow(){if(this.editMode){var _t309=this.editMode.tools;this.editMode.hideToolbars([\"cell\",\"row\"]),this.editMode.hideContextPointer(),_t309.contextMenu&&_t309.contextMenu.updatePosition(_t309.contextButtonElement);}}},{key:\"fromJSON\",value:function fromJSON(t){var e=t.options,s=new b(e.containerId,{componentOptions:e.componentOptions,dataPool:e.dataPool,layoutsJSON:e.layouts});return s.dataCursor=o.fromJSON(t.dataCursor),s;}},{key:\"toJSON\",value:function toJSON(){var t=[];for(var _e269=0,_s182=this.layouts.length;_e269<_s182;++_e269)t.push(this.layouts[_e269].toJSON());return{$class:\"Board\",dataCursor:o.toJSON(this.dataCursor),options:{containerId:this.container.id,dataPool:this.options.dataPool,guiEnabled:this.guiEnabled,layouts:t,componentOptions:this.options.componentOptions}};}},{key:\"getOptions\",value:function getOptions(){var t=_objectSpread(_objectSpread({},this.options),{},{components:[]});for(var _e270=0,_s183=this.mountedComponents.length;_e270<_s183;++_e270){var _t$components;this.mountedComponents[_e270].cell&&this.mountedComponents[_e270].cell.mountedComponent&&((_t$components=t.components)===null||_t$components===void 0?void 0:_t$components.push(this.mountedComponents[_e270].component.getOptions()));}if(this.guiEnabled){t.gui={layouts:[]};for(var _e271=0,_s184=this.layouts.length;_e271<_s184;++_e271){var _t$gui$layouts;(_t$gui$layouts=t.gui.layouts)===null||_t$gui$layouts===void 0?void 0:_t$gui$layouts.push(this.layouts[_e271].getOptions());}}else delete t.gui;return t;}},{key:\"getComponentById\",value:function getComponentById(t){var _this$mountedComponen4;return(_this$mountedComponen4=this.mountedComponents.find(function(e){return e.component.id===t;}))===null||_this$mountedComponen4===void 0?void 0:_this$mountedComponen4.component;}},{key:\"getComponentByCellId\",value:function getComponentByCellId(t){var _this$mountedComponen5;return(_this$mountedComponen5=this.mountedComponents.find(function(e){return e.cell.id===t;}))===null||_this$mountedComponen5===void 0?void 0:_this$mountedComponen5.component;}}],[{key:\"board\",value:function board(t,e,s){return new b(t,e).init(s);}}]);return b;}();return(u=b||(b={})).defaultOptions={gui:{enabled:!0,layoutOptions:{rowClassName:void 0,cellClassName:void 0},layouts:[]},components:[]},u.importLocal=function(){var t=localStorage.getItem(a.classNamePrefix+\"1\");if(t)try{return h.fromJSON(JSON.parse(t));}catch(t){throw Error(\"\"+t);}},h.registerClassPrototype(\"Board\",b.prototype),s.registerComponent(\"HTML\",c),b;}),s(e,\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridExtremesSync.js\",[],function(){return{defaultOptions:{},syncPair:{emitter:void 0,handler:function handler(){if(\"DataGrid\"!==this.type)return;var t=this,e=this.sync.syncConfig.extremes,s=e.group?\":\"+e.group:\"\",i=t.board,n=function n(e){var s=e.cursor;if(\"position\"===s.type&&t.dataGrid&&\"number\"==typeof(s===null||s===void 0?void 0:s.row)){var _e272=s.row;t.dataGrid.scrollToRow(_e272);}};if(i)return function(_t$connectorHandlers,_t$connectorHandlers$,_t$connectorHandlers$2){var e=i.dataCursor;if(!e)return;var o=(_t$connectorHandlers=t.connectorHandlers)===null||_t$connectorHandlers===void 0?void 0:(_t$connectorHandlers$=_t$connectorHandlers[0])===null||_t$connectorHandlers$===void 0?void 0:(_t$connectorHandlers$2=_t$connectorHandlers$.connector)===null||_t$connectorHandlers$2===void 0?void 0:_t$connectorHandlers$2.table;o&&e.addListener(o.id,\"xAxis.extremes.min\"+s,n);}(),function(){var _t$connectorHandlers2,_t$connectorHandlers3,_t$connectorHandlers4;var e=(_t$connectorHandlers2=t.connectorHandlers)===null||_t$connectorHandlers2===void 0?void 0:(_t$connectorHandlers3=_t$connectorHandlers2[0])===null||_t$connectorHandlers3===void 0?void 0:(_t$connectorHandlers4=_t$connectorHandlers3.connector)===null||_t$connectorHandlers4===void 0?void 0:_t$connectorHandlers4.table,o=i.dataCursor;e&&o.removeListener(e.id,\"xAxis.extremes.min\"+s,n);};}}};}),s(e,\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridHighlightSync.js\",[e[\"Core/Utilities.js\"]],function(t){var e=t.addEvent,s=t.removeEvent;return{defaultOptions:{autoScroll:!1},syncPair:{emitter:function emitter(){var _this104=this;if(\"DataGrid\"!==this.type)return;var t=this.dataGrid,i=this.board,n=this.sync.syncConfig.highlight,o=n.group?\":\"+n.group:\"\";if(!i||!t||!(n!==null&&n!==void 0&&n.enabled))return;var r=i.dataCursor,a=function a(t){var _this104$getFirstConn;var e=(_this104$getFirstConn=_this104.getFirstConnector())===null||_this104$getFirstConn===void 0?void 0:_this104$getFirstConn.table;if(e){var _s185=t.row;r.emitCursor(e,{type:\"position\",row:parseInt(_s185.dataset.rowIndex,10),column:t.columnName,state:\"dataGrid.hoverRow\"+o});}},l=function l(){var _this104$getFirstConn2;var t=(_this104$getFirstConn2=_this104.getFirstConnector())===null||_this104$getFirstConn2===void 0?void 0:_this104$getFirstConn2.table;t&&r.emitCursor(t,{type:\"position\",state:\"dataGrid.hoverOut\"+o});};return e(t.container,\"dataGridHover\",a),e(t.container,\"mouseout\",l),function(){s(t.container,\"dataGridHover\",a),s(t.container,\"mouseout\",l);};},handler:function handler(){var t;if(\"DataGrid\"!==this.type)return;var e=this,s=e.board,i=e.sync.syncConfig.highlight,n=i.group?\":\"+i.group:\"\";if(!(i!==null&&i!==void 0&&i.enabled))return;var o=function o(s){var n=s.cursor;if(\"position\"!==n.type)return;var o=n.row,r=e.dataGrid;void 0!==o&&r&&(i.autoScroll&&r.scrollToRow(o-Math.round(r.rowElements.length/2)+1),t&&clearTimeout(t),t=setTimeout(function(){var t=r.container.querySelector(\".highcharts-datagrid-row[data-row-index=\\\"\".concat(o,\"\\\"]\"));t&&(r.toggleRowHighlight(t),r.hoveredRow=t);},i.autoScroll?10:0));},r=function r(){var t=e.dataGrid;t&&t.toggleRowHighlight(void 0);};if(s)return function(_e$connectorHandlers,_e$connectorHandlers$,_e$connectorHandlers$2){var t=s.dataCursor;if(!t)return;var i=(_e$connectorHandlers=e.connectorHandlers)===null||_e$connectorHandlers===void 0?void 0:(_e$connectorHandlers$=_e$connectorHandlers[0])===null||_e$connectorHandlers$===void 0?void 0:(_e$connectorHandlers$2=_e$connectorHandlers$.connector)===null||_e$connectorHandlers$2===void 0?void 0:_e$connectorHandlers$2.table;i&&(t.addListener(i.id,\"point.mouseOver\"+n,o),t.addListener(i.id,\"point.mouseOut\"+n,r));}(),function(){var _e$connectorHandlers2,_e$connectorHandlers3,_e$connectorHandlers4;var t=s.dataCursor,i=(_e$connectorHandlers2=e.connectorHandlers)===null||_e$connectorHandlers2===void 0?void 0:(_e$connectorHandlers3=_e$connectorHandlers2[0])===null||_e$connectorHandlers3===void 0?void 0:(_e$connectorHandlers4=_e$connectorHandlers3.connector)===null||_e$connectorHandlers4===void 0?void 0:_e$connectorHandlers4.table;i&&(t.removeListener(i.id,\"point.mouseOver\"+n,o),t.removeListener(i.id,\"point.mouseOut\"+n,r));};}}};}),s(e,\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridVisibilitySync.js\",[],function(){return{defaultOptions:{},syncPair:{emitter:void 0,handler:function handler(){if(\"DataGrid\"!==this.type)return;var t=this,e=this.sync.syncConfig.visibility,s=e.group?\":\"+e.group:\"\",i=t.board,n=function n(e){var i=e.cursor,n=t.dataGrid;if(!(n&&\"position\"===i.type&&i.column))return;var o=i.column;n.update({columns:_defineProperty({},o,{show:i.state!==\"series.hide\"+s})});};if(i)return function(_t$connectorHandlers5,_t$connectorHandlers6,_t$connectorHandlers7){var e=i.dataCursor;if(!e)return;var o=(_t$connectorHandlers5=t.connectorHandlers)===null||_t$connectorHandlers5===void 0?void 0:(_t$connectorHandlers6=_t$connectorHandlers5[0])===null||_t$connectorHandlers6===void 0?void 0:(_t$connectorHandlers7=_t$connectorHandlers6.connector)===null||_t$connectorHandlers7===void 0?void 0:_t$connectorHandlers7.table;o&&(e.addListener(o.id,\"series.show\"+s,n),e.addListener(o.id,\"series.hide\"+s,n));}(),function(){var _t$connectorHandlers8,_t$connectorHandlers9,_t$connectorHandlers10;var e=(_t$connectorHandlers8=t.connectorHandlers)===null||_t$connectorHandlers8===void 0?void 0:(_t$connectorHandlers9=_t$connectorHandlers8[0])===null||_t$connectorHandlers9===void 0?void 0:(_t$connectorHandlers10=_t$connectorHandlers9.connector)===null||_t$connectorHandlers10===void 0?void 0:_t$connectorHandlers10.table,o=i.dataCursor;e&&(o.removeListener(e.id,\"series.show\"+s,n),o.removeListener(e.id,\"series.hide\"+s,n));};}}};}),s(e,\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridSyncs.js\",[e[\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridExtremesSync.js\"],e[\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridHighlightSync.js\"],e[\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridVisibilitySync.js\"]],function(t,e,s){return{defaultSyncPairs:{extremes:t.syncPair,highlight:e.syncPair,visibility:s.syncPair},defaultSyncOptions:{extremes:t.defaultOptions,highlight:e.defaultOptions,visibility:s.defaultOptions}};}),s(e,\"Dashboards/Components/DataGridComponent/DataGridComponentDefaults.js\",[e[\"Data/Converters/DataConverter.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.uniqueKey;return{dataGridClassName:\"dataGrid-container\",dataGridID:\"dataGrid-\"+s(),dataGridOptions:{},editableOptions:[{name:\"connectorName\",propertyPath:[\"connector\",\"id\"],type:\"select\"}],onUpdate:function onUpdate(e,s){var i=e.target;if(i){var _e273=i.closest(\".highcharts-datagrid-row\"),n=i.closest(\".highcharts-datagrid-cell\");if(_e273&&_e273 instanceof HTMLElement&&n&&n instanceof HTMLElement){var o=_e273.dataset.rowIndex,r=n.dataset.columnName;if(void 0!==o&&void 0!==r){var _e274=s.table;if(_e274){var _s186=new t().asGuessedType(i.value);_s186 instanceof Date&&(_s186=_s186.toString()),_e274.setCell(r,Number(o),_s186);}}}}}};}),s(e,\"Dashboards/Components/DataGridComponent/DataGridComponent.js\",[e[\"Dashboards/Components/Component.js\"],e[\"Dashboards/Components/DataGridComponent/DataGridSyncs/DataGridSyncs.js\"],e[\"Dashboards/Components/DataGridComponent/DataGridComponentDefaults.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i){var n=i.diffObjects,o=i.merge;var r=/*#__PURE__*/function(_t310){_inherits(r,_t310);var _super50=_createSuper(r);function r(t,e,s){var _this105;_classCallCheck(this,r);_this105=_super50.call(this,t,e=o(r.defaultOptions,e),s),_this105.connectorListeners=[],_this105.options=e,_this105.type=\"DataGrid\",_this105.options.dataGridClassName&&_this105.contentElement.classList.add(_this105.options.dataGridClassName),_this105.options.dataGridID&&(_this105.contentElement.id=_this105.options.dataGridID),_this105.dataGridOptions=_this105.options.dataGridOptions||{},_this105.innerResizeTimeouts=[],_this105.on(\"afterSetConnectors\",function(t){var _t$connectorHandlers11,_t$connectorHandlers12;var e=(_t$connectorHandlers11=t.connectorHandlers)===null||_t$connectorHandlers11===void 0?void 0:(_t$connectorHandlers12=_t$connectorHandlers11[0])===null||_t$connectorHandlers12===void 0?void 0:_t$connectorHandlers12.connector;e&&_this105.disableEditingModifiedColumns(e);});return _this105;}_createClass(r,[{key:\"onTableChanged\",value:function onTableChanged(){var _this$dataGrid;this.dataGrid&&!((_this$dataGrid=this.dataGrid)!==null&&_this$dataGrid!==void 0&&_this$dataGrid.cellInputEl)&&this.dataGrid.update({dataTable:this.filterColumns()});}},{key:\"disableEditingModifiedColumns\",value:function disableEditingModifiedColumns(t){var _this$dataGrid2;var e=this.getColumnOptions(t);(_this$dataGrid2=this.dataGrid)===null||_this$dataGrid2===void 0?void 0:_this$dataGrid2.update({columns:e});}},{key:\"getColumnOptions\",value:function getColumnOptions(t){var e=t.options.dataModifier;if(!e||\"Math\"!==e.type)return{};var s=e.columnFormulas;if(!s)return{};var i={};for(var _t311=0,_e275=s.length;_t311<_e275;++_t311)i[s[_t311].column]={editable:!1};return i;}},{key:\"load\",value:function(){var _load3=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee10(){var _this106=this;var t,_e276;return regeneratorRuntime.wrap(function _callee10$(_context10){while(1)switch(_context10.prev=_context10.next){case 0:this.emit({type:\"load\"});_context10.next=3;return _get(_getPrototypeOf(r.prototype),\"load\",this).call(this);case 3:t=this.getFirstConnector();if(t&&!this.connectorListeners.length){_e276=this.connectorListeners;_e276.push(t.on(\"afterLoad\",function(e){e.table&&t&&t.table.setColumns(e.table.getColumns());})),_e276.push(t.table.on(\"afterSetCell\",function(t){var e=_this106.dataGrid,s=!0;if(e){var _i202=e.rowElements[t.rowIndex],_n93=[];_i202&&(_n93=Array.prototype.slice.call(_i202.childNodes)),_n93.forEach(function(e){if(e.childElementCount>0){var _i203=e.childNodes[0],_n94=\"string\"==typeof t.cellValue?_i203.value:+_i203.value;e.dataset.columnName===t.columnName&&_n94===t.cellValue&&(s=!1);}});}s&&_this106.update({});}));}return _context10.abrupt(\"return\",(this.emit({type:\"afterLoad\"}),this));case 6:case\"end\":return _context10.stop();}},_callee10,this);}));function load(){return _load3.apply(this,arguments);}return load;}()},{key:\"render\",value:function render(){_get(_getPrototypeOf(r.prototype),\"render\",this).call(this),this.dataGrid||(this.dataGrid=this.constructDataGrid());var t=this.getFirstConnector();return t&&this.dataGrid&&this.dataGrid.dataTable.modified!==t.table.modified&&this.dataGrid.update({dataTable:this.filterColumns()}),this.sync.start(),this.emit({type:\"afterRender\"}),this.setupConnectorUpdate(),this;}},{key:\"resize\",value:function resize(t,e){this.dataGrid&&_get(_getPrototypeOf(r.prototype),\"resize\",this).call(this,t,e);}},{key:\"update\",value:function(){var _update3=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee11(t){var _this$connectorHandle3;var e,_t312,_e277,_s187;return regeneratorRuntime.wrap(function _callee11$(_context11){while(1)switch(_context11.prev=_context11.next){case 0:e=Array.isArray(t.connector)?t.connector[0]:t.connector;if(this.connectorHandlers[0]&&(e===null||e===void 0?void 0:e.id)!==((_this$connectorHandle3=this.connectorHandlers[0])===null||_this$connectorHandle3===void 0?void 0:_this$connectorHandle3.connectorId)){_t312=this.connectorListeners;for(_e277=0,_s187=_t312.length;_e277<_s187;++_e277)_t312[_e277]();_t312.length=0;}_context11.next=4;return _get(_getPrototypeOf(r.prototype),\"update\",this).call(this,t);case 4:this.dataGrid&&this.dataGrid.update(this.options.dataGridOptions||{});this.emit({type:\"afterUpdate\"});case 6:case\"end\":return _context11.stop();}},_callee11,this);}));function update(_x16){return _update3.apply(this,arguments);}return update;}()},{key:\"constructDataGrid\",value:function constructDataGrid(){if(r.DataGridNamespace){var _this$options$dataGri,_this$options$dataGri2;var _t313=r.DataGridNamespace.DataGrid,_e278=this.getFirstConnector(),_s188=_e278?this.getColumnOptions(_e278):{};return this.dataGrid=new _t313(this.contentElement,_objectSpread(_objectSpread({},this.options.dataGridOptions),{},{dataTable:((_this$options$dataGri=this.options.dataGridOptions)===null||_this$options$dataGri===void 0?void 0:_this$options$dataGri.dataTable)||this.filterColumns(),columns:o(_s188,(_this$options$dataGri2=this.options.dataGridOptions)===null||_this$options$dataGri2===void 0?void 0:_this$options$dataGri2.columns)})),this.dataGrid;}throw Error(\"DataGrid not connected.\");}},{key:\"setupConnectorUpdate\",value:function setupConnectorUpdate(){var _this107=this;var t=this.dataGrid,e=this.getFirstConnector();e&&t&&t.on(\"cellClick\",function(t){\"input\"in t&&t.input.addEventListener(\"keyup\",function(t){return _this107.options.onUpdate(t,e);});});}},{key:\"filterColumns\",value:function filterColumns(){var _this$getFirstConnect;var t=(_this$getFirstConnect=this.getFirstConnector())===null||_this$getFirstConnect===void 0?void 0:_this$getFirstConnect.table.modified,e=this.options.visibleColumns;if(t){if(!(e!==null&&e!==void 0&&e.length))return t;var _s189=t.getColumnNames().filter(function(t){return(e===null||e===void 0?void 0:e.length)>0&&!e.includes(t);}),_i204=t.clone();return _i204.deleteColumns(_s189),_i204;}}},{key:\"getOptionsOnDrop\",value:function getOptionsOnDrop(t){var e=t.editMode.board.dataPool.getConnectorIds(),s={cell:\"\",type:\"DataGrid\"};return e.length&&(s=_objectSpread(_objectSpread({},s),{},{connector:{id:e[0]}})),s;}},{key:\"toJSON\",value:function toJSON(){var t=JSON.stringify(this.options.dataGridOptions),e=_get(_getPrototypeOf(r.prototype),\"toJSON\",this).call(this),s=_objectSpread(_objectSpread({},e),{},{options:_objectSpread(_objectSpread({},e.options),{},{dataGridOptions:t})});return this.emit({type:\"toJSON\",json:s}),s;}},{key:\"getOptions\",value:function getOptions(){return _objectSpread(_objectSpread({},n(this.options,r.defaultOptions)),{},{type:\"DataGrid\"});}},{key:\"destroy\",value:function destroy(){var _this$dataGrid3;(_this$dataGrid3=this.dataGrid)!==null&&_this$dataGrid3!==void 0&&_this$dataGrid3.containerResizeObserver.disconnect(),_get(_getPrototypeOf(r.prototype),\"destroy\",this).call(this);}}],[{key:\"fromJSON\",value:function fromJSON(t,e){var s=new r(e,o(t.options,{dataGridOptions:JSON.parse(t.options.dataGridOptions||\"\")}));return s.emit({type:\"fromJSON\",json:t}),s;}}]);return r;}(t);return r.predefinedSyncConfig=e,r.defaultOptions=o(t.defaultOptions,s),r;}),s(e,\"Dashboards/Plugins/DataGridPlugin.js\",[e[\"Dashboards/Components/DataGridComponent/DataGridComponent.js\"]],function(t){return{custom:{connectDataGrid:function connectDataGrid(e){t.DataGridNamespace=e;}},name:\"DataGrid.DashboardsPlugin\",onRegister:function onRegister(e){var s=e.ComponentRegistry;s.registerComponent(\"DataGrid\",t);},onUnregister:function onUnregister(t){}};}),s(e,\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsExtremesSync.js\",[e[\"Core/Utilities.js\"]],function(t){var e=t.addEvent,s=t.isString;return{defaultOptions:{},syncPair:{emitter:function emitter(){var _t$connectorHandlers13,_t$connectorHandlers14;if(\"Highcharts\"!==this.type)return;var t=this,i=[],n=t.chart,o=t.board,r=(_t$connectorHandlers13=t.connectorHandlers)===null||_t$connectorHandlers13===void 0?void 0:(_t$connectorHandlers14=_t$connectorHandlers13[0])===null||_t$connectorHandlers14===void 0?void 0:_t$connectorHandlers14.connector,a=r&&r.table,l=this.sync.syncConfig.extremes,h=l.group?\":\"+l.group:\"\",c=o.dataCursor;if(a&&n){var _o108=function _o108(e){var i=!!e.resetSelection;if((!e.trigger||e.trigger&&\"dashboards-sync\"!==e.trigger)&&!i){var _i205=e.target,_o109=Object.keys(t.seriesFromConnector),_r64=_o109.length>0?n.get(_o109[0]):_i205.series[0];if(_r64){var _n95=_r64.points.filter(function(t){return t.isInside||!1;}),_l27={type:\"position\",state:\"\".concat(_i205.coll,\".extremes.min\").concat(h)},_d15={type:\"position\",state:\"\".concat(_i205.coll,\".extremes.max\").concat(h)};if(_o109.length>0&&\"xAxis\"===_i205.coll&&_n95.length){var _t$connectorHandlers$3,_r64$options$id;var _e279;var _o110=((_t$connectorHandlers$3=t.connectorHandlers[0])===null||_t$connectorHandlers$3===void 0?void 0:_t$connectorHandlers$3.options).columnAssignment;if(_o110){var _t314=_o110.find(function(t){return t.seriesId===_r64.options.id;});if(_t314){var _i206=_t314.data;_e279=s(_i206)?_i206:Array.isArray(_i206)?_i206[_i206.length-1]:_i206.y;}}_e279||(_e279=_i205.dateTime&&(a.hasColumns([\"x\"])?\"x\":(_r64$options$id=_r64.options.id)!==null&&_r64$options$id!==void 0?_r64$options$id:_r64.name)),_l27.row=_n95[0].index,_l27.column=_e279,_d15.row=_n95[_n95.length-1].index,_d15.column=_e279;}c.emitCursor(a,_l27,e,!0).emitCursor(a,_d15,e,!0);}}},_r63=function _r63(){return n.axes.map(function(t){return e(t,\"afterSetExtremes\",_o108);});},_l26=_r63(),d=function d(){_l26.forEach(function(t){t();}),_l26=[];};i.push(e(n,\"selection\",function(t){var _l28;t.resetSelection&&(d(),c.emitCursor(a,{type:\"position\",state:\"chart.zoomOut\"+h},t),(_l28=_l26).push.apply(_l28,_toConsumableArray(_r63())));})),i.push(function(){c.remitCursor(a.id,{type:\"position\",state:\"xAxis.extremes.min\"+h}),c.remitCursor(a.id,{type:\"position\",state:\"xAxis.extremes.max\"+h}),d();});}return function(){i.forEach(function(t){t();});};},handler:function handler(){var _i$zooming;if(\"Highcharts\"!==this.type)return;var t=this,e=this.sync.syncConfig.extremes,s=e.group?\":\"+e.group:\"\",i=t.chart,n=t.board;if(i&&n&&(_i$zooming=i.zooming)!==null&&_i$zooming!==void 0&&_i$zooming.type){var _e280=i.zooming.type.split(\"\").map(function(t){return t+\"Axis\";}),o=[];return _e280.forEach(function(e){var r=function r(t){var s=t.cursor,n=t.event;if(\"position\"===s.type){var _t315=n===null||n===void 0?void 0:n.target;if(_t315&&i){var _s190=i[e],_n96=!1;_s190.forEach(function(e){_t315.coll===e.coll&&_t315!==e&&null!==_t315.min&&null!==_t315.max&&(e.max!==_t315.max||e.min!==_t315.min)&&(e.setExtremes(_t315.min,_t315.max,!1,void 0,{trigger:\"dashboards-sync\"}),_n96=!0);}),_n96&&!i.resetZoomButton&&i.showResetZoom(),i.redraw();}}};n&&function(_t$connectorHandlers15,_t$connectorHandlers16){var a=n.dataCursor,l=(_t$connectorHandlers15=t.connectorHandlers)===null||_t$connectorHandlers15===void 0?void 0:(_t$connectorHandlers16=_t$connectorHandlers15[0])===null||_t$connectorHandlers16===void 0?void 0:_t$connectorHandlers16.connector;if(l){var _n97=l.table;a.addListener(_n97.id,\"\".concat(e,\".extremes.min\").concat(s),r),a.addListener(_n97.id,\"\".concat(e,\".extremes.max\").concat(s),r);var h=function h(){i.zoomOut(),setTimeout(function(){t.element.querySelectorAll(\".highcharts-reset-zoom\").forEach(function(t){t.remove();});});};a.addListener(_n97.id,\"chart.zoomOut\",h),o.push(function(){a.removeListener(_n97.id,\"\".concat(e,\".extremes.min\").concat(s),r),a.removeListener(_n97.id,\"\".concat(e,\".extremes.max\").concat(s),r),a.removeListener(_n97.id,\"chart.zoomOut\"+s,h);});}}();}),function(){o.forEach(function(t){t();});};}}}};}),s(e,\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsHighlightSync.js\",[e[\"Dashboards/Utilities.js\"]],function(t){var e=t.error;function s(t,e){var s=e.ranges;if(s){var _e281=s.reduce(function(t,e){return e.minValue>t.minValue&&(t=e),t;},s[0]),i=t.getRowIndexBy(_e281.column,_e281.minValue);if(i)return i;}return 0;}return{defaultOptions:{affectedSeriesId:null,highlightPoint:!0,showTooltip:!0,showCrosshair:!0},syncPair:{emitter:function emitter(){var _this108=this;if(\"Highcharts\"!==this.type)return;var t=this.chart,e=this.board,i=this.sync.syncConfig.highlight,n=i.group?\":\"+i.group:\"\";if(!i.enabled||!t)return;var o=e.dataCursor;var _loop6=function _loop6(){var _r$options$id,_l$connector,_l$columnAssignment;var i;var r=t.series[_e282],a=(_r$options$id=r.options.id)!==null&&_r$options$id!==void 0?_r$options$id:\"\",l=_this108.seriesFromConnector[a],h=l===null||l===void 0?void 0:(_l$connector=l.connector)===null||_l$connector===void 0?void 0:_l$connector.table;if(!h)return 1;// continue\nvar c=(_l$columnAssignment=l.columnAssignment)===null||_l$columnAssignment===void 0?void 0:_l$columnAssignment.find(function(t){return t.seriesId===a;});if(c){var _t316$y;var _t316=c.data;i=\"string\"==typeof _t316?_t316:Array.isArray(_t316)?_t316[1]:(_t316$y=_t316.y)!==null&&_t316$y!==void 0?_t316$y:_t316.value;}i||(i=r.name),r.update({point:{events:{mouseOver:function mouseOver(){var t=0,e=h.getModifier();(e===null||e===void 0?void 0:e.options.type)===\"Range\"&&(t=s(h,e.options)),o.emitCursor(h,{type:\"position\",row:t+this.index,column:i,state:\"point.mouseOver\"+n});},mouseOut:function mouseOut(){var t=0,e=h.getModifier();(e===null||e===void 0?void 0:e.options.type)===\"Range\"&&(t=s(h,e.options)),o.emitCursor(h,{type:\"position\",row:t+this.index,column:i,state:\"point.mouseOut\"+n});}}}},!1);};for(var _e282=0,_i207=(_t$series$length=(_t$series2=t.series)===null||_t$series2===void 0?void 0:_t$series2.length)!==null&&_t$series$length!==void 0?_t$series$length:0;_e282<_i207;++_e282){var _t$series$length,_t$series2;if(_loop6())continue;}return t.redraw(),function(){t&&t.series&&(t.series.forEach(function(t){t.update({point:{events:{mouseOver:void 0,mouseOut:void 0}}},!1);}),t.redraw());};},handler:function handler(){var _this109=this;if(\"Highcharts\"!==this.type)return;var t=this,i=this.sync.syncConfig.highlight.group?\":\"+this.sync.syncConfig.highlight.group:\"\",n=t.chart,o=t.board,r=function r(i){var _n$series2;var o=i.table,r=i.cursor,a=_this109.sync.syncConfig.highlight,l=o.getModifier(),h=0;if(l&&\"Range\"===l.options.type&&(h=s(o,l.options)),n&&(_n$series2=n.series)!==null&&_n$series2!==void 0&&_n$series2.length&&\"position\"===r.type){var _s192;var _s191;var _i208=a.affectedSeriesId;if(a.affectedSeriesId){var _t317=n.get(a.affectedSeriesId);_t317!==null&&_t317!==void 0&&_t317.points?_s191=_t317:e(\"No series with ID '\"+_i208+\"' found in the chart. Affected series will be selected according to the column assignment.\");}if(!_s191){var _e283=Object.keys(t.seriesFromConnector);var _loop7=function _loop7(){var _l$connector2,_h$find;var a=_e283[_i209],l=t.seriesFromConnector[a];if((l===null||l===void 0?void 0:(_l$connector2=l.connector)===null||_l$connector2===void 0?void 0:_l$connector2.table)!==o)return 0;// continue\nvar h=l.columnAssignment;if(_s191=n.get(a),!h)return 1;// break\nvar _ref27=(_h$find=h.find(function(t){return t.seriesId===a;}))!==null&&_h$find!==void 0?_h$find:{},c=_ref27.data;if(!c||!r.column)return 1;// break\nif(\"string\"==typeof c){if(c===r.column)return 1;// break\n}else if(Array.isArray(c)){if(c.includes(r.column))return 1;// break\n}else if(Object.keys(c).map(function(t){return c[t];}).includes(r.column))return 1;// break\n},_ret2;for(var _i209=0,_a44=_e283.length;_i209<_a44;++_i209){_ret2=_loop7();if(_ret2===0)continue;if(_ret2===1)break;}}if((_s192=_s191)!==null&&_s192!==void 0&&_s192.visible&&void 0!==r.row){var _t318=_s191.data[r.row-h];if(_t318!==null&&_t318!==void 0&&_t318.visible)return _t318;}}},a=function a(t){var _s$series$xAxis,_s$series$yAxis;var e=_this109.sync.syncConfig.highlight;if(!e.enabled)return;var s=r(t);if(!s||!n||!s.isInside&&s.series.isCartesian||s===n.hoverPoint)return;var i=n.tooltip;if(i&&e.showTooltip){var _n$pointer;var _t319=i.shared,_e284=n.hoverPoint,_o111=(_e284===null||_e284===void 0?void 0:_e284.series)||n.hoverSeries,_r65=(_n$pointer=n.pointer)===null||_n$pointer===void 0?void 0:_n$pointer.getHoverData(s,_o111,n.series,!0,!0);n.tooltip&&(_r65===null||_r65===void 0?void 0:_r65.hoverPoints.length)&&i.refresh(_t319?_r65.hoverPoints:s);}e.highlightPoint&&(!(i!==null&&i!==void 0&&i.shared)&&e.showTooltip||!e.showTooltip)&&s.setState(\"hover\"),e.showCrosshair&&((_s$series$xAxis=s.series.xAxis)!==null&&_s$series$xAxis!==void 0&&_s$series$xAxis.drawCrosshair(void 0,s),(_s$series$yAxis=s.series.yAxis)===null||_s$series$yAxis===void 0?void 0:_s$series$yAxis.drawCrosshair(void 0,s));},l=function l(t){var e=_this109.sync.syncConfig.highlight;if(!n||!n.series.length||!e.enabled)return;var s=r(t);if(s&&(!s.isInside&&s.series.isCartesian||s===n.hoverPoint))return;var i=!1,o=function o(){var t=n.series.length;for(var _e285=0;_e285<t;_e285++){var _t320=n.series[_e285].points,_s193=_t320.length;for(var _e286=0;_e286<_s193;_e286++)_t320[_e286].setState();}},a=n.tooltip;if(a&&e.showTooltip&&(a.hide(),a.shared&&(o(),i=!0)),e.highlightPoint&&!i&&(s?s.setState():o()),e.showCrosshair){var _s$series$xAxis2,_s$series$yAxis2;if(s)(_s$series$xAxis2=s.series.xAxis)!==null&&_s$series$xAxis2!==void 0&&_s$series$xAxis2.drawCrosshair(),(_s$series$yAxis2=s.series.yAxis)===null||_s$series$yAxis2===void 0?void 0:_s$series$yAxis2.drawCrosshair();else{var _t321=n.xAxis,_e287=n.yAxis;for(var _e288=0,_s194=_t321.length;_e288<_s194;_e288++)_t321[_e288].drawCrosshair();for(var _t322=0,_s195=_e287.length;_t322<_s195;_t322++)_e287[_t322].drawCrosshair();}}};if(o)return function(){var t=o.dataCursor,e=_this109.connectorHandlers;if(t)for(var _s196=0,_n98=e.length;_s196<_n98;++_s196){var _e$_s,_e$_s$connector;var _n99=(_e$_s=e[_s196])===null||_e$_s===void 0?void 0:(_e$_s$connector=_e$_s.connector)===null||_e$_s$connector===void 0?void 0:_e$_s$connector.table;_n99&&(t.addListener(_n99.id,\"point.mouseOver\"+i,a),t.addListener(_n99.id,\"dataGrid.hoverRow\"+i,a),t.addListener(_n99.id,\"point.mouseOut\"+i,l),t.addListener(_n99.id,\"dataGrid.hoverOut\"+i,l));}}(),function(){var t=o.dataCursor,e=_this109.connectorHandlers;if(t)for(var _s197=0,_n100=e.length;_s197<_n100;++_s197){var _e$_s2,_e$_s2$connector;var _n101=(_e$_s2=e[_s197])===null||_e$_s2===void 0?void 0:(_e$_s2$connector=_e$_s2.connector)===null||_e$_s2$connector===void 0?void 0:_e$_s2$connector.table;_n101&&(t.removeListener(_n101.id,\"point.mouseOver\"+i,a),t.removeListener(_n101.id,\"dataGrid.hoverRow\"+i,a),t.removeListener(_n101.id,\"point.mouseOut\"+i,l),t.removeListener(_n101.id,\"dataGrid.hoverOut\"+i,l));}};}}};}),s(e,\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsVisibilitySync.js\",[],function(){return{defaultOptions:{},syncPair:{emitter:function emitter(){if(\"Highcharts\"!==this.type)return;var t=this.sync.syncConfig.visibility,e=t.group?\":\"+t.group:\"\",s=this.chart,i=this.board,n=this.getFirstConnector();if(!i||!s)return;var o=n===null||n===void 0?void 0:n.table;if(o){var _t323=i.dataCursor,_n102=s.series;_n102.forEach(function(s){s.update({events:{show:function show(){_t323.emitCursor(o,{type:\"position\",state:\"series.show\"+e,column:this.name});},hide:function hide(){_t323.emitCursor(o,{type:\"position\",state:\"series.hide\"+e,column:this.name});}}},!1);}),s.redraw();}return function(){var _s$series2;s&&((_s$series2=s.series)===null||_s$series2===void 0?void 0:_s$series2.length)&&(s.series.forEach(function(t){t.update({events:{show:void 0,hide:void 0}},!1);}),s.redraw());};},handler:function handler(){if(\"Highcharts\"!==this.type)return;var t=this,e=this.sync.syncConfig.visibility,s=e.group?\":\"+e.group:\"\",i=t.board,n=function n(t,e){var _iteratorNormalCompletion47=true;var _didIteratorError47=false;var _iteratorError47=undefined;try{for(var _iterator47=t[Symbol.iterator](),_step47;!(_iteratorNormalCompletion47=(_step47=_iterator47.next()).done);_iteratorNormalCompletion47=true){var _s198=_step47.value;if(_s198.name===e)return _s198;}}catch(err){_didIteratorError47=true;_iteratorError47=err;}finally{try{if(!_iteratorNormalCompletion47&&_iterator47[\"return\"]!=null){_iterator47[\"return\"]();}}finally{if(_didIteratorError47){throw _iteratorError47;}}}},o=function o(e){var _s$series3;var s=t.chart;if(s&&(_s$series3=s.series)!==null&&_s$series3!==void 0&&_s$series3.length&&\"position\"===e.cursor.type&&void 0!==e.cursor.column){var _t324=n(s.series,e.cursor.column);_t324&&_t324.setVisible(!0,!0);}},r=function r(e){var _s$series4;var s=t.chart;if(s&&(_s$series4=s.series)!==null&&_s$series4!==void 0&&_s$series4.length&&\"position\"===e.cursor.type&&void 0!==e.cursor.column){var _t325=n(s.series,e.cursor.column);_t325&&_t325.setVisible(!1,!0);}};if(i)return function(_t$connectorHandlers17,_t$connectorHandlers18,_t$connectorHandlers19){var e=i.dataCursor;if(!e)return;var n=(_t$connectorHandlers17=t.connectorHandlers)===null||_t$connectorHandlers17===void 0?void 0:(_t$connectorHandlers18=_t$connectorHandlers17[0])===null||_t$connectorHandlers18===void 0?void 0:(_t$connectorHandlers19=_t$connectorHandlers18.connector)===null||_t$connectorHandlers19===void 0?void 0:_t$connectorHandlers19.table;n&&(e.addListener(n.id,\"series.show\"+s,o),e.addListener(n.id,\"series.hide\"+s,r));}(),function(){var _t$connectorHandlers20,_t$connectorHandlers21,_t$connectorHandlers22;var e=(_t$connectorHandlers20=t.connectorHandlers)===null||_t$connectorHandlers20===void 0?void 0:(_t$connectorHandlers21=_t$connectorHandlers20[0])===null||_t$connectorHandlers21===void 0?void 0:(_t$connectorHandlers22=_t$connectorHandlers21.connector)===null||_t$connectorHandlers22===void 0?void 0:_t$connectorHandlers22.table;e&&(i.dataCursor.removeListener(e.id,\"series.show\"+s,o),i.dataCursor.removeListener(e.id,\"series.hide\"+s,r));};}}};}),s(e,\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsSyncs.js\",[e[\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsExtremesSync.js\"],e[\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsHighlightSync.js\"],e[\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsVisibilitySync.js\"]],function(t,e,s){return{defaultSyncPairs:{extremes:t.syncPair,highlight:e.syncPair,visibility:s.syncPair},defaultSyncOptions:{extremes:t.defaultOptions,highlight:e.defaultOptions,visibility:s.defaultOptions}};}),s(e,\"Dashboards/Components/HighchartsComponent/HighchartsComponentDefaults.js\",[e[\"Dashboards/Components/Component.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge,i=e.uniqueKey;return{allowConnectorUpdate:!0,className:[t.defaultOptions.className,\"\".concat(t.defaultOptions.className,\"-highcharts\")].join(\" \"),chartClassName:\"chart-container\",chartID:\"chart-\"+i(),chartOptions:{chart:{styledMode:!0},series:[]},chartConstructor:\"chart\",editableOptions:[{name:\"connectorName\",propertyPath:[\"connector\",\"id\"],type:\"select\"}].concat(_toConsumableArray(t.defaultOptions.editableOptions||[]),[{name:\"chartOptions\",type:\"nested\",nestedOptions:[{name:\"chart\",options:[{name:\"title\",propertyPath:[\"chartOptions\",\"title\",\"text\"],type:\"input\"},{name:\"subtitle\",propertyPath:[\"chartOptions\",\"subtitle\",\"text\"],type:\"input\"},{name:\"type\",propertyPath:[\"chartOptions\",\"chart\",\"type\"],type:\"select\",selectOptions:[{name:\"column\",iconURL:\"series-types/icon-column.svg\"},{name:\"line\",iconURL:\"series-types/icon-line.svg\"},{name:\"scatter\",iconURL:\"series-types/icon-scatter.svg\"},{name:\"pie\",iconURL:\"series-types/icon-pie.svg\"}]}]},{name:\"xAxis\",options:[{name:\"title\",propertyPath:[\"chartOptions\",\"xAxis\",\"title\",\"text\"],type:\"input\"},{name:\"type\",propertyPath:[\"chartOptions\",\"xAxis\",\"type\"],type:\"select\",selectOptions:[{name:\"linear\"},{name:\"datetime\"},{name:\"logarithmic\"}]}]},{name:\"yAxis\",options:[{name:\"title\",propertyPath:[\"chartOptions\",\"yAxis\",\"title\",\"text\"],type:\"input\"},{name:\"type\",propertyPath:[\"chartOptions\",\"yAxis\",\"type\"],type:\"select\",selectOptions:[{name:\"linear\"},{name:\"datetime\"},{name:\"logarithmic\"}]}]},{name:\"legend\",showToggle:!0,propertyPath:[\"chartOptions\",\"legend\",\"enabled\"],options:[{name:\"align\",propertyPath:[\"chartOptions\",\"legend\",\"align\"],type:\"select\",selectOptions:[{name:\"left\"},{name:\"center\"},{name:\"right\"}]}]},{name:\"tooltip\",showToggle:!0,propertyPath:[\"chartOptions\",\"tooltip\",\"enabled\"],options:[{name:\"split\",propertyPath:[\"chartOptions\",\"tooltip\",\"split\"],type:\"toggle\"}]},{name:\"dataLabels\",propertyPath:[\"chartOptions\",\"plotOptions\",\"series\",\"dataLabels\",\"enabled\"],showToggle:!0,options:[{name:\"align\",propertyPath:[\"chartOptions\",\"plotOptions\",\"series\",\"dataLabels\",\"align\"],type:\"select\",selectOptions:[{name:\"left\"},{name:\"center\"},{name:\"right\"}]}]},{name:\"credits\",showToggle:!0,propertyPath:[\"chartOptions\",\"credits\",\"enabled\"],options:[{name:\"name\",propertyPath:[\"chartOptions\",\"credits\",\"text\"],type:\"input\"},{name:\"url\",propertyPath:[\"chartOptions\",\"credits\",\"href\"],type:\"input\"}]}]},{name:\"chartConfig\",propertyPath:[\"chartOptions\"],type:\"textarea\"},{name:\"chartClassName\",propertyPath:[\"chartClassName\"],type:\"input\"},{name:\"chartID\",propertyPath:[\"chartID\"],type:\"input\"}]),editableOptionsBindings:s(t.defaultOptions.editableOptionsBindings,{skipRedraw:[\"chartOptions\",\"chartConfig\"]})};}),s(e,\"Dashboards/Components/HighchartsComponent/HighchartsComponent.js\",[e[\"Dashboards/Components/Component.js\"],e[\"Data/Converters/DataConverter.js\"],e[\"Data/DataTable.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Components/HighchartsComponent/HighchartsSyncs/HighchartsSyncs.js\"],e[\"Dashboards/Components/HighchartsComponent/HighchartsComponentDefaults.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,n,o,r){var a=r.createElement,l=r.diffObjects,h=r.isString,c=r.merge,d=r.splat;var u=/*#__PURE__*/function(_t326){_inherits(u,_t326);var _super51=_createSuper(u);function u(t,e,s){var _this110;_classCallCheck(this,u);var _iteratorNormalCompletion48=true;var _didIteratorError48=false;var _iteratorError48=undefined;try{var _loop8=function _loop8(){var i=_step48.value;var t=i.connector;t&&t.on(\"afterLoad\",function(e){e.table&&t.table.setColumns(e.table.getColumns());});};for(var _iterator48=(_this110=_super51.call(this,t,e=c(u.defaultOptions,e),s),_this110.seriesFromConnector={},_this110.options=e,_this110.chartConstructor=_this110.options.chartConstructor||\"chart\",_this110.type=\"Highcharts\",_this110.chartContainer=a(\"figure\",void 0,void 0,_this110.contentElement,!0),_this110.setOptions(),_this110.chartOptions=c(_this110.options.chartOptions||{chart:{}},{tooltip:{}}),_this110.connectorHandlers)[Symbol.iterator](),_step48;!(_iteratorNormalCompletion48=(_step48=_iterator48.next()).done);_iteratorNormalCompletion48=true){_loop8();}}catch(err){_didIteratorError48=true;_iteratorError48=err;}finally{try{if(!_iteratorNormalCompletion48&&_iterator48[\"return\"]!=null){_iterator48[\"return\"]();}}finally{if(_didIteratorError48){throw _iteratorError48;}}}_this110.innerResizeTimeouts=[];return _possibleConstructorReturn(_this110);}_createClass(u,[{key:\"onTableChanged\",value:function onTableChanged(){this.updateSeries();}},{key:\"load\",value:function(){var _load4=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee12(){return regeneratorRuntime.wrap(function _callee12$(_context12){while(1)switch(_context12.prev=_context12.next){case 0:this.emit({type:\"load\"});_context12.next=3;return _get(_getPrototypeOf(u.prototype),\"load\",this).call(this);case 3:this.emit({type:\"afterLoad\"});return _context12.abrupt(\"return\",this);case 5:case\"end\":return _context12.stop();}},_callee12,this);}));function load(){return _load4.apply(this,arguments);}return load;}()},{key:\"render\",value:function render(){return _get(_getPrototypeOf(u.prototype),\"render\",this).call(this),this.chart=this.getChart(),this.updateSeries(),this.emit({type:\"afterRender\"}),this.setupConnectorUpdate(),this.sync.start(),this;}},{key:\"resize\",value:function resize(t,e){var _this111=this;for(_get(_getPrototypeOf(u.prototype),\"resize\",this).call(this,t,e);this.innerResizeTimeouts.length;){var _t327=this.innerResizeTimeouts.pop();_t327&&clearTimeout(_t327);}return this.innerResizeTimeouts.push(setTimeout(function(){if(_this111.chart&&_this111.chart.container){var _this111$chart;var _t328=_this111.contentElement.offsetHeight-((_this111$chart=_this111.chart)===null||_this111$chart===void 0?void 0:_this111$chart.container.offsetHeight);_this111.chart.setSize(null,Math.abs(_t328)>1?_this111.contentElement.offsetHeight:null,!1);}},33)),this;}},{key:\"setupConnectorUpdate\",value:function setupConnectorUpdate(){var _this112=this;var t=this.connectorHandlers,e=this.chart;if(!e||!this.options.allowConnectorUpdate)return;var s=e.series.length;var _loop9=function _loop9(){var n=t[_i210];for(var _t329=0;_t329<s;_t329++)e.series[_t329].update({point:{events:{update:function update(t){_this112.onChartUpdate(t.target,n);}}}},!1);};for(var _i210=0,_n103=t.length;_i210<_n103;_i210++){_loop9();}}},{key:\"onChartUpdate\",value:function onChartUpdate(t,s){var _s$connector;var i;var n=(_s$connector=s.connector)===null||_s$connector===void 0?void 0:_s$connector.table,o=s.columnAssignment,r=t.series.options.id,a=new e().asNumber(t.y);if(n){if(o&&r){var _o$find,_t330$y;var _t330=(_o$find=o.find(function(t){return t.seriesId===r;}))===null||_o$find===void 0?void 0:_o$find.data;h(_t330)?i=_t330:Array.isArray(_t330)?i=_t330[1]:_t330&&(i=(_t330$y=_t330.y)!==null&&_t330$y!==void 0?_t330$y:_t330.value);}i||(i=r!==null&&r!==void 0?r:t.series.name),n.setCell(i,t.index,a);}}},{key:\"setOptions\",value:function setOptions(){this.options.chartClassName&&this.chartContainer.classList.add(this.options.chartClassName),this.options.chartID&&(this.chartContainer.id=this.options.chartID);}},{key:\"update\",value:function(){var _update4=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee13(t){var e,_args13=arguments;return regeneratorRuntime.wrap(function _callee13$(_context13){while(1)switch(_context13.prev=_context13.next){case 0:e=_args13.length>1&&_args13[1]!==undefined?_args13[1]:!0;_context13.next=3;return _get(_getPrototypeOf(u.prototype),\"update\",this).call(this,t,!1);case 3:this.setOptions();this.chart&&this.chart.update(c(this.options.chartOptions)||{});this.emit({type:\"afterUpdate\"});e&&this.render();case 7:case\"end\":return _context13.stop();}},_callee13,this);}));function update(_x17){return _update4.apply(this,arguments);}return update;}()},{key:\"updateSeries\",value:function updateSeries(){var t=this.chart,e=this.connectorHandlers;if(!t)return;var s=[];var _iteratorNormalCompletion49=true;var _didIteratorError49=false;var _iteratorError49=undefined;try{for(var _iterator49=e[Symbol.iterator](),_step49;!(_iteratorNormalCompletion49=(_step49=_iterator49.next()).done);_iteratorNormalCompletion49=true){var _t331=_step49.value;var _e290=_t331.options.columnAssignment;if(!_e290&&_t331.presentationTable&&(_e290=this.getDefaultColumnAssignment(_t331.presentationTable.getColumnNames(),_t331.presentationTable)),_e290){var _iteratorNormalCompletion51=true;var _didIteratorError51=false;var _iteratorError51=undefined;try{for(var _iterator51=(_t331.columnAssignment=_e290,_e290)[Symbol.iterator](),_step51;!(_iteratorNormalCompletion51=(_step51=_iterator51.next()).done);_iteratorNormalCompletion51=true){var _i211=_step51.value.seriesId;_i211&&s.push(_i211);}}catch(err){_didIteratorError51=true;_iteratorError51=err;}finally{try{if(!_iteratorNormalCompletion51&&_iterator51[\"return\"]!=null){_iterator51[\"return\"]();}}finally{if(_didIteratorError51){throw _iteratorError51;}}}}}}catch(err){_didIteratorError49=true;_iteratorError49=err;}finally{try{if(!_iteratorNormalCompletion49&&_iterator49[\"return\"]!=null){_iterator49[\"return\"]();}}finally{if(_didIteratorError49){throw _iteratorError49;}}}var i=Object.keys(this.seriesFromConnector);var _loop10=function _loop10(){var n=i[_e289];if(s.some(function(t){return t===n;}))return 1;// continue\nvar o=t.get(n);o&&o.destroy();};for(var _e289=0,_n104=i.length;_e289<_n104;++_e289){if(_loop10())continue;}var _iteratorNormalCompletion50=true;var _didIteratorError50=false;var _iteratorError50=undefined;try{for(var _iterator50=(this.seriesFromConnector={},e)[Symbol.iterator](),_step50;!(_iteratorNormalCompletion50=(_step50=_iterator50.next()).done);_iteratorNormalCompletion50=true){var _t332=_step50.value;this.updateSeriesFromConnector(_t332);}}catch(err){_didIteratorError50=true;_iteratorError50=err;}finally{try{if(!_iteratorNormalCompletion50&&_iterator50[\"return\"]!=null){_iterator50[\"return\"]();}}finally{if(_didIteratorError50){throw _iteratorError50;}}}t.redraw();}},{key:\"updateSeriesFromConnector\",value:function updateSeriesFromConnector(t){var _t$presentationTable$,_t$columnAssignment,_this113=this;var e=this.chart;if(!t.connector||!e||!t.presentationTable)return;var i=t.presentationTable.modified,n=(_t$presentationTable$=t.presentationTable.getModifier())===null||_t$presentationTable$===void 0?void 0:_t$presentationTable$.options,o=(_t$columnAssignment=t.columnAssignment)!==null&&_t$columnAssignment!==void 0?_t$columnAssignment:[];var _loop11=function _loop11(){var a=o[_r66],l=a.data,c=e.get(a.seriesId),d={},_u9=function _u9(t){var _n$columnFormulas;(n===null||n===void 0?void 0:n.type)===\"Math\"&&((_n$columnFormulas=n.columnFormulas)===null||_n$columnFormulas===void 0?void 0:_n$columnFormulas.some(function(e){return t(e.column);}))&&(d.dragDrop={draggableY:!1});};if(h(l)){var _t333=i.getColumn(l);_t333&&(d.data=_t333.slice()),_u9(function(t){return t===l;});}else if(Array.isArray(l)){var _t334=new s({columns:i.getColumns(l)});d.data=_t334.getRows(),_u9(function(t){return l.some(function(e){return e===t;});});}else{var _t335=Object.keys(l),_e291=[];for(var _s199=0,_i212=_t335.length;_s199<_i212;++_s199)_e291.push(l[_t335[_s199]]);var _n105=new s({columns:i.getColumns(_e291)});d.keys=_t335,d.data=_n105.getRows(),_u9(function(t){return _e291.some(function(e){return e===t;});});}c?c.update(d,!1):e.addSeries(_objectSpread({name:a.seriesId,id:a.seriesId},d),!1),_this113.seriesFromConnector[a.seriesId]=t;};for(var _r66=0,_a45=o.length;_r66<_a45;++_r66){_loop11();}}},{key:\"getChart\",value:function getChart(){return this.chart||this.createChart();}},{key:\"destroy\",value:function destroy(){var _this$chart4;(_this$chart4=this.chart)!==null&&_this$chart4!==void 0&&_this$chart4.destroy(),_get(_getPrototypeOf(u.prototype),\"destroy\",this).call(this);}},{key:\"getDefaultColumnAssignment\",value:function getDefaultColumnAssignment(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var e=arguments.length>1?arguments[1]:undefined;var s=[],i=e.getColumn(t[0]);if(i&&h(i[0])){for(var _e292=1,_i213=t.length;_e292<_i213;++_e292)s.push({seriesId:t[_e292],data:[t[0],t[_e292]]});return s;}for(var _e293=0,_i214=t.length;_e293<_i214;++_e293)s.push({seriesId:t[_e293],data:t[_e293]});return s;}},{key:\"createChart\",value:function createChart(){var t=u.charter||i.win.Highcharts;this.chartConstructor||(this.chartConstructor=\"chart\");var e=t[this.chartConstructor];if(e)try{if(\"chart\"===this.chartConstructor)return t.Chart.chart(this.chartContainer,this.chartOptions);return new e(this.chartContainer,this.chartOptions);}catch(t){throw Error(\"The Highcharts component in cell '\".concat(this.cell.id,\"' is misconfigured. \\n____________\\n\").concat(t));}if(\"function\"!=typeof t.chart)throw Error(\"Chart constructor not found\");return this.chart;}},{key:\"registerChartEvents\",value:function registerChartEvents(){var _this114=this;if(this.chart&&this.chart.options){var _t336=this.chart.options;[\"chart\",\"series\",\"yAxis\",\"xAxis\",\"colorAxis\",\"annotations\",\"navigation\"].map(function(e){var s=_t336[e]||{};return!Array.isArray(s)&&s.events&&(s=[s]),s&&\"object\"==_typeof(s)&&Array.isArray(s)&&s.reduce(function(t,s,i){return s&&s.events&&(t[s.id||\"\".concat(e,\"-\").concat(i)]=s.events),t;},{})||{};}).forEach(function(t){Object.keys(t).forEach(function(e){var s=t[e];Object.keys(s).forEach(function(t){_this114.callbackRegistry.addCallback(\"\".concat(e,\"-\").concat(t),{type:\"seriesEvent\",func:s[t]});});});});}}},{key:\"getOptionsOnDrop\",value:function getOptionsOnDrop(t){var e=t.editMode.board.dataPool.getConnectorIds(),s={cell:\"\",type:\"Highcharts\",chartOptions:{chart:{animation:!1,type:\"column\",zooming:{}}}};return e.length&&(s=_objectSpread(_objectSpread({},s),{},{connector:{id:e[0]}})),s;}},{key:\"toJSON\",value:function toJSON(){var t=JSON.stringify(this.options.chartOptions),e=this.options.chartConstructor||\"chart\";this.registerChartEvents();var s=_get(_getPrototypeOf(u.prototype),\"toJSON\",this).call(this),i=_objectSpread(_objectSpread({},s),{},{type:\"Highcharts\",options:_objectSpread(_objectSpread({},s.options),{},{chartOptions:t,chartConstructor:e,type:\"Highcharts\",sync:{}})});return this.emit({type:\"toJSON\",json:i}),i;}},{key:\"getOptions\",value:function getOptions(){return _objectSpread(_objectSpread({},l(this.options,u.defaultOptions)),{},{type:\"Highcharts\"});}},{key:\"getEditableOptions\",value:function getEditableOptions(){var _s$chart;var t=this.options,e=this.chart,s=e&&e.options,i=(s===null||s===void 0?void 0:(_s$chart=s.chart)===null||_s$chart===void 0?void 0:_s$chart.type)||\"line\";return c({chartOptions:s},{chartOptions:{yAxis:d(e&&e.yAxis[0].options),xAxis:d(e&&e.xAxis[0].options),plotOptions:{series:(s&&s.plotOptions||{})[i]}}},t);}},{key:\"getEditableOptionValue\",value:function getEditableOptionValue(t){return t?1===t.length&&\"chartOptions\"===t[0]?JSON.stringify(this.options.chartOptions,null,2):_get(_getPrototypeOf(u.prototype),\"getEditableOptionValue\",this).call(this,t):void 0;}}],[{key:\"fromJSON\",value:function fromJSON(t,e){var s=new u(e,c(t.options,{chartOptions:JSON.parse(t.options.chartOptions||\"{}\")}));return s.emit({type:\"fromJSON\",json:t}),s;}}]);return u;}(t);return u.predefinedSyncConfig=n,u.defaultOptions=c(t.defaultOptions,o),u;}),s(e,\"Dashboards/Components/KPIComponent/KPISyncs/KPIExtremesSync.js\",[e[\"Core/Utilities.js\"]],function(t){var e=t.defined;return{defaultOptions:{},syncPair:{emitter:void 0,handler:function handler(){var _this115=this;if(\"KPI\"!==this.type)return;var t=this,s=this.sync.syncConfig.extremes,i=s.group?\":\"+s.group:\"\",n=this.board,o=function o(s){var _t$connectorHandlers23,_t$connectorHandlers24;var i=s.cursor;if(\"position\"===i.type&&\"number\"==typeof(i===null||i===void 0?void 0:i.row)&&e(i.column)&&(_t$connectorHandlers23=t.connectorHandlers)!==null&&_t$connectorHandlers23!==void 0&&(_t$connectorHandlers24=_t$connectorHandlers23[0])!==null&&_t$connectorHandlers24!==void 0&&_t$connectorHandlers24.connector&&!e(t.options.value)){var _e294=t.connectorHandlers[0].connector.table.modified.getCellAsString(i.column,i.row);t.setValue(_e294);}};if(n)return function(_this115$getFirstConn){var t=n.dataCursor;if(!t)return;var e=(_this115$getFirstConn=_this115.getFirstConnector())===null||_this115$getFirstConn===void 0?void 0:_this115$getFirstConn.table;e&&t.addListener(e.id,\"xAxis.extremes.max\"+i,o);}(),function(){var _this115$getFirstConn2;var t=(_this115$getFirstConn2=_this115.getFirstConnector())===null||_this115$getFirstConn2===void 0?void 0:_this115$getFirstConn2.table,e=n.dataCursor;t&&e.removeListener(t.id,\"xAxis.extremes.max\"+i,o);};}}};}),s(e,\"Dashboards/Components/KPIComponent/KPISyncs/KPISyncs.js\",[e[\"Dashboards/Components/KPIComponent/KPISyncs/KPIExtremesSync.js\"]],function(t){return{defaultSyncPairs:{extremes:t.syncPair},defaultSyncOptions:{extremes:t.defaultOptions}};}),s(e,\"Dashboards/Components/KPIComponent/KPIComponentDefaults.js\",[e[\"Dashboards/Components/Component.js\"]],function(t){return{type:\"KPI\",className:[t.defaultOptions.className,\"\".concat(t.defaultOptions.className,\"-kpi\")].join(\" \"),minFontSize:20,thresholdColors:[\"#f45b5b\",\"#90ed7d\"],editableOptions:[{name:\"connectorName\",propertyPath:[\"connector\",\"id\"],type:\"select\"}].concat(_toConsumableArray(t.defaultOptions.editableOptions||[]),[{name:\"Value\",type:\"input\",propertyPath:[\"value\"]},{name:\"Column name\",type:\"input\",propertyPath:[\"columnName\"]},{name:\"Value format\",type:\"input\",propertyPath:[\"valueFormat\"]}]),linkedValueTo:{enabled:!0,seriesIndex:0,pointIndex:0}};}),s(e,\"Core/Chart/ChartDefaults.js\",[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:\"x\"},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:\"line\",zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:\"right\",x:-10,y:10}}},width:null,height:null,borderColor:\"#334eff\",backgroundColor:\"#ffffff\",plotBorderColor:\"#cccccc\"};}),s(e,\"Core/Color/Palettes.js\",[],function(){return{colors:[\"#2caffe\",\"#544fc5\",\"#00e272\",\"#fe6a35\",\"#6b8abc\",\"#d568fb\",\"#2ee0ca\",\"#fa4b42\",\"#feb56a\",\"#91e8e1\"]};}),s(e,\"Core/Time.js\",[e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=t.win,i=e.defined,n=e.error,o=e.extend,r=e.isNumber,a=e.isObject,l=e.merge,h=e.objectEach,c=e.pad,d=e.pick,u=e.splat,p=e.timeUnits,m=t.isSafari&&s.Intl&&s.Intl.DateTimeFormat.prototype.formatRange,f=t.isSafari&&s.Intl&&!s.Intl.DateTimeFormat.prototype.formatRange;var g=/*#__PURE__*/function(){function g(t){_classCallCheck(this,g);this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=s.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(t);}_createClass(g,[{key:\"get\",value:function get(t,e){if(this.variableTimezone||this.timezoneOffset){var _s200=e.getTime(),_i215=_s200-this.getTimezoneOffset(e);e.setTime(_i215);var _n106=e[\"getUTC\"+t]();return e.setTime(_s200),_n106;}return this.useUTC?e[\"getUTC\"+t]():e[\"get\"+t]();}},{key:\"set\",value:function set(t,e,s){if(this.variableTimezone||this.timezoneOffset){if(\"Milliseconds\"===t||\"Seconds\"===t||\"Minutes\"===t&&this.getTimezoneOffset(e)%36e5==0)return e[\"setUTC\"+t](s);var _i216=this.getTimezoneOffset(e),_n107=e.getTime()-_i216;e.setTime(_n107),e[\"setUTC\"+t](s);var _o112=this.getTimezoneOffset(e);return _n107=e.getTime()+_o112,e.setTime(_n107);}return this.useUTC||m&&\"FullYear\"===t?e[\"setUTC\"+t](s):e[\"set\"+t](s);}},{key:\"update\",value:function update(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var e=d(t.useUTC,!0);this.options=t=l(!0,this.options,t),this.Date=t.Date||s.Date||Date,this.useUTC=e,this.timezoneOffset=e&&t.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=e&&!!(t.getTimezoneOffset||t.timezone);}},{key:\"makeTime\",value:function makeTime(t,e,s,i,n,o){var r,a,l;return this.useUTC?(r=this.Date.UTC.apply(0,arguments),a=this.getTimezoneOffset(r),r+=a,a!==(l=this.getTimezoneOffset(r))?r+=l-a:a-36e5!==this.getTimezoneOffset(r-36e5)||f||(r-=36e5)):r=new this.Date(t,e,d(s,1),d(i,0),d(n,0),d(o,0)).getTime(),r;}},{key:\"timezoneOffsetFunction\",value:function timezoneOffsetFunction(){var t=this,e=this.options,s=e.getTimezoneOffset;return this.useUTC?e.timezone?function(t){try{var _s201=\"shortOffset,\".concat(e.timezone||\"\"),_g$formatCache$s$form=(g.formatCache[_s201]=g.formatCache[_s201]||Intl.DateTimeFormat(\"en\",{timeZone:e.timezone,timeZoneName:\"shortOffset\"})).format(t).split(/(GMT|:)/).map(Number),_g$formatCache$s$form2=_slicedToArray(_g$formatCache$s$form,5),_i217=_g$formatCache$s$form2[0],_n108=_g$formatCache$s$form2[1],_o113=_g$formatCache$s$form2[2],_a46=_g$formatCache$s$form2[3],_g$formatCache$s$form3=_g$formatCache$s$form2[4],_l29=_g$formatCache$s$form3===void 0?0:_g$formatCache$s$form3,_h22=-(36e5*(_o113+_l29/60));if(r(_h22))return _h22;}catch(t){n(34);}return 0;}:this.useUTC&&s?function(t){return 6e4*s(t.valueOf());}:function(){return 6e4*(t.timezoneOffset||0);}:function(t){return 6e4*new Date(t.toString()).getTimezoneOffset();};}},{key:\"dateFormat\",value:function dateFormat(e,s,n){if(!i(s)||isNaN(s))return t.defaultOptions.lang&&t.defaultOptions.lang.invalidDate||\"\";e=d(e,\"%Y-%m-%d %H:%M:%S\");var r=this,a=new this.Date(s),l=this.get(\"Hours\",a),u=this.get(\"Day\",a),p=this.get(\"Date\",a),m=this.get(\"Month\",a),f=this.get(\"FullYear\",a),_g11=t.defaultOptions.lang,y=_g11&&_g11.weekdays,b=_g11&&_g11.shortWeekdays;return h(o({a:b?b[u]:y[u].substr(0,3),A:y[u],d:c(p),e:c(p,2,\" \"),w:u,b:_g11.shortMonths[m],B:_g11.months[m],m:c(m+1),o:m+1,y:f.toString().substr(2,2),Y:f,H:c(l),k:l,I:c(l%12||12),l:l%12||12,M:c(this.get(\"Minutes\",a)),p:l<12?\"AM\":\"PM\",P:l<12?\"am\":\"pm\",S:c(this.get(\"Seconds\",a)),L:c(Math.floor(s%1e3),3)},t.dateFormats),function(t,i){for(;-1!==e.indexOf(\"%\"+i);)e=e.replace(\"%\"+i,\"function\"==typeof t?t.call(r,s):t);}),n?e.substr(0,1).toUpperCase()+e.substr(1):e;}},{key:\"resolveDTLFormat\",value:function resolveDTLFormat(t){return a(t,!0)?t:{main:(t=u(t))[0],from:t[1],to:t[2]};}},{key:\"getTimeTicks\",value:function getTimeTicks(t,e,s,n){var r,a,l,h;var c=this,u=c.Date,m=[],f={},_g12=new u(e),y=t.unitRange,b=t.count||1;if(n=d(n,1),i(e)){c.set(\"Milliseconds\",_g12,y>=p.second?0:b*Math.floor(c.get(\"Milliseconds\",_g12)/b)),y>=p.second&&c.set(\"Seconds\",_g12,y>=p.minute?0:b*Math.floor(c.get(\"Seconds\",_g12)/b)),y>=p.minute&&c.set(\"Minutes\",_g12,y>=p.hour?0:b*Math.floor(c.get(\"Minutes\",_g12)/b)),y>=p.hour&&c.set(\"Hours\",_g12,y>=p.day?0:b*Math.floor(c.get(\"Hours\",_g12)/b)),y>=p.day&&c.set(\"Date\",_g12,y>=p.month?1:Math.max(1,b*Math.floor(c.get(\"Date\",_g12)/b))),y>=p.month&&(c.set(\"Month\",_g12,y>=p.year?0:b*Math.floor(c.get(\"Month\",_g12)/b)),a=c.get(\"FullYear\",_g12)),y>=p.year&&(a-=a%b,c.set(\"FullYear\",_g12,a)),y===p.week&&(h=c.get(\"Day\",_g12),c.set(\"Date\",_g12,c.get(\"Date\",_g12)-h+n+(h<n?-7:0))),a=c.get(\"FullYear\",_g12);var _t337=c.get(\"Month\",_g12),_o114=c.get(\"Date\",_g12),_d16=c.get(\"Hours\",_g12);e=_g12.getTime(),(c.variableTimezone||!c.useUTC)&&i(s)&&(l=s-e>4*p.month||c.getTimezoneOffset(e)!==c.getTimezoneOffset(s));var _u10=_g12.getTime();for(r=1;_u10<s;)m.push(_u10),y===p.year?_u10=c.makeTime(a+r*b,0):y===p.month?_u10=c.makeTime(a,_t337+r*b):l&&(y===p.day||y===p.week)?_u10=c.makeTime(a,_t337,_o114+r*b*(y===p.day?1:7)):l&&y===p.hour&&b>1?_u10=c.makeTime(a,_t337,_o114,_d16+r*b):_u10+=y*b,r++;m.push(_u10),y<=p.hour&&m.length<1e4&&m.forEach(function(t){t%18e5==0&&\"000000000\"===c.dateFormat(\"%H%M%S%L\",t)&&(f[t]=\"day\");});}return m.info=o(t,{higherRanks:f,totalRange:y*b}),m;}},{key:\"getDateFormat\",value:function getDateFormat(t,e,s,i){var n=this.dateFormat(\"%m-%d %H:%M:%S.%L\",e),o=\"01-01 00:00:00.000\",r={millisecond:15,second:12,minute:9,hour:6,day:3},a=\"millisecond\",l=a;for(a in p){if(t===p.week&&+this.dateFormat(\"%w\",e)===s&&n.substr(6)===o.substr(6)){a=\"week\";break;}if(p[a]>t){a=l;break;}if(r[a]&&n.substr(r[a])!==o.substr(r[a]))break;\"week\"!==a&&(l=a);}return this.resolveDTLFormat(i[a]).main;}}]);return g;}();return g.formatCache={},g;}),s(e,\"Core/Defaults.js\",[e[\"Core/Chart/ChartDefaults.js\"],e[\"Core/Globals.js\"],e[\"Core/Color/Palettes.js\"],e[\"Core/Time.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,n){var o=e.isTouchDevice,r=n.fireEvent,a=n.merge,l={colors:s.colors,symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],weekdays:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],decimalPoint:\".\",numericSymbols:[\"k\",\"M\",\"G\",\"T\",\"P\",\"E\"],resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{buttonTheme:{fill:\"#f7f7f7\",padding:8,r:2,stroke:\"#cccccc\",\"stroke-width\":1,style:{color:\"#333333\",cursor:\"pointer\",fontSize:\"0.8em\",fontWeight:\"normal\"},states:{hover:{fill:\"#e6e6e6\"},select:{fill:\"#e6e9ff\",style:{color:\"#000000\",fontWeight:\"bold\"}},disabled:{style:{color:\"#cccccc\"}}}}},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:t,title:{style:{color:\"#333333\",fontWeight:\"bold\"},text:\"Chart title\",align:\"center\",margin:15,widthAdjust:-44},subtitle:{style:{color:\"#666666\",fontSize:\"0.8em\"},text:\"\",align:\"center\",widthAdjust:-44},caption:{margin:15,style:{color:\"#666666\",fontSize:\"0.8em\"},text:\"\",align:\"left\",verticalAlign:\"bottom\"},plotOptions:{},legend:{enabled:!0,align:\"center\",alignColumns:!0,className:\"highcharts-no-tooltip\",events:{},layout:\"horizontal\",itemMarginBottom:2,itemMarginTop:2,labelFormatter:function labelFormatter(){return this.name;},borderColor:\"#999999\",borderRadius:0,navigation:{style:{fontSize:\"0.8em\"},activeColor:\"#0022ff\",inactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",cursor:\"pointer\",fontSize:\"0.8em\",textDecoration:\"none\",textOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},itemHiddenStyle:{color:\"#666666\",textDecoration:\"line-through\"},shadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontSize:\"0.8em\",fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,textAlign:\"center\"}},tooltip:{enabled:!0,animation:{duration:300,easing:function easing(t){return Math.sqrt(1-Math.pow(t-1,2));}},borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %e %b, %H:%M:%S.%L\",second:\"%A, %e %b, %H:%M:%S\",minute:\"%A, %e %b, %H:%M\",hour:\"%A, %e %b, %H:%M\",day:\"%A, %e %b %Y\",week:\"Week from %A, %e %b %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",headerShape:\"callout\",hideDelay:500,padding:8,shape:\"callout\",shared:!1,snap:o?25:10,headerFormat:'<span style=\"font-size: 0.8em\">{point.key}</span><br/>',pointFormat:'<span style=\"color:{point.color}\">●</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:\"#ffffff\",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:\"#333333\",cursor:\"default\",fontSize:\"0.8em\"},useHTML:!1},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"0.6em\"},text:\"Highcharts.com\"}};l.chart.styledMode=!1;var h=new i(l.time);return{defaultOptions:l,defaultTime:h,getOptions:function getOptions(){return l;},setOptions:function setOptions(t){return r(e,\"setOptions\",{options:t}),a(!0,l,t),(t.time||t.global)&&(e.time?e.time.update(a(l.global,l.time,t.global,t.time)):e.time=h),l;}};}),s(e,\"Core/Templating.js\",[e[\"Core/Defaults.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=t.defaultOptions,i=t.defaultTime,n=e.extend,o=e.getNestedProperty,r=e.isArray,a=e.isNumber,l=e.isObject,h=e.pick,c=e.pInt,d={add:function add(t,e){return t+e;},divide:function divide(t,e){return 0!==e?t/e:\"\";},eq:function eq(t,e){return t==e;},each:function each(t){var e=arguments[arguments.length-1];return!!r(t)&&t.map(function(s,i){return u(e.body,n(l(s)?s:{\"@this\":s},{\"@index\":i,\"@first\":0===i,\"@last\":i===t.length-1}));}).join(\"\");},ge:function ge(t,e){return t>=e;},gt:function gt(t,e){return t>e;},\"if\":function _if(t){return!!t;},le:function le(t,e){return t<=e;},lt:function lt(t,e){return t<e;},multiply:function multiply(t,e){return t*e;},ne:function ne(t,e){return t!=e;},subtract:function subtract(t,e){return t-e;},unless:function unless(t){return!t;}};function u(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var e=arguments.length>1?arguments[1]:undefined;var n=arguments.length>2?arguments[2]:undefined;var r=/\\{([\\w\\:\\.\\,;\\-\\/<>%@\"'’= #\\(\\)]+)\\}/g,a=/\\(([\\w\\:\\.\\,;\\-\\/<>%@\"'= ]+)\\)/g,l=[],c=/f$/,m=/\\.(\\d)/,f=s.lang,g=n&&n.time||i,y=n&&n.numberFormatter||p,b=function b(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"\";var s;return\"true\"===t||\"false\"!==t&&((s=Number(t)).toString()===t?s:o(t,e));},C,w,v=0,O;for(;null!==(C=r.exec(t));){var _w4;var _s202=a.exec(C[1]);_s202&&(C=_s202,O=!0),w&&w.isBlock||(w={ctx:e,expression:C[1],find:C[0],isBlock:\"#\"===C[1].charAt(0),start:C.index,startInner:C.index+C[0].length,length:C[0].length});var _i218=C[1].split(\" \")[0].replace(\"#\",\"\");d[_i218]&&(w.isBlock&&_i218===w.fn&&v++,w.fn||(w.fn=_i218));var _n109=\"else\"===C[1];if(w.isBlock&&w.fn&&(C[1]===\"/\".concat(w.fn)||_n109)){if(v)!_n109&&v--;else{var _e295=w.startInner,_s203=t.substr(_e295,C.index-_e295);void 0===w.body?(w.body=_s203,w.startInner=C.index+C[0].length):w.elseBody=_s203,w.find+=_s203+C[0],_n109||(l.push(w),w=void 0);}}else w.isBlock||l.push(w);if(_s202&&!((_w4=w)!==null&&_w4!==void 0&&_w4.isBlock))break;}return l.forEach(function(s){var i,o;var r=s.body,a=s.elseBody,l=s.expression,p=s.fn;if(p){var _t338=[s],_h23=l.split(\" \");for(o=d[p].length;o--;)_t338.unshift(b(_h23[o+1]));i=d[p].apply(e,_t338),s.isBlock&&\"boolean\"==typeof i&&(i=u(i?r:a,e,n));}else{var _t339=l.split(\":\");if(i=b(_t339.shift()||\"\"),_t339.length&&\"number\"==typeof i){var _e296=_t339.join(\":\");if(c.test(_e296)){var _t340=parseInt((_e296.match(m)||[\"\",\"-1\"])[1],10);null!==i&&(i=y(i,_t340,f.decimalPoint,_e296.indexOf(\",\")>-1?f.thousandsSep:\"\"));}else i=g.dateFormat(_e296,i);}}t=t.replace(s.find,h(i,\"\"));}),O?u(t,e,n):t;}function p(t,e,i,n){var o,r;t=+t||0,e=+e;var l=s.lang,d=(t.toString().split(\".\")[1]||\"\").split(\"e\")[0].length,u=t.toString().split(\"e\"),p=e;-1===e?e=Math.min(d,20):a(e)?e&&u[1]&&u[1]<0&&((r=e+ +u[1])>=0?(u[0]=(+u[0]).toExponential(r).split(\"e\")[0],e=r):(u[0]=u[0].split(\".\")[0]||0,t=e<20?(u[0]*Math.pow(10,u[1])).toFixed(e):0,u[1]=0)):e=2;var m=(Math.abs(u[1]?u[0]:t)+Math.pow(10,-Math.max(e,d)-1)).toFixed(e),f=String(c(m)),g=f.length>3?f.length%3:0;return i=h(i,l.decimalPoint),n=h(n,l.thousandsSep),o=(t<0?\"-\":\"\")+(g?f.substr(0,g)+n:\"\"),0>+u[1]&&!p?o=\"0\":o+=f.substr(g).replace(/(\\d{3})(?=\\d)/g,\"$1\"+n),e?o+=i+m.slice(-e):0==+o&&(o=\"0\"),u[1]&&0!=+o&&(o+=\"e\"+u[1]),o;}return{dateFormat:function dateFormat(t,e,s){return i.dateFormat(t,e,s);},format:u,helpers:d,numberFormat:p};}),s(e,\"Dashboards/Components/KPIComponent/KPIComponent.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Dashboards/Components/Component.js\"],e[\"Dashboards/Components/KPIComponent/KPISyncs/KPISyncs.js\"],e[\"Dashboards/Components/KPIComponent/KPIComponentDefaults.js\"],e[\"Core/Templating.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,n,o){var r=n.format,a=o.createElement,l=o.css,h=o.defined,c=o.diffObjects,d=o.isArray,u=o.isNumber,p=o.merge;var m=/*#__PURE__*/function(_e297){_inherits(m,_e297);var _super52=_createSuper(m);function m(t,e,s){var _this116;_classCallCheck(this,m);_this116=_super52.call(this,t,e=p(m.defaultOptions,e),s),_this116.options=e,_this116.type=\"KPI\",_this116.value=a(\"span\",{className:\"\".concat(e.className,\"-value\")},{},_this116.contentElement),_this116.subtitle=a(\"span\",{className:_this116.getSubtitleClassName()},{},_this116.contentElement);return _this116;}_createClass(m,[{key:\"load\",value:function(){var _load5=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee14(){return regeneratorRuntime.wrap(function _callee14$(_context14){while(1)switch(_context14.prev=_context14.next){case 0:_context14.next=2;return _get(_getPrototypeOf(m.prototype),\"load\",this).call(this);case 2:this.linkValueToChart();return _context14.abrupt(\"return\",this);case 4:case\"end\":return _context14.stop();}},_callee14,this);}));function load(){return _load5.apply(this,arguments);}return load;}()},{key:\"resize\",value:function resize(t,e){return _get(_getPrototypeOf(m.prototype),\"resize\",this).call(this,t,e),this.chart&&this.chart.container&&this.chart.reflow(),this;}},{key:\"render\",value:function render(){var _m$charter;_get(_getPrototypeOf(m.prototype),\"render\",this).call(this),this.updateElements();var t=(_m$charter=m.charter)===null||_m$charter===void 0?void 0:_m$charter.Chart;return t&&this.options.chartOptions&&!this.chart?(this.chartContainer||(this.chartContainer=a(\"div\",{className:\"\".concat(this.options.className,\"-chart-container\")},{padding:\"0.1px\"},this.contentElement)),this.chart=t.chart(this.chartContainer,p(m.defaultChartOptions,this.options.chartOptions))):this.chart&&!this.options.chartOptions&&\"chartOptions\"in this.options&&(this.chart.destroy(),this.chart=void 0),this.sync.start(),this.emit({type:\"afterRender\"}),this;}},{key:\"update\",value:function(){var _update5=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee15(t){var e,_args15=arguments;return regeneratorRuntime.wrap(function _callee15$(_context15){while(1)switch(_context15.prev=_context15.next){case 0:e=_args15.length>1&&_args15[1]!==undefined?_args15[1]:!0;_context15.next=3;return _get(_getPrototypeOf(m.prototype),\"update\",this).call(this,t);case 3:t.chartOptions&&this.chart&&this.chart.update(t.chartOptions);e&&this.render();case 5:case\"end\":return _context15.stop();}},_callee15,this);}));function update(_x18){return _update5.apply(this,arguments);}return update;}()},{key:\"onTableChanged\",value:function onTableChanged(){this.setValue();}},{key:\"destroy\",value:function destroy(){var _this$chart5;(_this$chart5=this.chart)!==null&&_this$chart5!==void 0&&_this$chart5.destroy(),_get(_getPrototypeOf(m.prototype),\"destroy\",this).call(this);}},{key:\"getValue\",value:function getValue(){if(h(this.options.value))return this.options.value;var t=this.getFirstConnector();if(t&&this.options.columnName){var _e298=t.table.modified,_s204=_e298.getColumn(this.options.columnName),_i219=(_s204===null||_s204===void 0?void 0:_s204.length)||0;return _e298.getCellAsString(this.options.columnName,_i219-1);}}},{key:\"setValue\",value:function setValue(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.getValue();var _this$options15=this.options,s=_this$options15.valueFormat,i=_this$options15.valueFormatter;if(h(e)){var _n110;u(+e)&&(_n110=+e),i?e=i.call(this,e):s?e=r(s,{value:e}):u(e)&&(e=e.toLocaleString()),t.setElementHTML(this.value,\"\"+e),this.linkValueToChart(_n110),this.prevValue=_n110;}}},{key:\"linkValueToChart\",value:function linkValueToChart(){var _s$seriesIndex,_s$pointIndex;var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.getValue();var e=this.chart,s=this.options.linkedValueTo;if(!e||!s.enabled||!h(t)||!u(+t))return;t=+t;var i=e.series[(_s$seriesIndex=s.seriesIndex)!==null&&_s$seriesIndex!==void 0?_s$seriesIndex:0],n=i===null||i===void 0?void 0:i.points[(_s$pointIndex=s.pointIndex)!==null&&_s$pointIndex!==void 0?_s$pointIndex:0];if(i){if(n){n.update({y:t});return;}i.addPoint({y:t});return;}e.addSeries({data:[{y:t}]});}},{key:\"updateElements\",value:function updateElements(){var _this$options16=this.options,e=_this$options16.style,s=_this$options16.subtitle;this.setValue(),t.setElementHTML(this.subtitle,this.getSubtitle()),e&&l(this.element,e),\"object\"==_typeof(s)&&(s.style&&l(this.subtitle,s.style),this.subtitle.className=this.getSubtitleClassName()),this.chartContainer&&(this.chartContainer.style.flex=this.options.chartOptions?\"1\":\"0\"),this.chart&&this.chart.reflow(),this.value.style.color=this.getValueColor();}},{key:\"getSubtitle\",value:function getSubtitle(){var _this$options17=this.options,t=_this$options17.subtitle,e=_this$options17.value;if(\"string\"==typeof t)return t;if(t){if(u(this.prevValue)&&u(e)){var _s205=e-this.prevValue,_i220=\"\";if(_s205>0)_i220='<span style=\"color:green\">&#9650;</span> +';else{if(!(_s205<0))return this.subtitle.innerHTML;_i220='<span style=\"color:red\">&#9660;</span> ';}if(\"diff\"===t.type)return _i220+_s205.toLocaleString();if(\"diffpercent\"===t.type)return _i220+r(\"{v:,.2f}%\",{v:_s205/this.prevValue*100});}return t.text||\"\";}return\"\";}},{key:\"getSubtitleClassName\",value:function getSubtitleClassName(){var t=this.options.subtitle;return\"\".concat(e.defaultOptions.className,\"-subtitle\")+(\"object\"==_typeof(t)&&t.className||\"\");}},{key:\"getValueColor\",value:function getValueColor(){var _this$options18=this.options,t=_this$options18.threshold,e=_this$options18.thresholdColors,s=_this$options18.value;if(e&&t&&u(s)){if(d(t)){for(var _i221=t.length-1;_i221>=0;_i221--)if(s>=t[_i221]){if(_i221+1<e.length)return e[_i221+1];return e[e.length-1];}}else if(s>=t)return e[1];return e[0];}return\"\";}},{key:\"getOptionsOnDrop\",value:function getOptionsOnDrop(t){var e=t.editMode.board.dataPool.getConnectorIds(),s={cell:\"\",type:\"KPI\"};return e.length&&(s=_objectSpread(_objectSpread({},s),{},{connector:{id:e[0]}})),s;}},{key:\"toJSON\",value:function toJSON(){var t=_get(_getPrototypeOf(m.prototype),\"toJSON\",this).call(this),e=_objectSpread(_objectSpread({},t),{},{type:\"KPI\",options:_objectSpread(_objectSpread({},t.options),{},{type:\"KPI\",value:this.options.value,subtitle:JSON.stringify(this.options.subtitle),title:JSON.stringify(this.options.title),threshold:this.options.threshold,thresholdColors:this.options.thresholdColors,chartOptions:JSON.stringify(this.options.chartOptions),valueFormat:this.options.valueFormat})});return this.emit({type:\"toJSON\",json:t}),e;}},{key:\"getOptions\",value:function getOptions(){return _objectSpread(_objectSpread({},c(this.options,m.defaultOptions)),{},{type:\"KPI\"});}}],[{key:\"fromJSON\",value:function fromJSON(t,e){var s=t.options,i=s.chartOptions&&JSON.parse(s.chartOptions),n=JSON.parse(s.subtitle||\"{}\"),o=s.title&&JSON.parse(s.title);return new m(e,p(s,{chartOptions:i,title:o,subtitle:n}));}}]);return m;}(e);return m.defaultOptions=p(e.defaultOptions,i),m.predefinedSyncConfig=s,m.defaultChartOptions={chart:{type:\"spline\",styledMode:!0,zooming:{mouseWheel:{enabled:!1}}},title:{text:void 0},xAxis:{visible:!1},yAxis:{visible:!1,title:{text:null}},legend:{enabled:!1},credits:{enabled:!1},tooltip:{outside:!0},plotOptions:{series:{marker:{enabled:!1}}}},m;}),s(e,\"Dashboards/Components/NavigatorComponent/NavigatorComponentDefaults.js\",[e[\"Dashboards/Components/Component.js\"]],function(t){return{type:\"Navigator\",className:[t.defaultOptions.className,\"\".concat(t.defaultOptions.className,\"-navigator\")].join(\" \"),chartOptions:{chart:{animation:!1,height:200,styledMode:!0,type:\"column\",zooming:{mouseWheel:{enabled:!1}}},credits:{enabled:!1},legend:{enabled:!1},navigator:{enabled:!0,outlineWidth:0,series:{animation:!1,lineWidth:0,colorIndex:0},xAxis:{endOnTick:!0,gridZIndex:4,labels:{x:1,y:22},opposite:!0,showFirstLabel:!0,showLastLabel:!0,startOnTick:!0,tickPosition:\"inside\"},yAxis:{maxPadding:.5}},plotOptions:{series:{borderRadius:0,marker:{enabled:!1},states:{hover:{enabled:!1}}}},scrollbar:{enabled:!0},title:{text:\"\"},tooltip:{enabled:!1},xAxis:{visible:!1,minRange:Number.MIN_VALUE},yAxis:{visible:!1}},editableOptions:(t.defaultOptions.editableOptions||[]).concat()};}),s(e,\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorSyncUtils.js\",[],function(){var t,e;return(e=t||(t={})).setRangeOptions=function(t,e,s,i){var n=!1;for(var o=0,r=t.length;o<r;++o)if(t[o].column===e){t[o].maxValue=i,t[o].minValue=s,n=!0;break;}n||t.push({column:e,maxValue:i,minValue:s});},e.unsetRangeOptions=function(t,e){for(var _s206=0,i=t.length;_s206<i;++_s206)if(t[_s206].column===e)return t.splice(_s206,1)[0];},t;}),s(e,\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorCrossfilterSync.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorSyncUtils.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=t.types.Range,n=s.addEvent;return{defaultOptions:{affectNavigator:!1},syncPair:{emitter:function emitter(){var t;if(\"Navigator\"!==this.type)return;var s=this,o=this.sync.syncConfig.crossfilter,r=o.group?\":\"+o.group:\"\",a=/*#__PURE__*/function(){var _ref28=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee16(t){var _s$connectorHandlers,_s$connectorHandlers$;var _n111,_o115,_a47,_s$getAxisExtremes,_s$getAxisExtremes2,l,h,_c19;return regeneratorRuntime.wrap(function _callee16$(_context16){while(1)switch(_context16.prev=_context16.next){case 0:if(!((_s$connectorHandlers=s.connectorHandlers)!==null&&_s$connectorHandlers!==void 0&&(_s$connectorHandlers$=_s$connectorHandlers[0])!==null&&_s$connectorHandlers$!==void 0&&_s$connectorHandlers$.connector)){_context16.next=7;break;}_n111=s.connectorHandlers[0].connector.table,_o115=s.board.dataCursor,_a47=s.getColumnAssignment()[0],_s$getAxisExtremes=s.getAxisExtremes(),_s$getAxisExtremes2=_slicedToArray(_s$getAxisExtremes,2),l=_s$getAxisExtremes2[0],h=_s$getAxisExtremes2[1],_c19=_n111.getModifier();_c19 instanceof i?e.setRangeOptions(_c19.options.ranges,_a47,l,h):_c19=new i({ranges:[{column:_a47,maxValue:h,minValue:l}]});_context16.next=5;return _n111.setModifier(_c19);case 5:_o115.emitCursor(_n111,{type:\"position\",column:_a47,row:_n111.getRowIndexBy(_a47,l),state:\"crossfilter\"+r},t);_o115.emitCursor(_n111,{type:\"position\",column:_a47,row:_n111.getRowIndexBy(_a47,h),state:\"crossfilter\"+r},t);case 7:case\"end\":return _context16.stop();}},_callee16);}));return function a(_x19){return _ref28.apply(this,arguments);};}();return n(s.chart.xAxis[0],\"afterSetExtremes\",function(e){clearTimeout(t),t=setTimeout(a,50,this,e);});},handler:void 0}};}),s(e,\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorExtremesSync.js\",[e[\"Data/Modifiers/DataModifier.js\"],e[\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorSyncUtils.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=t.types.Range,n=s.addEvent,o=s.pick;return{defaultOptions:{},syncPair:{emitter:function emitter(){var t;if(\"Navigator\"!==this.type)return;var e=this,s=this.sync.syncConfig.extremes,i=s.group?\":\"+s.group:\"\",o=function o(t){var _e$connectorHandlers5,_e$connectorHandlers6;if((_e$connectorHandlers5=e.connectorHandlers)!==null&&_e$connectorHandlers5!==void 0&&(_e$connectorHandlers6=_e$connectorHandlers5[0])!==null&&_e$connectorHandlers6!==void 0&&_e$connectorHandlers6.connector){var _s207=e.connectorHandlers[0].connector.table,_n112=e.board.dataCursor,_o116=e.getColumnAssignment()[0],_e$getAxisExtremes=e.getAxisExtremes(),_e$getAxisExtremes2=_slicedToArray(_e$getAxisExtremes,2),r=_e$getAxisExtremes2[0],a=_e$getAxisExtremes2[1];_n112.emitCursor(_s207,{type:\"position\",column:_o116,row:_s207.getRowIndexBy(_o116,r),state:\"xAxis.extremes.min\"+i},t),_n112.emitCursor(_s207,{type:\"position\",column:_o116,row:_s207.getRowIndexBy(_o116,a),state:\"xAxis.extremes.max\"+i},t);}};return n(e.chart.xAxis[0],\"afterSetExtremes\",function(e){clearTimeout(t),t=setTimeout(o,50,this,e);});},handler:function handler(){if(\"Navigator\"!==this.type)return;var t=this,s=this.sync.syncConfig.extremes,n=s.group?\":\"+s.group:\"\",r=t.board.dataCursor,a=function a(s){var _t$connectorHandlers25,_t$connectorHandlers26;var r=s.cursor;if(!((_t$connectorHandlers25=t.connectorHandlers)!==null&&_t$connectorHandlers25!==void 0&&(_t$connectorHandlers26=_t$connectorHandlers25[0])!==null&&_t$connectorHandlers26!==void 0&&_t$connectorHandlers26.connector))return;var a=t.connectorHandlers[0].connector.table,l=a.getColumnNames()[0],h=a.getRowCount(),c=0;\"range\"===r.type?(h=r.lastRow,c=r.firstRow,r.columns&&(l=o(r.columns[0],l))):r.state===\"xAxis.extremes.max\"+n?(l=o(r.column,l),h=o(r.row,h)):(l=o(r.column,l),c=o(r.row,c));var d=a.getModifier();if(\"string\"==typeof l&&d instanceof i){var _t341=d.options.ranges,_s208=a.getCell(l,c),_i222=a.getCell(l,h);null!=_i222&&null!=_s208&&(e.unsetRangeOptions(_t341,l),_t341.unshift({column:l,maxValue:_i222,minValue:_s208}),a.setModifier(d));}};return function(_t$connectorHandlers27,_t$connectorHandlers28,_t$connectorHandlers29){var e=(_t$connectorHandlers27=t.connectorHandlers)===null||_t$connectorHandlers27===void 0?void 0:(_t$connectorHandlers28=_t$connectorHandlers27[0])===null||_t$connectorHandlers28===void 0?void 0:(_t$connectorHandlers29=_t$connectorHandlers28.connector)===null||_t$connectorHandlers29===void 0?void 0:_t$connectorHandlers29.table;e&&(r.addListener(e.id,\"xAxis.extremes\"+n,a),r.addListener(e.id,\"xAxis.extremes.max\"+n,a),r.addListener(e.id,\"xAxis.extremes.min\"+n,a));}(),function(){var _t$connectorHandlers30,_t$connectorHandlers31,_t$connectorHandlers32;var e=(_t$connectorHandlers30=t.connectorHandlers)===null||_t$connectorHandlers30===void 0?void 0:(_t$connectorHandlers31=_t$connectorHandlers30[0])===null||_t$connectorHandlers31===void 0?void 0:(_t$connectorHandlers32=_t$connectorHandlers31.connector)===null||_t$connectorHandlers32===void 0?void 0:_t$connectorHandlers32.table;e&&(r.removeListener(e.id,\"xAxis.extremes\"+n,a),r.removeListener(e.id,\"xAxis.extremes.max\"+n,a),r.removeListener(e.id,\"xAxis.extremes.min\"+n,a));};}}};}),s(e,\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorSyncs.js\",[e[\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorCrossfilterSync.js\"],e[\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorExtremesSync.js\"]],function(t,e){return{defaultSyncPairs:{crossfilter:t.syncPair,extremes:e.syncPair},defaultSyncOptions:{crossfilter:t.defaultOptions,extremes:e.defaultOptions}};}),s(e,\"Dashboards/Components/NavigatorComponent/NavigatorComponent.js\",[e[\"Dashboards/Components/Component.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Components/NavigatorComponent/NavigatorComponentDefaults.js\"],e[\"Dashboards/Components/NavigatorComponent/NavigatorSyncs/NavigatorSyncs.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,n){var o=n.diffObjects,r=n.isNumber,a=n.isString,l=n.merge,h=n.pick;var c=/*#__PURE__*/function(_t342){_inherits(c,_t342);var _super53=_createSuper(c);function c(t,s){var _this117$sync$syncCon;var _this117;_classCallCheck(this,c);_this117=_super53.call(this,t,s),_this117.type=\"Navigator\",_this117.options=l(c.defaultOptions,s);var i=c.charter.Chart||e.win.Highcharts;_this117.chartContainer=e.win.document.createElement(\"div\"),_this117.chart=i.chart(_this117.chartContainer,_this117.options.chartOptions||{}),_this117.chartContainer.classList.add(e.classNamePrefix+\"navigator\"),((_this117$sync$syncCon=_this117.sync.syncConfig.crossfilter)===null||_this117$sync$syncCon===void 0?void 0:_this117$sync$syncCon.enabled)&&_this117.chart.update(l({navigator:{xAxis:{labels:{format:\"{value}\"}}}},_this117.options.chartOptions||{}),!1);return _this117;}_createClass(c,[{key:\"adjustNavigator\",value:function adjustNavigator(){var t=this.chart,e=h(t.chartHeight,this.contentElement.clientHeight),s=this.contentElement.clientWidth,i={};if((t.chartHeight!==e||t.chartWidth!==s)&&(i.chart={height:e,width:s}),t.navigator){var _s209=t.navigator,_n113=_s209.top-t.plotTop+_s209.height;_s209.height!==_n113&&(i.navigator={handles:{height:Math.round(e/4)},height:_n113}),Object.keys(i).length&&t.update(i,!1),_s209.series&&_s209.series[0]&&_s209.series[0].update({type:t.series[0].type},!1);}else Object.keys(i).length&&t.update(i,!1);}},{key:\"getColumnAssignment\",value:function getColumnAssignment(){var _ref29,_this$options$columnA;var t;var e=(_ref29=(_this$options$columnA=this.options.columnAssignment)!==null&&_this$options$columnA!==void 0?_this$options$columnA:this.options.columnAssignments)!==null&&_ref29!==void 0?_ref29:{};for(var _i223=0,_Object$keys6=Object.keys(e);_i223<_Object$keys6.length;_i223++){var _s210=_Object$keys6[_i223];if(null!==(t=e[_s210]))return[_s210,t];}var s=this.getFirstConnector();if(s){var _t343=s.table.getColumnNames();if(_t343.length)return[_t343[0],\"y\"];}return[\"\",\"y\"];}},{key:\"getOptions\",value:function getOptions(){return _objectSpread(_objectSpread({},o(this.options,s)),{},{type:\"Navigator\"});}},{key:\"getAxisExtremes\",value:function getAxisExtremes(){var t=this.chart.xAxis[0],e=t.getExtremes(),s=r(e.min)?e.min:e.dataMin,i=r(e.max)?e.max:e.dataMax;return this.categories?[this.categories[Math.max(0,Math.ceil(s))],this.categories[Math.min(this.categories.length-1,Math.floor(i))]]:t.hasNames?[t.names[Math.ceil(s)],t.names[Math.floor(i)]]:[s,i];}},{key:\"load\",value:function(){var _load6=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee17(){return regeneratorRuntime.wrap(function _callee17$(_context17){while(1)switch(_context17.prev=_context17.next){case 0:_context17.next=2;return _get(_getPrototypeOf(c.prototype),\"load\",this).call(this);case 2:this.contentElement.appendChild(this.chartContainer);this.parentElement.appendChild(this.element);this.adjustNavigator();this.emit({type:\"afterLoad\"});return _context17.abrupt(\"return\",this);case 7:case\"end\":return _context17.stop();}},_callee17,this);}));function load(){return _load6.apply(this,arguments);}return load;}()},{key:\"onTableChanged\",value:function onTableChanged(){this.renderNavigator();}},{key:\"redrawNavigator\",value:function redrawNavigator(){var _this118=this;var t=this.resizeTimeouts;for(var _e299=0,_s211=t.length;_e299<_s211;++_e299)clearTimeout(t[_e299]);t.length=0,t.push(setTimeout(function(){_this118.adjustNavigator(),_this118.chart.redraw();},33));}},{key:\"render\",value:function render(){return _get(_getPrototypeOf(c.prototype),\"render\",this).call(this),this.renderNavigator(),this.sync.start(),this.emit({type:\"afterRender\"}),this;}},{key:\"renderNavigator\",value:function renderNavigator(){var t=this.chart,e=this.getFirstConnector();if(e){var _this$sync$syncConfig;var _s212;var _i224=e.table,_n114=this.getColumnAssignment(),_o117=_i224.getColumn(_n114[0],!0)||[];_s212=(_this$sync$syncConfig=this.sync.syncConfig.crossfilter)!==null&&_this$sync$syncConfig!==void 0&&_this$sync$syncConfig.enabled?this.generateCrossfilterData():_o117.slice(),t.series[0]?t.series[0].setData(_s212,!1):t.addSeries({id:_i224.id,data:_s212},!1);}this.redrawNavigator();}},{key:\"generateCrossfilterData\",value:function generateCrossfilterData(){var _this$getFirstConnect2,_s$getModifier;var t;var e=this.sync.syncConfig.crossfilter,s=(_this$getFirstConnect2=this.getFirstConnector())===null||_this$getFirstConnect2===void 0?void 0:_this$getFirstConnect2.table,i=(s===null||s===void 0?void 0:s.getColumn(this.getColumnAssignment()[0],!0))||[];if(!s||i.length<1||!e)return[];var n=[],o=[];for(var _t344=0,_e300=i.length;_t344<_e300;_t344++){var _e301=i[_t344];if(null!==_e301){if(r(_e301)||(_e301=\"\".concat(_e301)),void 0===this.stringData)this.stringData=a(_e301);else if(this.stringData!==a(_e301))throw Error(\"Mixed data types in crossfilter navigator are not supported.\");n.push(_e301),-1===o.indexOf(_e301)&&o.push(_e301);}}o.sort(function(t,e){return h(t,NaN)<h(e,NaN)?-1:t===e?0:1;});var l=(_s$getModifier=s.getModifier())===null||_s$getModifier===void 0?void 0:_s$getModifier.options;if(e.affectNavigator&&l){var _e302=[],_i225=[],_o118=l.ranges;for(var _t345=0,_n115=_o118.length;_t345<_n115;_t345++)_o118[_t345].column!==this.getColumnAssignment()[0]&&(_e302.push(_o118[_t345]),_i225.push(s.getColumn(_o118[_t345].column,!0)||[]));t=[];var _r67=_e302.length;for(var _s213=0,_o119=n.length;_s213<_o119;_s213++){var _o120=n[_s213],_a48=!0;for(var _t346=0;_t346<_r67;_t346++){var _n116$minValue,_n116$maxValue;var _n116=_e302[_t346];if(!(_i225[_t346][_s213]>=((_n116$minValue=_n116.minValue)!==null&&_n116$minValue!==void 0?_n116$minValue:-1/0)&&_i225[_t346][_s213]<=((_n116$maxValue=_n116.maxValue)!==null&&_n116$maxValue!==void 0?_n116$maxValue:1/0))){_a48=!1;break;}}_a48&&t.push(_o120);}}else t=n;var _c20=[];if(this.stringData){this.categories=o;for(var _t347=0,_e303=o.length;_t347<_e303;_t347++)_c20.push([_t347,null]);}else for(var _t348=0,_e304=o.length;_t348<_e304;_t348++)_c20.push([o[_t348],null]);for(var _e305=0,_s214=t.length;_e305<_s214;_e305++){var _s215=o.indexOf(t[_e305]);_c20[_s215][1]=(_c20[_s215][1]||0)+1;}return _c20;}},{key:\"resize\",value:function resize(t,e){return _get(_getPrototypeOf(c.prototype),\"resize\",this).call(this,t,e),this.redrawNavigator(),this;}},{key:\"update\",value:function(){var _update6=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee18(t){var _this$sync$syncConfig2;var e,s,_args18=arguments;return regeneratorRuntime.wrap(function _callee18$(_context18){while(1)switch(_context18.prev=_context18.next){case 0:e=_args18.length>1&&_args18[1]!==undefined?_args18[1]:!0;s=this.chart;_context18.next=4;return _get(_getPrototypeOf(c.prototype),\"update\",this).call(this,t,!1);case 4:t.chartOptions&&s.update(l((_this$sync$syncConfig2=this.sync.syncConfig.crossfilter)!==null&&_this$sync$syncConfig2!==void 0&&_this$sync$syncConfig2.enabled?{navigator:{xAxis:{labels:{format:\"{value}\"}}}}:{},t.chartOptions),!1);this.emit({type:\"afterUpdate\"});e&&this.render();case 7:case\"end\":return _context18.stop();}},_callee18,this);}));function update(_x20){return _update6.apply(this,arguments);}return update;}()},{key:\"getOptionsOnDrop\",value:function getOptionsOnDrop(){return{};}}],[{key:\"fromJSON\",value:function fromJSON(t,e){var s=new c(e,t.options);return s.emit({type:\"fromJSON\",json:t}),s;}}]);return c;}(t);return c.defaultOptions=l(t.defaultOptions,s),c.predefinedSyncConfig=i,c;}),s(e,\"Dashboards/Plugins/HighchartsPlugin.js\",[e[\"Dashboards/Components/HighchartsComponent/HighchartsComponent.js\"],e[\"Dashboards/Components/KPIComponent/KPIComponent.js\"],e[\"Dashboards/Components/NavigatorComponent/NavigatorComponent.js\"]],function(t,e,s){return{custom:{connectHighcharts:function connectHighcharts(i){t.charter=i,e.charter=i,s.charter=i;}},name:\"Highcharts.DashboardsPlugin\",onRegister:function onRegister(i){var n=i.ComponentRegistry;n.registerComponent(\"Highcharts\",t),n.registerComponent(\"KPI\",e),n.registerComponent(\"Navigator\",s);},onUnregister:function onUnregister(t){}};}),s(e,\"Dashboards/PluginHandler.js\",[e[\"Dashboards/Board.js\"],e[\"Dashboards/Components/Sync/Sync.js\"],e[\"Dashboards/Components/ComponentRegistry.js\"]],function(t,e,s){var i,n;return(n=i||(i={})).registry={},n.revision=0,n.addPlugin=function(i){var o=arguments.length>1&&arguments[1]!==undefined?arguments[1]:i.name;var r=i.maxRevision,a=i.minRevision,l=i.onRegister;if(n.registry[o]){if(o!==i.name)throw Error(\"Plugin '\".concat(o,\"' already registered.\"));return;}if(\"number\"==typeof a&&a>n.revision||\"number\"==typeof r&&r<n.revision)throw Error(\"Plugin '\".concat(o,\"' does not support revision \").concat(n.revision,\".\"));l({Board:t,ComponentRegistry:s,Sync:e,revision:n.revision}),n.registry[o]=i;},n.removePlugin=function(i){n.registry[i]&&(n.registry[i].onUnregister({ComponentRegistry:s,Board:t,Sync:e,revision:n.revision}),delete n.registry[i]);},i;}),s(e,\"masters/dashboards.src.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Data/Connectors/DataConnector.js\"],e[\"Dashboards/Board.js\"],e[\"Dashboards/Components/Component.js\"],e[\"Dashboards/Components/ComponentRegistry.js\"],e[\"Data/DataPool.js\"],e[\"Data/DataCursor.js\"],e[\"Data/Converters/DataConverter.js\"],e[\"Data/Modifiers/DataModifier.js\"],e[\"Data/DataTable.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Plugins/DataGridPlugin.js\"],e[\"Dashboards/Plugins/HighchartsPlugin.js\"],e[\"Dashboards/PluginHandler.js\"],e[\"Dashboards/Components/Sync/Sync.js\"],e[\"Dashboards/Utilities.js\"]],function(t,e,s,i,n,o,r,a,l,h,c,d,u,p,m,f){return c.board=s.board,c.addEvent=f.addEvent,c.error=f.error,c.merge=f.merge,c.removeEvent=f.removeEvent,c.uniqueKey=f.uniqueKey,c.AST=t,c.Board=s,c.Component=i,c.ComponentRegistry=n,c.DataConnector=e,c.DataConverter=a,c.DataCursor=r,c.DataModifier=l,c.DataPool=o,c.DataTable=h,c.DataGridPlugin=d,c.HighchartsPlugin=u,c.PluginHandler=p,c.Sync=m,c.win.Dashboards||(c.win.Dashboards=c),c.win.DataGrid&&(d.custom.connectDataGrid(c.win.DataGrid),c.PluginHandler.addPlugin(d)),c.win.Highcharts&&(u.custom.connectHighcharts(c.win.Highcharts),c.PluginHandler.addPlugin(u)),c;}),e[\"masters/dashboards.src.js\"]._modules=e,e[\"masters/dashboards.src.js\"];});!/**\n * Highcharts Dashboards Layout 2.3.0 (2024-08-26)\n *\n * (c) 2009-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n */function(t){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(t[\"default\"]=t,module.exports=t):\"function\"==typeof define&&define.amd?define(\"dashboards/modules/layout\",[\"dashboards\"],function(e){return t(e),t.Dashboards=e,t;}):t(\"undefined\"!=typeof Dashboards?Dashboards:void 0);}(function(t){\"use strict\";var e=t?t._modules:{};function s(e,s,i,o){e.hasOwnProperty(s)||(e[s]=o.apply(null,i),\"function\"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent(\"DashboardsModuleLoaded\",{detail:{path:s,module:e[s]}})));}s(e,\"Dashboards/EditMode/EditRenderer.js\",[e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.merge,i=e.createElement,o=e.defined;function n(e,s){var o;var n=s.options.contextMenu;return n&&(o=i(\"button\",{className:t.classNames.contextMenuBtn,onclick:function onclick(t){t.stopPropagation(),s.onContextBtnClick();}},{},e),n.icon&&i(\"img\",{src:n.icon,className:t.classNames.icon},{},o),n.text&&i(\"span\",{className:t.classNames.contextMenuBtnText,textContent:n.text},{},o),o.setAttribute(\"aria-label\",s.lang.accessibility.contextMenu.button),o.setAttribute(\"aria-expanded\",\"false\")),o;}function l(e,s){var _o121;var o;var n=s.name,l=s.showToggle,a=s.onchange,d=s.isEnabled,c=s.isNested,h=s.isStandalone,p=s.lang,u=i(\"div\",{className:t.classNames[c?\"accordionNestedWrapper\":\"accordionContainer\"]+\" \"+t.classNames.collapsableContentHeader},{},e),m=i(\"div\",{className:t.classNames.accordionHeader},{},u);h||(o=i(\"button\",{className:t.classNames.accordionHeaderBtn},{},m)),i(\"span\",{textContent:p[n]||n},{},o),l&&r(m,{enabledOnOffLabels:!0,id:n,name:\"\",onchange:a,value:d||!1,lang:p});var b=i(\"span\",{className:t.classNames.accordionHeaderIcon+\" \"+t.classNames.collapsedElement},{},o),g=i(\"div\",{className:t.classNames.accordionContent+\" \"+(h?t.classNames.standaloneElement:t.classNames.hiddenElement)},{},u);return(_o121=o)!==null&&_o121!==void 0&&_o121.addEventListener(\"click\",function(){g.classList.toggle(t.classNames.hiddenElement),b.classList.toggle(t.classNames.collapsedElement);}),{outerElement:u,content:g};}function a(o,n){var l;if(!o)return;n.name&&d(o,{title:n.name,isLabel:!0});var a=n.iconsURLPrefix||\"\",r=i(\"div\",{className:t.classNames.dropdown+\" \"+t.classNames.collapsableContentHeader},{},o),c=i(\"button\",{className:t.classNames.dropdownButton},{},r),h=i(\"div\",{className:t.classNames.dropdownButtonContent},{},c),p=(e.find(n.selectOptions,function(t){return t.name===n.value;})||{}).iconURL;p&&(l=i(\"img\",{src:a+p,className:t.classNames.icon},{},h));var u=i(\"span\",{textContent:n.value,id:n.id||\"\"},{},h),m=i(\"img\",{className:t.classNames.dropdownIcon+\" \"+t.classNames.collapsedElement,src:a+\"dropdown-pointer.svg\"},{},c),b=i(\"ul\",{className:t.classNames.dropdownContent+\" \"+t.classNames.hiddenElement},{},r);c.addEventListener(\"click\",function(){b.classList.toggle(t.classNames.hiddenElement),m.classList.toggle(t.classNames.collapsedElement);});for(var _e306=0,_o122=n.selectOptions.length;_e306<_o122;++_e306)(function(e,s,o,n,l,a,r){var d=e.iconsURLPrefix+e.iconURL,c=i(\"li\",{},{},s),h=i(\"button\",{className:t.classNames.customSelectButton},{},c);e.iconURL&&i(\"img\",{src:d},{},h),i(\"span\",{textContent:e.name||\"\"},{},h),h.addEventListener(\"click\",function(){if(s.classList.add(t.classNames.hiddenElement),l.classList.toggle(t.classNames.collapsedElement),o.textContent=e.name||\"\",a&&e.iconURL&&(a.src=d),r)return r(e.name);});})(s(n.selectOptions[_e306]||{},{iconsURLPrefix:a}),b,u,n.id,m,l,n.onchange);return r;}function r(e,s){if(!e)return;var o=s.lang,n=s.value,l=s.title||s.name,a=s.langKey,r=i(\"button\",{className:t.classNames.toggleContainer,type:\"button\",role:\"switch\",ariaChecked:!1,ariaLabel:a?o.accessibility[a][s.name]:\"\"},{},e);l&&d(r,{title:l}),s.enabledOnOffLabels&&d(r,{title:o.off,className:t.classNames.toggleLabels});var c=i(\"label\",{className:t.classNames.toggleWrapper+\" \"+(s.className||\"\")},{},r),h=u(c,n),p=s.onchange;p&&r.addEventListener(\"click\",function(t){p(!h.checked),h.checked=!h.checked,r.setAttribute(\"aria-checked\",h.checked),t.stopPropagation();});var m=i(\"span\",{className:t.classNames.toggleSlider},{},c);return p&&m.addEventListener(\"click\",function(t){t.preventDefault();}),s.enabledOnOffLabels&&d(r,{title:o.on,className:t.classNames.toggleLabels}),r;}function d(e,s){var o;var n=s.title,l=s.className,a=s.isLabel;if(e){var _s216=a?{htmlFor:n}:{};o=i(a?\"label\":\"div\",_objectSpread({className:t.classNames.labelText+\" \"+(l||\"\"),textContent:n},_s216),{},e);}return o;}function c(t,e){var s=e.icon,o=e.callback;if(!t)return;var n=i(\"div\",{onclick:o,className:e.className||\"\"},{},t);n.style[\"background-image\"]=\"url(\"+s+\")\";var l=e.mousedown,a=e.click;return l&&(n.onmousedown=function(){l.apply(this,arguments);}),a&&n.addEventListener(\"click\",function(){a.apply(this,arguments);}),n;}function h(t,e){if(!t)return;e.name&&d(t,{title:e.name,isLabel:!0});var s=i(\"input\",{type:\"text\",onclick:e.callback,id:e.id||\"\",name:e.name||\"\",value:o(e.value)&&e.value.toString().replace(/\\\"/g,\"\")||\"\"},{},t),n=e.onchange;return n&&s.addEventListener(\"change\",function(t){n(t.target.value);}),s;}function p(t,e){if(!t)return;e.name&&d(t,{title:e.name,isLabel:!0});var s=i(\"textarea\",{id:e.id,name:e.name,value:e.value||\"\"},{},t),o=e.onchange;return o&&s.addEventListener(\"change\",function(t){o(t.target.value);}),s;}function u(t,e){var s;return t&&(s=i(\"input\",{type:\"checkbox\",checked:!!e},{},t)),s;}function m(e,s){if(!e)return;var o=i(\"button\",{className:t.classNames.button+\" \"+(s.className||\"\"),onclick:s.callback,textContent:s.text},s.style||{},e);return s.icon&&(o.style[\"background-image\"]=\"url(\"+s.icon+\")\"),o;}return{renderSelect:a,renderToggle:r,renderText:d,renderCollapseHeader:l,renderIcon:c,renderContextButton:n,renderInput:h,renderTextarea:p,renderCheckbox:u,renderButton:m,getRendererFunction:function getRendererFunction(t){return{select:a,toggle:r,text:d,collapse:l,icon:c,contextButton:n,input:h,textarea:p,checkbox:u,button:m}[t];}};}),s(e,\"Dashboards/EditMode/Menu/MenuItem.js\",[e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/EditRenderer.js\"]],function(t,e,s){var i=e.createElement,o=e.merge;var n=/*#__PURE__*/function(){function n(t,e){_classCallCheck(this,n);this.menu=t,this.isActive=!1,this.options=o(n.defaultOptions,e),this.container=this.setContainer(),this.innerElement=this.setInnerElement();}_createClass(n,[{key:\"setContainer\",value:function setContainer(){var e=this.options,s=t.classNames.menuItem;return this.menu.options.itemsClassName&&(s+=\" \"+this.menu.options.itemsClassName),e.className&&(s+=\" \"+e.className),i(\"div\",{className:s||\"\"},o(this.options.style||{},this.isActive?{display:\"block\"}:{}),this.menu.container);}},{key:\"setInnerElement\",value:function setInnerElement(){var _t$events,_t$events$click,_t$events2,_t$events2$onmousedow,_t$events3,_t$events3$click,_t$events4,_t$events4$click;var t=this.options,e=this.container,i=t.langKey;return\"toggle\"===t.type?s.renderToggle(e,{id:t.id,name:t.id,title:i?this.menu.editMode.lang[i]:t.text,value:!!(t.getValue&&t.getValue(this)),lang:this.menu.editMode.lang,langKey:i,onchange:(_t$events=t.events)===null||_t$events===void 0?void 0:(_t$events$click=_t$events.click)===null||_t$events$click===void 0?void 0:_t$events$click.bind(this)}):\"text\"===t.type?s.renderText(e,{title:i?this.menu.editMode.lang[i]:t.text||\"\",className:t.className||\"\"}):\"icon\"===t.type?s.renderIcon(e,{icon:t.icon||\"\",mousedown:(_t$events2=t.events)===null||_t$events2===void 0?void 0:(_t$events2$onmousedow=_t$events2.onmousedown)===null||_t$events2$onmousedow===void 0?void 0:_t$events2$onmousedow.bind(this),click:(_t$events3=t.events)===null||_t$events3===void 0?void 0:(_t$events3$click=_t$events3.click)===null||_t$events3$click===void 0?void 0:_t$events3$click.bind(this)}):\"button\"===t.type?s.renderButton(e,{callback:(_t$events4=t.events)===null||_t$events4===void 0?void 0:(_t$events4$click=_t$events4.click)===null||_t$events4$click===void 0?void 0:_t$events4$click.bind(this),className:t.className||\"\",style:t.style||{},text:i?this.menu.editMode.lang[i]:t.text||\"\"}):void 0;}},{key:\"update\",value:function update(){var t=this.options;t.events&&t.events.update&&t.events.update.apply(this,arguments);}},{key:\"activate\",value:function activate(){this.update(),this.container&&(this.isActive=!0,this.container.style.display=\"block\");}},{key:\"deactivate\",value:function deactivate(){this.container&&(this.isActive=!1,this.container.style.display=\"none\");}}]);return n;}();return n.defaultOptions={type:\"text\"},n;}),s(e,\"Dashboards/EditMode/Menu/MenuItemBindings.js\",[],function(){return{viewFullscreen:{id:\"viewFullscreen\",type:\"button\",langKey:\"viewFullscreen\",events:{click:function click(){var t=this.menu.editMode.board.fullscreen;t&&t.toggle();}}}};}),s(e,\"Dashboards/EditMode/Menu/Menu.js\",[e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/Menu/MenuItem.js\"],e[\"Dashboards/EditMode/Menu/MenuItemBindings.js\"]],function(t,e,s,i){var o=e.createElement,n=e.merge;var l=/*#__PURE__*/function(){function l(t,e,s,i){_classCallCheck(this,l);this.parentElement=t,this.isVisible=!1,this.activeItems=[],this.options=e,this.items={},this.editMode=s,i&&(this.parent=i),this.container=this.setContainer();}_createClass(l,[{key:\"setContainer\",value:function setContainer(){return o(\"div\",{className:t.classNames.menu+\" \"+(this.options.className||\"\")},{},this.parentElement);}},{key:\"initItems\",value:function initItems(t,e){var i,o,_l30,a;var r=this.options.items||[];for(var d=0,_c21=r.length;d<_c21;++d)i=\"string\"==typeof(o=r[d])?t[o]:o.id?t[o.id]:{},(a=\"string\"==typeof o?n(i,{id:o}):n(i,o)).id&&(_l30=new s(this,a),this.items[_l30.options.id]=_l30,e&&(_l30.activate(),this.activeItems.push(_l30)));}},{key:\"setActiveItems\",value:function setActiveItems(t){var e;for(var _e307=0,_s217=this.activeItems.length;_e307<_s217;++_e307)-1===t.indexOf(this.activeItems[_e307].options.id)&&this.activeItems[_e307].deactivate();this.activeItems.length=0;for(var _s218=0,_i226=t.length;_s218<_i226;++_s218)(e=this.items[t[_s218]])&&(e.isActive?e.update():e.activate(),this.activeItems.push(e));}},{key:\"deactivateActiveItems\",value:function deactivateActiveItems(){for(var _t349=0,_e308=this.activeItems.length;_t349<_e308;++_t349)this.activeItems[_t349].deactivate();}},{key:\"updateActiveItems\",value:function updateActiveItems(){var t=this.activeItems;for(var _e309=0,_s219=t.length;_e309<_s219;++_e309)t[_e309].update();}},{key:\"destroy\",value:function destroy(){this.activeItems.length=0,this.container.remove(),this.items={},this.options={};}}]);return l;}();return l.items=i,l;}),s(e,\"Dashboards/EditMode/Toolbar/EditToolbar.js\",[e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/Menu/Menu.js\"]],function(t,e){var s=t.defined,i=t.createElement,o=t.css;return/*#__PURE__*/function(){function _class21(t,s){_classCallCheck(this,_class21);this.container=i(\"div\",{className:s.className},void 0,t.board.container),this.editMode=t,this.iconURLPrefix=t.iconsURLPrefix,this.menu=new e(this.container,s.menu,t,this),this.options=s,this.isVisible=!1,this.options.outline&&(this.outline=i(\"div\",{className:s.outlineClassName},void 0,this.container));}_createClass(_class21,[{key:\"hide\",value:function hide(){this.setPosition(void 0,void 0);}},{key:\"refreshOutline\",value:function refreshOutline(t,e,s){var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;var n=(s||{}).container;this.outline&&n&&o(this.outline,{display:\"block\",left:t-i+\"px\",top:e-i+\"px\",width:n.offsetWidth+2*i+\"px\",height:n.offsetHeight+2*i+\"px\"});}},{key:\"hideOutline\",value:function hideOutline(){this.outline&&(this.outline.style.display=\"none\");}},{key:\"setPosition\",value:function setPosition(t,e){this.container&&o(this.container,{left:(t||\"-9999\")+\"px\",top:(e||\"-9999\")+\"px\"}),this.isVisible=s(t)&&s(e);}}]);return _class21;}();}),s(e,\"Dashboards/EditMode/Toolbar/CellEditToolbar.js\",[e[\"Dashboards/Layout/Cell.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/EditMode/Toolbar/EditToolbar.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,o){var n=o.merge,l=o.fireEvent,a=o.objectEach;var r=/*#__PURE__*/function(_s220){_inherits(r,_s220);var _super54=_createSuper(r);function r(t){var _this119;_classCallCheck(this,r);_this119=_super54.call(this,t,n(r.defaultOptions,(t.options.toolbars||{}).cell,{menu:{items:r.getItemsConfig(t.options,t.iconsURLPrefix)}})),t.customHTMLMode&&_this119.filterOptionsAvailableInCustomHTMLMode(),_this119.menu.initItems({});return _this119;}_createClass(r,[{key:\"showToolbar\",value:function showToolbar(t){var e=t.container,s=this.editMode.cellToolbar;if(s){if(e&&this.editMode.isActive()&&!(this.editMode.dragDrop||{}).isActive){var _e310=i.getOffsets(t,this.editMode.board.container),_o123=_e310.right-30-10,_n117=_e310.top+10;a(this.menu.items,function(e){var _t$options8,_t$options8$editMode,_s$e$options$id;if(!((_t$options8=t.options)!==null&&_t$options8!==void 0&&(_t$options8$editMode=_t$options8.editMode)!==null&&_t$options8$editMode!==void 0&&_t$options8$editMode.toolbarItems)){e.activate();return;}var s=t.options.editMode.toolbarItems;if(((_s$e$options$id=s[e.options.id])===null||_s$e$options$id===void 0?void 0:_s$e$options$id.enabled)===!1){e.deactivate();return;}e.activate();}),this.setPosition(_o123,_n117),this.cell=t,this.refreshOutline(),s.isVisible=!0;}else this.isVisible&&(this.hide(),s.isVisible=!1);}}},{key:\"refreshOutline\",value:function refreshOutline(){this.cell&&this.cell.container&&this.outline&&_get(_getPrototypeOf(r.prototype),\"refreshOutline\",this).call(this,-this.cell.container.offsetWidth,0,this.cell,-1);}},{key:\"onCellOptions\",value:function onCellOptions(){var t=this.editMode;t.sidebar&&(t.sidebar.show(this.cell),this.highlightCell());}},{key:\"onCellDestroy\",value:function onCellDestroy(){if(this.cell&&this.cell instanceof t){var _t350=this.cell.row,_e311=this.cell.id;this.resetEditedCell(),this.cell.destroy(),this.cell=void 0,this.editMode.hideToolbars([\"cell\",\"row\"]),_t350&&_t350.cells&&_t350.cells.length&&(l(this.editMode.board,\"cellResize\",{cell:_t350.cells[0]}),l(_t350,\"cellChange\",{cell:_t350.cells[0],row:_t350}),l(this.editMode,\"layoutChanged\",{type:\"cellDestroyed\",target:_e311,board:this.editMode.board}));}}},{key:\"resetEditedCell\",value:function resetEditedCell(){this.editedCell=void 0;}},{key:\"filterOptionsAvailableInCustomHTMLMode\",value:function filterOptionsAvailableInCustomHTMLMode(){var _this$options$menu$it;this.options.menu.items=(_this$options$menu$it=this.options.menu.items)===null||_this$options$menu$it===void 0?void 0:_this$options$menu$it.filter(function(t){return\"string\"!=typeof t&&\"settings\"===t.id;});}},{key:\"highlightCell\",value:function highlightCell(){this.cell&&(this.cell.setHighlight?this.cell.setHighlight():(this.cell.container.classList.add(e.classNames.cellEditHighlight),this.editMode.board.container.classList.add(e.classNames.dashboardCellEditHighlightActive)));}}],[{key:\"getItemsConfig\",value:function getItemsConfig(s,i){var _s$dragDrop,_s$settings;var o=[];return(_s$dragDrop=s.dragDrop)!==null&&_s$dragDrop!==void 0&&_s$dragDrop.enabled&&o.push({id:\"drag\",type:\"icon\",icon:i+\"drag.svg\",events:{onmousedown:function onmousedown(e){var s=this.menu.parent,i=s.editMode.dragDrop;i&&s.cell&&s.cell instanceof t&&i.onDragStart(e,s.cell);}}}),(_s$settings=s.settings)!==null&&_s$settings!==void 0&&_s$settings.enabled&&o.push({id:\"settings\",type:\"icon\",icon:i+\"settings.svg\",events:{click:function click(){this.menu.parent.editMode.setEditOverlay(),this.menu.parent.onCellOptions();}}}),o.push({id:\"destroy\",type:\"icon\",className:e.classNames.menuDestroy,icon:i+\"destroy.svg\",events:{click:function click(){var t=this.menu.parent,e=this.menu.parent.editMode,s=e.confirmationPopup;s.show({confirmButton:{value:e.lang.confirmButton,callback:t.onCellDestroy,context:t},cancelButton:{value:e.lang.cancelButton,callback:function callback(){s.closePopup();}},text:e.lang.confirmDestroyCell});}}}),o;}}]);return r;}(s);return r.defaultOptions={enabled:!0,className:e.classNames.editToolbar,outline:!1,outlineClassName:e.classNames.editToolbarCellOutline,menu:{className:e.classNames.editToolbarCell,itemsClassName:e.classNames.editToolbarItem,items:[]}},r;}),s(e,\"Dashboards/EditMode/Toolbar/RowEditToolbar.js\",[e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/EditMode/Toolbar/EditToolbar.js\"],e[\"Dashboards/Layout/GUIElement.js\"]],function(t,e,s,i){var o=t.fireEvent,n=t.merge,l=t.objectEach;var a=/*#__PURE__*/function(_s221){_inherits(a,_s221);var _super55=_createSuper(a);function a(t){var _this120;_classCallCheck(this,a);_this120=_super55.call(this,t,n(a.defaultOptions,(t.options.toolbars||{}).row,{menu:{items:a.getMenuItemsConfig(t.options,t.iconsURLPrefix)}})),_this120.menu.initItems({});return _this120;}_createClass(a,[{key:\"refreshOutline\",value:function refreshOutline(t,e){this.row&&this.row.container&&_get(_getPrototypeOf(a.prototype),\"refreshOutline\",this).call(this,t,e,this.row,2);}},{key:\"showToolbar\",value:function showToolbar(t){var e,s,o;var n=t.container,_a49=this.editMode.rowToolbar;if(_a49){if(n&&this.editMode.isActive()&&!(this.editMode.dragDrop||{}).isActive){var _n118=i.getOffsets(t,this.editMode.board.container),r=_n118.right-_n118.left;l(this.menu.items,function(e){var _t$options9,_t$options9$editMode,_s$e$options$id2;if(!((_t$options9=t.options)!==null&&_t$options9!==void 0&&(_t$options9$editMode=_t$options9.editMode)!==null&&_t$options9$editMode!==void 0&&_t$options9$editMode.toolbarItems)){e.activate();return;}var s=t.options.editMode.toolbarItems;if(((_s$e$options$id2=s[e.options.id])===null||_s$e$options$id2===void 0?void 0:_s$e$options$id2.enabled)===!1){e.deactivate();return;}e.activate();}),o=r/2-this.container.clientWidth/2,e=_n118.left+o,s=_n118.top-this.container.clientHeight,this.setPosition(e,s),this.row=t,this.refreshOutline(-o,this.container.clientHeight),_a49.isVisible=!0;}else this.isVisible&&(this.hide(),_a49.isVisible=!1);}}},{key:\"onRowOptions\",value:function onRowOptions(){this.editMode.sidebar&&this.editMode.sidebar.show(this.row);}},{key:\"onRowDestroy\",value:function onRowDestroy(){if(this.row){var _t351=this.row.options.id||-1;this.resetEditedRow(),this.row.destroy(),this.row=void 0,this.editMode.hideToolbars([\"cell\",\"row\"]),o(this.editMode,\"layoutChanged\",{type:\"rowDestroyed\",target:_t351,board:this.editMode.board});}}},{key:\"resetEditedRow\",value:function resetEditedRow(){this.editedRow=void 0;}}],[{key:\"getMenuItemsConfig\",value:function getMenuItemsConfig(t,s){var _t$dragDrop;var i=[];return(_t$dragDrop=t.dragDrop)!==null&&_t$dragDrop!==void 0&&_t$dragDrop.enabled&&i.push({id:\"drag\",type:\"icon\",icon:s+\"drag.svg\",events:{onmousedown:function onmousedown(t){var e=this.menu.parent,s=e.editMode.dragDrop;t.preventDefault(),s&&e.row&&s.onDragStart(t,e.row);}}}),i.push({id:\"destroy\",type:\"icon\",className:e.classNames.menuDestroy,icon:s+\"destroy.svg\",events:{click:function click(){var t=this.menu.parent,e=this.menu.parent.editMode,s=e.confirmationPopup;s.show({confirmButton:{value:e.lang.confirmButton,callback:t.onRowDestroy,context:t},cancelButton:{value:e.lang.cancelButton,callback:function callback(){s.closePopup();}},text:e.lang.confirmDestroyRow});}}}),i;}}]);return a;}(s);return a.defaultOptions={enabled:!0,className:e.classNames.editToolbar,outline:!0,outlineClassName:e.classNames.editToolbarRowOutline,menu:{className:e.classNames.editToolbarRow,itemsClassName:e.classNames.editToolbarItem,items:[]}},a;}),s(e,\"Shared/BaseForm.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.addEvent,i=e.createElement;return/*#__PURE__*/function(){function _class22(t,e){_classCallCheck(this,_class22);this.iconsURL=e,this.container=this.createPopupContainer(t),this.closeButton=this.addCloseButton();}_createClass(_class22,[{key:\"createPopupContainer\",value:function createPopupContainer(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"highcharts-popup highcharts-no-tooltip\";return i(\"div\",{className:e},void 0,t);}},{key:\"addCloseButton\",value:function addCloseButton(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"highcharts-popup-close\";var e=this,o=this.iconsURL,n=i(\"button\",{className:t},void 0,this.container);return n.style[\"background-image\"]=\"url(\"+(o.match(/png|svg|jpeg|jpg|gif/ig)?o:o+\"close.svg\")+\")\",[\"click\",\"touchstart\"].forEach(function(t){s(n,t,e.closeButtonEvents.bind(e));}),s(document,\"keydown\",function(t){\"Escape\"===t.code&&e.closeButtonEvents();}),n;}},{key:\"closeButtonEvents\",value:function closeButtonEvents(){this.closePopup();}},{key:\"showPopup\",value:function showPopup(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:\"highcharts-annotation-toolbar\";var s=this.container,i=this.closeButton;this.type=void 0,s.innerHTML=t.emptyHTML,s.className.indexOf(e)>=0&&(s.classList.remove(e),s.removeAttribute(\"style\")),s.appendChild(i),s.style.display=\"block\",s.style.height=\"\";}},{key:\"closePopup\",value:function closePopup(){this.container.style.display=\"none\";}}]);return _class22;}();}),s(e,\"Dashboards/EditMode/ConfirmationPopup.js\",[e[\"Core/Utilities.js\"],e[\"Shared/BaseForm.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/EditMode/EditRenderer.js\"]],function(t,e,s,i){var o=t.createElement;return/*#__PURE__*/function(_e312){_inherits(_class23,_e312);var _super56=_createSuper(_class23);function _class23(t,e,s,i){var _this121;_classCallCheck(this,_class23);_this121=_super56.call(this,t,e=i&&i.close&&i.close.icon?i.close.icon:e),_this121.editMode=s,_this121.options=i;return _this121;}_createClass(_class23,[{key:\"createPopupContainer\",value:function createPopupContainer(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:s.classNames.confirmationPopup;return _get(_getPrototypeOf(_class23.prototype),\"createPopupContainer\",this).call(this,t,e);}},{key:\"addCloseButton\",value:function addCloseButton(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:s.classNames.popupCloseButton;return _get(_getPrototypeOf(_class23.prototype),\"addCloseButton\",this).call(this,t);}},{key:\"closeButtonEvents\",value:function closeButtonEvents(){var _this$contentOptions;var t=(_this$contentOptions=this.contentOptions)===null||_this$contentOptions===void 0?void 0:_this$contentOptions.cancelButton.callback;t&&t();}},{key:\"renderContent\",value:function renderContent(){var _this122=this;var t=this.contentOptions;if(!t)return;this.contentContainer=o(\"div\",{className:s.classNames.popupContentContainer},{},this.container);var e=this.contentContainer.parentNode;e.style.marginTop=\"0px\";var n=e.getBoundingClientRect().top;e.style.marginTop=(n<0?Math.abs(n-200):200)+\"px\",i.renderText(this.contentContainer,{title:t.text||\"\"}),this.buttonContainer=o(\"div\",{className:s.classNames.popupButtonContainer},{},this.container),i.renderButton(this.buttonContainer,{text:t.cancelButton.value,className:s.classNames.popupCancelBtn,callback:t.cancelButton.callback}),i.renderButton(this.buttonContainer,{text:t.confirmButton.value,className:s.classNames.popupConfirmBtn,callback:function callback(){t.confirmButton.callback.call(t.confirmButton.context),_this122.closePopup();}});}},{key:\"show\",value:function show(t){this.contentOptions=t,this.showPopup(),this.renderContent(),this.editMode.setEditOverlay();}},{key:\"closePopup\",value:function closePopup(){_get(_getPrototypeOf(_class23.prototype),\"closePopup\",this).call(this),this.editMode.setEditOverlay(!0);}}]);return _class23;}(e);}),s(e,\"Dashboards/EditMode/AccordionMenu.js\",[e[\"Dashboards/EditMode/EditRenderer.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/EditMode/ConfirmationPopup.js\"]],function(t,e,s,i){var o=e.createElement,n=e.merge,l=e.error,a=e.fireEvent;return/*#__PURE__*/function(){function _class24(t,e){_classCallCheck(this,_class24);this.changedOptions={},this.chartOptionsJSON={},this.oldOptionsBuffer={},this.waitingForConfirmation=!1,this.iconsURLPrefix=t,this.closeSidebar=e;}_createClass(_class24,[{key:\"renderContent\",value:function renderContent(e,l){var _l$board2,_this123=this,_l$board3;var a,r;var d=l.board.editMode,c=l.editableOptions.getOptions();this.component=l,this.oldOptionsBuffer=n({},l.options),d&&(this.confirmationPopup=new i(l.board.container,d.iconsURLPrefix,d,{close:{icon:\"\"}}));var h=o(\"div\",{className:s.classNames.accordionMenu},{},e);for(var _e313=0,_i227=c.length;_e313<_i227;_e313++){var _l$board;a=c[_e313],r=t.renderCollapseHeader(h,n({iconsURLPrefix:this.iconsURLPrefix,lang:(((_l$board=l.board)===null||_l$board===void 0?void 0:_l$board.editMode)||s).lang},a)).content,this.renderAccordion(a,r,l);}var p=o(\"div\",{className:s.classNames.accordionMenuButtonsContainer},{},h);t.renderButton(p,{text:(((_l$board2=l.board)===null||_l$board2===void 0?void 0:_l$board2.editMode)||s).lang.confirmButton,className:s.classNames.popupConfirmBtn,callback:function(){var _callback=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee19(){return regeneratorRuntime.wrap(function _callee19$(_context19){while(1)switch(_context19.prev=_context19.next){case 0:_context19.next=2;return _this123.confirmChanges();case 2:case\"end\":return _context19.stop();}},_callee19);}));function callback(){return _callback.apply(this,arguments);}return callback;}()}),t.renderButton(p,{text:(((_l$board3=l.board)===null||_l$board3===void 0?void 0:_l$board3.editMode)||s).lang.cancelButton,className:s.classNames.popupCancelBtn,callback:function callback(){_this123.cancelChanges();}});}},{key:\"updateOptions\",value:function updateOptions(t,e){var _i$a,_this$component;var s,i;var o=t.length-1,n=this.changedOptions;if(0===o&&\"chartOptions\"===t[0])try{var _t352=JSON.parse(e);this.chartOptionsJSON=_t352;}catch(t){l(\"Dashboards Error: Wrong JSON config structure passed as a chart options. \\n____________\\n\".concat(t));}for(var _e314=0;_e314<o;_e314++){var _o124=t[_e314];if(n[_o124]||(n[_o124]={}),n=n[_o124],\"chartOptions\"===_o124){var _this$component$chart;var _t353=(_this$component$chart=this.component.chart)===null||_this$component$chart===void 0?void 0:_this$component$chart.options;if(_t353){var _e315=this.oldOptionsBuffer;_e315.chartOptions||(_e315.chartOptions={}),i=_e315.chartOptions,s=_t353;}}else s&&i&&(s=s[_o124],void 0===i[_o124]&&(i[_o124]={}),i=i[_o124]);}var a=t[o];n[a]=e,i&&s&&(i[a]=(_i$a=i[a])!==null&&_i$a!==void 0?_i$a:s[a]),(_this$component=this.component)===null||_this$component===void 0?void 0:_this$component.update(this.changedOptions);}},{key:\"renderAccordion\",value:function renderAccordion(e,s,i){var _this124=this;if(\"nested\"===e.type)return this.renderNested(s,e,i);var o=t.getRendererFunction(e.type);o&&o(s,_objectSpread(_objectSpread({},e),{},{iconsURLPrefix:this.iconsURLPrefix,value:i.getEditableOptionValue(e.propertyPath),onchange:function onchange(t){return _this124.updateOptions(e.propertyPath||[],t);}}));}},{key:\"renderNested\",value:function renderNested(e,i,o){var _this125=this;if(!e||!i.nestedOptions)return;var n=i.nestedOptions;var _loop12=function _loop12(){var _o$board;var l=n[_i228].name,a=n[_i228].options,r=!!n[_i228].showToggle,d=n[_i228].propertyPath||[],c=t.renderCollapseHeader(e,{name:l,isEnabled:!!o.getEditableOptionValue(d),iconsURLPrefix:_this125.iconsURLPrefix,showToggle:r,onchange:function onchange(t){return _this125.updateOptions(d,t);},isNested:!0,lang:(((_o$board=o.board)===null||_o$board===void 0?void 0:_o$board.editMode)||s).lang});for(var _t354=0,_e316=a.length;_t354<_e316;++_t354)_this125.renderAccordion(a[_t354],c.content,o);};for(var _i228=0,_l31=n.length;_i228<_l31;++_i228){_loop12();}}},{key:\"cancelChanges\",value:function cancelChanges(){Object.keys(this.changedOptions).length<1?this.closeSidebar():this.showCancelConfirmationPopup();}},{key:\"confirmChanges\",value:function(){var _confirmChanges=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee20(){var t,_e317;return regeneratorRuntime.wrap(function _callee20$(_context20){while(1)switch(_context20.prev=_context20.next){case 0:t=this.component;if(!t){_context20.next=12;break;}if(!(\"Highcharts\"===t.type&&Object.keys(this.chartOptionsJSON).length)){_context20.next=7;break;}_context20.next=5;return t.update({chartOptions:this.chartOptionsJSON});case 5:_context20.next=11;break;case 7:if(!(\"HTML\"===t.type)){_context20.next=11;break;}_e317=this.changedOptions;_context20.next=11;return t.update(_e317,!0);case 11:a(t.board.editMode,\"componentChanged\",{target:t,changedOptions:n({},this.changedOptions),oldOptions:n({},this.oldOptionsBuffer)}),this.changedOptions={},this.chartOptionsJSON={},this.closeSidebar();case 12:case\"end\":return _context20.stop();}},_callee20,this);}));function confirmChanges(){return _confirmChanges.apply(this,arguments);}return confirmChanges;}()},{key:\"discardChanges\",value:function(){var _discardChanges=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee21(){var t;return regeneratorRuntime.wrap(function _callee21$(_context21){while(1)switch(_context21.prev=_context21.next){case 0:t=this.component;_context21.t0=t;if(!_context21.t0){_context21.next=8;break;}_context21.next=5;return t.update(this.oldOptionsBuffer);case 5:a(t.board.editMode,\"componentChangesDiscarded\",{target:t,changedOptions:n({},this.changedOptions),oldOptions:n({},this.oldOptionsBuffer)});this.changedOptions={};this.chartOptionsJSON={};case 8:case\"end\":return _context21.stop();}},_callee21,this);}));function discardChanges(){return _discardChanges.apply(this,arguments);}return discardChanges;}()},{key:\"showCancelConfirmationPopup\",value:function showCancelConfirmationPopup(){var _this$component2,_this$component2$boar,_this126=this;var t=this.confirmationPopup,e=(_this$component2=this.component)===null||_this$component2===void 0?void 0:(_this$component2$boar=_this$component2.board)===null||_this$component2$boar===void 0?void 0:_this$component2$boar.editMode;t&&e&&!this.waitingForConfirmation&&(this.waitingForConfirmation=!0,t.show({text:e.lang.confirmDiscardChanges,confirmButton:{value:e.lang.confirmButton,callback:function(){var _callback2=_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee22(){return regeneratorRuntime.wrap(function _callee22$(_context22){while(1)switch(_context22.prev=_context22.next){case 0:_context22.next=2;return _this126.discardChanges();case 2:_this126.waitingForConfirmation=!1;_this126.closeSidebar();case 4:case\"end\":return _context22.stop();}},_callee22);}));function callback(){return _callback2.apply(this,arguments);}return callback;}(),context:this},cancelButton:{value:e.lang.cancelButton,callback:function callback(){t.closePopup(),e.setEditOverlay(),setTimeout(function(){_this126.waitingForConfirmation=!1;},100);}}}));}}]);return _class24;}();}),s(e,\"Dashboards/EditMode/SidebarPopup.js\",[e[\"Dashboards/Layout/CellHTML.js\"],e[\"Dashboards/EditMode/AccordionMenu.js\"],e[\"Shared/BaseForm.js\"],e[\"Dashboards/Actions/Bindings.js\"],e[\"Dashboards/Layout/Cell.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/EditMode/EditRenderer.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Dashboards/Layout/Layout.js\"],e[\"Core/Utilities.js\"]],function(t,e,s,i,o,n,l,a,r,d){var c=d.addEvent,h=d.createElement,p=d.fireEvent,u=d.merge;var m=/*#__PURE__*/function(_s222){_inherits(m,_s222);var _super57=_createSuper(m);function m(t,s,i){var _i$options$toolbars;var _this127;_classCallCheck(this,m);_this127=_super57.call(this,t,s),_this127.options={components:[\"HTML\",\"row\",\"Highcharts\",\"DataGrid\",\"KPI\"]},_this127.isVisible=!1,_this127.componentsList=[],_this127.editMode=i,_this127.options=u(_this127.options,((_i$options$toolbars=i.options.toolbars)===null||_i$options$toolbars===void 0?void 0:_i$options$toolbars.sidebar)||{}),_this127.componentsList=_this127.getComponentsList(_this127.options.components||[]),_this127.accordionMenu=new e(_this127.iconsURL,_this127.hide.bind(_assertThisInitialized(_this127)));return _this127;}_createClass(m,[{key:\"detectRightSidebar\",value:function detectRightSidebar(t){var e=this.editMode,s=e.customHTMLMode?e.board.container:e.board.layoutsWrapper;return!!s&&a.getOffsets(t,s).left<s.offsetWidth/2-10;}},{key:\"removeClassNames\",value:function removeClassNames(){var t=n.classNames,e=this.container.classList;e.remove(t.editSidebarShow),e.remove(t.editSidebarRightShow);}},{key:\"addClassNames\",value:function addClassNames(t){var e=this.container.classList;t?e.add(n.classNames.editSidebarRight):e.remove(n.classNames.editSidebarRight),setTimeout(function(){e.add(n.classNames[t?\"editSidebarRightShow\":\"editSidebarShow\"]);});}},{key:\"show\",value:function show(t){var e=this.editMode,s=!!(t&&this.detectRightSidebar(t));this.showPopup(n.classNames.editSidebarShow),this.addClassNames(s),e.resizer&&e.resizer.disableResizer(),e.editCellContext instanceof o&&e.editCellContext.row&&e.editCellContext.row.setHighlight(),e.hideToolbars([\"cell\",\"row\"]),e.stopContextDetection(),this.isVisible=!0,this.generateContent(t);}},{key:\"generateContent\",value:function generateContent(t){if(this.renderHeader(t?this.editMode.lang.settings:this.editMode.lang.addComponent,\"\"),!t){this.renderAddComponentsList();return;}if(this.type=t.getType(),\"cell-html\"===this.type||\"cell\"===this.type){var _e318=t.mountedComponent;if(!_e318)return;this.accordionMenu.renderContent(this.container,_e318);}}},{key:\"renderAddComponentsList\",value:function renderAddComponentsList(){var _this128=this;var t;var e=this,s=this.componentsList,i=h(\"div\",{className:n.classNames.editGridItems},{},e.container);var _loop13=function _loop13(_o125){(t=h(\"div\",{},{},i)).addEventListener(\"mousedown\",function(t){if(t.preventDefault(),e.editMode.dragDrop){var _i229=function _i229(t){var s=e.container.getBoundingClientRect();(t.clientX<s.left||t.clientX>s.right||t.clientY<s.top||t.clientY>s.bottom)&&(e.hide(),document.removeEventListener(\"mousemove\",_i229));},_n120=function _n120(){document.removeEventListener(\"mousemove\",_i229),document.removeEventListener(\"mouseup\",_n120);};document.addEventListener(\"mousemove\",_i229),document.addEventListener(\"mouseup\",_n120),e.editMode.dragDrop.onDragStart(t,void 0,function(t){if(0===_this128.editMode.board.layouts.length){var _e319=_this128.editMode.board,_s223=new r(_e319,{id:a.getElementId(\"layout\"),copyId:\"\",parentContainerId:_e319.container.id,rows:[{}],style:{}});_s223&&_e319.layouts.push(_s223),t=_s223.rows[0];}var n=s[_o125].onDrop(e,t);n&&(e.editMode.setEditCellContext(n),e.show(n),n.setHighlight()),document.removeEventListener(\"mousemove\",_i229);});}}),t.innerHTML=s[_o125].text;};for(var _o125=0,_n119=s.length;_o125<_n119;++_o125){_loop13(_o125);}}},{key:\"onDropNewComponent\",value:function onDropNewComponent(t,e){var _this129=this;var s=this.editMode.dragDrop;if(s){var _o126=(\"cell\"===t.getType()?t.row:t).addCell({id:a.getElementId(\"col\")});s.onCellDragEnd(_o126);var _n121=u(e,{cell:_o126.id}),_l32=i.addComponent(_n121,this.editMode.board,_o126);return this.editMode.setEditOverlay(),_asyncToGenerator(/*#__PURE__*/regeneratorRuntime.mark(function _callee23(){var t;return regeneratorRuntime.wrap(function _callee23$(_context23){while(1)switch(_context23.prev=_context23.next){case 0:_context23.next=2;return _l32;case 2:t=_context23.sent;t&&p(_this129.editMode,\"layoutChanged\",{type:\"newComponent\",target:t});case 4:case\"end\":return _context23.stop();}},_callee23);}))(),_o126;}}},{key:\"hide\",value:function hide(){var e=this.editMode,s=e.editCellContext;this.removeClassNames(),this.container.style.display=\"none\",e.isEditOverlayActive&&e.setEditOverlay(!0),s instanceof o&&s.row?(e.showToolbars([\"cell\",\"row\"],s),s.row.setHighlight(),s.setHighlight(!0)):s instanceof t&&e.cellToolbar&&(e.cellToolbar.showToolbar(s),s.setHighlight()),e.isContextDetectionActive=!0,this.isVisible=!1;}},{key:\"closeButtonEvents\",value:function closeButtonEvents(){\"cell\"===this.type||\"cell-html\"===this.type?this.accordionMenu.cancelChanges():this.hide();}},{key:\"renderHeader\",value:function renderHeader(t,e){var s=l.renderIcon(this.container,{icon:e,className:n.classNames.editSidebarTitle});s&&(s.textContent=t);}},{key:\"getComponentsList\",value:function getComponentsList(t){var e=this.editMode,s=e.board.componentTypes,i=[];return t.forEach(function(t){var _e$lang;var o=s[t];o?i.push({text:((_e$lang=e.lang)===null||_e$lang===void 0?void 0:_e$lang.sidebar[t])||o.name,onDrop:function onDrop(t,e){var s=o.prototype.getOptionsOnDrop(t);if(s)return t.onDropNewComponent(e,s);}}):\"row\"===t&&i.push(m.addRow);}),i;}},{key:\"addCloseButton\",value:function addCloseButton(){var _this130=this;var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:n.classNames.popupCloseButton;return c(document,\"click\",function(t){t.stopPropagation(),\"block\"===_this130.container.style.display&&!_this130.container.contains(t.target)&&_this130.container.classList.value.includes(\"show\")&&(\"cell\"===_this130.type||\"cell-html\"===_this130.type?_this130.accordionMenu.cancelChanges():_this130.hide());}),_get(_getPrototypeOf(m.prototype),\"addCloseButton\",this).call(this,t);}},{key:\"createPopupContainer\",value:function createPopupContainer(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:n.classNames.editSidebar;return _get(_getPrototypeOf(m.prototype),\"createPopupContainer\",this).call(this,t,e);}}]);return m;}(s);return m.addRow={text:n.lang.sidebar.row,onDrop:function onDrop(t,e){if(!e)return;var s=(\"cell\"===e.getType()?e.row:e).layout.board,o=a.getElementId(\"layout\"),n=a.getElementId(\"cell\"),l=new r(s,{id:o,copyId:\"\",parentContainerId:s.container.id,rows:[{cells:[{id:n}]}],style:{}});l&&(s.layouts.push(l),p(s.editMode,\"layoutChanged\",{type:\"newLayout\",target:l,board:s})),i.addComponent({type:\"HTML\",cell:n,className:\"highcharts-dashboards-component-placeholder\",html:\"\\n                            <h2> Placeholder </h2>\\n                            <span> This placeholder can be deleted when you add extra\\n                                components to this row.\\n                            </span>\\n                            \"},s);}},m;}),s(e,\"Dashboards/EditMode/EditContextMenu.js\",[e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Core/Utilities.js\"],e[\"Dashboards/EditMode/Menu/Menu.js\"]],function(t,e,s){var i=e.addEvent,o=e.merge;var n=/*#__PURE__*/function(_s224){_inherits(n,_s224);var _super58=_createSuper(n);function n(t,e,s){var _this131$editMode$boa;var _thisSuper,_this131;_classCallCheck(this,n);if(_this131=_super58.call(this,s.board.container,o(n.defaultOptions,e||{}),s),_this131.editMode=s,_this131.options=o(n.defaultOptions,e||{}),(_this131$editMode$boa=_this131.editMode.board.layoutsWrapper)!==null&&_this131$editMode$boa!==void 0&&_this131$editMode$boa.parentNode.insertBefore(_this131.container,_this131.editMode.board.layoutsWrapper),_this131.container.style.width=_this131.options.width+\"px\",_get((_thisSuper=_assertThisInitialized(_this131),_getPrototypeOf(n.prototype)),\"initItems\",_thisSuper).call(_thisSuper,n.items),_this131.options.items){var _t355=[];for(var _e320=0,_s225=_this131.options.items.length;_e320<_s225;++_e320)\"string\"==typeof _this131.options.items[_e320]?_t355.push(_this131.options.items[_e320]):_this131.options.items[_e320].id&&_t355.push(_this131.options.items[_e320].id);_this131.setActiveItems(_t355);}_this131.initEvents();return _possibleConstructorReturn(_this131);}_createClass(n,[{key:\"initEvents\",value:function initEvents(){var _this132=this;var e=this;i(document,\"click\",function(s){s.target!==_this132.container&&s.target!==e.editMode.tools.contextButtonElement&&!s.target.classList.contains(t.classNames.toggleSlider)&&\"INPUT\"!==s.target.tagName&&_this132.isVisible&&_this132.setVisible(!1);});}},{key:\"setVisible\",value:function setVisible(t){var e=this.editMode.tools.contextButtonElement;this.container&&e&&(t?(this.container.style.display=\"block\",this.isVisible=!0,e.setAttribute(\"aria-expanded\",\"true\")):(this.container.style.display=\"none\",this.isVisible=!1,e.setAttribute(\"aria-expanded\",\"false\")));}},{key:\"updatePosition\",value:function updatePosition(t,e,s){var i=this.options.width||0,o=t?t.offsetLeft-i+t.offsetWidth:e,_n122=t?t.offsetTop+t.offsetHeight:s;o&&_n122&&(this.container.style.left=o+\"px\",this.container.style.top=_n122+\"px\");}}]);return n;}(s);return n.defaultOptions={enabled:!0,width:150,className:t.classNames.contextMenu,itemsClassName:t.classNames.contextMenuItem,items:[\"editMode\"]},n.items=o(s.items,{editMode:{id:\"editMode\",type:\"toggle\",getValue:function getValue(t){return t.menu.editMode.isActive();},langKey:\"editMode\",events:{click:function click(){this.menu.editMode.toggleEditMode();}}}}),n;}),s(e,\"Dashboards/Actions/ContextDetection.js\",[e[\"Dashboards/Layout/GUIElement.js\"],e[\"Core/Utilities.js\"]],function(t,e){var s=e.defined;var i=/*#__PURE__*/function(){function i(){_classCallCheck(this,i);}_createClass(i,null,[{key:\"isGUIElementOnParentEdge\",value:function isGUIElementOnParentEdge(t,e){var s=\"top\"===e||\"bottom\"===e?t.row.layout.getVisibleRows():\"left\"===e||\"right\"===e?t.row.getVisibleCells():[],_i230=s.length-1;return s[_i230]===t&&\"right\"===e||s[_i230]===t.row&&\"bottom\"===e||s[0]===t&&\"left\"===e||s[0]===t.row&&\"top\"===e;}},{key:\"getContextLevel\",value:function getContextLevel(t,e,s,_i231){var o=t.getOverlappingLevels(_i231,e/2),n=e/o.length,l=o[o.length-1],a=t.row.layout.level-Math.floor(s/n);return a<l?l:a>t.row.layout.level?t.row.layout.level:a;}},{key:\"getContext\",value:function getContext(e,o,n){var _e$row3;var l;var a=t.getOffsets(e),_t$getDimFromOffsets=t.getDimFromOffsets(a),r=_t$getDimFromOffsets.width,d=_t$getDimFromOffsets.height;r<2*n&&(n=r/2);var c=o.clientX-a.left,h=o.clientY-a.top,p=\"bottom\";switch(c>=-n&&c<=n?p=\"left\":c-r>=-n&&c-r<=n?p=\"right\":h>=-n&&h<=n?p=\"top\":h-d>=-n&&h-d<=n&&(p=\"bottom\"),p){case\"right\":l=c-r+n;break;case\"left\":l=n-c;break;case\"top\":l=n-h;break;case\"bottom\":l=h-d+n;}var u={cell:e,side:p};if((_e$row3=e.row)!==null&&_e$row3!==void 0&&_e$row3.layout.level&&p&&i.isGUIElementOnParentEdge(e,p)&&s(l)){var _t356=i.getContextLevel(e,n,l,p),_s226=e.getParentCell(_t356);_s226&&(u.cell=_s226);}return u;}}]);return i;}();return i;}),s(e,\"Dashboards/Actions/DragDrop.js\",[e[\"Core/Utilities.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Dashboards/Actions/ContextDetection.js\"]],function(t,e,s,i,o){var n=t.addEvent,l=t.merge,a=t.css,r=t.fireEvent,d=t.createElement;var c=/*#__PURE__*/function(){function c(t,e){_classCallCheck(this,c);this.editMode=t,this.options=l(c.defaultOptions,e),this.mockElement=d(\"div\",{className:s.classNames.dragMock},{},t.board.container),this.dropPointer={isVisible:!1,align:\"\",element:d(\"div\",{className:s.classNames.dropPointer},{},t.board.container)},this.isActive=!1,this.initEvents();}_createClass(c,[{key:\"showDropPointer\",value:function showDropPointer(t,e,s,i){this.dropPointer.isVisible=!0,a(this.dropPointer.element,{display:\"block\",left:t+\"px\",top:e+\"px\",height:i+\"px\",width:s+\"px\"});}},{key:\"hideDropPointer\",value:function hideDropPointer(){this.dropPointer.isVisible&&(this.dropPointer.isVisible=!1,this.dropPointer.align=\"\",this.dropPointer.element.style.display=\"none\");}},{key:\"setMockElementPosition\",value:function setMockElementPosition(t){var e=this.editMode.board.container.getBoundingClientRect(),s=this.mockElement.clientWidth/2,i=t.clientX-e.left-s,o=t.clientY-e.top-s;a(this.mockElement,{left:i+\"px\",top:o+\"px\"});}},{key:\"initEvents\",value:function initEvents(){n(document,\"mousemove\",this.onDrag.bind(this)),n(document,\"mouseup\",this.onDragEnd.bind(this));}},{key:\"onDragStart\",value:function onDragStart(t,s,i){this.isActive=!0,this.editMode.hideToolbars([\"cell\",\"row\"]),this.editMode.resizer&&this.editMode.resizer.disableResizer(),this.setMockElementPosition(t),s?(this.context=s,s.hide(),s.getType()===e.guiElementType.cell&&(r(this.editMode.board,\"cellResize\",{cell:s}),r(s.row,\"cellChange\",{cell:s,row:s.row}))):i&&(this.dragEndCallback=i),a(this.mockElement,{cursor:\"grabbing\",display:\"block\"});}},{key:\"onDrag\",value:function onDrag(t){this.isActive&&(t.preventDefault(),this.setMockElementPosition(t),this.context?this.context.getType()===e.guiElementType.cell?this.onCellDrag(t):this.context.getType()===e.guiElementType.row&&this.onRowDrag(t):this.dragEndCallback&&this.onCellDrag(t));}},{key:\"onDragEnd\",value:function onDragEnd(){this.isActive&&(this.isActive=!1,a(this.mockElement,{cursor:\"grab\",display:\"none\"}),this.context?(this.context.getType()===e.guiElementType.cell?this.onCellDragEnd():this.context.getType()===e.guiElementType.row&&this.onRowDragEnd(),this.context=void 0,this.editMode.editCellContext&&(this.editMode.showToolbars([\"row\",\"cell\"],this.editMode.editCellContext),this.editMode.resizer&&this.editMode.resizer.setSnapPositions(this.editMode.editCellContext))):this.dragEndCallback&&(this.dragEndCallback(this.dropContext),this.dragEndCallback=void 0,this.hideDropPointer()));}},{key:\"onRowDrag\",value:function onRowDrag(t,e){var s=this.mouseCellContext,n=this.options.dropPointerSize||0,l=this.options.rowDropOffset||0,a=!1;if(s){var _r68=e||o.getContext(s,t,l),_d17=_r68.side;if((this.dropPointer.align!==_d17||this.dropContext!==_r68.cell.row)&&(a=!0,this.dropPointer.align=_d17,this.dropContext=_r68.cell.row),_d17){var _t357=i.getOffsets(this.dropContext,this.editMode.board.container),_i$getDimFromOffsets=i.getDimFromOffsets(_t357),_e321=_i$getDimFromOffsets.width,_s227=_i$getDimFromOffsets.height;(!this.dropPointer.isVisible||a)&&this.showDropPointer(_t357.left,_t357.top+(\"bottom\"===this.dropPointer.align?_s227:0)-n/2,_e321,n);}else this.dropContext=void 0,this.hideDropPointer();}}},{key:\"onRowDragEnd\",value:function onRowDragEnd(){var t=this.context,e=this.dropContext;this.dropPointer.align&&(t.layout.unmountRow(t),0===t.layout.rows.length&&t.layout.destroy(),e.layout.mountRow(t,(e.layout.getRowIndex(e)||0)+(\"bottom\"===this.dropPointer.align?1:0)),t.cells[0]&&(r(this.editMode.board,\"cellResize\",{cell:t.cells[0]}),r(t,\"cellChange\",{cell:t.cells[0],row:t}))),this.hideDropPointer(),t.show(),r(this.editMode,\"layoutChanged\",{type:\"rowDragEnd\",target:t,board:this.editMode.board});}},{key:\"onCellDrag\",value:function onCellDrag(t,e){var s=this.mouseCellContext,i=this.options.cellDropOffset||0;s||e?this.onCellDragCellCtx(t,e||o.getContext(s,t,i)):this.mouseRowContext&&this.onCellDragRowCtx(t,this.mouseRowContext);}},{key:\"onCellDragCellCtx\",value:function onCellDragCellCtx(t,e){var s=this.options.dropPointerSize||0,o=e.side,n=!1;if((this.dropPointer.align!==o||this.dropContext!==e.cell)&&(n=!0,this.dropPointer.align=o,this.dropContext=e.cell),\"right\"===o||\"left\"===o){var _e322=i.getOffsets(this.dropContext,this.editMode.board.container),_i$getDimFromOffsets2=i.getDimFromOffsets(_e322),_l33=_i$getDimFromOffsets2.width,_a50=_i$getDimFromOffsets2.height;if(!this.dropPointer.isVisible||n){var _i232=this.dropContext.row.getRowLevelInfo(t.clientY),_n123=_i232?_i232.rowLevel.bottom-_i232.rowLevel.top:_a50;this.showDropPointer(_e322.left+(\"right\"===o?_l33:0)-s/2,_e322.top,s,_n123);}}else if(\"top\"===o||\"bottom\"===o){var _s228=i.getOffsets(this.dropContext),_n124=this.dropContext.row.getRowLevelInfo(_s228.top);_n124&&(0===_n124.index&&\"top\"===o||_n124.index===_n124.rowLevels.length-1&&\"bottom\"===o)&&this.onRowDrag(t,e);}else this.dropContext=void 0,this.hideDropPointer();}},{key:\"onCellDragRowCtx\",value:function onCellDragRowCtx(t,e){var s,o;var n=this.options.dropPointerSize||0,l=i.getOffsets(e),a=e.getRowLevelInfo(t.clientY);if(a)for(var _e323=0,_r69=a.rowLevel.cells.length;_e323<_r69;++_e323){s=a.rowLevel.cells[_e323],o=i.getOffsets(s);var _i$getDimFromOffsets3=i.getDimFromOffsets(o),_d18=_i$getDimFromOffsets3.width,_c22=_i$getDimFromOffsets3.height,h=this.editMode.board.container.getBoundingClientRect(),_p18=a.rowLevel.bottom-a.rowLevel.top;if(s.isVisible){if(_c22<.8*_p18&&o.left<=t.clientX&&o.right>=t.clientX)o.top>t.clientY||o.bottom<t.clientY&&(this.showDropPointer(o.left-h.left,o.top-h.top+_c22,_d18,_p18-_c22),this.dropPointer.align=\"nestedBottom\",this.dropContext=s),_e323=_r69;else if(0===_e323&&o.left>t.clientX||_e323===_r69-1&&o.right<t.clientX){if(o.left>t.clientX);else if(o.right<t.clientX){var _i233=l.right-o.right;this.showDropPointer(o.left+(0===_e323&&o.left>t.clientX?0:_d18)-n/2-h.left,o.top-h.top,_i233>n?_i233:n,_p18||_c22),this.dropPointer.align=\"right\",this.dropContext=s;}_e323=_r69;}}else s.isVisible||s!==this.context||(this.dropContext=void 0,this.hideDropPointer());}}},{key:\"onCellDragEnd\",value:function onCellDragEnd(t){var s=t||this.context,o=this.dropContext;if(this.dropPointer.align&&o&&s){if(s.row.unmountCell(s),0===s.row.cells.length&&s.row.destroy(),(\"top\"===this.dropPointer.align||\"bottom\"===this.dropPointer.align)&&o.getType()===e.guiElementType.row)o.layout.addRow({},void 0,(o.layout.getRowIndex(o)||0)+(\"bottom\"===this.dropPointer.align?1:0)).mountCell(s,0);else if(\"nestedBottom\"===this.dropPointer.align&&o.getType()===e.guiElementType.cell){var _t358=o.row,_e324=_t358.getCellIndex(o);_t358.unmountCell(o);var _n125=_t358.addCell({id:i.getElementId(\"col-nested\"),layout:{rows:[{},{}]}},void 0,_e324);_n125.nestedLayout&&(_n125.nestedLayout.rows[0].mountCell(o),_n125.nestedLayout.rows[1].mountCell(s));}else o.getType()===e.guiElementType.cell&&o.row.mountCell(s,(o.row.getCellIndex(o)||0)+(\"right\"===this.dropPointer.align?1:0));}r(this.editMode.board,\"cellResize\",{cell:s}),r(s.row,\"cellChange\",{cell:s,row:s.row}),this.hideDropPointer(),s.show(),r(this.editMode,\"layoutChanged\",{type:\"cellDragEnd\",target:s,board:this.editMode.board});}}]);return c;}();return c.defaultOptions={enabled:!0,rowDropOffset:30,cellDropOffset:30,dropPointerSize:16},c;}),s(e,\"Dashboards/Actions/Resizer.js\",[e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Core/Utilities.js\"]],function(t,e,s){var i=s.merge,o=s.addEvent,n=s.createElement,l=s.fireEvent,a=s.removeEvent;var r=/*#__PURE__*/function(){function r(t,e){_classCallCheck(this,r);this.editMode=t,this.options=i({},r.defaultOptions,t.options.resize,e),this.currentCell=void 0,this.isX=this.options.type.indexOf(\"x\")>-1,this.isY=this.options.type.indexOf(\"y\")>-1,this.isActive=!1,this.startX=0,this.tempSiblingsWidth=[],this.addSnaps();}_createClass(r,[{key:\"addSnaps\",value:function addSnaps(){var e=this.editMode.iconsURLPrefix,s=this.options.snap.width||0,i=this.options.snap.height||0,o=this.editMode.board.container;this.snapRight=n(\"img\",{className:t.classNames.resizeSnap+\" \"+t.classNames.resizeSnapX,src:e+\"resize-handle.svg\"},{width:s+\"px\",height:i+\"px\",left:\"-9999px\"},o),this.snapBottom=n(\"img\",{className:t.classNames.resizeSnap+\" \"+t.classNames.resizeSnapY,src:e+\"resize-handle.svg\"},{width:s+\"px\",height:i+\"px\",top:\"-9999px\",left:\"0px\"},o),this.addResizeEvents();}},{key:\"disableResizer\",value:function disableResizer(){this.isActive=!1,this.currentDimension=void 0,this.currentCell=void 0,this.snapRight&&(this.snapRight.style.left=\"-9999px\"),this.snapBottom&&(this.snapBottom.style.left=\"-9999px\");}},{key:\"setSnapPositions\",value:function setSnapPositions(t){this.currentCell=t;var s=e.getOffsets(t,this.editMode.board.container),i=s.left||0,o=s.top||0,_e$getDimFromOffsets=e.getDimFromOffsets(s),n=_e$getDimFromOffsets.width,l=_e$getDimFromOffsets.height,a=this.options.snap.width||0,_r70=this.options.snap.height||0;this.snapRight&&(this.snapRight.style.left=i+n-a+\"px\",this.snapRight.style.top=o+l/2-_r70/2+\"px\"),this.snapBottom&&(this.snapBottom.style.top=o+l-_r70+\"px\",this.snapBottom.style.left=i+n/2-a/2+\"px\");}},{key:\"setTempWidthSiblings\",value:function setTempWidthSiblings(){var t=this.currentCell;if(t){var _s229,_i234;var _o127=e.getOffsets(t),_n126=t.row.getRowLevelInfo(_o127.top),_l34=_n126&&_n126.rowLevel.cells||[];for(var _e325=0,_o128=_l34.length;_e325<_o128&&(_s229=(_i234=_l34[_e325]).container,_i234!==t);++_e325)_s229&&(_s229.style.flex=\"0 0 \"+_s229.offsetWidth+\"px\",this.tempSiblingsWidth.push(_i234));}}},{key:\"revertSiblingsAutoWidth\",value:function revertSiblingsAutoWidth(){var t,e;var s=this.tempSiblingsWidth;for(var _i235=0,_o129=s.length;_i235<_o129;++_i235)(t=s[_i235].container)&&(t.style.flex=\"1 1 0%\",e=s[_i235]);this.tempSiblingsWidth=[],e&&(l(this.editMode.board,\"cellResize\",{cell:e}),l(e.row,\"cellChange\",{cell:e,row:e.row}));}},{key:\"addResizeEvents\",value:function addResizeEvents(){var t,e,s,i;var n=this;n.mouseDownSnapX=t=function t(_t359){n.isActive=!0,n.currentDimension=\"x\",n.editMode.hideToolbars([\"row\",\"cell\"]),n.setTempWidthSiblings(),n.startX=_t359.clientX;},n.mouseDownSnapY=e=function e(){n.isActive=!0,n.currentDimension=\"y\",n.editMode.hideToolbars([\"row\",\"cell\"]);},n.mouseMoveSnap=s=function s(t){n.isActive&&n.onMouseMove(t);},n.mouseUpSnap=i=function i(){n.isActive&&(n.isActive=!1,n.currentDimension=void 0,n.revertSiblingsAutoWidth(),n.editMode.showToolbars([\"row\",\"cell\"],n.currentCell),n.currentCell&&n.setSnapPositions(n.currentCell));},o(this.snapRight,\"mousedown\",t),o(this.snapBottom,\"mousedown\",e),o(document,\"mousemove\",s),o(document,\"mouseup\",i);var l=function l(){n.currentCell&&n.setSnapPositions(n.currentCell);};if(\"function\"==typeof ResizeObserver)this.resizeObserver=new ResizeObserver(l),this.resizeObserver.observe(n.editMode.board.container);else{var _t360=o(window,\"resize\",l);o(this,\"destroy\",_t360);}}},{key:\"onMouseMove\",value:function onMouseMove(t){var s=this.currentCell,i=s&&s.container,o=this.currentDimension;if(s&&i&&!((s.row.layout.board.editMode||{}).dragDrop||{}).isActive){var _i236=e.getOffsets(s),_e$getDimFromOffsets2=e.getDimFromOffsets(e.getOffsets(s.row)),_n127=_e$getDimFromOffsets2.width;if(\"x\"===o){var _e326=Math.min(t.clientX-_i236.left,_n127)/_n127*100+\"%\";s.setSize(_e326),this.startX=t.clientX;}\"y\"===o&&s.setSize(void 0,t.clientY-_i236.top),l(this.editMode.board,\"cellResize\",{cell:s}),l(s.row,\"cellChange\",{cell:s,row:s.row}),this.setSnapPositions(s);}}},{key:\"destroy\",value:function destroy(){var _this$resizeObserver2;var t;var e=[\"snapRight\",\"snapBottom\"];a(document,\"mousemove\"),a(document,\"mouseup\"),(_this$resizeObserver2=this.resizeObserver)===null||_this$resizeObserver2===void 0?void 0:_this$resizeObserver2.unobserve(this.editMode.board.container);for(var _s230=0,_i237=e.length;_s230<_i237;++_s230)a(t=this[e[_s230]],\"mousedown\"),t.remove();}},{key:\"toJSON\",value:function toJSON(){var t=this.options;return{$class:\"Dashboards.Action.Resizer\",options:{enabled:t.enabled,styles:{minWidth:t.styles.minWidth,minHeight:t.styles.minHeight},type:t.type,snap:{width:t.snap.width,height:t.snap.height}}};}}],[{key:\"fromJSON\",value:function fromJSON(t,e){return new r(t,e.options);}}]);return r;}();return r.defaultOptions={enabled:!0,styles:{minWidth:20,minHeight:50},type:\"xy\",snap:{width:9,height:17}},r;}),s(e,\"Dashboards/EditMode/EditMode.js\",[e[\"Dashboards/Layout/Cell.js\"],e[\"Dashboards/Layout/CellHTML.js\"],e[\"Dashboards/EditMode/EditGlobals.js\"],e[\"Dashboards/EditMode/EditRenderer.js\"],e[\"Dashboards/EditMode/Toolbar/CellEditToolbar.js\"],e[\"Dashboards/EditMode/Toolbar/RowEditToolbar.js\"],e[\"Dashboards/EditMode/SidebarPopup.js\"],e[\"Dashboards/EditMode/EditContextMenu.js\"],e[\"Dashboards/Actions/DragDrop.js\"],e[\"Dashboards/Actions/Resizer.js\"],e[\"Dashboards/EditMode/ConfirmationPopup.js\"],e[\"Dashboards/Layout/GUIElement.js\"],e[\"Dashboards/Globals.js\"],e[\"Dashboards/Layout/Layout.js\"],e[\"Core/Utilities.js\"]],function(e,s,i,o,n,l,a,r,d,c,h,p,u,m,b){var g=b.addEvent,f=b.createElement,C=b.css,v=b.merge;return/*#__PURE__*/function(){function _class25(e,s){_classCallCheck(this,_class25);this.active=!1,this.customHTMLMode=!1,this.iconsURLPrefix=\"https://code.highcharts.com/dashboards/2.3.0/gfx/dashboards-icons/\",this.iconsURLPrefix=s&&s.iconsURLPrefix||this.iconsURLPrefix,this.options=v({confirmationPopup:{close:{icon:this.iconsURLPrefix+\"close.svg\"}},contextMenu:{icon:this.iconsURLPrefix+\"menu.svg\"},dragDrop:{enabled:!0},enabled:!0,resize:{enabled:!0},settings:{enabled:!0},toolbars:{cell:{enabled:!0},row:{enabled:!0}},tools:{addComponentBtn:{enabled:!0,icon:this.iconsURLPrefix+\"add.svg\"}}},s||{}),this.board=e,this.lang=v({},i.lang,this.options.lang),e.boardWrapper=e.container,e.guiEnabled&&this.initLayout(),this.isInitialized=!1,this.isContextDetectionActive=!1,this.tools={},e.editModeEnabled&&(this.customHTMLMode=!this.board.layoutsWrapper,this.contextPointer={isVisible:!1,element:f(\"div\",{className:i.classNames.contextDetectionPointer},{},e.container)},this.createTools(),this.confirmationPopup=new h(e.container,this.iconsURLPrefix,this,this.options.confirmationPopup),this.editOverlay=f(\"div\",{className:i.classNames.editOverlay},{},e.container),this.isEditOverlayActive=!1,e.fullscreen=new t.FullScreen(e),this.customHTMLMode&&e.container.classList.add(u.classNames.boardContainer));}_createClass(_class25,[{key:\"onContextBtnClick\",value:function onContextBtnClick(){this.tools.contextMenu&&(this.tools.contextMenu.isVisible||this.tools.contextMenu.updatePosition(this.tools.contextButtonElement),this.tools.contextMenu.setVisible(!this.tools.contextMenu.isVisible));}},{key:\"toggleEditMode\",value:function toggleEditMode(){this.active?this.deactivate():this.activate();}},{key:\"init\",value:function init(){var _this$options$resize,_this$options$toolbar,_this$options$toolbar2,_this$options$toolbar3,_this$options$toolbar4;(_this$options$resize=this.options.resize)!==null&&_this$options$resize!==void 0&&_this$options$resize.enabled&&!this.customHTMLMode&&(this.resizer=new c(this,this.options.resize)),this.dragDrop=new d(this,this.options.dragDrop),!((_this$options$toolbar=this.options.toolbars)!==null&&_this$options$toolbar!==void 0&&(_this$options$toolbar2=_this$options$toolbar.row)!==null&&_this$options$toolbar2!==void 0&&_this$options$toolbar2.enabled)||this.rowToolbar||this.customHTMLMode||(this.rowToolbar=new l(this)),(_this$options$toolbar3=this.options.toolbars)!==null&&_this$options$toolbar3!==void 0&&(_this$options$toolbar4=_this$options$toolbar3.cell)!==null&&_this$options$toolbar4!==void 0&&_this$options$toolbar4.enabled&&!this.cellToolbar&&(this.cellToolbar=new n(this)),this.sidebar||(this.sidebar=new a(this.board.container,this.iconsURLPrefix,this)),this.isInitialized=!0;}},{key:\"initEvents\",value:function initEvents(){var t=this,e=t.board;if(this.customHTMLMode){var _s231=e.mountedComponents.length;for(var _i238=0;_i238<_s231;++_i238)t.setCellEvents(e.mountedComponents[_i238].cell);}else for(var _s232=0,_i239=e.layouts.length;_s232<_i239;++_s232)t.setLayoutEvents(e.layouts[_s232]);t.cellToolbar&&(g(t.cellToolbar.container,\"mouseenter\",function(){t.stopContextDetection();}),g(t.cellToolbar.container,\"mouseleave\",function(){t.isContextDetectionActive=!0;})),t.rowToolbar&&(g(t.rowToolbar.container,\"mouseenter\",function(){t.stopContextDetection();}),g(t.rowToolbar.container,\"mouseleave\",function(){t.isContextDetectionActive=!0;}));var s=this.customHTMLMode?e.container:e.layoutsWrapper;g(s,\"mousemove\",t.onDetectContext.bind(t)),g(s,\"click\",t.onContextConfirm.bind(t)),g(s,\"mouseleave\",function(){t.hideContextPointer();});}},{key:\"initLayout\",value:function initLayout(){var t=this.board;t.container.innerHTML=\"\",t.container=f(\"div\",{className:u.classNames.boardContainer},{},t.boardWrapper),t.layoutsWrapper=f(\"div\",{className:u.classNames.layoutsWrapper},{},t.container),t.options.gui&&this.setLayouts(t.options.gui),t.options.layoutsJSON&&!t.layouts.length&&this.setLayoutsFromJSON(t.options.layoutsJSON);}},{key:\"setLayouts\",value:function setLayouts(t){var e=this.board,s=t.layouts;for(var _i240=0,_o130=s.length;_i240<_o130;++_i240)e.layouts.push(new m(e,v({},t.layoutOptions,s[_i240])));}},{key:\"setLayoutsFromJSON\",value:function setLayoutsFromJSON(t){var e;var s=this.board;for(var _i241=0,_o131=t.length;_i241<_o131;++_i241)(e=m.fromJSON(t[_i241],s))&&s.layouts.push(e);}},{key:\"setLayoutEvents\",value:function setLayoutEvents(t){for(var _e327=0,_s233=t.rows.length;_e327<_s233;++_e327){var _s234=t.rows[_e327];this.setRowEvents(_s234);for(var _t361=0,_e328=_s234.cells.length;_t361<_e328;++_t361)this.setCellEvents(_s234.cells[_t361]);}}},{key:\"setRowEvents\",value:function setRowEvents(t){var e=this;if(e.dragDrop){var _s235=e.dragDrop;g(t.container,\"mouseenter\",function(){e.isContextDetectionActive&&(e.mouseRowContext=t);}),g(t.container,\"mousemove\",function(e){_s235.isActive&&e.target===t.container&&(_s235.mouseRowContext=t);}),g(t.container,\"mouseleave\",function(){_s235.isActive&&_s235.mouseRowContext===t&&(_s235.mouseRowContext=void 0),e.isContextDetectionActive&&(e.mouseRowContext=void 0);});}}},{key:\"setCellEvents\",value:function setCellEvents(t){var e=this;if(t instanceof s)g(t.container,\"mouseenter\",function(){e.isContextDetectionActive&&(e.mouseCellContext=t);});else if(t.nestedLayout)e.setLayoutEvents(t.nestedLayout);else if(e.cellToolbar&&t.container&&(g(t.container,\"mouseenter\",function(){e.isContextDetectionActive&&(e.mouseCellContext=t);}),e.dragDrop||e.resizer)){var _s236=e.dragDrop;g(t.container,\"mousemove\",function(e){_s236&&_s236.isActive&&e.target===t.container&&(_s236.mouseCellContext=t,_s236.mouseRowContext=void 0);}),g(t.container,\"mouseleave\",function(){_s236&&_s236.isActive&&_s236.mouseCellContext===t&&(_s236.mouseCellContext=void 0),e.isContextDetectionActive&&(e.mouseCellContext=void 0);});}}},{key:\"activate\",value:function activate(){this.isInitialized||(this.init(),this.initEvents()),this.board.container.classList.add(i.classNames.editModeEnabled),this.addComponentBtn&&(this.addComponentBtn.style.display=\"block\"),this.active=!0,this.isContextDetectionActive=!0;}},{key:\"deactivate\",value:function deactivate(){var _this$editCellContext;this.board.container.classList.remove(i.classNames.editModeEnabled),this.hideToolbars(),this.editCellContext&&this.editCellContext instanceof e&&(_this$editCellContext=this.editCellContext.row)!==null&&_this$editCellContext!==void 0&&_this$editCellContext.setHighlight(),this.addComponentBtn&&(this.addComponentBtn.style.display=\"none\"),this.resizer&&this.resizer.disableResizer(),this.board.layoutsWrapper&&(this.board.layoutsWrapper.style.width=\"100%\"),this.board.reflow(),this.active=!1,this.stopContextDetection(),this.editCellContext=void 0,this.potentialCellContext=void 0;}},{key:\"isActive\",value:function isActive(){return this.active;}},{key:\"hideToolbars\",value:function hideToolbars(t){var e=t||[\"cell\",\"row\",\"sidebar\"];for(var _t362=0,_s237=e.length;_t362<_s237;++_t362)switch(e[_t362]){case\"cell\":this.cellToolbar&&this.cellToolbar.isVisible&&this.cellToolbar.hide();break;case\"row\":this.rowToolbar&&this.rowToolbar.isVisible&&this.rowToolbar.hide();break;case\"sidebar\":this.sidebar&&this.sidebar.isVisible&&this.sidebar.hide();}}},{key:\"showToolbars\",value:function showToolbars(t,e){var s=t||[\"cell\",\"row\",\"sidebar\"];for(var _t363=0,_i242=s.length;_t363<_i242;++_t363)switch(s[_t363]){case\"cell\":e&&this.cellToolbar&&this.cellToolbar.showToolbar(e);break;case\"row\":e&&e.row&&this.rowToolbar&&this.rowToolbar.showToolbar(e.row);break;case\"sidebar\":this.sidebar&&!this.sidebar.isVisible&&this.sidebar.show();}}},{key:\"createTools\",value:function createTools(){var _s$tools,_s$tools$addComponent,_s$toolbars,_s$toolbars$cell;var t=this,e=t.board,s=t.options,n=t.tools;if(n.container=document.createElement(\"div\"),n.container.classList.add(i.classNames.editTools),e.layoutsWrapper?e.layoutsWrapper.parentNode.insertBefore(n.container,e.layoutsWrapper):e.container.insertBefore(n.container,e.container.firstChild),s.contextMenu&&s.contextMenu.enabled&&(n.contextButtonElement=o.renderContextButton(n.container,t),t.tools.contextMenu||(t.tools.contextMenu=new r(t.board.container,t.options.contextMenu||{},t))),(_s$tools=s.tools)!==null&&_s$tools!==void 0&&(_s$tools$addComponent=_s$tools.addComponentBtn)!==null&&_s$tools$addComponent!==void 0&&_s$tools$addComponent.enabled&&(_s$toolbars=s.toolbars)!==null&&_s$toolbars!==void 0&&(_s$toolbars$cell=_s$toolbars.cell)!==null&&_s$toolbars$cell!==void 0&&_s$toolbars$cell.enabled&&!this.customHTMLMode){var _e329=s.tools.addComponentBtn.icon;this.addComponentBtn=o.renderButton(n.container,{className:i.classNames.editToolsBtn,icon:_e329,text:this.lang.addComponent,callback:function callback(){t.sidebar&&(t.sidebar.show(),t.setEditOverlay());},style:{display:\"none\"}});}}},{key:\"onDetectContext\",value:function onDetectContext(){var t;if(this.isActive()&&this.isContextDetectionActive&&(this.mouseCellContext||this.mouseRowContext)&&!(this.dragDrop||{}).isActive&&(this.mouseCellContext?t=this.mouseCellContext:this.mouseRowContext&&(t=this.mouseRowContext.layout.parentCell),this.potentialCellContext=t,t)){var _e330=p.getOffsets(t,this.board.container),_p$getDimFromOffsets=p.getDimFromOffsets(_e330),_s238=_p$getDimFromOffsets.width,_i243=_p$getDimFromOffsets.height;this.showContextPointer(_e330.left,_e330.top,_s238,_i243);}}},{key:\"stopContextDetection\",value:function stopContextDetection(){this.isContextDetectionActive=!1,this.dragDrop&&(this.dragDrop.mouseCellContext=void 0),this.mouseCellContext=void 0,this.hideContextPointer();}},{key:\"onContextConfirm\",value:function onContextConfirm(){this.isContextDetectionActive&&this.potentialCellContext&&this.editCellContext!==this.potentialCellContext&&this.setEditCellContext(this.potentialCellContext,this.editCellContext);}},{key:\"setEditCellContext\",value:function setEditCellContext(t,e){var _this$cellToolbar;if(t instanceof s||e instanceof s)this.editCellContext=t,(_this$cellToolbar=this.cellToolbar)===null||_this$cellToolbar===void 0?void 0:_this$cellToolbar.showToolbar(t);else{var _s239=e===null||e===void 0?void 0:e.row;this.editCellContext=t,this.showToolbars([\"row\",\"cell\"],t),(!_s239||_s239!==t.row)&&(_s239&&_s239.setHighlight(),t.row&&t.row.setHighlight()),this.resizer&&this.resizer.setSnapPositions(t);}}},{key:\"showContextPointer\",value:function showContextPointer(t,e,s,i){this.contextPointer&&(this.contextPointer.isVisible=!0,C(this.contextPointer.element,{display:\"block\",left:t+\"px\",top:e+\"px\",height:i+\"px\",width:s+\"px\"}));}},{key:\"hideContextPointer\",value:function hideContextPointer(){var _this$contextPointer;((_this$contextPointer=this.contextPointer)===null||_this$contextPointer===void 0?void 0:_this$contextPointer.isVisible)&&(this.contextPointer.isVisible=!1,this.contextPointer.element.style.display=\"none\");}},{key:\"setEditOverlay\",value:function setEditOverlay(t){var e=this.editOverlay,s=e===null||e===void 0?void 0:e.classList.contains(i.classNames.editOverlayActive);t||s?t&&s&&(e!==null&&e!==void 0&&e.classList.remove(i.classNames.editOverlayActive),this.isEditOverlayActive=!1):(e!==null&&e!==void 0&&e.classList.add(i.classNames.editOverlayActive),this.isEditOverlayActive=!0);}}]);return _class25;}();}),s(e,\"Dashboards/EditMode/Fullscreen.js\",[e[\"Core/Utilities.js\"],e[\"Dashboards/Globals.js\"]],function(t,e){var s=t.addEvent;return/*#__PURE__*/function(){function _class26(t){_classCallCheck(this,_class26);this.isOpen=!1,this.board=t,this.board.boardWrapper.classList.add(e.classNamePrefix+\"-fullscreen\");}_createClass(_class26,[{key:\"toggle\",value:function toggle(){this[this.isOpen?\"close\":\"open\"]();}},{key:\"open\",value:function open(){if(this.isOpen)return;var t=this,e=t.board,i=s(e.boardWrapper.ownerDocument,\"fullscreenchange\",function(){t.isOpen?(t.isOpen=!1,t.close()):(t.isOpen=!0,t.setButtonText());});t.unbindFullscreenEvent=function(){i();},e.boardWrapper.requestFullscreen()[\"catch\"](function(){throw Error(\"Full screen is not supported.\");});}},{key:\"close\",value:function close(){var t=this.board;this.isOpen&&t.boardWrapper.ownerDocument instanceof Document&&t.boardWrapper.ownerDocument.exitFullscreen(),this.unbindFullscreenEvent&&(this.unbindFullscreenEvent=this.unbindFullscreenEvent()),this.isOpen=!1,this.setButtonText();}},{key:\"setButtonText\",value:function setButtonText(){var t=this.board.editMode,e=t&&t.tools.contextMenu,s=e&&e.items.viewFullscreen;if(s&&s.innerElement){var _e331=t.lang;s.innerElement.innerHTML=(this.isOpen?_e331.exitFullscreen:_e331.viewFullscreen)||\"\";}}}]);return _class26;}();}),s(e,\"masters/modules/layout.src.js\",[e[\"Dashboards/Globals.js\"],e[\"Dashboards/EditMode/EditMode.js\"],e[\"Dashboards/EditMode/Fullscreen.js\"]],function(t,e,s){return t.EditMode=e,t.FullScreen=s,t;});});!/**\n * Highcharts Dashboards Math 2.3.0 (2024-08-26)\n *\n * (c) 2009-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n */function(e){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(e[\"default\"]=e,module.exports=e):\"function\"==typeof define&&define.amd?define(\"dashboards/modules/math-modifier\",[\"dashboards\"],function(t){return e(t),e.Dashboards=t,e;}):e(\"undefined\"!=typeof Dashboards?Dashboards:void 0);}(function(e){\"use strict\";var t=e?e._modules:{};function r(t,r,n,o){t.hasOwnProperty(r)||(t[r]=o.apply(null,n),\"function\"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent(\"DashboardsModuleLoaded\",{detail:{path:r,module:t[r]}})));}r(t,\"Data/Formula/FormulaParser.js\",[],function(){var e=/^(?:FALSE|TRUE)/,t=/^[+\\-]?\\d+(?:\\.\\d+)?(?:e[+\\-]\\d+)?/,r=/^[+\\-]?\\d+(?:,\\d+)?(?:e[+\\-]\\d+)?/,n=/^([A-Z][A-Z\\d\\.]*)\\(/,o=/^(?:[+\\-*\\/^<=>]|<=|=>)/,s=/^(\\$?[A-Z]+)(\\$?\\d+)\\:(\\$?[A-Z]+)(\\$?\\d+)/,u=/^R(\\d*|\\[\\d+\\])C(\\d*|\\[\\d+\\])\\:R(\\d*|\\[\\d+\\])C(\\d*|\\[\\d+\\])/,a=/^(\\$?[A-Z]+)(\\$?\\d+)(?![\\:C])/,i=/^R(\\d*|\\[\\d+\\])C(\\d*|\\[\\d+\\])(?!\\:)/;function l(e){var t=0;for(var _r71=0,_n128=e.length,_o132,_s240=1;_r71<_n128;++_r71){if(\"(\"===(_o132=e[_r71])){t||(_s240=_r71+1),++t;continue;}if(\")\"===_o132&&! --t)return e.substring(_s240,_r71);}if(t>0){var _e332=Error(\"Incomplete parantheses.\");throw _e332.name=\"FormulaParseError\",_e332;}return\"\";}function c(e){var t=-1;for(var _r72=0,_n129=e.length,_o133,_s241=!1;_r72<_n129;++_r72){if(\"\\\\\"===(_o133=e[_r72])){_s241=!_s241;continue;}if(_s241){_s241=!1;continue;}if('\"'===_o133){if(!(t<0))return e.substring(t+1,_r72);t=_r72;}}var r=Error(\"Incomplete string.\");throw r.name=\"FormulaParseError\",r;}function f(e,t){var r;if(r=e.match(u)){var _e333=\"\"===r[2]||\"[\"===r[2][0],_t364=\"\"===r[1]||\"[\"===r[1][0],_n130=\"\"===r[4]||\"[\"===r[4][0],_o134=\"\"===r[3]||\"[\"===r[3][0],_s242={type:\"range\",beginColumn:_e333?parseInt(r[2].substring(1,-1)||\"0\",10):parseInt(r[2],10)-1,beginRow:_t364?parseInt(r[1].substring(1,-1)||\"0\",10):parseInt(r[1],10)-1,endColumn:_n130?parseInt(r[4].substring(1,-1)||\"0\",10):parseInt(r[4],10)-1,endRow:_o134?parseInt(r[3].substring(1,-1)||\"0\",10):parseInt(r[3],10)-1};return _e333&&(_s242.beginColumnRelative=!0),_t364&&(_s242.beginRowRelative=!0),_n130&&(_s242.endColumnRelative=!0),_o134&&(_s242.endRowRelative=!0),_s242;}if(r=e.match(s)){var _e334=\"$\"!==r[1][0],_t365=\"$\"!==r[2][0],_n131=\"$\"!==r[3][0],_o135=\"$\"!==r[4][0],_s243={type:\"range\",beginColumn:g(_e334?r[1]:r[1].substring(1))-1,beginRow:parseInt(_t365?r[2]:r[2].substring(1),10)-1,endColumn:g(_n131?r[3]:r[3].substring(1))-1,endRow:parseInt(_o135?r[4]:r[4].substring(1),10)-1};return _e334&&(_s243.beginColumnRelative=!0),_t365&&(_s243.beginRowRelative=!0),_n131&&(_s243.endColumnRelative=!0),_o135&&(_s243.endRowRelative=!0),_s243;}var n=m(e,t);return 1===n.length&&\"string\"!=typeof n[0]?n[0]:n;}function m(s,u){var F=u?r:t,p=[],h,b=(\"=\"===s[0]?s.substring(1):s).trim();for(;b;){if(h=b.match(i)){var _e335=\"\"===h[2]||\"[\"===h[2][0],_t366=\"\"===h[1]||\"[\"===h[1][0],_r73={type:\"reference\",column:_e335?parseInt(h[2].substring(1,-1)||\"0\",10):parseInt(h[2],10)-1,row:_t366?parseInt(h[1].substring(1,-1)||\"0\",10):parseInt(h[1],10)-1};_e335&&(_r73.columnRelative=!0),_t366&&(_r73.rowRelative=!0),p.push(_r73),b=b.substring(h[0].length).trim();continue;}if(h=b.match(a)){var _e336=\"$\"!==h[1][0],_t367=\"$\"!==h[2][0],_r74={type:\"reference\",column:g(_e336?h[1]:h[1].substring(1))-1,row:parseInt(_t367?h[2]:h[2].substring(1),10)-1};_e336&&(_r74.columnRelative=!0),_t367&&(_r74.rowRelative=!0),p.push(_r74),b=b.substring(h[0].length).trim();continue;}if(h=b.match(o)){p.push(h[0]),b=b.substring(h[0].length).trim();continue;}if(h=b.match(e)){p.push(\"TRUE\"===h[0]),b=b.substring(h[0].length).trim();continue;}if(h=b.match(F)){p.push(parseFloat(h[0])),b=b.substring(h[0].length).trim();continue;}if('\"'===b[0]){var _e337=c(b);p.push(_e337.substring(1,-1)),b=b.substring(_e337.length+2).trim();continue;}if(h=b.match(n)){var _e338=l(b=b.substring(h[1].length).trim());p.push({type:\"function\",name:h[1],args:function(e,t){var r=[],n=t?\";\":\",\",o=0,s=\"\";for(var _u11=0,_a51=e.length,_i244;_u11<_a51;++_u11)if((_i244=e[_u11])===n&&!o&&s)r.push(f(s,t)),s=\"\";else if('\"'!==_i244||o||s)\" \"!==_i244&&(s+=_i244,\"(\"===_i244?++o:\")\"===_i244&&--o);else{var _t368=c(e.substring(_u11));r.push(_t368),_u11+=_t368.length+1;}return!o&&s&&r.push(f(s,t)),r;}(_e338,u)}),b=b.substring(_e338.length+2).trim();continue;}if(\"(\"===b[0]){var _e339=l(b);if(_e339){p.push(m(_e339,u)),b=b.substring(_e339.length+2).trim();continue;}}var _t369=s.length-b.length,_r75=Error(\"Unexpected character `\"+s.substring(_t369,_t369+1)+\"` at position \"+(_t369+1)+\". (`...\"+s.substring(_t369-5,_t369+6)+\"...`)\");throw _r75.name=\"FormulaParseError\",_r75;}return p;}function g(e){var t=0;for(var _r76=0,_n132=e.length,_o136,_s244=e.length-1;_r76<_n132;++_r76)(_o136=e.charCodeAt(_r76))>=65&&_o136<=90&&(t+=(_o136-64)*Math.pow(26,_s244)),--_s244;return t;}return{parseFormula:m};}),r(t,\"Data/Formula/FormulaTypes.js\",[],function(){var e=[\"+\",\"-\",\"*\",\"/\",\"^\",\"=\",\"<\",\"<=\",\">\",\">=\"];return{isFormula:function isFormula(e){return e instanceof Array;},isFunction:function isFunction(e){return\"object\"==_typeof(e)&&!(e instanceof Array)&&\"function\"===e.type;},isOperator:function isOperator(t){return\"string\"==typeof t&&e.indexOf(t)>=0;},isRange:function isRange(e){return\"object\"==_typeof(e)&&!(e instanceof Array)&&\"range\"===e.type;},isReference:function isReference(e){return\"object\"==_typeof(e)&&!(e instanceof Array)&&\"reference\"===e.type;},isValue:function isValue(e){return\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e;}};}),r(t,\"Data/Formula/FormulaProcessor.js\",[t[\"Data/Formula/FormulaTypes.js\"]],function(e){var t=e.isFormula,r=e.isFunction,n=e.isOperator,o=e.isRange,s=e.isReference,u=e.isValue,a=/ */,i=Number.MAX_VALUE/1.000000000001,l=Number.MAX_VALUE/1.000000000002,c=Number.MAX_VALUE,f={\"^\":3,\"*\":2,\"/\":2,\"+\":1,\"-\":1,\"=\":0,\"<\":0,\"<=\":0,\">\":0,\">=\":0},m={},g=/^[A-Z][A-Z\\.]*$/;function F(e){switch(_typeof(e)){case\"boolean\":return e?c:i;case\"string\":return l;case\"number\":return e;default:return NaN;}}function p(e){return\"string\"==typeof e?e.toLowerCase().replace(a,\"\\0\"):e;}function h(e){switch(_typeof(e)){case\"boolean\":return e?1:0;case\"string\":return parseFloat(e.replace(\",\",\".\"));case\"number\":return e;default:return NaN;}}function b(e,t,r){var n;switch(e){case\"=\":return p(t)===p(r);case\"<\":if(_typeof(t)==_typeof(r))return p(t)<p(r);return F(t)<F(r);case\"<=\":if(_typeof(t)==_typeof(r))return p(t)<=p(r);return F(t)<=F(r);case\">\":if(_typeof(t)==_typeof(r))return p(t)>p(r);return F(t)>F(r);case\">=\":if(_typeof(t)==_typeof(r))return p(t)>=p(r);return F(t)>=F(r);}switch(t=h(t),r=h(r),e){case\"+\":n=t+r;break;case\"-\":n=t-r;break;case\"*\":n=t*r;break;case\"/\":n=t/r;break;case\"^\":n=Math.pow(t,r);break;default:return NaN;}return n%1?Math.round(1e9*n)/1e9:n;}function d(e,n){return u(e)?e:o(e)?n&&N(e,n)||[]:r(e)?D(e,n):j(t(e)?e:[e],n);}function N(e,t){var r=t.getColumnNames().slice(e.beginColumn,e.endColumn+1),n=[];for(var _o137=0,_s245=r.length,_a52;_o137<_s245;++_o137){var _s246=t.getColumn(r[_o137],!0)||[];for(var _i245=e.beginRow,_l35=e.endRow+1;_i245<_l35;++_i245)\"string\"==typeof(_a52=_s246[_i245])&&\"=\"===_a52[0]&&t!==t.modified&&(_a52=t.modified.getCell(r[_o137],_i245)),n.push(u(_a52)?_a52:NaN);}return n;}function y(e,t){var r=t.getColumnNames()[e.column];if(r){var _n133=t.getCell(r,e.row);if(\"string\"==typeof _n133&&\"=\"===_n133[0]&&t!==t.modified){var _n134=t.modified.getCell(r,e.row);return u(_n134)?_n134:NaN;}return u(_n133)?_n133:NaN;}return NaN;}function j(e,o){var a;for(var _i246=0,_l36=e.length,_c23,_m10,_g13,_F;_i246<_l36;++_i246){if(n(_c23=e[_i246])){_m10=_c23;continue;}if(u(_c23)?_F=_c23:t(_c23)?_F=j(e,o):r(_c23)?_F=u(_g13=D(_c23,o))?_g13:NaN:s(_c23)&&(_F=o&&y(_c23,o)),void 0!==_F){if(void 0===a)a=_m10?b(_m10,0,_F):_F;else{if(!_m10)return NaN;var _t370=e[_i246+1];n(_t370)&&f[_t370]>f[_m10]&&(_F=b(_t370,_F,j(e.slice(_i246+2))),_i246=_l36),a=b(_m10,a,_F);}_m10=void 0,_F=void 0;}}return u(a)?a:NaN;}function D(e,t,r){var n=m[e.name];if(n)try{return n(e.args,t);}catch(_unused){return NaN;}var o=Error(\"Function \\\"\".concat(e.name,\"\\\" not found.\"));throw o.name=\"FormulaProcessError\",o;}return{asNumber:h,getArgumentValue:d,getArgumentsValues:function getArgumentsValues(e,t){var r=[];for(var _n135=0,_o138=e.length;_n135<_o138;++_n135)r.push(d(e[_n135],t));return r;},getRangeValues:N,getReferenceValue:y,processFormula:j,processorFunctions:m,registerProcessorFunction:function registerProcessorFunction(e,t){return g.test(e)&&!m[e]&&!!(m[e]=t);},translateReferences:function e(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var u=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;for(var _a53=0,_i247=t.length,_l37;_a53<_i247;++_a53)(_l37=t[_a53])instanceof Array?e(_l37,n,u):r(_l37)?e(_l37.args,n,u):o(_l37)?(_l37.beginColumnRelative&&(_l37.beginColumn+=n),_l37.beginRowRelative&&(_l37.beginRow+=u),_l37.endColumnRelative&&(_l37.endColumn+=n),_l37.endRowRelative&&(_l37.endRow+=u)):s(_l37)&&(_l37.columnRelative&&(_l37.column+=n),_l37.rowRelative&&(_l37.row+=u));return t;}};}),r(t,\"Data/Formula/Functions/ABS.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){var n=t(e[0],r);switch(_typeof(n)){case\"number\":return Math.abs(n);case\"object\":{var _e340=[];for(var _t371=0,_r77=n.length,o;_t371<_r77;++_t371){if(\"number\"!=typeof(o=n[_t371]))return NaN;_e340.push(Math.abs(o));}return _e340;}default:return NaN;}}return e.registerProcessorFunction(\"ABS\",r),r;}),r(t,\"Data/Formula/Functions/AND.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,n){for(var o=0,s=e.length,_u12;o<s;++o)if(!(_u12=t(e[o],n))||\"object\"==_typeof(_u12)&&!r(_u12,n))return!1;return!0;}return e.registerProcessorFunction(\"AND\",r),r;}),r(t,\"Data/Formula/Functions/AVERAGE.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentsValues;function r(e,r){var n=t(e,r),o=0,s=0;for(var _e341=0,_t372=n.length,_r78;_e341<_t372;++_e341)switch(_typeof(_r78=n[_e341])){case\"number\":isNaN(_r78)||(++o,s+=_r78);break;case\"object\":for(var _e342=0,_t373=_r78.length,_n136;_e342<_t373;++_e342)\"number\"!=typeof(_n136=_r78[_e342])||isNaN(_n136)||(++o,s+=_n136);}return o?s/o:0;}return e.registerProcessorFunction(\"AVERAGE\",r),r;}),r(t,\"Data/Formula/Functions/AVERAGEA.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){var n=0,o=0;for(var s=0,_u13=e.length,a;s<_u13;++s)switch(_typeof(a=t(e[s],r))){case\"boolean\":++n,o+=a?1:0;continue;case\"number\":isNaN(a)||(++n,o+=a);continue;case\"string\":++n;continue;default:for(var _e343=0,_t374=a.length,_r79;_e343<_t374;++_e343)switch(_typeof(_r79=a[_e343])){case\"boolean\":++n,o+=_r79?1:0;continue;case\"number\":isNaN(_r79)||(++n,o+=_r79);continue;case\"string\":++n;continue;}continue;}return n?o/n:0;}return e.registerProcessorFunction(\"AVERAGEA\",r),r;}),r(t,\"Data/Formula/Functions/COUNT.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){function t(r,n){var o=e.getArgumentsValues(r,n),s=0;for(var _e344=0,_r80=o.length,_u14;_e344<_r80;++_e344)switch(_typeof(_u14=o[_e344])){case\"number\":!isNaN(_u14)&&++s;break;case\"object\":s+=t(_u14,n);}return s;}return e.registerProcessorFunction(\"COUNT\",t),t;}),r(t,\"Data/Formula/Functions/COUNTA.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){function t(r,n){var o=e.getArgumentsValues(r,n),s=0;for(var _e345=0,_r81=o.length,_u15;_e345<_r81;++_e345){switch(_typeof(_u15=o[_e345])){case\"number\":if(isNaN(_u15))continue;break;case\"object\":s+=t(_u15,n);continue;case\"string\":if(!_u15)continue;}++s;}return s;}return e.registerProcessorFunction(\"COUNTA\",t),t;}),r(t,\"Data/Formula/Functions/IF.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){return t(e[0],r)?t(e[1],r):t(e[2],r);}return e.registerProcessorFunction(\"IF\",r),r;}),r(t,\"Data/Formula/Functions/ISNA.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){var n=t(e[0],r);return\"number\"!=typeof n||isNaN(n);}return e.registerProcessorFunction(\"ISNA\",r),r;}),r(t,\"Data/Formula/Functions/MAX.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentsValues;function r(e,n){var o=t(e,n),s=Number.NEGATIVE_INFINITY;for(var _e346=0,_t375=o.length,_n137;_e346<_t375;++_e346)switch(_typeof(_n137=o[_e346])){case\"number\":_n137>s&&(s=_n137);break;case\"object\":(_n137=r(_n137))>s&&(s=_n137);}return isFinite(s)?s:0;}return e.registerProcessorFunction(\"MAX\",r),r;}),r(t,\"Data/Formula/Functions/MEDIAN.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){function t(t,r){var n=[],o=e.getArgumentsValues(t,r);for(var _e347=0,_t376=o.length,_r82;_e347<_t376;++_e347)switch(_typeof(_r82=o[_e347])){case\"number\":isNaN(_r82)||n.push(_r82);break;case\"object\":for(var _e348=0,_t377=_r82.length,_o139;_e348<_t377;++_e348)\"number\"!=typeof(_o139=_r82[_e348])||isNaN(_o139)||n.push(_o139);}var s=n.length;if(!s)return NaN;var u=Math.floor(s/2);return s%2?n[u]:(n[u-1]+n[u])/2;}return e.registerProcessorFunction(\"MEDIAN\",t),t;}),r(t,\"Data/Formula/Functions/MIN.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentsValues;function r(e,n){var o=t(e,n),s=Number.POSITIVE_INFINITY;for(var _e349=0,_t378=o.length,_n138;_e349<_t378;++_e349)switch(_typeof(_n138=o[_e349])){case\"number\":_n138<s&&(s=_n138);break;case\"object\":(_n138=r(_n138))<s&&(s=_n138);}return isFinite(s)?s:0;}return e.registerProcessorFunction(\"MIN\",r),r;}),r(t,\"Data/Formula/Functions/MOD.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){var n=t(e[0],r),o=t(e[1],r);return(\"object\"==_typeof(n)&&(n=n[0]),\"object\"==_typeof(o)&&(o=o[0]),\"number\"!=typeof n||\"number\"!=typeof o||0===o)?NaN:n%o;}return e.registerProcessorFunction(\"MOD\",r),r;}),r(t,\"Data/Formula/Functions/MODE.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){function t(t,r){var n={},o=e.getArgumentsValues(t,r);for(var _e350=0,_t379=o.length,_r83;_e350<_t379;++_e350)switch(_typeof(_r83=o[_e350])){case\"number\":isNaN(_r83)||(n[_r83]=(n[_r83]||0)+1);break;case\"object\":for(var _e351=0,_t380=_r83.length,_o140;_e351<_t380;++_e351)\"number\"!=typeof(_o140=_r83[_e351])||isNaN(_o140)||(n[_o140]=(n[_o140]||0)+1);}return n;}function r(e,r){var n=t(e,r),o=Object.keys(n);if(!o.length)return NaN;var s=[parseFloat(o[0])],u=n[o[0]];for(var _e352=1,_t381=o.length,_r84,a;_e352<_t381;++_e352)u<(a=n[_r84=o[_e352]])?(s=[parseFloat(_r84)],u=a):u===a&&s.push(parseFloat(_r84));return u>1?s:NaN;}function n(e,r){var n=t(e,r),o=Object.keys(n);if(!o.length)return NaN;var s=parseFloat(o[0]),u=n[o[0]];for(var _e353=1,_t382=o.length,_r85,a,i;_e353<_t382;++_e353)u<(i=n[_r85=o[_e353]])?(s=parseFloat(_r85),u=i):u===i&&s>(a=parseFloat(_r85))&&(s=a,u=i);return u>1?s:NaN;}return e.registerProcessorFunction(\"MODE\",n),e.registerProcessorFunction(\"MODE.MULT\",r),e.registerProcessorFunction(\"MODE.SNGL\",n),{MULT:r,SNGL:n};}),r(t,\"Data/Formula/Functions/NOT.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){var n=t(e[0],r);switch(\"object\"==_typeof(n)&&(n=n[0]),_typeof(n)){case\"boolean\":case\"number\":return!n;}return NaN;}return e.registerProcessorFunction(\"NOT\",r),r;}),r(t,\"Data/Formula/Functions/OR.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,n){for(var o=0,s=e.length,_u16;o<s;++o)if(\"object\"==_typeof(_u16=t(e[o],n))){if(r(_u16,n))return!0;}else if(_u16)return!0;return!1;}return e.registerProcessorFunction(\"OR\",r),r;}),r(t,\"Data/Formula/Functions/PRODUCT.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentsValues;function r(e,n){var o=t(e,n),s=1,u=!1;for(var _e354=0,_t383=o.length,a;_e354<_t383;++_e354)switch(_typeof(a=o[_e354])){case\"number\":isNaN(a)||(u=!0,s*=a);break;case\"object\":u=!0,s*=r(a,n);}return u?s:0;}return e.registerProcessorFunction(\"PRODUCT\",r),r;}),r(t,\"Data/Formula/Functions/SUM.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){function t(r,n){var o=e.getArgumentsValues(r,n),s=0;for(var _e355=0,_r86=o.length,_u17;_e355<_r86;++_e355)switch(_typeof(_u17=o[_e355])){case\"number\":isNaN(_u17)||(s+=_u17);break;case\"object\":s+=t(_u17,n);}return s;}return e.registerProcessorFunction(\"SUM\",t),t;}),r(t,\"Data/Formula/Functions/XOR.js\",[t[\"Data/Formula/FormulaProcessor.js\"]],function(e){var t=e.getArgumentValue;function r(e,r){for(var n=0,o=e.length,s,_u18;n<o;++n)switch(_typeof(_u18=t(e[n],r))){case\"boolean\":case\"number\":if(void 0===s)s=!!_u18;else if(!!_u18!==s)return!0;break;case\"object\":for(var _e356=0,_t384=_u18.length,_r87;_e356<_t384;++_e356)switch(_typeof(_r87=_u18[_e356])){case\"boolean\":case\"number\":if(void 0===s)s=!!_r87;else if(!!_r87!==s)return!0;}}return!1;}return e.registerProcessorFunction(\"XOR\",r),r;}),r(t,\"Data/Formula/Formula.js\",[t[\"Data/Formula/FormulaParser.js\"],t[\"Data/Formula/FormulaProcessor.js\"],t[\"Data/Formula/FormulaTypes.js\"]],function(e,t,r){return _objectSpread(_objectSpread(_objectSpread({},e),t),r);}),r(t,\"Data/Modifiers/MathModifier.js\",[t[\"Data/Modifiers/DataModifier.js\"],t[\"Data/Formula/FormulaParser.js\"],t[\"Data/Formula/FormulaProcessor.js\"]],function(e,t,r){var n=/*#__PURE__*/function(_e357){_inherits(n,_e357);var _super59=_createSuper(n);function n(e){var _this133;_classCallCheck(this,n);_this133=_super59.call(this),_this133.options=_objectSpread(_objectSpread({},n.defaultOptions),e);return _this133;}_createClass(n,[{key:\"modifyTable\",value:function modifyTable(e,r){this.emit({type:\"modify\",detail:r,table:e});var _n139=this.options.alternativeSeparators,o=this.options.formulaColumns||e.getColumnNames(),s=e.modified;for(var _t385=0,_r88=o.length,_n144;_t385<_r88;++_t385)_n144=o[_t385],o.indexOf(_n144)>=0&&s.setColumn(_n144,this.processColumn(e,_n144));var u=this.options.columnFormulas||[];for(var _r89=0,_o141=u.length,a,i;_r89<_o141;++_r89)a=u[_r89],i=t.parseFormula(a.formula,_n139),s.setColumn(a.column,this.processColumnFormula(i,e,a.rowStart,a.rowEnd));return this.emit({type:\"afterModify\",detail:r,table:e}),e;}},{key:\"processColumn\",value:function processColumn(e,_n141){var o=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var s=this.options.alternativeSeparators,u=(e.getColumn(_n141,!0)||[]).slice(o>0?o:0);for(var _n145=0,_o142=u.length,a=[],i;_n145<_o142;++_n145)if(\"string\"==typeof(i=u[_n145])&&\"=\"===i[0])try{a=\"\"===i?a:t.parseFormula(i.substring(1),s),u[_n145]=r.processFormula(a,e);}catch(_unused2){u[_n145]=NaN;}return u;}},{key:\"processColumnFormula\",value:function processColumnFormula(e,t){var _n143=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var o=arguments.length>3&&arguments[3]!==undefined?arguments[3]:t.getRowCount();_n143=_n143>=0?_n143:0,o=o>=0?o:t.getRowCount()+o;var s=[],u=t.modified;for(var _t386=0,a=o-_n143;_t386<a;++_t386)try{s[_t386]=r.processFormula(e,u);}catch(_unused3){s[_t386]=NaN;}finally{e=r.translateReferences(e,0,1);}return s;}}]);return n;}(e);return n.defaultOptions={type:\"Math\",alternativeSeparators:!1},e.registerType(\"Math\",n),n;}),r(t,\"masters/modules/math-modifier.src.js\",[t[\"Dashboards/Globals.js\"],t[\"Data/Formula/Formula.js\"]],function(e,t){return e.Formula=t,e;});});!/**\n * Highcharts JS v11.4.8 (2024-08-29)\n *\n * Exporting module\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */function(e){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(e[\"default\"]=e,module.exports=e):\"function\"==typeof define&&define.amd?define(\"highcharts/modules/exporting\",[\"highcharts\"],function(t){return e(t),e.Highcharts=t,e;}):e(\"undefined\"!=typeof Highcharts?Highcharts:void 0);}(function(e){\"use strict\";var t=e?e._modules:{};function n(t,n,i,o){t.hasOwnProperty(n)||(t[n]=o.apply(null,i),\"function\"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent(\"HighchartsModuleLoaded\",{detail:{path:n,module:t[n]}})));}n(t,\"Core/Chart/ChartNavigationComposition.js\",[],function(){var e;return function(e){e.compose=function(e){return e.navigation||(e.navigation=new t(e)),e;};var t=/*#__PURE__*/function(){function t(e){_classCallCheck(this,t);this.updates=[],this.chart=e;}_createClass(t,[{key:\"addUpdate\",value:function addUpdate(e){this.chart.navigation.updates.push(e);}},{key:\"update\",value:function update(e,_t387){var _this134=this;this.updates.forEach(function(n){n.call(_this134.chart,e,_t387);});}}]);return t;}();e.Additions=t;}(e||(e={})),e;}),n(t,\"Extensions/Exporting/ExportingDefaults.js\",[t[\"Core/Globals.js\"]],function(e){var t=e.isTouchDevice;return{exporting:{allowTableSorting:!0,type:\"image/png\",url:\"https://export.highcharts.com/\",pdfFont:{normal:void 0,bold:void 0,bolditalic:void 0,italic:void 0},printMaxWidth:780,scale:2,buttons:{contextButton:{className:\"highcharts-contextbutton\",menuClassName:\"highcharts-contextmenu\",symbol:\"menu\",titleKey:\"contextButtonTitle\",menuItems:[\"viewFullscreen\",\"printChart\",\"separator\",\"downloadPNG\",\"downloadJPEG\",\"downloadPDF\",\"downloadSVG\"]}},menuItemDefinitions:{viewFullscreen:{textKey:\"viewFullscreen\",onclick:function onclick(){this.fullscreen&&this.fullscreen.toggle();}},printChart:{textKey:\"printChart\",onclick:function onclick(){this.print();}},separator:{separator:!0},downloadPNG:{textKey:\"downloadPNG\",onclick:function onclick(){this.exportChart();}},downloadJPEG:{textKey:\"downloadJPEG\",onclick:function onclick(){this.exportChart({type:\"image/jpeg\"});}},downloadPDF:{textKey:\"downloadPDF\",onclick:function onclick(){this.exportChart({type:\"application/pdf\"});}},downloadSVG:{textKey:\"downloadSVG\",onclick:function onclick(){this.exportChart({type:\"image/svg+xml\"});}}}},lang:{viewFullscreen:\"View in full screen\",exitFullscreen:\"Exit from full screen\",printChart:\"Print chart\",downloadPNG:\"Download PNG image\",downloadJPEG:\"Download JPEG image\",downloadPDF:\"Download PDF document\",downloadSVG:\"Download SVG vector image\",contextButtonTitle:\"Chart context menu\"},navigation:{buttonOptions:{symbolSize:14,symbolX:14.5,symbolY:13.5,align:\"right\",buttonSpacing:3,height:28,verticalAlign:\"top\",width:28,symbolFill:\"#666666\",symbolStroke:\"#666666\",symbolStrokeWidth:3,theme:{fill:\"#ffffff\",padding:5,stroke:\"none\",\"stroke-linecap\":\"round\"}},menuStyle:{border:\"none\",borderRadius:\"3px\",background:\"#ffffff\",padding:\"0.5em\"},menuItemStyle:{background:\"none\",borderRadius:\"3px\",color:\"#333333\",padding:\"0.5em\",fontSize:t?\"0.9em\":\"0.8em\",transition:\"background 250ms, color 250ms\"},menuItemHoverStyle:{background:\"#f2f2f2\"}}};}),n(t,\"Extensions/Exporting/ExportingSymbols.js\",[],function(){var e;return function(e){var t=[];function n(e,t,n,i){return[[\"M\",e,t+2.5],[\"L\",e+n,t+2.5],[\"M\",e,t+i/2+.5],[\"L\",e+n,t+i/2+.5],[\"M\",e,t+i-1.5],[\"L\",e+n,t+i-1.5]];}function i(e,t,n,i){var o=i/3-2;return[].concat(this.circle(n-o,t,o,o),this.circle(n-o,t+o+4,o,o),this.circle(n-o,t+2*(o+4),o,o));}e.compose=function(e){if(-1===t.indexOf(e)){t.push(e);var o=e.prototype.symbols;o.menu=n,o.menuball=i.bind(o);}};}(e||(e={})),e;}),n(t,\"Extensions/Exporting/Fullscreen.js\",[t[\"Core/Renderer/HTML/AST.js\"],t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t,n){var i=t.composed,o=n.addEvent,r=n.fireEvent,s=n.pushUnique;function l(){this.fullscreen=new a(this);}var a=/*#__PURE__*/function(){function a(e){_classCallCheck(this,a);this.chart=e,this.isOpen=!1;var t=e.renderTo;!this.browserProps&&(\"function\"==typeof t.requestFullscreen?this.browserProps={fullscreenChange:\"fullscreenchange\",requestFullscreen:\"requestFullscreen\",exitFullscreen:\"exitFullscreen\"}:t.mozRequestFullScreen?this.browserProps={fullscreenChange:\"mozfullscreenchange\",requestFullscreen:\"mozRequestFullScreen\",exitFullscreen:\"mozCancelFullScreen\"}:t.webkitRequestFullScreen?this.browserProps={fullscreenChange:\"webkitfullscreenchange\",requestFullscreen:\"webkitRequestFullScreen\",exitFullscreen:\"webkitExitFullscreen\"}:t.msRequestFullscreen&&(this.browserProps={fullscreenChange:\"MSFullscreenChange\",requestFullscreen:\"msRequestFullscreen\",exitFullscreen:\"msExitFullscreen\"}));}_createClass(a,[{key:\"close\",value:function close(){var e=this,t=e.chart,n=t.options.chart;r(t,\"fullscreenClose\",null,function(){e.isOpen&&e.browserProps&&t.container.ownerDocument instanceof Document&&t.container.ownerDocument[e.browserProps.exitFullscreen](),e.unbindFullscreenEvent&&(e.unbindFullscreenEvent=e.unbindFullscreenEvent()),t.setSize(e.origWidth,e.origHeight,!1),e.origWidth=void 0,e.origHeight=void 0,n.width=e.origWidthOption,n.height=e.origHeightOption,e.origWidthOption=void 0,e.origHeightOption=void 0,e.isOpen=!1,e.setButtonText();});}},{key:\"open\",value:function open(){var e=this,t=e.chart,n=t.options.chart;r(t,\"fullscreenOpen\",null,function(){if(n&&(e.origWidthOption=n.width,e.origHeightOption=n.height),e.origWidth=t.chartWidth,e.origHeight=t.chartHeight,e.browserProps){var _n146=o(t.container.ownerDocument,e.browserProps.fullscreenChange,function(){e.isOpen?(e.isOpen=!1,e.close()):(t.setSize(null,null,!1),e.isOpen=!0,e.setButtonText());}),_i248=o(t,\"destroy\",_n146);e.unbindFullscreenEvent=function(){_n146(),_i248();};var _r90=t.renderTo[e.browserProps.requestFullscreen]();_r90&&_r90[\"catch\"](function(){alert(\"Full screen is not supported inside a frame.\");});}});}},{key:\"setButtonText\",value:function setButtonText(){var t=this.chart,n=t.exportDivElements,i=t.options.exporting,o=i&&i.buttons&&i.buttons.contextButton.menuItems,r=t.options.lang;if(i&&i.menuItemDefinitions&&r&&r.exitFullscreen&&r.viewFullscreen&&o&&n){var _t388=n[o.indexOf(\"viewFullscreen\")];_t388&&e.setElementHTML(_t388,this.isOpen?r.exitFullscreen:i.menuItemDefinitions.viewFullscreen.text||r.viewFullscreen);}}},{key:\"toggle\",value:function toggle(){this.isOpen?this.close():this.open();}}],[{key:\"compose\",value:function compose(e){s(i,\"Fullscreen\")&&o(e,\"beforeRender\",l);}}]);return a;}();return a;}),n(t,\"Core/HttpUtilities.js\",[t[\"Core/Globals.js\"],t[\"Core/Utilities.js\"]],function(e,t){var n=e.win,i=t.discardElement,o=t.objectEach,r={ajax:function ajax(e){var t={json:\"application/json\",xml:\"application/xml\",text:\"text/plain\",octet:\"application/octet-stream\"},n=new XMLHttpRequest();function i(t,n){e.error&&e.error(t,n);}if(!e.url)return!1;n.open((e.type||\"get\").toUpperCase(),e.url,!0),e.headers&&e.headers[\"Content-Type\"]||n.setRequestHeader(\"Content-Type\",t[e.dataType||\"json\"]||t.text),o(e.headers,function(e,t){n.setRequestHeader(t,e);}),e.responseType&&(n.responseType=e.responseType),n.onreadystatechange=function(){var t;if(4===n.readyState){if(200===n.status){if(\"blob\"!==e.responseType&&(t=n.responseText,\"json\"===e.dataType))try{t=JSON.parse(t);}catch(e){if(e instanceof Error)return i(n,e);}return e.success&&e.success(t,n);}i(n,n.responseText);}},e.data&&\"string\"!=typeof e.data&&(e.data=JSON.stringify(e.data)),n.send(e.data);},getJSON:function getJSON(e,t){r.ajax({url:e,success:t,dataType:\"json\",headers:{\"Content-Type\":\"text/plain\"}});},post:function post(e,t,r){var s=new n.FormData();o(t,function(e,t){s.append(t,e);}),s.append(\"b64\",\"true\");var l=t.filename,a=t.type;return n.fetch(e,_objectSpread({method:\"POST\",body:s},r)).then(function(e){e.ok&&e.text().then(function(e){var t=document.createElement(\"a\");t.href=\"data:\".concat(a,\";base64,\").concat(e),t.download=l,t.click(),i(t);});});}};return r;}),n(t,\"Extensions/Exporting/Exporting.js\",[t[\"Core/Renderer/HTML/AST.js\"],t[\"Core/Chart/Chart.js\"],t[\"Core/Chart/ChartNavigationComposition.js\"],t[\"Core/Defaults.js\"],t[\"Extensions/Exporting/ExportingDefaults.js\"],t[\"Extensions/Exporting/ExportingSymbols.js\"],t[\"Extensions/Exporting/Fullscreen.js\"],t[\"Core/Globals.js\"],t[\"Core/HttpUtilities.js\"],t[\"Core/Utilities.js\"]],function(e,t,n,i,o,r,s,l,a,c){var u;var p=i.defaultOptions,h=l.doc,d=l.SVG_NS,g=l.win,f=c.addEvent,m=c.css,x=c.createElement,y=c.discardElement,b=c.extend,v=c.find,w=c.fireEvent,E=c.isObject,C=c.merge,S=c.objectEach,F=c.pick,T=c.removeEvent,O=c.uniqueKey;return function(t){var i;var u=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/^parentRule$/,/^(cssRules|ownerRules)$/,/perspective/,/TapHighlightColor/,/^transition/,/^length$/,/^\\d+$/],M=[\"fill\",\"stroke\",\"strokeLinecap\",\"strokeLinejoin\",\"strokeWidth\",\"textAnchor\",\"x\",\"y\"];t.inlineAllowlist=[];var P=[\"clipPath\",\"defs\",\"desc\"];function k(e){var t,n;var i=this,o=i.renderer,r=C(i.options.navigation.buttonOptions,e),s=r.onclick,l=r.menuItems,a=r.symbolSize||12;if(i.btnCount||(i.btnCount=0),i.exportDivElements||(i.exportDivElements=[],i.exportSVGElements=[]),!1===r.enabled||!r.theme)return;var c=i.styledMode?{}:r.theme;s?n=function n(e){e&&e.stopPropagation(),s.call(i,e);}:l&&(n=function n(e){e&&e.stopPropagation(),i.contextMenu(u.menuClassName,l,u.translateX||0,u.translateY||0,u.width||0,u.height||0,u),u.setState(2);}),r.text&&r.symbol?c.paddingLeft=F(c.paddingLeft,30):r.text||b(c,{width:r.width,height:r.height,padding:0});var u=o.button(r.text,0,0,n,c,void 0,void 0,void 0,void 0,r.useHTML).addClass(e.className).attr({title:F(i.options.lang[r._titleKey||r.titleKey],\"\")});u.menuClassName=e.menuClassName||\"highcharts-menu-\"+i.btnCount++,r.symbol&&(t=o.symbol(r.symbol,Math.round((r.symbolX||0)-a/2),Math.round((r.symbolY||0)-a/2),a,a,{width:a,height:a}).addClass(\"highcharts-button-symbol\").attr({zIndex:1}).add(u),i.styledMode||t.attr({stroke:r.symbolStroke,fill:r.symbolFill,\"stroke-width\":r.symbolStrokeWidth||1})),u.add(i.exportingGroup).align(b(r,{width:u.width,x:F(r.x,i.buttonOffset)}),!0,\"spacingBox\"),i.buttonOffset+=((u.width||0)+r.buttonSpacing)*(\"right\"===r.align?-1:1),i.exportSVGElements.push(u,t);}function N(){if(!this.printReverseInfo)return;var _this$printReverseInf=this.printReverseInfo,e=_this$printReverseInf.childNodes,t=_this$printReverseInf.origDisplay,n=_this$printReverseInf.resetParams;this.moveContainers(this.renderTo),[].forEach.call(e,function(e,n){1===e.nodeType&&(e.style.display=t[n]||\"\");}),this.isPrinting=!1,n&&this.setSize.apply(this,n),delete this.printReverseInfo,i=void 0,w(this,\"afterPrint\");}function H(){var _this$pointer;var e=h.body,t=this.options.exporting.printMaxWidth,n={childNodes:e.childNodes,origDisplay:[],resetParams:void 0};this.isPrinting=!0,(_this$pointer=this.pointer)!==null&&_this$pointer!==void 0&&_this$pointer.reset(void 0,0),w(this,\"beforePrint\"),t&&this.chartWidth>t&&(n.resetParams=[this.options.chart.width,void 0,!1],this.setSize(t,void 0,!1)),[].forEach.call(n.childNodes,function(e,t){1===e.nodeType&&(n.origDisplay[t]=e.style.display,e.style.display=\"none\");}),this.moveContainers(e),this.printReverseInfo=n;}function j(e){e.renderExporting(),f(e,\"redraw\",e.renderExporting),f(e,\"destroy\",e.destroyExport);}function G(t,n,i,o,r,s,l){var _a$scrollablePlotArea,_l$alignOptions;var a=this,u=a.options.navigation,p=a.chartWidth,d=a.chartHeight,y=\"cache-\"+t,v=Math.max(r,s),C,S=a[y];S||(a.exportContextMenu=a[y]=S=x(\"div\",{className:t},_objectSpread({position:\"absolute\",zIndex:1e3,padding:v+\"px\",pointerEvents:\"auto\"},a.renderer.style),((_a$scrollablePlotArea=a.scrollablePlotArea)===null||_a$scrollablePlotArea===void 0?void 0:_a$scrollablePlotArea.fixedDiv)||a.container),C=x(\"ul\",{className:\"highcharts-menu\"},a.styledMode?{}:{listStyle:\"none\",margin:0,padding:0},S),a.styledMode||m(C,b({MozBoxShadow:\"3px 3px 10px #888\",WebkitBoxShadow:\"3px 3px 10px #888\",boxShadow:\"3px 3px 10px #888\"},u.menuStyle)),S.hideMenu=function(){m(S,{display:\"none\"}),l&&l.setState(0),a.openMenu=!1,m(a.renderTo,{overflow:\"hidden\"}),m(a.container,{overflow:\"hidden\"}),c.clearTimeout(S.hideTimer),w(a,\"exportMenuHidden\");},a.exportEvents.push(f(S,\"mouseleave\",function(){S.hideTimer=g.setTimeout(S.hideMenu,500);}),f(S,\"mouseenter\",function(){c.clearTimeout(S.hideTimer);}),f(h,\"mouseup\",function(e){var _a$pointer;((_a$pointer=a.pointer)===null||_a$pointer===void 0?void 0:_a$pointer.inClass(e.target,t))||S.hideMenu();}),f(S,\"click\",function(){a.openMenu&&S.hideMenu();})),n.forEach(function(t){if(\"string\"==typeof t&&(t=a.options.exporting.menuItemDefinitions[t]),E(t,!0)){var _n147;t.separator?_n147=x(\"hr\",void 0,void 0,C):(\"viewData\"===t.textKey&&a.isDataTableVisible&&(t.textKey=\"hideData\"),_n147=x(\"li\",{className:\"highcharts-menu-item\",onclick:function onclick(e){e&&e.stopPropagation(),S.hideMenu(),\"string\"!=typeof t&&t.onclick&&t.onclick.apply(a,arguments);}},void 0,C),e.setElementHTML(_n147,t.text||a.options.lang[t.textKey]),a.styledMode||(_n147.onmouseover=function(){m(this,u.menuItemHoverStyle);},_n147.onmouseout=function(){m(this,u.menuItemStyle);},m(_n147,b({cursor:\"pointer\"},u.menuItemStyle||{})))),a.exportDivElements.push(_n147);}}),a.exportDivElements.push(C,S),a.exportMenuWidth=S.offsetWidth,a.exportMenuHeight=S.offsetHeight);var F={display:\"block\"};i+(a.exportMenuWidth||0)>p?F.right=p-i-r-v+\"px\":F.left=i-v+\"px\",o+s+(a.exportMenuHeight||0)>d&&((_l$alignOptions=l.alignOptions)===null||_l$alignOptions===void 0?void 0:_l$alignOptions.verticalAlign)!==\"top\"?F.bottom=d-o-v+\"px\":F.top=o+s-v+\"px\",m(S,F),m(a.renderTo,{overflow:\"\"}),m(a.container,{overflow:\"\"}),a.openMenu=!0,w(a,\"exportMenuShown\");}function D(e){var t;var n=e?e.target:this,i=n.exportSVGElements,o=n.exportDivElements,r=n.exportEvents;i&&(i.forEach(function(e,o){e&&(e.onclick=e.ontouchstart=null,n[t=\"cache-\"+e.menuClassName]&&delete n[t],i[o]=e.destroy());}),i.length=0),n.exportingGroup&&(n.exportingGroup.destroy(),delete n.exportingGroup),o&&(o.forEach(function(e,t){e&&(c.clearTimeout(e.hideTimer),T(e,\"mouseleave\"),o[t]=e.onmouseout=e.onmouseover=e.ontouchstart=e.onclick=null,y(e));}),o.length=0),r&&(r.forEach(function(e){e();}),r.length=0);}function I(e,t){var n=this.getSVGForExport(e,t);e=C(this.options.exporting,e),a.post(e.url,{filename:e.filename?e.filename.replace(/\\//g,\"-\"):this.getFilename(),type:e.type,width:e.width,scale:e.scale,svg:n},e.fetchOptions);}function W(){return this.styledMode&&this.inlineStyles(),this.container.innerHTML;}function R(){var e=this.userOptions.title&&this.userOptions.title.text,t=this.options.exporting.filename;return t?t.replace(/\\//g,\"-\"):(\"string\"==typeof e&&(t=e.toLowerCase().replace(/<\\/?[^>]+(>|$)/g,\"\").replace(/[\\s_]+/g,\"-\").replace(/[^a-z\\d\\-]/g,\"\").replace(/^[\\-]+/g,\"\").replace(/[\\-]+/g,\"-\").substr(0,24).replace(/[\\-]+$/g,\"\")),(!t||t.length<5)&&(t=\"chart\"),t);}function L(e){var t,n,i=C(this.options,e);i.plotOptions=C(this.userOptions.plotOptions,e&&e.plotOptions),i.time=C(this.userOptions.time,e&&e.time);var o=x(\"div\",null,{position:\"absolute\",top:\"-9999em\",width:this.chartWidth+\"px\",height:this.chartHeight+\"px\"},h.body),r=this.renderTo.style.width,s=this.renderTo.style.height,l=i.exporting.sourceWidth||i.chart.width||/px$/.test(r)&&parseInt(r,10)||(i.isGantt?800:600),a=i.exporting.sourceHeight||i.chart.height||/px$/.test(s)&&parseInt(s,10)||400;b(i.chart,{animation:!1,renderTo:o,forExport:!0,renderer:\"SVGRenderer\",width:l,height:a}),i.exporting.enabled=!1,delete i.data,i.series=[],this.series.forEach(function(e){(n=C(e.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:e.visible})).isInternal||i.series.push(n);});var c={};this.axes.forEach(function(e){e.userOptions.internalKey||(e.userOptions.internalKey=O()),e.options.isInternal||(c[e.coll]||(c[e.coll]=!0,i[e.coll]=[]),i[e.coll].push(C(e.userOptions,{visible:e.visible,type:e.type,uniqueNames:e.uniqueNames})));}),i.colorAxis=this.userOptions.colorAxis;var u=new this.constructor(i,this.callback);return e&&[\"xAxis\",\"yAxis\",\"series\"].forEach(function(t){var n={};e[t]&&(n[t]=e[t],u.update(n));}),this.axes.forEach(function(e){var t=v(u.axes,function(t){return t.options.internalKey===e.userOptions.internalKey;}),n=e.getExtremes(),i=n.userMin,o=n.userMax;t&&(void 0!==i&&i!==t.min||void 0!==o&&o!==t.max)&&t.setExtremes(i,o,!0,!1);}),t=u.getChartHTML(),w(this,\"getSVG\",{chartCopy:u}),t=this.sanitizeSVG(t,i),i=null,u.destroy(),y(o),t;}function q(e,t){var n=this.options.exporting;return this.getSVG(C({chart:{borderRadius:0}},n.chartOptions,t,{exporting:{sourceWidth:e&&e.sourceWidth||n.sourceWidth,sourceHeight:e&&e.sourceHeight||n.sourceHeight}}));}function $(){var e;var n=t.inlineAllowlist,i={},o=h.createElement(\"iframe\");m(o,{width:\"1px\",height:\"1px\",visibility:\"hidden\"}),h.body.appendChild(o);var r=o.contentWindow&&o.contentWindow.document;r&&r.body.appendChild(r.createElementNS(d,\"svg\")),function t(o){var s,a,c,p,h,d;var f={};if(r&&1===o.nodeType&&-1===P.indexOf(o.nodeName)){if(s=g.getComputedStyle(o,null),a=\"svg\"===o.nodeName?{}:g.getComputedStyle(o.parentNode,null),!i[o.nodeName]){e=r.getElementsByTagName(\"svg\")[0],c=r.createElementNS(o.namespaceURI,o.nodeName),e.appendChild(c);var _t389=g.getComputedStyle(c,null),_n148={};for(var _e358 in _t389)_e358.length<1e3&&\"string\"==typeof _t389[_e358]&&!/^\\d+$/.test(_e358)&&(_n148[_e358]=_t389[_e358]);i[o.nodeName]=_n148,\"text\"===o.nodeName&&delete i.text.fill,e.removeChild(c);}for(var _e359 in s)(l.isFirefox||l.isMS||l.isSafari||Object.hasOwnProperty.call(s,_e359))&&function(e,t){if(p=h=!1,n.length){for(d=n.length;d--&&!h;)h=n[d].test(t);p=!h;}for(\"transform\"===t&&\"none\"===e&&(p=!0),d=u.length;d--&&!p;){if(t.length>1e3)throw Error(\"Input too long\");p=u[d].test(t)||\"function\"==typeof e;}!p&&(a[t]!==e||\"svg\"===o.nodeName)&&i[o.nodeName][t]!==e&&(M&&-1===M.indexOf(t)?f[t]=e:e&&o.setAttribute(t.replace(/[A-Z]/g,function(e){return\"-\"+e.toLowerCase();}),e));}(s[_e359],_e359);if(m(o,f),\"svg\"===o.nodeName&&o.setAttribute(\"stroke-width\",\"1px\"),\"text\"===o.nodeName)return;[].forEach.call(o.children||o.childNodes,t);}}(this.container.querySelector(\"svg\")),e.parentNode.removeChild(e),o.parentNode.removeChild(o);}function z(e){var t=this.scrollablePlotArea;(t?[t.fixedDiv,t.scrollingContainer]:[this.container]).forEach(function(t){e.appendChild(t);});}function V(){var e=this,t=function t(_t390,n,i){e.isDirtyExporting=!0,C(!0,e.options[_t390],n),F(i,!0)&&e.redraw();};e.exporting={update:function update(e,n){t(\"exporting\",e,n);}},n.compose(e).navigation.addUpdate(function(e,n){t(\"navigation\",e,n);});}function A(){var e=this;e.isPrinting||(i=e,l.isSafari||e.beforePrint(),setTimeout(function(){g.focus(),g.print(),l.isSafari||setTimeout(function(){e.afterPrint();},1e3);},1));}function K(){var e=this,t=e.options.exporting,n=t.buttons,i=e.isDirtyExporting||!e.exportSVGElements;e.buttonOffset=0,e.isDirtyExporting&&e.destroyExport(),i&&!1!==t.enabled&&(e.exportEvents=[],e.exportingGroup=e.exportingGroup||e.renderer.g(\"exporting-group\").attr({zIndex:3}).add(),S(n,function(t){e.addButton(t);}),e.isDirtyExporting=!1);}function U(e,t){var n=e.indexOf(\"</svg>\")+6,i=e.substr(n);return e=e.substr(0,n),t&&t.exporting&&t.exporting.allowHTML&&i&&(i='<foreignObject x=\"0\" y=\"0\" width=\"'+t.chart.width+'\" height=\"'+t.chart.height+'\"><body xmlns=\"http://www.w3.org/1999/xhtml\">'+i.replace(/(<(?:img|br).*?(?=\\>))>/g,\"$1 />\")+\"</body></foreignObject>\",e=e.replace(\"</svg>\",i+\"</svg>\")),e=e.replace(/zIndex=\"[^\"]+\"/g,\"\").replace(/symbolName=\"[^\"]+\"/g,\"\").replace(/jQuery\\d+=\"[^\"]+\"/g,\"\").replace(/url\\((\"|&quot;)(.*?)(\"|&quot;)\\;?\\)/g,\"url($2)\").replace(/url\\([^#]+#/g,\"url(#\").replace(/<svg /,'<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" ').replace(/ (NS\\d+\\:)?href=/g,\" xlink:href=\").replace(/\\n+/g,\" \").replace(/(fill|stroke)=\"rgba\\(([ \\d]+,[ \\d]+,[ \\d]+),([ \\d\\.]+)\\)\"/g,'$1=\"rgb($2)\" $1-opacity=\"$3\"').replace(/&nbsp;/g,\"\\xa0\").replace(/&shy;/g,\"\\xad\");}t.compose=function(e,t){r.compose(t),s.compose(e);var n=e.prototype;n.exportChart||(n.afterPrint=N,n.exportChart=I,n.inlineStyles=$,n.print=A,n.sanitizeSVG=U,n.getChartHTML=W,n.getSVG=L,n.getSVGForExport=q,n.getFilename=R,n.moveContainers=z,n.beforePrint=H,n.contextMenu=G,n.addButton=k,n.destroyExport=D,n.renderExporting=K,n.callbacks.push(j),f(e,\"init\",V),l.isSafari&&g.matchMedia(\"print\").addListener(function(e){i&&(e.matches?i.beforePrint():i.afterPrint());}),p.exporting=C(o.exporting,p.exporting),p.lang=C(o.lang,p.lang),p.navigation=C(o.navigation,p.navigation));};}(u||(u={})),u;}),n(t,\"masters/modules/exporting.src.js\",[t[\"Core/Globals.js\"],t[\"Extensions/Exporting/Exporting.js\"],t[\"Core/HttpUtilities.js\"]],function(e,t,n){return e.HttpUtilities=e.HttpUtilities||n,e.ajax=e.HttpUtilities.ajax,e.getJSON=e.HttpUtilities.getJSON,e.post=e.HttpUtilities.post,t.compose(e.Chart,e.Renderer),e;});});!/**\n * Highcharts JS v11.4.8 (2024-08-29)\n *\n * Exporting module\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */function(t){\"object\"==(typeof module===\"undefined\"?\"undefined\":_typeof(module))&&module.exports?(t[\"default\"]=t,module.exports=t):\"function\"==typeof define&&define.amd?define(\"highcharts/modules/export-data\",[\"highcharts\",\"highcharts/modules/exporting\"],function(e){return t(e),t.Highcharts=e,t;}):t(\"undefined\"!=typeof Highcharts?Highcharts:void 0);}(function(t){\"use strict\";var e=t?t._modules:{};function o(e,o,a,n){e.hasOwnProperty(o)||(e[o]=n.apply(null,a),\"function\"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent(\"HighchartsModuleLoaded\",{detail:{path:o,module:e[o]}})));}o(e,\"Extensions/DownloadURL.js\",[e[\"Core/Globals.js\"]],function(t){var e=t.isSafari,o=t.win,a=t.win.document,n=o.URL||o.webkitURL||o;function i(t){var e=t.replace(/filename=.*;/,\"\").match(/data:([^;]*)(;base64)?,([A-Z+\\d\\/]+)/i);if(e&&e.length>3&&o.atob&&o.ArrayBuffer&&o.Uint8Array&&o.Blob&&n.createObjectURL){var _t391=o.atob(e[3]),_a54=new o.ArrayBuffer(_t391.length),_i249=new o.Uint8Array(_a54);for(var _e360=0;_e360<_i249.length;++_e360)_i249[_e360]=_t391.charCodeAt(_e360);return n.createObjectURL(new o.Blob([_i249],{type:e[1]}));}}return{dataURLtoBlob:i,downloadURL:function downloadURL(t,n){var r=o.navigator,s=a.createElement(\"a\");if(\"string\"!=typeof t&&!(t instanceof String)&&r.msSaveOrOpenBlob){r.msSaveOrOpenBlob(t,n);return;}if(t=\"\"+t,r.userAgent.length>1e3)throw Error(\"Input too long\");var l=/Edge\\/\\d+/.test(r.userAgent);if((e&&\"string\"==typeof t&&0===t.indexOf(\"data:application/pdf\")||l||t.length>2e6)&&!(t=i(t)||\"\"))throw Error(\"Failed to convert to blob\");if(void 0!==s.download)s.href=t,s.download=n,a.body.appendChild(s),s.click(),a.body.removeChild(s);else try{if(!o.open(t,\"chart\"))throw Error(\"Failed to open window\");}catch(_unused4){o.location.href=t;}}};}),o(e,\"Extensions/ExportData/ExportDataDefaults.js\",[],function(){return{exporting:{csv:{annotations:{itemDelimiter:\"; \",join:!1},columnHeaderFormatter:null,dateFormat:\"%Y-%m-%d %H:%M:%S\",decimalPoint:null,itemDelimiter:null,lineDelimiter:\"\\n\"},showTable:!1,useMultiLevelHeaders:!0,useRowspanHeaders:!0,showExportInProgress:!0},lang:{downloadCSV:\"Download CSV\",downloadXLS:\"Download XLS\",exportData:{annotationHeader:\"Annotations\",categoryHeader:\"Category\",categoryDatetimeHeader:\"DateTime\"},viewData:\"View data table\",hideData:\"Hide data table\",exportInProgress:\"Exporting...\"}};}),o(e,\"Extensions/ExportData/ExportData.js\",[e[\"Core/Renderer/HTML/AST.js\"],e[\"Core/Defaults.js\"],e[\"Extensions/DownloadURL.js\"],e[\"Extensions/ExportData/ExportDataDefaults.js\"],e[\"Core/Globals.js\"],e[\"Core/Utilities.js\"]],function(t,e,o,a,n,i){var r=e.getOptions,s=e.setOptions,l=o.downloadURL,h=n.doc,c=n.win,d=i.addEvent,p=i.defined,u=i.extend,m=i.find,g=i.fireEvent,x=i.isNumber,f=i.pick;function b(t){var _this$options$exporti,_this135=this;var e=!!((_this$options$exporti=this.options.exporting)!==null&&_this$options$exporti!==void 0&&_this$options$exporti.showExportInProgress),o=c.requestAnimationFrame||setTimeout;o(function(){e&&_this135.showLoading(_this135.options.lang.exportInProgress),o(function(){try{t.call(_this135);}finally{e&&_this135.hideLoading();}});});}function y(){var _this136=this;b.call(this,function(){var t=_this136.getCSV(!0);l(A(t,\"text/csv\")||\"data:text/csv,\\uFEFF\"+encodeURIComponent(t),_this136.getFilename()+\".csv\");});}function w(){var _this137=this;b.call(this,function(){var t='<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Ark1</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><style>td{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:\"0.00\";} .text{ mso-number-format:\"@\";}</style><meta name=ProgId content=Excel.Sheet><meta charset=UTF-8></head><body>'+_this137.getTable(!0)+\"</body></html>\";l(A(t,\"application/vnd.ms-excel\")||\"data:application/vnd.ms-excel;base64,\"+c.btoa(unescape(encodeURIComponent(t))),_this137.getFilename()+\".xls\");});}function D(t){var e=\"\",o=this.getDataRows(),a=this.options.exporting.csv,n=f(a.decimalPoint,\",\"!==a.itemDelimiter&&t?1.1.toLocaleString()[1]:\".\"),i=f(a.itemDelimiter,\",\"===n?\";\":\",\"),r=a.lineDelimiter;return o.forEach(function(t,a){var s=\"\",l=t.length;for(;l--;)\"string\"==typeof(s=t[l])&&(s=\"\\\"\".concat(s,\"\\\"\")),\"number\"==typeof s&&\".\"!==n&&(s=s.toString().replace(\".\",n)),t[l]=s;t.length=o.length?o[0].length:0,e+=t.join(i),a<o.length-1&&(e+=r);}),e;}function T(t){var e,o;var a=this.hasParallelCoordinates,n=this.time,i=this.options.exporting&&this.options.exporting.csv||{},r=this.xAxis,s={},l=[],h=[],c=[],d=this.options.lang.exportData,u=d.categoryHeader,b=d.categoryDatetimeHeader,y=function y(e,o,a){if(i.columnHeaderFormatter){var _t392=i.columnHeaderFormatter(e,o,a);if(!1!==_t392)return _t392;}return e?e.bindAxes?t?{columnTitle:a>1?o:e.name,topLevelColumnTitle:e.name}:e.name+(a>1?\" (\"+o+\")\":\"\"):e.options.title&&e.options.title.text||(e.dateTime?b:u):u;},w=function w(t,e,o){var a={},n={};return e.forEach(function(e){var i=(t.keyToAxis&&t.keyToAxis[e]||e)+\"Axis\",r=x(o)?t.chart[i][o]:t[i];a[e]=r&&r.categories||[],n[e]=r&&r.dateTime;}),{categoryMap:a,dateTimeValueAxisMap:n};},D=function D(t,e){var o=t.pointArrayMap||[\"y\"];return t.data.some(function(t){return void 0!==t.y&&t.name;})&&e&&!e.categories&&\"name\"!==t.exportKey?[\"x\"].concat(_toConsumableArray(o)):o;},T=[],v,E,L,S=0,C,A;for(C in this.series.forEach(function(e){var o=e.options.keys,l=e.xAxis,d=o||D(e,l),p=d.length,u=!e.requireSorting&&{},g=r.indexOf(l),x=w(e,d),b,v;if(!1!==e.options.includeInDataExport&&!e.options.isInternal&&!1!==e.visible){for(m(T,function(t){return t[0]===g;})||T.push([g,S]),v=0;v<p;)L=y(e,d[v],d.length),c.push(L.columnTitle||L),t&&h.push(L.topLevelColumnTitle||L),v++;b={chart:e.chart,autoIncrement:e.autoIncrement,options:e.options,pointArrayMap:e.pointArrayMap,index:e.index},e.options.data.forEach(function(t,o){var _m$x;var r,h,c;var m={series:b};a&&(x=w(e,d,o)),e.pointClass.prototype.applyOptions.apply(m,[t]);var y=e.data[o]&&e.data[o].name;if(r=((_m$x=m.x)!==null&&_m$x!==void 0?_m$x:\"\")+\",\"+y,v=0,(!l||\"name\"===e.exportKey||!a&&l&&l.hasNames&&y)&&(r=y),u&&(u[r]&&(r+=\"|\"+o),u[r]=!0),s[r]){var _t393=\"\".concat(r,\",\").concat(s[r].pointers[e.index]),_o143=r;s[r].pointers[e.index]&&(s[_t393]||(s[_t393]=[],s[_t393].xValues=[],s[_t393].pointers=[]),r=_t393),s[_o143].pointers[e.index]+=1;}else{s[r]=[],s[r].xValues=[];var _t394=[];for(var _o144=0;_o144<e.chart.series.length;_o144++)_t394[_o144]=0;s[r].pointers=_t394,s[r].pointers[e.index]=1;}for(s[r].x=m.x,s[r].name=y,s[r].xValues[g]=m.x;v<p;)c=m[h=d[v]],s[r][S+v]=f(x.categoryMap[h][c],x.dateTimeValueAxisMap[h]?n.dateFormat(i.dateFormat,c):null,c),v++;}),S+=v;}}),s)Object.hasOwnProperty.call(s,C)&&l.push(s[C]);for(E=t?[h,c]:[c],S=T.length;S--;)e=T[S][0],o=T[S][1],v=r[e],l.sort(function(t,o){return t.xValues[e]-o.xValues[e];}),A=y(v),E[0].splice(o,0,A),t&&E[1]&&E[1].splice(o,0,A),l.forEach(function(t){var e=t.name;v&&!p(e)&&(v.dateTime?(t.x instanceof Date&&(t.x=t.x.getTime()),e=n.dateFormat(i.dateFormat,t.x)):e=v.categories?f(v.names[t.x],v.categories[t.x],t.x):t.x),t.splice(o,0,e);});return g(this,\"exportData\",{dataRows:E=E.concat(l)}),E;}function v(t){var e=function e(t){if(!t.tagName||\"#text\"===t.tagName)return t.textContent||\"\";var o=t.attributes,a=\"<\".concat(t.tagName);return o&&Object.keys(o).forEach(function(t){var e=o[t];a+=\" \".concat(t,\"=\\\"\").concat(e,\"\\\"\");}),a+=\">\"+(t.textContent||\"\"),(t.children||[]).forEach(function(t){a+=e(t);}),a+=\"</\".concat(t.tagName,\">\");};return e(this.getTableAST(t));}function E(t){var e=0,o=[],a=this.options,n=t?1.1.toLocaleString()[1]:\".\",i=f(a.exporting.useMultiLevelHeaders,!0),r=this.getDataRows(i),s=i?r.shift():null,l=r.shift(),h=function h(t,e){var o=t.length;if(e.length!==o)return!1;for(;o--;)if(t[o]!==e[o])return!1;return!0;},c=function c(t,e,o,a){var i=f(a,\"\"),r=\"highcharts-text\"+(e?\" \"+e:\"\");return\"number\"==typeof i?(i=i.toString(),\",\"===n&&(i=i.replace(\".\",n)),r=\"highcharts-number\"):a||(r=\"highcharts-empty\"),{tagName:t,attributes:o=u({\"class\":r},o),textContent:i};};!1!==a.exporting.tableCaption&&o.push({tagName:\"caption\",attributes:{\"class\":\"highcharts-table-caption\"},textContent:f(a.exporting.tableCaption,a.title.text?a.title.text:\"Chart\")});for(var _t395=0,_o145=r.length;_t395<_o145;++_t395)r[_t395].length>e&&(e=r[_t395].length);o.push(function(t,e,o){var n=[],r=0,s=o||e&&e.length,l,d=0,p;if(i&&t&&e&&!h(t,e)){var _o146=[];for(;r<s;++r)if((l=t[r])===t[r+1])++d;else if(d)_o146.push(c(\"th\",\"highcharts-table-topheading\",{scope:\"col\",colspan:d+1},l)),d=0;else{l===e[r]?a.exporting.useRowspanHeaders?(p=2,delete e[r]):(p=1,e[r]=\"\"):p=1;var _t396=c(\"th\",\"highcharts-table-topheading\",{scope:\"col\"},l);p>1&&_t396.attributes&&(_t396.attributes.valign=\"top\",_t396.attributes.rowspan=p),_o146.push(_t396);}n.push({tagName:\"tr\",children:_o146});}if(e){var _t397=[];for(r=0,s=e.length;r<s;++r)void 0!==e[r]&&_t397.push(c(\"th\",null,{scope:\"col\"},e[r]));n.push({tagName:\"tr\",children:_t397});}return{tagName:\"thead\",children:n};}(s,l,Math.max(e,l.length)));var d=[];r.forEach(function(t){var o=[];for(var _a55=0;_a55<e;_a55++)o.push(c(_a55?\"td\":\"th\",null,_a55?{}:{scope:\"row\"},t[_a55]));d.push({tagName:\"tr\",children:o});}),o.push({tagName:\"tbody\",children:d});var p={tree:{tagName:\"table\",id:\"highcharts-data-table-\".concat(this.index),children:o}};return g(this,\"aftergetTableAST\",p),p.tree;}function L(){this.toggleDataTable(!1);}function S(e){var o=(e=f(e,!this.isDataTableVisible))&&!this.dataTableDiv;if(o&&(this.dataTableDiv=h.createElement(\"div\"),this.dataTableDiv.className=\"highcharts-data-table\",this.renderTo.parentNode.insertBefore(this.dataTableDiv,this.renderTo.nextSibling)),this.dataTableDiv){var _a56=this.dataTableDiv.style,_n149=_a56.display;_a56.display=e?\"block\":\"none\",e?(this.dataTableDiv.innerHTML=t.emptyHTML,new t([this.getTableAST()]).addToDOM(this.dataTableDiv),g(this,\"afterViewData\",{element:this.dataTableDiv,wasHidden:o||_n149!==_a56.display})):g(this,\"afterHideData\");}this.isDataTableVisible=e;var a=this.exportDivElements,n=this.options.exporting,i=n&&n.buttons&&n.buttons.contextButton.menuItems,r=this.options.lang;if(n&&n.menuItemDefinitions&&r&&r.viewData&&r.hideData&&i&&a){var _e361=a[i.indexOf(\"viewData\")];_e361&&t.setElementHTML(_e361,this.isDataTableVisible?r.hideData:r.viewData);}}function C(){this.toggleDataTable(!0);}function A(t,e){var o=c.navigator,a=c.URL||c.webkitURL||c;try{if(o.msSaveOrOpenBlob&&c.MSBlobBuilder){var _e362=new c.MSBlobBuilder();return _e362.append(t),_e362.getBlob(\"image/svg+xml\");}return a.createObjectURL(new c.Blob([\"\\uFEFF\"+t],{type:e}));}catch(t){}}function R(){var t=this,e=t.dataTableDiv,o=function o(t,e){return t.children[e].textContent;},a=function a(t,e){return function(a,n){var i,r;return i=o(e?a:n,t),r=o(e?n:a,t),\"\"===i||\"\"===r||isNaN(i)||isNaN(r)?i.toString().localeCompare(r):i-r;};};if(e&&t.options.exporting&&t.options.exporting.allowTableSorting){var _o147=e.querySelector(\"thead tr\");_o147&&_o147.childNodes.forEach(function(o){var n=o.closest(\"table\");o.addEventListener(\"click\",function(){var i=_toConsumableArray(e.querySelectorAll(\"tr:not(thead tr)\")),r=_toConsumableArray(o.parentNode.children);i.sort(a(r.indexOf(o),t.ascendingOrderInTable=!t.ascendingOrderInTable)).forEach(function(t){n.appendChild(t);}),r.forEach(function(t){[\"highcharts-sort-ascending\",\"highcharts-sort-descending\"].forEach(function(e){t.classList.contains(e)&&t.classList.remove(e);});}),o.classList.add(t.ascendingOrderInTable?\"highcharts-sort-ascending\":\"highcharts-sort-descending\");});});}}function k(){this.options&&this.options.exporting&&this.options.exporting.showTable&&!this.options.chart.forExport&&this.viewData();}function H(){var _this$dataTableDiv;(_this$dataTableDiv=this.dataTableDiv)===null||_this$dataTableDiv===void 0?void 0:_this$dataTableDiv.remove();}return{compose:function compose(t,e){var o=t.prototype;if(!o.getCSV){var _n150=r().exporting;d(t,\"afterViewData\",R),d(t,\"render\",k),d(t,\"destroy\",H),o.downloadCSV=y,o.downloadXLS=w,o.getCSV=D,o.getDataRows=T,o.getTable=v,o.getTableAST=E,o.hideData=L,o.toggleDataTable=S,o.viewData=C,_n150&&(u(_n150.menuItemDefinitions,{downloadCSV:{textKey:\"downloadCSV\",onclick:function onclick(){this.downloadCSV();}},downloadXLS:{textKey:\"downloadXLS\",onclick:function onclick(){this.downloadXLS();}},viewData:{textKey:\"viewData\",onclick:function onclick(){b.call(this,this.toggleDataTable);}}}),_n150.buttons&&_n150.buttons.contextButton.menuItems&&_n150.buttons.contextButton.menuItems.push(\"separator\",\"downloadCSV\",\"downloadXLS\",\"viewData\")),s(a);var _e$types=e.types,_i250=_e$types.arearange,_l38=_e$types.gantt,_h24=_e$types.map,_c24=_e$types.mapbubble,_p19=_e$types.treemap,_m11=_e$types.xrange;_i250&&(_i250.prototype.keyToAxis={low:\"y\",high:\"y\"}),_l38&&(_l38.prototype.exportKey=\"name\",_l38.prototype.keyToAxis={start:\"x\",end:\"x\"}),_h24&&(_h24.prototype.exportKey=\"name\"),_c24&&(_c24.prototype.exportKey=\"name\"),_p19&&(_p19.prototype.exportKey=\"name\"),_m11&&(_m11.prototype.keyToAxis={x2:\"x\"});}}};}),o(e,\"masters/modules/export-data.src.js\",[e[\"Core/Globals.js\"],e[\"Extensions/DownloadURL.js\"],e[\"Extensions/ExportData/ExportData.js\"]],function(t,e,o){return t.dataURLtoBlob=t.dataURLtoBlob||e.dataURLtoBlob,t.downloadURL=t.downloadURL||e.downloadURL,o.compose(t.Chart,t.Series),t;});});\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\n * CryptoJS core components.\n */\nvar CryptoJS = CryptoJS || (function (Math, undefined) {\n    /**\n     * CryptoJS namespace.\n     */\n    var C = {};\n\n    /**\n     * Library namespace.\n     */\n    var C_lib = C.lib = {};\n\n    /**\n     * Base object for prototypal inheritance.\n     */\n    var Base = C_lib.Base = (function () {\n        function F() {}\n\n        return {\n            /**\n             * Creates a new object that inherits from this object.\n             *\n             * @param {Object} overrides Properties to copy into the new object.\n             *\n             * @return {Object} The new object.\n             *\n             * @static\n             *\n             * @example\n             *\n             *     var MyType = CryptoJS.lib.Base.extend({\n             *         field: 'value',\n             *\n             *         method: function () {\n             *         }\n             *     });\n             */\n            extend: function (overrides) {\n                // Spawn\n                F.prototype = this;\n                var subtype = new F();\n\n                // Augment\n                if (overrides) {\n                    subtype.mixIn(overrides);\n                }\n\n                // Create default initializer\n                if (!subtype.hasOwnProperty('init')) {\n                    subtype.init = function () {\n                        subtype.$super.init.apply(this, arguments);\n                    };\n                }\n\n                // Initializer's prototype is the subtype object\n                subtype.init.prototype = subtype;\n\n                // Reference supertype\n                subtype.$super = this;\n\n                return subtype;\n            },\n\n            /**\n             * Extends this object and runs the init method.\n             * Arguments to create() will be passed to init().\n             *\n             * @return {Object} The new object.\n             *\n             * @static\n             *\n             * @example\n             *\n             *     var instance = MyType.create();\n             */\n            create: function () {\n                var instance = this.extend();\n                instance.init.apply(instance, arguments);\n\n                return instance;\n            },\n\n            /**\n             * Initializes a newly created object.\n             * Override this method to add some logic when your objects are created.\n             *\n             * @example\n             *\n             *     var MyType = CryptoJS.lib.Base.extend({\n             *         init: function () {\n             *             // ...\n             *         }\n             *     });\n             */\n            init: function () {\n            },\n\n            /**\n             * Copies properties into this object.\n             *\n             * @param {Object} properties The properties to mix in.\n             *\n             * @example\n             *\n             *     MyType.mixIn({\n             *         field: 'value'\n             *     });\n             */\n            mixIn: function (properties) {\n                for (var propertyName in properties) {\n                    if (properties.hasOwnProperty(propertyName)) {\n                        this[propertyName] = properties[propertyName];\n                    }\n                }\n\n                // IE won't copy toString using the loop above\n                if (properties.hasOwnProperty('toString')) {\n                    this.toString = properties.toString;\n                }\n            },\n\n            /**\n             * Creates a copy of this object.\n             *\n             * @return {Object} The clone.\n             *\n             * @example\n             *\n             *     var clone = instance.clone();\n             */\n            clone: function () {\n                return this.init.prototype.extend(this);\n            }\n        };\n    }());\n\n    /**\n     * An array of 32-bit words.\n     *\n     * @property {Array} words The array of 32-bit words.\n     * @property {number} sigBytes The number of significant bytes in this word array.\n     */\n    var WordArray = C_lib.WordArray = Base.extend({\n        /**\n         * Initializes a newly created word array.\n         *\n         * @param {Array} words (Optional) An array of 32-bit words.\n         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n         *\n         * @example\n         *\n         *     var wordArray = CryptoJS.lib.WordArray.create();\n         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n         */\n        init: function (words, sigBytes) {\n            words = this.words = words || [];\n\n            if (sigBytes != undefined) {\n                this.sigBytes = sigBytes;\n            } else {\n                this.sigBytes = words.length * 4;\n            }\n        },\n\n        /**\n         * Converts this word array to a string.\n         *\n         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n         *\n         * @return {string} The stringified word array.\n         *\n         * @example\n         *\n         *     var string = wordArray + '';\n         *     var string = wordArray.toString();\n         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n         */\n        toString: function (encoder) {\n            return (encoder || Hex).stringify(this);\n        },\n\n        /**\n         * Concatenates a word array to this word array.\n         *\n         * @param {WordArray} wordArray The word array to append.\n         *\n         * @return {WordArray} This word array.\n         *\n         * @example\n         *\n         *     wordArray1.concat(wordArray2);\n         */\n        concat: function (wordArray) {\n            // Shortcuts\n            var thisWords = this.words;\n            var thatWords = wordArray.words;\n            var thisSigBytes = this.sigBytes;\n            var thatSigBytes = wordArray.sigBytes;\n\n            // Clamp excess bits\n            this.clamp();\n\n            // Concat\n            if (thisSigBytes % 4) {\n                // Copy one byte at a time\n                for (var i = 0; i < thatSigBytes; i++) {\n                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n                }\n            } else if (thatWords.length > 0xffff) {\n                // Copy one word at a time\n                for (var i = 0; i < thatSigBytes; i += 4) {\n                    thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n                }\n            } else {\n                // Copy all words at once\n                thisWords.push.apply(thisWords, thatWords);\n            }\n            this.sigBytes += thatSigBytes;\n\n            // Chainable\n            return this;\n        },\n\n        /**\n         * Removes insignificant bits.\n         *\n         * @example\n         *\n         *     wordArray.clamp();\n         */\n        clamp: function () {\n            // Shortcuts\n            var words = this.words;\n            var sigBytes = this.sigBytes;\n\n            // Clamp\n            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n            words.length = Math.ceil(sigBytes / 4);\n        },\n\n        /**\n         * Creates a copy of this word array.\n         *\n         * @return {WordArray} The clone.\n         *\n         * @example\n         *\n         *     var clone = wordArray.clone();\n         */\n        clone: function () {\n            var clone = Base.clone.call(this);\n            clone.words = this.words.slice(0);\n\n            return clone;\n        },\n\n        /**\n         * Creates a word array filled with random bytes.\n         *\n         * @param {number} nBytes The number of random bytes to generate.\n         *\n         * @return {WordArray} The random word array.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n         */\n        random: function (nBytes) {\n            var words = [];\n            for (var i = 0; i < nBytes; i += 4) {\n                words.push((Math.random() * 0x100000000) | 0);\n            }\n\n            return new WordArray.init(words, nBytes);\n        }\n    });\n\n    /**\n     * Encoder namespace.\n     */\n    var C_enc = C.enc = {};\n\n    /**\n     * Hex encoding strategy.\n     */\n    var Hex = C_enc.Hex = {\n        /**\n         * Converts a word array to a hex string.\n         *\n         * @param {WordArray} wordArray The word array.\n         *\n         * @return {string} The hex string.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n         */\n        stringify: function (wordArray) {\n            // Shortcuts\n            var words = wordArray.words;\n            var sigBytes = wordArray.sigBytes;\n\n            // Convert\n            var hexChars = [];\n            for (var i = 0; i < sigBytes; i++) {\n                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n                hexChars.push((bite >>> 4).toString(16));\n                hexChars.push((bite & 0x0f).toString(16));\n            }\n\n            return hexChars.join('');\n        },\n\n        /**\n         * Converts a hex string to a word array.\n         *\n         * @param {string} hexStr The hex string.\n         *\n         * @return {WordArray} The word array.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n         */\n        parse: function (hexStr) {\n            // Shortcut\n            var hexStrLength = hexStr.length;\n\n            // Convert\n            var words = [];\n            for (var i = 0; i < hexStrLength; i += 2) {\n                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n            }\n\n            return new WordArray.init(words, hexStrLength / 2);\n        }\n    };\n\n    /**\n     * Latin1 encoding strategy.\n     */\n    var Latin1 = C_enc.Latin1 = {\n        /**\n         * Converts a word array to a Latin1 string.\n         *\n         * @param {WordArray} wordArray The word array.\n         *\n         * @return {string} The Latin1 string.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n         */\n        stringify: function (wordArray) {\n            // Shortcuts\n            var words = wordArray.words;\n            var sigBytes = wordArray.sigBytes;\n\n            // Convert\n            var latin1Chars = [];\n            for (var i = 0; i < sigBytes; i++) {\n                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n                latin1Chars.push(String.fromCharCode(bite));\n            }\n\n            return latin1Chars.join('');\n        },\n\n        /**\n         * Converts a Latin1 string to a word array.\n         *\n         * @param {string} latin1Str The Latin1 string.\n         *\n         * @return {WordArray} The word array.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n         */\n        parse: function (latin1Str) {\n            // Shortcut\n            var latin1StrLength = latin1Str.length;\n\n            // Convert\n            var words = [];\n            for (var i = 0; i < latin1StrLength; i++) {\n                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n            }\n\n            return new WordArray.init(words, latin1StrLength);\n        }\n    };\n\n    /**\n     * UTF-8 encoding strategy.\n     */\n    var Utf8 = C_enc.Utf8 = {\n        /**\n         * Converts a word array to a UTF-8 string.\n         *\n         * @param {WordArray} wordArray The word array.\n         *\n         * @return {string} The UTF-8 string.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n         */\n        stringify: function (wordArray) {\n            try {\n                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n            } catch (e) {\n                throw new Error('Malformed UTF-8 data');\n            }\n        },\n\n        /**\n         * Converts a UTF-8 string to a word array.\n         *\n         * @param {string} utf8Str The UTF-8 string.\n         *\n         * @return {WordArray} The word array.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n         */\n        parse: function (utf8Str) {\n            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n        }\n    };\n\n    /**\n     * Abstract buffered block algorithm template.\n     *\n     * The property blockSize must be implemented in a concrete subtype.\n     *\n     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n     */\n    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n        /**\n         * Resets this block algorithm's data buffer to its initial state.\n         *\n         * @example\n         *\n         *     bufferedBlockAlgorithm.reset();\n         */\n        reset: function () {\n            // Initial values\n            this._data = new WordArray.init();\n            this._nDataBytes = 0;\n        },\n\n        /**\n         * Adds new data to this block algorithm's buffer.\n         *\n         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n         *\n         * @example\n         *\n         *     bufferedBlockAlgorithm._append('data');\n         *     bufferedBlockAlgorithm._append(wordArray);\n         */\n        _append: function (data) {\n            // Convert string to WordArray, else assume WordArray already\n            if (typeof data == 'string') {\n                data = Utf8.parse(data);\n            }\n\n            // Append\n            this._data.concat(data);\n            this._nDataBytes += data.sigBytes;\n        },\n\n        /**\n         * Processes available data blocks.\n         *\n         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n         *\n         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n         *\n         * @return {WordArray} The processed data.\n         *\n         * @example\n         *\n         *     var processedData = bufferedBlockAlgorithm._process();\n         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n         */\n        _process: function (doFlush) {\n            // Shortcuts\n            var data = this._data;\n            var dataWords = data.words;\n            var dataSigBytes = data.sigBytes;\n            var blockSize = this.blockSize;\n            var blockSizeBytes = blockSize * 4;\n\n            // Count blocks ready\n            var nBlocksReady = dataSigBytes / blockSizeBytes;\n            if (doFlush) {\n                // Round up to include partial blocks\n                nBlocksReady = Math.ceil(nBlocksReady);\n            } else {\n                // Round down to include only full blocks,\n                // less the number of blocks that must remain in the buffer\n                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n            }\n\n            // Count words ready\n            var nWordsReady = nBlocksReady * blockSize;\n\n            // Count bytes ready\n            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n            // Process blocks\n            if (nWordsReady) {\n                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n                    // Perform concrete-algorithm logic\n                    this._doProcessBlock(dataWords, offset);\n                }\n\n                // Remove processed words\n                var processedWords = dataWords.splice(0, nWordsReady);\n                data.sigBytes -= nBytesReady;\n            }\n\n            // Return processed words\n            return new WordArray.init(processedWords, nBytesReady);\n        },\n\n        /**\n         * Creates a copy of this object.\n         *\n         * @return {Object} The clone.\n         *\n         * @example\n         *\n         *     var clone = bufferedBlockAlgorithm.clone();\n         */\n        clone: function () {\n            var clone = Base.clone.call(this);\n            clone._data = this._data.clone();\n\n            return clone;\n        },\n\n        _minBufferSize: 0\n    });\n\n    /**\n     * Abstract hasher template.\n     *\n     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n     */\n    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n        /**\n         * Configuration options.\n         */\n        cfg: Base.extend(),\n\n        /**\n         * Initializes a newly created hasher.\n         *\n         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n         *\n         * @example\n         *\n         *     var hasher = CryptoJS.algo.SHA256.create();\n         */\n        init: function (cfg) {\n            // Apply config defaults\n            this.cfg = this.cfg.extend(cfg);\n\n            // Set initial values\n            this.reset();\n        },\n\n        /**\n         * Resets this hasher to its initial state.\n         *\n         * @example\n         *\n         *     hasher.reset();\n         */\n        reset: function () {\n            // Reset data buffer\n            BufferedBlockAlgorithm.reset.call(this);\n\n            // Perform concrete-hasher logic\n            this._doReset();\n        },\n\n        /**\n         * Updates this hasher with a message.\n         *\n         * @param {WordArray|string} messageUpdate The message to append.\n         *\n         * @return {Hasher} This hasher.\n         *\n         * @example\n         *\n         *     hasher.update('message');\n         *     hasher.update(wordArray);\n         */\n        update: function (messageUpdate) {\n            // Append\n            this._append(messageUpdate);\n\n            // Update the hash\n            this._process();\n\n            // Chainable\n            return this;\n        },\n\n        /**\n         * Finalizes the hash computation.\n         * Note that the finalize operation is effectively a destructive, read-once operation.\n         *\n         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n         *\n         * @return {WordArray} The hash.\n         *\n         * @example\n         *\n         *     var hash = hasher.finalize();\n         *     var hash = hasher.finalize('message');\n         *     var hash = hasher.finalize(wordArray);\n         */\n        finalize: function (messageUpdate) {\n            // Final message update\n            if (messageUpdate) {\n                this._append(messageUpdate);\n            }\n\n            // Perform concrete-hasher logic\n            var hash = this._doFinalize();\n\n            return hash;\n        },\n\n        blockSize: 512/32,\n\n        /**\n         * Creates a shortcut function to a hasher's object interface.\n         *\n         * @param {Hasher} hasher The hasher to create a helper for.\n         *\n         * @return {Function} The shortcut function.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n         */\n        _createHelper: function (hasher) {\n            return function (message, cfg) {\n                return new hasher.init(cfg).finalize(message);\n            };\n        },\n\n        /**\n         * Creates a shortcut function to the HMAC's object interface.\n         *\n         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n         *\n         * @return {Function} The shortcut function.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n         */\n        _createHmacHelper: function (hasher) {\n            return function (message, key) {\n                return new C_algo.HMAC.init(hasher, key).finalize(message);\n            };\n        }\n    });\n\n    /**\n     * Algorithm namespace.\n     */\n    var C_algo = C.algo = {};\n\n    return C;\n}(Math));\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/**\n * Cipher core components.\n */\nCryptoJS.lib.Cipher || (function (undefined) {\n    // Shortcuts\n    var C = CryptoJS;\n    var C_lib = C.lib;\n    var Base = C_lib.Base;\n    var WordArray = C_lib.WordArray;\n    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n    var C_enc = C.enc;\n    var Utf8 = C_enc.Utf8;\n    var Base64 = C_enc.Base64;\n    var C_algo = C.algo;\n    var EvpKDF = C_algo.EvpKDF;\n\n    /**\n     * Abstract base cipher template.\n     *\n     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n     */\n    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n        /**\n         * Configuration options.\n         *\n         * @property {WordArray} iv The IV to use for this operation.\n         */\n        cfg: Base.extend(),\n\n        /**\n         * Creates this cipher in encryption mode.\n         *\n         * @param {WordArray} key The key.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @return {Cipher} A cipher instance.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n         */\n        createEncryptor: function (key, cfg) {\n            return this.create(this._ENC_XFORM_MODE, key, cfg);\n        },\n\n        /**\n         * Creates this cipher in decryption mode.\n         *\n         * @param {WordArray} key The key.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @return {Cipher} A cipher instance.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n         */\n        createDecryptor: function (key, cfg) {\n            return this.create(this._DEC_XFORM_MODE, key, cfg);\n        },\n\n        /**\n         * Initializes a newly created cipher.\n         *\n         * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n         * @param {WordArray} key The key.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @example\n         *\n         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n         */\n        init: function (xformMode, key, cfg) {\n            // Apply config defaults\n            this.cfg = this.cfg.extend(cfg);\n\n            // Store transform mode and key\n            this._xformMode = xformMode;\n            this._key = key;\n\n            // Set initial values\n            this.reset();\n        },\n\n        /**\n         * Resets this cipher to its initial state.\n         *\n         * @example\n         *\n         *     cipher.reset();\n         */\n        reset: function () {\n            // Reset data buffer\n            BufferedBlockAlgorithm.reset.call(this);\n\n            // Perform concrete-cipher logic\n            this._doReset();\n        },\n\n        /**\n         * Adds data to be encrypted or decrypted.\n         *\n         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n         *\n         * @return {WordArray} The data after processing.\n         *\n         * @example\n         *\n         *     var encrypted = cipher.process('data');\n         *     var encrypted = cipher.process(wordArray);\n         */\n        process: function (dataUpdate) {\n            // Append\n            this._append(dataUpdate);\n\n            // Process available blocks\n            return this._process();\n        },\n\n        /**\n         * Finalizes the encryption or decryption process.\n         * Note that the finalize operation is effectively a destructive, read-once operation.\n         *\n         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n         *\n         * @return {WordArray} The data after final processing.\n         *\n         * @example\n         *\n         *     var encrypted = cipher.finalize();\n         *     var encrypted = cipher.finalize('data');\n         *     var encrypted = cipher.finalize(wordArray);\n         */\n        finalize: function (dataUpdate) {\n            // Final data update\n            if (dataUpdate) {\n                this._append(dataUpdate);\n            }\n\n            // Perform concrete-cipher logic\n            var finalProcessedData = this._doFinalize();\n\n            return finalProcessedData;\n        },\n\n        keySize: 128/32,\n\n        ivSize: 128/32,\n\n        _ENC_XFORM_MODE: 1,\n\n        _DEC_XFORM_MODE: 2,\n\n        /**\n         * Creates shortcut functions to a cipher's object interface.\n         *\n         * @param {Cipher} cipher The cipher to create a helper for.\n         *\n         * @return {Object} An object with encrypt and decrypt shortcut functions.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n         */\n        _createHelper: (function () {\n            function selectCipherStrategy(key) {\n                if (typeof key == 'string') {\n                    return PasswordBasedCipher;\n                } else {\n                    return SerializableCipher;\n                }\n            }\n\n            return function (cipher) {\n                return {\n                    encrypt: function (message, key, cfg) {\n                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n                    },\n\n                    decrypt: function (ciphertext, key, cfg) {\n                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n                    }\n                };\n            };\n        }())\n    });\n\n    /**\n     * Abstract base stream cipher template.\n     *\n     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n     */\n    var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n        _doFinalize: function () {\n            // Process partial blocks\n            var finalProcessedBlocks = this._process(!!'flush');\n\n            return finalProcessedBlocks;\n        },\n\n        blockSize: 1\n    });\n\n    /**\n     * Mode namespace.\n     */\n    var C_mode = C.mode = {};\n\n    /**\n     * Abstract base block cipher mode template.\n     */\n    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n        /**\n         * Creates this mode for encryption.\n         *\n         * @param {Cipher} cipher A block cipher instance.\n         * @param {Array} iv The IV words.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n         */\n        createEncryptor: function (cipher, iv) {\n            return this.Encryptor.create(cipher, iv);\n        },\n\n        /**\n         * Creates this mode for decryption.\n         *\n         * @param {Cipher} cipher A block cipher instance.\n         * @param {Array} iv The IV words.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n         */\n        createDecryptor: function (cipher, iv) {\n            return this.Decryptor.create(cipher, iv);\n        },\n\n        /**\n         * Initializes a newly created mode.\n         *\n         * @param {Cipher} cipher A block cipher instance.\n         * @param {Array} iv The IV words.\n         *\n         * @example\n         *\n         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n         */\n        init: function (cipher, iv) {\n            this._cipher = cipher;\n            this._iv = iv;\n        }\n    });\n\n    /**\n     * Cipher Block Chaining mode.\n     */\n    var CBC = C_mode.CBC = (function () {\n        /**\n         * Abstract base CBC mode.\n         */\n        var CBC = BlockCipherMode.extend();\n\n        /**\n         * CBC encryptor.\n         */\n        CBC.Encryptor = CBC.extend({\n            /**\n             * Processes the data block at offset.\n             *\n             * @param {Array} words The data words to operate on.\n             * @param {number} offset The offset where the block starts.\n             *\n             * @example\n             *\n             *     mode.processBlock(data.words, offset);\n             */\n            processBlock: function (words, offset) {\n                // Shortcuts\n                var cipher = this._cipher;\n                var blockSize = cipher.blockSize;\n\n                // XOR and encrypt\n                xorBlock.call(this, words, offset, blockSize);\n                cipher.encryptBlock(words, offset);\n\n                // Remember this block to use with next block\n                this._prevBlock = words.slice(offset, offset + blockSize);\n            }\n        });\n\n        /**\n         * CBC decryptor.\n         */\n        CBC.Decryptor = CBC.extend({\n            /**\n             * Processes the data block at offset.\n             *\n             * @param {Array} words The data words to operate on.\n             * @param {number} offset The offset where the block starts.\n             *\n             * @example\n             *\n             *     mode.processBlock(data.words, offset);\n             */\n            processBlock: function (words, offset) {\n                // Shortcuts\n                var cipher = this._cipher;\n                var blockSize = cipher.blockSize;\n\n                // Remember this block to use with next block\n                var thisBlock = words.slice(offset, offset + blockSize);\n\n                // Decrypt and XOR\n                cipher.decryptBlock(words, offset);\n                xorBlock.call(this, words, offset, blockSize);\n\n                // This block becomes the previous block\n                this._prevBlock = thisBlock;\n            }\n        });\n\n        function xorBlock(words, offset, blockSize) {\n            // Shortcut\n            var iv = this._iv;\n\n            // Choose mixing block\n            if (iv) {\n                var block = iv;\n\n                // Remove IV for subsequent blocks\n                this._iv = undefined;\n            } else {\n                var block = this._prevBlock;\n            }\n\n            // XOR blocks\n            for (var i = 0; i < blockSize; i++) {\n                words[offset + i] ^= block[i];\n            }\n        }\n\n        return CBC;\n    }());\n\n    /**\n     * Padding namespace.\n     */\n    var C_pad = C.pad = {};\n\n    /**\n     * PKCS #5/7 padding strategy.\n     */\n    var Pkcs7 = C_pad.Pkcs7 = {\n        /**\n         * Pads data using the algorithm defined in PKCS #5/7.\n         *\n         * @param {WordArray} data The data to pad.\n         * @param {number} blockSize The multiple that the data should be padded to.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n         */\n        pad: function (data, blockSize) {\n            // Shortcut\n            var blockSizeBytes = blockSize * 4;\n\n            // Count padding bytes\n            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n            // Create padding word\n            var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n            // Create padding\n            var paddingWords = [];\n            for (var i = 0; i < nPaddingBytes; i += 4) {\n                paddingWords.push(paddingWord);\n            }\n            var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n            // Add padding\n            data.concat(padding);\n        },\n\n        /**\n         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n         *\n         * @param {WordArray} data The data to unpad.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     CryptoJS.pad.Pkcs7.unpad(wordArray);\n         */\n        unpad: function (data) {\n            // Get number of padding bytes from last byte\n            var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n            // Remove padding\n            data.sigBytes -= nPaddingBytes;\n        }\n    };\n\n    /**\n     * Abstract base block cipher template.\n     *\n     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n     */\n    var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n        /**\n         * Configuration options.\n         *\n         * @property {Mode} mode The block mode to use. Default: CBC\n         * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n         */\n        cfg: Cipher.cfg.extend({\n            mode: CBC,\n            padding: Pkcs7\n        }),\n\n        reset: function () {\n            // Reset cipher\n            Cipher.reset.call(this);\n\n            // Shortcuts\n            var cfg = this.cfg;\n            var iv = cfg.iv;\n            var mode = cfg.mode;\n\n            // Reset block mode\n            if (this._xformMode == this._ENC_XFORM_MODE) {\n                var modeCreator = mode.createEncryptor;\n            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n                var modeCreator = mode.createDecryptor;\n\n                // Keep at least one block in the buffer for unpadding\n                this._minBufferSize = 1;\n            }\n            this._mode = modeCreator.call(mode, this, iv && iv.words);\n        },\n\n        _doProcessBlock: function (words, offset) {\n            this._mode.processBlock(words, offset);\n        },\n\n        _doFinalize: function () {\n            // Shortcut\n            var padding = this.cfg.padding;\n\n            // Finalize\n            if (this._xformMode == this._ENC_XFORM_MODE) {\n                // Pad data\n                padding.pad(this._data, this.blockSize);\n\n                // Process final blocks\n                var finalProcessedBlocks = this._process(!!'flush');\n            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n                // Process final blocks\n                var finalProcessedBlocks = this._process(!!'flush');\n\n                // Unpad data\n                padding.unpad(finalProcessedBlocks);\n            }\n\n            return finalProcessedBlocks;\n        },\n\n        blockSize: 128/32\n    });\n\n    /**\n     * A collection of cipher parameters.\n     *\n     * @property {WordArray} ciphertext The raw ciphertext.\n     * @property {WordArray} key The key to this ciphertext.\n     * @property {WordArray} iv The IV used in the ciphering operation.\n     * @property {WordArray} salt The salt used with a key derivation function.\n     * @property {Cipher} algorithm The cipher algorithm.\n     * @property {Mode} mode The block mode used in the ciphering operation.\n     * @property {Padding} padding The padding scheme used in the ciphering operation.\n     * @property {number} blockSize The block size of the cipher.\n     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n     */\n    var CipherParams = C_lib.CipherParams = Base.extend({\n        /**\n         * Initializes a newly created cipher params object.\n         *\n         * @param {Object} cipherParams An object with any of the possible cipher parameters.\n         *\n         * @example\n         *\n         *     var cipherParams = CryptoJS.lib.CipherParams.create({\n         *         ciphertext: ciphertextWordArray,\n         *         key: keyWordArray,\n         *         iv: ivWordArray,\n         *         salt: saltWordArray,\n         *         algorithm: CryptoJS.algo.AES,\n         *         mode: CryptoJS.mode.CBC,\n         *         padding: CryptoJS.pad.PKCS7,\n         *         blockSize: 4,\n         *         formatter: CryptoJS.format.OpenSSL\n         *     });\n         */\n        init: function (cipherParams) {\n            this.mixIn(cipherParams);\n        },\n\n        /**\n         * Converts this cipher params object to a string.\n         *\n         * @param {Format} formatter (Optional) The formatting strategy to use.\n         *\n         * @return {string} The stringified cipher params.\n         *\n         * @throws Error If neither the formatter nor the default formatter is set.\n         *\n         * @example\n         *\n         *     var string = cipherParams + '';\n         *     var string = cipherParams.toString();\n         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n         */\n        toString: function (formatter) {\n            return (formatter || this.formatter).stringify(this);\n        }\n    });\n\n    /**\n     * Format namespace.\n     */\n    var C_format = C.format = {};\n\n    /**\n     * OpenSSL formatting strategy.\n     */\n    var OpenSSLFormatter = C_format.OpenSSL = {\n        /**\n         * Converts a cipher params object to an OpenSSL-compatible string.\n         *\n         * @param {CipherParams} cipherParams The cipher params object.\n         *\n         * @return {string} The OpenSSL-compatible string.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n         */\n        stringify: function (cipherParams) {\n            // Shortcuts\n            var ciphertext = cipherParams.ciphertext;\n            var salt = cipherParams.salt;\n\n            // Format\n            if (salt) {\n                var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n            } else {\n                var wordArray = ciphertext;\n            }\n\n            return wordArray.toString(Base64);\n        },\n\n        /**\n         * Converts an OpenSSL-compatible string to a cipher params object.\n         *\n         * @param {string} openSSLStr The OpenSSL-compatible string.\n         *\n         * @return {CipherParams} The cipher params object.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n         */\n        parse: function (openSSLStr) {\n            // Parse base64\n            var ciphertext = Base64.parse(openSSLStr);\n\n            // Shortcut\n            var ciphertextWords = ciphertext.words;\n\n            // Test for salt\n            if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n                // Extract salt\n                var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n                // Remove salt from ciphertext\n                ciphertextWords.splice(0, 4);\n                ciphertext.sigBytes -= 16;\n            }\n\n            return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n        }\n    };\n\n    /**\n     * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n     */\n    var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n        /**\n         * Configuration options.\n         *\n         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n         */\n        cfg: Base.extend({\n            format: OpenSSLFormatter\n        }),\n\n        /**\n         * Encrypts a message.\n         *\n         * @param {Cipher} cipher The cipher algorithm to use.\n         * @param {WordArray|string} message The message to encrypt.\n         * @param {WordArray} key The key.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @return {CipherParams} A cipher params object.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n         */\n        encrypt: function (cipher, message, key, cfg) {\n            // Apply config defaults\n            cfg = this.cfg.extend(cfg);\n\n            // Encrypt\n            var encryptor = cipher.createEncryptor(key, cfg);\n            var ciphertext = encryptor.finalize(message);\n\n            // Shortcut\n            var cipherCfg = encryptor.cfg;\n\n            // Create and return serializable cipher params\n            return CipherParams.create({\n                ciphertext: ciphertext,\n                key: key,\n                iv: cipherCfg.iv,\n                algorithm: cipher,\n                mode: cipherCfg.mode,\n                padding: cipherCfg.padding,\n                blockSize: cipher.blockSize,\n                formatter: cfg.format\n            });\n        },\n\n        /**\n         * Decrypts serialized ciphertext.\n         *\n         * @param {Cipher} cipher The cipher algorithm to use.\n         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n         * @param {WordArray} key The key.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @return {WordArray} The plaintext.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n         */\n        decrypt: function (cipher, ciphertext, key, cfg) {\n            // Apply config defaults\n            cfg = this.cfg.extend(cfg);\n\n            // Convert string to CipherParams\n            ciphertext = this._parse(ciphertext, cfg.format);\n\n            // Decrypt\n            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n            return plaintext;\n        },\n\n        /**\n         * Converts serialized ciphertext to CipherParams,\n         * else assumed CipherParams already and returns ciphertext unchanged.\n         *\n         * @param {CipherParams|string} ciphertext The ciphertext.\n         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n         *\n         * @return {CipherParams} The unserialized ciphertext.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n         */\n        _parse: function (ciphertext, format) {\n            if (typeof ciphertext == 'string') {\n                return format.parse(ciphertext, this);\n            } else {\n                return ciphertext;\n            }\n        }\n    });\n\n    /**\n     * Key derivation function namespace.\n     */\n    var C_kdf = C.kdf = {};\n\n    /**\n     * OpenSSL key derivation function.\n     */\n    var OpenSSLKdf = C_kdf.OpenSSL = {\n        /**\n         * Derives a key and IV from a password.\n         *\n         * @param {string} password The password to derive from.\n         * @param {number} keySize The size in words of the key to generate.\n         * @param {number} ivSize The size in words of the IV to generate.\n         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n         *\n         * @return {CipherParams} A cipher params object with the key, IV, and salt.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n         */\n        execute: function (password, keySize, ivSize, salt) {\n            // Generate random salt\n            if (!salt) {\n                salt = WordArray.random(64/8);\n            }\n\n            // Derive key and IV\n            var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n            // Separate key and IV\n            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n            key.sigBytes = keySize * 4;\n\n            // Return params\n            return CipherParams.create({ key: key, iv: iv, salt: salt });\n        }\n    };\n\n    /**\n     * A serializable cipher wrapper that derives the key from a password,\n     * and returns ciphertext as a serializable cipher params object.\n     */\n    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n        /**\n         * Configuration options.\n         *\n         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n         */\n        cfg: SerializableCipher.cfg.extend({\n            kdf: OpenSSLKdf\n        }),\n\n        /**\n         * Encrypts a message using a password.\n         *\n         * @param {Cipher} cipher The cipher algorithm to use.\n         * @param {WordArray|string} message The message to encrypt.\n         * @param {string} password The password.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @return {CipherParams} A cipher params object.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n         */\n        encrypt: function (cipher, message, password, cfg) {\n            // Apply config defaults\n            cfg = this.cfg.extend(cfg);\n\n            // Derive key and other params\n            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n            // Add IV to config\n            cfg.iv = derivedParams.iv;\n\n            // Encrypt\n            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n            // Mix in derived params\n            ciphertext.mixIn(derivedParams);\n\n            return ciphertext;\n        },\n\n        /**\n         * Decrypts serialized ciphertext using a password.\n         *\n         * @param {Cipher} cipher The cipher algorithm to use.\n         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n         * @param {string} password The password.\n         * @param {Object} cfg (Optional) The configuration options to use for this operation.\n         *\n         * @return {WordArray} The plaintext.\n         *\n         * @static\n         *\n         * @example\n         *\n         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n         */\n        decrypt: function (cipher, ciphertext, password, cfg) {\n            // Apply config defaults\n            cfg = this.cfg.extend(cfg);\n\n            // Convert string to CipherParams\n            ciphertext = this._parse(ciphertext, cfg.format);\n\n            // Derive key and other params\n            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n            // Add IV to config\n            cfg.iv = derivedParams.iv;\n\n            // Decrypt\n            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n            return plaintext;\n        }\n    });\n}());\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nvar CryptoJS=CryptoJS||function(v,p){var d={},u=d.lib={},r=function(){},f=u.Base={extend:function(a){r.prototype=this;var b=new r;a&&b.mixIn(a);b.hasOwnProperty(\"init\")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\ns=u.WordArray=f.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=p?b:4*a.length},toString:function(a){return(a||y).stringify(this)},concat:function(a){var b=this.words,c=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var n=0;n<a;n++)b[j+n>>>2]|=(c[n>>>2]>>>24-8*(n%4)&255)<<24-8*((j+n)%4);else if(65535<c.length)for(n=0;n<a;n+=4)b[j+n>>>2]=c[n>>>2];else b.push.apply(b,c);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<\n32-8*(b%4);a.length=v.ceil(b/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],c=0;c<a;c+=4)b.push(4294967296*v.random()|0);return new s.init(b,a)}}),x=d.enc={},y=x.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var c=[],j=0;j<a;j++){var n=b[j>>>2]>>>24-8*(j%4)&255;c.push((n>>>4).toString(16));c.push((n&15).toString(16))}return c.join(\"\")},parse:function(a){for(var b=a.length,c=[],j=0;j<b;j+=2)c[j>>>3]|=parseInt(a.substr(j,\n2),16)<<24-4*(j%8);return new s.init(c,b/2)}},e=x.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var c=[],j=0;j<a;j++)c.push(String.fromCharCode(b[j>>>2]>>>24-8*(j%4)&255));return c.join(\"\")},parse:function(a){for(var b=a.length,c=[],j=0;j<b;j++)c[j>>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new s.init(c,b)}},q=x.Utf8={stringify:function(a){try{return decodeURIComponent(escape(e.stringify(a)))}catch(b){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return e.parse(unescape(encodeURIComponent(a)))}},\nt=u.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new s.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=q.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,c=b.words,j=b.sigBytes,n=this.blockSize,e=j/(4*n),e=a?v.ceil(e):v.max((e|0)-this._minBufferSize,0);a=e*n;j=v.min(4*a,j);if(a){for(var f=0;f<a;f+=n)this._doProcessBlock(c,f);f=c.splice(0,a);b.sigBytes-=j}return new s.init(f,j)},clone:function(){var a=f.clone.call(this);\na._data=this._data.clone();return a},_minBufferSize:0});u.Hasher=t.extend({cfg:f.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){t.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,c){return(new a.init(c)).finalize(b)}},_createHmacHelper:function(a){return function(b,c){return(new w.HMAC.init(a,\nc)).finalize(b)}}});var w=d.algo={};return d}(Math);\n(function(v){var p=CryptoJS,d=p.lib,u=d.Base,r=d.WordArray,p=p.x64={};p.Word=u.extend({init:function(f,s){this.high=f;this.low=s}});p.WordArray=u.extend({init:function(f,s){f=this.words=f||[];this.sigBytes=s!=v?s:8*f.length},toX32:function(){for(var f=this.words,s=f.length,d=[],p=0;p<s;p++){var e=f[p];d.push(e.high);d.push(e.low)}return r.create(d,this.sigBytes)},clone:function(){for(var f=u.clone.call(this),d=f.words=this.words.slice(0),p=d.length,r=0;r<p;r++)d[r]=d[r].clone();return f}})})();\n(function(v){for(var p=CryptoJS,d=p.lib,u=d.WordArray,r=d.Hasher,f=p.x64.Word,d=p.algo,s=[],x=[],y=[],e=1,q=0,t=0;24>t;t++){s[e+5*q]=(t+1)*(t+2)/2%64;var w=(2*e+3*q)%5,e=q%5,q=w}for(e=0;5>e;e++)for(q=0;5>q;q++)x[e+5*q]=q+5*((2*e+3*q)%5);e=1;for(q=0;24>q;q++){for(var a=w=t=0;7>a;a++){if(e&1){var b=(1<<a)-1;32>b?w^=1<<b:t^=1<<b-32}e=e&128?e<<1^113:e<<1}y[q]=f.create(t,w)}for(var c=[],e=0;25>e;e++)c[e]=f.create();d=d.SHA3=r.extend({cfg:r.cfg.extend({outputLength:512}),_doReset:function(){for(var a=this._state=\n[],b=0;25>b;b++)a[b]=new f.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(a,b){for(var e=this._state,f=this.blockSize/2,h=0;h<f;h++){var l=a[b+2*h],m=a[b+2*h+1],l=(l<<8|l>>>24)&16711935|(l<<24|l>>>8)&4278255360,m=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,g=e[h];g.high^=m;g.low^=l}for(f=0;24>f;f++){for(h=0;5>h;h++){for(var d=l=0,k=0;5>k;k++)g=e[h+5*k],l^=g.high,d^=g.low;g=c[h];g.high=l;g.low=d}for(h=0;5>h;h++){g=c[(h+4)%5];l=c[(h+1)%5];m=l.high;k=l.low;l=g.high^\n(m<<1|k>>>31);d=g.low^(k<<1|m>>>31);for(k=0;5>k;k++)g=e[h+5*k],g.high^=l,g.low^=d}for(m=1;25>m;m++)g=e[m],h=g.high,g=g.low,k=s[m],32>k?(l=h<<k|g>>>32-k,d=g<<k|h>>>32-k):(l=g<<k-32|h>>>64-k,d=h<<k-32|g>>>64-k),g=c[x[m]],g.high=l,g.low=d;g=c[0];h=e[0];g.high=h.high;g.low=h.low;for(h=0;5>h;h++)for(k=0;5>k;k++)m=h+5*k,g=e[m],l=c[m],m=c[(h+1)%5+5*k],d=c[(h+2)%5+5*k],g.high=l.high^~m.high&d.high,g.low=l.low^~m.low&d.low;g=e[0];h=y[f];g.high^=h.high;g.low^=h.low}},_doFinalize:function(){var a=this._data,\nb=a.words,c=8*a.sigBytes,e=32*this.blockSize;b[c>>>5]|=1<<24-c%32;b[(v.ceil((c+1)/e)*e>>>5)-1]|=128;a.sigBytes=4*b.length;this._process();for(var a=this._state,b=this.cfg.outputLength/8,c=b/8,e=[],h=0;h<c;h++){var d=a[h],f=d.high,d=d.low,f=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360,d=(d<<8|d>>>24)&16711935|(d<<24|d>>>8)&4278255360;e.push(d);e.push(f)}return new u.init(e,b)},clone:function(){for(var a=r.clone.call(this),b=a._state=this._state.slice(0),c=0;25>c;c++)b[c]=b[c].clone();return a}});\np.SHA3=r._createHelper(d);p.HmacSHA3=r._createHmacHelper(d)})(Math);\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nvar CryptoJS=CryptoJS||function(a,c){var d={},j=d.lib={},f=function(){},m=j.Base={extend:function(a){f.prototype=this;var b=new f;a&&b.mixIn(a);b.hasOwnProperty(\"init\")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\nB=j.WordArray=m.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=c?b:4*a.length},toString:function(a){return(a||y).stringify(this)},concat:function(a){var b=this.words,g=a.words,e=this.sigBytes;a=a.sigBytes;this.clamp();if(e%4)for(var k=0;k<a;k++)b[e+k>>>2]|=(g[k>>>2]>>>24-8*(k%4)&255)<<24-8*((e+k)%4);else if(65535<g.length)for(k=0;k<a;k+=4)b[e+k>>>2]=g[k>>>2];else b.push.apply(b,g);this.sigBytes+=a;return this},clamp:function(){var n=this.words,b=this.sigBytes;n[b>>>2]&=4294967295<<\n32-8*(b%4);n.length=a.ceil(b/4)},clone:function(){var a=m.clone.call(this);a.words=this.words.slice(0);return a},random:function(n){for(var b=[],g=0;g<n;g+=4)b.push(4294967296*a.random()|0);return new B.init(b,n)}}),v=d.enc={},y=v.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var g=[],e=0;e<a;e++){var k=b[e>>>2]>>>24-8*(e%4)&255;g.push((k>>>4).toString(16));g.push((k&15).toString(16))}return g.join(\"\")},parse:function(a){for(var b=a.length,g=[],e=0;e<b;e+=2)g[e>>>3]|=parseInt(a.substr(e,\n2),16)<<24-4*(e%8);return new B.init(g,b/2)}},F=v.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var g=[],e=0;e<a;e++)g.push(String.fromCharCode(b[e>>>2]>>>24-8*(e%4)&255));return g.join(\"\")},parse:function(a){for(var b=a.length,g=[],e=0;e<b;e++)g[e>>>2]|=(a.charCodeAt(e)&255)<<24-8*(e%4);return new B.init(g,b)}},ha=v.Utf8={stringify:function(a){try{return decodeURIComponent(escape(F.stringify(a)))}catch(b){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return F.parse(unescape(encodeURIComponent(a)))}},\nZ=j.BufferedBlockAlgorithm=m.extend({reset:function(){this._data=new B.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=ha.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(n){var b=this._data,g=b.words,e=b.sigBytes,k=this.blockSize,m=e/(4*k),m=n?a.ceil(m):a.max((m|0)-this._minBufferSize,0);n=m*k;e=a.min(4*n,e);if(n){for(var c=0;c<n;c+=k)this._doProcessBlock(g,c);c=g.splice(0,n);b.sigBytes-=e}return new B.init(c,e)},clone:function(){var a=m.clone.call(this);\na._data=this._data.clone();return a},_minBufferSize:0});j.Hasher=Z.extend({cfg:m.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){Z.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,g){return(new a.init(g)).finalize(b)}},_createHmacHelper:function(a){return function(b,g){return(new ia.HMAC.init(a,\ng)).finalize(b)}}});var ia=d.algo={};return d}(Math);\n(function(a){var c=CryptoJS,d=c.lib,j=d.Base,f=d.WordArray,c=c.x64={};c.Word=j.extend({init:function(a,c){this.high=a;this.low=c}});c.WordArray=j.extend({init:function(c,d){c=this.words=c||[];this.sigBytes=d!=a?d:8*c.length},toX32:function(){for(var a=this.words,c=a.length,d=[],j=0;j<c;j++){var F=a[j];d.push(F.high);d.push(F.low)}return f.create(d,this.sigBytes)},clone:function(){for(var a=j.clone.call(this),c=a.words=this.words.slice(0),d=c.length,f=0;f<d;f++)c[f]=c[f].clone();return a}})})();\n(function(){function a(){return f.create.apply(f,arguments)}for(var c=CryptoJS,d=c.lib.Hasher,j=c.x64,f=j.Word,m=j.WordArray,j=c.algo,B=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],y=0;80>y;y++)v[y]=a();j=j.SHA512=d.extend({_doReset:function(){this._hash=new m.init([new f.init(1779033703,4089235720),new f.init(3144134277,2227873595),new f.init(1013904242,4271175723),new f.init(2773480762,1595750129),new f.init(1359893119,2917565137),new f.init(2600822924,725511199),new f.init(528734635,4215389547),new f.init(1541459225,327033209)])},_doProcessBlock:function(a,c){for(var d=this._hash.words,\nf=d[0],j=d[1],b=d[2],g=d[3],e=d[4],k=d[5],m=d[6],d=d[7],y=f.high,M=f.low,$=j.high,N=j.low,aa=b.high,O=b.low,ba=g.high,P=g.low,ca=e.high,Q=e.low,da=k.high,R=k.low,ea=m.high,S=m.low,fa=d.high,T=d.low,s=y,p=M,G=$,D=N,H=aa,E=O,W=ba,I=P,t=ca,q=Q,U=da,J=R,V=ea,K=S,X=fa,L=T,u=0;80>u;u++){var z=v[u];if(16>u)var r=z.high=a[c+2*u]|0,h=z.low=a[c+2*u+1]|0;else{var r=v[u-15],h=r.high,w=r.low,r=(h>>>1|w<<31)^(h>>>8|w<<24)^h>>>7,w=(w>>>1|h<<31)^(w>>>8|h<<24)^(w>>>7|h<<25),C=v[u-2],h=C.high,l=C.low,C=(h>>>19|l<<\n13)^(h<<3|l>>>29)^h>>>6,l=(l>>>19|h<<13)^(l<<3|h>>>29)^(l>>>6|h<<26),h=v[u-7],Y=h.high,A=v[u-16],x=A.high,A=A.low,h=w+h.low,r=r+Y+(h>>>0<w>>>0?1:0),h=h+l,r=r+C+(h>>>0<l>>>0?1:0),h=h+A,r=r+x+(h>>>0<A>>>0?1:0);z.high=r;z.low=h}var Y=t&U^~t&V,A=q&J^~q&K,z=s&G^s&H^G&H,ja=p&D^p&E^D&E,w=(s>>>28|p<<4)^(s<<30|p>>>2)^(s<<25|p>>>7),C=(p>>>28|s<<4)^(p<<30|s>>>2)^(p<<25|s>>>7),l=B[u],ka=l.high,ga=l.low,l=L+((q>>>14|t<<18)^(q>>>18|t<<14)^(q<<23|t>>>9)),x=X+((t>>>14|q<<18)^(t>>>18|q<<14)^(t<<23|q>>>9))+(l>>>0<\nL>>>0?1:0),l=l+A,x=x+Y+(l>>>0<A>>>0?1:0),l=l+ga,x=x+ka+(l>>>0<ga>>>0?1:0),l=l+h,x=x+r+(l>>>0<h>>>0?1:0),h=C+ja,z=w+z+(h>>>0<C>>>0?1:0),X=V,L=K,V=U,K=J,U=t,J=q,q=I+l|0,t=W+x+(q>>>0<I>>>0?1:0)|0,W=H,I=E,H=G,E=D,G=s,D=p,p=l+h|0,s=x+z+(p>>>0<l>>>0?1:0)|0}M=f.low=M+p;f.high=y+s+(M>>>0<p>>>0?1:0);N=j.low=N+D;j.high=$+G+(N>>>0<D>>>0?1:0);O=b.low=O+E;b.high=aa+H+(O>>>0<E>>>0?1:0);P=g.low=P+I;g.high=ba+W+(P>>>0<I>>>0?1:0);Q=e.low=Q+q;e.high=ca+t+(Q>>>0<q>>>0?1:0);R=k.low=R+J;k.high=da+U+(R>>>0<J>>>0?1:0);\nS=m.low=S+K;m.high=ea+V+(S>>>0<K>>>0?1:0);T=d.low=T+L;d.high=fa+X+(T>>>0<L>>>0?1:0)},_doFinalize:function(){var a=this._data,c=a.words,d=8*this._nDataBytes,f=8*a.sigBytes;c[f>>>5]|=128<<24-f%32;c[(f+128>>>10<<5)+30]=Math.floor(d/4294967296);c[(f+128>>>10<<5)+31]=d;a.sigBytes=4*c.length;this._process();return this._hash.toX32()},clone:function(){var a=d.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});c.SHA512=d._createHelper(j);c.HmacSHA512=d._createHmacHelper(j)})();\n(function(){var a=CryptoJS,c=a.x64,d=c.Word,j=c.WordArray,c=a.algo,f=c.SHA512,c=c.SHA384=f.extend({_doReset:function(){this._hash=new j.init([new d.init(3418070365,3238371032),new d.init(1654270250,914150663),new d.init(2438529370,812702999),new d.init(355462360,4144912697),new d.init(1731405415,4290775857),new d.init(2394180231,1750603025),new d.init(3675008525,1694076839),new d.init(1203062813,3204075428)])},_doFinalize:function(){var a=f._doFinalize.call(this);a.sigBytes-=16;return a}});a.SHA384=\nf._createHelper(c);a.HmacSHA384=f._createHmacHelper(c)})();\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nvar CryptoJS=CryptoJS||function(h,s){var f={},t=f.lib={},g=function(){},j=t.Base={extend:function(a){g.prototype=this;var c=new g;a&&c.mixIn(a);c.hasOwnProperty(\"init\")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\nq=t.WordArray=j.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=s?c:4*a.length},toString:function(a){return(a||u).stringify(this)},concat:function(a){var c=this.words,d=a.words,b=this.sigBytes;a=a.sigBytes;this.clamp();if(b%4)for(var e=0;e<a;e++)c[b+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((b+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)c[b+e>>>2]=d[e>>>2];else c.push.apply(c,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<\n32-8*(c%4);a.length=h.ceil(c/4)},clone:function(){var a=j.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],d=0;d<a;d+=4)c.push(4294967296*h.random()|0);return new q.init(c,a)}}),v=f.enc={},u=v.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++){var e=c[b>>>2]>>>24-8*(b%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join(\"\")},parse:function(a){for(var c=a.length,d=[],b=0;b<c;b+=2)d[b>>>3]|=parseInt(a.substr(b,\n2),16)<<24-4*(b%8);return new q.init(d,c/2)}},k=v.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++)d.push(String.fromCharCode(c[b>>>2]>>>24-8*(b%4)&255));return d.join(\"\")},parse:function(a){for(var c=a.length,d=[],b=0;b<c;b++)d[b>>>2]|=(a.charCodeAt(b)&255)<<24-8*(b%4);return new q.init(d,c)}},l=v.Utf8={stringify:function(a){try{return decodeURIComponent(escape(k.stringify(a)))}catch(c){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return k.parse(unescape(encodeURIComponent(a)))}},\nx=t.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new q.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=l.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,d=c.words,b=c.sigBytes,e=this.blockSize,f=b/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;b=h.min(4*a,b);if(a){for(var m=0;m<a;m+=e)this._doProcessBlock(d,m);m=d.splice(0,a);c.sigBytes-=b}return new q.init(m,b)},clone:function(){var a=j.clone.call(this);\na._data=this._data.clone();return a},_minBufferSize:0});t.Hasher=x.extend({cfg:j.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){x.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(c,d){return(new a.init(d)).finalize(c)}},_createHmacHelper:function(a){return function(c,d){return(new w.HMAC.init(a,\nd)).finalize(c)}}});var w=f.algo={};return f}(Math);\n(function(h){for(var s=CryptoJS,f=s.lib,t=f.WordArray,g=f.Hasher,f=s.algo,j=[],q=[],v=function(a){return 4294967296*(a-(a|0))|0},u=2,k=0;64>k;){var l;a:{l=u;for(var x=h.sqrt(l),w=2;w<=x;w++)if(!(l%w)){l=!1;break a}l=!0}l&&(8>k&&(j[k]=v(h.pow(u,0.5))),q[k]=v(h.pow(u,1/3)),k++);u++}var a=[],f=f.SHA256=g.extend({_doReset:function(){this._hash=new t.init(j.slice(0))},_doProcessBlock:function(c,d){for(var b=this._hash.words,e=b[0],f=b[1],m=b[2],h=b[3],p=b[4],j=b[5],k=b[6],l=b[7],n=0;64>n;n++){if(16>n)a[n]=\nc[d+n]|0;else{var r=a[n-15],g=a[n-2];a[n]=((r<<25|r>>>7)^(r<<14|r>>>18)^r>>>3)+a[n-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+a[n-16]}r=l+((p<<26|p>>>6)^(p<<21|p>>>11)^(p<<7|p>>>25))+(p&j^~p&k)+q[n]+a[n];g=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&f^e&m^f&m);l=k;k=j;j=p;p=h+r|0;h=m;m=f;f=e;e=r+g|0}b[0]=b[0]+e|0;b[1]=b[1]+f|0;b[2]=b[2]+m|0;b[3]=b[3]+h|0;b[4]=b[4]+p|0;b[5]=b[5]+j|0;b[6]=b[6]+k|0;b[7]=b[7]+l|0},_doFinalize:function(){var a=this._data,d=a.words,b=8*this._nDataBytes,e=8*a.sigBytes;\nd[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=h.floor(b/4294967296);d[(e+64>>>9<<4)+15]=b;a.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var a=g.clone.call(this);a._hash=this._hash.clone();return a}});s.SHA256=g._createHelper(f);s.HmacSHA256=g._createHmacHelper(f)})(Math);\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nvar CryptoJS=CryptoJS||function(a,m){var r={},f=r.lib={},g=function(){},l=f.Base={extend:function(a){g.prototype=this;var b=new g;a&&b.mixIn(a);b.hasOwnProperty(\"init\")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\np=f.WordArray=l.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=m?b:4*a.length},toString:function(a){return(a||q).stringify(this)},concat:function(a){var b=this.words,d=a.words,c=this.sigBytes;a=a.sigBytes;this.clamp();if(c%4)for(var j=0;j<a;j++)b[c+j>>>2]|=(d[j>>>2]>>>24-8*(j%4)&255)<<24-8*((c+j)%4);else if(65535<d.length)for(j=0;j<a;j+=4)b[c+j>>>2]=d[j>>>2];else b.push.apply(b,d);this.sigBytes+=a;return this},clamp:function(){var n=this.words,b=this.sigBytes;n[b>>>2]&=4294967295<<\n32-8*(b%4);n.length=a.ceil(b/4)},clone:function(){var a=l.clone.call(this);a.words=this.words.slice(0);return a},random:function(n){for(var b=[],d=0;d<n;d+=4)b.push(4294967296*a.random()|0);return new p.init(b,n)}}),y=r.enc={},q=y.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++){var j=b[c>>>2]>>>24-8*(c%4)&255;d.push((j>>>4).toString(16));d.push((j&15).toString(16))}return d.join(\"\")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c+=2)d[c>>>3]|=parseInt(a.substr(c,\n2),16)<<24-4*(c%8);return new p.init(d,b/2)}},G=y.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++)d.push(String.fromCharCode(b[c>>>2]>>>24-8*(c%4)&255));return d.join(\"\")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c++)d[c>>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return new p.init(d,b)}},fa=y.Utf8={stringify:function(a){try{return decodeURIComponent(escape(G.stringify(a)))}catch(b){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return G.parse(unescape(encodeURIComponent(a)))}},\nh=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new p.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=fa.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(n){var b=this._data,d=b.words,c=b.sigBytes,j=this.blockSize,l=c/(4*j),l=n?a.ceil(l):a.max((l|0)-this._minBufferSize,0);n=l*j;c=a.min(4*n,c);if(n){for(var h=0;h<n;h+=j)this._doProcessBlock(d,h);h=d.splice(0,n);b.sigBytes-=c}return new p.init(h,c)},clone:function(){var a=l.clone.call(this);\na._data=this._data.clone();return a},_minBufferSize:0});f.Hasher=h.extend({cfg:l.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){h.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,d){return(new a.init(d)).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return(new ga.HMAC.init(a,\nd)).finalize(b)}}});var ga=r.algo={};return r}(Math);\n(function(a){var m=CryptoJS,r=m.lib,f=r.Base,g=r.WordArray,m=m.x64={};m.Word=f.extend({init:function(a,p){this.high=a;this.low=p}});m.WordArray=f.extend({init:function(l,p){l=this.words=l||[];this.sigBytes=p!=a?p:8*l.length},toX32:function(){for(var a=this.words,p=a.length,f=[],q=0;q<p;q++){var G=a[q];f.push(G.high);f.push(G.low)}return g.create(f,this.sigBytes)},clone:function(){for(var a=f.clone.call(this),p=a.words=this.words.slice(0),g=p.length,q=0;q<g;q++)p[q]=p[q].clone();return a}})})();\n(function(){function a(){return g.create.apply(g,arguments)}for(var m=CryptoJS,r=m.lib.Hasher,f=m.x64,g=f.Word,l=f.WordArray,f=m.algo,p=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],y=[],q=0;80>q;q++)y[q]=a();f=f.SHA512=r.extend({_doReset:function(){this._hash=new l.init([new g.init(1779033703,4089235720),new g.init(3144134277,2227873595),new g.init(1013904242,4271175723),new g.init(2773480762,1595750129),new g.init(1359893119,2917565137),new g.init(2600822924,725511199),new g.init(528734635,4215389547),new g.init(1541459225,327033209)])},_doProcessBlock:function(a,f){for(var h=this._hash.words,\ng=h[0],n=h[1],b=h[2],d=h[3],c=h[4],j=h[5],l=h[6],h=h[7],q=g.high,m=g.low,r=n.high,N=n.low,Z=b.high,O=b.low,$=d.high,P=d.low,aa=c.high,Q=c.low,ba=j.high,R=j.low,ca=l.high,S=l.low,da=h.high,T=h.low,v=q,s=m,H=r,E=N,I=Z,F=O,W=$,J=P,w=aa,t=Q,U=ba,K=R,V=ca,L=S,X=da,M=T,x=0;80>x;x++){var B=y[x];if(16>x)var u=B.high=a[f+2*x]|0,e=B.low=a[f+2*x+1]|0;else{var u=y[x-15],e=u.high,z=u.low,u=(e>>>1|z<<31)^(e>>>8|z<<24)^e>>>7,z=(z>>>1|e<<31)^(z>>>8|e<<24)^(z>>>7|e<<25),D=y[x-2],e=D.high,k=D.low,D=(e>>>19|k<<13)^\n(e<<3|k>>>29)^e>>>6,k=(k>>>19|e<<13)^(k<<3|e>>>29)^(k>>>6|e<<26),e=y[x-7],Y=e.high,C=y[x-16],A=C.high,C=C.low,e=z+e.low,u=u+Y+(e>>>0<z>>>0?1:0),e=e+k,u=u+D+(e>>>0<k>>>0?1:0),e=e+C,u=u+A+(e>>>0<C>>>0?1:0);B.high=u;B.low=e}var Y=w&U^~w&V,C=t&K^~t&L,B=v&H^v&I^H&I,ha=s&E^s&F^E&F,z=(v>>>28|s<<4)^(v<<30|s>>>2)^(v<<25|s>>>7),D=(s>>>28|v<<4)^(s<<30|v>>>2)^(s<<25|v>>>7),k=p[x],ia=k.high,ea=k.low,k=M+((t>>>14|w<<18)^(t>>>18|w<<14)^(t<<23|w>>>9)),A=X+((w>>>14|t<<18)^(w>>>18|t<<14)^(w<<23|t>>>9))+(k>>>0<M>>>\n0?1:0),k=k+C,A=A+Y+(k>>>0<C>>>0?1:0),k=k+ea,A=A+ia+(k>>>0<ea>>>0?1:0),k=k+e,A=A+u+(k>>>0<e>>>0?1:0),e=D+ha,B=z+B+(e>>>0<D>>>0?1:0),X=V,M=L,V=U,L=K,U=w,K=t,t=J+k|0,w=W+A+(t>>>0<J>>>0?1:0)|0,W=I,J=F,I=H,F=E,H=v,E=s,s=k+e|0,v=A+B+(s>>>0<k>>>0?1:0)|0}m=g.low=m+s;g.high=q+v+(m>>>0<s>>>0?1:0);N=n.low=N+E;n.high=r+H+(N>>>0<E>>>0?1:0);O=b.low=O+F;b.high=Z+I+(O>>>0<F>>>0?1:0);P=d.low=P+J;d.high=$+W+(P>>>0<J>>>0?1:0);Q=c.low=Q+t;c.high=aa+w+(Q>>>0<t>>>0?1:0);R=j.low=R+K;j.high=ba+U+(R>>>0<K>>>0?1:0);S=l.low=\nS+L;l.high=ca+V+(S>>>0<L>>>0?1:0);T=h.low=T+M;h.high=da+X+(T>>>0<M>>>0?1:0)},_doFinalize:function(){var a=this._data,f=a.words,h=8*this._nDataBytes,g=8*a.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+128>>>10<<5)+30]=Math.floor(h/4294967296);f[(g+128>>>10<<5)+31]=h;a.sigBytes=4*f.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});m.SHA512=r._createHelper(f);m.HmacSHA512=r._createHmacHelper(f)})();\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nvar CryptoJS=CryptoJS||function(h,s){var f={},g=f.lib={},q=function(){},m=g.Base={extend:function(a){q.prototype=this;var c=new q;a&&c.mixIn(a);c.hasOwnProperty(\"init\")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\nr=g.WordArray=m.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=s?c:4*a.length},toString:function(a){return(a||k).stringify(this)},concat:function(a){var c=this.words,d=a.words,b=this.sigBytes;a=a.sigBytes;this.clamp();if(b%4)for(var e=0;e<a;e++)c[b+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((b+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)c[b+e>>>2]=d[e>>>2];else c.push.apply(c,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<\n32-8*(c%4);a.length=h.ceil(c/4)},clone:function(){var a=m.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],d=0;d<a;d+=4)c.push(4294967296*h.random()|0);return new r.init(c,a)}}),l=f.enc={},k=l.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++){var e=c[b>>>2]>>>24-8*(b%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join(\"\")},parse:function(a){for(var c=a.length,d=[],b=0;b<c;b+=2)d[b>>>3]|=parseInt(a.substr(b,\n2),16)<<24-4*(b%8);return new r.init(d,c/2)}},n=l.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++)d.push(String.fromCharCode(c[b>>>2]>>>24-8*(b%4)&255));return d.join(\"\")},parse:function(a){for(var c=a.length,d=[],b=0;b<c;b++)d[b>>>2]|=(a.charCodeAt(b)&255)<<24-8*(b%4);return new r.init(d,c)}},j=l.Utf8={stringify:function(a){try{return decodeURIComponent(escape(n.stringify(a)))}catch(c){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return n.parse(unescape(encodeURIComponent(a)))}},\nu=g.BufferedBlockAlgorithm=m.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=j.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,d=c.words,b=c.sigBytes,e=this.blockSize,f=b/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;b=h.min(4*a,b);if(a){for(var g=0;g<a;g+=e)this._doProcessBlock(d,g);g=d.splice(0,a);c.sigBytes-=b}return new r.init(g,b)},clone:function(){var a=m.clone.call(this);\na._data=this._data.clone();return a},_minBufferSize:0});g.Hasher=u.extend({cfg:m.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){u.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(c,d){return(new a.init(d)).finalize(c)}},_createHmacHelper:function(a){return function(c,d){return(new t.HMAC.init(a,\nd)).finalize(c)}}});var t=f.algo={};return f}(Math);\n(function(h){for(var s=CryptoJS,f=s.lib,g=f.WordArray,q=f.Hasher,f=s.algo,m=[],r=[],l=function(a){return 4294967296*(a-(a|0))|0},k=2,n=0;64>n;){var j;a:{j=k;for(var u=h.sqrt(j),t=2;t<=u;t++)if(!(j%t)){j=!1;break a}j=!0}j&&(8>n&&(m[n]=l(h.pow(k,0.5))),r[n]=l(h.pow(k,1/3)),n++);k++}var a=[],f=f.SHA256=q.extend({_doReset:function(){this._hash=new g.init(m.slice(0))},_doProcessBlock:function(c,d){for(var b=this._hash.words,e=b[0],f=b[1],g=b[2],j=b[3],h=b[4],m=b[5],n=b[6],q=b[7],p=0;64>p;p++){if(16>p)a[p]=\nc[d+p]|0;else{var k=a[p-15],l=a[p-2];a[p]=((k<<25|k>>>7)^(k<<14|k>>>18)^k>>>3)+a[p-7]+((l<<15|l>>>17)^(l<<13|l>>>19)^l>>>10)+a[p-16]}k=q+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&m^~h&n)+r[p]+a[p];l=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&f^e&g^f&g);q=n;n=m;m=h;h=j+k|0;j=g;g=f;f=e;e=k+l|0}b[0]=b[0]+e|0;b[1]=b[1]+f|0;b[2]=b[2]+g|0;b[3]=b[3]+j|0;b[4]=b[4]+h|0;b[5]=b[5]+m|0;b[6]=b[6]+n|0;b[7]=b[7]+q|0},_doFinalize:function(){var a=this._data,d=a.words,b=8*this._nDataBytes,e=8*a.sigBytes;\nd[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=h.floor(b/4294967296);d[(e+64>>>9<<4)+15]=b;a.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var a=q.clone.call(this);a._hash=this._hash.clone();return a}});s.SHA256=q._createHelper(f);s.HmacSHA256=q._createHmacHelper(f)})(Math);\n(function(){var h=CryptoJS,s=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(f,g){f=this._hasher=new f.init;\"string\"==typeof g&&(g=s.parse(g));var h=f.blockSize,m=4*h;g.sigBytes>m&&(g=f.finalize(g));g.clamp();for(var r=this._oKey=g.clone(),l=this._iKey=g.clone(),k=r.words,n=l.words,j=0;j<h;j++)k[j]^=1549556828,n[j]^=909522486;r.sigBytes=l.sigBytes=m;this.reset()},reset:function(){var f=this._hasher;f.reset();f.update(this._iKey)},update:function(f){this._hasher.update(f);return this},finalize:function(f){var g=\nthis._hasher;f=g.finalize(f);g.reset();return g.finalize(this._oKey.clone().concat(f))}})})();\n//\n// AWS Signature v4 Implementation for Web Browsers\n//\n// Copyright (c) 2016 Daniel Joos\n//\n// Distributed under MIT license. (See file LICENSE)\n//\n!function(e,t){\"function\"==typeof define&&define.amd?define([\"crypto-js/core\",\"crypto-js/sha256\",\"crypto-js/hmac-sha256\"],t):\"object\"==typeof module&&module.exports?module.exports=t(require(\"crypto-js/core\"),require(\"crypto-js/sha256\"),require(\"crypto-js/hmac-sha256\")):e.awsSignWeb=t(CryptoJS,CryptoJS.SHA256,CryptoJS.HmacSHA256)}(this,function(e){\"use strict\";function t(e,t){var r={host:t.uri.host,\"content-type\":e.config.defaultContentType,accept:e.config.defaultAcceptType,\"x-amz-date\":s(t.signDate)};t.request.method=t.request.method.toUpperCase(),t.request.body?t.payload=t.request.body:t.request.data&&e.payloadSerializer?t.payload=e.payloadSerializer(t.request.data):delete r[\"content-type\"],t.request.headers=h(r,Object.keys(t.request.headers||{}).reduce(function(e,r){return e[r.toLowerCase()]=t.request.headers[r],e},{})),t.sortedHeaderKeys=Object.keys(t.request.headers).sort(),t.request.headers[\"content-type\"]&&(t.request.headers[\"content-type\"]=t.request.headers[\"content-type\"].split(\";\")[0]),\"object\"==typeof t.request.params&&h(t.uri.queryParams,t.request.params)}function r(e,t){t.signedHeaders=t.sortedHeaderKeys.map(function(e){return e.toLowerCase()}).join(\";\"),t.canonicalRequest=String(t.request.method).toUpperCase()+\"\\n\"+t.uri.path.split(\"/\").map(function(e){return u(e)}).join(\"/\")+\"\\n\"+Object.keys(t.uri.queryParams).sort().map(function(e){return u(e)+\"=\"+u(t.uri.queryParams[e])}).join(\"&\")+\"\\n\"+t.sortedHeaderKeys.map(function(e){return e.toLocaleLowerCase()+\":\"+t.request.headers[e]}).join(\"\\n\")+\"\\n\\n\"+t.signedHeaders+\"\\n\"+e.hasher.hash(t.payload?t.payload:\"\")}function n(e,t){t.credentialScope=[s(t.signDate,!0),e.config.region,e.config.service,\"aws4_request\"].join(\"/\"),t.stringToSign=\"AWS4-HMAC-SHA256\\n\"+s(t.signDate)+\"\\n\"+t.credentialScope+\"\\n\"+e.hasher.hash(t.canonicalRequest)}function a(e,t){var r=e.hasher.hmac,n=r(r(r(r(\"AWS4\"+e.config.secretAccessKey,s(t.signDate,!0),{hexOutput:!1}),e.config.region,{hexOutput:!1,textInput:!1}),e.config.service,{hexOutput:!1,textInput:!1}),\"aws4_request\",{hexOutput:!1,textInput:!1});t.signature=r(n,t.stringToSign,{textInput:!1})}function o(e,t){t.authorization=\"AWS4-HMAC-SHA256 Credential=\"+e.config.accessKeyId+\"/\"+t.credentialScope+\", SignedHeaders=\"+t.signedHeaders+\", Signature=\"+t.signature}function s(e,t){var r=e.toISOString().replace(/[:\\-]|\\.\\d{3}/g,\"\").substr(0,17);return t?r.substr(0,8):r}function i(){return function(e){return JSON.stringify(e)}}function c(){function e(e){return/^\\??(.*)$/.exec(e)[1].split(\"&\").reduce(function(e,t){return t=/^(.+)=(.*)$/.exec(t),t&&(e[t[1]]=t[2]),e},{})}var t=document?document.createElement(\"a\"):{};return function(r){return t.href=r,{protocol:t.protocol,host:t.host.replace(/^(.*):((80)|(443))$/,\"$1\"),path:(\"/\"!==t.pathname.charAt(0)?\"/\":\"\")+t.pathname,queryParams:e(t.search)}}}function u(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(e){return\"%\"+e.charCodeAt(0).toString(16).toUpperCase()})}function p(){return{hash:function(t,r){r=h({hexOutput:!0,textInput:!0},r);var n=e.SHA256(t);return r.hexOutput?n.toString(e.enc.Hex):n},hmac:function(t,r,n){n=h({hexOutput:!0,textInput:!0},n);var a=e.HmacSHA256(r,t,{asBytes:!0});return n.hexOutput?a.toString(e.enc.Hex):a}}}function h(e){var t=[].slice.call(arguments,1);return t.forEach(function(t){t&&\"object\"==typeof t&&Object.keys(t).forEach(function(r){var n=t[r];\"undefined\"!=typeof n&&(null!==n&&\"object\"==typeof n?(e[r]=Array.isArray(n)?[]:{},h(e[r],n)):e[r]=n)})}),e}function d(e,t){if(\"undefined\"==typeof e||!e)throw new Error(t)}var f={region:\"eu-west-1\",service:\"execute-api\",defaultContentType:\"application/json\",defaultAcceptType:\"application/json\",payloadSerializerFactory:i,uriParserFactory:c,hasherFactory:p},y=function(e){this.config=h({},f,e),this.payloadSerializer=this.config.payloadSerializer||this.config.payloadSerializerFactory(),this.uriParser=this.config.uriParserFactory(),this.hasher=this.config.hasherFactory(),d(this.config.accessKeyId,\"AwsSigner requires AWS AccessKeyID\"),d(this.config.secretAccessKey,\"AwsSigner requires AWS SecretAccessKey\")};return y.prototype.sign=function(e,s){var i={request:h({},e),signDate:s||new Date,uri:this.uriParser(e.url)};return t(this,i),r(this,i),n(this,i),a(this,i),o(this,i),{Accept:i.request.headers.accept,Authorization:i.authorization,\"Content-Type\":i.request.headers[\"content-type\"],\"x-amz-date\":i.request.headers[\"x-amz-date\"],\"x-amz-security-token\":this.config.sessionToken||void 0}},{AwsSigner:y}});\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"angular\")) : factory(root[\"angular\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_5__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/*!********************************!*\\\n  !*** ./src/angular-spinner.ts ***!\n  \\********************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar SpinJSSpinner_1 = __webpack_require__(/*! ./Constants/SpinJSSpinner */ 1);\n\tvar UsSpinnerService_1 = __webpack_require__(/*! ./Services/UsSpinnerService */ 3);\n\tvar AngularSpinner_1 = __webpack_require__(/*! ./Directives/AngularSpinner */ 4);\n\tvar UsSpinnerConfig_1 = __webpack_require__(/*! ./Config/UsSpinnerConfig */ 6);\n\tvar angular = __webpack_require__(/*! angular */ 5);\n\texports.angularSpinner = angular\n\t    .module('angularSpinner', [])\n\t    .provider('usSpinnerConfig', UsSpinnerConfig_1.UsSpinnerConfig)\n\t    .constant('SpinJSSpinner', SpinJSSpinner_1.SpinJSSpinner)\n\t    .service('usSpinnerService', UsSpinnerService_1.UsSpinnerService)\n\t    .directive('usSpinner', AngularSpinner_1.usSpinner);\n\n\n/***/ },\n/* 1 */\n/*!****************************************!*\\\n  !*** ./src/Constants/SpinJSSpinner.ts ***!\n  \\****************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Spinner = __webpack_require__(/*! spin.js */ 2);\n\t/**\n\t * Exporting the Spinner prototype from spin.js library\n\t */\n\texports.SpinJSSpinner = Spinner;\n\n\n/***/ },\n/* 2 */\n/*!***************************!*\\\n  !*** ./~/spin.js/spin.js ***!\n  \\***************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n\t * Copyright (c) 2011-2014 Felix Gnass\n\t * Licensed under the MIT license\n\t * http://spin.js.org/\n\t *\n\t * Example:\n\t    var opts = {\n\t      lines: 12             // The number of lines to draw\n\t    , length: 7             // The length of each line\n\t    , width: 5              // The line thickness\n\t    , radius: 10            // The radius of the inner circle\n\t    , scale: 1.0            // Scales overall size of the spinner\n\t    , corners: 1            // Roundness (0..1)\n\t    , color: '#000'         // #rgb or #rrggbb\n\t    , opacity: 1/4          // Opacity of the lines\n\t    , rotate: 0             // Rotation offset\n\t    , direction: 1          // 1: clockwise, -1: counterclockwise\n\t    , speed: 1              // Rounds per second\n\t    , trail: 100            // Afterglow percentage\n\t    , fps: 20               // Frames per second when using setTimeout()\n\t    , zIndex: 2e9           // Use a high z-index by default\n\t    , className: 'spinner'  // CSS class to assign to the element\n\t    , top: '50%'            // center vertically\n\t    , left: '50%'           // center horizontally\n\t    , shadow: false         // Whether to render a shadow\n\t    , hwaccel: false        // Whether to use hardware acceleration (might be buggy)\n\t    , position: 'absolute'  // Element positioning\n\t    }\n\t    var target = document.getElementById('foo')\n\t    var spinner = new Spinner(opts).spin(target)\n\t */\n\t;(function (root, factory) {\n\t\n\t  /* CommonJS */\n\t  if (typeof module == 'object' && module.exports) module.exports = factory()\n\t\n\t  /* AMD module */\n\t  else if (true) !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))\n\t\n\t  /* Browser global */\n\t  else root.Spinner = factory()\n\t}(this, function () {\n\t  \"use strict\"\n\t\n\t  var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */\n\t    , animations = {} /* Animation rules keyed by their name */\n\t    , useCssAnimations /* Whether to use CSS animations or setTimeout */\n\t    , sheet /* A stylesheet to hold the @keyframe or VML rules. */\n\t\n\t  /**\n\t   * Utility function to create elements. If no tag name is given,\n\t   * a DIV is created. Optionally properties can be passed.\n\t   */\n\t  function createEl (tag, prop) {\n\t    var el = document.createElement(tag || 'div')\n\t      , n\n\t\n\t    for (n in prop) el[n] = prop[n]\n\t    return el\n\t  }\n\t\n\t  /**\n\t   * Appends children and returns the parent.\n\t   */\n\t  function ins (parent /* child1, child2, ...*/) {\n\t    for (var i = 1, n = arguments.length; i < n; i++) {\n\t      parent.appendChild(arguments[i])\n\t    }\n\t\n\t    return parent\n\t  }\n\t\n\t  /**\n\t   * Creates an opacity keyframe animation rule and returns its name.\n\t   * Since most mobile Webkits have timing issues with animation-delay,\n\t   * we create separate rules for each line/segment.\n\t   */\n\t  function addAnimation (alpha, trail, i, lines) {\n\t    var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')\n\t      , start = 0.01 + i/lines * 100\n\t      , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)\n\t      , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()\n\t      , pre = prefix && '-' + prefix + '-' || ''\n\t\n\t    if (!animations[name]) {\n\t      sheet.insertRule(\n\t        '@' + pre + 'keyframes ' + name + '{' +\n\t        '0%{opacity:' + z + '}' +\n\t        start + '%{opacity:' + alpha + '}' +\n\t        (start+0.01) + '%{opacity:1}' +\n\t        (start+trail) % 100 + '%{opacity:' + alpha + '}' +\n\t        '100%{opacity:' + z + '}' +\n\t        '}', sheet.cssRules.length)\n\t\n\t      animations[name] = 1\n\t    }\n\t\n\t    return name\n\t  }\n\t\n\t  /**\n\t   * Tries various vendor prefixes and returns the first supported property.\n\t   */\n\t  function vendor (el, prop) {\n\t    var s = el.style\n\t      , pp\n\t      , i\n\t\n\t    prop = prop.charAt(0).toUpperCase() + prop.slice(1)\n\t    if (s[prop] !== undefined) return prop\n\t    for (i = 0; i < prefixes.length; i++) {\n\t      pp = prefixes[i]+prop\n\t      if (s[pp] !== undefined) return pp\n\t    }\n\t  }\n\t\n\t  /**\n\t   * Sets multiple style properties at once.\n\t   */\n\t  function css (el, prop) {\n\t    for (var n in prop) {\n\t      el.style[vendor(el, n) || n] = prop[n]\n\t    }\n\t\n\t    return el\n\t  }\n\t\n\t  /**\n\t   * Fills in default values.\n\t   */\n\t  function merge (obj) {\n\t    for (var i = 1; i < arguments.length; i++) {\n\t      var def = arguments[i]\n\t      for (var n in def) {\n\t        if (obj[n] === undefined) obj[n] = def[n]\n\t      }\n\t    }\n\t    return obj\n\t  }\n\t\n\t  /**\n\t   * Returns the line color from the given string or array.\n\t   */\n\t  function getColor (color, idx) {\n\t    return typeof color == 'string' ? color : color[idx % color.length]\n\t  }\n\t\n\t  // Built-in defaults\n\t\n\t  var defaults = {\n\t    lines: 12             // The number of lines to draw\n\t  , length: 7             // The length of each line\n\t  , width: 5              // The line thickness\n\t  , radius: 10            // The radius of the inner circle\n\t  , scale: 1.0            // Scales overall size of the spinner\n\t  , corners: 1            // Roundness (0..1)\n\t  , color: '#000'         // #rgb or #rrggbb\n\t  , opacity: 1/4          // Opacity of the lines\n\t  , rotate: 0             // Rotation offset\n\t  , direction: 1          // 1: clockwise, -1: counterclockwise\n\t  , speed: 1              // Rounds per second\n\t  , trail: 100            // Afterglow percentage\n\t  , fps: 20               // Frames per second when using setTimeout()\n\t  , zIndex: 2e9           // Use a high z-index by default\n\t  , className: 'spinner'  // CSS class to assign to the element\n\t  , top: '50%'            // center vertically\n\t  , left: '50%'           // center horizontally\n\t  , shadow: false         // Whether to render a shadow\n\t  , hwaccel: false        // Whether to use hardware acceleration (might be buggy)\n\t  , position: 'absolute'  // Element positioning\n\t  }\n\t\n\t  /** The constructor */\n\t  function Spinner (o) {\n\t    this.opts = merge(o || {}, Spinner.defaults, defaults)\n\t  }\n\t\n\t  // Global defaults that override the built-ins:\n\t  Spinner.defaults = {}\n\t\n\t  merge(Spinner.prototype, {\n\t    /**\n\t     * Adds the spinner to the given target element. If this instance is already\n\t     * spinning, it is automatically removed from its previous target b calling\n\t     * stop() internally.\n\t     */\n\t    spin: function (target) {\n\t      this.stop()\n\t\n\t      var self = this\n\t        , o = self.opts\n\t        , el = self.el = createEl(null, {className: o.className})\n\t\n\t      css(el, {\n\t        position: o.position\n\t      , width: 0\n\t      , zIndex: o.zIndex\n\t      , left: o.left\n\t      , top: o.top\n\t      })\n\t\n\t      if (target) {\n\t        target.insertBefore(el, target.firstChild || null)\n\t      }\n\t\n\t      el.setAttribute('role', 'progressbar')\n\t      self.lines(el, self.opts)\n\t\n\t      if (!useCssAnimations) {\n\t        // No CSS animation support, use setTimeout() instead\n\t        var i = 0\n\t          , start = (o.lines - 1) * (1 - o.direction) / 2\n\t          , alpha\n\t          , fps = o.fps\n\t          , f = fps / o.speed\n\t          , ostep = (1 - o.opacity) / (f * o.trail / 100)\n\t          , astep = f / o.lines\n\t\n\t        ;(function anim () {\n\t          i++\n\t          for (var j = 0; j < o.lines; j++) {\n\t            alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)\n\t\n\t            self.opacity(el, j * o.direction + start, alpha, o)\n\t          }\n\t          self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))\n\t        })()\n\t      }\n\t      return self\n\t    }\n\t\n\t    /**\n\t     * Stops and removes the Spinner.\n\t     */\n\t  , stop: function () {\n\t      var el = this.el\n\t      if (el) {\n\t        clearTimeout(this.timeout)\n\t        if (el.parentNode) el.parentNode.removeChild(el)\n\t        this.el = undefined\n\t      }\n\t      return this\n\t    }\n\t\n\t    /**\n\t     * Internal method that draws the individual lines. Will be overwritten\n\t     * in VML fallback mode below.\n\t     */\n\t  , lines: function (el, o) {\n\t      var i = 0\n\t        , start = (o.lines - 1) * (1 - o.direction) / 2\n\t        , seg\n\t\n\t      function fill (color, shadow) {\n\t        return css(createEl(), {\n\t          position: 'absolute'\n\t        , width: o.scale * (o.length + o.width) + 'px'\n\t        , height: o.scale * o.width + 'px'\n\t        , background: color\n\t        , boxShadow: shadow\n\t        , transformOrigin: 'left'\n\t        , transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)'\n\t        , borderRadius: (o.corners * o.scale * o.width >> 1) + 'px'\n\t        })\n\t      }\n\t\n\t      for (; i < o.lines; i++) {\n\t        seg = css(createEl(), {\n\t          position: 'absolute'\n\t        , top: 1 + ~(o.scale * o.width / 2) + 'px'\n\t        , transform: o.hwaccel ? 'translate3d(0,0,0)' : ''\n\t        , opacity: o.opacity\n\t        , animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'\n\t        })\n\t\n\t        if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'}))\n\t        ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))\n\t      }\n\t      return el\n\t    }\n\t\n\t    /**\n\t     * Internal method that adjusts the opacity of a single line.\n\t     * Will be overwritten in VML fallback mode below.\n\t     */\n\t  , opacity: function (el, i, val) {\n\t      if (i < el.childNodes.length) el.childNodes[i].style.opacity = val\n\t    }\n\t\n\t  })\n\t\n\t\n\t  function initVML () {\n\t\n\t    /* Utility function to create a VML tag */\n\t    function vml (tag, attr) {\n\t      return createEl('<' + tag + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"spin-vml\">', attr)\n\t    }\n\t\n\t    // No CSS transforms but VML support, add a CSS rule for VML elements:\n\t    sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')\n\t\n\t    Spinner.prototype.lines = function (el, o) {\n\t      var r = o.scale * (o.length + o.width)\n\t        , s = o.scale * 2 * r\n\t\n\t      function grp () {\n\t        return css(\n\t          vml('group', {\n\t            coordsize: s + ' ' + s\n\t          , coordorigin: -r + ' ' + -r\n\t          })\n\t        , { width: s, height: s }\n\t        )\n\t      }\n\t\n\t      var margin = -(o.width + o.length) * o.scale * 2 + 'px'\n\t        , g = css(grp(), {position: 'absolute', top: margin, left: margin})\n\t        , i\n\t\n\t      function seg (i, dx, filter) {\n\t        ins(\n\t          g\n\t        , ins(\n\t            css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx})\n\t          , ins(\n\t              css(\n\t                vml('roundrect', {arcsize: o.corners})\n\t              , { width: r\n\t                , height: o.scale * o.width\n\t                , left: o.scale * o.radius\n\t                , top: -o.scale * o.width >> 1\n\t                , filter: filter\n\t                }\n\t              )\n\t            , vml('fill', {color: getColor(o.color, i), opacity: o.opacity})\n\t            , vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change\n\t            )\n\t          )\n\t        )\n\t      }\n\t\n\t      if (o.shadow)\n\t        for (i = 1; i <= o.lines; i++) {\n\t          seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')\n\t        }\n\t\n\t      for (i = 1; i <= o.lines; i++) seg(i)\n\t      return ins(el, g)\n\t    }\n\t\n\t    Spinner.prototype.opacity = function (el, i, val, o) {\n\t      var c = el.firstChild\n\t      o = o.shadow && o.lines || 0\n\t      if (c && i + o < c.childNodes.length) {\n\t        c = c.childNodes[i + o]; c = c && c.firstChild; c = c && c.firstChild\n\t        if (c) c.opacity = val\n\t      }\n\t    }\n\t  }\n\t\n\t  if (typeof document !== 'undefined') {\n\t    sheet = (function () {\n\t      var el = createEl('style', {type : 'text/css'})\n\t      ins(document.getElementsByTagName('head')[0], el)\n\t      return el.sheet || el.styleSheet\n\t    }())\n\t\n\t    var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})\n\t\n\t    if (!vendor(probe, 'transform') && probe.adj) initVML()\n\t    else useCssAnimations = vendor(probe, 'animation')\n\t  }\n\t\n\t  return Spinner\n\t\n\t}));\n\n\n/***/ },\n/* 3 */\n/*!******************************************!*\\\n  !*** ./src/Services/UsSpinnerService.ts ***!\n  \\******************************************/\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/**\n\t * UsSpinnerService\n\t * This service let you control spin, start and stop\n\t */\n\tvar UsSpinnerService = (function () {\n\t    function UsSpinnerService($rootScope) {\n\t        this.$rootScope = $rootScope;\n\t    }\n\t    UsSpinnerService.prototype.spin = function (key) {\n\t        this.$rootScope.$broadcast('us-spinner:spin', key);\n\t    };\n\t    UsSpinnerService.prototype.stop = function (key) {\n\t        this.$rootScope.$broadcast('us-spinner:stop', key);\n\t    };\n\t    return UsSpinnerService;\n\t}());\n\tUsSpinnerService.$inject = ['$rootScope'];\n\texports.UsSpinnerService = UsSpinnerService;\n\n\n/***/ },\n/* 4 */\n/*!******************************************!*\\\n  !*** ./src/Directives/AngularSpinner.ts ***!\n  \\******************************************/\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar angular = __webpack_require__(/*! angular */ 5);\n\texports.usSpinner = function (SpinJSSpinner, usSpinnerConfig) {\n\t    return {\n\t        scope: true,\n\t        link: function (scope, element, attr) {\n\t            scope.spinner = null;\n\t            scope.key = angular.isDefined(attr.spinnerKey) ? attr.spinnerKey : false;\n\t            scope.startActive = (attr.spinnerStartActive) ?\n\t                scope.$eval(attr.spinnerStartActive) : scope.key ?\n\t                false : true;\n\t            function stopSpinner() {\n\t                if (scope.spinner) {\n\t                    scope.spinner.stop();\n\t                }\n\t            }\n\t            scope.spin = function () {\n\t                if (scope.spinner) {\n\t                    scope.spinner.spin(element[0]);\n\t                }\n\t            };\n\t            scope.stop = function () {\n\t                scope.startActive = false;\n\t                stopSpinner();\n\t            };\n\t            scope.$watch(attr.usSpinner, function (options) {\n\t                stopSpinner();\n\t                // order of precedence: element options, theme, defaults.\n\t                options = angular.extend({}, usSpinnerConfig.config, attr.spinnerTheme ? usSpinnerConfig.themes[attr.spinnerTheme] : undefined, options);\n\t                scope.spinner = new SpinJSSpinner(options);\n\t                if ((!scope.key || scope.startActive) && !attr.spinnerOn) {\n\t                    scope.spinner.spin(element[0]);\n\t                }\n\t            }, true);\n\t            if (attr.spinnerOn) {\n\t                scope.$watch(attr.spinnerOn, function (spin) {\n\t                    if (spin) {\n\t                        scope.spin();\n\t                    }\n\t                    else {\n\t                        scope.stop();\n\t                    }\n\t                });\n\t            }\n\t            scope.$on('us-spinner:spin', function (event, key) {\n\t                if (!key || key === scope.key) {\n\t                    scope.spin();\n\t                }\n\t            });\n\t            scope.$on('us-spinner:stop', function (event, key) {\n\t                if (!key || key === scope.key) {\n\t                    scope.stop();\n\t                }\n\t            });\n\t            scope.$on('$destroy', function () {\n\t                scope.stop();\n\t                scope.spinner = null;\n\t            });\n\t        }\n\t    };\n\t};\n\texports.usSpinner.$inject = ['SpinJSSpinner', 'usSpinnerConfig'];\n\n\n/***/ },\n/* 5 */\n/*!**************************!*\\\n  !*** external \"angular\" ***!\n  \\**************************/\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n\n/***/ },\n/* 6 */\n/*!***************************************!*\\\n  !*** ./src/Config/UsSpinnerConfig.ts ***!\n  \\***************************************/\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/**\n\t * UsSpinnerConfig\n\t */\n\tvar UsSpinnerConfig = (function () {\n\t    function UsSpinnerConfig() {\n\t        this.config = {};\n\t        this.themes = {};\n\t    }\n\t    UsSpinnerConfig.prototype.setDefaults = function (config) {\n\t        this.config = config || this.config;\n\t    };\n\t    UsSpinnerConfig.prototype.setTheme = function (name, config) {\n\t        this.themes[name] = config;\n\t    };\n\t    UsSpinnerConfig.prototype.$get = function () {\n\t        var _a = this, config = _a.config, themes = _a.themes;\n\t        return {\n\t            config: config,\n\t            themes: themes\n\t        };\n\t    };\n\t    return UsSpinnerConfig;\n\t}());\n\texports.UsSpinnerConfig = UsSpinnerConfig;\n\n\n/***/ }\n/******/ ])\n});\n;\n\n//  This is a direct copy of angular-ui-switch/angular-ui-switch.js just with updates to fix ng-click\n// https://github.com/xpepermint/angular-ui-switch/issues/2\nangular.module(\"global\").directive(\"switchv2\", function () {\n  return {\n    restrict: \"AE\",\n    replace: true,\n    transclude: true,\n    template: function (element, attrs) {\n      var html = \"\";\n      html += \"<span\";\n      html += ' class=\"switch' + (attrs.class ? \" \" + attrs.class : \"\") + '\"';\n      html += attrs.ngClick\n        ? \"\"\n        : ' ng-click=\"' + attrs.ngModel + \"=!\" + attrs.ngModel + '\"';\n      html += ' ng-class=\"{ checked:' + attrs.ngModel + ' }\"';\n      html += \">\";\n      html += \"<small></small>\";\n      html += '<input type=\"checkbox\"';\n      html += attrs.id ? ' id=\"' + attrs.id + '\"' : \"\";\n      html += attrs.name ? ' name=\"' + attrs.name + '\"' : \"\";\n      html += attrs.ngModel ? ' ng-model=\"' + attrs.ngModel + '\"' : \"\";\n      html += ' style=\"display:none\" />';\n      html += \"</span>\";\n      return html;\n    },\n  };\n});\n\nangular.module(\"ibeat\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/services/modal.service.template.html\",\"<div id=modal-service-template class=modal-wrapper><!--<button type=\\\"button\\\" class=\\\"close\\\" ng-click=\\\"modalOptions.close(false)\\\" aria-hidden=\\\"true\\\">&times;</button>--><div><div class=modal-header ng-if=modalOptions.headerText><h4 class=modal-title>{{modalOptions.headerText}}</h4></div><div class=modal-body><p ng-bind-html=modalOptions.bodyText></p><p ng-if=modalOptions.bodyText2>{{modalOptions.bodyText2}}</p></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=\\\"btn btn-secondary pull-left\\\">{{modalOptions.closeButtonText}}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{modalOptions.actionButtonText}}</button></div></div></div>\");\n$templateCache.put(\"app/components/account/account.html\",\"<div id=account class=\\\"container-fluid ui-view-container\\\"><div ui-view></div></div>\");\n$templateCache.put(\"app/components/admin/admin.html\",\"<breakpoints></breakpoints><admin-toolbar user=vm.user></admin-toolbar><admin-navbar user=vm.user on-toggle-mobile-navigation=vm.toggleMobileNavigation></admin-navbar><div id=portal class=container-fluid ng-class=\\\"{\\'open\\': vm.isMobileNavigationOpen}\\\"><div class=mobile-header><button type=button class=navbar-toggle ng-click=vm.toggleMobileNavigation()><span class=sr-only>Toggle navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <a class=navbar-brand href=#>{{ \\'GLOBAL.BRAND\\' | translate }}</a></div><div ui-view></div><footer-bar></footer-bar></div>\");\n$templateCache.put(\"app/components/biller/biller.html\",\"<breakpoints></breakpoints><biller-toolbar biller=vm.biller></biller-toolbar><biller-navbar biller=vm.biller on-toggle-mobile-navigation=vm.toggleMobileNavigation></biller-navbar><div id=portal class=container-fluid ng-class=\\\"{\\'open\\': vm.isMobileNavigationOpen}\\\" breakpoints><div class=mobile-header><button type=button class=navbar-toggle ng-click=vm.toggleMobileNavigation()><span class=sr-only>Toggle navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <a class=navbar-brand href=#>{{ \\'GLOBAL.BRAND\\' | translate }}</a></div><div ui-view></div><footer-bar></footer-bar></div>\");\n$templateCache.put(\"app/components/chart/chart.html\",\"<!-- \\n    There are two divs in this view - one is a fluid view for mobile \\n    devices.  It will resize.\\n\\n    The second is a hidden, fixed width copy of the data, which will print correctly no \\n    matter what width the viewing device renders with\\n\\n    The main issue this solves is that SVGs cannot be scaled with CSS, so no \\n    matter what the css says, the highcharts will print at the width it is originally rendered,\\n    so we render a copy at a reasonable (750px) width\\n--><div id=chart class=container-fluid breakpoints><button onclick=window.print() class=btn><i class=\\\"fa fa-print\\\"></i> PRINT</button><h3><i class=\\\"fa fa-user-md\\\" ng-if=vm.patientUserProfile.is_provider_device_test_account></i>{{vm.patientUserProfile.name_first}} {{vm.patientUserProfile.name_last}} ({{vm.patientUserProfile.gender | gender}})</h3><h5><b>DOB:</b> {{vm.patientUserProfile.date_of_birth}}</h5><h5><b>Email:</b> {{ vm.patientUserProfile.email }}</h5><h5><b>Phone:</b> {{ vm.patientUserProfile.phone_1_number | bcTelephone:\\'format\\' }}</h5><h5><b>RPM Start Date:</b> {{ vm.patientUserProfile.created_at | date:\\'MM/dd/yyyy\\' }}</h5><br><div class=graphbreak ng-repeat=\\\"graph in vm.graphsToShow track by $index\\\"><h4 ng-if=\\\"vm.graphsToShow[$index].serial || vm.graphsToShow[$index].type ==\\'RPM_DATA\\'\\\">{{ vm.graphsToShow[$index].type.replace(\\\"_\\\", \\\" \\\") }}</h4><highcharts-dashboard ng-if=\\\"vm.graphsToShow[$index].serial || vm.graphsToShow[$index].type ==\\'RPM_DATA\\'\\\" config=vm.graphsToShow[$index].config></highcharts-dashboard></div></div><div id=true-print><h3><i class=\\\"fa fa-user-md\\\" ng-if=vm.patientUserProfile.is_provider_device_test_account></i>{{vm.patientUserProfile.name_first}} {{vm.patientUserProfile.name_last}} ({{vm.patientUserProfile.gender | gender}})</h3><h5><b>DOB:</b> {{vm.patientUserProfile.date_of_birth}}</h5><h5><b>Email:</b> {{ vm.patientUserProfile.email }}</h5><h5><b>Phone:</b> {{ vm.patientUserProfile.phone_1_number | bcTelephone:\\'format\\' }}</h5><h5><b>RPM Start Date:</b> {{ vm.patientUserProfile.created_at | date:\\'MM/dd/yyyy\\' }}</h5><br><div class=graphbreak ng-repeat=\\\"graph in vm.graphsToShow track by $index\\\"><h4 ng-if=\\\"vm.graphsToShow[$index].serial || vm.graphsToShow[$index].type ==\\'RPM_DATA\\'\\\">{{ vm.graphsToShow[$index].type.replace(\\\"_\\\", \\\" \\\") }}</h4><highcharts-dashboard ng-if=\\\"vm.graphsToShow[$index].serial || vm.graphsToShow[$index].type ==\\'RPM_DATA\\'\\\" config=vm.graphsToShow[$index].config></highcharts-dashboard></div></div>\");\n$templateCache.put(\"app/components/claims/claims.html\",\"<div id=claims class=enterprise><div class=inner-claims><h1>{{\\'BILLER.CLAIMS.BODY.HEADER\\' | translate}} {{vm.enterpriseCustomer.name}}</h1></div><claims-list claims=vm.claims user=vm.user enterprise-customer=vm.enterpriseCustomer biller=vm.biller ccm-enabled=vm.features.ccm.is_enabled></claims-list><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/footer/footer.html\",\"<footer><p>&copy; {{ \\'FOOTER.BODY.COPYRIGHT\\' | translate }} {{ \\'GLOBAL.BRAND\\' | translate }} | <a ng-href=\\\"mailto:{{ \\'FOOTER.BODY.MAIL_TO\\' | translate }}\\\">{{ \\'FOOTER.BODY.MAIL_TO\\' | translate }}</a></p><p class=version-info ng-show=vm.user.user_profile.is_internal>env:prod git-branch:main git-commit:20ee5a5f1cf58ac7c84489b7a8dc9bc96898009d</p></footer>\");\n$templateCache.put(\"app/components/links/links.html\",\"<card-wrapper authorize=role:biller><card card-name=\\\"alert ibeat education\\\"><div class=\\\"col left\\\">{{\\'BILLER.EDUCATION.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3>{{\\'BILLER.EDUCATION.HEADER\\' | translate }}</h3><p>{{\\'BILLER.EDUCATION.TEXT\\' | translate:vm.translationData}}</p><div class=actions><ul><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.ARTICLE.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.ARTICLE.TEXT\\' | translate}}</a><ul><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CPTCODE99470.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CPTCODE99470.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CPTCODE99445.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CPTCODE99445.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.NEW_CPT_CODES.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.NEW_CPT_CODES.TEXT\\' | translate}}</a></li></ul></li><li><a download ng-href=\\\"{{\\'BILLER.EDUCATION.DOS_ALIGNMENT.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.DOS_ALIGNMENT.TEXT\\' | translate}}</a></li><li><a download ng-href=\\\"{{\\'BILLER.EDUCATION.PATIENT_DEACTIVATIONS.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.PATIENT_DEACTIVATIONS.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CPTCODE99453.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CPTCODE99453.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CPTCODE99454.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CPTCODE99454.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CPTCODE99457.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CPTCODE99457.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CPTCODE99458.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CPTCODE99458.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.FAQ.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.FAQ.TEXT\\' | translate}}</a></li><li><a target=_blank rel=\\\"noopener noreferrer\\\" ng-href=\\\"{{\\'BILLER.EDUCATION.CCM_R_TIPS.HREF\\' | translate}}\\\">{{\\'BILLER.EDUCATION.CCM_R_TIPS.TEXT\\' | translate}}</a></li></ul></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/portal.html\",\"<breakpoints></breakpoints><admin-toolbar user=vm.user enterprise-customer=vm.enterpriseCustomer></admin-toolbar><navbar user=vm.user on-toggle-mobile-navigation=vm.toggleMobileNavigation enterprise-customer-id=vm.user.user_profile.enterprise_customer_id enterprise-customer=vm.enterpriseCustomer features=vm.features></navbar><div id=portal class=container-fluid ng-class=\\\"{\\'open\\': vm.isMobileNavigationOpen}\\\" breakpoints><div class=mobile-header><button type=button class=navbar-toggle ng-click=vm.toggleMobileNavigation()><span class=sr-only>Toggle navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <a class=navbar-brand href=#>{{ \\'GLOBAL.BRAND\\' | translate }}</a></div><five9-proxy-runtime features=vm.features user=vm.user enterprise-customer=vm.enterpriseCustomer></five9-proxy-runtime><five9-inbound-resolution user=vm.user enterprise-customer=vm.enterpriseCustomer></five9-inbound-resolution><five9-post-call-prompt></five9-post-call-prompt><div ui-view></div><footer-bar user=vm.user></footer-bar><e-phone-controls></e-phone-controls></div>\");\n$templateCache.put(\"app/components/setup/setup.html\",\"<div id=setup class=container-fluid><are-you-a-patient-banner ng-if=::vm.shouldShowPatientBanner></are-you-a-patient-banner><div id=setup-header><img id=logo src=assets/images/logo-100plus@2x.80550a2b.png height=40 width=159><p class=phone><i class=\\\"fa fa-envelope\\\"></i> <a ng-href=mailto:{{vm.ibSalesEmail.EMAIL}}>{{::vm.ibSalesEmail.EMAIL}} </a><i class=\\\"fa fa-phone\\\"></i> <a ng-href=tel:{{::vm.ibPhone.NUMBER}}>{{::vm.ibPhone.NUMBER_FORMATTED}}</a></p></div><div ui-view class=wizard-view-animate></div></div>\");\n$templateCache.put(\"app/global/address-display/address-display.html\",\"<div><dl class=address-display><dd ng-if=vm.showAddressLabel class=address-label>{{vm.address.address_name}}</dd><dt ng-if=vm.getAddressTypeName()>{{vm.getAddressTypeName()}}</dt><dd>{{vm.address.address_street}}</dd><dd ng-if=vm.address.address_street2>{{vm.address.address_street2}}</dd><dd ng-if=vm.address.address_floor>Floor {{vm.address.address_floor}}</dd><dd ng-if=vm.address.address_type_other_details>({{vm.address.address_type_other_details}})</dd><dd>{{vm.address.address_city}}, {{vm.address.address_state}} {{vm.address.address_zipcode}}</dd><dd ng-if=vm.getCountryName()>{{vm.getCountryName()}}</dd></dl></div>\");\n$templateCache.put(\"app/global/credit-card-image/credit-card-image.html\",\"<div class=\\\"form-group checkbox {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><div ng-messages=vm.form[vm.inputName].$error ng-if=\\\"vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty\\\" role=alert><div ng-message=required>{{ \\'VALIDATION.REQUIRED\\' | translate }}</div><div ng-message=minlength>{{ \\'VALIDATION.MIN\\' | translate }}</div><div ng-message=maxlength>{{ \\'VALIDATION.MAX\\' | translate }}</div></div><label><input type=checkbox class={{::vm.heightClass}} id={{::vm.inputId}} name={{::vm.inputName}} ng-required=::vm.isRequired ng-model=vm.model field-model-state> <span class=label-txt ng-hide=::vm.labelHidden>{{::vm.labelTxt}}</span></label></div>\");\n$templateCache.put(\"app/global/current-user/current-user-tooltip-menu.html\",\"<div class=current-user-menu><div class=current-user-menu-item ng-if=vm.showPracticeSelect><a ui-sref=account.practice-select>{{ \\'NAV.PRIMARY.ITEMS.SELECT_PRACTICE\\' | translate }}</a></div><div class=current-user-menu-item><a ui-sref=portal.account-settings.contact>{{ \\'NAV.PRIMARY.ITEMS.ACCOUNT_SETTINGS\\' | translate }}</a></div><div class=current-user-menu-item><a id=logout-btn ng-click=::vm.logout()>{{ \\'NAV.PRIMARY.ITEMS.LOGOUT\\' | translate }}</a></div></div>\");\n$templateCache.put(\"app/global/current-user/current-user.html\",\"<div class=current-user-wrapper data-testid=current-practice-context data-enterprise-id={{::vm.user.user_profile.enterprise_customer_id}} data-enterprise-name={{::vm.enterpriseName}} data-office-id={{::vm.user.logged_in_office_id}} data-office-name={{::vm.officeName}}><div class=current-user popover-placement=top popover-trigger=\\\"\\'outsideClick\\'\\\" popover-append-to-body=true uib-popover-template=\\\"\\'app/global/current-user/current-user-tooltip-menu.html\\'\\\"><!--<img ng-show=\\\"vm.profileImage\\\"--><!--class=\\\"img-circle profile-image\\\"--><!--ng-src=\\\"{{vm.profileImage}}\\\"--><!--alt=\\\"user profile image\\\"/>--><div class=full-name>{{::vm.user.user_profile.getFullName()}}</div><div class=is-internal ng-if=vm.user.user_profile.is_internal><div class=\\\"badge badge-info\\\">internal-user</div></div><!--<div class=\\\"location\\\" ng-if=\\\"vm.user.user_profile.getCityState()\\\">--><!--{{vm.user.user_profile.getCityState()}}--><!--</div>--></div><div class=office-name><a ui-sref=account.practice-select ng-if=\\\"vm.user.current_account.provider_offices && vm.user.current_account.provider_offices.length>1\\\">{{::vm.officeName}}</a> <a ng-if=\\\"!vm.user.current_account.provider_offices || vm.user.current_account.provider_offices.length<=1\\\">{{::vm.officeName}}</a></div></div>\");\n$templateCache.put(\"app/global/custom-inputs/custom-inputs.html\",\"<span><text-input ng-if=\\\"!vm.inputProperties.type || vm.inputProperties.type === \\'text\\' || vm.inputProperties.type === \\'number\\'\\\" model=vm.tempRow[vm.inputProperties.value] field-type={{vm.inputProperties.type}} form=vm.addRowForm input-name={{vm.inputProperties.value}} input-id={{vm.inputProperties.value}} is-required=vm.inputProperties.required min={{vm.inputProperties.min}} max={{vm.inputProperties.max}} regex={{vm.inputProperties.regex}} placeholder-txt=\\\"{{vm.inputProperties.label | translate}}\\\"></text-input><select-input ng-if=\\\"vm.inputProperties.type === \\'select\\'\\\" model=vm.tempRow[vm.inputProperties.value] options-array=vm.inputProperties.options></select-input><input ng-if=\\\"vm.inputProperties.type === \\'date\\'\\\" date-range-picker type=text form=vm.addRowForm name={{vm.inputProperties.value}} id={{vm.inputProperties.value}} ng-required=vm.inputProperties.required placeholder=YYYY/MM/DD ng-model=vm.tempRow[vm.inputProperties.value] options=vm.datePickerOptions class=\\\"form-control date-picker\\\"> </span>\");\n$templateCache.put(\"app/global/diagnosis/diagnosis-codes.html\",\"<div><div class=cpt-code-wrapper ng-repeat=\\\"code in vm.codes | limitTo: (vm.codes.length > vm.limit ? vm.limit - 1 : vm.limit) track by $index\\\"><span class=cpt-code-badge>{{code.code}}: {{code.description | limitTo: 30}} {{code.description.length > 30 ? \\'...\\' : \\'\\'}}</span></div><div class=cpt-code-wrapper ng-if=\\\"vm.codes.length > vm.limit\\\"><span class=cpt-code-badge uib-popover-html=\\\"\\'{{ vm.getMoreDiagnosisCodesTooltip(vm.codes) }}\\'\\\" popover-append-to-body=true popover-class=cpt-code-popover popover-placement=bottom-left popover-trigger=\\\"\\'mouseenter\\'\\\">{{vm.codes.length - vm.limit + 1}} More</span></div></div>\");\n$templateCache.put(\"app/global/export-btn/export-btn.html\",\"<div class=export><button popover-placement=bottom type=button ng-click=\\\"vm.collapseHandler = !vm.collapseHandler\\\" ng-disabled=vm.isDisabled><i class=external-link></i> Export to .CSV</button><div class=panel uib-collapse=vm.collapseHandler><p><span><i class=file-text></i><a ng-click=::vm.allItemsHandler()>{{vm.allItemsText}}</a></span> <span><i class=filtered></i><a ng-click=::vm.filteredItemsHandler()>{{vm.filteredItemsText}}</a></span></p></div></div>\");\n$templateCache.put(\"app/global/highcharts/highcharts-dashboard.html\",\"<div id=highcharts-container-{{vm.graphId}} class=highcharts-light data-testid=highcharts-dashboard data-has-config={{!!vm.config}}></div><div class=highcharts-loading-spinner us-spinner spinner-theme=black spinner-on=!vm.config></div>\");\n$templateCache.put(\"app/global/info-vertical/info-vertical.html\",\"<div class=info-vertical><span><span class=header ng-if=\\\"vm.text || vm.transcludePresent\\\">{{vm.header}} </span><span class=data ng-if=!vm.transcludePresent>{{vm.text}}</span></span><ng-transclude></ng-transclude></div>\");\n$templateCache.put(\"app/global/form-footer/form-footer.html\",\"<div class=\\\"setup-form-footer {{vm.addCssClass}}\\\" ng-class=\\\"{\\'one-btn\\': vm.numBtns == 1, \\'two-btn\\': vm.numBtns == 2, \\'three-btn\\': vm.numBtns == 3}\\\"><ng-transclude></ng-transclude></div>\");\n$templateCache.put(\"app/global/multi-select/multi-select.html\",\"<div ng-dropdown-multiselect class=multi-selector name=enterprise-role extra-settings=vm.extraSettings options=vm.options selected-model=vm.selectedModel events=vm.events></div>\");\n$templateCache.put(\"app/global/patient-agreement-picker-modal/patient-agreement-picker-modal.html\",\"<div id=patient-agreement-picker-modal class=modal-wrapper><button type=button class=close ng-click=modalOptions.close(false) aria-hidden=true>&times;</button><div><div class=modal-header ng-if=modalOptions.headerTxt><h4 class=modal-title>{{modalOptions.headerTxt}}</h4></div><div class=modal-body><button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(modalOptions.buttonResult) promise-btn>{{modalOptions.buttonTxt}}</button> <button type=button class=\\\"btn btn-primary2 secondary-button\\\" ng-if=modalOptions.secondaryButtonTxt ng-click=modalOptions.ok(modalOptions.secondaryButtonResult) promise-btn>{{modalOptions.secondaryButtonTxt}}</button></div></div></div>\");\n$templateCache.put(\"app/global/provider-practices/provider-practices.html\",\"<div id=provider-practices><div class=practices-list role=group aria-label=\\\"Practices you can select\\\"><div class=practice-controls ng-if=\\\"vm.provider.user_profiles.length > 1 || vm.shouldShowAssignedOnlyToggle()\\\"><div class=practice-controls-toggle ng-if=vm.shouldShowAssignedOnlyToggle()><label class=practice-checkbox-label><span>My Assignments Only</span> <input type=checkbox ng-model=vm.showAssignedOnly ng-change=vm.onShowAssignedOnlyChange()></label></div></div><input type=text class=\\\"form-control practice-search\\\" placeholder=\\\"Search by practice name\\\" ng-model=vm.search ng-if=\\\"vm.provider.user_profiles.length > 1\\\"><div class=practice-group ng-repeat=\\\"profile in vm.displayProfiles | filter:{ enterprise_customer: { name: vm.search } } track by profile.id\\\"><div class=practice-card data-testid=practice-card data-enterprise-id={{::profile.enterprise_customer_id}} ng-class=\\\"{\\'practice-card-assigned\\': profile.hasClinicalMonitoringAssignmentInOrg, \\'practice-card-expanded\\': vm.expandedProfileId === profile.id}\\\" ng-click=vm.expandPanel(profile.id)><div class=practice-card-content><div class=practice-card-info><div class=practice-card-title>{{profile.enterprise_customer.name}}</div><div class=practice-card-provider>{{profile | providerName:true }}</div></div><div class=practice-card-meta><span class=practice-badge ng-if=profile.hasClinicalMonitoringAssignmentInOrg>Clinical assignment</span> <i class=\\\"fa practice-chevron\\\" ng-class=\\\"{\\'fa-chevron-down\\': vm.expandedProfileId === profile.id, \\'fa-chevron-right\\': vm.expandedProfileId !== profile.id}\\\"></i></div></div><span class=pull-right ng-if=\\\"!profile.isOriginal && vm.showEditButtons\\\"><i class=\\\"fa fa-edit\\\" ng-click=\\\"vm.onEdit({profile: profile, isDelete: false})\\\"></i> <i class=\\\"fa fa-trash-o\\\" ng-click=\\\"vm.onEdit({profile: profile, isDelete: true})\\\"></i></span></div><div ng-show=\\\"vm.expandedProfileId === profile.id\\\" class=practice-offices><div class=office-section ng-repeat=\\\"section in [{key: \\'active\\', label: \\'Active Offices\\'}, {key: \\'inactive\\', label: \\'Inactive Offices\\'}] track by section.key\\\"><button type=button class=office-section-toggle ng-click=\\\"vm.toggleOfficeSection(profile.id, section.key); $event.stopPropagation()\\\"><span>{{section.label}} ({{vm.officeSectionCount(profile, section.key)}})</span> <i class=fa ng-class=\\\"{\\'fa-chevron-down\\': vm.isOfficeSectionExpanded(profile.id, section.key), \\'fa-chevron-right\\': !vm.isOfficeSectionExpanded(profile.id, section.key)}\\\"></i></button><div ng-show=\\\"vm.isOfficeSectionExpanded(profile.id, section.key)\\\"><div class=office-section-empty ng-if=!profile.officeLifecycleGroups[section.key].length>No {{section.label | lowercase}}</div><div class=office-card role=button tabindex=0 ng-class=\\\"{\\'office-card-assigned\\': practice.hasClinicalMonitoringAssignment, \\'office-card-inactive\\': practice.isInactiveOffice, \\'disabled\\': vm.isPracticeSwitching}\\\" ng-repeat=\\\"practice in profile.officeLifecycleGroups[section.key] track by practice.id\\\" ng-click=\\\"!vm.isPracticeSwitching && vm.changePractice(profile.id, practice.id)\\\" ng-keydown=\\\"vm.onOfficeCardKeydown($event, profile.id, practice.id)\\\"><div class=office-card-layout><div class=office-card-content><div class=office-card-header><span class=office-card-name>{{practice.name}}</span> <span class=office-badge ng-if=practice.hasClinicalMonitoringAssignment>Assigned</span> <span class=\\\"office-badge office-badge-inactive\\\" ng-if=practice.isInactiveOffice>Inactive</span></div><div class=office-card-address>{{practice.address_street}}, {{practice.address_city}} {{practice.address_state}}</div><div class=office-assignments ng-if=practice.hasClinicalMonitoringAssignment><div class=office-assignment ng-repeat=\\\"assignment in practice.clinicalMonitoringAssignments track by assignment.id\\\"><div class=office-assignment-row><span class=office-assignment-dot></span> <span class=office-assignment-label>{{assignment.label}}</span> <span class=office-assignment-days ng-if=assignment.daysText>{{assignment.daysText}}</span></div></div><div class=office-assignment-details ng-if=practice.clinicalMonitoringAssignmentDetails.length><div class=\\\"office-assignment office-assignment-detail\\\" ng-repeat=\\\"detail in practice.clinicalMonitoringAssignmentDetails track by detail.id\\\"><div class=office-assignment-row><span class=office-assignment-dot></span> <span class=office-assignment-label ng-if=detail.label>{{detail.label}}</span> <a ng-if=detail.href class=office-assignment-detail-value ng-class=\\\"{\\'office-assignment-detail-value-untitled\\': !detail.label}\\\" ng-href={{detail.href}} ng-click=$event.stopPropagation() target=_blank rel=\\\"noopener noreferrer\\\">{{detail.value}}</a> <span ng-if=!detail.href class=office-assignment-detail-value ng-class=\\\"{\\'office-assignment-detail-value-untitled\\': !detail.label}\\\">{{detail.value}}</span></div></div></div></div></div><span class=office-card-arrow><i class=\\\"fa fa-chevron-right\\\"></i></span></div></div></div></div></div></div></div></div>\");\n$templateCache.put(\"app/global/service-options/service-options.html\",\"<div class=service-options-container><div class=service-options-toggle ng-class=\\\"{\\'active\\': vm.selectedOption === \\'physiologic\\'}\\\" ui-sref=enterprise.patients>{{\\'PORTAL.ENTERPRISE.BUTTON_TABS.RPM\\' | translate}}</div><div class=service-options-toggle ng-class=\\\"{\\'active\\': vm.selectedOption === \\'care\\'}\\\" ng-click=vm.handleCCMToggle() ui-sref=enterprise.ccm-patients>{{\\'PORTAL.ENTERPRISE.BUTTON_TABS.CARE\\' | translate}}</div></div>\");\n$templateCache.put(\"app/global/signature-required-modal/signature-required-modal.html\",\"<div id=signature-required-modal class=modal-wrapper><button type=button class=close ng-if=\\\"modalOptions.showCloseButton !== false\\\" ng-click=modalOptions.close(false) aria-hidden=true>&times;</button><div><div class=modal-header ng-if=modalOptions.headerText><h4 class=modal-title>{{modalOptions.headerText}}</h4></div><div class=modal-body><p>{{modalOptions.bodyText}}</p><p ng-if=modalOptions.bodyText2>{{modalOptions.bodyText2}}</p><button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{modalOptions.actionButtonText}}</button> <button type=button class=\\\"btn-skip btn\\\" ng-if=modalOptions.signLaterButtonText ng-click=\\\"modalOptions.ok(\\'sign-later\\')\\\" promise-btn>{{modalOptions.signLaterButtonText}}</button></div></div></div>\");\n$templateCache.put(\"app/global/status-filter/status-filter.html\",\"<div id=active-select><ui-select ng-model=vm.activeStatus on-select=\\\"vm.onCustomChange(\\'$user_profile.deactivated_at$\\', {model: $item})\\\"><ui-select-match placeholder=\\\"Select status\\\">{{$select.selected.label}}</ui-select-match><ui-select-choices repeat=\\\"option.value as option in vm.flattenedActiveStatusOptions | filter: $select.search\\\"><span ng-repeat=\\\"i in [].constructor(option.level) track by $index\\\">&nbsp;&nbsp;</span> {{option.label}}</ui-select-choices></ui-select></div>\");\n$templateCache.put(\"app/global/table-lister/table-lister.html\",\"<div class=table-lister><div id=non-compact ng-if=!vm.isCompact><div class=table-wrapper><table class=\\\"table activity-log\\\"><thead class=thead><tr><th ng-repeat=\\\"p in vm.options.properties track by $index\\\" ng-class=\\\"{ \\'non-compact-th\\': vm.options.properties.length > 6 }\\\">{{ p.label | translate }}</th><th></th></tr></thead><tbody us-spinner spinner-theme=black spinner-on=vm.isLoading><tr ng-repeat=\\\"row in vm.list track by $index\\\"><!-- Display form when in editing mode for the row --><td ng-if=\\\"$index === vm.editingRow\\\" colspan=\\\"{{vm.options.properties.length + 1}}\\\"><form name=vm.addRowForm id=addRowForm><div class=form-wrapper><div class=form-field ng-repeat=\\\"p in vm.options.properties track by $index\\\"><strong>{{ p.label | translate }}</strong><custom-inputs input-properties=p temp-row=vm.tempRow add-row-form=vm.addRowForm date-picker-options=vm.datePickerOptions></custom-inputs></div><div class=ccm-form-actions><button ng-click=\\\"vm.addRowForm.$valid && vm.save()\\\" title=Save ng-style=\\\"{\\'cursor\\': vm.addRowForm.$invalid ? \\'not-allowed\\' : \\'\\'}\\\" class=\\\"btn ccm-save\\\">Save</button> <button ng-click=vm.cancel() title=Cancel class=\\\"btn ccm-cancel\\\">Cancel</button></div></div></form></td><!-- Display data when not in editing mode for the row --><td ng-if=\\\"$parent.$index !== vm.editingRow\\\" ng-repeat=\\\"p in vm.options.properties track by $index\\\"><span ng-if=\\\"vm.truncateField(vm.getDisplay(row, p))\\\" title=\\\"{{ vm.getDisplay(row, p) }}\\\">{{ vm.truncateField(vm.getDisplay(row, p), 23) }}</span></td><td class=practice-actions ng-if=\\\"$index !== vm.editingRow\\\"><span uib-dropdown on-toggle=toggled(open)><a href id=simple-dropdown uib-dropdown-toggle><i class=\\\"fa fa-ellipsis-h\\\"></i></a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=simple-dropdown><li><a ng-click=vm.edit($index) tabindex=0><i class=\\\"fa fa-edit\\\"></i> Edit</a></li><li><are-you-sure-modal header-trans=\\\"{{\\'PORTAL.ENTERPRISE.CCM.MODALS.HEADER\\' | translate : { entityName: vm.options.entityName } }}\\\" body-trans=PORTAL.ENTERPRISE.CCM.MODALS.BODY close-btn-trans=PORTAL.ENTERPRISE.CCM.MODALS.BUTTONS.CLOSE action-btn-trans=PORTAL.ENTERPRISE.CCM.MODALS.BUTTONS.ACTION action-callback=vm.delete($index) authorize=role:administrative><a qa-id=delete{{$index}}><i class=\\\"fa fa-trash-o\\\"></i> Delete</a></are-you-sure-modal></li></ul></span></td></tr><tr><td ng-repeat=\\\"p in vm.options.properties track by $index\\\"><span class=ccm-entity-no-msg ng-if=$first ng-show=\\\"!vm.isLoading && vm.count === 0\\\">{{ \\'PORTAL.ENTERPRISE.CCM.ENTITY_MESSAGE\\' | translate:{entityName: vm.options.entityName} }}</span></td></tr></tbody></table></div></div><div ng-if=vm.isCompact class=accordion><span class=\\\"ccm-entity-no-msg compact-msg\\\" ng-show=\\\"!vm.isLoading && vm.count === 0\\\">{{ \\'PORTAL.ENTERPRISE.CCM.ENTITY_MESSAGE\\' | translate:{entityName: vm.options.entityName} }}</span><uib-accordion close-others=true><div uib-accordion-group class=panel-default ng-repeat=\\\"row in vm.list track by $index\\\" is-open=row.isOpen ng-click=\\\"$index !== vm.editingRow && (row.isOpen = !row.isOpen)\\\"><uib-accordion-heading><span class=header>{{ vm.truncateField(row.description || row.name, 50) }}</span> <i class=\\\"carrot fa\\\" ng-class=\\\"{\\'fa-chevron-right\\': !row.isOpen, \\'fa-chevron-down\\': row.isOpen}\\\"></i></uib-accordion-heading><!-- Displayed when NOT editing --><div ng-if=\\\"$index !== vm.editingRow\\\"><div ng-repeat=\\\"p in vm.options.properties track by $index\\\"><span class=ccm-compact-label>{{ p.label | translate }}:</span> <span>{{vm.getDisplay(row, p)}}</span></div><!-- Action Controls --><div class=\\\"action-controls ccm-obs-control\\\"><a ng-click=vm.edit($index) class=\\\"action-control edit-control\\\">Edit</a> <span class=cta-split>|</span><are-you-sure-modal header-trans=\\\"{{\\'PORTAL.ENTERPRISE.CCM.MODALS.HEADER\\' | translate : { entityName: vm.options.entityName } }}\\\" body-trans=PORTAL.ENTERPRISE.CCM.MODALS.BODY close-btn-trans=PORTAL.ENTERPRISE.CCM.MODALS.BUTTONS.CLOSE action-btn-trans=PORTAL.ENTERPRISE.CCM.MODALS.BUTTONS.ACTION action-callback=vm.delete($index) authorize=role:administrative><a qa-id=delete{{$index}}>Delete</a></are-you-sure-modal></div></div><!-- Displayed when editing --><div ng-if=\\\"$index === vm.editingRow\\\"><form name=vm.addRowForm id=addRowForm><div class=table-wrapper><div class=form-content><div ng-repeat=\\\"p in vm.options.properties track by $index\\\" class=form-item><strong>{{ p.label | translate }}</strong><custom-inputs input-properties=p temp-row=vm.tempRow add-row-form=vm.addRowForm date-picker-options=vm.datePickerOptions></custom-inputs></div></div><div class=ccm-form-actions><button ng-click=\\\"vm.addRowForm.$valid && vm.save()\\\" title=Save ng-disabled=vm.addRowForm.$invalid class=\\\"btn ccm-save\\\">Save</button> <button ng-click=vm.cancel() title=Cancel class=\\\"btn ccm-cancel\\\">Cancel</button></div></div></form></div></div></uib-accordion></div><button ng-hide=\\\"vm.editingRow != null\\\" ng-click=vm.addRow() title=\\\"Add a {{vm.options.entityName}}\\\" class=\\\"btn ccm-add-entity\\\" ng-class=\\\"{\\'btn-primary\\' : !vm.isCompact }\\\">Add {{vm.options.entityName}}</button><card-wrapper><card card-name=\\\"pagination transparent\\\"><div class=ccm-flex-container><div ng-if=\\\"vm.count > 10\\\"><div class=pagination-options><span class=show>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.SHOW\\' | translate}}</span><select-input id=pagination-options options-array=vm.optionsForPagination model=vm.perPage on-change=vm.getPage()></select-input><span class=results>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.RESULTS\\' | translate}}</span></div><ul uib-pagination items-per-page=vm.perPage total-items=vm.count boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.getPage()></ul></div></div></card></card-wrapper></div>\");\n$templateCache.put(\"app/global/table-sort/table-sort-menu.html\",\"<div class=table-sort-menu><div class=row ng-repeat=\\\"s in vm.sortOptions\\\" ng-mouseenter=\\\"showX = true\\\" ng-mouseleave=\\\" showX = false\\\"><i ng-show=vm.isChecked(s) class=\\\"fa fa-{{showX ? \\'times\\' : \\'check\\'}}\\\">{{ s.isChecked }}</i> <a ng-if=!s.separator ng-click=\\\"vm.setSort(s.sortField, s.sortDir)\\\" class=pull-right>{{s.label}}</a><hr ng-show=\\\"s.separator && !$first\\\"><strong class=pull-left ng-show=s.separator>{{s.separator}}</strong></div></div>\");\n$templateCache.put(\"app/global/table-sort/table-sort.html\",\"<i class=\\\"fa fa-chevron-{{vm.ascSortSelected(vm.sortSelection.field) ? \\'up\\' : \\'down\\'}} table-sort\\\" ng-class=\\\"{\\'table-sort-applied\\': vm.fieldIsSelected(vm.sortSelection.field)}\\\" tooltip-placement=bottom tooltip-trigger=\\\"\\'outsideClick\\'\\\" tooltip-class=table-sort-menu tooltip-append-to-body=true tooltip-is-open=vm.menuIsOpen uib-tooltip-template=\\\"\\'app/global/table-sort/table-sort-menu.html\\'\\\"></i>\");\n$templateCache.put(\"app/global/transcription-notifications/transcription-notifications-popover.html\",\"<div class=notifications-popover><div class=notifications-popover-header><strong>{{ \\'NOTIFICATIONS.TRANSCRIPTION_QUEUE.TITLE\\' | translate }}</strong></div><div class=\\\"notifications-popover-filters btn-group btn-group-sm\\\" role=group aria-label=\\\"{{ \\'NOTIFICATIONS.TRANSCRIPTION_QUEUE.FILTER_ARIA\\' | translate }}\\\"><button type=button class=\\\"btn btn-default\\\" ng-class=\\\"{ active: vm.popoverFilter === \\'unread\\' }\\\" ng-click=\\\"vm.setPopoverFilter(\\'unread\\')\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_QUEUE.FILTER_UNREAD\\' | translate }}</button> <button type=button class=\\\"btn btn-default\\\" ng-class=\\\"{ active: vm.popoverFilter === \\'read\\' }\\\" ng-click=\\\"vm.setPopoverFilter(\\'read\\')\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_QUEUE.FILTER_READ\\' | translate }}</button> <button type=button class=\\\"btn btn-default\\\" ng-class=\\\"{ active: vm.popoverFilter === \\'all\\' }\\\" ng-click=\\\"vm.setPopoverFilter(\\'all\\')\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_QUEUE.FILTER_ALL\\' | translate }}</button></div><div class=notifications-popover-empty ng-if=\\\"vm.popoverItems.length === 0\\\">{{ vm.popoverEmptyKey() | translate }}</div><ul class=\\\"notifications-popover-list list-unstyled\\\" ng-if=\\\"vm.popoverItems.length > 0\\\"><li class=notifications-popover-item ng-repeat=\\\"item in vm.popoverItems track by item.id\\\" ng-class=\\\"{ \\'notifications-popover-item--unread\\': !item.is_read, \\'notifications-popover-item--read\\': item.is_read }\\\" tabindex=0 ng-attr-aria-label=\\\"{{ vm.popoverRowAriaLabel(item) }}\\\" ng-click=\\\"vm.openEditorFromRow(item, $event)\\\" ng-keydown=\\\"vm.onPopoverRowKeydown($event, item)\\\"><div class=notifications-popover-item-title>{{ vm.itemTitle(item) }}</div><div class=\\\"notifications-popover-item-meta text-muted small\\\">{{ vm.formatWhen(item.contents.start_time || item.created_at) }} <span ng-if=vm.durationMinutes(item)>· {{ vm.durationMinutes(item) }} {{ \\'NOTIFICATIONS.TRANSCRIPTION_QUEUE.MINUTES\\' | translate }}</span></div><div class=\\\"notifications-popover-item-patient small\\\" ng-if=vm.patientLabel(item)><a ng-if=item._patientReportDestination ng-click=\\\"vm.navigateToPatientReport(item, $event)\\\">{{ vm.patientLabel(item) }} </a><span ng-if=!item._patientReportDestination>{{ vm.patientLabel(item) }}</span></div></li></ul></div>\");\n$templateCache.put(\"app/global/transcription-notifications/transcription-notifications.html\",\"<li ng-show=\\\"vm.totalTranscriptionCount > 0\\\" ng-class=\\\"{\\'practice-select-notifications-item\\': vm.variant === \\'dock\\'}\\\"><a ng-attr-id=\\\"{{ vm.anchorId }}\\\" class=navbar-notifications-link ng-click=vm.toggleNotificationsPopover() uib-popover-template=\\\"\\'app/global/transcription-notifications/transcription-notifications-popover.html\\'\\\" popover-title=\\\"\\\" popover-placement=\\\"{{ vm.popoverPlacement }}\\\" popover-trigger=\\\"\\'outsideClick\\'\\\" popover-is-open=vm.notificationsPopoverOpen popover-append-to-body=true popover-class=notifications-popover-container>{{ \\'NAV.PRIMARY.ITEMS.TRANSCRIPTION_QUEUE\\' | translate }} <span class=\\\"badge navbar-notification-badge\\\" ng-show=\\\"vm.pendingTranscriptionCount > 0\\\">{{ vm.pendingTranscriptionCount }}</span></a></li>\");\n$templateCache.put(\"app/components/account/forgot-password/forgot-password.html\",\"<div id=forgot-password><card-wrapper><h2>{{ \\'ACCOUNT.FORGOT_PASSWORD.BODY.HEADER\\' | translate }}</h2><card card-name=forgot-password><p class=sub_header>{{ \\'ACCOUNT.FORGOT_PASSWORD.BODY.SUB_HEADER\\' | translate }}</p><form class=top-label-form name=vm.passwordForm ng-submit=vm.requestPasswordResetEmail() novalidate><text-input class-name=email field-type=email form=vm.passwordForm model=vm.credentials.email label-txt=\\\"{{ \\'ACCOUNT.LOGIN.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} is-required=true></text-input><form-footer num-btns=1 add-css-class=form-footer><button id=forgot-password-btn type=submit class=\\\"btn btn-primary pull-right\\\" ng-disabled=vm.passwordForm.$invalid promise-btn=vm.submitPromise>{{ \\'ACCOUNT.FORGOT_PASSWORD.BUTTONS.PRIMARY\\' | translate }}</button></form-footer></form></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/account/login/login.html\",\"<div id=login></div>\");\n$templateCache.put(\"app/components/account/practice-select/practice-select.html\",\"<admin-toolbar user=vm.user enterprise-customer=vm.enterpriseCustomer></admin-toolbar><div id=practice-select><!--  <ul class=\\\"practice-select-notifications-dock list-unstyled\\\">--><!--    <transcription-notifications--><!--      user=\\\"vm.user\\\"--><!--      enterprise-customer-id=\\\"vm.user.user_profile.enterprise_customer_id\\\"--><!--      variant=\\\"dock\\\"></transcription-notifications>--><!--  </ul>--><div class=practice-select><div class=practice-select-logo></div><div class=header>{{ \\'NAV.PRIMARY.BODY.YOUR_ACCOUNTS\\' | translate }}</div><provider-practices ng-show=!vm.practice provider=vm.user on-edit=\\\"vm.onEdit(profile, isDelete)\\\"></provider-practices><div ng-show=!vm.practice class=form-group ng-if=vm.showAddPractice style=\\\"padding: 10px; margin-top: 10px\\\"><typeahead-input class-name=customer-search model=vm.search on-change=vm.loadCustomers(vm.search) on-select=\\\"vm.onPracticeSelect({practice: item})\\\" tab-index placeholder-txt=\\\"Search by practice name to add\\\" input-name=customer-search input-id=customer-search typeahead-payload=vm.loadCustomers typeahead-field-name=name typeahead-json-node-name=name typeahead-limit=100 typeahead-min-length=2 typeahead-template=app/components/admin/admin-dashboard/typeahead-match.html typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\"></typeahead-input></div><div ng-if=vm.practice class=\\\"panel panel-info\\\"><div class=panel-heading>{{ vm.newProvider.id ? \\'ADMIN.ADD_PRACTICE.UPDATE_PROFILE\\' : \\'ADMIN.ADD_PRACTICE.NEW_PROFILE\\' | translate }}</div><div class=panel-body><div class=form-group><label>{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}</label><input class=form-control ng-model=vm.newProvider.name_first></div><div class=form-group><label>{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}</label><input class=form-control ng-model=vm.newProvider.name_last></div><div class=form-group><label>{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}</label><input class=form-control ng-model=vm.newProvider.phone_1_number></div><div class=form-group><label>{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}</label><input class=form-control ng-model=vm.newProvider.email></div><div class=form-group><label>{{ \\'GLOBAL.ACCOUNT.FIELDS.OFFICES\\' | translate }}</label><div class=office-list style=\\\"overflow-y: scroll;max-height: 250px\\\"><div class=checkbox ng-repeat=\\\"o in vm.practice.offices | orderBy:\\'name\\' track by $index\\\"><label><input type=checkbox ng-checked=\\\"vm.newProvider.office_ids.indexOf(o.id) !== -1\\\" ng-click=vm.onOfficeSelected(o.id)> {{ o.name }}</label></div></div><div class=text-danger ng-if=\\\"vm.newProvider.office_ids.length < 1\\\">At least one office is required.</div></div><div class=\\\"form-group text-right\\\"><button class=\\\"btn btn-primary\\\" ng-disabled=\\\"vm.newProvider.office_ids.length < 1\\\" ng-click=\\\"vm.newProvider.office_ids.length && vm.onSave()\\\">{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button class=\\\"btn btn-default\\\" ng-click=vm.clear()>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div></div></div></div></div>\");\n$templateCache.put(\"app/components/account/update-password/update-password.html\",\"<div id=update-password><card-wrapper><h2>{{ \\'ACCOUNT.UPDATE_PASSWORD.BODY.HEADER\\' | translate }}</h2><card card-name=update-password><p class=sub_header>{{ \\'ACCOUNT.UPDATE_PASSWORD.BODY.SUB_HEADER\\' | translate }}</p><form class=top-label-form name=updatePasswordForm ng-submit=vm.updatePassword() novalidate><password-input class-name=password form=updatePasswordForm model=vm.credentials.password label-txt=\\\"{{ \\'ACCOUNT.UPDATE_PASSWORD.FIELDS.PASSWORD\\' | translate }}\\\" input-name=password input-id=password regex={{::vm.passwordRegex}} is-required=true></password-input><password-input class-name=password-confirmation form=updatePasswordForm model=vm.credentials.password_confirmation label-txt=\\\"{{ \\'ACCOUNT.UPDATE_PASSWORD.FIELDS.PASSWORD_CONFIRMATION\\' | translate }}\\\" input-name=password-confirmation input-id=password-confirmation regex={{::vm.passwordRegex}} hide-requirements=true is-required=true></password-input><form-footer num-btns=1 add-css-class=form-footer><button type=submit class=\\\"btn btn-primary pull-right\\\" ng-disabled=\\\"updatePasswordForm.$invalid || (vm.credentials.password !== vm.credentials.password_confirmation)\\\" promise-btn=vm.submitPromise>{{ \\'ACCOUNT.UPDATE_PASSWORD.BUTTONS.PRIMARY\\' | translate }}</button></form-footer></form></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/admin/admin-dashboard/admin-dashboard.html\",\"<div id=admin-dashboard class=enterprise><div class=inner-dashboard><h1>{{\\'ADMIN.DASHBOARD.HEADER\\' | translate}}</h1></div><card-wrapper><card class=admin-card><form name=searchForm us-spinner spinner-theme=black spinner-on=vm.isLoadingAdminUserProfiles><typeahead-input class-name=customer-search form=searchForm model=vm.search on-change=vm.loadCustomers(vm.search) on-select=\\\"vm.onSelect({item: item, model: model, label: label})\\\" tab-index=1 label-txt=\\\"Search by practice name\\\" input-name=customer-search input-id=customer-search typeahead-payload=vm.loadCustomers typeahead-field-name=name typeahead-json-node-name=name typeahead-limit=100 typeahead-min-length=3 typeahead-template=app/components/admin/admin-dashboard/typeahead-match.html typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\"></typeahead-input></form><!-- Recent Practices Section --><div ng-if=\\\"vm.recentPractices && vm.recentPractices.length > 0\\\" class=recent-practices-section><h4>Recent Practices</h4><div class=recent-practices-list><div ng-repeat=\\\"practice in vm.recentPractices | orderBy:\\'-lastAccessed\\' track by $index\\\" class=recent-practice-item ng-class=\\\"{\\'loading\\': vm.isLoadingAdminUserProfiles}\\\" ng-click=\\\"!vm.isLoadingAdminUserProfiles && vm.loadPracticeFromRecent(practice)\\\"><div class=practice-main-info><span class=practice-name>{{practice.name}}</span></div><div class=practice-details ng-if=\\\"practice.offices && practice.offices[0]\\\"><p class=muted>{{practice.offices[0].address_city}}, {{practice.offices[0].address_state}} {{practice.offices[0].address_zipcode}}<br>PH: {{practice.offices[0].phone_1_number}}<br>Registration date: {{practice.created_at | date: \\'shortDate\\'}}</p></div><span ng-if=practice.isLoadingAdminUserProfiles class=loading-indicator><i class=\\\"fa fa-spinner fa-spin\\\"></i></span></div></div><button ng-click=vm.clearRecentPractices() class=\\\"btn btn-small btn-secondary clear-recent-btn\\\">Clear Recent</button></div><div ng-if=vm.admins class=practice-info><h4 class=providers-header>Providers (click one to masquerade)</h4><div class=provider-search-container><input type=text class=\\\"form-control provider-search-input\\\" placeholder=\\\"Search providers by name or email\\\" ng-model=vm.providerTypeahead autocomplete=off></div><table class=\\\"table table-condensed table-striped table-hover\\\"><thead><tr><th>First</th><th>Last</th><th>Email</th><th>Default Office Name</th><th>Multiple</th></tr></thead><tr ng-repeat=\\\"admin in vm.filteredAdmins = (vm.admins | filter:vm.makeProviderTableFilter()) | orderBy:[\\'name_first\\', \\'name_last\\', \\'email\\']\\\" ng-click=vm.selectAdminUserProfile(admin)><td>{{admin.name_first}}</td><td>{{admin.name_last}}</td><td>{{admin.email}}</td><td>{{admin.default_office && admin.default_office.name || \\'—\\'}}</td><td><span ng-if=vm.hasMultipleOffices(admin) class=multiple-offices-indicator>Multiple</span></td></tr></table></div></card></card-wrapper><card-wrapper ng-if=vm.selectedEnterpriseCustomer><card class=practice-info><p title={{vm.selectedEnterpriseCustomer.id}}>Practice details</p><form name=practiceForm ng-submit=vm.updatePractice() novalidate><text-input class-name=practice-name field-type=text form=practiceForm model=vm.selectedEnterpriseCustomer.name label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRACTICE_NAME\\' | translate }}\\\" input-name=practice-name input-id=practice-name is-required=true></text-input><button type=submit class=\\\"btn btn-small btn-primary\\\" ng-disabled=practiceForm.$invalid>Update practice</button></form><div ng-repeat=\\\"office in vm.selectedEnterpriseCustomer.offices\\\"><dl class=office-display><dd title={{office.id}}><strong>Office #{{$index + 1}}</strong></dd><dd>{{office.address_street}}</dd><dd ng-if=office.address_street2>{{office.address_street2}}</dd><dd ng-if=office.address_floor>Floor {{office.address_floor}}</dd><dd>{{office.address_city}}, {{office.address_state}} {{office.address_zipcode}}</dd><dd ng-if=office.phone_1_number>{{office.phone_1_number}}</dd><dd ng-if=office.phone_2_number>{{office.phone_2_number}}</dd><dd ng-if=office.fax_number>{{office.fax_number}}</dd></dl></div></card></card-wrapper><div ui-view></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/admin/admin-dashboard/provider-typeahead-match.html\",\"<a href tabindex=-1 ng-attr-title={{match.label}}><span ng-bind-html=\\\"match.model.nameDisplay | uibTypeaheadHighlight:query\\\"></span><p class=muted>{{match.model.email}}</p></a>\");\n$templateCache.put(\"app/components/admin/admin-dashboard/typeahead-match.html\",\"<a href tabindex=-1 ng-attr-title={{match.label}}><span ng-bind-html=\\\"match.label | uibTypeaheadHighlight:query\\\"></span><p class=muted ng-if=\\\"match.model.offices && match.model.offices[0]\\\">{{match.model.offices[0].address_city}}, {{match.model.offices[0].address_state}} {{match.model.offices[0].address_zipcode}}<br>PH: {{match.model.offices[0].phone_1_number}}<br>Registration date: {{match.model.created_at | date: \\'shortDate\\'}}</p></a>\");\n$templateCache.put(\"app/components/admin/admin-navbar/admin-navbar.html\",\"<nav class=\\\"ibeat-left-navbar navbar navbar-fixed-bottom\\\"><div class=container><!-- Brand and toggle get grouped for better mobile display --><div class=navbar-header><a class=navbar-brand ui-sref=admin.dashboard>{{ \\'GLOBAL.BRAND\\' | translate }}</a></div><!-- Admin navigation --><div class=nav-wrapper ng-if=vm.user.user_profile.is_enterprise_admin><ul class=\\\"nav navbar-nav\\\"><li><a ui-sref=admin.customers ui-sref-active=active>Practices</a></li><current-user user=vm.user></current-user></ul></div></div></nav>\");\n$templateCache.put(\"app/components/admin/admin-toolbar/admin-toolbar.html\",\"<div id=admin-toolbar ng-if=vm.canMasquerade ng-class=\\\"{\\'masquerading\\': vm.isMasquerading}\\\"><p ng-if=vm.isMasquerading>Currently Masquerading as <a ui-sref=enterprise.dashboard>{{vm.masqueradingAsUser.user_profile.name_first}} {{vm.masqueradingAsUser.user_profile.name_last}}</a> from {{vm.masqueradingAsUser.user_profile.default_office.name}}</p><p ng-if=!vm.isMasquerading>Your roles: {{::vm.rolesString}}</p><a class=pull-left ui-sref=admin.dashboard>View user list</a> <button ng-if=vm.isMasquerading ng-click=vm.stopMasquerading() class=pull-right>Stop masquerading</button></div>\");\n$templateCache.put(\"app/components/biller/biller-dashboard/biller-dashboard.html\",\"<div id=biller-dashboard class=enterprise><div class=inner-dashboard><h1>{{\\'BILLER.DASHBOARD.HEADER\\' | translate}}</h1></div><div ui-view></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/biller/biller-navbar/biller-navbar.html\",\"<nav class=\\\"ibeat-left-navbar navbar navbar-fixed-bottom\\\"><div class=container><!-- Brand and toggle get grouped for better mobile display --><div class=navbar-header><a class=navbar-brand ui-sref=biller.dashboard>{{ \\'GLOBAL.BRAND\\' | translate }}</a></div><!-- Admin navigation --><div class=nav-wrapper><ul class=\\\"nav navbar-nav\\\"><li><a ui-sref=biller.claims ui-sref-active=active>Claims</a></li><current-biller biller=vm.biller></current-biller></ul></div></div></nav>\");\n$templateCache.put(\"app/components/biller/current-biller/current-biller.html\",\"<div class=current-biller-wrapper><div class=nav-wrapper><ul class=\\\"nav navbar-nav\\\"><li><a id=logout-btn ng-click=::vm.logout()>{{ \\'NAV.PRIMARY.ITEMS.LOGOUT\\' | translate }}</a></li></ul></div><hr><div class=current-biller><div class=full-name>{{::vm.name}}</div></div></div>\");\n$templateCache.put(\"app/components/callbacks/authzero/authzero.html\",\"<div id=authzero class=container><div class=loading><img id=logo src=assets/images/logo-100plus@2x.80550a2b.png height=40 width=159><p class=loading-dots>Your 100Plus Portal is loading</p></div></div>\");\n$templateCache.put(\"app/components/callbacks/redox-launch/redox-launch.html\",\"<div id=redox-launch class=container><div class=loading ng-if=!vm.isError><img id=logo src=assets/images/logo-100plus@2x.80550a2b.png height=40 width=159><p class=loading-dots>Your 100Plus Portal is loading</p></div><div class=redox-launch-error ng-if=vm.isError><img id=logo src=assets/images/logo-100plus@2x.80550a2b.png height=40 width=159><h1>Launch failed</h1><p>{{ vm.errorMessage }}</p><a ui-sref=account.login>Go to login</a></div></div>\");\n$templateCache.put(\"app/components/claims/claim/claim.html\",\"<div id=claim class=enterprise><br><p><a ng-if=vm.isBillerRoute ui-sref=biller.claims>Go back to claims list</a> <a ng-if=!vm.isBillerRoute ui-sref=enterprise.claims>Go back to claims list</a></p><div class=claim-wrapper><card-wrapper ng-if=vm.claim><card card-name=claim><section class=card-header><div class=card-header-inner><h3 class=text>From: {{vm.claim.enterprise_customer.name || vm.enterpriseCustomer.name}}</h3><span ng-if=vm.claim.submitted_at class=\\\"label label-success pull-right\\\">Submit on {{vm.claim.submitted_at | date:\\'mediumDate\\' : \\'UTC/GMT\\'}}</span></div></section><section class=claim-details><dl class=patient-details><dt>Date of service</dt><dd>{{::vm.claim.date_of_service | date:\\'MM/dd/yyyy\\'}}</dd><dt>Patient name</dt><dd>{{::vm.claim.patient_name}}</dd><dt>Patient address</dt><dd>{{::vm.claim.patient_address_street}}<br>{{::vm.claim.patient_address_city}}, {{::vm.claim.patient_address_state}}<br>{{::vm.claim.patient_address_zipcode}}</dd></dl><table class=table><thead><tr><th>Rendering provider name</th><th>Diagnosis codes</th><th>Service codes</th></tr></thead><tbody><tr ng-repeat=\\\"code in vm.claim.services.codes track by $index\\\"><td>{{::vm.claim.rendering_provider_name}}</td><td><span ng-repeat=\\\"diagnosis in vm.claim.diagnosis.codes track by $index\\\">{{::diagnosis.code}}<span ng-if=!$last>,</span></span></td><td>{{::code.code}}</td></tr></tbody></table></section><section class=actions ng-if=!vm.claim.submitted_at><hr><p>Biller: please click \\\"Mark as submitted\\\" once you submit this claim.</p><button type=button class=\\\"btn btn-primary\\\" ng-click=vm.setClaimSubmittedDate(true)>Mark as submitted</button></section><section class=actions ng-if=vm.claim.submitted_at><hr><p>Click this button again to \\\"unsubmit\\\" this claim.</p><button type=button class=\\\"btn btn-default\\\" ng-click=vm.setClaimSubmittedDate(false)>Submitted on: {{vm.claim.submitted_at | date:\\'mediumDate\\' : \\'UTC/GMT\\'}}</button></section></card></card-wrapper></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/claims/claims-list/claims-list.html\",\"<div id=claims-list><card-wrapper class=claims-card-wrapper><card card-name=claims-card><section class=\\\"card-header border-bottom\\\"><div class=card-header-inner><ul class=claim-row><li class=results-page><span class=show>{{ \\'PORTAL.ENTERPRISE.CLAIMS.BODY.SHOW\\' | translate }}</span><select-input id=pagination-options options-array=::vm.optionsForPagination model=vm.itemsPerPage on-change=\\\"vm.onChange(\\'_perPage\\', {model: model})\\\"></select-input><span class=results>{{ \\'PORTAL.ENTERPRISE.CLAIMS.BODY.RESULTS\\' | translate }}</span></li></ul><export-btn authorize=role:biller,role:clinical all-items-handler=vm.download(false) filtered-items-handler=vm.download(true) all-items-text=PORTAL.ENTERPRISE.CLAIMS.FILTERS.ALL_CLAIMS filtered-items-text=PORTAL.ENTERPRISE.CLAIMS.FILTERS.FILTERED_CLAIMS collapse-handler=vm.isExportCollapsed is-disabled=\\\"vm.claims.data.data.length==0\\\"></export-btn><form class=patient-form name=queryForm><ul class=filter-row><li class=patient-filter><span class=header>{{ \\'PORTAL.ENTERPRISE.CLAIMS.FILTERS.PATIENT_NAME\\' | translate }}</span><text-input class-name=patient_name form=queryForm model=vm.patient_name on-change=\\\"vm.onChange(\\'patient_name\\', {model: model})\\\" input-id=patient_name input-name=patient_name model-options=\\\"{debounce: 700}\\\" placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" tab-index=1></text-input></li><li class=dor-filter><span class=header>{{ \\'PORTAL.ENTERPRISE.CLAIMS.FILTERS.DAYS_OF_READINGS\\' | translate }}</span><text-input height-class=dor model=vm.dorRange() placeholder-txt=0-31 input-name=dor_limits autocomplete=off ng-click=\\\"vm.isDaysOfReadingsCollapsed = !vm.isDaysOfReadingsCollapsed\\\" form=queryForm></text-input><div class=dorform ng-show=!vm.isDaysOfReadingsCollapsed><label for=dor_low class=text-left>&#8805;</label><text-input class-name=dor_low id=dor_low name=dor_low field-type=number model=vm.dorLow model-options=\\\"{debounce: 700}\\\" on-change=\\\"vm.onChange(\\'dorLow\\', {model: model})\\\"></text-input><label for=dor_high class=text-left>&#8804;</label><text-input id=dor_high name=\\\" dor_high\\\" field-type=number model=vm.dorHigh model-options=\\\"{debounce: 700}\\\" on-change=\\\"vm.onChange(\\'dorHigh\\', {model: model})\\\" class-name=dor_high></text-input></div></li><li class=date-filter><span class=header>{{ \\'PORTAL.ENTERPRISE.CLAIMS.FILTERS.DATE_OF_SERVICE\\' | translate }}</span> <input date-range-picker minyear=2019 class=\\\"form-control date-picker\\\" type=text id=datepicker ng-model=vm.datePicker.date model=vm.datePicker.date input-name=patient_name options=vm.datePicker.options picker=vm.datePicker.picker date-range=vm.graphDateRange></li><li class=cpt-filter><span class=header>{{ \\'PORTAL.ENTERPRISE.CLAIMS.FILTERS.CPT_CODES\\' | translate }}</span><div ng-dropdown-multiselect=\\\"\\\" extra-settings=\\\"{ checkBoxes: true, showCheckAll: true, showUncheckAll: false }\\\" options=vm.optionsForCpt selected-model=vm.cptCodesModel events=\\\"{ onSelectionChanged: vm.cptChange }\\\" translation-texts=\\\"{ checkAll: \\'All codes\\', selectionCount: \\'selected\\'}\\\"></div></li><li class=physician-filter><span class=header>{{ \\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate }}</span><select-input id=filter-physician options-array=::vm.optionsForPhysicians ng-model=vm.physician model=vm.physician on-change=\\\"vm.onChange(\\'enterprise_admin_user_profile_id\\', {model: model})\\\"></select-input></li><li class=submission-filter><span class=header>{{ \\'PORTAL.ENTERPRISE.CLAIMS.FILTERS.SUBMISSION_STATUS\\' | translate }}</span><select-input id=submission-inputs options-array=::vm.optionsForStatus model=vm.submitted on-change=\\\"vm.onChange(\\'submitted_at\\', {model: model})\\\"></select-input></li></ul><ul class=filter-row ng-show=\\\"vm.optionsForOffice.length > 2\\\"><li class=submission-filter><span class=header>{{ \\'PORTAL.ENTERPRISE.CLAIMS.FILTERS.OFFICE\\' | translate }}</span><select-input id=filter-office options-array=::vm.optionsForOffice ng-model=vm.office model=vm.office on-change=\\\"vm.onChange(\\'$patient_user_profile.providers.default_office_id$\\', {model: model})\\\"></select-input></li></ul></form></div></section><section id=aligndos><div ng-show=vm.enterpriseCustomer.default_for_align_dos id=alignment-info><are-you-sure-modal header-trans=GLOBAL.MODALS.ALIGN_DOS.HEADER template-url=app/components/portal/enterprise/e-observation-report/align-dos-modal.html action-btn-trans=GLOBAL.MODALS.ALIGN_DOS.BUTTONS.CLOSE action-callback=void() backdrop=static><button class=\\\"btn-link pull-left\\\"><i class=info-link></i></button></are-you-sure-modal><span ng-show=\\\"vm.enterpriseCustomer.default_for_align_dos && vm.enterpriseCustomer.alignment_start_date\\\">This practice was brought into alignment on {{vm.enterpriseCustomer.alignment_start_date | date:\\'mediumDate\\':vm.patientUserProfile.timezone }}. </span><span ng-show=\\\"vm.enterpriseCustomer.default_for_align_dos && !vm.enterpriseCustomer.alignment_start_date\\\">This practice was brought into alignment on {{vm.enterpriseCustomer.created_at | date:\\'mediumDate\\':vm.patientUserProfile.timezone }}.</span></div></section><div id=claims class=module us-spinner spinner-theme=black spinner-on=vm.showSpinner><table class=table ng-click=\\\"vm.isDaysOfReadingsCollapsed=true\\\"><thead><tr><th>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_HEADINGS.PATIENT_NAME\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_HEADINGS.DATE_OF_SERVICE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_HEADINGS.CPT\\' | translate }} <i class=info-link title=\\\"CPT billing visibility - more information\\\" uib-popover-html=\\\"{{ \\'PORTAL.ENTERPRISE.CLAIMS.POPOVER.CPT\\' | translate }}\\\" popover-trigger=\\\"\\'outsideClick\\'\\\" popover-placement=top></i></th><th>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_HEADINGS.RPM_PROVIDER\\' | translate }}</th><th class=center>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_HEADINGS.SUBMITTED\\' | translate }}</th><th authorize=role:biller>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_HEADINGS.COPY\\' | translate }}</th></tr></thead><tbody><tr class=claim-list-item ng-repeat=\\\"claim in vm.claims.data.data track by $index\\\" ng-class=\\\"{\\'submitted\\': claim.submitted_at}\\\"><td class=patient-info><span ng-if=!vm.linkToObservationReport class=patient-name uib-tooltip=\\\"Your account does not have permissions to view patients\\' physiologic recordings\\\" tooltip-placement=bottom>{{ claim.patient_name }}</span> <a auth-disabled=true authorize=role:biller ng-if=\\\"vm.linkToObservationReport && claim.observation_report_service == \\'CCM\\'\\\" ui-sref=\\\"enterprise.ccm_observation_report.goals({user_profile_id: claim.patient_user_profile.id, observation_report_id: claim.observation_report_link_id})\\\" class=patient-name>{{ claim.patient_name }}</a> <a auth-disabled=true authorize=role:biller ng-if=\\\"vm.linkToObservationReport && claim.observation_report_service == \\'RPM\\'\\\" ui-sref=\\\"enterprise.observation_report({user_profile_id: claim.patient_user_profile.id, observation_report_id: claim.observation_report_link_id})\\\" class=patient-name>{{ claim.patient_name }}</a> <a auth-disabled=true authorize=role:biller ng-if=\\\"vm.linkToObservationReport && claim.observation_report_service != \\'CCM\\' && claim.observation_report_service != \\'RPM\\'\\\" ui-sref=\\\"enterprise.observation_report({user_profile_id: claim.patient_user_profile.id, observation_report_id: claim.observation_report_link_id})\\\" class=patient-name>{{ claim.patient_name }}</a> <span class=extended-info>{{ claim.patient_user_profile.gender | uppercase }}, {{ claim.patient_user_profile.date_of_birth | date:\\'shortDate\\' }}<br><span>{{ vm.claimFilter(claim) }}</span> </span><span ng-if=vm.showDeactivationReactivationPair(claim) class=red>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_BODY.DEACTIVATED_AND_REACTIVATED_AT\\' | translate: vm.deactivationReactivationTranslateParams(claim) }} </span><span ng-if=\\\"!vm.showDeactivationReactivationPair(claim) && claim.patient_user_profile.deactivated_at\\\" class=red>{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_BODY.DEACTIVATED_AT\\' | translate }} {{ claim.patient_user_profile.deactivated_at | date:\\'shortDate\\' : \\'UTC/GMT\\' }} </span><a><i class=info-link popover-placement=right-top uib-popover-html=vm.getPatientTooltip(claim) popover-trigger=\\\"\\'click\\'\\\"></i></a> <span ng-if=claim.contains_no_billable_dx class=\\\"label label-warning\\\">{{ \\'PORTAL.ENTERPRISE.CLAIMS.TABLE_BODY.DX_WARNING\\' | translate }}</span></td><td>{{ claim.date_of_service | date:\\'shortDate\\' : \\'UTC/GMT\\' }}</td><td>{{ claim.claim_type | claimTypeToCptCode }} <span ng-if=\\\"claim.dor_at_date_of_service != null\\\">- {{ claim.dor_at_date_of_service }} {{\\'PORTAL.ENTERPRISE.CLAIMS.DAYSOFREADINGS.DAYS\\' | translate}} <i class=info-link uib-popover-html=\\\"vm.getDorTooltop(claim.patient_user_profile, claim.dor_at_date_of_service)\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=bottom popover-class=daysofreadings-popover></i></span></td><td>{{ claim.rendering_provider_name }}</td><td class=center><!-- All approve and submit buttons inside one td to prevent CSS issues --> <button ng-if=\\\"!claim.submitted_at && claim.is_approved\\\" auth-disabled=true authorize=role:biller qa-id=markSubmitted{{$index}} type=button class=\\\"btn btn-small btn-primary\\\" ng-click=\\\"vm.setClaimSubmittedDate(claim, true)\\\">{{\\'PORTAL.ENTERPRISE.CLAIMS.TABLE_BODY.MARK_AS_SUBMITTED\\' | translate}}</button> <button ng-if=\\\"claim.submitted_at && !claim.ehr_charge_id\\\" type=button class=\\\"btn btn-small btn-default submitted\\\" ng-click=\\\"vm.setClaimSubmittedDate(claim, false)\\\"><span>{{ claim.submitted_at | date:\\'mediumDate\\' : \\'UTC/GMT\\' }}</span></button><div ng-if=\\\"claim.submitted_at && claim.ehr_charge_id\\\" uib-tooltip-html=\\\"\\'{{\\'PORTAL.ENTERPRISE.CLAIMS.EHR_SUBMITTED_TEXT\\' | translate}}<br/><br/><b>{{ vm.ehrSubmitTooltipText }}: {{claim.ehr_charge_id}}</b>\\'\\\" tooltip-class=\\\"tooltip-class amd-submit-tooltip\\\" tooltip-placement=bottom><button type=button class=\\\"btn btn-small btn-default amd-submitted\\\" ng-click=\\\"vm.isInternalUser ? vm.showEllkayStatusModal(claim) : null\\\" ng-disabled=!vm.isInternalUser><span>{{ claim.submitted_at | date:\\'mediumDate\\' : \\'UTC/GMT\\' }}</span> <i class=repeat-image></i></button></div><div ng-if=\\\"claim.needs_review && claim.is_approved === null\\\"><button type=button class=\\\"btn btn-small btn-primary btn-manual-review\\\">{{ \\'PORTAL.ENTERPRISE.CLAIMS.REQUIRES_REVIEW\\' | translate }}</button> <button class=\\\"btn btn-small btn-default btn-primary btn-review-choice choice-approved fa fa-check\\\" ng-click=\\\"vm.setApprovalStatus(claim, true)\\\"></button> <button class=\\\"btn btn-small btn-default btn-primary btn-review-choice choice-not-approved fa fa-times\\\" ng-click=\\\"vm.setApprovalStatus(claim, false)\\\"></button></div><button ng-if=\\\"claim.is_approved === false\\\" class=\\\"btn btn-small btn-default not-approved\\\">{{ \\'PORTAL.ENTERPRISE.CLAIMS.NOT_SUBMITTED\\' | translate }}</button></td><td class=center authorize=role:biller><a ng-click=vm.copyClaimToClipboard(claim) ng-class=\\\"{\\'copy-disabled\\': claim.is_approved === false || claim.needs_review}\\\"><i class=copy-link ng-class=\\\"{\\'copy-disabled\\': claim.is_approved === false || claim.needs_review}\\\" uib-tooltip=\\\"Copy patient data\\\" tooltip-placement=bottom tooltip-class=tooltip-class></i></a></td></tr><tr ng-if=\\\"vm.count < 1\\\"><td>{{ \\'PORTAL.ENTERPRISE.GLOBAL.NONE\\' | translate }}</td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table></div><card-wrapper ng-if=\\\"vm.count > 0\\\" ng-click=\\\"vm.isDaysOfReadingsCollapsed=true\\\"><card card-name=\\\"pagination transparent\\\"><ul uib-pagination items-per-page=vm.itemsPerPage previous-text=\\\"<\\\" next-text=\\\">\\\" total-items=vm.count boundary-link-numbers=true max-size=5 ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></card></card-wrapper><div class=ibeat-disclaimer>{{\\'PORTAL.ENTERPRISE.DISCLAIMERS.CLAIMS\\' | translate}}</div></div>\");\n$templateCache.put(\"app/components/claims/claims-list/ellkay-status-modal.html\",\"<div id=ellkay-status-modal class=modal-wrapper><div><div class=modal-header ng-if=modalOptions.headerText><h4 class=modal-title>{{modalOptions.headerText}}</h4></div><div class=modal-body><p ng-bind-html=modalOptions.bodyText></p></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=\\\"btn btn-secondary\\\">{{modalOptions.closeButtonText}}</button></div></div></div>\");\n$templateCache.put(\"app/components/portal/account-settings/account-settings.html\",\"<div id=account-settings class=account-settings><h1>{{ \\'PORTAL.ACCOUNT_SETTINGS.BODY.HEADER\\' | translate }}</h1><uib-tabset active=vm.activeTab><uib-tab index=\\\"\\'contact\\'\\\" classes=account-settings-tab ui-sref=portal.account-settings.contact heading=\\\"{{\\'PORTAL.ACCOUNT_SETTINGS.TABS.CONTACT\\' | translate}}\\\"><authentication-info ng-if=!vm.authenticationInfoEdit user=vm.user on-edit=vm.authenticationInfoEdit></authentication-info></uib-tab><uib-tab index=\\\"\\'patient-alerts\\'\\\" authorize=role:clinical classes=account-settings-tab ui-sref=portal.account-settings.patient-alerts heading=\\\"{{\\'PORTAL.ACCOUNT_SETTINGS.TABS.PATIENT_NOTIFICATIONS\\' | translate}}\\\"><patient-test-alerts user=vm.user e-user-profile=vm.eUserProfile group-list=vm.groupList providers=vm.providers></patient-test-alerts></uib-tab><uib-tab index=\\\"\\'patient-groups\\'\\\" authorize=role:clinical classes=account-settings-tab ui-sref=portal.account-settings.patient-groups heading=\\\"{{\\'PORTAL.ACCOUNT_SETTINGS.TABS.PATIENT_GROUPS\\' | translate}}\\\"><patient-groups user=vm.user care-manager-role=vm.careManagerRole group-list=vm.groupList e-user-profile=vm.eUserProfile></patient-groups></uib-tab></uib-tabset></div>\");\n$templateCache.put(\"app/components/portal/clinical-assignments/clinical-assignments.html\",\"<div class=clinical-assignments-page><card-wrapper class=clinical-assignments-card-wrapper><card card-name=clinical-assignments-card><div class=\\\"clinical-monitoring-search-row clinical-monitoring-readonly-search-row clearfix\\\"><form class=clinical-monitoring-search-form ng-submit=vm.search()><div class=input-group><input id=clinical-assignments-office-search type=text class=form-control ng-model=vm.searchQuery placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.OFFICE_SEARCH_PLACEHOLDER\\' | translate }}\\\"> <span class=input-group-btn><button type=submit class=\\\"btn btn-default\\\" id=clinical-assignments-office-search-submit ng-mousedown=$event.preventDefault()>Search</button> <button type=button class=\\\"btn btn-default\\\" id=clinical-assignments-office-search-clear ng-click=vm.clearSearch() ng-disabled=!vm.searchQuery>Clear</button></span></div></form></div><div class=clinical-assignments-module us-spinner spinner-theme=black spinner-on=vm.showLoadingSpinner><div class=table-responsive><table class=table><thead class=thead><tr><th ng-repeat=\\\"column in vm.columns track by column.key\\\"><button ng-if=vm.isColumnSortable(column) type=button class=\\\"btn btn-link btn-xs\\\" id=clinical-assignments-sort-{{column.key}} ng-click=vm.setSort(column.key) uib-popover-html=\\\"column.key === \\'rpm_patients\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.RPM_PATIENTS_TOOLTIP\\' | translate) : (column.key === \\'ccm_patients\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CCM_PATIENTS_TOOLTIP\\' | translate) : \\'\\')\\\" popover-enable=\\\"column.key === \\'rpm_patients\\' || column.key === \\'ccm_patients\\'\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-placement=top popover-append-to-body=true popover-class=dashboard-popover><span ng-if=!column.headerLines>{{ column.translate ? (column.label | translate) : column.label }}</span> <span ng-if=column.headerLines class=clinical-assignment-header-lines><span class=clinical-assignment-header-line ng-repeat=\\\"line in column.headerLines track by $index\\\">{{ line }} <i ng-if=$last class=\\\"fa table-sort\\\" ng-class=\\\"[vm.getSortIcon(column.key), {\\'table-sort-applied\\': vm.isSortSelected(column.key)}]\\\"></i> </span></span><i ng-if=!column.headerLines class=\\\"fa table-sort\\\" ng-class=\\\"[vm.getSortIcon(column.key), {\\'table-sort-applied\\': vm.isSortSelected(column.key)}]\\\"></i></button> <span ng-if=!vm.isColumnSortable(column)><span ng-if=!column.headerLines>{{ column.translate ? (column.label | translate) : column.label }}</span> <span ng-if=column.headerLines class=clinical-assignment-header-lines><span class=clinical-assignment-header-line ng-repeat=\\\"line in column.headerLines track by $index\\\">{{ line }}</span></span></span></th><th class=clinical-assignment-actions-header><span>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ACTIONS_LABEL\\' | translate }}</span></th></tr></thead><tbody><tr ng-if=\\\"!vm.isLoading && vm.offices.length === 0\\\"><td colspan=\\\"{{ vm.columns.length + 1 }}\\\" class=empty-state>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_ASSIGNMENTS\\' | translate }}</td></tr><tr ng-repeat=\\\"office in vm.offices track by vm.getOfficeId(office)\\\" id=clinical-assignment-row-{{$index}} class=clinical-assignment-row><td ng-repeat=\\\"column in vm.columns track by column.key\\\" ng-class=\\\"{\\'clinical-assignment-practice-cell\\': column.key === \\'practice\\'}\\\"><div class=cell-content ng-if=\\\"column.key !== \\'practice\\'\\\">{{ vm.getDisplayValue(vm.getCellValue(office, column.key)) }}</div><div class=cell-content ng-if=\\\"column.key === \\'practice\\'\\\"><div class=clinical-assignment-practice>{{ office.enterprise_customer_name }}</div><div class=clinical-assignment-office>{{ office.office_name }}</div></div></td><td class=clinical-assignment-actions-cell><div class=clinical-assignment-actions><div class=clinical-assignment-action-row><a id=clinical-assignment-open-assignments-{{$index}} class=clinical-assignment-action-link href ng-click=\\\"vm.openAssignmentsModal(office); $event.preventDefault()\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENTS\\' | translate }}</a></div><div class=clinical-assignment-action-row><a id=clinical-assignment-open-configuration-{{$index}} class=clinical-assignment-action-link href ng-click=\\\"vm.openConfigurationModal(office); $event.preventDefault()\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CONFIGURATION\\' | translate }}</a></div></div></td></tr></tbody></table></div></div><card-wrapper><card card-name=\\\"pagination transparent\\\"><div class=clearfix ng-if=\\\"vm.count > vm.itemsPerPage\\\"><div class=\\\"pull-left pagination-options\\\"><span class=show>Show</span><select id=clinical-assignments-page-size class=form-control ng-model=vm.itemsPerPage ng-options=\\\"option.value as option.label for option in vm.optionsForPagination\\\" ng-change=vm.changePagination()></select><span class=results>results</span></div><ul class=\\\"pagination pull-right\\\" uib-pagination items-per-page=vm.itemsPerPage total-items=vm.count boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></div></card></card-wrapper></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/clinical-assignments/edit-assignment.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper office-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=\\\"modal-body row\\\"><form name=vm.AssignmentForm class=top-label-form novalidate><div class=col-sm-12><h4>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENTS\\' | translate }}</h4><div class=help-block ng-if=\\\"modalOptions.payload.officeAssignments.length === 0\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_ASSIGNMENTS\\' | translate }}</div><div class=clinical-assignment-list ng-if=\\\"modalOptions.payload.officeAssignments.length > 0\\\"><div class=clinical-assignment-list-row ng-repeat=\\\"assignment in modalOptions.payload.officeAssignments track by assignment.id\\\"><div class=clinical-assignment-list-copy><span class=clinical-assignment-list-bullet aria-hidden=true>&bull;</span> <strong>{{ assignment.assignment_type_label }}</strong> <span>- {{ assignment.provider.name_first }} {{ assignment.provider.name_last }}</span> <span ng-if=modalOptions.payload.handlers.getAssignmentDaysText(assignment)>{{ modalOptions.payload.handlers.getAssignmentDaysText(assignment) }} </span><span ng-if=assignment.note>- {{ assignment.note }} </span><a ng-if=modalOptions.payload.canEditClinicalMonitoring href=\\\"\\\" class=clinical-assignment-delete-action id=clinical-assignment-delete-action-{{$index}} aria-label=\\\"Delete assignment\\\" title=\\\"Delete assignment\\\" ng-click=\\\"modalOptions.payload.handlers.deleteAssignment(modalOptions.payload, assignment); $event.preventDefault()\\\"><i class=\\\"fa fa-trash-o\\\" aria-hidden=true></i></a></div></div></div></div><div class=col-sm-12><hr><h4>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ADD_ASSIGNMENT\\' | translate }}</h4><p class=help-block ng-if=!modalOptions.payload.canEditClinicalMonitoring>Read only. Only clinical monitoring managers can add or remove assignments.</p></div><div class=col-sm-12 ng-if=modalOptions.payload.canEditClinicalMonitoring><div class=form-group><label>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENT_MODAL.TYPE\\' | translate }}</label><select class=form-control id=clinical-assignment-type ng-model=modalOptions.payload.newAssignmentPayload.assignment_type ng-change=\\\"modalOptions.payload.handlers.setAssignmentType(modalOptions.payload, modalOptions.payload.newAssignmentPayload, modalOptions.payload.newAssignmentPayload.assignment_type)\\\" ng-options=\\\"option.value as option.label for option in modalOptions.payload.newAssignmentPayload.assignmentTypeOptions\\\"></select></div></div><div class=col-sm-12 ng-if=modalOptions.payload.canEditClinicalMonitoring><div class=form-group><label class=clinical-assignment-provider-label><span>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENT_MODAL.PROVIDER\\' | translate }}</span> <span class=clinical-assignment-provider-help>BTR assignments are limited to clinicians licensed in {{ modalOptions.payload.state || \\'this office state\\' }}. Calls / Documentation assignments can be given to any clinician with clinical monitoring access. Clinicians are sorted by the relevant assigned patient counts.</span></label><select class=form-control id=clinical-assignment-provider ng-model=modalOptions.payload.newAssignmentPayload.user_id ng-change=\\\"modalOptions.payload.handlers.setAssignmentUser(modalOptions.payload, modalOptions.payload.newAssignmentPayload, modalOptions.payload.newAssignmentPayload.user_id)\\\" ng-options=\\\"option.user_id as option.label for option in modalOptions.payload.newAssignmentPayload.availableUsers\\\"><option value=\\\"\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENT_MODAL.SELECT_PROVIDER\\' | translate }}</option></select><div class=\\\"help-block text-danger\\\" ng-if=modalOptions.payload.newAssignmentPayload.duplicateAssignmentError>This clinician already has this assignment type for this office. Select a different clinician or assignment type.</div></div></div><div class=col-sm-12 ng-if=modalOptions.payload.canEditClinicalMonitoring><div class=form-group><label>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENT_MODAL.DAYS\\' | translate }}</label><div class=clinical-assignment-day-mode-list ng-init=\\\"modalOptions.payload.newAssignmentPayload.daySelectionMode = modalOptions.payload.newAssignmentPayload.daySelectionMode || \\'all\\'\\\"><label class=radio-inline><input type=radio name=clinical-assignment-day-mode ng-model=modalOptions.payload.newAssignmentPayload.daySelectionMode value=all ng-click=\\\"modalOptions.payload.handlers.setAssignmentDayMode(modalOptions.payload.newAssignmentPayload, \\'all\\')\\\"> <span>M-F</span></label><label class=radio-inline><input type=radio name=clinical-assignment-day-mode ng-model=modalOptions.payload.newAssignmentPayload.daySelectionMode value=custom ng-click=\\\"modalOptions.payload.handlers.setAssignmentDayMode(modalOptions.payload.newAssignmentPayload, \\'custom\\')\\\"> <span>Select Days</span></label></div><div id=clinical-assignment-days class=clinical-assignment-days-list ng-if=\\\"modalOptions.payload.newAssignmentPayload.daySelectionMode === \\'custom\\'\\\"><label class=checkbox-inline ng-repeat=\\\"option in modalOptions.payload.newAssignmentPayload.daysOfWeekOptions track by option.value\\\"><input type=checkbox ng-checked=\\\"modalOptions.payload.handlers.isDaySelected(modalOptions.payload.newAssignmentPayload, option.value)\\\" ng-click=\\\"modalOptions.payload.handlers.toggleAssignmentDay(modalOptions.payload.newAssignmentPayload, option.value)\\\"> <span>{{ option.label }}</span></label></div><div class=\\\"help-block text-danger\\\" ng-if=\\\"modalOptions.payload.newAssignmentPayload.daySelectionMode === \\'custom\\' && modalOptions.payload.newAssignmentPayload.daySelectionError\\\">Select at least one weekday.</div></div></div><div class=col-sm-12 ng-if=modalOptions.payload.canEditClinicalMonitoring><div class=form-group><label>Assignment Notes</label><textarea id=clinical-assignment-note class=form-control rows=4 ng-model=modalOptions.payload.newAssignmentPayload.note></textarea></div></div></form></div><div class=modal-footer><button id=clinical-assignment-done type=button class=btn ng-click=modalOptions.ok(true) promise-btn>{{ ::modalOptions.actionButtonText }}</button> <button ng-if=modalOptions.payload.canEditClinicalMonitoring id=clinical-assignment-add-button type=button class=\\\"btn btn-primary clinical-assignment-add-button\\\" ng-disabled=\\\"modalOptions.payload.submitPromise || !modalOptions.payload.newAssignmentPayload.user_id || !modalOptions.payload.newAssignmentPayload.assignment_type || modalOptions.payload.newAssignmentPayload.duplicateAssignmentError\\\" ng-click=\\\"modalOptions.payload.handlers.saveAssignment(modalOptions.payload, modalOptions.payload.newAssignmentPayload)\\\" promise-btn=modalOptions.payload.submitPromise>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ADD_ASSIGNMENT\\' | translate }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-assignments/edit-configuration.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper office-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=\\\"modal-body row\\\"><form name=vm.ConfigurationForm class=top-label-form novalidate><div class=col-sm-12><p class=help-block ng-if=!modalOptions.payload.canEditClinicalMonitoring>Read only. Only clinical monitoring managers can save office configuration.</p></div><div class=col-sm-12><div class=form-group><label>EHR Name</label><input id=clinical-assignment-office-ehr-name class=form-control ng-disabled=!modalOptions.payload.canEditClinicalMonitoring ng-model=modalOptions.payload.officeSetting.ehr_name></div></div><div class=col-sm-12><div class=form-group><label>Contact Method</label><select id=clinical-assignment-office-contact-method class=form-control ng-disabled=!modalOptions.payload.canEditClinicalMonitoring ng-model=modalOptions.payload.officeSetting.contact_method><option value=dialer>Dialer</option><option value=manual>Manual</option></select></div></div><div class=col-sm-12><div class=form-group ng-class=\\\"{\\'has-error\\': vm.ConfigurationForm[\\'escalationProtocolUrl\\'].$invalid && (vm.ConfigurationForm[\\'escalationProtocolUrl\\'].$dirty || vm.ConfigurationForm[\\'escalationProtocolUrl\\'].$touched)}\\\"><label>Escalation Protocol URL</label><input id=clinical-assignment-office-escalation-protocol-url name=escalationProtocolUrl type=url class=form-control ng-disabled=!modalOptions.payload.canEditClinicalMonitoring ng-model=modalOptions.payload.officeSetting.escalation_protocol_url ng-pattern=/^https?:\\\\/\\\\/.+$/i><p class=help-block ng-if=\\\"vm.ConfigurationForm[\\'escalationProtocolUrl\\'].$invalid && (vm.ConfigurationForm[\\'escalationProtocolUrl\\'].$dirty || vm.ConfigurationForm[\\'escalationProtocolUrl\\'].$touched)\\\">Enter a valid http:// or https:// URL.</p></div></div><div class=col-sm-12><div class=form-group><label>Office Notes</label><textarea id=clinical-assignment-office-notes class=form-control rows=4 ng-disabled=!modalOptions.payload.canEditClinicalMonitoring ng-model=modalOptions.payload.officeSetting.special_notes></textarea></div></div></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=clinical-assignment-configuration-close type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=clinical-assignment-configuration-save type=button class=\\\"btn btn-primary\\\" ng-disabled=\\\"modalOptions.payload.canEditClinicalMonitoring && vm.ConfigurationForm.$invalid\\\" ng-click=\\\"modalOptions.payload.canEditClinicalMonitoring ? modalOptions.payload.handlers.saveOfficeSetting(modalOptions.payload, modalOptions.ok) : modalOptions.ok(false)\\\" promise-btn=modalOptions.payload.submitPromise>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/add-clinician.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal clinical-monitoring-add-clinician-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=modal-body><form name=modalOptions.payload.addClinicianForm class=\\\"top-label-form clinical-monitoring-add-clinician-form\\\" novalidate><div class=form-group><label for=clinical-monitoring-clinician-lookup>Clinician</label><ui-select id=clinical-monitoring-clinician-lookup theme=bootstrap ng-model=modalOptions.payload.selectedClinician on-select=\\\"modalOptions.payload.selectedClinician = $item\\\"><ui-select-match placeholder=\\\"Search by name or email\\\">{{$select.selected.lookup_label}}</ui-select-match><ui-select-choices repeat=\\\"option in modalOptions.payload.lookupOptions | filter: $select.search track by option.user_id\\\" refresh=modalOptions.payload.searchClinicians($select.search) refresh-delay=300><span>{{ option.lookup_label }}</span></ui-select-choices></ui-select><div id=clinical-monitoring-clinician-lookup-empty class=help-block ng-if=\\\"modalOptions.payload.hasSearchedClinicians && !modalOptions.payload.isLookupLoading && !modalOptions.payload.lookupOptions.length\\\">No clinicians matched your search.</div></div><div class=form-group><label for=clinical-monitoring-new-clinician-role>Role</label><select class=form-control id=clinical-monitoring-new-clinician-role ng-model=modalOptions.payload.role_type ng-options=\\\"option.value as option.label for option in modalOptions.payload.roleOptions\\\"></select></div></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=clinical-monitoring-add-clinician-cancel type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=clinical-monitoring-add-clinician-submit type=button class=\\\"btn btn-primary\\\" ng-disabled=!modalOptions.payload.selectedClinician ng-click=modalOptions.ok(modalOptions.payload) promise-btn=modalOptions.payload.submitPromise>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/clinical-monitoring-clinician.html\",\"<div class=clinical-monitoring-clinician-detail><div class=clinical-monitoring-detail-header><h1>{{ vm.clinicianDetail.display_name || (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CLINICIAN_NOT_FOUND\\' | translate) }}</h1><button type=button class=\\\"btn btn-primary btn-back\\\" id=clinical-monitoring-detail-back ng-click=vm.goBack()>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.DETAIL_BACK\\' | translate }}</button></div><div class=clinical-monitoring-detail-summary><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ROLE\\' | translate\\\"><div ng-show=!vm.editingRole><span id=clinical-monitoring-detail-role-label>{{ vm.getDisplayValue(vm.clinicianDetail.role_label) }}</span> <i class=\\\"fa fa-edit\\\" id=clinical-monitoring-detail-edit-membership ng-if=vm.canEditClinicalMonitoring ng-click=vm.startEditRole()></i></div><div ng-show=vm.editingRole class=clinical-monitoring-inline-edit><select id=clinical-monitoring-detail-role class=\\\"form-control input-sm\\\" ng-model=vm.membershipPayload.role_type ng-options=\\\"option.value as option.label for option in vm.roleOptions\\\"></select><span class=\\\"clinical-monitoring-edit-action save\\\" id=clinical-monitoring-detail-save-membership ng-click=vm.confirmEditRole()><i class=\\\"fa fa-check\\\"></i> Save </span><span class=\\\"clinical-monitoring-edit-action cancel\\\" id=clinical-monitoring-detail-cancel-membership ng-click=vm.cancelEditRole()><i class=\\\"fa fa-times\\\"></i> Cancel</span></div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.LICENSES\\' | translate\\\"><div>{{ vm.getAbbreviatedLicenses() }} <i class=\\\"fa fa-edit\\\" id=clinical-monitoring-detail-edit-licenses ng-if=vm.canEditClinicalMonitoring ng-click=vm.openLicenseModal()></i></div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.TOTAL_ASSIGNMENTS\\' | translate\\\">{{ vm.getDisplayValue(vm.clinicianDetail.total_assignments) }}</info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.TOTAL_PATIENTS\\' | translate\\\">{{ vm.getDisplayValue(vm.clinicianDetail.total_patients) }}</info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.COMMUNICATIONS\\' | translate\\\">{{ vm.getDisplayValue(vm.clinicianDetail.communications_patients) }}</info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.BTRS\\' | translate\\\">{{ vm.getDisplayValue(vm.clinicianDetail.btrs_patients) }}</info-vertical></div><div class=help-block ng-if=!vm.canEditClinicalMonitoring>Read only. Only clinical monitoring managers can update clinician roles, remove clinicians from the team, or edit licensed states.</div><card-wrapper><card card-name=clinical-assignments-card><section class=card-header><div class=card-header-inner><span class=text>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ASSIGNMENTS\\' | translate }}</span></div></section><div class=clinical-assignments-module><div class=table-responsive><table class=table><thead class=thead><tr><th>Customer</th><th>Office</th><th>Type</th><th>Days</th><th>Patients</th><th>Notes</th></tr></thead><tbody><tr ng-if=\\\"(vm.clinicianDetail.assignment_rows || []).length === 0\\\"><td colspan=6 class=empty-state>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_ASSIGNMENTS\\' | translate }}</td></tr><tr ng-repeat=\\\"assignment in vm.clinicianDetail.assignment_rows track by assignment.assignment_id\\\"><td><div class=cell-content>{{ vm.getDisplayValue(assignment.enterprise_customer_name) }}</div></td><td><div class=cell-content>{{ vm.getDisplayValue(assignment.office_name) }}</div></td><td><div class=cell-content>{{ vm.getDisplayValue(assignment.assignment_type_label) }}</div></td><td><div class=cell-content>{{ vm.getDisplayValue(vm.getAssignmentDaysLabel(assignment)) }}</div></td><td><div class=cell-content>{{ vm.getDisplayValue(assignment.office_patient_count) }}</div></td><td><div class=cell-content>{{ vm.getDisplayValue(assignment.note) }}</div></td></tr></tbody></table></div></div></card></card-wrapper><div ng-if=vm.canEditClinicalMonitoring class=clinical-monitoring-remove-action><button type=button class=clinical-monitoring-remove-button id=clinical-monitoring-detail-remove ng-click=vm.openRemoveClinicianModal()>Remove from Clinical Monitoring Team</button></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/clinical-monitoring-clinicians.html\",\"<div class=clinical-assignments-page><card-wrapper class=clinical-assignments-card-wrapper><card card-name=clinical-assignments-card><div class=\\\"clinical-monitoring-search-row clinical-monitoring-readonly-row clearfix\\\" ng-if=!vm.canEditClinicalMonitoring><div class=help-block>Read only. Only clinical monitoring managers can add clinicians or update their memberships.</div></div><div class=\\\"clinical-monitoring-search-row clearfix\\\" ng-class=\\\"{\\'clinical-monitoring-readonly-search-row\\': !vm.canEditClinicalMonitoring}\\\"><form class=clinical-monitoring-search-form ng-submit=vm.search()><div class=input-group><input id=clinical-monitoring-staff-search type=text class=form-control ng-model=vm.searchQuery placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.SEARCH_PLACEHOLDER\\' | translate }}\\\"> <span class=input-group-btn><button type=submit class=\\\"btn btn-default\\\" id=clinical-monitoring-staff-search-submit>Search</button> <button type=button class=\\\"btn btn-default\\\" id=clinical-monitoring-staff-search-clear ng-click=vm.clearSearch() ng-disabled=!vm.searchQuery>Clear</button></span></div></form><button ng-if=vm.canEditClinicalMonitoring type=button class=\\\"btn btn-default clinical-monitoring-add-toggle\\\" id=clinical-monitoring-add-clinician-toggle ng-click=vm.openAddClinicianModal()>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ADD_CLINICIAN\\' | translate }}</button></div><div class=clinical-assignments-module us-spinner spinner-theme=black spinner-on=vm.showLoadingSpinner><div class=table-responsive><table class=table><thead class=thead><tr><th ng-repeat=\\\"column in vm.columns track by column.key\\\"><button type=button class=\\\"btn btn-link btn-xs\\\" id=clinical-monitoring-sort-{{column.key}} ng-click=vm.setSort(column.key) uib-popover-html=\\\"column.key === \\'total_patients\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.PATIENTS_TOOLTIP\\' | translate) : (column.key === \\'communications\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CALLS_DOCS_PATIENTS_TOOLTIP\\' | translate) : (column.key === \\'btrs\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.BTR_PATIENTS_TOOLTIP\\' | translate) : \\'\\'))\\\" popover-enable=\\\"column.key === \\'total_patients\\' || column.key === \\'communications\\' || column.key === \\'btrs\\'\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-placement=top popover-append-to-body=true popover-class=dashboard-popover><span ng-if=!column.headerLines>{{ column.label }}</span> <span ng-if=column.headerLines class=clinical-assignment-header-lines><span class=clinical-assignment-header-line ng-repeat=\\\"line in column.headerLines track by $index\\\">{{ line }} <i ng-if=$last class=\\\"fa table-sort\\\" ng-class=\\\"[vm.getSortIcon(column.key), {\\'table-sort-applied\\': vm.isSortSelected(column.key)}]\\\"></i> </span></span><i ng-if=!column.headerLines class=\\\"fa table-sort\\\" ng-class=\\\"[vm.getSortIcon(column.key), {\\'table-sort-applied\\': vm.isSortSelected(column.key)}]\\\"></i></button></th></tr></thead><tbody><tr ng-if=\\\"!vm.isLoading && vm.staff.length === 0\\\"><td colspan=\\\"{{ vm.columns.length }}\\\" class=empty-state>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_CLINICIANS\\' | translate }}</td></tr><tr ng-repeat=\\\"clinician in vm.staff track by clinician.user_id\\\" id=clinical-monitoring-clinician-row-{{$index}} class=\\\"clinical-assignment-row clinical-monitoring-clinician-row\\\" ng-click=vm.openClinician(clinician)><td ng-repeat=\\\"column in vm.columns track by column.key\\\"><div class=cell-content>{{ vm.getDisplayValue(vm.getCellValue(clinician, column.key)) }}</div></td></tr></tbody></table></div></div><card-wrapper><card card-name=\\\"pagination transparent\\\"><div class=clearfix ng-if=\\\"vm.count > vm.itemsPerPage\\\"><div class=\\\"pull-left pagination-options\\\"><span class=show>Show</span><select id=clinical-monitoring-page-size class=form-control ng-model=vm.itemsPerPage ng-options=\\\"option.value as option.label for option in vm.optionsForPagination\\\" ng-change=vm.changePagination()></select><span class=results>results</span></div><ul class=\\\"pagination pull-right\\\" uib-pagination items-per-page=vm.itemsPerPage total-items=vm.count boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></div></card></card-wrapper></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/clinical-monitoring-coverage.html\",\"<div class=clinical-assignments-page><card-wrapper class=clinical-assignments-card-wrapper><card card-name=clinical-assignments-card><div class=\\\"clinical-monitoring-search-row clearfix\\\" ng-if=!vm.canEditClinicalMonitoring><div class=help-block>Read only. Only clinical monitoring managers can create or cancel temporary coverage.</div></div><div class=\\\"clinical-monitoring-search-row clinical-monitoring-coverage-controls clearfix\\\" ng-if=vm.canEditClinicalMonitoring><button type=button class=\\\"btn btn-default clinical-monitoring-add-toggle\\\" id=clinical-monitoring-add-coverage-toggle ng-click=vm.openCreateCoverageModal()>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ADD_COVERAGE\\' | translate }}</button></div><div class=clinical-assignments-module us-spinner spinner-theme=black spinner-on=vm.showLoadingSpinner><div class=\\\"clinical-monitoring-coverage-section coverage-section-active\\\"><h3 class=clinical-monitoring-coverage-section-heading><span class=\\\"coverage-section-indicator coverage-section-indicator-active\\\"></span> {{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.ACTIVE_NOW\\' | translate }}</h3><div class=empty-state ng-if=\\\"!vm.getSectionRows(\\'active\\').length\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_ACTIVE_COVERAGE\\' | translate }}</div><div class=\\\"clinical-monitoring-coverage-card coverage-card-active\\\" ng-repeat=\\\"row in vm.getSectionRows(\\'active\\') track by row.id\\\"><div class=clinical-monitoring-coverage-card-header><span class=coverage-clinician-name>{{ vm.getClinicianName(row.unavailable_clinician) }}</span> <span class=coverage-reason-pill ng-class=vm.getReasonClass(row.reason_type)>{{ vm.formatCoverageReason(row.reason_type) }}</span></div><div class=clinical-monitoring-coverage-card-body><div class=coverage-date-range><i class=\\\"fa fa-clock-o\\\"></i> {{ vm.formatCoverageWindow(row) }}</div><div class=coverage-note ng-if=row.note><i class=\\\"fa fa-comment-o\\\"></i> {{ row.note }}</div><div class=coverage-overrides ng-if=row.overrides.length><table class=coverage-overrides-table><thead><tr><th>Office</th><th>Type</th><th>Covering Clinician</th></tr></thead><tbody><tr ng-repeat=\\\"override in row.overrides track by override.id\\\"><td>{{ override.office_name }}</td><td>{{ override.assignment_type_label || override.assignment_type }}</td><td>{{ vm.getClinicianName(override.provider) }}</td></tr></tbody></table></div></div><div class=clinical-monitoring-coverage-card-actions ng-if=vm.canEditClinicalMonitoring><a class=coverage-action-link href id=clinical-monitoring-edit-coverage-{{$index}} ng-click=\\\"vm.openEditCoverageModal(row); $event.preventDefault()\\\"><i class=\\\"fa fa-pencil\\\"></i> Edit </a><a class=\\\"coverage-action-link coverage-action-cancel\\\" href id=clinical-monitoring-cancel-coverage-{{$index}} ng-click=\\\"vm.cancelCoverage(row); $event.preventDefault()\\\"><i class=\\\"fa fa-times\\\"></i> Cancel Coverage</a></div></div></div><div class=\\\"clinical-monitoring-coverage-section coverage-section-upcoming\\\"><h3 class=clinical-monitoring-coverage-section-heading><span class=\\\"coverage-section-indicator coverage-section-indicator-upcoming\\\"></span> {{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.UPCOMING\\' | translate }}</h3><div class=empty-state ng-if=\\\"!vm.getSectionRows(\\'upcoming\\').length\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_UPCOMING_COVERAGE\\' | translate }}</div><div class=\\\"clinical-monitoring-coverage-card coverage-card-upcoming\\\" ng-repeat=\\\"row in vm.getSectionRows(\\'upcoming\\') track by row.id\\\"><div class=clinical-monitoring-coverage-card-header><span class=coverage-clinician-name>{{ vm.getClinicianName(row.unavailable_clinician) }}</span> <span class=coverage-reason-pill ng-class=vm.getReasonClass(row.reason_type)>{{ vm.formatCoverageReason(row.reason_type) }}</span></div><div class=clinical-monitoring-coverage-card-body><div class=coverage-date-range><i class=\\\"fa fa-clock-o\\\"></i> {{ vm.formatCoverageWindow(row) }}</div><div class=coverage-note ng-if=row.note><i class=\\\"fa fa-comment-o\\\"></i> {{ row.note }}</div><div class=coverage-overrides ng-if=row.overrides.length><table class=coverage-overrides-table><thead><tr><th>Office</th><th>Type</th><th>Covering Clinician</th></tr></thead><tbody><tr ng-repeat=\\\"override in row.overrides track by override.id\\\"><td>{{ override.office_name }}</td><td>{{ override.assignment_type_label || override.assignment_type }}</td><td>{{ vm.getClinicianName(override.provider) }}</td></tr></tbody></table></div></div><div class=clinical-monitoring-coverage-card-actions ng-if=vm.canEditClinicalMonitoring><a class=coverage-action-link href id=clinical-monitoring-edit-upcoming-coverage-{{$index}} ng-click=\\\"vm.openEditCoverageModal(row); $event.preventDefault()\\\"><i class=\\\"fa fa-pencil\\\"></i> Edit </a><a class=\\\"coverage-action-link coverage-action-cancel\\\" href id=clinical-monitoring-cancel-upcoming-coverage-{{$index}} ng-click=\\\"vm.cancelCoverage(row); $event.preventDefault()\\\"><i class=\\\"fa fa-times\\\"></i> Cancel Coverage</a></div></div></div><div class=\\\"clinical-monitoring-coverage-section coverage-section-recent\\\"><h3 class=clinical-monitoring-coverage-section-heading><span class=\\\"coverage-section-indicator coverage-section-indicator-recent\\\"></span> {{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.RECENT_HISTORY\\' | translate }}</h3><div class=empty-state ng-if=\\\"!vm.getSectionRows(\\'recent\\').length\\\">{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_RECENT_COVERAGE\\' | translate }}</div><div class=\\\"clinical-monitoring-coverage-card coverage-card-recent\\\" ng-repeat=\\\"row in vm.getSectionRows(\\'recent\\') track by row.id\\\"><div class=clinical-monitoring-coverage-card-header><span class=coverage-clinician-name>{{ vm.getClinicianName(row.unavailable_clinician) }}</span> <span class=coverage-reason-pill ng-class=vm.getReasonClass(row.reason_type)>{{ vm.formatCoverageReason(row.reason_type) }}</span></div><div class=clinical-monitoring-coverage-card-body><div class=coverage-date-range><i class=\\\"fa fa-clock-o\\\"></i> {{ vm.formatCoverageWindow(row) }}</div></div></div></div></div></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/clinical-monitoring-my-assignments.html\",\"<div class=clinical-monitoring-my-assignments-page><card-wrapper class=clinical-assignments-card-wrapper><card card-name=clinical-assignments-card><div class=clinical-monitoring-my-assignments-module us-spinner spinner-theme=black spinner-on=vm.showLoadingSpinner><div class=table-responsive><table class=table><thead class=thead><tr><th class=clinical-monitoring-my-assignment-expander-header></th><th ng-repeat=\\\"column in vm.columns track by column.key\\\" ng-class=column.headerClass><button ng-if=vm.isColumnSortable(column) type=button class=\\\"btn btn-link btn-xs\\\" id=clinical-monitoring-my-assignment-sort-{{column.key}} ng-click=vm.setSort(column.key) uib-popover-html=\\\"column.key === \\'last_activity\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.MY_LAST_ACTIVITY_TOOLTIP\\' | translate) : (column.key === \\'rpm_patients\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.RPM_PATIENTS_TOOLTIP\\' | translate) : (column.key === \\'ccm_patients\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.CCM_PATIENTS_TOOLTIP\\' | translate) : (column.key === \\'new_readings\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NEW_READINGS_TOOLTIP\\' | translate) : (column.key === \\'btrs\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.UNDOCUMENTED_BTRS_TOOLTIP\\' | translate) : (column.key === \\'new_ccm_patients\\' ? (\\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NEW_CCM_PATIENTS_TOOLTIP\\' | translate) : \\'\\')))))\\\" popover-enable=\\\"column.key === \\'last_activity\\' || column.key === \\'rpm_patients\\' || column.key === \\'ccm_patients\\' || column.key === \\'new_readings\\' || column.key === \\'btrs\\' || column.key === \\'new_ccm_patients\\'\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-placement=top popover-append-to-body=true popover-class=dashboard-popover><span ng-if=!column.headerLines>{{ column.label | translate }}</span> <span ng-if=column.headerLines class=clinical-assignment-header-lines><span class=clinical-assignment-header-line ng-repeat=\\\"line in column.headerLines track by $index\\\">{{ line }} <i ng-if=$last class=\\\"fa table-sort\\\" ng-class=\\\"[vm.getSortIcon(column.key), {\\'table-sort-applied\\': vm.isSortSelected(column.key)}]\\\"></i> </span></span><i ng-if=!column.headerLines class=\\\"fa table-sort\\\" ng-class=\\\"[vm.getSortIcon(column.key), {\\'table-sort-applied\\': vm.isSortSelected(column.key)}]\\\"></i></button> <span ng-if=!vm.isColumnSortable(column)><span ng-if=!column.headerLines>{{ column.label | translate }}</span> <span ng-if=column.headerLines class=clinical-assignment-header-lines><span class=clinical-assignment-header-line ng-repeat=\\\"line in column.headerLines track by $index\\\">{{ line }}</span></span></span></th></tr></thead><tbody><tr ng-if=\\\"!vm.isLoading && vm.assignments.length === 0\\\"><td colspan=\\\"{{ vm.columns.length + 1 }}\\\" class=empty-state>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.NO_MY_ASSIGNMENTS\\' | translate }}</td></tr><tr ng-repeat-start=\\\"section in [{key: \\'active\\', label: \\'Active Offices\\'}, {key: \\'inactive\\', label: \\'Inactive Offices\\'}] track by section.key\\\" class=clinical-monitoring-office-section-row><td colspan=\\\"{{ vm.columns.length + 1 }}\\\"><button type=button class=clinical-monitoring-office-section-toggle ng-click=vm.toggleLifecycleSection(section.key)><span>{{ section.label }} ({{ vm.groupedSortedAssignments()[section.key].length }})</span> <i class=fa ng-class=\\\"vm.isLifecycleSectionExpanded(section.key) ? \\'fa-chevron-down\\' : \\'fa-chevron-right\\'\\\"></i></button></td></tr><tr ng-if=\\\"vm.isLifecycleSectionExpanded(section.key) && vm.groupedSortedAssignments()[section.key].length === 0\\\" class=clinical-monitoring-office-section-empty-row><td colspan=\\\"{{ vm.columns.length + 1 }}\\\">No {{ section.label | lowercase }}</td></tr><tr ng-repeat-start=\\\"office in (vm.isLifecycleSectionExpanded(section.key) ? vm.groupedSortedAssignments()[section.key] : []) track by office.office_id\\\" id=clinical-monitoring-my-assignment-{{$index}} class=clinical-monitoring-my-assignment-row ng-class=\\\"{\\n                  \\'clinical-monitoring-my-assignment-card-selected\\': vm.isSelected(office),\\n                  \\'clinical-monitoring-my-assignment-card-switching\\': vm.isSwitching(office),\\n                  \\'clinical-monitoring-my-assignment-row-expanded\\': vm.isExpanded(office),\\n                  \\'clinical-monitoring-my-assignment-row-inactive\\': office.isInactiveOffice\\n                }\\\" ng-click=vm.selectAssignment(office)><td class=clinical-monitoring-my-assignment-expander-cell><button type=button class=clinical-monitoring-my-assignment-expander ng-if=office.officeDetails.length ng-click=\\\"vm.toggleDetails(office); $event.stopPropagation()\\\" aria-label=\\\"Toggle office details\\\"><i class=fa ng-class=\\\"vm.isExpanded(office) ? \\'fa-chevron-down\\' : \\'fa-chevron-right\\'\\\"></i></button></td><td class=clinical-monitoring-my-assignment-practice-cell><div class=cell-content><div class=clinical-monitoring-my-assignment-practice>{{ office.enterprise_customer_name }}</div><div class=clinical-monitoring-my-assignment-office>{{ office.office_name }} <span class=clinical-monitoring-office-status-badge ng-if=office.isInactiveOffice>Inactive</span></div></div></td><td class=clinical-monitoring-my-assignment-pills-cell><div class=cell-content><div class=clinical-monitoring-my-assignment-pills ng-if=office.assignmentSummaryItems.length><span class=clinical-monitoring-my-assignment-pill ng-repeat=\\\"assignment in office.assignmentSummaryItems track by assignment.id\\\"><span class=clinical-monitoring-my-assignment-pill-label>{{ assignment.label }}</span> <span class=clinical-monitoring-my-assignment-pill-meta ng-if=assignment.daysText>{{ assignment.daysText }}</span></span></div><span ng-if=!office.assignmentSummaryItems.length>—</span></div></td><td class=clinical-monitoring-my-assignment-numeric-cell><div class=cell-content><i ng-show=\\\"vm.isMetricLoading(office, \\'rpm_patient_count\\')\\\" class=\\\"fa fa-spinner fa-spin\\\"></i> <span ng-show=\\\"!vm.isMetricLoading(office, \\'rpm_patient_count\\')\\\">{{ vm.getMetricDisplayValue(office, \\'rpm_patient_count\\') }}</span></div></td><td class=clinical-monitoring-my-assignment-numeric-cell><div class=cell-content><i ng-show=\\\"vm.isMetricLoading(office, \\'ccm_patient_count\\')\\\" class=\\\"fa fa-spinner fa-spin\\\"></i> <span ng-show=\\\"!vm.isMetricLoading(office, \\'ccm_patient_count\\')\\\">{{ vm.getMetricDisplayValue(office, \\'ccm_patient_count\\') }}</span></div></td><td class=clinical-monitoring-my-assignment-numeric-cell><div class=cell-content><i ng-show=\\\"vm.isMetricLoading(office, \\'new_reading_patient_count\\')\\\" class=\\\"fa fa-spinner fa-spin\\\"></i> <span ng-show=\\\"!vm.isMetricLoading(office, \\'new_reading_patient_count\\')\\\">{{ vm.getMetricDisplayValue(office, \\'new_reading_patient_count\\') }}</span></div></td><td class=clinical-monitoring-my-assignment-numeric-cell><div class=cell-content><i ng-show=\\\"vm.isMetricLoading(office, \\'undocumented_btr_patient_count\\')\\\" class=\\\"fa fa-spinner fa-spin\\\"></i> <span ng-show=\\\"!vm.isMetricLoading(office, \\'undocumented_btr_patient_count\\')\\\">{{ vm.getMetricDisplayValue(office, \\'undocumented_btr_patient_count\\') }}</span></div></td><td class=clinical-monitoring-my-assignment-numeric-cell><div class=cell-content><i ng-show=\\\"vm.isMetricLoading(office, \\'new_ccm_patient_count\\')\\\" class=\\\"fa fa-spinner fa-spin\\\"></i> <span ng-show=\\\"!vm.isMetricLoading(office, \\'new_ccm_patient_count\\')\\\">{{ vm.getMetricDisplayValue(office, \\'new_ccm_patient_count\\') }}</span></div></td><td ng-if=vm.showLastActivity class=clinical-monitoring-my-assignment-last-accessed-cell><div class=cell-content>{{ office.formattedLastActivityAt }}</div></td></tr><tr ng-repeat-end ng-if=\\\"vm.isExpanded(office) && office.officeDetails.length\\\" class=clinical-monitoring-my-assignment-details-row><td></td><td colspan=\\\"{{ vm.columns.length }}\\\"><div class=clinical-monitoring-my-assignment-details><div class=clinical-monitoring-my-assignment-section-label>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.OFFICE_DETAILS\\' | translate }}</div><div class=clinical-monitoring-my-assignment-detail-items><div class=clinical-monitoring-my-assignment-detail-item ng-repeat=\\\"detail in office.officeDetails track by detail.id\\\"><span class=clinical-monitoring-my-assignment-dot></span> <span class=clinical-monitoring-my-assignment-detail-label ng-if=detail.label>{{ detail.label }}:</span> <a ng-if=detail.href class=clinical-monitoring-my-assignment-detail-value ng-href=\\\"{{ detail.href }}\\\" target=_blank rel=\\\"noopener noreferrer\\\">{{ detail.value }}</a> <span ng-if=!detail.href class=clinical-monitoring-my-assignment-detail-value>{{ detail.value }}</span></div></div></div></td></tr><tr ng-repeat-end ng-if=false></tr></tbody></table></div></div></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/clinical-monitoring.html\",\"<div class=clinical-monitoring-page><h1>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.HEADER\\' | translate }}</h1><p>{{ \\'PORTAL.ENTERPRISE.CLINICAL_ASSIGNMENTS.SUBHEADER\\' | translate }}</p><div class=clinical-monitoring-tabs><uib-tabset active=vm.activeTab><uib-tab index=\\\"\\'my-assignments\\'\\\" classes=clinical-monitoring-tab select=\\\"vm.selectTab(\\'my-assignments\\')\\\" heading=\\\"{{ vm.getMyAssignmentsTabHeading() | translate }}\\\"><clinical-monitoring-my-assignments ng-if=vm.shouldRenderMyAssignmentsTab() features=vm.features user=vm.user></clinical-monitoring-my-assignments></uib-tab><uib-tab ng-if=vm.showCoverageTab() index=\\\"\\'coverage\\'\\\" classes=clinical-monitoring-tab select=\\\"vm.selectTab(\\'coverage\\')\\\" heading=\\\"{{ vm.getCoverageTabHeading() | translate }}\\\"><clinical-monitoring-coverage ng-if=vm.shouldRenderCoverageTab() user=vm.user can-edit-clinical-monitoring=vm.canEditClinicalMonitoring></clinical-monitoring-coverage></uib-tab><uib-tab index=\\\"\\'assignments\\'\\\" classes=clinical-monitoring-tab select=\\\"vm.selectTab(\\'assignments\\')\\\" heading=\\\"{{ vm.getAssignmentsTabHeading() | translate }}\\\"><clinical-assignments ng-if=vm.shouldRenderAssignmentsTab() user=vm.user can-edit-clinical-monitoring=vm.canEditClinicalMonitoring></clinical-assignments></uib-tab><uib-tab index=\\\"\\'clinicians\\'\\\" classes=clinical-monitoring-tab select=\\\"vm.selectTab(\\'clinicians\\')\\\" heading=\\\"{{ vm.getCliniciansTabHeading() | translate }}\\\"><clinical-monitoring-clinicians ng-if=vm.shouldRenderCliniciansTab() user=vm.user can-edit-clinical-monitoring=vm.canEditClinicalMonitoring on-open-clinician=vm.goToClinician(userId)></clinical-monitoring-clinicians></uib-tab></uib-tabset></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/coverage-modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal clinical-monitoring-coverage-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=modal-body><form name=modalOptions.payload.coverageForm class=\\\"top-label-form clinical-monitoring-coverage-form\\\" novalidate><div class=form-group><label for=clinical-monitoring-coverage-clinician>Clinician Out</label><input ng-if=modalOptions.payload.isEditing id=clinical-monitoring-coverage-clinician type=text class=form-control ng-value=modalOptions.payload.selectedClinician.display_name readonly><ui-select ng-if=!modalOptions.payload.isEditing id=clinical-monitoring-coverage-clinician theme=bootstrap ng-model=modalOptions.payload.selectedClinician on-select=\\\"modalOptions.payload.selectedClinician = $item; modalOptions.payload.user_id = $item.user_id; modalOptions.payload.loadAssignments()\\\"><ui-select-match placeholder=\\\"Search clinician\\\">{{$select.selected.display_name}}</ui-select-match><ui-select-choices repeat=\\\"option in modalOptions.payload.lookupOptions | filter: $select.search track by option.user_id\\\" refresh=modalOptions.payload.searchClinicians($select.search) refresh-delay=300><span>{{ option.display_name }}</span></ui-select-choices></ui-select></div><div class=form-group><label for=clinical-monitoring-coverage-reason>Reason</label><select class=form-control id=clinical-monitoring-coverage-reason ng-model=modalOptions.payload.reason_type><option value=sick>Sick</option><option value=vacation>Vacation</option><option value=training>Training</option><option value=leave>Leave</option><option value=emergency>Emergency</option><option value=other>Other</option></select></div><div class=form-group><label for=clinical-monitoring-coverage-starts-on>Starts On</label><input id=clinical-monitoring-coverage-starts-on type=date class=form-control ng-model=modalOptions.payload.starts_on min=\\\"{{ modalOptions.payload.minimumCoverageDate }}\\\" ng-change=modalOptions.payload.syncCoverageWindow()></div><div class=form-group><label for=clinical-monitoring-coverage-ends-on>Ends On</label><input id=clinical-monitoring-coverage-ends-on type=date class=form-control ng-model=modalOptions.payload.ends_on min=\\\"{{ modalOptions.payload.minimumCoverageDate }}\\\" ng-change=modalOptions.payload.syncCoverageWindow()></div><div class=form-group><label for=clinical-monitoring-coverage-note>Note</label><textarea id=clinical-monitoring-coverage-note class=form-control ng-model=modalOptions.payload.note></textarea></div><div class=\\\"alert alert-info\\\" ng-if=modalOptions.payload.getAssignmentsStateMessage()>{{ modalOptions.payload.getAssignmentsStateMessage() }}</div><div ng-if=modalOptions.payload.affectedAssignments.length><table class=table><thead><tr><th>Office</th><th>Type</th><th>Current</th><th>Coverage</th></tr></thead><tbody><tr ng-repeat=\\\"assignment in modalOptions.payload.affectedAssignments track by assignment.clinical_monitoring_assignment_id\\\"><td>{{ assignment.office_name }}</td><td>{{ assignment.assignment_type_label || assignment.assignment_type }}</td><td>{{ assignment.current_provider_name }}</td><td><select class=form-control ng-model=assignment.user_id><option value=\\\"\\\">Select covering clinician</option><option ng-repeat=\\\"option in assignment.eligibleUsers track by option.user_id\\\" value=\\\"{{ option.user_id }}\\\">{{ option.label }}</option></select></td></tr></tbody></table></div></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=clinical-monitoring-coverage-cancel type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=clinical-monitoring-coverage-submit type=button class=\\\"btn btn-primary\\\" ng-disabled=!modalOptions.payload.canSubmit() ng-click=modalOptions.ok(modalOptions.payload) promise-btn=modalOptions.payload.submitPromise>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/licensed-states-edit.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal clinical-monitoring-license-modal\\\"><div class=\\\"body full-width one-column\\\"><div class=row><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div></div><div class=clinical-monitoring-license-list><label class=checkbox-inline ng-repeat=\\\"stateCode in modalOptions.payload.stateOptions track by stateCode\\\"><input type=checkbox ng-model=modalOptions.payload.selections[stateCode]> {{ stateCode }}</label></div></div><div class=modal-footer><button id=clinical-monitoring-detail-select-all-licenses type=button class=\\\"btn btn-default btn-sm clinical-monitoring-license-select-all\\\" ng-click=modalOptions.payload.selectAllStates()>Select All</button> <button ng-if=modalOptions.closeButtonText type=button id=clinical-monitoring-detail-cancel-licenses ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=clinical-monitoring-detail-save-licenses type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok() promise-btn=modalOptions.payload.submitPromise>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/clinical-monitoring/remove-clinician-confirmation.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal clinical-monitoring-remove-modal\\\"><div class=\\\"body full-width one-column\\\"><div class=row><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div></div><p id=clinical-monitoring-remove-confirmation-copy>{{ modalOptions.payload.clinicianName || \\'This clinician\\' }} will be removed from the clinical monitoring team. This also removes all of their clinical monitoring assignments from every office.</p><label class=checkbox-inline for=clinical-monitoring-remove-acknowledge><input id=clinical-monitoring-remove-acknowledge type=checkbox ng-model=modalOptions.payload.acknowledged> I acknowledge</label></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=clinical-monitoring-remove-cancel type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=clinical-monitoring-remove-confirm type=button class=\\\"btn btn-danger\\\" ng-disabled=!modalOptions.payload.acknowledged ng-click=modalOptions.ok(modalOptions.payload)>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/five9-inbound-resolution/five9-inbound-resolution.modal.html\",\"<div class=modal-header><h3 class=modal-title>Incoming Five9 call</h3></div><div class=modal-body><p ng-if=\\\"modal.lookupStatus === \\'multiple_matches\\'\\\">Multiple patients match {{ modal.maskedPhone }}. Select the correct patient before associating this call.</p><p ng-if=\\\"modal.lookupStatus === \\'no_match\\'\\\">No patient was found for {{ modal.maskedPhone }}.</p><p ng-if=\\\"modal.lookupStatus === \\'lookup_failed\\'\\\">Automatic patient lookup could not be completed. Search for the patient before associating this call.</p><div class=five9-inbound-candidates ng-if=modal.candidates.length><label class=five9-inbound-candidate ng-repeat=\\\"candidate in modal.candidates track by candidate.id\\\"><input type=radio name=five9InboundPatient ng-model=modal.selectedPatientId ng-value=candidate.id> <span>{{ candidate.first_name }} {{ candidate.last_name }} <small ng-if=candidate.services.length>— {{ candidate.services.join(\\', \\') }}</small></span></label></div><button type=button class=\\\"btn btn-link five9-inbound-search-toggle\\\" ng-if=\\\"(modal.lookupStatus === \\'no_match\\' || modal.lookupStatus === \\'lookup_failed\\') && !modal.searchMode\\\" ng-click=modal.beginSearch()>Search Patient</button><form ng-if=modal.searchMode ng-submit=modal.search()><label for=five9-inbound-patient-search>Search patients</label><div class=input-group><input id=five9-inbound-patient-search class=form-control type=search ng-model=modal.searchQuery autocomplete=off placeholder=\\\"Name or phone\\\" aria-describedby=five9-inbound-search-help> <span class=input-group-btn><button class=\\\"btn btn-default\\\" type=submit ng-disabled=modal.searching>Search</button></span></div><p id=five9-inbound-search-help class=help-block>Enter at least two characters.</p><p class=text-danger ng-if=modal.searchError>{{ modal.searchError }}</p></form><p class=text-danger ng-if=modal.associateError>{{ modal.associateError }}</p></div><div class=modal-footer><button type=button class=\\\"btn btn-link\\\" ng-click=modal.dismiss()>Not Now</button> <button type=button class=\\\"btn btn-primary\\\" ng-if=modal.candidates.length ng-disabled=\\\"!modal.selectedPatientId || modal.associating\\\" ng-click=modal.associate()>Associate Patient</button></div>\");\n$templateCache.put(\"app/components/portal/five9-post-call-prompt/five9-post-call-prompt.modal.html\",\"<div class=\\\"modal-wrapper five9-post-call-prompt\\\" qa-id=five9-post-call-prompt><div class=modal-header><h4 class=modal-title>{{ modal.headerText }}</h4></div><div class=modal-body><p ng-if=!modal.showAllocation>{{ modal.bodyText }}</p><p ng-if=modal.showAllocation>{{ modal.allocationBodyText }}</p><p class=text-muted ng-if=modal.patientName><strong>{{ modal.patientName }}</strong></p><div class=five9-post-call-allocation ng-if=modal.showAllocation><label for=five9-post-call-rpm-minutes>{{ modal.rpmMinutesText }}</label><select id=five9-post-call-rpm-minutes class=form-control ng-model=modal.rpmMinutes ng-options=\\\"minutes as minutes for minutes in modal.minuteOptions\\\" ng-change=\\\"modal.updateAllocation(\\'RPM\\')\\\" qa-id=five9-post-call-rpm-minutes><option value=\\\"\\\">Select minutes</option></select><label for=five9-post-call-ccm-minutes>{{ modal.ccmMinutesText }}</label><select id=five9-post-call-ccm-minutes class=form-control ng-model=modal.ccmMinutes ng-options=\\\"minutes as minutes for minutes in modal.minuteOptions\\\" ng-change=\\\"modal.updateAllocation(\\'CCM\\')\\\" qa-id=five9-post-call-ccm-minutes><option value=\\\"\\\">Select minutes</option></select></div></div><div class=\\\"modal-footer five9-post-call-actions\\\"><button type=button class=\\\"btn btn-secondary pull-left\\\" ng-click=modal.dismiss() qa-id=five9-post-call-not-now>{{ modal.notNowText }}</button> <button type=button class=\\\"btn btn-primary\\\" ng-if=\\\"modal.showRpm && !modal.showAllocation\\\" ng-click=\\\"modal.choose(\\'RPM\\')\\\" qa-id=five9-post-call-add-rpm promise-btn>{{ modal.addRpmText }}</button> <button type=button class=\\\"btn btn-primary\\\" ng-if=\\\"modal.showCcm && !modal.showAllocation\\\" ng-click=\\\"modal.choose(\\'CCM\\')\\\" qa-id=five9-post-call-add-ccm promise-btn>{{ modal.addCcmText }}</button> <button type=button class=\\\"btn btn-primary\\\" ng-if=modal.showAllocation ng-disabled=!modal.canSubmitAllocation() ng-click=modal.submitAllocation() qa-id=five9-post-call-log-allocation promise-btn>{{ modal.logTimeText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/five9-proxy-runtime/five9-proxy-runtime.html\",\"<section class=five9-floating-runtime ng-if=vm.trustedProxyUrl ng-class=\\\"{\\'expanded\\': vm.expanded, \\'minimized\\': !vm.expanded}\\\"><div id=five9-floating-panel class=five9-floating-panel role=region aria-label=Five9 ng-class=\\\"{\\'is-expanded\\': vm.expanded}\\\"><iframe title=\\\"Five9 runtime\\\" ng-src=\\\"{{ vm.trustedProxyUrl }}\\\" allow=\\\"microphone; autoplay\\\"></iframe></div><button type=button class=five9-floating-launcher ng-class=vm.launcherClass() ng-click=vm.togglePanel() aria-expanded=\\\"{{ vm.expanded }}\\\" aria-controls=five9-floating-panel aria-label=\\\"{{ vm.launcherLabel() }}\\\" qa-id=five9-floating-launcher><span class=five9-floating-icon aria-hidden=true></span> <span class=five9-floating-label>{{ vm.launcherText() }}</span></button></section>\");\n$templateCache.put(\"app/components/portal/navbar/navbar.html\",\"<nav class=\\\"ibeat-left-navbar navbar navbar-fixed-bottom\\\"><div class=container><!-- Brand and toggle get grouped for better mobile display --><div class=navbar-header><a class=navbar-brand ui-sref=enterprise.enrollments ng-if=vm.user.user_profile.is_enterprise_admin>{{ \\'GLOBAL.BRAND\\' | translate }}</a></div><!-- Navigation --><div class=nav-wrapper><ul class=\\\"nav navbar-nav\\\"><li><a ui-sref=enterprise.dashboard id=navbar-dashboard ui-sref-active=active>{{ \\'NAV.PRIMARY.ITEMS.DASHBOARD\\' | translate }}</a></li><li ng-show=\\\"vm.enrollmentCount>0\\\"><a authorize=role:administrative ui-sref=enterprise.enrollments-incomplete id=navbar-enrollments-incomplete ui-sref-active=active>{{ \\'NAV.PRIMARY.ITEMS.INCOMPLETE_ENROLLMENTS\\' | translate }}</a></li><li><a ui-sref=enterprise.enrollments authorize=role:administrative ui-sref-active=active id=navbar-enrollments>{{ \\'NAV.PRIMARY.ITEMS.ENROLLMENTS\\' | translate }}</a></li><li><a ui-sref=enterprise.patients id=navbar-patients ng-class=\\\"{\\'active\\': vm.reportingIsActive()}\\\">{{ \\'NAV.PRIMARY.ITEMS.PATIENT_REPORTING\\' | translate }}</a></li><li><a ui-sref=enterprise.claims authorize=\\\"role:biller, role:clinical\\\" ui-sref-active=active id=navbar-claims>{{ \\'NAV.PRIMARY.ITEMS.CLAIMS\\' | translate }}</a></li><li><a ui-sref=enterprise.practicesettings ui-sref-active=active id=navbar-practice-settings>{{ \\'NAV.PRIMARY.ITEMS.PRACTICE_SETTINGS\\' | translate }}</a></li><li class=nav-divider ng-if=vm.showClinicalMonitoringNav()></li><li ng-if=vm.showClinicalMonitoringNav()><a ui-sref=portal.clinical-monitoring ui-sref-active=active id=navbar-clinical-monitoring>{{ \\'NAV.PRIMARY.ITEMS.CLINICAL_MONITORING\\' | translate }}</a></li><transcription-notifications ng-show=vm.showNotifications user=vm.user enterprise-customer-id=vm.user.user_profile.enterprise_customer_id variant=navbar></transcription-notifications><current-user user=vm.user enterprise-customer=vm.enterpriseCustomer></current-user></ul></div></div></nav>\");\n$templateCache.put(\"app/components/setup/complete/complete.html\",\"<div id=complete class=\\\"panel one-column\\\"><div class=inner-panel><section><h2>{{ \\'SETUP.COMPLETE.BODY.HEADER\\' | translate }}</h2><p class=subheader>{{ ::vm.message }}</p><button id=next-btn type=button class=\\\"btn btn-primary\\\" ui-sref={{::vm.nextState}}>{{ \\'GLOBAL.BUTTONS.FINISH\\' | translate }}</button></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-agreements/enterprise-agreements.html\",\"<div id=enterprise-agreements class=\\\"panel one-column\\\"><div us-spinner spinner-theme=black spinner-on=vm.isLoading><div class=header><h2>{{\\'PORTAL.ENTERPRISE.AGREEMENTS.BODY.HEADER\\' | translate}}</h2><p class=subheader>{{\\'PORTAL.ENTERPRISE.AGREEMENTS.BODY.COPY\\' | translate}}</p><hr></div><div id=agreements></div><div class=footer><are-you-sure-modal header-trans=\\\"\\\" body-trans=PORTAL.ENTERPRISE.AGREEMENTS.BODY.DISMISSED_COPY action-btn-trans=OK action-callback=vm.completeSigningLater() hide-cancel=true extra-class=incomplete-modal short-circuit-if=false><button type=button class=\\\"btn btn-default\\\">{{\\'PORTAL.ENTERPRISE.AGREEMENTS.BUTTONS.LATER\\' | translate}}</button></are-you-sure-modal></div></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-bank-account/enterprise-bank-account.html\",\"<div id=enterprise-bank-account class=\\\"panel one-column\\\" ng-hide=vm.hidePanel><div class=inner-panel><section><h2>{{ \\'SETUP.BANK_ACCOUNT.BODY.HEADER\\' | translate }}</h2><p class=subheader>{{ \\'SETUP.BANK_ACCOUNT.BODY.COPY\\' | translate }}</p><p class=subheader>{{ \\'SETUP.BANK_ACCOUNT.BODY.COPY2\\' | translate }}</p><form name=failureForm ng-submit=vm.addBankAccountFailure()><div class=form-inputs-wrapper><button id=failure-btn type=submit class=\\\"btn btn-primary\\\" tab-index=1 promise-btn=vm.failurePromise>{{ \\'SETUP.BANK_ACCOUNT.BUTTONS.FAILURE\\' | translate }}</button></div><form-footer num-btns=1><button id=back-btn type=button class=\\\"btn btn-default pull-left\\\" tab-index=2 ng-click=vm.back() promise-btn>{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}</button></form-footer></form></section></div></div><add-bank-account user=vm.user enable-microdeposits=true on-success=\\\"vm.onSuccess({public_token: public_token, metadata: metadata})\\\" on-load=\\\"vm.onLoad({linkHandler: linkHandler})\\\" on-event=\\\"vm.onEvent({eventName: eventName, metadata: metadata})\\\" on-exit=\\\"vm.onExit({err: err, metadata: metadata})\\\"></add-bank-account>\");\n$templateCache.put(\"app/components/setup/enterprise-biller-setup/enterprise-biller-setup.html\",\"<div id=enterprise-biller-setup class=\\\"panel one-column\\\"><div class=inner-panel><section><h1>{{\\'ENTERPRISE_SETUP.BILLER.BODY.HEADER\\' | translate}}</h1><p class=subheader>{{\\'ENTERPRISE_SETUP.BILLER.BODY.COPY\\' | translate}}</p><p class=\\\"subheader small\\\">{{\\'ENTERPRISE_SETUP.BILLER.BODY.COPY2\\' | translate}}</p><form name=billerChoiceForm><div class=form-inputs-wrapper><div class=\\\"form-group radio-btns\\\"><label class=\\\"radio-btns-question-label required\\\">{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.FIELDS.BILLER_QUESTION\\' | translate }}</label><div class=radio><label><input type=radio name=biller-choice id=biller-choice-true ng-value=true tabindex=3 ng-model=vm.billerChoice.self required> {{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.FIELDS.BILLER_CHOICE\\' | translate }}</label></div><div class=radio><label><input type=radio name=biller-choice id=biller-choice-false ng-value=false tabindex=4 ng-model=vm.billerChoice.self required> {{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.FIELDS.BILLER_CHOICE2\\' | translate }}</label></div></div></div><form-footer num-btns=1><button id=next-btn ng-if=vm.billerChoice.self type=submit class=\\\"btn btn-primary\\\" tab-index=4 ng-disabled=billerForm.$invalid ui-sref={{::vm.skipState}}>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form><form name=billerForm class=top-label-form ng-submit=vm.save() ng-if=!vm.billerChoice.self novalidate><div class=form-inputs-wrapper><div class=row><text-input class-name=name-first form=billerForm model=vm.biller.name_first label-txt=\\\"{{ \\'ENTERPRISE_SETUP.BILLER.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=name-first input-id=name-first height-class=input-sm tab-index=1 is-required=true></text-input><text-input class-name=name-last form=billerForm model=vm.biller.name_last label-txt=\\\"{{ \\'ENTERPRISE_SETUP.BILLER.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=name-last input-id=name-last height-class=input-sm tab-index=2 is-required=true></text-input></div><div class=row><text-input class-name=email field-type=email form=billerForm model=vm.biller.email label-txt=\\\"{{ \\'ENTERPRISE_SETUP.BILLER.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email tab-index=3 regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages is-required=true></text-input><text-input class-name=biller-phone form=billerForm model=vm.biller.phone_1_number mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt=\\\"{{ \\'ENTERPRISE_SETUP.BILLER.FIELDS.PHONE\\' | translate }}\\\" input-name=phone input-id=phone tab-index=4 height-class=input-sm is-required=true></text-input></div></div><form-footer num-btns=1><button id=next-btn type=submit class=\\\"btn btn-primary\\\" tab-index=4 ng-disabled=billerForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-choose-devices/enterprise-choose-devices.html\",\"<div id=enterprise-choose-devices class=\\\"panel one-column\\\"><setup-nav step=1></setup-nav><div class=inner-panel><section><h1>{{\\'ENTERPRISE_SETUP.CHOOSE_DEVICES.BODY.HEADER\\' | translate}}</h1><p class=subheader>{{\\'ENTERPRISE_SETUP.CHOOSE_DEVICES.BODY.COPY\\' | translate}}</p><form name=chooseDevicesForm class=top-label-form ng-submit=vm.createEvaluationEnrollment() novalidate><card-wrapper class=row><card class=col-md-3 ng-class=\\\"{\\'selected\\': vm.evaluationDevices[deviceType.id]}\\\" card-name=device-card ng-repeat=\\\"deviceType in vm.sortedDeviceTypes track by $index\\\"><div class=device-img-wrapper><img ng-src={{::deviceType.photo_url}} class=\\\"img-device {{::deviceType.category.toLowerCase()}}\\\"></div><div class=device-info-wrapper><checkbox-input class-name={{::deviceType.category.toLowerCase()}} form=chooseDevicesForm model=vm.evaluationDevices[deviceType.id] input-name={{::deviceType.category.toLowerCase()}} input-id={{::deviceType.category.toLowerCase()}} tab-index={{$index}} label-txt={{deviceType.description}}></checkbox-input></div></card></card-wrapper><div class=coming-soon ng-show=\\\"vm.comingSoonDeviceTypes.length > 0\\\"><p class=\\\"row subheader\\\">Coming soon</p><div class=\\\"row device-list\\\"><div class=col-md-6 ng-repeat=\\\"deviceType in vm.comingSoonDeviceTypes track by $index\\\"><div class=row><div class=col-md-2><img ng-src={{::deviceType.photo_url}} class=\\\"img-device {{::deviceType.category.toLowerCase()}}\\\"></div><div class=\\\"col-md-10 device-title\\\">{{deviceType.description}}</div></div></div></div></div><h1>{{\\'ENTERPRISE_SETUP.CHOOSE_DEVICES.BODY.HEADER2\\' | translate}}</h1><p class=subheader>{{\\'ENTERPRISE_SETUP.CHOOSE_DEVICES.BODY.COPY2\\' | translate}}</p><div class=form-inputs-wrapper><div class=row><text-input class-name=practice-name class=col-md-12 field-type=text form=vm.practiceForm model=vm.practice.name label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRACTICE_NAME\\' | translate }}\\\" input-name=practice-name input-id=practice-name tab-index=1 auto-focus-ms=300 is-required=true></text-input></div><div class=row><text-input class-name=street1 class=col-md-6 form=vm.practiceForm model=vm.practice.address_street label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.STREET\\' | translate }}\\\" input-name=street1 input-id=street1 tab-index=2 is-required=true></text-input><text-input class-name=zip class=col-md-6 form=vm.practiceForm model=vm.practice.address_zipcode on-change=\\\"vm.onChange({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.ZIP\\' | translate }}\\\" input-name=zip input-id=zip tab-index=3 mask=99999 mask-placeholder=_____ is-required=true><p ng-if=vm.geocode.processing class=is-loading><span class=\\\"btn-spinner input-spinner\\\"></span></p></text-input></div><div class=row><text-input class-name=city class=col-md-6 form=vm.practiceForm model=vm.practice.address_city label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.CITY\\' | translate }}\\\" input-name=city input-id=city tab-index=4 is-required=true></text-input><select-input class-name=state class=col-md-6 form=vm.practiceForm model=vm.practice.address_state options-array=vm.stateOptionsArray label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.STATE\\' | translate }}\\\" input-name=state input-id=state tab-index=5 info-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE_DEFAULT\\' | translate }}\\\" is-required=true></select-input></div></div><form-footer num-btns=2><button id=back-btn class=\\\"btn btn-secondary\\\" type=button tabindex=7 ng-click=vm.back() promise-btn>{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}</button> <button id=next-btn type=submit class=\\\"btn btn-primary\\\" tabindex=7 ng-disabled=chooseDevicesForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-complete/enterprise-complete.html\",\"<div id=complete class=\\\"panel one-column\\\"><div class=inner-panel><section><h2>{{ \\'SETUP.COMPLETE.BODY.HEADER\\' | translate }}</h2><p class=subheader>{{ \\'SETUP.COMPLETE.BODY.COPY\\' | translate }}</p><button id=next-btn type=button class=\\\"btn btn-primary\\\" ui-sref={{::vm.nextState}}>{{ \\'GLOBAL.BUTTONS.DONE\\' | translate }}</button></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-credit-card/enterprise-credit-card.html\",\"<div id=enterprise-credit-card class=\\\"panel one-column\\\"><div class=inner-panel><section><h2>{{ \\'SETUP.CREDIT_CARD.BODY.HEADER\\' | translate }}</h2><!--<p class=\\\"subheader\\\">{{ \\'SETUP.CREDIT_CARD.BODY.COPY\\' | translate }}</p>--><div class=payment-form><form name=paymentForm class=top-label-form ng-submit=vm.paymentProcess()><div class=form-inputs-wrapper><div class=row><text-input class-name=name form=updateForm model=vm.payment.name label-txt=\\\"{{ \\'GLOBAL.CREDIT_CARD.FIELDS.NAME\\' | translate }}\\\" input-id=name input-name=name></text-input></div><credit-card-fields stripe=vm.stripe card=vm.card></credit-card-fields></div><form-footer num-btns=2><button id=back-btn class=\\\"btn btn-default\\\" type=button tabindex=7 ui-sref={{::vm.prevState}}>{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}</button> <button id=next-btn type=submit class=\\\"btn btn-primary\\\" tabindex=6 promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></div></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-learn-revenue/enterprise-learn-revenue.html\",\"<div id=enterprise-learn-revenue class=\\\"panel one-column\\\"><div class=inner-panel><section><h1>{{\\'ENTERPRISE_SETUP.REVENUE.BODY.HEADER\\' | translate}}</h1><p class=subheader>{{\\'ENTERPRISE_SETUP.REVENUE.BODY.COPY\\' | translate}}</p><div class=num-patients><p class=num-patients-label>{{ \\'ENTERPRISE_SETUP.REVENUE.FIELDS.REVENUE\\' | translate }}</p><text-input class-name=num-patients field-type=number form=vm.learnRevenueForm model=vm.inputNumPatients min-len=0 input-name=num-patients input-id=num-patients><button class=\\\"btn btn-primary\\\" type=button ng-click=vm.recalculate()>Submit</button></text-input></div><div id=table-wrapper><table class=practice-revenue><thead><tr><th></th><th>Medicare Reimbursement and Frequency</th><th class=\\\"hidden-xs print-visible\\\">50 Patients</th><th class=\\\"hidden-xs print-visible\\\">250 Patients</th><th>{{vm.numPatients}} Patients</th></tr></thead><tbody><tr><td class=code-cell><span class=code>CPT 99453</span> <span class=code-description>RPM setup and patient education</span></td><td>{{::vm.setupPrice / 100 | currency}} - one time</td><td class=\\\"hidden-xs print-visible\\\">{{::vm.calculateRevenue(vm.setupPrice, 50, 1) / 100 | currency:\\'$\\':0}}</td><td class=\\\"hidden-xs print-visible\\\">{{::vm.calculateRevenue(vm.setupPrice, 250, 1) / 100 | currency:\\'$\\':0}}</td><td>{{vm.calculateRevenue(vm.setupPrice, vm.numPatients, 1) / 100 | currency:\\'$\\':0}}</td></tr><tr><td class=code-cell><span class=code>CPT 99457</span> <span class=code-description>Review, interpretation, and basic communication of RPM data insights</span> <span class=code-description-info>Up to <strong>{{::vm.calculateRevenue(vm.reportingExtendedPrice, 2, 1) / 100 | currency:\\'$\\':2}} a month per patient</strong> additional revenue opportunity (each additional 20 minutes up to 2x) with <strong>CPT 99458</strong></span></td><td>{{::vm.reportingPrice / 100 | currency}} - monthly</td><td class=\\\"hidden-xs print-visible\\\">{{::vm.calculateRevenue(vm.reportingPrice, 50, 12) / 100 | currency:\\'$\\':0}}</td><td class=\\\"hidden-xs print-visible\\\">{{::vm.calculateRevenue(vm.reportingPrice, 250, 12) / 100 | currency:\\'$\\':0}}</td><td>{{vm.calculateRevenue(vm.reportingPrice, vm.numPatients, 12) / 100 | currency:\\'$\\':0}}</td></tr><tr><td class=code-cell><span class=code>CPT 99454</span> <span class=code-description>RPM devices and services</span></td><td>{{::vm.servicePrice / 100 | currency}} - monthly</td><td class=\\\"hidden-xs print-visible\\\">{{::vm.calculateRevenue(vm.servicePrice, 50, 12) / 100 | currency:\\'$\\':0}}</td><td class=\\\"hidden-xs print-visible\\\">{{::vm.calculateRevenue(vm.servicePrice, 250, 12) / 100 | currency:\\'$\\':0}}</td><td>{{vm.calculateRevenue(vm.servicePrice, vm.numPatients, 12) / 100 | currency:\\'$\\':0}}</td></tr><tr><td class=code-cell><span class=code>100Plus Service Fee</span> <span class=code-description>Covers medical devices, device test consumables, shipping, cellular services, hosting, 100Plus Provider Portal, and customer support.</span></td><td>{{::vm.monthlyFeePerPatient / 100 | currency}} - monthly per patient</td><td class=\\\"hidden-xs print-visible bg-gray\\\"></td><td class=\\\"hidden-xs print-visible bg-gray\\\"></td><td class=bg-gray></td></tr><tr class=revenue-totals><td><span class=code>Total Yearly RPM Revenue (100Plus Service Fee included)</span> <span class=code-description>Calculated using zipcode {{::vm.offices[0].address_zipcode}}</span></td><td></td><td class=\\\"hidden-xs print-visible\\\"><strong>{{::vm.calculateTotalAnnualRevenue(50) / 100 | currency:\\'$\\':0}}</strong></td><td class=\\\"hidden-xs print-visible\\\"><strong>{{::vm.calculateTotalAnnualRevenue(250) / 100 | currency:\\'$\\':0}}</strong></td><td><strong>{{vm.calculateTotalAnnualRevenue(vm.numPatients) / 100 | currency:\\'$\\':0}}</strong></td></tr></tbody></table></div><a ng-click=\\\"vm.print(\\'table-wrapper\\')\\\" class=\\\"print-document pull-right\\\"><i class=\\\"fa fa-print\\\"></i> Print revenue document</a><form name=vm.learnRevenueForm class=top-label-form ng-submit=vm.goToNext() novalidate><form-footer num-btns=2><button id=back-btn class=\\\"btn btn-default\\\" type=button tabindex=4 ui-sref={{::vm.prevState}}>{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}</button> <button id=next-btn type=submit class=\\\"btn btn-primary\\\" tab-index=1 promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-offering/enterprise-offering.html\",\"<div id=enterprise-offering class=\\\"panel one-column\\\"><div class=inner-panel><section><h1>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.HEADER\\' | translate}}</h1><p class=subheader>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.COPY\\' | translate}}</p><form name=learnRevenueForm class=top-label-form ng-submit=vm.goToNext() novalidate><div class=our-offering><h4>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.ENROLLMENT.HEADER\\' | translate}}</h4><p ng-bind-html=\\\"\\'ENTERPRISE_SETUP.OFFERING.BODY.ENROLLMENT.COPY\\' | translate\\\"></p><h4>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.ADHERENCE.HEADER\\' | translate}}</h4><p>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.ADHERENCE.COPY\\' | translate}}</p><h4>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.DATA.HEADER\\' | translate}}</h4><p>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.DATA.COPY\\' | translate}}</p><h4>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.SUPPORT.HEADER\\' | translate}}</h4><p>{{\\'ENTERPRISE_SETUP.OFFERING.BODY.SUPPORT.COPY\\' | translate}}</p><img class=img-responsive src=assets/images/setup/enterprise-offering/provider-signup-offering-graphic@2x.2c107e36.jpg alt=\\\"100Plus Provider Web Portal\\\"></div><form-footer num-btns=2><button id=next-btn type=submit class=\\\"btn btn-primary\\\" tab-index=1 promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-payment-method/enterprise-payment-method.html\",\"<div id=enterprise-payment-method class=\\\"panel one-column\\\"><div class=inner-panel><section><a class=\\\"btn-skip btn\\\" id=skip-btn tabindex=3 ui-sref=setup-enterprise.complete>{{ \\'GLOBAL.BUTTONS.SKIP\\' | translate }}</a><h2>{{ \\'ENTERPRISE_SETUP.PAYMENT_METHOD.BODY.HEADER\\' | translate }}</h2><p class=subheader>{{ \\'ENTERPRISE_SETUP.PAYMENT_METHOD.BODY.COPY\\' | translate:vm.translateData }}</p><p class=subheader>{{ \\'ENTERPRISE_SETUP.PAYMENT_METHOD.BODY.COPY2\\' | translate }}</p><p class=subheader>{{ \\'ENTERPRISE_SETUP.PAYMENT_METHOD.BODY.COPY3\\' | translate }}</p><form id=paymentMethodForm class=top-label-form name=paymentMethodForm novalidate><div class=payment-actions><div class=bank><img class=img-responsive src=assets/images/global/icons/icon-bank@2x.7d917225.png alt=\\\"Payment information icon\\\"></div><div class=actions><button id=bank-btn type=submit class=\\\"btn btn-primary\\\" tabindex=1 ng-click=vm.isCreditPayment(false) ng-disabled=paymentMethodForm.$invalid promise-btn>{{ \\'ENTERPRISE_SETUP.PAYMENT_METHOD.BUTTONS.BANK\\' | translate }}</button> <a id=credit-btn type=submit tabindex=2 ng-click=vm.isCreditPayment(true) ng-disabled=paymentMethodForm.$invalid promise-btn>{{ \\'ENTERPRISE_SETUP.PAYMENT_METHOD.BUTTONS.CREDIT\\' | translate }}</a></div></div></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-practice/enterprise-practice.html\",\"<div id=enterprise-practice class=\\\"panel one-column\\\"><setup-nav step=2></setup-nav><div class=inner-panel><section><h1>{{\\'ENTERPRISE_SETUP.PRACTICE.BODY.HEADER\\' | translate}}</h1><p class=subheader>{{\\'ENTERPRISE_SETUP.PRACTICE.BODY.COPY\\' | translate}}</p><form name=vm.practiceForm class=\\\"form-inputs-wrapper top-label-form\\\" ng-submit=vm.save() novalidate><div class=row><select-input class-name=practice-spec form=vm.practiceForm model=vm.practice.practiceSpec options-array=::vm.practiceSpecialtiesOptions label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.PRACTICE_SPECIALTY\\' | translate }}\\\" input-name=practice-spec input-id=practice-spec info-txt=Select tab-index=1 is-required=true></select-input><text-input class-name=number-physicians form=vm.practiceForm model=vm.practice.number_of_physicians field-type=number min-len=0 placeholder-txt=Select regex={{::vm.positiveNumberRegex}} label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.NUMBER_PHYSICIANS\\' | translate }}\\\" input-name=number-physicians input-id=number-physicians tab-index=2 is-required=true></text-input><text-input class-name=primary-phone form=vm.practiceForm model=vm.practice.phone_1_number on-change=vm.onPhoneChange(model) mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" mask-options=\\\"{clearOnBlur: false}\\\" label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone tab-index=3 is-required=true></text-input><typeahead-input class-name=ehr-type-search form=vm.practiceForm model=vm.ehrTypeSearch on-select=\\\"vm.onEhrTypeSelect({id: item.id, model: model})\\\" tab-index=3.1 label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_PROVIDER\\' | translate }}\\\" input-name=ehr-type-search input-id=ehr-type-search typeahead-payload=vm.searchEhrTypes typeahead-field-name=name typeahead-json-node-name=name typeahead-limit=100 typeahead-min-length=3 typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\" is-required=true error-message-location=bottom></typeahead-input></div><div class=\\\"row setup-invitation-table-wrapper\\\"><table class=col-md-12><thead><tr><th>First Name</th><th>Last Name</th><th>Email</th><th>Phone</th><th>Role At Practice</th></tr></thead><tbody><tr><td>{{ vm.user.user_profile.name_first }}</td><td>{{ vm.user.user_profile.name_last }}</td><td>{{ vm.user.user_profile.email }}</td><td>{{ vm.user.user_profile.phone_1_number | bcTelephone:\\'format\\' }}</td><td><select-input class-name=practice-role form=vm.registrationForm model=vm.eUserProfile.practiceRole options-array=vm.practiceRolesOptions input-name=practice-role input-id=practice-role on-change=vm.onPracticeRoleChange() tab-index=4 is-required=true></select-input></td></tr><tr ng-repeat=\\\"invite in vm.providerInvites track by $index\\\"><td>{{ invite.name_first }}</td><td>{{ invite.name_last }}</td><td>{{ invite.email }}</td><td>-</td><td><select-input class-name=practice-role form=vm.registrationForm model=invite.practice_role_id options-array=vm.practiceRolesOptions input-name=practice-role input-id=practice-role on-change=vm.onPracticeRoleChange() tab-index=4 is-required=true></select-input></td><td><i class=\\\"fa fa-trash-o\\\" ng-click=vm.removeInvitation($index)></i></td></tr></tbody></table></div><div class=add-staff ng-if=!vm.showInvites ng-click=\\\"vm.showInvites = !vm.showInvites\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"Add another staff member\\\"> {{\\'SETUP.REGISTRATION.BUTTONS.ADD_STAFF\\' | translate}}</div><div class=add-staff ng-if=vm.showInvites ng-click=\\\"vm.showInvites = !vm.showInvites\\\"><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"Add another staff member\\\"> {{\\'SETUP.REGISTRATION.BUTTONS.DONE\\' | translate}}</div><form-footer num-btns=2><button id=back-btn class=\\\"btn btn-secondary\\\" type=button tabindex=9 ng-click=vm.back() promise-btn>{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}</button> <button id=next-btn type=submit class=\\\"btn btn-primary\\\" tabindex=10 ng-disabled=vm.practiceForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.FINISH\\' | translate }}</button></form-footer></form><form name=vm.providerInviteForm class=top-label-form ng-submit=vm.sendProviderInvite() ng-if=vm.showInvites novalidate><div class=form-inputs-wrapper ng-if=vm.showInvites><div class=row><text-input class-name=first-name form=vm.providerInviteForm model=vm.providerInvite.name_first label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=first-name input-id=first-name height-class=input-sm tab-index=11 is-required=true></text-input><text-input class-name=last-name form=vm.providerInviteForm model=vm.providerInvite.name_last label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=last-name input-id=last-name height-class=input-sm tab-index=12 is-required=true></text-input></div><div class=row><select-input class-name=invite-practice-role form=vm.providerInviteForm model=vm.providerInvite.practice_role_id options-array=::vm.practiceRolesOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDER_INVITE.FIELDS.PRACTICE_ROLE\\' | translate }}\\\" input-name=practice-role input-id=practice-role tab-index=13 is-required=true></select-input><text-input class-name=email field-type=text form=vm.providerInviteForm model=vm.providerInvite.email label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages tab-index=14 is-required=true></text-input></div></div><div class=form-footer ng-if=vm.showInvites><button type=button class=\\\"btn btn-primary pull-right\\\" ng-disabled=vm.providerInviteForm.$invalid ng-click=vm.addInvitation()>{{ \\'SETUP.REGISTRATION.BUTTONS.INVITE_STAFF\\' | translate }}</button></div></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-registration/enterprise-registration.html\",\"<div id=enterprise-registration class=\\\"panel one-column\\\"><setup-nav step=0></setup-nav><div class=inner-panel><section><!-- NOTE: launches on user trying to register with existing username --><notification-modal ng-if=vm.isExistingUsername header-trans=SETUP.REGISTRATION.MODALS.USERNAME_EXISTS.HEADER action-btn-trans=SETUP.REGISTRATION.MODALS.USERNAME_EXISTS.BUTTONS.LOGIN close-btn-trans=SETUP.REGISTRATION.MODALS.USERNAME_EXISTS.BUTTONS.EMAIL close-callback=vm.resetIsExistingUsername() action-callback=vm.goToLogin()></notification-modal><div><h1>{{ \\'ENTERPRISE_SETUP.REGISTRATION.BODY.HEADER2\\' | translate:vm.translateData }}</h1><p class=subheader>{{ \\'ENTERPRISE_SETUP.REGISTRATION.BODY.COPY2\\' | translate }}</p></div><form id=registrationForm class=top-label-form name=vm.registrationForm ng-submit=vm.createAccountWithoutSignature() novalidate><div class=form-inputs-wrapper><div class=row><text-input class-name=first-name form=vm.registrationForm model=vm.credentials.nameFirst label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=first-name input-id=first-name height-class=input-sm is-required=true></text-input><text-input class-name=last-name form=vm.registrationForm model=vm.credentials.nameLast label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=last-name input-id=last-name height-class=input-sm is-required=true></text-input></div><!-- <text-input class-name=\\\"npi\\\"\\n                      form=\\\"vm.registrationForm\\\"\\n                      model=\\\"vm.credentials.npi\\\"\\n                      label-txt=\\\"{{\\'ENTERPRISE_SETUP.WELCOME.FIELDS.NPI\\' | translate}}\\\"\\n                      input-name=\\\"npi\\\"\\n                      input-id=\\\"npi\\\"\\n                      min-len=\\\"10\\\"\\n                      max-len=\\\"10\\\"\\n                      mask=\\\"9999999999\\\"\\n                      mask-placeholder=\\\"__________\\\"\\n                      height-class=\\\"input-sm\\\"\\n                      addon-pre-icon=\\\"user-md\\\"></text-input> --><div class=row><text-input class-name=email field-type=email form=vm.registrationForm model=vm.credentials.email model-options=\\\"{ updateOn: \\'blur\\' }\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages is-required=true></text-input><text-input class-name=primary-phone form=vm.registrationForm model=vm.credentials.phone mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone is-required=true></text-input></div><div class=row><password-input class-name=\\\"password col-md-6\\\" form=vm.registrationForm model=vm.credentials.password label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PASSWORD\\' | translate }}\\\" input-name=password input-id=password on-keyup=\\\"vm.onPasswordChange({model: model})\\\" regex={{::vm.passwordRegex}} is-required=true></password-input></div><!-- PactSafe goes here --><div id=agreements></div></div><form-footer num-btns=2><span class=pull-left id=existing-account-btn>{{ \\'ACCOUNT.USER_TYPE.BODY.ALREADY_HAVE_ACCT\\' | translate }} <a class=form-footer-login-link href ng-click=vm.login()>{{ \\'ACCOUNT.USER_TYPE.BUTTONS.SIGN_IN\\' | translate }}</a> </span><button id=register-btn type=submit class=\\\"btn btn-primary\\\" ng-disabled=\\\"vm.registrationForm.$invalid || !vm.isAgreementChecked\\\" promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/enterprise-registration-invitation/enterprise-registration-invitation.html\",\"<div id=registration class=\\\"panel one-column\\\"><div class=inner-panel><section><!-- NOTE: launches on user trying to register with existing username --><notification-modal ng-if=vm.isExistingUsername header-trans=SETUP.REGISTRATION.MODALS.USERNAME_EXISTS.HEADER action-btn-trans=SETUP.REGISTRATION.MODALS.USERNAME_EXISTS.BUTTONS.LOGIN close-btn-trans=SETUP.REGISTRATION.MODALS.USERNAME_EXISTS.BUTTONS.EMAIL close-callback=vm.resetIsExistingUsername() action-callback=vm.goToLogin()></notification-modal><!-- NOTE: launches modal on trying to access an invalid invitation code--><notification-modal ng-if=vm.isExpiredInvitation body-trans=SETUP.REGISTRATION.MODALS.EXPIRED_INVITATION.HEADER action-btn-trans=SETUP.REGISTRATION.MODALS.EXPIRED_INVITATION.BUTTONS.CLOSE action-callback=vm.goToLogin() close-callback=vm.goToLogin()></notification-modal><div ng-if=\\\"!vm.credentials && !vm.isExpiredInvitation\\\"><h2>{{ \\'ENTERPRISE_SETUP.REGISTRATION.BODY.HEADER1\\' | translate }}</h2><p class=subheader>{{ \\'ENTERPRISE_SETUP.REGISTRATION.BODY.COPY1\\' | translate }}</p></div><div ng-if=vm.credentials><h2>{{ \\'ENTERPRISE_SETUP.INVITATION_REGISTRATION.BODY.HEADER1\\' | translate:vm.translationData }}</h2><p class=subheader>{{ \\'ENTERPRISE_SETUP.INVITATION_REGISTRATION.BODY.COPY1\\' | translate:vm.translationData }}</p></div><form id=codeForm ng-if=\\\"!vm.credentials && !vm.isExpiredInvitation\\\" ng-submit=vm.getInvitation() name=codeForm class=top-label-form novalidate><div class=form-inputs-wrapper><text-input class-name=code form=codeForm model=vm.code label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.CODE\\' | translate }}\\\" input-name=code input-id=code height-class=input-sm is-required=true></text-input></div><form-footer num-btns=1><button id=submit-code-btn type=submit class=\\\"btn btn-primary\\\" ng-disabled=codeForm.$invalid promise-btn=vm.submitCodePromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form><form id=registrationForm ng-if=vm.credentials class=top-label-form name=vm.registrationForm ng-submit=vm.createAccountWithoutSignature() novalidate><div class=form-inputs-wrapper><div class=row><text-input class-name=first-name form=vm.registrationForm model=vm.credentials.nameFirst label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=first-name input-id=first-name height-class=input-sm is-required=true></text-input><text-input class-name=last-name form=vm.registrationForm model=vm.credentials.nameLast label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=last-name input-id=last-name height-class=input-sm is-required=true></text-input></div><div class=row><text-input class-name=email field-type=email form=vm.registrationForm model=vm.credentials.email model-options=\\\"{ updateOn: \\'blur\\' }\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages is-required=true></text-input><!-- <text-input class-name=\\\"email-confirmation\\\"\\n                        field-type=\\\"email\\\"\\n                        form=\\\"vm.registrationForm\\\"\\n                        model=\\\"vm.credentials.emailConfirmation\\\"\\n                        model-options=\\\"{ updateOn: \\'blur\\' }\\\"\\n                        label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL_CONFIRMATION\\' | translate }}\\\"\\n                        input-name=\\\"email-confirmation\\\"\\n                        input-id=\\\"email-confirmation\\\"\\n                        match-enable=\\\"true\\\"\\n                        match-model=\\\"vm.credentials.email\\\"\\n                        match-model-caseless=\\\"true\\\"\\n                        regex=\\\"{{::vm.emailRegex}}\\\"\\n                        validation-messages=\\\"vm.emailValidationMessages\\\"\\n                        is-required=\\\"true\\\"></text-input> --><text-input class-name=primary-phone form=vm.registrationForm model=vm.credentials.phone mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone is-required=true></text-input></div><div class=row><select-input class-name=practice-role form=vm.registrationForm model=vm.credentials.practiceRole options-array=::vm.practiceRolesOptions label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRACTICE_ROLE\\' | translate }}\\\" input-name=practice-role input-id=practice-role is-required=true></select-input><password-input class-name=password form=vm.registrationForm model=vm.credentials.password label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PASSWORD\\' | translate }}\\\" input-name=password input-id=password on-keyup=\\\"vm.onPasswordChange({model: model})\\\" regex={{::vm.passwordRegex}} is-required=true></password-input></div><!-- PactSafe goes here --><div id=agreements></div></div><form-footer num-btns=2><!--<a class=\\\"btn-has-account btn\\\"--><!--ng-click=\\\"vm.onHasAccount()\\\">{{ \\'SETUP.INVITATION_REGISTRATION.BUTTONS.SKIP\\' | translate }}</a>--> <button id=register-btn type=submit class=\\\"btn btn-primary\\\" ng-disabled=\\\"vm.registrationForm.$invalid || !vm.isAgreementChecked\\\" promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></form-footer></form></section></div></div>\");\n$templateCache.put(\"app/components/setup/setup-nav/setup-nav.html\",\"<div class=\\\"setup-left-navbar navbar navbar-fixed-bottom hidden-md hidden-sm hidden-xs\\\"><ul class=\\\"nav navbar-nav\\\"><li ng-repeat=\\\"s in vm.steps track by $index\\\" ng-class=\\\"{\\'active\\': vm.step == $index}\\\"><span class=\\\"fa-stack fa\\\"><i class=\\\"fa fa-circle red fa-stack-2x\\\"></i> <i ng-if=\\\"vm.step > $index\\\" class=\\\"fa fa-check fa-stack-1x\\\"></i> <b ng-if=\\\"vm.step <= $index\\\" class=fa-stack-1x>{{ $index + 1 }}</b> </span>{{ s | translate }}</li></ul></div>\");\n$templateCache.put(\"app/global/banners/are-you-a-patient-banner/are-you-a-patient-banner.html\",\"<div id=are-you-a-patient-banner ng-class=\\\"\\\"><p class=are-you-a-patient-text>Are you a patient? <span>You’ve reached this page in error. Please visit our <a ng-href={{::vm.patientFAQsURL}}>Patient FAQs</a> or contact <a ng-href=\\\"mailto: {{::vm.supportEmail}}\\\">support@100plus.com</a>. Do not set up a new account.</span></p></div>\");\n$templateCache.put(\"app/global/fields/checkbox-input/checkbox-input.html\",\"<div class=\\\"form-group checkbox {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><label><input type=checkbox class={{::vm.heightClass}} id={{::vm.inputId}} name={{::vm.inputName}} tabindex={{::vm.tabIndex}} ng-required=::vm.isRequired ng-model=vm.model ng-change=\\\"vm.onChange({model: vm.model})\\\" ng-disabled=vm.isDisabled field-model-state> <span class=label-txt ng-hide=::vm.labelHidden ng-bind-html=::vm.labelTxt></span></label><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors><ng-transclude></ng-transclude></div>\");\n$templateCache.put(\"app/global/fields/credit-card-cvc-input/credit-card-cvc-input.html\",\"<div class=\\\"form-group credit-card-cvc-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><!-- omit name attribute per stripe\\'s docs https://stripe.com/docs/custom-form --><label for={{::vm.inputId}} ng-if=::vm.labelTxt ng-hide=::vm.labelHidden>{{::vm.labelTxt}}</label><input type=text autocomplete=off class=\\\"form-control {{::vm.heightClass}}\\\" name={{::vm.inputName}} id={{::vm.inputId}} tabindex={{::vm.tabIndex}} ng-model=vm.model ng-required=::vm.isRequired ui-mask={{::vm.mask}} ui-mask-placeholder={{::vm.maskPlaceholder}} cc-type=::vm.form[vm.creditCardNumberInputName].$ccType cc-cvc placeholder={{::vm.placeholderTxt}} field-model-state><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors></div>\");\n$templateCache.put(\"app/global/fields/credit-card-expiration-input/credit-card-expiration-input.html\",\"<div class=\\\"credit-card-expiration-input {{::vm.className}}\\\" cc-exp><div class=\\\"form-group credit-card-month-input select-input\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.monthInputName].$invalid && (vm.form[vm.monthInputName].$touched || vm.form[vm.monthInputName].$dirty)}\\\"><!-- omit name attribute per stripe\\'s docs https://stripe.com/docs/custom-form --><!-- We need this to do validation. Strip data before making API call. --><label for={{::vm.monthInputId}} ng-if=::vm.monthLabelTxt ng-hide=::vm.monthLabelHidden>{{::vm.monthLabelTxt}}</label><select name={{::vm.monthInputName}} id={{::vm.monthInputId}} class=\\\"form-control {{::vm.heightClass}}\\\" tabindex={{::vm.tabIndex}} ng-options=\\\"month for month in ::vm.months\\\" ng-model=vm.monthModel ng-required=::vm.isRequired cc-exp-month field-model-state></select><field-errors form=::vm.form input-name={{::vm.monthInputName}} validation-messages=::vm.validationMessages></field-errors></div><div class=\\\"form-group credit-card-year-input select-input\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.yearInputName].$invalid && (vm.form[vm.yearInputName].$touched || vm.form[vm.yearInputName].$dirty)}\\\"><!-- omit name attribute per stripe\\'s docs https://stripe.com/docs/custom-form --><!-- We need this to do validation. Strip data before making API call. --><label for={{::vm.yearInputId}} ng-if=::vm.yearLabelTxt ng-hide=vm.yearLabelHidden>{{::vm.yearLabelTxt}}</label><select name={{::vm.yearInputName}} id={{::vm.yearInputId}} class=\\\"form-control {{::vm.heightClass}}\\\" tabindex={{::vm.yearInputTabIndex}} ng-options=\\\"year.value as year.label for year in ::vm.years\\\" ng-model=vm.yearModel ng-required=::vm.isRequired cc-exp-year field-model-state></select><field-errors form=::vm.form input-name={{::vm.yearInputName}} validation-messages=::vm.validationMessages></field-errors></div></div>\");\n$templateCache.put(\"app/global/fields/credit-card-fields/credit-card-fields.html\",\"<div class=credit-card-fields><div class=row><div class=\\\"form-group number\\\"><label for=card-number>{{ \\'GLOBAL.CREDIT_CARD.FIELDS.CC_NUMBER\\' | translate }}</label><div id=card-number class=form-control></div><div class=\\\"field-errors-wrapper ng-messages\\\" role=alert><div id=card-number-errors class=ng-message></div></div></div><div class=\\\"form-group expiry\\\"><label for=card-expiry>{{ \\'GLOBAL.CREDIT_CARD.FIELDS.EXPIRY\\' | translate }}</label><div id=card-expiry class=form-control></div><div class=\\\"field-errors-wrapper ng-messages\\\" role=alert><div id=card-expiry-errors class=ng-message></div></div></div><div class=\\\"form-group cvc\\\"><label for=card-cvc>{{ \\'GLOBAL.CREDIT_CARD.FIELDS.CVC\\' | translate }}</label><div id=card-cvc class=form-control></div><div class=\\\"field-errors-wrapper ng-messages\\\" role=alert><div id=card-cvc-errors class=ng-message></div></div></div></div></div>\");\n$templateCache.put(\"app/global/fields/credit-card-number-input/credit-card-number-input.html\",\"<div class=\\\"form-group credit-card-number-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><!-- TODO: omit name attribute per stripe\\'s docs https://stripe.com/docs/custom-form --><label for={{::vm.inputId}} ng-if=::vm.labelTxt ng-hide=::vm.labelHidden>{{::vm.labelTxt}}</label><input type=text autocomplete=off name={{::vm.inputName}} class=\\\"form-control {{::vm.heightClass}}\\\" tabindex={{::vm.tabIndex}} ng-class=\\\"{\\'ibeat-empty\\': vm.model === undefined || vm.model === \\'\\'}\\\" ng-keyup=\\\"vm.onChange({model: vm.form[vm.inputName].$viewValue, cardType: vm.form[vm.inputName].$ccEagerType})\\\" id={{::vm.inputId}} ng-model=vm.model ng-required=::vm.isRequired ui-mask={{vm.mask}} ui-options=\\\"{clearOnBlur: false}\\\" ui-mask-placeholder={{::vm.maskPlaceholder}} ui-mask-placeholder-char={{::vm.maskPlaceholderChar}} cc-number cc-eager-type placeholder={{::vm.placeholderTxt}} field-model-state> {{vm.form[vm.inputName].$ccEagerType}}<field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors></div>\");\n$templateCache.put(\"app/global/fields/date-input/date-input.html\",\"<div class=\\\"form-group date-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><label ng-if=::vm.labelTxt for={{::vm.inputId}}>{{::vm.labelTxt}}</label><input type=text date-formatter date-format={{::vm.dateFormat}} ng-blur=vm.onblur($event) name={{::vm.inputName}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} tabindex={{::vm.tabIndex}} ng-model=vm.model ng-required=::vm.isRequired ng-pattern=::vm.regex ng-disabled=vm.isDisabled ui-mask={{::vm.mask}} ui-mask-placeholder={{::vm.maskPlaceholder}} ui-options={{::vm.maskOptions}} model-view-value=true placeholder={{::vm.placeholderTxt}}><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors></div>\");\n$templateCache.put(\"app/global/fields/field-errors/field-errors.html\",\"<div class=field-errors-wrapper ng-messages=vm.form[vm.inputName].$error ng-if=\\\"vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty\\\" role=alert><div ng-if=::!vm.validationMessages><div ng-message=required>{{ \\'VALIDATION.REQUIRED\\' | translate }}</div><div ng-message=minlength>{{ \\'VALIDATION.MIN\\' | translate }}</div><div ng-message=maxlength>{{ \\'VALIDATION.MAX\\' | translate }}</div><div ng-message=code>{{ \\'VALIDATION.CODE\\' | translate }}</div><div ng-message=pattern>{{ \\'VALIDATION.PATTERN\\' | translate }}</div><div ng-message=email>{{ \\'VALIDATION.EMAIL\\' | translate }}</div><div ng-message=match>{{ \\'VALIDATION.MATCH.DEFAULT\\' | translate }}</div><div ng-message=date>{{ \\'VALIDATION.DATE\\' | translate }}</div><div ng-message=ccNumber>{{ \\'VALIDATION.CC_NUMBER\\' | translate}}</div><div ng-message=parse>{{ \\'VALIDATION.REQUIRED\\' | translate }}</div><!-- Works as required after $dirty\\'ing field. --><div ng-message=ccExpMonth>{{ \\'VALIDATION.CC_MONTH\\' | translate}}</div><div ng-message=ccExpYear>{{ \\'VALIDATION.CC_YEAR\\' | translate}}</div><div ng-message=ccCvc>{{ \\'VALIDATION.PATTERN\\' | translate }}</div></div><div ng-if=::vm.validationMessages><div ng-repeat=\\\"validationMsg in ::vm.validationMessages track by $index\\\" ng-message={{::validationMsg.type}}>{{ ::validationMsg.message | translate }}</div></div></div>\");\n$templateCache.put(\"app/global/fields/multi-phone-number-input/multi-phone-number-input.html\",\"<div class=row id=multi-phone-number-input><div ng-repeat=\\\"i in vm.existingPhoneNumberInputs track by $index\\\"><select-input class-name={{::vm.phoneTypeClassName}} form=vm.form model=\\\"vm.model[\\'phone_\\' + i + \\'_type\\']\\\" options-array=::vm.optionsArray label-txt={{::vm.phoneTypeLabelTxt}} input-name=\\\"{{ \\'phone-\\' + i + \\'-type-label\\' }}\\\" input-id=\\\"{{ \\'phone-\\' + i + \\'-type\\'}}\\\" info-txt=\\\"{{ \\'SETUP.PROFILE.FIELDS.PHONE_TYPE_DEFAULT\\' | translate }}\\\" tab-index=\\\"{{ vm.startingTabIndex + \\'.\\' + i }}\\\" is-required=false></select-input><text-input class-name={{::vm.phoneNumberClassName}} form=vm.form model=\\\"vm.model[\\'phone_\\' + i + \\'_number\\']\\\" mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt={{::vm.phoneNumberLabelTxt}} input-name=\\\"{{ \\'phone-\\' + i + \\'-number-label\\' }}\\\" input-id=\\\"{{ \\'phone-\\' + i + \\'-number\\'}}\\\" tab-index=\\\"{{ vm.startingTabIndex + \\'.\\' + i + 1 }}\\\" is-required=false><phone-type-modal phone-type=\\\"vm.model[\\'phone_\\' + i + \\'_type\\']\\\" phone-number=\\\"vm.model[\\'phone_\\' + i + \\'_number\\']\\\"></phone-type-modal><duplicate-phone-modal phone-type=\\\"vm.model[\\'phone_\\' + i + \\'_type\\']\\\" phone-number=\\\"vm.model[\\'phone_\\' + i + \\'_number\\']\\\" enrollment-id=vm.enrollmentId></text-input></div><div class=\\\"add-phone-number {{::vm.addPhoneClassName}}\\\" ng-if=\\\"vm.existingPhoneNumberInputs.length < vm.numberOfInputs\\\" id=add-phone-number ng-click=vm.addPhoneNumberInput()><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"Add another phone number\\\"> {{ \\'GLOBAL.ACCOUNT.FIELDS.ADD_ADDITIONAL_PHONE_NUMBER\\' | translate }}</div></div>\");\n$templateCache.put(\"app/global/fields/password-input/password-input.html\",\"<div class=password-input-wrapper><div class=\\\"form-group password-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><label for={{::vm.inputId}} ng-if=::vm.labelTxt>{{::vm.labelTxt}}</label><input type={{vm.inputType}} name={{::vm.inputName}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} tabindex={{::vm.tabIndex}} ng-model=vm.model ng-required=::vm.isRequired ng-pattern=::vm.regex ng-keyup=\\\"vm.onKeyup({model: vm.getViewValue()}); vm.onPasswordChange({model: vm.getViewValue()});\\\" placeholder={{::vm.placeholderTxt}} field-model-state> <span class=toggle-password-btn ng-click=vm.togglePasswordVisibility()>{{vm.toggleBtnText}} <span class=\\\"glyphicon glyphicon-eye-open\\\" aria-hidden=true></span></span><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors><ng-transclude></ng-transclude><div id=requirements ng-if=!vm.hideRequirements><h4>{{ \\'SETUP.REGISTRATION.BODY.REQUIREMENTS.HEADER\\' | translate }}</h4><ul ng-if=\\\"!vm.passwordValidity.length || !vm.passwordValidity.casing || !vm.passwordValidity.number\\\"><li class=length ng-class=\\\"{\\'valid\\': vm.passwordValidity.length}\\\">{{ \\'SETUP.REGISTRATION.BODY.REQUIREMENTS.CRITERIA1\\' | translate }}</li><li class=casing ng-class=\\\"{\\'valid\\': vm.passwordValidity.casing}\\\">{{ \\'SETUP.REGISTRATION.BODY.REQUIREMENTS.CRITERIA2\\' | translate }}</li><li class=number ng-class=\\\"{\\'valid\\': vm.passwordValidity.number}\\\">{{ \\'SETUP.REGISTRATION.BODY.REQUIREMENTS.CRITERIA3\\' | translate }}</li></ul><ul ng-if=\\\"vm.passwordValidity.length && vm.passwordValidity.casing && vm.passwordValidity.number\\\"><li class=\\\"number valid\\\">{{ \\'SETUP.REGISTRATION.BODY.REQUIREMENTS.SATISFIED\\' | translate }}</li></ul></div></div></div>\");\n$templateCache.put(\"app/global/fields/select-input/select-input.html\",\"<div class=\\\"form-group select-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><label for={{::vm.inputId}} ng-if=::vm.labelTxt ng-hide=::vm.labelHidden>{{::vm.labelTxt}}</label><select name={{::vm.inputName}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} ng-model=vm.model ng-change=\\\"vm.onChange({model: vm.model})\\\" ng-options=\\\"item.value as item.label for item in vm.optionsArray\\\" ng-required=::vm.isRequired ng-disabled=vm.isDisabled tabindex={{::vm.tabIndex}} field-model-state><option ng-if=::vm.infoTxt value=\\\"\\\">{{::vm.infoTxt}}</option></select><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors></div>\");\n$templateCache.put(\"app/global/fields/text-area-input/text-area-input.html\",\"<div class=\\\"form-group text-area-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><label for={{::vm.inputId}}>{{::vm.labelTxt}}</label><textarea add-text-at-cursor name={{::vm.inputName}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} tabindex={{::vm.tabIndex}} ng-model=vm.model ng-required=::vm.isRequired ng-maxlength=::vm.maxLen ng-minlength=::vm.minLen placeholder={{::vm.placeholderTxt}} field-model-state></textarea><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors></div>\");\n$templateCache.put(\"app/global/fields/text-input/text-input.html\",\"<div class=\\\"form-group text-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><label for={{::vm.inputId}} ng-if=::vm.labelTxt ng-hide=::vm.labelHidden>{{::vm.labelTxt}}</label><input ng-if=\\\"!vm.addonPre && !vm.addonPost && !vm.addonPreIcon\\\" type=\\\"{{::vm.fieldType || \\'text\\'}}\\\" name={{::vm.inputName}} data-testid={{::vm.testId}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} autocomplete={{::vm.autocomplete}} tabindex={{::vm.tabIndex}} ng-model=vm.model ng-model-options=vm.modelOptions ng-change=\\\"vm.onChange({model: vm.model})\\\" ng-blur=\\\"vm.onBlur({model: vm.model})\\\" ng-keyup=\\\"vm.onKeyup({model: vm.model})\\\" ng-required=vm.isRequired ng-pattern=::vm.regex ng-minlength=::vm.minLen ng-maxlength=::vm.maxLen min={{::vm.min}} max={{::vm.max}} ng-disabled=vm.isDisabled ui-mask={{::vm.mask}} ui-mask-placeholder={{::vm.maskPlaceholder}} ui-options={{::vm.maskOptions}} match=vm.matchModel match-caseless=\\\"::vm.matchModelCaseless || false\\\" enable-matching={{::vm.matchEnable}} placeholder=\\\"{{::vm.placeholderTxt || \\'&nbsp;\\'}}\\\" field-model-state><div ng-if=\\\"vm.addonPre || vm.addonPost || vm.addonPreIcon\\\" class=input-group><div class=input-group-addon ng-if=\\\"::vm.addonPre || vm.addonPreIcon\\\"><span ng-if=::vm.addonPre>{{::vm.addonPre}}</span> <i ng-if=::vm.addonPreIcon class=\\\"fa fa-2x fa-{{::vm.addonPreIcon}}\\\"></i></div><input type=\\\"{{::vm.fieldType || \\'text\\'}}\\\" name={{::vm.inputName}} data-testid={{::vm.testId}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} autocomplete={{::vm.autocomplete}} tabindex={{::vm.tabIndex}} ng-model=vm.model ng-model-options=vm.modelOptions ng-change=\\\"vm.onChange({model: vm.model})\\\" ng-keyup=\\\"vm.onKeyup({model: vm.model})\\\" ng-required=vm.isRequired ng-pattern=::vm.regex ng-minlength=::vm.minLen ng-maxlength=::vm.maxLen ng-min={{::vm.min}} ng-max={{::vm.max}} ng-disabled=vm.isDisabled ui-mask={{::vm.mask}} ui-mask-placeholder={{::vm.maskPlaceholder}} match=vm.matchModel match-caseless=\\\"::vm.matchModelCaseless || false\\\" enable-matching={{::vm.matchEnable}} placeholder=\\\"{{::vm.placeholderTxt || \\'&nbsp;\\'}}\\\" field-model-state><div class=input-group-addon ng-if=::vm.addonPost>{{::vm.addonPost}}</div></div><field-errors form=::vm.form input-name={{::vm.inputName}} validation-messages=::vm.validationMessages></field-errors><ng-transclude></ng-transclude></div>\");\n$templateCache.put(\"app/global/fields/typeahead-input/typeahead-input.html\",\"<div class=\\\"form-group typeahead-input {{::vm.className}}\\\" ng-class=\\\"{\\'has-error\\': vm.form[vm.inputName].$invalid && (vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty)}\\\"><div ng-show=\\\"!vm.errorMessageLocation || vm.errorMessageLocation == \\'top\\'\\\" ng-messages=vm.form[vm.inputName].$error ng-if=\\\"vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty\\\" role=alert><div ng-message=required>{{ \\'VALIDATION.REQUIRED\\' | translate }}</div><div ng-message=minlength>{{ \\'VALIDATION.MIN\\' | translate }}</div><div ng-message=maxlength>{{ \\'VALIDATION.MAX\\' | translate }}</div><div ng-message=pattern>{{ \\'VALIDATION.PATTERN\\' | translate }}</div></div><label for={{::vm.inputId}} ng-if=::vm.labelTxt ng-hide=::vm.labelHidden ng-class=\\\"{\\'required\\': vm.isRequired}\\\">{{::vm.labelTxt}}</label><input type=text name={{::vm.inputName}} class=\\\"form-control {{::vm.heightClass}}\\\" id={{::vm.inputId}} tabindex={{::vm.tabIndex}} autocomplete=off ng-model=vm.model ng-required=::vm.isRequired ng-disabled=vm.isDisabled ng-pattern=::vm.regex uib-typeahead=\\\"object[vm.typeaheadJsonNodeName] as object[vm.typeaheadFieldName] for object in vm.typeaheadPayload($viewValue) | limitTo:vm.typeaheadLimit\\\" typeahead-on-select=\\\"vm.onSelect({item: $item, model: $model, label: $label}); vm.selectedItem = $item; vm.focusNext();\\\" typeahead-loading=loading typeahead-no-results=noResults typeahead-wait-ms=300 typeahead-min-length=::vm.typeaheadMinLength typeahead-template-url={{::vm.typeaheadTemplate}} ui-mask={{::vm.mask}} ui-mask-placeholder={{::vm.maskPlaceholder}} ng-blur=vm.onBlur($event) ng-focus=vm.onFocus($event) placeholder={{::vm.placeholderTxt}} field-model-state><div ng-show=\\\"vm.errorMessageLocation == \\'bottom\\'\\\" ng-messages=vm.form[vm.inputName].$error ng-if=\\\"vm.form[vm.inputName].$touched || vm.form[vm.inputName].$dirty\\\" role=alert><div ng-message=required>{{ \\'VALIDATION.REQUIRED\\' | translate }}</div><div ng-message=minlength>{{ \\'VALIDATION.MIN\\' | translate }}</div><div ng-message=maxlength>{{ \\'VALIDATION.MAX\\' | translate }}</div><div ng-message=pattern>{{ \\'VALIDATION.PATTERN\\' | translate }}</div></div><div auto-close=disabled is-open=\\\"(noResults && vm.model.length > 0 && vm.isFocused) || (loading && vm.isFocused)\\\" uib-dropdown uib-dropdown-toggle><ul class=dropdown-menu><li class=uib-typeahead-match ng-if=loading><a href>{{::vm.typeaheadLoadingMessage}}</a></li><li class=uib-typeahead-match ng-if=noResults><a href>{{::vm.typeaheadNoResultsMessage}}</a></li></ul></div></div>\");\n$templateCache.put(\"app/components/portal/account-settings/authentication-info/authentication-info-edit-tooltip.html\",\"<div><a ng-click=\\\"vm.isEditing = true;\\\"><i class=\\\"fa fa-edit\\\"></i> {{\\'GLOBAL.BUTTONS.EDIT\\' | translate}}</a></div>\");\n$templateCache.put(\"app/components/portal/account-settings/authentication-info/authentication-info.html\",\"<card-wrapper><card card-name=authentication-info><section class=card-header><div class=card-header-inner><span class=text><span class=name>{{\\'PORTAL.ACCOUNT_SETTINGS.AUTHENTICATION_INFO.BODY.HEADER\\' | translate}}</span></span></div></section><div class=\\\"body full-width\\\"><table class=\\\"table table-striped\\\"><tr><th>{{\\'PORTAL.ACCOUNT_SETTINGS.AUTHENTICATION_INFO.FIELDS.EMAIL\\' | translate}}</th><th>{{\\'PORTAL.ACCOUNT_SETTINGS.AUTHENTICATION_INFO.FIELDS.PHONE\\' | translate}}</th><th>{{\\'PORTAL.ACCOUNT_SETTINGS.AUTHENTICATION_INFO.FIELDS.PASSWORD\\' | translate}}</th><th></th></tr><tr><td>{{vm.user.user_profile.email}}</td><td><span ng-show=!vm.isEditing>{{vm.user.user_profile.phone_1_number | bcTelephone:\\'format\\' }}</span> <span ng-if=vm.isEditing><text-input model=vm.phoneNumber mask=\\\"(999) 999-9999\\\"><phone-type-modal phone-type=vm.user.user_profile.phone_1_type phone-number=vm.phoneNumber></phone-type-modal></text-input></span></td><td><a ng-click=vm.requestPasswordResetEmail()>{{\\'PORTAL.ACCOUNT_SETTINGS.AUTHENTICATION_INFO.BUTTONS.PASSWORD_RESET\\' | translate}}</a></td><td><div ng-show=vm.isEditing class=pull-right><button class=\\\"btn btn-small btn-primary\\\" ng-click=vm.save()>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button class=\\\"btn btn-small\\\" ng-click=\\\"vm.isEditing = false\\\">{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div><span ng-show=!vm.isEditing><a href uib-tooltip-template=\\\"\\'app/components/portal/account-settings/authentication-info/authentication-info-edit-tooltip.html\\'\\\" tooltip-placement=bottom tooltip-class=authentication-info-edit-tooltip tooltip-trigger=\\\"\\'outsideClick\\'\\\"><i class=\\\"fa fa-ellipsis-h\\\"></i></a></span></td></tr></table></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/authentication-info-edit/authentication-info-edit.html\",\"<card-wrapper><card card-name=\\\"authentication-info-edit edit\\\"><section class=\\\"card-header border-bottom\\\"><div class=card-header-inner><span class=text><span class=name>{{\\'PORTAL.USER_PROFILE.ACCOUNT_INFO.BODY.HEADER\\' | translate}}</span></span></div></section><form name=authenticationInfoForm ng-submit=\\\"vm.onSave(vm.user.current_account, false)\\\" class=top-label-form novalidate><div class=\\\"body full-width\\\"><div class=col><text-input class-name=email field-type=email form=authenticationInfoForm model=vm.user.current_account.email label-txt=\\\"{{ \\'PORTAL.USER_PROFILE.ACCOUNT_INFO.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} on-change=\\\"vm.onEmailChange({model: model})\\\" height-class=input-sm tab-index=7 is-required=true></text-input></div></div><div class=card-form-footer><div class=form-footer-inner><are-you-sure-modal ng-if=vm.shouldReauthenticate header-trans=PORTAL.USER_PROFILE.ACCOUNT_INFO.MODALS.WARNING.HEADER body-trans=PORTAL.USER_PROFILE.ACCOUNT_INFO.MODALS.WARNING.BODY close-btn-trans=GLOBAL.BUTTONS.CANCEL action-btn-trans=PORTAL.USER_PROFILE.ACCOUNT_INFO.MODALS.WARNING.BUTTONS.ACTION action-callback=\\\"vm.onSave(vm.user.current_account, true)\\\"><button type=submit class=\\\"btn btn-primary pull-right btn-save\\\" tabindex=8 ng-disabled=authenticationInfoForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button></are-you-sure-modal><button ng-if=!vm.shouldReauthenticate type=submit class=\\\"btn btn-primary pull-right btn-save\\\" tabindex=8 ng-disabled=authenticationInfoForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button type=button class=\\\"btn btn-secondary pull-right btn-cancel\\\" tabindex=9 ng-click=\\\"vm.onEdit = false\\\">{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div></div></form></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/e-office/e-office.html\",\"<card-wrapper><card card-name=e-office data-testid=office-settings-card><h3>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.BODY.HEADER\\' | translate }}</h3><div class=\\\"body full-width one-column\\\" us-spinner spinner-theme=black spinner-on=vm.isLoading><table class=table ng-if=vm.office><tbody><tr data-testid=office-row data-office-id={{::vm.office.id}} data-office-active={{::!vm.office.deactivated_at}}><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.PRACTICE_NAME\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.ADDRESS_1\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.ADDRESS_2\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.CITY\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.STATE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.ZIP\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.TABLE_HEADINGS.PHONE\\' | translate }}</th><th></th></tr><tr><!-- Primary is currently the only kind, so this is currently hard-coded ---><td>{{::vm.office.name}}</td><td>{{::vm.office.address_street}}</td><td>{{::vm.office.address_street2}}</td><td>{{::vm.office.address_city}}</td><td>{{::vm.office.address_state}}</td><td>{{::vm.office.address_zipcode}}</td><td>{{vm.office.phone_1_number | bcTelephone:\\'format\\' }}</td><td class=practice-actions><span uib-dropdown on-toggle=toggled(open) authorize=\\\"role:clinical, role:administrative\\\"><a href id=simple-dropdown uib-dropdown-toggle>...</a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=simple-dropdown><li><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.MODAL.HEADER template-url=app/components/portal/enterprise/e-billing/practice-settings/edit-phone.modal.html custom-payload=vm.office close-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.MODAL.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.MODAL.SAVE action-callback=vm.savePhone(vm.office) backdrop=static><a tabindex=0><i class=edit></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.EDIT\\' | translate }}</a></are-you-sure-modal></li></ul></span></td></tr><tbody></tbody></tbody></table><div ng-if=\\\"!vm.office && !vm.isLoading\\\"><p>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.COPY.INFO_REQUIRED\\' | translate }}</p><p><a ng-click=\\\"vm.onEdit = true\\\"><strong>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.COPY.PLEASE_ADD_NOW\\' | translate }}</strong></a></p></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/e-office-edit/e-office-edit.html\",\"<card-wrapper><card card-name=\\\"e-office-edit edit\\\"><section class=\\\"card-header border-bottom\\\"><div class=card-header-inner><span class=text><span class=name>{{\\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EOFFICE.BODY.HEADER\\' | translate}}</span></span></div></section><div class=\\\"body full-width one-column\\\"><div class=col><form name=practiceForm class=top-label-form ng-submit=vm.save() novalidate><div class=form-group><text-input class-name=primary-phone form=practiceForm model=vm.practice.phone_1_number mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone tab-index=2 is-required=true></text-input><text-input class-name=street1 form=practiceForm model=vm.practice.address_street label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.STREET\\' | translate }}\\\" input-name=street1 input-id=street1 tab-index=3 is-required=true></text-input><div ng-if=vm.practice.address_zipcode><div class=city-state><text-input class-name=city form=practiceForm model=vm.practice.address_city label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.CITY\\' | translate }}\\\" input-name=city input-id=city tab-index=4 is-required=true></text-input><select-input class-name=state form=practiceForm model=vm.practice.address_state options-array=::vm.stateOptionsArray label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.STATE\\' | translate }}\\\" input-name=state input-id=state tab-index=5 info-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE_DEFAULT\\' | translate }}\\\" is-required=true></select-input></div></div><text-input class-name=zip form=practiceForm model=vm.practice.address_zipcode on-change=\\\"vm.onChange({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.PRACTICE.FIELDS.ZIP\\' | translate }}\\\" input-name=zip input-id=zip tab-index=6 mask=99999 mask-placeholder=_____ is-required=true><p ng-if=vm.geocode.processing class=is-loading><span class=\\\"btn-spinner input-spinner\\\"></span></p></text-input><p ng-if=\\\"!vm.geocode.result && vm.practice.address_zipcode && !vm.geocode.processing\\\" class=help-block>{{ \\'GLOBAL.ADDRESS.FIELDS.ZIP_HELP\\' | translate }}</p></div></form></div></div><div class=card-form-footer><div class=form-footer-inner><button type=button class=\\\"btn btn-primary pull-right btn-save\\\" ng-click=vm.save() ng-disabled=userProfileForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button type=button class=\\\"btn btn-secondary pull-right btn-cancel\\\" ng-click=\\\"vm.onEdit = false\\\">{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/ehr-office-settings/ehr-office-settings.html\",\"<form name=vm.officeEhrSettingsForm class=top-label-form ng-submit=vm.saveOfficeSettingsForm() novalidate><h4>{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.OFFICE_EHR_SETTINGS\\' | translate}}</h4><div class=form-inputs-wrapper><div class=row><typeahead-input class-name=ehr-type-search form=vm.officeEhrSettingsForm model=vm.officeEhrTypeSearch on-select=\\\"vm.onOfficeEhrTypeSelect({id: item.id, model: model, keyName: item.key_name, integratedAt: item.integrated_at})\\\" tab-index=0 label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.SELECT_EHR_PROVIDER\\' | translate }}\\\" input-name=office-ehr-type-search input-id=office-ehr-type-search typeahead-payload=vm.searchEhrTypes typeahead-field-name=name typeahead-json-node-name=name typeahead-limit=100 typeahead-min-length=3 typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\" is-disabled=vm.officeShouldDisableEHRChange></typeahead-input><div class=\\\"col-xs-12 col-sm-6\\\" ng-if=!vm.officeIsIntegrationStatusLoading><label>{{ \\'Integration Status\\' | translate}}</label><div class=row><div class=col-xs-12><div class=\\\"label label-{{vm.officeIntegrationStatus}}\\\" ng-class=label-{{vm.officeIntegrationStatus}}>{{ vm.officeIntegrationStatus | uppercase }}</div></div></div><div class=\\\"row request-integration\\\" ng-if=\\\"vm.office.ehr_type_id && vm.officeIntegrationStatus === \\'Inactive\\'\\\"><div class=col-xs-12><a ng-href=\\\"mailto:{{vm.mailToEmail}}?subject={{vm.officeRequestIntegrationSubject}}&body={{vm.officeRequestIntegrationBody}}\\\">{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION\\' | translate }}</a></div></div></div></div><div ng-if=\\\"vm.officeEhrTypeCredentialFields.length > 0 && vm.isAdmin && !vm.amdOffice\\\" class=row><label class=col-xs-12>{{ vm.officeCredentialsLabelText + \\' Credentials\\' | translate}}</label></div><div ng-if=\\\"vm.officeEhrTypeCredentialFields.length > 0 && vm.isAdmin && !vm.amdOffice\\\" class=row><div ng-repeat=\\\"field in vm.officeEhrTypeCredentialFields track by $index\\\"><text-input ng-if=\\\"field.ehr_credential_field_type.field_name !== \\'PASSWORD\\'\\\" class-name=\\\"credential-field {{ field.ehr_credential_field_type.field_name }}\\\" field-type=text form=vm.ehrProviderSettingsForm model=vm.officeEhrCredentials[field.ehr_credential_field_type.field_name] label-txt=\\\"{{ field.ehr_credential_field_type.normalized_name | translate }}\\\" input-name=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" input-id=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" tab-index=$index is-required=false></text-input><password-input ng-if=\\\"field.ehr_credential_field_type.field_name === \\'PASSWORD\\'\\\" class-name=\\\"credential-field {{ field.ehr_credential_field_type.field_name }}\\\" form=vm.ehrProviderSettingsForm model=vm.officeEhrCredentials[field.ehr_credential_field_type.field_name] label-txt=\\\"{{ field.ehr_credential_field_type.normalized_name | translate }}\\\" input-name=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" input-id=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" hide-requirements=true tab-index=$index is-required=false></password-input></div></div></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-left btn-save\\\" ng-disabled=\\\"!vm.officeEhrSettingsForm.$dirty || vm.officeShouldDisableEHRChange\\\" promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.SAVE\\' | translate }}</button></div></form>\");\n$templateCache.put(\"app/components/portal/account-settings/ehr-provider-settings/ehr-provider-settings.html\",\"<form name=vm.ehrProviderSettingsForm class=top-label-form ng-submit=vm.saveForm() novalidate><h4>{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.ORGANIZATION_EHR_SETTINGS\\' | translate}}</h4><div class=form-inputs-wrapper><div class=row><typeahead-input class-name=ehr-type-search form=vm.ehrProviderSettingsForm model=vm.ehrTypeSearch on-select=\\\"vm.onEhrTypeSelect({id: item.id, model: model, keyName: item.key_name, integratedAt: item.integrated_at})\\\" tab-index=0 label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.SELECT_EHR_PROVIDER\\' | translate }}\\\" input-name=ehr-type-search input-id=ehr-type-search typeahead-payload=vm.searchEhrTypes typeahead-field-name=name typeahead-json-node-name=name typeahead-limit=100 typeahead-min-length=3 typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\" is-disabled=vm.shouldDisableEHRChange></typeahead-input><div class=\\\"col-xs-12 col-sm-6\\\" ng-if=!vm.isIntegrationStatusLoading><label>{{ \\'Integration Status\\' | translate}}</label><div class=row><div class=col-xs-12><div class=\\\"label label-{{vm.integrationStatus}}\\\" ng-class=label-{{vm.integrationStatus}}>{{ vm.integrationStatus | uppercase }}</div></div></div><div class=\\\"row request-integration\\\" ng-if=\\\"vm.enterpriseCustomer.ehr_type_id && vm.integrationStatus === \\'Inactive\\'\\\"><div class=col-xs-12><a ng-href=\\\"mailto:{{vm.mailToEmail}}?subject={{vm.requestIntegrationSubject}}&body={{vm.requestIntegrationBody}}\\\">{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.REQUEST_INTEGRATION\\' | translate }}</a></div></div></div></div><div ng-if=\\\"vm.ehrTypeCredentialFields.length > 0 && vm.isAdmin && !vm.amdOffice\\\" class=row><label class=col-xs-12>{{ vm.credentialsLabelText + \\' Credentials\\' | translate}}</label></div><div ng-if=\\\"vm.ehrTypeCredentialFields.length > 0 && vm.isAdmin && !vm.amdOffice\\\" class=row><div ng-repeat=\\\"field in vm.ehrTypeCredentialFields track by $index\\\"><text-input ng-if=\\\"field.ehr_credential_field_type.field_name !== \\'PASSWORD\\'\\\" class-name=\\\"credential-field {{ field.ehr_credential_field_type.field_name }}\\\" field-type=text form=vm.ehrProviderSettingsForm model=vm.ehrCredentials[field.ehr_credential_field_type.field_name] label-txt=\\\"{{ field.ehr_credential_field_type.normalized_name | translate }}\\\" input-name=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" input-id=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" tab-index=$index is-required=false></text-input><password-input ng-if=\\\"field.ehr_credential_field_type.field_name === \\'PASSWORD\\'\\\" class-name=\\\"credential-field {{ field.ehr_credential_field_type.field_name }}\\\" form=vm.ehrProviderSettingsForm model=vm.ehrCredentials[field.ehr_credential_field_type.field_name] label-txt=\\\"{{ field.ehr_credential_field_type.normalized_name | translate }}\\\" input-name=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" input-id=\\\"{{ field.ehr_credential_field_type.field_name }}\\\" hide-requirements=true tab-index=$index is-required=false></password-input></div></div></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-left btn-save\\\" ng-disabled=\\\"!vm.ehrProviderSettingsForm.$dirty || vm.shouldDisableEHRChange\\\" promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.SAVE\\' | translate }}</button></div></form>\");\n$templateCache.put(\"app/components/portal/account-settings/patient-groups/edit-group.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=\\\"modal-body row\\\"><form name=vm.GroupForm class=top-label-form novalidate><text-input class-name=formfield-half form=vm.GroupForm model=modalOptions.payload.name label-txt=\\\"Group Name\\\" input-name=name input-id=name height-class=input-sm tab-index=3></text-input></form></div><div class=group-edit-help>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.EDIT_GROUP_MODAL.HELP_TEXT\\' | translate}}</div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-disabled=\\\"modalOptions.payload.name==\\'\\'\\\" ng-click=modalOptions.ok(true) promise-btn>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/account-settings/patient-groups/patient-group-edit-tooltip.html\",\"<div><a ng-click=\\\"vm.isEditing = true;\\\"><i class=\\\"fa fa-edit\\\"></i> {{\\'GLOBAL.BUTTONS.EDIT\\' | translate}}</a></div>\");\n$templateCache.put(\"app/components/portal/account-settings/patient-groups/patient-groups.html\",\"<card-wrapper><card card-name=patient-groups><section class=card-header><div class=card-header-inner><span class=text><span class=name>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.BODY.HEADER\\' | translate}}</span></span></div></section><!--    <div class=\\\"body\\\" ng-bind-html=\\\"\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.BODY.TEXT\\' | translate\\\"></div>--><div class=\\\"body full-width\\\"><table class=\\\"table table-striped\\\"><tr><th>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TABLE.GROUP_NAME\\' | translate}}</th><th>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TABLE.CARE_MANAGERS\\' | translate}}</th><th>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TABLE.MEMBER_COUNT\\' | translate}}</th><th>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TABLE.JOINED\\' | translate}}</th><th></th></tr><tr ng-repeat=\\\"g in vm.groupList.data track by $index\\\"><td>{{ g.name }}</td><td ng-if=\\\"g.careManagers.length <= vm.maxCareManagersToShow\\\">{{ g.careManagers.join(\\', \\') }}</td><td ng-if=\\\"g.careManagers.length > vm.maxCareManagersToShow\\\">{{ g.careManagers.slice(0, vm.maxCareManagersToShow).join(\\', \\') }} (show <a uib-popover-html=::vm.getCareManagerTooltip(g.careManagers) popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-class=care-manager-popover popover-placement=bottom>all </a>{{ g.careManagers.length }})</td><td>{{ g.member_count }}</td><td><switchv2 ng-model=g.currentUserIsCareManager ng-click=vm.toggleJoined(g) disabled></switchv2></td><td class=practice-actions><span uib-dropdown on-toggle=toggled(open)><a href id=simple-dropdown uib-dropdown-toggle><i class=\\\"fa fa-ellipsis-h\\\"></i></a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=simple-dropdown><li><are-you-sure-modal header-trans=PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.BODY.EDIT_GROUP template-url=app/components/portal/account-settings/patient-groups/edit-group.modal.html custom-payload=g close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.MODAL.SAVE action-callback=vm.saveGroup(g) backdrop=static><a tabindex=0><i class=edit></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.EDIT\\' | translate }}</a></are-you-sure-modal></li></ul></span></td></tr></table><card-wrapper ng-if=\\\"vm.groupList.count > 0\\\"><card card-name=\\\"pagination transparent\\\"><ul uib-pagination ng-if=\\\"vm.groupList.count > vm.itemsPerPage\\\" items-per-page=vm.itemsPerPage total-items=vm.groupList.count boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper><are-you-sure-modal header-trans=PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.BODY.CREATE_GROUP template-url=app/components/portal/account-settings/patient-groups/edit-group.modal.html custom-payload=vm.newGroup close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.MODAL.SAVE action-callback=vm.saveGroup(vm.newGroup) backdrop=static><button class=\\\"btn btn-primary pull-left\\\">{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.BODY.CREATE_GROUP\\' | translate}}</button></are-you-sure-modal></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/patient-test-alerts/patient-test-alerts.html\",\"<card-wrapper><card card-name=patient-test-alerts><section class=card-header><div class=card-header-inner><span class=text><span class=name>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.BODY.HEADER\\' | translate}}</span></span></div></section><div class=body ng-bind-html=\\\"\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.BODY.TEXT\\' | translate\\\"></div><div class=\\\"body full-width\\\"><div class=table-section><div class=heading>Subscribe to alerts based on Patient Group</div><table class=\\\"table table-striped\\\"><tr><th>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_GROUPS.TABLE.GROUP_NAME\\' | translate}}</th><th>{{\\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.TABLE.EMAIL_ALERTS\\' | translate}} <button class=header-action ng-disabled=vm.isLoading ng-click=vm.toggleAllGroups()>{{vm.groupList.count == vm.getAlertSubscriptionsByType(\\'group_id\\').length ? \\'Disable\\' : \\'Enable\\'}} All</button></th></tr><tr ng-repeat=\\\"g in vm.groupList.data track by $index\\\"><td>{{ g.name }}</td><td><switchv2 ng-model=g.isEnabled ng-click=vm.onClick(g) disabled></switchv2><!-- This trailing ; in the ng-click is SUPER important!--></td></tr></table><div class=pagination><ul uib-pagination ng-if=\\\"vm.groupList.count > vm.itemsPerPage\\\" items-per-page=vm.itemsPerPage total-items=vm.groupList.count boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.groupPageNumber ng-change=vm.goToGroupPage()></ul></div></div><div class=table-section><div class=heading>{{ \\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.TABLE.TITLE\\' | translate }}</div><table class=\\\"table table-striped\\\"><tr><th>{{ \\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.TABLE.PRIMARY_PRACTITIONER\\' | translate }}</th><th>{{ \\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.TABLE.EMAIL_ALERTS\\' | translate }} <button class=header-action ng-disabled=vm.isLoading ng-click=vm.toggleAllProviders()>{{vm.providerList.length == vm.getAlertSubscriptionsByType(\\'primary_provider_id\\').length ? \\'Disable\\' : \\'Enable\\'}} All</button></th></tr><tr ng-repeat=\\\"p in vm.providerListPage track by $index\\\"><td id=primary-provider-name>{{p.label}} <span ng-if=\\\"p.value.id === vm.eUserProfile.id\\\">(you)</span></td><td><switchv2 ng-model=p.isEnabled ng-click=vm.onClick(p) disabled></switchv2><!-- This trailing ; in the ng-click is SUPER important!--></td></tr></table><div class=pagination><ul uib-pagination class=pagination ng-if=\\\"vm.providerList.length > vm.itemsPerPage\\\" items-per-page=vm.itemsPerPage total-items=vm.providerList.length previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.providerPageNumber ng-change=vm.goToProviderPage()></ul></div></div><!--      Uncomment this when we are ready to manage all provider notifications--><!--      <span class=\\\"text row\\\">--><!--        {{ \\'PORTAL.ACCOUNT_SETTINGS.PATIENT_TEST_ALERTS.BODY.LABEL\\' | translate }}--><!--      </span>--><!--      <span class=\\\"text row\\\">--><!--        <label>{{ \\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate }}</label>--><!--      </span>--><!--      <div class=\\\"row\\\">--><!--        <div class=\\\"col-md-3\\\">--><!--          <select-input--><!--            class-name=\\\"medicare-advantage\\\"--><!--            model=\\\"vm.selectedProvider\\\"--><!--            options-array=\\\"vm.providerList\\\"--><!--            input-name=\\\"primary-provider\\\"--><!--            input-id=\\\"primary-provider\\\"--><!--            is-required=\\\"true\\\">--><!--          </select-input>--><!--        </div>--><!--        <div class=\\\"col-md-3 text-right\\\">--><!--          <div class=\\\"col-md-8 switch-label\\\">--><!--            {{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.NOTIFICATION_SETTINGS.BODY.EMAIL.HEADER\\' | translate }}--><!--          </div>--><!--          <div class=\\\"col-md-2\\\">--><!--            <switch ng-model=\\\"vm.selectedProvider.enable_email_alerts\\\"--><!--                    ng-change=\\\"vm.onSave()\\\">--><!--            </switch>--><!--          </div>--><!--        </div>--><!--        <div class=\\\"col-md-3 text-right\\\">--><!--          <div class=\\\"col-md-8 switch-label\\\">--><!--            {{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.NOTIFICATION_SETTINGS.BODY.SMS.HEADER\\' | translate }}--><!--          </div>--><!--          <div class=\\\"col-md-2\\\">--><!--            <switch ng-model=\\\"vm.selectedProvider.enable_sms_alerts\\\"--><!--                    ng-change=\\\"vm.onSave()\\\">--><!--            </switch>--><!--          </div>--><!--        </div>--><!--      </div>--></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/provider-invite/provider-invite.html\",\"<card-wrapper><card card-name=provider-invite><section class=\\\"card-header border-bottom\\\"><h3>{{\\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDER_INVITE.BODY.HEADER\\' | translate:vm.translateData}}</h3></section><form name=vm.providerInviteForm class=top-label-form ng-submit=vm.sendProviderInvite() novalidate><div class=form-inputs-wrapper><div class=row><text-input class-name=first-name form=vm.providerInviteForm model=vm.providerInvite.name_first label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=first-name input-id=first-name height-class=input-sm tab-index=1 is-required=true></text-input><text-input class-name=last-name form=vm.providerInviteForm model=vm.providerInvite.name_last label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=last-name input-id=last-name height-class=input-sm tab-index=2 is-required=true></text-input></div><div class=row><select-input class-name=practice-role form=vm.providerInviteForm model=vm.providerInvite.enterprise_invitation_practice_roles[0].practice_role_id options-array=::vm.practiceRolesOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.PRACTICE_ROLE\\' | translate }}\\\" input-name=practice-role input-id=practice-role tab-index=3 is-required=true></select-input><text-input class-name=email field-type=text form=vm.providerInviteForm model=vm.providerInvite.email label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages tab-index=4 is-required=true></text-input></div><div class=row><div class=\\\"form-group select-input enterprise-role-select-input\\\"><div class=enterprise-role-select-input-label><label>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.ENTERPRISE_ROLES\\' | translate }}</label><i class=info-link ng-click=vm.showRolesModal()></i></div><div class=enterprise-role-select ng-dropdown-multiselect=\\\"\\\" name=enterprise-role extra-settings=vm.rolesDropDownSettings options=vm.rolesOptions selected-model=vm.selectedRoles translation-texts=vm.rolesDropDownText events=\\\"{ onSelectionChanged: vm.roleSelectionChanged }\\\"></div></div></div></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-left\\\" ng-disabled=\\\"vm.providerInviteForm.$invalid || vm.selectedRoles.length === 0\\\" promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDER_INVITE.BUTTONS.SEND\\' | translate }}</button></div></form></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/account-settings/provider-invite/roles-modal.html\",\"<section class=modal-wrapper><button type=button class=close ng-click=modalOptions.close(false) aria-hidden=true>&times;</button><div class=modal-header ng-if=modalOptions.headerText><h4 class=modal-title>{{modalOptions.headerText}}</h4></div><div class=modal-body><dl class=roles-modal-info ng-repeat=\\\"role in modalOptions.roles track by $index\\\"><dt>{{role.label}}</dt><dd>{{role.description}}</dd></dl></div></section>\");\n$templateCache.put(\"app/components/portal/account-settings/providers-list/providers-list.html\",\"<card-wrapper><card card-name=providers-list><table class=table><thead class=thead><tr><th class=title>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.DATE_ADDED\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.NAME\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.PRACTICE_ROLE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.EMAIL\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.INVITED_BY\\' | translate }}</th><th></th><th>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDERS_LIST.FIELDS.ENTERPRISE_ROLES\\' | translate }}</th><th></th></tr></thead><tbody ng-if=\\\"vm.allStaff.length !== 0\\\"><tr ng-repeat=\\\"staff in vm.allStaff | orderBy: \\'-\\' track by $index\\\"><td><span ng-if=staff.created_at>{{ staff.created_at | date:\\'MM/dd/yyyy\\' : \\'UTC/GMT\\' }}</span></td><td>{{ staff.name_first }} {{ staff.name_last }}</td><td ng-if=staff.practice_roles><div ng-repeat=\\\"role in staff.practice_roles track by $index\\\">{{ role.practice_role.name }}</div></td><td>{{ staff.email }}</td><td>{{ staff.invited_by.name_first }} {{ staff.invited_by.name_last }}</td><td><span ng-if=\\\"staff.status === \\'EXPIRED\\'\\\" ng-click=vm.resendInvitation(staff.id) class=\\\"label label-default\\\" uib-tooltip=\\\"Resend invitation\\\" tooltip-class=tooltip-class tooltip-placement=bottom>{{staff.status}} <i class=\\\"fa fa-envelope-o\\\"></i> </span><span ng-if=\\\"staff.status === \\'ACTIVE\\'\\\" class=\\\"label label-success\\\">{{staff.status}}</span> <span ng-if=\\\"staff.status === \\'PENDING ACCEPTANCE\\'\\\" class=\\\"label label-warning\\\">{{staff.status}}</span></td><td><roles-badge-list ng-show=!staff.isEditing roles-to-display=staff.rolesLabel></roles-badge-list><multi-select ng-show=staff.isEditing extra-settings=vm.rolesDropDownSettings options=vm.rolesOptions selected-model=staff.editedRoles></multi-select></td><td><div ng-if=\\\"staff.type===\\'invite\\'\\\"><span uib-dropdown on-toggle=toggled(open) ng-show=!staff.isEditing authorize=\\\"role:super-admin, role:administrative\\\"><a href id=staff-list-dropdown uib-dropdown-toggle><i class=\\\"fa fa-ellipsis-h\\\"></i></a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=staff-list-dropdown><li><a tabindex=0 ng-click=vm.editRoles(staff)><i class=\\\"fa fa-pencil-square-o\\\"></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.EDIT\\' | translate }} </a><a tabindex=0 ng-click=vm.deleteInvite(staff.id)><i class=\\\"fa fa-trash-o\\\"></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.DELETE\\' | translate }}</a></li></ul></span></div><div ng-if=\\\"staff.type===\\'provider\\'\\\"><span uib-dropdown on-toggle=toggled(open) ng-show=!staff.isEditing authorize=role:super-admin><a href id=staff-list-dropdown uib-dropdown-toggle><i class=\\\"fa fa-ellipsis-h\\\"></i></a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=staff-list-dropdown><li><a tabindex=0 ng-click=vm.editRoles(staff)><i class=\\\"fa fa-pencil-square-o\\\"></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.EDIT\\' | translate }}</a></li></ul></span></div><div ng-show=staff.isEditing class=pull-right><button ng-disabled=\\\"staff.editedRoles.length == 0\\\" class=\\\"btn btn-small btn-primary\\\" ng-click=vm.saveRoles(staff)>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button class=\\\"btn btn-small\\\" ng-click=\\\"staff.isEditing = false\\\">{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div></td></tr></tbody><tbody ng-if=\\\"vm.allStaff.length === 0\\\"><tr><td>{{\\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.PROVIDER_INVITE.MESSAGES.NONE\\' | translate}}</td><td></td><td></td><td></td><td></td></tr></tbody></table></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/dx-codes/dx-codes.html\",\"<span class=dx-codes><span class=header>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.DX_CODES\\' | translate }} </span><span class=data ng-if=!vm.editingDxCodes><span ng-if=\\\"vm.patientUserProfile.enterprise_chart && vm.patientUserProfile.enterprise_chart.diagnosis && vm.patientUserProfile.enterprise_chart.diagnosis.codes.length\\\" ng-repeat=\\\"code in vm.patientUserProfile.enterprise_chart.diagnosis.codes track by $index\\\">{{ code.code }}<span ng-if=!$last>, </span></span><span ng-if=\\\"!vm.patientUserProfile.enterprise_chart || !vm.patientUserProfile.enterprise_chart.diagnosis || !vm.patientUserProfile.enterprise_chart.diagnosis.codes.length\\\">N/A</span> </span><span ng-show=vm.editingDxCodes><span><tags-input id=dx ng-model=vm.diagnosis_codes name=diagnosis on-tag-added=vm.onDiagnosisAdded() on-tag-removed=vm.onDiagnosisAdded() tabindex=1 placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DX_CODES\\' | translate }}\\\" min-tags=1 add-from-autocomplete-only=true key-property=code display-property=code><div us-spinner=\\\"{radius:4, width:2, length: 4, top: \\'50%\\', left:\\'-13px\\'}\\\" spinner-theme=black spinner-on=vm.isTagLoading></div><auto-complete source=vm.loadDiagnoses($query) key-property=code debounce-delay=250 display-property=displayText max-results-to-show=8 select-first-match=true></auto-complete></tags-input></span><span ng-click=vm.onSave()><i class=\\\"fa fa-check\\\"></i> Save</span> <span ng-click=vm.cancelEditDxCodes()><i class=\\\"fa fa-times\\\"></i>Cancel</span> </span><i class=\\\"fa fa-edit\\\" ng-show=!vm.editingDxCodes ng-click=vm.beginEditDxCodes()></i> </span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-agreements/e-agreements.html\",\"<div id=e-agreements-modal class=modal-wrapper><div class=modal-body us-spinner spinner-theme=black spinner-on=modalOptions.isLoading ng-init=modalOptions.init()><div class=header><h2>{{\\'PORTAL.ENTERPRISE.AGREEMENTS.BODY.HEADER\\' | translate}}</h2><p class=subheader>{{\\'PORTAL.ENTERPRISE.AGREEMENTS.BODY.COPY\\' | translate}}</p><hr></div><div id=agreements></div><div class=footer><are-you-sure-modal header-trans=\\\"\\\" body-trans=PORTAL.ENTERPRISE.AGREEMENTS.BODY.DISMISSED_COPY action-btn-trans=OK action-callback=vm.completeSigningLater() hide-cancel=true extra-class=incomplete-modal short-circuit-if=false><button type=button class=\\\"btn btn-default\\\">{{\\'PORTAL.ENTERPRISE.AGREEMENTS.BUTTONS.LATER\\' | translate}}</button></are-you-sure-modal></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-alert-thresholds/e-alert-thresholds.html\",\"<div class=\\\"container alert-threshold-container no-print\\\"><div class=\\\"row note\\\"><span ng-bind-html=\\\"\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.BODY\\' | translate\\\"></span> <span ng-bind-html=\\\"vm.patientUserProfile | patientName\\\"></span></div><div class=row><form name=alertThresholdForm><div class=\\\"col-sm-4 col-xs-12\\\"><div class=device-threshold-card><div class=row><span class=device-title ng-class=\\\"{disabled: !vm.threshold.is_blood_pressure_alert_enabled}\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.BP\\' | translate }} </span><span class=pull-right authorize=\\\"role:clinical, role:administrative\\\"><switch ng-if=!vm.isLoadingThreshold ng-model=vm.threshold.is_blood_pressure_alert_enabled ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.onChange(\\'is_blood_pressure_alert_enabled\\')\\\"></switch></span><div class=\\\"row low-bp-toggle\\\"><checkbox-input is-disabled=!vm.isAuthorized model=vm.threshold.is_blood_pressure_lower_bound_enabled on-change=\\\"vm.onChange(\\'is_blood_pressure_lower_bound_enabled\\', model)\\\" input-name=low-bp-toggle input-id=low-bp-toggle label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.LOW_BP_TOGGLE\\' | translate }}\\\"></div></div><span class=device-sub-title>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.BP_SYSTOLIC\\' | translate }}</span> <a class=reset-link ng-click=\\\"vm.threshold.is_blood_pressure_alert_enabled && vm.resetToDefault(\\'systolic_low_threshold\\', \\'systolic_high_threshold\\')\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.RESET\\' | translate }} </a><img src=assets/images/global/icons/info.1e28bc5a.svg alt=\\\"Default values - more information\\\" uib-popover-template=vm.systolicDisclaimer popover-placement=auto popover-append-to-body=true popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16><div class=row><div class=col-md-6><text-input form=alertThresholdForm input-name=bpSystolicLow model=vm.threshold.systolic_low_threshold on-blur=\\\"vm.onChange(\\'BP_CUFF\\', model)\\\" is-disabled=!vm.threshold.is_blood_pressure_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.LOW\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.bpSystolicRegex }}\\\" validation-messages=vm.bpSystolicValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_pressure_alert_enabled && !vm.threshold.systolic_low_threshold }\\\"></text-input></div><div class=col-md-6><text-input form=alertThresholdForm input-name=bpSystolicHigh model=vm.threshold.systolic_high_threshold on-blur=\\\"vm.onChange(\\'BP_CUFF\\', model)\\\" is-disabled=!vm.threshold.is_blood_pressure_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.HIGH\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.bpSystolicRegex }}\\\" validation-messages=vm.bpSystolicValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_pressure_alert_enabled && !vm.threshold.systolic_high_threshold }\\\"></text-input></div></div><span class=device-sub-title>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.BP_DIASTOLIC\\' | translate }}</span> <a class=reset-link ng-click=\\\"vm.threshold.is_blood_pressure_alert_enabled && vm.resetToDefault(\\'diastolic_low_threshold\\', \\'diastolic_high_threshold\\')\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.RESET\\' | translate }} </a><img src=assets/images/global/icons/info.1e28bc5a.svg alt=\\\"Default values - more information\\\" uib-popover-template=vm.diastolicDisclaimer popover-placement=auto popover-append-to-body=true popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16><div class=row><div class=col-md-6><text-input form=alertThresholdForm input-name=bpDiastolicLow model=vm.threshold.diastolic_low_threshold on-blur=\\\"vm.onChange(\\'BP_CUFF\\', model)\\\" is-disabled=!vm.threshold.is_blood_pressure_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.LOW\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.bpDiastolicRegex }}\\\" validation-messages=vm.bpDiastolicValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_pressure_alert_enabled && !vm.threshold.diastolic_low_threshold }\\\"></text-input></div><div class=col-md-6><text-input form=alertThresholdForm input-name=bpDiastolicHigh model=vm.threshold.diastolic_high_threshold on-blur=\\\"vm.onChange(\\'BP_CUFF\\', model)\\\" is-disabled=!vm.threshold.is_blood_pressure_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.HIGH\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.bpDiastolicRegex }}\\\" validation-messages=vm.bpDiastolicValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_pressure_alert_enabled && !vm.threshold.diastolic_high_threshold }\\\"></text-input></div></div></div></div><div class=\\\"col-sm-3 col-xs-12\\\"><div class=device-threshold-card><div class=row><span class=device-title ng-class=\\\"{disabled: !vm.threshold.is_weight_alert_enabled}\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.WEIGHT\\' | translate }}</span> <span class=pull-right authorize=\\\"role:clinical, role:administrative\\\"><switch ng-if=!vm.isLoadingThreshold ng-model=vm.threshold.is_weight_alert_enabled ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.onChange(\\'is_weight_alert_enabled\\')\\\"></switch></span></div><span class=device-sub-title>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.DECREASE\\' | translate }} <img src=assets/images/global/icons/info.1e28bc5a.svg alt=\\\"Default values - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.WEIGHT_SCALE_HELP_TEXT\\' | translate }}\\\" popover-placement=auto popover-append-to-body=true popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></span><div class=row><div class=col-md-6><text-input model=vm.threshold.weight_decrease_num_days on-blur=\\\"vm.onChange(\\'weight_decrease\\', vm.threshold.weight_decrease_pounds, model)\\\" is-disabled=\\\"!(vm.threshold.is_weight_alert_enabled && vm.isAuthorized)\\\" model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.PERIOD\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.numberRegex }}\\\" ng-class=\\\"{ \\'has-error\\': vm.threshold.weight_decrease_pounds && !vm.threshold.weight_decrease_num_days }\\\"></text-input></div><div class=col-md-6><text-input form=alertThresholdForm input-name=weightDecrease model=vm.threshold.weight_decrease_pounds on-blur=\\\"vm.onChange(\\'weight_decrease\\', model, vm.threshold.weight_decrease_num_days)\\\" is-disabled=\\\"!(vm.threshold.is_weight_alert_enabled && vm.isAuthorized)\\\" model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.WEIGHT\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.weightRangeRegex }}\\\" validation-messages=vm.weightValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_weight_alert_enabled && !vm.threshold.weight_decrease_pounds }\\\"></text-input></div></div><span class=device-sub-title>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.INCREASE\\' | translate }}</span><div class=row><div class=col-md-6><text-input model=vm.threshold.weight_increase_num_days on-blur=\\\"vm.onChange(\\'weight_increase\\', vm.threshold.weight_increase_pounds, model)\\\" is-disabled=\\\"!(vm.threshold.is_weight_alert_enabled && vm.isAuthorized)\\\" model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.PERIOD\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.numberRegex }}\\\" ng-class=\\\"{ \\'has-error\\': vm.threshold.weight_increase_pounds && !vm.threshold.weight_increase_num_days }\\\"></text-input></div><div class=col-md-6><text-input form=alertThresholdForm input-name=weightIncrease model=vm.threshold.weight_increase_pounds on-blur=\\\"vm.onChange(\\'weight_increase\\', model, vm.threshold.weight_increase_num_days)\\\" is-disabled=\\\"!(vm.threshold.is_weight_alert_enabled && vm.isAuthorized)\\\" model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.WEIGHT\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.weightRangeRegex }}\\\" validation-messages=vm.weightValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_weight_alert_enabled && !vm.threshold.weight_increase_pounds }\\\"></text-input></div></div></div><br><div class=device-threshold-card><div class=row><span class=device-title ng-class=\\\"{disabled: !vm.threshold.is_heartrate_alert_enabled}\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.HEARTRATE\\' | translate }}</span> <span class=pull-right authorize=\\\"role:clinical, role:administrative\\\"><switch ng-if=!vm.isLoadingThreshold ng-model=vm.threshold.is_heartrate_alert_enabled ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.onChange(\\'is_heartrate_alert_enabled\\')\\\"></switch></span><div class=row><div class=col-md-6><text-input form=alertThresholdForm input-name=heartrateLow model=vm.threshold.heartrate_low_threshold on-blur=\\\"vm.onChange(\\'HEARTRATE\\', model)\\\" is-disabled=!vm.threshold.is_heartrate_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.LOW\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.hrRangeRegex }}\\\" validation-messages=vm.hrValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_heartrate_alert_enabled && (vm.threshold.heartrate_low_threshold === null || vm.threshold.heartrate_low_threshold === undefined || vm.threshold.heartrate_low_threshold < 0) }\\\"></text-input></div><div class=col-md-6><text-input form=alertThresholdForm input-name=heartRateHigh model=vm.threshold.heartrate_high_threshold on-blur=\\\"vm.onChange(\\'HEARTRATE\\', model)\\\" is-disabled=!vm.threshold.is_heartrate_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.HIGH\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.hrRangeRegex }}\\\" validation-messages=vm.hrValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_heartrate_alert_enabled && (vm.threshold.heartrate_high_threshold === null || vm.threshold.heartrate_high_threshold === undefined || vm.threshold.heartrate_high_threshold < 0) }\\\"></text-input></div></div></div></div></div><div class=\\\"col-sm-3 col-xs-6\\\"><div class=device-threshold-card><div class=row><span class=device-title ng-class=\\\"{disabled: !vm.threshold.is_blood_glucose_alert_enabled}\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.BG\\' | translate }}</span> <span class=pull-right authorize=\\\"role:clinical, role:administrative\\\"><switch ng-if=!vm.isLoadingThreshold ng-model=vm.threshold.is_blood_glucose_alert_enabled ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.onChange(\\'is_blood_glucose_alert_enabled\\')\\\"></switch></span></div><a class=reset-link ng-click=\\\"vm.threshold.is_blood_glucose_alert_enabled && vm.resetToDefault(\\'blood_glucose_low_threshold\\', \\'blood_glucose_high_threshold\\')\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.RESET\\' | translate }} </a><img src=assets/images/global/icons/info.1e28bc5a.svg alt=\\\"Default values - more information\\\" uib-popover-template=vm.bgDisclaimer popover-placement=auto popover-append-to-body=true popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16><div class=row><div class=col-md-6><text-input form=alertThresholdForm input-name=bloodGlucoseLow model=vm.threshold.blood_glucose_low_threshold on-blur=\\\"vm.onChange(\\'GLUCOMETER\\', model)\\\" is-disabled=!vm.threshold.is_blood_glucose_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.LOW\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.bgRangeRegex }}\\\" validation-messages=vm.bgValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_glucose_alert_enabled && !vm.threshold.blood_glucose_low_threshold }\\\"></text-input></div><div class=col-md-6><text-input form=alertThresholdForm input-name=bloodGlucoseHigh model=vm.threshold.blood_glucose_high_threshold on-blur=\\\"vm.onChange(\\'GLUCOMETER\\', model)\\\" is-disabled=!vm.threshold.is_blood_glucose_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.HIGH\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.bgRangeRegex }}\\\" validation-messages=vm.bgValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_glucose_alert_enabled && !vm.threshold.blood_glucose_high_threshold }\\\"></text-input></div></div></div></div><div class=\\\"col-sm-2 col-xs-6\\\"><div class=device-threshold-card><div class=row><span class=device-title ng-class=\\\"{disabled: !vm.threshold.is_blood_oxygen_alert_enabled}\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.O2\\' | translate }} </span><span class=pull-right authorize=\\\"role:clinical, role:administrative\\\"><switch ng-if=!vm.isLoadingThreshold ng-model=vm.threshold.is_blood_oxygen_alert_enabled ng-model-options=\\\"{debounce: 500}\\\" ng-change=\\\"vm.onChange(\\'is_blood_oxygen_alert_enabled\\')\\\"></switch></span></div><div class=row><div class=col-md-6><text-input form=alertThresholdForm input-name=bloodOxygenLow model=vm.threshold.blood_oxygen_low_threshold on-blur=\\\"vm.onChange(\\'PULSE_OXIMETER\\', model)\\\" is-disabled=!vm.threshold.is_blood_oxygen_alert_enabled model-options=\\\"{debounce: 500}\\\" label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.LOW\\' | translate }}\\\" field-type=number regex=\\\"{{ vm.boRangeRegex }}\\\" validation-messages=vm.boValidationMessage ng-class=\\\"{ \\'has-error\\': vm.threshold.is_blood_oxygen_alert_enabled && !vm.threshold.blood_oxygen_low_threshold }\\\"></text-input></div></div></div></div></form></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-alert-thresholds-audit-logs/e-alert-thresholds-audit-logs.html\",\"<div class=alert-threshold-audit-logs-container ng-show=\\\"vm.auditLogs.length > 0\\\"><h4>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLD_AUDIT_LOGS.HEADING\\' | translate }}</h4><table class=table><thead class=thead><tr><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLD_AUDIT_LOGS.TIMESTAMP\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLD_AUDIT_LOGS.METRIC\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLD_AUDIT_LOGS.CHANGE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLD_AUDIT_LOGS.CHANGED_BY\\' | translate }}</th></tr></thead><tbody><tr ng-repeat=\\\"log in vm.auditLogs track by $index\\\"><td>{{log.timestamp | date:\\'M/d/yyyy h:mm a\\'}}</td><td>{{ log | alertThresholdAuditLogMetric | capitalize}}</td><td class=changes>{{ log | alertThresholdAuditLogChange | capitalize}}</td><td>{{log.user.user_profiles[0] | providerName}}</td></tr></tbody></table><card-wrapper ng-if=\\\"vm.auditLogsCount > vm.queryString._perPage\\\"><card card-name=pagination><ul uib-pagination items-per-page=vm.queryString._perPage total-items=vm.auditLogsCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.queryString._page ng-change=vm.goToPage()></ul></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-audio-call/e-audio-call-tooltip-menu.html\",\"<div><ul class=e-audio-call-tooltip-menu><li class=e-audio-call-tooltip-menu-item ng-repeat=\\\"phone in (vm.manualOnly ? [] : vm.phoneNumbers) track by $index\\\"><div ng-click=\\\"vm.onMakeCall(phone.number, phone.type)\\\"><div class=e-audio-call-tooltip-menu-title>{{\\'AUDIO_CALL.CALL\\' | translate}} {{phone.type | phonetype}}</div><div>{{phone.number | phoneNumber }}</div></div></li><!--    COMMENT OUT FOR NOW, NEED TO FIX UI/CSS issues. --><li><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HEADER template-url=app/components/portal/enterprise/e-audio-call/log-calls.html close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SAVE_CALL action-callback=vm.saveCallLog(vm.callLogOptions.call_log_data) custom-payload=vm.callLogOptions><span ng-click=\\\"vm.callLogOptions.call_log_data.duration_ms=null\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.LOG_CALL\\'| translate }}</span></are-you-sure-modal></li><li><are-you-sure-modal header-trans=\\\"\\\" body-trans=\\\"{{\\'AUDIO_CALL.TIME_MODAL.BODY\\' | translate : { call_time: vm.textLogTime, reportPeriodText: vm.reportingPeriodText, service: vm.observationReport.service.name } }}\\\" close-btn-trans=AUDIO_CALL.TIME_MODAL.NO action-btn-trans=AUDIO_CALL.TIME_MODAL.YES action-callback=vm.saveTextLog() extra-class=incomplete-modal short-circuit-if=false><span ng-click=\\\"vm.callLogOptions.call_log_data.duration_ms=null\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.TEXT_LOG.LOG_TEXT\\'| translate }}</span></are-you-sure-modal></li></ul></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-audio-call/e-audio-calls.html\",\"<span class=e-audio-calls><div ng-if=!vm.manualOnly class=\\\"e-audio-call-button call-button-icon\\\" ng-class=\\\"vm.onCall ? \\'disabled\\': \\'enabled\\'\\\" popover-enable=!vm.onCall popover-placement=\\\"auto bottom\\\" popover-trigger=\\\"\\'outsideClick\\'\\\" popover-append-to-body=false popover-class=popover-no-margin uib-popover-template=\\\"\\'app/components/portal/enterprise/e-audio-call/e-audio-call-tooltip-menu.html\\'\\\"><i class=e-audio-call-icon-call></i></div><div ng-if=vm.manualOnly ng-include=\\\"\\'app/components/portal/enterprise/e-audio-call/e-audio-call-tooltip-menu.html\\'\\\"></div></span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-audio-call/log-calls.html\",\"<div id=modal-call-log-template class=\\\"modal-wrapper call-modal\\\"><div class=modal-header><h4 class=modal-title>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.HEADER\\' | translate }}</h4></div><div class=call-summary><div class=\\\"alert alert-info call-summary-info\\\" ng-if=modalOptions.payload.call_log_data.total_call_duration_minutes><strong>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOTAL_CALL_TIME\\' | translate:{ total_call_duration_minutes: modalOptions.payload.call_log_data.total_call_duration_minutes } }}</strong></div><div class=\\\"alert alert-warning call-summary-warning\\\" ng-if=modalOptions.payload.call_log_data.total_call_duration_minutes>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.TOTAL_CALL_TIME_OVER_20_WARNING\\' | translate }}</div></div><div class=\\\"modal-body row\\\"><form id=vm.callLogForm name=vm.callLogForm class=top-label-form novalidate><select-input class-name=formfield-half form=vm.callLogForm ng-init=\\\"modalOptions.payload.call_log_data.provider_user_profile_id = modalOptions.payload.provider\\\" model=modalOptions.payload.call_log_data.provider_user_profile_id options-array=::modalOptions.payload.providerOptions label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.PROVIDER_NAME\\' | translate}}\\\" input-name=provider-name input-id=provider-name height-class=input-sm is-required=true tab-index=1></select-input><select-input class-name=formfield-half form=vm.callLogForm ng-init=\\\"modalOptions.payload.call_log_data.to_phone_number = modalOptions.payload.patientNumber\\\" model=modalOptions.payload.call_log_data.to_phone_number options-array=::modalOptions.payload.patientNumberOptions label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.PATIENT_NUMBER\\' | translate}}\\\" input-name=phone-number input-id=phone-number height-class=input-sm is-required=true tab-index=2></select-input><select-input ng-if=!modalOptions.payload.hasMultipleServices class-name=formfield-half form=vm.callLogForm model=modalOptions.payload.call_log_data.duration_ms options-array=::modalOptions.payload.callDurationOptions label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.CALL_DURATION\\' | translate}}\\\" input-name=duration input-id=duration height-class=input-sm is-required=true tab-index=3></select-input><select-input ng-if=!modalOptions.payload.hasMultipleServices class-name=formfield-half form=vm.callLogForm ng-init=\\\"modalOptions.payload.call_log_data.response = modalOptions.payload.connectionStatus\\\" model=modalOptions.payload.call_log_data.response options-array=::modalOptions.payload.connectionStatusOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.CONNECTION_STATUS\\'| translate }}\\\" input-name=connection-status input-id=connection-status height-class=input-sm is-required=true tab-index=4></select-input><select-input ng-if=modalOptions.payload.hasMultipleServices class-name=formfield-half form=vm.callLogForm model=modalOptions.payload.call_log_data.rpm_duration_ms options-array=::modalOptions.payload.callDurationOptions label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.RPM_CALL_DURATION\\' | translate}}\\\" input-name=rpm-duration input-id=rpm-duration height-class=input-sm tab-index=3></select-input><select-input ng-if=modalOptions.payload.hasMultipleServices class-name=formfield-half form=vm.callLogForm ng-init=\\\"modalOptions.payload.call_log_data.rpm_response = modalOptions.payload.connectionStatus\\\" model=modalOptions.payload.call_log_data.rpm_response options-array=::modalOptions.payload.connectionStatusOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.CONNECTION_STATUS\\'| translate }}\\\" input-name=rpm-connection-status input-id=rpm-connection-status height-class=input-sm is-required=!!modalOptions.payload.call_log_data.rpm_duration_ms tab-index=4></select-input><select-input ng-if=modalOptions.payload.hasMultipleServices class-name=formfield-half form=vm.callLogForm model=modalOptions.payload.call_log_data.ccm_duration_ms options-array=::modalOptions.payload.callDurationOptions label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.CCM_CALL_DURATION\\' | translate}}\\\" input-name=ccm-duration input-id=ccm-duration height-class=input-sm tab-index=5></select-input><select-input ng-if=modalOptions.payload.hasMultipleServices class-name=formfield-half form=vm.callLogForm ng-init=\\\"modalOptions.payload.call_log_data.ccm_response = modalOptions.payload.connectionStatus\\\" model=modalOptions.payload.call_log_data.ccm_response options-array=::modalOptions.payload.connectionStatusOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.CONNECTION_STATUS\\'| translate }}\\\" input-name=ccm-connection-status input-id=ccm-connection-status height-class=input-sm is-required=!!modalOptions.payload.call_log_data.ccm_duration_ms tab-index=6></select-input></form><div><button id=btn-action type=submit class=\\\"btn btn-primary pull-right\\\" ng-click=modalOptions.ok(true) form=vm.callLogForm ng-disabled=\\\"vm.callLogForm.$invalid || !(\\n               (modalOptions.payload.call_log_data.duration_ms && modalOptions.payload.call_log_data.response) ||\\n               (modalOptions.payload.call_log_data.rpm_duration_ms && modalOptions.payload.call_log_data.rpm_response) ||\\n               (modalOptions.payload.call_log_data.ccm_duration_ms && modalOptions.payload.call_log_data.ccm_response)\\n            )\\\" promise-btn>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.CALL_LOG_FORM.SAVE\\'| translate }}</button> <button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=\\\"btn btn-secondary pull-left\\\">{{modalOptions.closeButtonText}}</button></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/billing.html\",\"<div id=billing><h1>{{\\'PORTAL.BILLING.BODY.HEADER\\' | translate}}</h1><div ui-view></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/e-care-plan.html\",\"<div class=e-care-plan authorize=role:clinical><div class=\\\"e-user-header row\\\" ng-hide=vm.isCompact><div ng-if=!vm.patientUserProfile.deactivated_at class=\\\"e-user-paging-header col-md-1 col-md-1 col-xs-12\\\"><div class=row><div class=\\\"chevron-left col-md-6 col-sm-6 col-xs-6\\\" ng-class=\\\"{\\'disabled\\': !vm.hasPrev() || vm.isLoadingNextPatient}\\\" ng-click=\\\"vm.hasPrev() && vm.prev()\\\"></div><div class=\\\"chevron-right col-md-6 col-sm-6 col-xs-6\\\" ng-class=\\\"{\\'disabled\\': !vm.hasNext() || vm.isLoadingNextPatient}\\\" ng-click=\\\"vm.hasNext() && vm.next()\\\"></div></div></div><div class=\\\"e-user-filter-header col-md-8 col-sm-8 col-xs-12\\\"><div class=patient-filters>{{ vm.reportPeriodText }} <span ng-if=vm.patientUserProfile.deactivated_at>&#8211; <span class=red>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.DEACTIVATED_HEADER\\' | translate }}</span></span><div class=patient-count>{{ vm.patientPagingText }}</div></div></div><div class=\\\"back-buttons-container col-md-3 col-sm-3 col-xs-12 pull-right ccm-button\\\"><div class=ccm-rpm-toggle ng-if=vm.currentRPMObservationReport ui-sref=\\\"enterprise.observation_report({user_profile_id: vm.patientUserProfile.id, observation_report_id: vm.currentRPMObservationReport.id})\\\">{{\\'PORTAL.ENTERPRISE.BUTTON_TABS.RPM\\' | translate}}</div><button ng-show=\\\"vm.showBackToFilter && !vm.isFilteredServiceRPM\\\" type=button class=\\\"btn btn-primary btn-back pull-right\\\" ui-sref=\\\"enterprise.ccm-patients({preserve_filter: \\'true\\'})\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.RETURN_TO_FILTERED_LIST\\' | translate }}</button> <button ng-show=\\\"vm.showBackToFilter && vm.isFilteredServiceRPM\\\" type=button class=\\\"btn btn-primary btn-back pull-right\\\" ui-sref=\\\"enterprise.patients({preserve_filter: \\'true\\'})\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.RETURN_TO_FILTERED_LIST\\' | translate }}</button></div></div><div class=e-user-detail-outer ng-class=\\\"{\\'compact\\' : vm.isCompact}\\\"><card-wrapper ng-if=!vm.isCompact class=e-user-detail-wrapper><card card-name=e-user-detail-card><section class=card-header><patient-header patient-user-profile=vm.patientUserProfile provider-patient-authorizations=vm.providerPatientAuthorizations observation-report=vm.fakeObservationReport enterprise-customer=vm.enterpriseCustomer user=vm.user features=vm.features report-period-text=vm.reportPeriodText></patient-header><ccm-header patient-user-profile=vm.patientUserProfile features=vm.features user=vm.user enterprise-customer=vm.enterpriseCustomer></ccm-header></section></card></card-wrapper></div><span class=ccm-block ng-if=!vm.isCompact>.</span><div class=service-tabs><ul class=\\\"nav nav-tabs\\\" ng-class=\\\"{\\'nav-stacked\\': vertical, \\'nav-justified\\': justified}\\\"><li ng-class=\\\"{active: vm.activeStep === step.url }\\\" class=\\\"uib-tab nav-item ng-scope ng-isolate-scope\\\" ng-repeat=\\\"step in vm.carePlanSteps track by $index\\\" index=$index heading={{step.label}}><a ui-sref=.{{step.url}} ng-click=vm.setActiveStep(step) class=\\\"nav-link ng-binding\\\">{{step.label}}</a></li></ul><div ui-view=carePlanStep update-care-plan=vm.updateCarePlan() is-compact=vm.isCompact></div><button class=\\\"btn btn-primary ccm-complete\\\" ng-click=vm.complete() ng-if=!vm.patientCarePlan.completed_at ng-disabled=vm.isPrimaryProviderChangeInProgress>{{\\'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BUTTONS.COMPLETE\\' | translate}}</button><div class=ccm-approve><button class=\\\"btn btn-primary btn-size\\\" ng-click=vm.approve() ng-disabled=\\\"!vm.isLoggedInUserPrimaryProvider || vm.isPrimaryProviderChangeInProgress\\\" ng-if=\\\"vm.patientCarePlan.completed_at && !vm.patientCarePlan.approved_at && !vm.isLoadingCompletePlan\\\">{{\\'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BUTTONS.APPROVE\\' | translate}}</button> <i class=info-link ng-if=\\\"vm.patientCarePlan.completed_at && !vm.patientCarePlan.approved_at && !vm.isLoadingCompletePlan\\\" popover-placement=top uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.CCM.CARE_PLAN.BUTTONS.APPROVAL_COMPLIANCE_INFO\\' | translate }}\\\" popover-trigger=\\\"\\'mouseenter\\'\\\"></i></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-ccm-observation-report/e-ccm-observation-report.html\",\"<div class=e-user-detail-outer><div class=\\\"e-user-header row\\\"><div class=\\\"e-user-paging-header col-md-1 col-md-1 col-xs-12\\\"><div class=row><div class=\\\"chevron-left col-md-6 col-sm-6 col-xs-6\\\" ng-class=\\\"{\\'disabled\\': !vm.hasPrev() || vm.isLoadingNextPatient}\\\" ng-click=\\\"vm.hasPrev() && vm.prev()\\\"></div><div class=\\\"chevron-right col-md-6 col-sm-6 col-xs-6\\\" ng-class=\\\"{\\'disabled\\': !vm.hasNext() || vm.isLoadingNextPatient}\\\" ng-click=\\\"vm.hasNext() && vm.next()\\\"></div></div></div><div class=\\\"e-user-filter-header col-md-8 col-sm-8 col-xs-12\\\"><div class=patient-filters>{{ vm.reportPeriodText }} <span ng-if=vm.patientUserProfile.deactivated_at>&#8211; <span class=red>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.DEACTIVATED_HEADER\\' | translate }}</span></span><div class=patient-count>{{ vm.patientPagingText }}</div></div></div><div class=\\\"back-buttons-container col-md-3 col-sm-3 col-xs-12 pull-right ccm-button\\\"><div class=ccm-rpm-toggle ng-if=vm.currentRPMObservationReport ui-sref=\\\"enterprise.observation_report({user_profile_id: vm.patientUserProfile.id, observation_report_id: vm.currentRPMObservationReport.id})\\\">{{\\'PORTAL.ENTERPRISE.BUTTON_TABS.RPM\\' | translate}}</div><button type=button class=\\\"btn btn-primary pull-right\\\" ng-if=\\\"!vm.isReportFromCurrentPeriod && !vm.patientUserProfile.deactivated_at\\\" ui-sref=\\\"enterprise.ccm_observation_report.goals({user_profile_id: vm.observationReport.patient_user_profile_id, observation_report_id: vm.currentReport.id})\\\" ui-sref-opts=\\\"{reload: true}\\\" ng-disabled=!vm.currentReport>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.THIS_MONTH_REPORT\\' | translate }}</button> <button ng-show=\\\"vm.showBackToFilter && !vm.isFilteredServiceRPM\\\" type=button class=\\\"btn btn-primary btn-back pull-right\\\" ui-sref=\\\"enterprise.ccm-patients({preserve_filter: \\'true\\'})\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.RETURN_TO_FILTERED_LIST\\' | translate }}</button> <button ng-show=\\\"vm.showBackToFilter && vm.isFilteredServiceRPM\\\" type=button class=\\\"btn btn-primary btn-back pull-right\\\" ui-sref=\\\"enterprise.patients({preserve_filter: \\'true\\'})\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.RETURN_TO_FILTERED_LIST\\' | translate }}</button></div></div><card-wrapper class=e-user-detail-wrapper><card card-name=e-user-detail-card><section class=card-header><patient-header patient-user-profile=vm.patientUserProfile provider-patient-authorizations=vm.providerPatientAuthorizations observation-report=vm.observationReport enterprise-customer=vm.enterpriseCustomer device-types=vm.deviceTypes features=vm.features report-period-text=vm.reportPeriodText user=vm.user others-active=vm.othersActive></patient-header><ccm-header patient-user-profile=vm.patientUserProfile features=vm.features user=vm.user enterprise-customer=vm.enterpriseCustomer></ccm-header></section></card></card-wrapper><card-wrapper class=e-user-detail-wrapper><card card-name=e-user-detail-card><div class=inner-wrapper><div class=row><div id=tabs class=module><div class=open><div class=col-md-12><div class=col-md-6><e-care-plan patient-user-profile=vm.patientUserProfile patient-care-plan=vm.patientCarePlan user=vm.user is-compact=true features=vm.features current-reporting-period=vm.currentReportingPeriod></e-care-plan><highcharts-dashboard config=vm.callLogGraph></highcharts-dashboard><e-template-visualizer ng-if=vm.observationReport.reporting_period_id user=vm.user patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer date-range=vm.dateRange observation-report=vm.observationReport observation-reports=vm.observationReports timesheets=vm.timesheets on-submit-update-notes=\\\"vm.postObservationReport({model: model})\\\" is-report-editable=vm.isReportEditable is-report-from-current-period=vm.isReportFromCurrentPeriod report-period-txt=vm.reportPeriodText features=vm.features go-to-next-patient=\\\"vm.goToNextPatient({isNext: true})\\\"></e-template-visualizer></div><div class=col-md-6><e-template-components ng-if=vm.observationReport.reporting_period_id active-tab-key=\\\"\\'CCM\\'\\\" user=vm.user patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer component-data=vm.enterpriseCustomer.observation_report_template on-update=\\\"vm.onUpdateComponentItem({model: model})\\\" on-create=\\\"vm.onCreateComponentItem({model: model})\\\" on-delete=\\\"vm.onDeleteComponentItem({model: model})\\\" on-submit=\\\"vm.postObservationReport({model: model})\\\" observation-report=vm.observationReport report-period-txt=vm.reportPeriodText></e-template-components></div></div></div></div></div></div></card></card-wrapper><div class=ibeat-disclaimer>{{\\'PORTAL.ENTERPRISE.DISCLAIMERS.CLAIMS\\' | translate}}</div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-ccm-patients/e-ccm-patients.html\",\"<div id=e-ccm-patients authorize=role:clinical><div class=inner-patients><service-options selected-option=care></service-options><status-filter on-change=\\\"vm.onChange(property, payload)\\\" is-ccm=true></status-filter><card-wrapper class=e-users-card-wrapper><card card-name=e-users-card><section class=card-header><div class=card-header-inner><span class=text><span>{{vm.patientsCount}} Patient{{vm.patientsCount !== \\'1\\' ? \\'s\\' : \\'\\'}} </span></span><button ng-show=vm.hasFilters() class=\\\"btn clear-filter pull-right\\\" ng-click=vm.clearPatientReportingFilters() tab-index=9>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CLEAR_FILTERS\\' | translate}}</button> <button type=button class=\\\"btn filter-btn pull-right\\\" ng-click=\\\"vm.showFilters = !vm.showFilters\\\"><div class=filter></div><span>{{vm.showFilters ? \\'Hide\\' : \\'Show\\'}} filters</span></button><export-btn authorize=\\\"role:clinical, role:administrative\\\" all-items-handler=vm.download(false) filtered-items-handler=vm.download(true) all-items-text=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.ALL_PATIENTS filtered-items-text=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.FILTERED_PATIENTS collapse-handler=vm.isExportCollapsed is-disabled=\\\"vm.claims.data.data.length==0\\\"></export-btn></div></section><div id=e-users class=module us-spinner spinner-theme=black spinner-on=vm.showSpinner><div ng-show=vm.showFilters class=\\\"row list-filters\\\"><form name=queryForm><div class=\\\"list-filter small\\\"><text-input class-name=name-query form=queryForm model=vm.query label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" on-change=\\\"vm.onChange(\\'query\\', {model: model})\\\" placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" input-id=query input-name=query model-options=\\\"{debounce: 700}\\\" tab-index=1></text-input></div><div class=\\\"list-filter small\\\"><select-input form=queryForm model=vm.primaryProviderQuery label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.MONITORING_PROVIDER\\' | translate}}\\\" on-change=\\\"vm.onChange(\\'$providers.id$\\', {model: model})\\\" options-array=::vm.primaryProviderOptions input-name=primary-provider-query input-id=primary-provider-query tab-index=5></select-input></div><div class=\\\"list-filter small\\\"><select-input class-name=ccm-time form=ccmTimeForm model=vm.ccmTime options-array=vm.ccmTimesOptions on-change=\\\"vm.onChange(\\'current_period_timesheet_range\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.CCM_TIME\\' | translate}}\\\" input-name=ccm-time input-id=ccm-time tab-index=6></select-input></div><div class=\\\"list-filter small no-print\\\"><label class=filter-header>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.PATIENT_GROUPS\\' | translate}}</label><div class=rpm-device-filter ng-dropdown-multiselect=\\\"\\\" disabled extra-settings=vm.groupDropdownSettings options=vm.groupOptions selected-model=vm.groupOptionsModel translation-texts=vm.groupDropdownText events=\\\"{ onSelectionChanged: vm.groupSelectionChanged }\\\"></div></div><div class=\\\"list-filter small\\\"><select-input class-name=\\\"\\\" model=vm.patient_services_count options-array=vm.patientServicesCountOptions on-change=\\\"vm.onChange(\\'patient_services_count\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.OTHER_SERVICES\\' | translate}}\\\" input-name=rpm-time input-id=rpm-time tab-index=3></select-input></div><div class=\\\"list-filter small\\\" ng-if=vm.spoken_with_patient_filter_enabled><select-input class-name=name-query form=queryForm model=vm.spoken_with_patient options-array=vm.spokenWithPatientOptions on-change=\\\"vm.onChange(\\'spoken_with_patient\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.SPOKEN_WITH_PATIENT\\' | translate}}\\\" input-name=spoken-with-patient input-id=spoken-with-patient></select-input></div><div class=\\\"list-filter small filter-tbl-margin\\\"><label>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.CONDITIONS\\' | translate }}</label><tags-input id=dx ng-model=vm.diagnosis_codes name=diagnosis on-tag-added=vm.onDiagnosisAdded() on-tag-removed=vm.onDiagnosisAdded() tabindex=1 placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DX_CODES\\' | translate }}\\\" min-tags=0 add-from-autocomplete-only=true key-property=code display-property=code><div us-spinner=\\\"{radius:4, width:2, length: 4, top: \\'50%\\', left: \\'-13px\\'}\\\" spinner-theme=black spinner-on=vm.isTagLoading></div><auto-complete source=vm.loadDiagnoses($query) key-property=code debounce-delay=250 display-property=description max-results-to-show=8 select-first-match=true></auto-complete></tags-input></div></form></div><table class=table><thead class=thead><tr><th></th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.PATIENT\\' | translate}}<table-sort id=patient-chevron sort-options=vm.sortOptions.name_last field-is-selected=vm.inSort(vm.sortOptions.name_last) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.name_last) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>PATIENT<br>SERVICES<table-sort sort-options=vm.sortOptions.patient_services_count field-is-selected=vm.inSort(vm.sortOptions.patient_services_count) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.patient_services_count) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.CONDITIONS\\' | translate}}</th><th uib-popover-html=\\\"\\'{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.LAST_REVIEWED\\' | translate}}\\'\\\" popover-append-to-body=true popover-class=status-popover popover-trigger=\\\"\\'mouseenter\\'\\\">LAST<br>REVIEWED<table-sort sort-options=vm.sortOptions.last_reviewed field-is-selected=vm.inSort(vm.sortOptions.last_reviewed) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.last_reviewed) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>LAST<br>CONTACTED<table-sort sort-options=vm.sortOptions.call_log field-is-selected=vm.inSort(vm.sortOptions.call_log) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.call_log) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>{{vm.monthYear}}<br>CCM time<table-sort sort-options=vm.sortOptions.timesheet_sum field-is-selected=vm.inSort(vm.sortOptions.timesheet_sum) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.timesheet_sum) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th></tr></thead><tbody><tr ng-repeat=\\\"userProfile in vm.patients track by userProfile.id\\\" ng-click=vm.onRowClick($index)><td><div ng-if=!userProfile.care_plan.completed_at class=unread><i><img src=../assets/images/enterprise/patient-reporting/unread.svg class=unread-dot></i></div></td><td ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\" class=user-name><a ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\"><div class=stretch><i class=\\\"fa fa-user-md\\\" ng-if=userProfile.is_provider_device_test_account></i> <span class=badge ng-if=userProfile.is_fake>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.DEMO\\' | translate}} </span><span class=badge ng-if=userProfile.is_internal>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.INTERNAL\\' | translate}} </span><span class=patient-info>{{userProfile.name_first}} {{userProfile.name_last}}<br>{{userProfile.gender | gender}}, {{userProfile.date_of_birth | dobToAge}}</span></div></a></td><td class=user-name><a ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\"><div class=stretch><span class=patient-info>{{ userProfile.model_patient_services.length > 1 ? \\'RPM\\' : \\'\\' }}</span></div></a></td><td ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\"><diagnosis-codes codes=userProfile.enterprise_chart.diagnosis.codes limit=3></diagnosis-codes></td><td><a ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\"><div class=stretch ng-show=userProfile.ccm_last_reviewed_by><div ng-show=userProfile.ccm_last_reviewed_at>{{ userProfile.ccm_last_reviewed_at | humanizeTimestamp }}</div><div ng-show=userProfile.ccm_last_reviewed_by>by {{ vm.getProviderName(userProfile.ccm_last_reviewed_by) }}</div></div><div class=stretch ng-hide=userProfile.ccm_last_reviewed_at>Not reviewed yet</div></a></td><td><a ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\"><div class=stretch ng-if=\\\"userProfile.call_logs.length > 0\\\"><div ng-if=userProfile.call_logs[0]>{{ userProfile.call_logs[0].created_at | humanizeTimestamp }}</div><div ng-if=userProfile.call_logs[0].provider_user_profile_id>by {{ vm.getProviderName(userProfile.call_logs[0].provider_user_profile_id) }}</div></div><div class=stretch ng-hide=userProfile.call_logs[0].created_at>No call log</div></a></td><td class=ccm-minutes><!-- Split button --><div ng-if=\\\"userProfile.enterprise.missing_report_dates.length > 0\\\" class=\\\"btn-group dropdown-btns\\\"><button type=button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.navigateToReport(userProfile, userProfile.enterprise.missing_report_dates[0])\\\">{{userProfile.enterprise.missing_report_dates[0].period_started_at | date:\\'mediumDate\\' : \\'UTC/GMT\\'}}</button> <button type=button class=\\\"btn btn-primary dropdown-toggle\\\" data-toggle=dropdown aria-haspopup=true aria-expanded=false><span class=caret></span> <span class=sr-only>Toggle Dropdown</span></button><ul class=dropdown-menu><li ng-repeat=\\\"missingReport in userProfile.enterprise.missing_report_dates\\\"><a ng-click=\\\"vm.navigateToReport(userProfile, missingReport)\\\">{{missingReport.period_started_at | date:\\'mediumDate\\' : \\'UTC/GMT\\'}}</a></li></ul></div><a ui-sref=\\\"{{ userProfile | ccmPatientUiSref }}\\\"><div class=stretch><div ng-if=\\\"!userProfile.enterprise.missing_report_dates \\\"><span>{{ userProfile.patient_reports[0].reporting_period_id === vm.currentReportingPeriod.id ? userProfile.patient_reports[0].timesheet_sum : 0 | duration:\\'seconds\\':\\\"m \\'minutes\\'\\\" }}</span></div></div></a><span class=data-actions><a ng-class=\\\"{\\'noclick\\': vm.observationReportService.intervalId}\\\" ng-click=vm.getPDF(userProfile)><i class=download></i> </a><a ng-click=\\\"vm.observationReportService.copyLinkToClipboard(\\'enterprise.ccm_observation_report.goals\\', {user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><i class=copy></i></a></span></td></tr><tr ng-if=\\\"vm.patients.length < 1\\\"><td>{{\\'PORTAL.ENTERPRISE.GLOBAL.NONE\\' | translate}}</td><td></td><td></td></tr></tbody></table></div><card-wrapper><card card-name=\\\"pagination transparent\\\"><div ng-if=\\\"vm.patientsCount > 0\\\" class=pagination-options><span class=show>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.SHOW\\' | translate}}</span><select-input id=pagination-options options-array=::vm.optionsForPagination model=vm.itemsPerPage on-change=\\\"vm.onChange(\\'_perPage\\', {model: model})\\\"></select-input><span class=results>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.RESULTS\\' | translate}}</span></div><ul ng-if=\\\"vm.patientsCount > 0\\\" uib-pagination items-per-page=vm.itemsPerPage total-items=vm.patientsCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></card></card-wrapper></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-dashboard/e-dashboard.html\",\"<div id=e-dashboard class=enterprise><div class=inner-dashboard><h1>{{\\'PORTAL.ENTERPRISE.GLOBAL.WELCOME\\' | translate}}, {{::vm.enterpriseCustomer.name}}</h1><!-- Payment --><e-notification-microdeposits user=vm.user enterprise-customer=vm.enterpriseCustomer></e-notification-microdeposits><e-payment-method stripe-customer=vm.stripeCustomer authorize=role:biller enterprise-customer=vm.enterpriseCustomer next-state-tab=\\\"{tab: \\'payment\\'}\\\" next-state=enterprise.practicesettingstab></e-payment-method><e-overdue-invoice ng-if=vm.enterpriseCustomer.overdue_invoice enterprise-customer=vm.enterpriseCustomer next-state-tab=\\\"{tab: \\'payment\\'}\\\" next-state=enterprise.practicesettingstab></e-overdue-invoice><!-- no patients have been enrolled. --><card-wrapper ng-if=\\\"vm.patients_enrollment_count === 0\\\" authorize=role:administrative><card card-name=\\\"alert ibeat\\\"><div class=\\\"col left\\\">{{\\'PORTAL.ALERTS.MISSING_ENROLLMENTS.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h2>{{\\'PORTAL.ALERTS.MISSING_ENROLLMENTS.BODY.HEADER\\' | translate }}</h2><p>{{\\'PORTAL.ALERTS.MISSING_ENROLLMENTS.BODY.TEXT\\' | translate:vm.translationData}}</p><div class=actions><button class=\\\"btn btn-primary pull-left\\\" type=button ng-click=vm.navigate() ui-sref=enterprise.enrollments promise-btn=vm.submitPromise>{{\\'PORTAL.ALERTS.MISSING_ENROLLMENTS.BUTTONS.ACTION\\' | translate}}</button></div></div></card></card-wrapper><e-task-summary authorize=role:clinical user=vm.user summary-data=vm.patientDashboard enterprise-customer=vm.enterpriseCustomer></e-task-summary><e-task-ccm-summary authorize=role:clinical user=vm.user ccm-summary-data=vm.patientDashboard enterprise-customer=vm.enterpriseCustomer></e-task-ccm-summary><e-task-outcomes-dashboard authorize=role:clinical user=vm.user features=vm.features outcomes-data=vm.outcomesDashboard offices=vm.offices enterprise-customer=vm.enterpriseCustomer></e-task-outcomes-dashboard><div ng-repeat=\\\"task in vm.enterpriseCustomerTasks\\\"><e-task-upload ng-if=\\\"task.type === \\'BULK_ENROLLMENT_UPLOAD\\'\\\" authorize=\\\"role:clinical, role:administrative\\\" user=vm.user enterprise-customer=vm.enterpriseCustomer enterprise-customer-task=task></e-task-upload></div><card-wrapper ng-if=\\\"vm.enterpriseCustomerTasks.length === 0\\\"><card><section class=\\\"card-header border-bottom\\\"><div class=card-header-inner><h3 class=text>Your account is up to date</h3></div></section><section><br><ul><li>Click here to <a ui-sref=enterprise.enrollments>enroll a new patient.</a></li></ul></section></card></card-wrapper><links authorize=role:biller></links></div><div ui-view></div><intercom enterprise-customer=vm.enterpriseCustomer></intercom><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-deactivated-patients/e-deactivated-patients.html\",\"<div id=e-patients class=enterprise><div class=inner-patients><h1>{{\\'PORTAL.ENTERPRISE.GLOBAL.DEACTIVATED_PATIENTS\\' | translate}}</h1><button type=button class=\\\"btn btn-primary btn-back\\\" ui-sref=enterprise.patients>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.VIEW_ACTIVE\\' | translate}}</button><e-deactivated-users-card user=vm.user enterprise-customer=vm.enterpriseCustomer device-types=vm.deviceTypes current-reporting-period=vm.currentReportingPeriod patient-dashboard=vm.patientDashboard e-user-profiles=vm.eUserProfiles providers=vm.providers></e-deactivated-users-card></div><div ui-view></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments.html\",\"<div id=e-inner-enrollments class=enterprise><div class=inner-enrollments><h1>{{::vm.enterpriseCustomer.name}}\\'s {{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.HEADER\\' | translate}}</h1><p class=subheader>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.COPY\\' | translate}} Email: {{vm.supportEmail}}, Phone: {{vm.supportPhone}}</p><button id=btn-add-enrollment class=\\\"btn btn-primary pull-right\\\" ng-disabled=::vm.disableEnrollments ng-click=vm.createEnrollmentRequest() authorize=role:administrative>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BUTTONS.CREATE\\' | translate}}</button><e-enrollments-list authorize=role:administrative enterprise-customer-id=vm.enterpriseCustomer.id enrollments=vm.enrollments device-types=vm.deviceTypes edit-state=enterprise.enrollment enrollment-statuses=vm.enrollmentStatuses primary-providers=vm.primaryProviders></e-enrollments-list></div><div ui-view></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-five9-call/e-five9-call-menu.html\",\"<div><ul class=e-audio-call-tooltip-menu qa-id=five9-call-menu><li class=e-audio-call-tooltip-menu-item ng-repeat=\\\"phone in vm.phoneNumbers track by $index\\\"><button type=button class=five9-call-menu-button ng-disabled=vm.callDisabled(phone) ng-click=vm.startCall(phone) qa-id=five9-call-phone-option><div class=e-audio-call-tooltip-menu-title>Call {{ phone.type | phonetype }} with Five9</div><div>{{ phone.number | phoneNumber }}</div></button> <button type=button class=\\\"five9-call-menu-button five9-text-menu-button\\\" ng-if=\\\"vm.validSmsPhone(phone) && vm.isSmsEnabled()\\\" ng-disabled=vm.textDisabled(phone) ng-click=vm.startText(phone) qa-id=five9-text-phone-option><div class=e-audio-call-tooltip-menu-title>Prepare text {{ phone.type | phonetype }} in Five9</div><div>{{ phone.number | phoneNumber }}</div></button></li></ul><e-audio-calls class=five9-manual-log-actions manual-only=true patient-user-profile=vm.patientUserProfile observation-report=vm.observationReport enterprise-customer=vm.enterpriseCustomer user=vm.user reporting-period-text=vm.reportingPeriodText></e-audio-calls></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-five9-call/e-five9-call.html\",\"<span class=e-five9-call><div class=\\\"e-audio-call-button call-button-icon\\\" ng-class=\\\"vm.buttonDisabled() ? \\'disabled\\' : \\'enabled\\'\\\" popover-enable=!vm.buttonDisabled() popover-placement=\\\"auto bottom\\\" popover-trigger=\\\"\\'outsideClick\\'\\\" popover-append-to-body=false popover-class=popover-no-margin uib-popover-template=\\\"\\'app/components/portal/enterprise/e-five9-call/e-five9-call-menu.html\\'\\\" qa-id=five9-call-button aria-label=\\\"{{ vm.statusLabel() }}\\\"><i class=e-audio-call-icon-call></i></div><span class=sr-only qa-id=five9-call-status>{{ vm.statusLabel() }}</span> </span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-notes/e-notes-edit-template.html\",\"<div id=e-edit-template-component class=modal-wrapper><div class=add-component-item><div class=modal-header ng-if=modalOptions.header><h4 class=modal-title>{{modalOptions.header}}</h4></div></div><div class=modal-body><form class=top-label-form name=createItemForm novalidate><div class=form-group><text-input class-name=new-component-item form=createItemForm model=modalOptions.item tab-index=1 is-required=true input-name=new-component-item input-id=new-component-item></text-input></div></form></div><div class=modal-footer><button type=button id=btn-cancel class=\\\"btn btn-secondary\\\" ng-click=modalOptions.close(false)>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button type=submit id=btn-save class=\\\"btn btn-primary\\\" ng-disabled=createItemForm.$invalid ng-click=modalOptions.ok(modalOptions.item) promise-btn=modalOptions.submitPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-notes/e-notes.html\",\"<div id=e-notes-template-builder><section id=e-notes-component><div class=e-notes-list-wrapper><span class=e-notes-list-header><span class=e-notes-list-header-text>{{vm.header}}</span> <button class=\\\"btn add-button\\\" ng-click=vm.onEditOrCreate()>{{ \\'GLOBAL.BUTTONS.ADD\\' | translate }}</button></span><ul class=e-notes-list><li class=e-notes-list-item ng-class=\\\"{\\'e-note-added\\': isClicked}\\\" ng-repeat=\\\"note in vm.notes track by $index\\\"><div class=e-notes-plus-icon></div><span ng-click=\\\"vm.onNoteSelected(note); isClicked = true\\\" class=e-notes-list-item-text>{{note}}</span><!-- https://github.com/danklammer/bytesize-icons --><div class=e-notes-action><svg ng-click=\\\"vm.onEditOrCreate(note, $index)\\\" id=i-edit viewBox=\\\"0 0 32 32\\\" width=16 height=16 fill=none stroke=currentcolor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d=\\\"M30 7 L25 2 5 22 3 29 10 27 Z M21 6 L26 11 Z M5 22 L10 27 Z\\\"/></svg> <svg ng-click=vm.onDeleteNote($index) id=i-trash viewBox=\\\"0 0 32 32\\\" width=16 height=16 fill=none stroke=currentcolor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d=\\\"M28 6 L6 6 8 30 24 30 26 6 4 6 M16 12 L16 24 M21 12 L20 24 M11 12 L12 24 M12 6 L13 2 19 2 20 6\\\"/></svg></div></li></ul></div></section></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/align-dos-modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><br><p>The date shown reflects when your practice’s charges were brought into alignment. This alignment ensures that, for as many months as possible, all charges share the same date of service each month.</p><p>However, if you notice that the dates of service don’t match, it’s typically due to the billing logic for CPT codes 99453 and 99454. These codes follow a strict 30-day billing cycle, which means some cycles may not end on the last day of the month in order to maintain consistency.</p><p>In contrast, 99457 and 99458 always use the last day of the month as their date of service. When the 30-day cycle for 99453 and 99454 doesn’t align with the end of the month, their dates of service will differ from those of 99457 and 99458.</p><p>Also, when a patient is first aligned, their initial billing cycle may be longer than 30 days. In those cases, only readings from the last 30 days of that cycle count toward the 16-day requirement.</p><p>Aligned billing cycles (Please note that billing cycles may slightly vary when transitioning into a leap year):</p><ul><li>12/1-12/30</li><li>12/31-1/29</li><li>1/30-2/28</li><li>3/2-3/31</li><li>4/1-4/30</li><li>5/2-5/31</li><li>6/1-6/30</li><li>7/2-7/31</li><li>8/2-8/31</li><li>9/1-9/30</li><li>10/2-10/31</li><li>11/1-11/30</li></ul><div class=modal-footer><button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/e-observation-report.html\",\"<div class=e-user-detail-outer data-testid=patient-chart data-patient-id={{::vm.patientUserProfile.id}} data-enterprise-id={{::vm.patientUserProfile.enterprise_customer_id}} data-patient-status=\\\"{{::vm.patientUserProfile.deactivated_at ? \\'inactive\\' : \\'active\\'}}\\\"><div class=\\\"e-user-header row\\\"><div class=\\\"e-user-paging-header no-print col-md-1 col-md-1 col-xs-12\\\"><div class=row><a class=\\\"chevron-left col-md-6 col-sm-6 col-xs-6\\\" ng-class=\\\"{\\'disabled\\': !vm.hasPrev() || vm.isLoadingNextPatient}\\\" ng-click=\\\"vm.hasPrev() && vm.prev()\\\"></a> <a class=\\\"chevron-right col-md-6 col-sm-6 col-xs-6\\\" ng-class=\\\"{\\'disabled\\': !vm.hasNext() || vm.isLoadingNextPatient}\\\" ng-click=\\\"vm.hasNext() && vm.next()\\\"></a></div></div><div class=\\\"e-user-filter-header col-md-8 col-sm-8 col-xs-12\\\"><div class=\\\"patient-filters no-print\\\">{{ vm.reportPeriodText }} <span ng-if=vm.patientUserProfile.deactivated_at>&#8211; <span class=red>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.DEACTIVATED_HEADER\\' | translate }}</span></span><div class=patient-count>{{ vm.patientPagingText }}</div></div></div><div class=\\\"back-buttons-container col-md-3 col-sm-3 col-xs-12 pull-right ccm-button\\\"><div><div class=ccm-rpm-toggle ng-if=\\\"vm.currentCCMObservationReport && vm.carePlan.completed_at\\\" ui-sref=\\\"enterprise.ccm_observation_report.goals({user_profile_id: vm.patientUserProfile.id, observation_report_id: vm.currentCCMObservationReport.id})\\\">{{\\'PORTAL.ENTERPRISE.BUTTON_TABS.CARE\\' | translate}}</div><div class=ccm-rpm-toggle ng-if=\\\"vm.patientUserProfile.model_patient_services.length > 1 && !vm.carePlan.completed_at\\\" ui-sref=\\\"enterprise.care_plan.goals({user_profile_id: vm.patientUserProfile.id})\\\">{{\\'PORTAL.ENTERPRISE.BUTTON_TABS.CARE\\' | translate}}</div></div><button type=button class=\\\"btn btn-primary pull-right\\\" ng-if=\\\"!vm.isReportFromCurrentPeriod && !vm.patientUserProfile.deactivated_at\\\" ui-sref=\\\"enterprise.observation_report({user_profile_id: vm.observationReport.patient_user_profile_id, observation_report_id: vm.currentReport.id})\\\" ui-sref-opts=\\\"{ reload: true }\\\" ng-disabled=!vm.currentReport>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.THIS_MONTH_REPORT\\' | translate }}</button> <button ng-show=\\\"vm.showBackToFilter && vm.isFilteredServiceRPM\\\" type=button class=\\\"btn btn-primary btn-back pull-right\\\" ui-sref=\\\"enterprise.patients({preserve_filter: \\'true\\'})\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.RETURN_TO_FILTERED_LIST\\' | translate }}</button> <button ng-show=\\\"vm.showBackToFilter && !vm.isFilteredServiceRPM\\\" type=button class=\\\"btn btn-primary btn-back pull-right\\\" ui-sref=\\\"enterprise.ccm-patients({preserve_filter: \\'true\\'})\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BUTTONS.RETURN_TO_FILTERED_LIST\\' | translate }}</button></div></div><card-wrapper class=e-user-detail-wrapper><card card-name=e-user-detail-card><patient-header patient-user-profile=vm.patientUserProfile provider-patient-authorizations=vm.providerPatientAuthorizations observation-report=vm.observationReport enterprise-customer=vm.enterpriseCustomer user=vm.user features=vm.features device-types=vm.deviceTypes report-period-text=vm.reportPeriodText clinical-monitoring-context=vm.patientUserProfile.clinical_monitoring_context others-active=vm.othersActive></patient-header><rpm-header patient-user-profile=vm.patientUserProfile features=vm.features user=vm.user enterprise-customer=vm.enterpriseCustomer></rpm-header><div class=inner-wrapper><div><div class=\\\"row e-user-report-filter no-print\\\"><div id=e-user-report-filter-container class=\\\"col-xs-9 col-md-5 clearfix no-print\\\"><form name=datepickerForm ng-show=\\\"vm.activeTab < vm.graphsToShow.length -1\\\" class=form-inline ng-if=vm.isReportEditable><label for=datepicker>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.CHART_DATE_RANGE\\' | translate }}</label><input date-range-picker options=vm.datePicker.options picker=vm.datePicker.picker data-testid=reading-date-filter max=vm.datePicker.maxDate minyear=2019 class=\\\"form-control date-picker\\\" type=text id=datepicker ng-model=vm.datePicker.date></form></div><div class=\\\"col-md-7 col-xs-2 clearfix no-print\\\"><are-you-sure-modal header-trans=GLOBAL.MODALS.SUPPORT_REQUEST.HEADER template-url=app/components/portal/enterprise/e-observation-report/support-request-modal.html close-btn-trans=GLOBAL.MODALS.SUPPORT_REQUEST.BUTTONS.CLOSE action-btn-trans=GLOBAL.MODALS.SUPPORT_REQUEST.BUTTONS.ACTION action-callback=vm.submitSupportRequest() custom-payload=::vm.supportRequestPayload backdrop=static><button class=\\\"popout btn-danger\\\" style=\\\"width: auto; min-width: auto; font-size: 0.875rem\\\"><i class=\\\"fa fa-question-circle\\\"></i> Support Request</button></are-you-sure-modal><button class=popout ng-click=vm.openPrintVersion()><i class=\\\"fa fa-print\\\"></i></button></div><div ng-show=\\\"vm.activeTab < vm.graphsToShow.length\\\"><div class=\\\"pdfstatus col-xs-3 col-md-3\\\">{{ vm.observationReportService.lookerDownloadStatus }}</div></div></div><div id=tabs class=module ng-if=vm.graphDateRange><uib-tabset active=vm.activeTab id=tabs-inner><uib-tab ng-repeat=\\\"graph in vm.graphsToShow track by $index\\\" index=$index ng-show=\\\"graph.serial || graph.type === \\'RPM_DATA\\'\\\" heading=\\\"{{\\'PORTAL.ENTERPRISE.GLOBAL.\\' + graph.type | translate}}\\\" ng-click=vm.setActiveTab($index)><div ng-show=\\\"graph.type === \\'RPM_DATA\\' && (vm.enterpriseCustomer.default_for_align_dos || vm.patientUserProfile.enterprise_enrollment.align_dos)\\\" id=alignment-info><span ng-show=\\\"vm.enterpriseCustomer.default_for_align_dos && vm.enterpriseCustomer.alignment_start_date\\\">This practice was brought into alignment on {{vm.enterpriseCustomer.alignment_start_date | date:\\'mediumDate\\':vm.patientUserProfile.timezone }}. </span><span ng-show=\\\"vm.enterpriseCustomer.default_for_align_dos && !vm.enterpriseCustomer.alignment_start_date\\\">This practice was brought into alignment on {{vm.enterpriseCustomer.created_at | date:\\'mediumDate\\':vm.patientUserProfile.timezone }}. </span><span ng-show=\\\"(vm.enterpriseCustomer.default_for_align_dos || vm.patientUserProfile.enterprise_enrollment.align_dos) && vm.patientUserProfile.enterprise_enrollment.alignment_start_date\\\">This patient was brought into alignment on {{vm.patientUserProfile.enterprise_enrollment.alignment_start_date | date:\\'mediumDate\\':vm.patientUserProfile.timezone }}. </span><span ng-show=\\\"(vm.enterpriseCustomer.default_for_align_dos || vm.patientUserProfile.enterprise_enrollment.align_dos) && !vm.patientUserProfile.enterprise_enrollment.alignment_start_date\\\">This patient was brought into alignment on {{ vm.patientUserProfile.created_at | date:\\'mediumDate\\':vm.patientUserProfile.timezone }}.</span><are-you-sure-modal header-trans=GLOBAL.MODALS.ALIGN_DOS.HEADER template-url=app/components/portal/enterprise/e-observation-report/align-dos-modal.html action-btn-trans=GLOBAL.MODALS.ALIGN_DOS.BUTTONS.CLOSE action-callback=void() backdrop=static><button class=\\\"btn btn-small btn-secondary pull-right\\\">More Info</button></are-you-sure-modal></div><div ng-show=\\\"graph.type === \\'AMBIENT_CHF\\'\\\" ng-if=vm.heartfeltChfSurveyUrl class=ambient-chf-survey-section><div ng-if=vm.heartfeltChfSurveyUrl class=ambient-chf-survey-section><div class=\\\"alert alert-danger clickable-alert\\\" role=alert ng-click=vm.openChfSurvey()><span class=alert-link>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS.BUTTONS.AMBIENT_CHF_SURVEY\\' | translate }} (Expires {{vm.chfSurveyExpirationTimestamp}})</span></div></div></div><div data-testid=reading-visualization data-graph-type={{::graph.type}}><highcharts-dashboard config=vm.nextVersionGraphsToShow[$index].config></highcharts-dashboard></div></uib-tab><uib-tab index=\\\"vm.graphsToShow.length + 1\\\" class=alert-threshold-tab heading=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ALERT_THRESHOLDS.HEADING\\' | translate}}\\\" ng-click=\\\"vm.setActiveTab(vm.graphsToShow.length + 1)\\\"><div class=container><div class=row><e-alert-thresholds patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer device-types=vm.deviceTypes threshold=vm.threshold></e-alert-thresholds></div><div class=row ng-show=\\\"vm.activeTab == vm.graphsToShow.length + 1\\\"><e-alert-thresholds-audit-logs patient-user-profile=vm.patientUserProfile threshold=vm.threshold></e-alert-thresholds-audit-logs></div></div></uib-tab></uib-tabset><div ng-show=\\\"vm.activeTab < vm.graphsToShow.length - 1\\\" class=\\\"open no-print\\\"><e-template-builder active-tab-key=vm.activeKeyForComponentBuilder enterprise-customer=vm.enterpriseCustomer user=vm.user patient-user-profile=vm.patientUserProfile on-submit=\\\"vm.postObservationReportNotes({observationReportId: observationReportId, notes: notes})\\\" date-range=vm.graphDateRange report-period-txt=vm.reportPeriodText observation-report=vm.observationReport observation-reports=vm.observationReports is-report-editable=vm.isReportEditable is-report-from-current-period=vm.isReportFromCurrentPeriod timesheets=vm.timesheets features=vm.features go-to-next-patient=\\\"vm.hasNext() && vm.submitAndNext()\\\"></e-template-builder></div><e-remote-patient-monitoring-status ng-hide=\\\"vm.activeTab === vm.graphsToShow.length + 1\\\" user=vm.user class=no-print patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer deactivation-logs=vm.deactivationLogs deactivation-reasons=vm.deactivationReasons></e-remote-patient-monitoring-status></div></div><div ng-show=\\\"vm.patientUserProfile.rpm_setup_date === null\\\"><div class=\\\"row e-rpm-status container\\\" authorize=role:clinical><e-notes on-select=vm.onNoteSelected(note) on-change=vm.onNoteTemplatesChanged(notes) class=no-print header=\\\"\\'PORTAL.ENTERPRISE.RPM_SETUP.HEADER\\' | translate \\\" notes=\\\"vm.enterpriseCustomer.rpm_setup_notes_template[\\'rpm_setup_notes\\']\\\"></e-notes><e-notes-editor button-text=\\\"\\'PORTAL.ENTERPRISE.RPM_SETUP.BUTTON\\' | translate\\\" class=no-print placeholder=\\\"\\'PORTAL.ENTERPRISE.RPM_SETUP.NOTE_PLACEHOLDER\\' | translate\\\" note=vm.rpm_setup_notes on-submit=vm.onRPMSetup(note) on-change=vm.onNoteEdited(note)></e-notes-editor></div></div><div ng-show=vm.showChfSetup><div class=\\\"row e-rpm-status container\\\" authorize=role:clinical><e-notes on-select=vm.onCHFNoteSelected(note) on-change=vm.onCHFNoteTemplatesChanged(notes) class=no-print header=\\\"\\'PORTAL.ENTERPRISE.CHF_SETUP.HEADER\\' | translate \\\" notes=\\\"vm.enterpriseCustomer.rpm_setup_notes_template[\\'chf_setup_notes\\']\\\"></e-notes><e-notes-editor button-text=\\\"\\'PORTAL.ENTERPRISE.CHF_SETUP.BUTTON\\' | translate\\\" class=no-print placeholder=\\\"\\'PORTAL.ENTERPRISE.CHF_SETUP.NOTE_PLACEHOLDER\\' | translate\\\" note=vm.chf_setup_notes on-submit=vm.onCHFSetup(note) on-change=vm.onCHFNoteEdited(note)></e-notes-editor></div></div></div></card></card-wrapper><div class=ibeat-disclaimer>{{\\'PORTAL.ENTERPRISE.DISCLAIMERS.CLAIMS\\' | translate}}</div><div class=ibeat-disclaimer>{{\\'PORTAL.ENTERPRISE.DISCLAIMERS.RPM_TIMELY_RESPONSE\\' | translate}}</div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/reference-notes.html\",\"<div class=reference-notes-modal><div class=\\\"modal-body row\\\"><textarea class-name=formfield-half id=reference-notes ng-model=referenceNotesEdit ng-change=modalOptions.setNotesChangedFlag() rows=15 tab-index=1 auto-focus-ms=1>\\n      </textarea><div ng-if=hasIssuedCancelWithChangesWarning class=cancel-warning>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.NOTES_MODAL.CANCEL_WARNING\\' | translate }}</div><button id=btn-action type=button class=\\\"btn btn-primary pull-right\\\" ng-click=modalOptions.ok(true) ng-disabled=!notesHaveChanged tab-index=2 promise-btn>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button id=btn-cancel type=button tab-index=3 class=\\\"btn btn-primary2 pull-right\\\" ng-click=modalOptions.close(false)>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/share-options.html\",\"<div id=modal-share-template class=\\\"modal-wrapper share-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=\\\"modal-body row\\\"><form name=vm.shareForm class=top-label-form novalidate><text-input class-name=formfield-half form=vm.shareForm model=modalOptions.payload.share_data.provider_name label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.PROVIDER_NAME\\' | translate}}\\\" input-name=provider-name input-id=provider-name height-class=input-sm tab-index=1 auto-focus-ms=10></text-input><text-input class-name=formfield-half form=vm.shareForm model=modalOptions.payload.share_data.email label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.EMAIL_ADDRESS\\' | translate}}\\\" input-name=email-address input-id=email-address height-class=input-sm tab-index=2></text-input><select-input class-name=\\\"formfield relationship-select\\\" form=vm.shareForm model=modalOptions.payload.share_data.relationship options-array=::modalOptions.payload.relationships label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.RELATIONSHIP\\'| translate }}\\\" input-name=relationship input-id=relationship height-class=input-sm tab-index=3></select-input><select-input class-name=\\\"formfield specialty-select\\\" form=vm.shareForm model=modalOptions.payload.share_data.practice_specialty_id ng-show=\\\"modalOptions.payload.share_data.relationship.name === \\'Healthcare Provider\\'\\\" options-array=::modalOptions.payload.practiceSpecialties label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.SPECIALTY\\'| translate }}\\\" input-name=specialty input-id=specialty height-class=input-sm tab-index=4></select-input><text-input class-name=formfield-half form=vm.shareForm model=modalOptions.payload.share_data.fax_number label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.FAX_NUMBER\\' | translate}}\\\" mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" height-class=input-sm input-name=fax-number input-id=fax-number height-class=input-sm tab-index=5></text-input><text-input class-name=formfield-half form=vm.shareForm model=modalOptions.payload.share_data.phone_number label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.PHONE_NUMBER\\' | translate}}\\\" input-name=phone-number input-id=phone-number height-class=input-sm tab-index=6></text-input><div class=share-ok>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.ATTESTATION\\' | translate}}</div><button id=btn-action type=button class=\\\"btn btn-primary pull-left\\\" ng-click=modalOptions.ok(true) ng-disabled=modalOptions.payload.buttonFunc(modalOptions.payload.share_data) tab-index=7 promise-btn>{{ ::modalOptions.actionButtonText }}</button></form></div><div class=\\\"modal-body row\\\"><h5 class=share-title>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.HEADER\\' | translate }}</h5><table class=\\\"table table-condensed table-striped\\\"><tbody><tr><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.SHARED_TO\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.PROVIDER\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.FAX\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.EMAIL\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.DATE\\' | translate }}</th></tr><tr ng-if=modalOptions.payload.previousShares ng-repeat=\\\"share in modalOptions.payload.previousShares track by $index\\\"><td>{{share.provider_name}}</td><td>{{share.shared_by_provider_profile.name_first}} {{share.shared_by_provider_profile.name_last}}</td><td>{{share.fax_number}}</td><td>{{share.email}}</td><td>{{share.created_at | date:\\'shortDate\\'}}</td></tr><tr ng-if=!modalOptions.payload.previousShares><td>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HISTORY.NOT_PREVIOUSLY_SHARED\\' | translate }}</td></tr></tbody></table></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/support-request-modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=modal-body><form name=supportRequestForm class=top-label-form novalidate><!-- Reason For The Request --><div class=form-group><label class=control-label>Reason For The Request</label><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.reasonSupplies ng-change=\\\"modalOptions.payload.formData.reasonOther = false\\\"> Supplies/batteries</label></div><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.reasonTroubleshooting ng-change=\\\"modalOptions.payload.formData.reasonOther = false\\\"> Troubleshooting</label></div><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.reasonAddOnDevice ng-change=\\\"modalOptions.payload.formData.reasonOther = false\\\"> Add-on device</label></div><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.reasonPatientPortal ng-change=\\\"modalOptions.payload.formData.reasonOther = false\\\"> Patient Portal</label></div><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.reasonEsper ng-change=\\\"modalOptions.payload.formData.reasonOther = false\\\"> Esper</label></div><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.reasonOther> Other - please describe in notes field</label></div></div><!-- DX Code (required for add-on device) --><div class=form-group ng-show=modalOptions.payload.formData.reasonAddOnDevice><label class=control-label>DX Code <span class=text-danger>*</span></label><input type=text class=form-control ng-model=modalOptions.payload.formData.dxCode ng-required=modalOptions.payload.formData.reasonAddOnDevice name=dxCode></div><!-- Testing Frequency (required for GC supplies) --><div class=form-group ng-show=modalOptions.payload.formData.reasonSupplies><label class=control-label>Testing Frequency <span class=text-danger>*</span></label><input type=text class=form-control ng-model=modalOptions.payload.formData.testingFrequency ng-required=modalOptions.payload.formData.reasonSupplies name=testingFrequency></div><!-- Troubleshooting Dropdown --><div class=form-group ng-show=modalOptions.payload.formData.reasonTroubleshooting><label class=control-label>Common Issues</label><select class=form-control ng-model=modalOptions.payload.formData.troubleshootingIssue><option value=\\\"\\\">Select an issue...</option><option value=device_power>Device Power</option><option value=readings_transmission>Readings Transmission</option><option value=cant_get_reading>Can\\'t Get a Reading</option><option value=other>Other</option></select></div><!-- Device (optional) --><div class=form-group><label class=control-label>Device (optional)</label><select class=form-control ng-model=modalOptions.payload.formData.device><option value=\\\"\\\">Select a device...</option><option value=GC>GC</option><option value=BP>BP</option><option value=PO>PO</option><option value=WS>WS</option><option value=CHF>CHF</option></select></div><!-- Address Confirmation --><div class=form-group><div class=checkbox><label><input type=checkbox ng-model=modalOptions.payload.formData.addressConfirmed> Address Confirmation - Is the address on the patient\\'s chart correct?</label></div></div><!-- Description --><div class=form-group><label class=control-label>Description</label><textarea class=form-control rows=5 ng-model=modalOptions.payload.formData.description name=description></textarea></div><!-- Hidden fields (auto-populated) --> <input type=hidden ng-model=modalOptions.payload.formData.patientname> <input type=hidden ng-model=modalOptions.payload.formData.patientemail> <input type=hidden ng-model=modalOptions.payload.formData.requestor_email><!-- Hidden field for patient user profile ID --> <input type=hidden ng-model=modalOptions.payload.formData.patientid></form></div><div class=modal-footer style=\\\"margin-top: 0.5rem\\\"><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=\\\"btn btn-secondary pull-left\\\">{{ ::modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-reports/e-observation-reports.html\",\"<div class=e-observation-reports><h4>{{ \\'PORTAL.ENTERPRISE.OBSERVATIONS_TABLE.BODY.HEADER\\' | translate }}</h4><div id=observation-reports><table class=table><thead class=thead><tr><th class=title>{{ \\'PORTAL.ENTERPRISE.OBSERVATIONS_TABLE.FIELDS.DATE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.OBSERVATIONS_TABLE.FIELDS.TOTAL_\\' + (vm.observationReports[0].service.name || \\'RPM\\') + \\'_TIME\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.OBSERVATIONS_TABLE.FIELDS.STATUS\\' | translate }} <i class=info-link title=\\\"Report status - more information\\\" uib-popover=\\\"Notes and {{vm.observationReports[0].service.name || \\'RPM\\'}} Time Spent may be submitted until the end of the next calendar month. {{vm.observationReports[0].service.name || \\'RPM\\'}} time should only be logged for the prior month for services that were performed during that month and not previously recorded.\\\" popover-title=Status popover-class=status-popover popover-trigger=\\\"\\'outsideClick\\'\\\"></i></th><th ng-if=vm.showExportsColumn>{{ \\'PORTAL.ENTERPRISE.OBSERVATIONS_TABLE.FIELDS.EXPORTS\\' | translate }}</th><th><!--Download RPM Report--><!--Copy RPM Report Link--></th></tr></thead><tbody ng-if=\\\"vm.observationReports.length !== 0\\\"><tr ng-repeat=\\\"observationReport in vm.observationReports\\\" ng-class=\\\"{\\'current\\': observationReport.id === vm.observationReport.id}\\\"><td ui-sref=\\\"{{ observationReport | observationReportUiSref }}\\\" ui-sref-opts=\\\"{reload: true}\\\"><strong><span ng-if=observationReport.period_started_at>{{ observationReport.period_started_at | date:\\'MMMM yyyy\\' : \\'UTC/GMT\\' }}</span> <span ng-if=observationReport.reporting_period_id>{{ observationReport.reporting_period | formattedDateStringFromReportingPeriod }}</span></strong></td><td ui-sref=\\\"{{ observationReport | observationReportUiSref }}\\\" ui-sref-opts=\\\"{reload: true}\\\"><span>{{ observationReport.timesheet_sum | duration:\\'seconds\\':\\\"m \\'minutes\\'\\\" }}</span></td><td ui-sref=\\\"{{ observationReport | observationReportUiSref }}\\\" ui-sref-opts=\\\"{reload: true}\\\"><!-- legacy --> <span ng-if=!observationReport.reporting_period_id>{{ \\'PORTAL.ENTERPRISE.GLOBAL.CLOSED\\' | translate }}</span> <span ng-if=observationReport.reporting_period_id><span ng-if=\\\"observationReport.status === \\'COMPLETED\\'\\\">{{ \\'PORTAL.ENTERPRISE.GLOBAL.CLOSED\\' | translate }} </span><span ng-if=\\\"observationReport.status !== \\'COMPLETED\\'\\\">{{ \\'PORTAL.ENTERPRISE.GLOBAL.OPEN\\' | translate }}</span></span></td><td ng-if=vm.showExportsColumn ui-sref=\\\"{{ observationReport | observationReportUiSref }}\\\" ui-sref-opts=\\\"{reload: true}\\\"><span ng-if=observationReport.document_ehr_id class=ehr-sync-status-chip>{{ \\'PORTAL.ENTERPRISE.GLOBAL.PUSHED_TO_EHR\\' | translate }}</span></td><td><button type=button class=\\\"or-action download-report\\\" ng-click=vm.downloadObservationReport(observationReport) uib-popover=\\\"{{\\'PORTAL.ENTERPRISE.GLOBAL.DOWNLOAD\\' | translate}}\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-class=download-observation-report-tooltip popover-placement=bottom authorize=\\\"role:clinical, role:administrative\\\"></button> <button type=button class=\\\"or-action copy-link-report\\\" ng-click=vm.copyObservationReportLink(observationReport) uib-popover=\\\"{{\\'PORTAL.ENTERPRISE.GLOBAL.COPY_LINK\\' | translate}}\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-class=copy-observation-report-tooltip popover-placement=bottom></button></td></tr></tbody><tbody ng-if=\\\"vm.observationReports.length === 0\\\"><tr><td>{{ \\'PORTAL.ENTERPRISE.OBSERVATIONS_TABLE.FIELDS.NONE\\' | translate }}</td><td></td><td></td><td></td></tr></tbody></table></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-services/e-patient-services.html\",\"<span ng-show=vm.showServiceButton><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HEADER template-url=app/components/portal/enterprise/e-patient-services/patient-service-modal.html close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SHARE action-callback=vm.callBack() custom-payload=vm.modalPayload><button class=\\\"btn header-actions header-btn\\\"><span ng-repeat=\\\"mps in vm.modelPatientServices track by $index\\\">{{ mps.patient_service.name }}&nbsp; </span><span ng-show=!vm.modelPatientServices.length>Services</span></button></are-you-sure-modal><div class=pill ng-if=vm.deactivatedLabel>{{ vm.deactivatedLabel }}</div></span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-services/patient-service-modal.html\",\"<div class=modal-wrapper ng-show=!modalOptions.payload.selectDevices><div class=modal-header><h3>Current Patient Services <span class=close ng-click=modalOptions.ok(true) aria-hidden=true>&times;</span></h3></div><div class=\\\"modal-body row\\\"><table class=\\\"table table-condensed table-striped\\\"><thead><tr><th>Service</th><th>Start Date</th><th>End Date</th><th></th></tr></thead><tbody><tr ng-repeat=\\\"service in modalOptions.payload.modelPatientServices track by $index\\\"><td>{{ service.patient_service.name }}</td><td>{{ service.start_date || \\'--\\' }}</td><td>{{ service.stop_date || \\'--\\' }}</td><td><a ng-click=modalOptions.payload.stopService(service)>{{ service.stop_date ? \\'re-activate\\' : \\'pause\\' }}</a></td></tr></tbody></table><button ng-repeat=\\\"s in modalOptions.payload.patientServices | filter: modalOptions.payload.serviceToAdd track by $index\\\" ng-click=modalOptions.payload.startService(s) class=\\\"btn btn-primary pull-right\\\">Add {{s.name}}</button></div><div class=\\\"modal-body row\\\"><h3>Patient service history</h3><table class=\\\"table table-condensed table-striped\\\"><thead><tr><th>Service</th><th>Added at</th><th>Removed at</th><th>Changed by</th></tr></thead><tbody><tr ng-repeat=\\\"log in modalOptions.payload.serviceLogs track by $index\\\"><td>{{ log.model_patient_service.patient_service.name || log.patient_service.name }}</td><td>{{ (log.added_at || \\'--\\') | date:\\'shortDate\\': (this.user.user_profile.timezone || \\'UTC/GMT\\') }}</td><td>{{ (log.removed_at || \\'--\\') | date:\\'shortDate\\': (this.user.user_profile.timezone || \\'UTC/GMT\\') }}</td><td>{{ log.user_profile | providerName }}</td></tr></tbody></table></div></div><div class=modal-wrapper ng-show=modalOptions.payload.selectDevices><div class=modal-header>Select devices to start RPM</div><div class=modal-body><ui-select multiple tabindex=2 close-on-select=false theme=bootstrap name=shipment search-enabled=false input-id=shipment ng-model=modalOptions.payload.selectedDevices ng-required=true on-select=\\\"modalOptions.payload.onShipmentAdd($item, $model)\\\" on-remove=\\\"modalOptions.payload.onShipmentRemove($item, $model)\\\"><ui-select-match placeholder=\\\"Select device(s)\\\"><span>{{$item.description}}</span></ui-select-match><ui-select-choices position=down group-by=modalOptions.payload.shipmentGroupBy repeat=\\\"item in modalOptions.payload.deviceTypes track by $index\\\"><span>{{ item.description }}</span><!--      <span>{{vm.getDescriptionWithAvailability(item)}}</span>--></ui-select-choices></ui-select></div><div class=modal-footer><button ng-disabled=!modalOptions.payload.selectedDevices.length ng-click=\\\"modalOptions.payload.selectedDevices.length && modalOptions.payload.submitRPMService() && modalOptions.ok(true)\\\" class=\\\"btn btn-primary pull-right\\\">Save</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-patients.html\",\"<div id=e-patients class=enterprise><div class=inner-patients><e-users-card user=vm.user enterprise-customer=vm.enterpriseCustomer device-types=vm.deviceTypes current-reporting-period=vm.currentReportingPeriod patient-dashboard=vm.patientDashboard e-user-profiles=vm.eUserProfiles features=vm.features providers=vm.providers></e-users-card></div><div ui-view></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-phone-controls/e-audio-call-timesheet-modal.html\",\"\");\n$templateCache.put(\"app/components/portal/enterprise/e-phone-controls/e-phone-controls.html\",\"<div><div ng-if=vm.call.active class=audio-call-panel><div class=audio-call-control-panel><span class=audio-call-duration>{{vm.call.duration_text}}</span><div class=audio-call-button-panel><span ng-click=vm.toggleMute() class=audio-call-button ng-class=\\\"vm.call.muted? \\'unmute-button\\': \\'mute-button\\'\\\"><i ng-class=\\\"vm.call.muted ? \\'audio-call-icon-unmute\\' : \\'audio-call-icon-mute\\'\\\"></i> </span><span ng-click=vm.hangUp() class=\\\"audio-call-button end-button\\\"><i class=audio-call-icon-end></i></span></div></div><div class=audio-call-to-info><span class=audio-call-to-name>{{vm.patient.name}}</span> <span class=audio-call-to-number>{{vm.patient.number | phoneNumber}}</span></div><div class=audio-call-from-info><span class=audio-call-from-text>{{\\'AUDIO_CALL.FROM_TEXT\\' | translate}} {{vm.call.calling_number | phoneNumber}}</span></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-remote-patient-monitoring-status/e-reactivation.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper incomplete-modal\\\"><div><div class=modal-header><h4 class=modal-title>{{::modalOptions.headerText}}</h4></div><div class=modal-body><div ng-bind-html=modalOptions.payload></div></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=btn>{{ modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=btn ng-click=modalOptions.ok(true) promise-btn>{{ modalOptions.actionButtonText }}</button></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-remote-patient-monitoring-status/e-remote-patient-monitoring-status.html\",\"<div class=e-remote-patient-monitoring-status data-testid=patient-lifecycle-status><h4>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS.HEADER\\' | translate }}</h4><div class=\\\"e-patient-removal row\\\" ng-if=vm.patientUserProfile.deactivated_at><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.MODAL.HEADER template-url=app/components/portal/enterprise/e-remote-patient-monitoring-status/e-reactivation.modal.html custom-payload=vm.modalBody() close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.REACTIVATE_PATIENT action-callback=vm.reactivatePatient()><button type=button class=\\\"btn btn-primary2\\\">{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS.BUTTONS.REACTIVATE_PATIENT\\' | translate }}</button></are-you-sure-modal></div><div id=remote-patient-monitoring-status class=module ng-if=\\\"vm.deactivations.length > 0\\\"><table class=table><thead class=thead><tr><th class=title>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.FIELDS.REQUEST_TYPE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.FIELDS.SUBMIT_DATE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.FIELDS.DEACTIVATED_DATE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.FIELDS.REACTIVATED_DATE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.FIELDS.STATUS\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.FIELDS.NOTES\\' | translate }}</th></tr></thead><tbody ng-repeat=\\\"log in vm.deactivations\\\"><tr><!-- Type of Request --><td><div>{{ log.requestType }}</div><div ng-if=\\\"log.isDeactivateRequest || log.showReactivationReason\\\" class=request-reason>{{ log.reason }}</div></td><!-- Date Request Submitted --><td>{{ log.submitDate | date:\\'M/d/yy\\' }}</td><!-- Date Deactivated --><td><div ng-if=!log.isDeactivateRequest>-</div><div ng-if=log.isDeactivateRequest>{{ log.deactivatedDate | date:\\'M/d/yy\\' }}</div></td><!-- Date Reactivated --><td><div ng-if=\\\"log.isDeactivateRequest || !log.reactivatedDate\\\">-</div><div ng-if=!log.isDeactivateRequest>{{ log.reactivatedDate | date:\\'M/d/yy\\' }}</div></td><!-- Status --><td><div ng-if=\\\"log.status == \\'Approved\\'\\\">{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.REQUEST_STATUS.APPROVED\\' | translate }}</div><div ng-if=\\\"log.status == \\'Pending\\'\\\">{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.REQUEST_STATUS.PENDING\\' | translate }}</div><div ng-if=\\\"log.status == \\'Canceled\\' || log.status == \\'Denied\\'\\\">{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS_TABLE.REQUEST_STATUS.CANCELED\\' | translate }}</div></td><!-- Notes (From Request) --><td><div ng-if=!log.notes>-</div><div ng-if=log.notes>{{ log.notes }}</div></td></tr></tbody></table></div><div class=\\\"e-patient-removal row\\\" ng-if=!vm.patientUserProfile.deactivated_at><button qa-id=learnMore type=button class=\\\"btn btn-primary\\\" ng-click=vm.viewBillingFAQs()>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS.ADHERENCE.BUTTONS.LEARN_MORE\\' | translate }}</button> <button qa-id=pausePatient data-testid=remove-patient-action type=button class=\\\"btn btn-secondary2\\\" ng-click=vm.removePatient() authorize=\\\"role:clinical, role:biller\\\" auth-disabled=true>{{ \\'PORTAL.ENTERPRISE.REMOTE_PATIENT_MONITORING_STATUS.BUTTONS.REMOVE_PATIENT\\' | translate }}</button></div><card-wrapper ng-if=\\\"vm.deactivationRequestsCount > 0\\\"><card card-name=\\\"pagination transparent\\\"><ul uib-pagination items-per-page=vm.itemsPerPage total-items=vm.deactivationRequestsCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-builder.html\",\"<div id=e-template-builder><e-template-components ng-if=vm.observationReport.reporting_period_id active-tab-key=vm.activeTabKey user=vm.user patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer component-data=vm.enterpriseCustomer.observation_report_template on-update=\\\"vm.onUpdateComponentItem({model: model})\\\" on-create=\\\"vm.onCreateComponentItem({model: model})\\\" on-delete=\\\"vm.onDeleteComponentItem({model: model})\\\" on-submit=\\\"vm.onSubmit({observationReportId: observationReportId, notes: notes})\\\" observation-report=vm.observationReport report-period-txt=vm.reportPeriodTxt></e-template-components><e-template-visualizer ng-if=vm.observationReport.reporting_period_id user=vm.user patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer date-range=vm.dateRange observation-report=vm.observationReport observation-reports=vm.observationReports timesheets=vm.timesheets on-submit-update-notes=\\\"vm.onSubmit({model: model})\\\" is-report-editable=vm.isReportEditable is-report-from-current-period=vm.isReportFromCurrentPeriod report-period-txt=vm.reportPeriodTxt features=vm.features go-to-next-patient=\\\"vm.goToNextPatient({isNext: true})\\\"></e-template-visualizer></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-transcription-queue/transcription-edit-modal.html\",\"<div class=modal-header><button type=button class=close ng-click=modal.dismiss() aria-label=Close>&times;</button><h4 class=modal-title>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.TITLE\\' | translate }}</h4><p class=\\\"text-muted small\\\" ng-if=modal.metaLine>{{ modal.metaLine }}</p></div><div class=\\\"modal-body transcription-edit-modal-body\\\"><div class=\\\"panel panel-default transcription-modal-details\\\"><div class=panel-heading><strong>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.SECTION_DETAILS\\' | translate }}</strong></div><div class=panel-body><div class=\\\"row transcription-modal-row\\\" ng-if=modal.callDetails.provider_email><div class=\\\"col-sm-4 text-muted transcription-modal-label\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.LABEL_PROVIDER_EMAIL\\' | translate }}</div><div class=col-sm-8>{{ modal.callDetails.provider_email }}</div></div><div class=\\\"row transcription-modal-row\\\" ng-if=\\\"modal.callDetails.patient_label || modal.callDetails.patient_user_profile_id\\\"><div class=\\\"col-sm-4 text-muted transcription-modal-label\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.LABEL_PATIENT\\' | translate }}</div><div class=col-sm-8><span ng-if=modal.callDetails.patient_label>{{ modal.callDetails.patient_label }}</span> <span ng-if=\\\"modal.callDetails.patient_label && modal.callDetails.patient_user_profile_id\\\" class=\\\"text-muted small\\\">· </span><span class=\\\"text-muted small\\\" ng-if=modal.callDetails.patient_user_profile_id>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.LABEL_PATIENT_PROFILE_ID\\' | translate }}: {{ modal.callDetails.patient_user_profile_id }}</span></div></div><div class=\\\"row transcription-modal-row\\\" ng-if=modal.callDetails.start_time_formatted><div class=\\\"col-sm-4 text-muted transcription-modal-label\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.LABEL_STARTED\\' | translate }}</div><div class=col-sm-8>{{ modal.callDetails.start_time_formatted }}</div></div><div class=\\\"row transcription-modal-row\\\" ng-if=modal.durationDisplay><div class=\\\"col-sm-4 text-muted transcription-modal-label\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.LABEL_DURATION\\' | translate }}</div><div class=col-sm-8>{{ modal.durationDisplay }}</div></div><div class=\\\"row transcription-modal-row\\\" ng-if=modal.callDetails.call_transcription_id><div class=\\\"col-sm-4 text-muted transcription-modal-label\\\">{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.LABEL_TRANSCRIPTION_ID\\' | translate }}</div><div class=col-sm-8><code class=transcription-id-code>{{ modal.callDetails.call_transcription_id }}</code></div></div><div class=\\\"row transcription-modal-row\\\" ng-if=\\\"modal.canOpenPatientReport && modal.patientReportDestination\\\"><div class=col-sm-12><a class=\\\"btn btn-default btn-sm\\\" ng-click=modal.onPatientReportNavClick()>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.VIEW_PATIENT_REPORT\\' | translate }}</a></div></div><div class=\\\"row transcription-modal-row\\\" ng-if=modal.isRead><div class=col-sm-12><button type=button class=\\\"btn btn-default btn-sm\\\" ng-click=modal.markAsUnread() ng-disabled=\\\"modal.saving || modal.markingUnread\\\"><span ng-if=!modal.markingUnread>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.MARK_AS_UNREAD\\' | translate }}</span> <span ng-if=modal.markingUnread>{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}</span></button></div></div><div class=\\\"row transcription-modal-row\\\" ng-if=!modal.isRead><div class=col-sm-12><button type=button class=\\\"btn btn-default btn-sm\\\" ng-click=modal.markAsRead() ng-disabled=\\\"modal.saving || modal.markingRead\\\"><span ng-if=!modal.markingRead>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.MARK_AS_READ\\' | translate }}</span> <span ng-if=modal.markingRead>{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}</span></button></div></div></div></div><div class=\\\"form-group transcription-modal-clinical-summary\\\"><label>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.SECTION_CLINICAL_SUMMARY\\' | translate }}</label><div text-angular-toolbar class=toolbar name=notification-toolbar></div><text-angular name=notification-editor ta-target-toolbars=notification-toolbar placeholder={{vm.placeholder}} ng-model=modal.draft.call_summary ng-disabled=modal.saving data-ng-required=true></text-angular></div><div><label ng-click=\\\"modal.transcriptAccordionOpen = !modal.transcriptAccordionOpen\\\" class=full-transcription-label>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.ACCORDION_TRANSCRIPT\\' | translate }} <i class=\\\"carrot fa\\\" ng-class=\\\"{\\'fa-chevron-right\\': !modal.transcriptAccordionOpen, \\'fa-chevron-down\\': modal.transcriptAccordionOpen}\\\"></i></label><pre rows=10 ng-disabled=true ng-show=modal.transcriptAccordionOpen class=\\\"form-control transcription-edit-textarea\\\">{{ modal.transcriptDisplay || (\\'NOTIFICATIONS.TRANSCRIPTION_MODAL.TRANSCRIPT_EMPTY\\' | translate) }}</pre></div><p class=text-danger ng-if=modal.errorMessage>{{ modal.errorMessage }}</p></div><div class=modal-footer><button type=button class=\\\"btn btn-default btn-outline-danger\\\" ng-click=modal.dismiss() ng-disabled=modal.saving>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button type=button class=\\\"btn btn-default\\\" ng-click=modal.saveDraft() ng-disabled=modal.saving><span ng-if=!modal.saving>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.SAVE_DRAFT\\' | translate }}</span> <span ng-if=modal.saving>{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}</span></button> <button type=button class=\\\"btn btn-default\\\" ng-click=modal.saveAndPostToPatientChart() ng-disabled=modal.saving>{{ \\'NOTIFICATIONS.TRANSCRIPTION_MODAL.SAVE_AND_POST_TO_CHART\\' | translate }}</button></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-video-call/e-video-call-modal.html\",\"<div><span class=pull-right><i class=\\\"fa fa-times\\\" ng-click=modalOptions.endCall()></i></span><div class=modal-body><div id=twilio-video-call><div id=video-modal-spinner><h2 us-spinner spinner-theme=white>{{ modalOptions.callStatusText | translate }}</h2></div></div><div class=pull-right id=my-video-preview></div><div class=\\\"video-controls pull-right\\\"><button class=\\\"btn btn-small\\\" ng-click=\\\"modalOptions.audioEnabled ? modalOptions.disableAudio() : modalOptions.enableAudio(); modalOptions.audioEnabled = !modalOptions.audioEnabled;\\\"><i class=fa ng-class=\\\"{ \\'fa-microphone\\': modalOptions.audioEnabled, \\'fa-microphone-slash\\': !modalOptions.audioEnabled }\\\"></i></button> <button class=\\\"btn btn-small\\\" ng-click=\\\"modalOptions.videoEnabled ? modalOptions.disableVideo() : modalOptions.enableVideo(); modalOptions.videoEnabled = !modalOptions.videoEnabled\\\"><i class=fa ng-class=\\\"{ \\'fa-video-camera\\': modalOptions.videoEnabled, \\'fa-eye-slash\\': !modalOptions.videoEnabled }\\\"></i></button> <button class=\\\"btn btn-small\\\" ng-click=modalOptions.endCall()><i class=\\\"fa fa-times-circle\\\"></i></button></div><div class=video-timer>{{ modalOptions.callDuration }}</div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-video-call/e-video-call.html\",\"<div class=e-video-calls ng-if=vm.canVideoCall><div class=e-video-call-button ng-disabled=vm.callInProgress ng-click=\\\"vm.callInProgress || vm.startCall()\\\"><i class=e-video-call-icon-call></i></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/address-edit.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal\\\"><div class=\\\"body full-width one-column\\\"><div class=row><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div></div><form name=vm.address_editForm class=top-label-form ng-submit=\\\"vm.activeTab = 1\\\" id=formData novalidate><div class=row><text-input class-name=street1 class=col-md-6 form=vm.address_editForm model=modalOptions.payload.address.address_street label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STREET1\\' | translate }}\\\" input-name=street1 input-id=street1 tab-index=2 is-required=true></text-input><text-input class-name=zip class=col-md-6 form=vm.address_editForm model=modalOptions.payload.address.address_zipcode on-change=\\\"vm.onChange({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.ZIP\\' | translate }}\\\" input-name=zip input-id=zip tab-index=3 mask=99999 mask-placeholder=_____ is-required=true><p ng-if=vm.geocode.processing class=is-loading><span class=\\\"btn-spinner input-spinner\\\"></span></p></text-input></div><div class=row><text-input class-name=city class=col-md-6 form=vm.address_editForm model=modalOptions.payload.address.address_city label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.CITY\\' | translate }}\\\" input-name=city input-id=city tab-index=4 is-required=true></text-input><select-input class-name=state class=col-md-6 form=vm.address_editForm model=modalOptions.payload.address.address_state options-array=modalOptions.payload.states label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE\\' | translate }}\\\" input-name=state input-id=state tab-index=5 info-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE\\' | translate }}\\\" is-required=true></select-input></div></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-disabled=\\\"!vm.address_editForm[\\'street1\\'].$valid ||\\n                         !vm.address_editForm[\\'zip\\'].$valid ||\\n                         !vm.address_editForm[\\'state\\'].$valid ||\\n                         !vm.address_editForm[\\'city\\'].$valid\\\" ng-click=modalOptions.ok(true) promise-btn>{{::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/ccm-care-plan-download-initial.html\",\"<div id=initial-care-plan-download class=download-section><div class=btn-group role=group><button type=button class=\\\"btn btn-secondary2 btn-small dropdown-toggle\\\" ng-click=vm.toggleMenu()><span class=download-span>Download</span> <span class=icon-span ng-class=\\\"{\\'active\\': vm.menuActive}\\\"><i class=\\\"fa fa-angle-down\\\"></i></span></button><ul class=files-menu ng-class=\\\"{\\'active\\': vm.menuActive}\\\"><li ng-click=vm.downloadCarePlan() ng-class=\\\"{\\'downloading\\': vm.downloadingCarePlan}\\\"><div class=content><span class=file-label>Initial Care Plan</span></div></li></ul></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/ccm-header.html\",\"<section class=\\\"card-header border-top\\\"><div class=card-header-inner><span class=user-contact-info><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.START_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.created_at | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.CCM_START_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div ng-repeat=\\\"mps in vm.patientUserProfile.model_patient_services | filter: {\\'patient_service\\':{\\'name\\':\\'CCM\\'}}\\\">{{ mps.start_date | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.CCM_CARE_PLAN_COMPETED_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.care_plan.completed_at | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.CCM_CARE_PLAN_APPROVAL_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.care_plan.approved_at | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.CCM_CARE_PLAN_APPROVING_PROVIDER\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.care_plan.approving_provider_profile | providerName:true }}&nbsp;</div></info-vertical><info-vertical header=\\\"\\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate\\\" text=\\\"\\'\\'\\\" ng-show=vm.isPrimaryProviderVisible authorize=\\\"role:clinical, role:administrative\\\"><select-input id=primary-provider-options height-class=input-sm options-array=vm.optionsForProviderPatientAuthorizations model=vm.primaryProvider.id on-change=\\\"vm.onPrimaryProviderChange({model: model})\\\"></select-input></info-vertical><info-vertical header=\\\"\\'GLOBAL.ACCOUNT.FIELDS.EHR_ID\\' | translate\\\" text=\\\"\\'\\'\\\" authorize=\\\"role:clinical, role:administrative\\\"><text-input class-name=ehr-id height-class=input-sm model=vm.patientUserProfile.patient_ehr_id on-blur=vm.onPatientEheFieldLeave() mask-options=\\\"{clearOnBlur: false, maskPlaceholder: \\'\\', addDefaultPlaceholder: false, uiMaskPlaceholderChar: \\' \\'}\\\" input-name=ehr-id input-id=ehr-id></text-input></info-vertical><div class=info-vertical authorize=\\\"role:clinical, role:administrative\\\"><span class=header>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.PATIENT_GROUPS\\' | translate }}</span> <span class=data><div class=patient-group-dropdown ng-dropdown-multiselect=\\\"\\\" extra-settings=vm.groupDropdownSettings options=vm.groupOptions selected-model=vm.groupOptionsModel translation-texts=vm.groupDropdownText events=\\\"{ onItemSelect: vm.addGroupMembership, onItemDeselect: vm.removeGroupMembership }\\\"></div></span></div><info-vertical ng-if=vm.patientUserProfile.pactsafe_eula header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.SUBSTANTION_FILES\\' | translate\\\" text=\\\"\\'\\'\\\" authorize=\\\"role:clinical, role:administrative\\\"><e-observation-download-substantion-files patient-user-profile=vm.patientUserProfile></info-vertical><info-vertical ng-if=\\\"vm.patientUserProfile.care_plan && vm.patientUserProfile.care_plan.approved_at\\\" header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.CCM_CARE_PLAN_INITIAL\\' | translate\\\" text=\\\"\\'\\'\\\" authorize=\\\"role:clinical, role:administrative\\\"><ccm-care-plan-download-initial patient-user-profile=vm.patientUserProfile></info-vertical><div class=info-vertical><dx-codes patient-user-profile=vm.patientUserProfile></dx-codes></div></span></div></section>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/patient-header.html\",\"<section class=card-header hl-sticky><div class=card-header-inner><div ng-if=!vm.patientUserProfile.deactivated_at class=user-without-pills><span class=e-user-name>{{ vm.patientUserProfile.name_first }} {{ vm.patientUserProfile.name_last }} </span><span class=badge ng-if=vm.patientUserProfile.is_fake>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.DEMO\\' | translate }}</span><e-audio-calls ng-if=\\\"vm.showLogCall && (!vm.features || !vm.features.five9_patient_click_to_call_enabled || !vm.features.five9_patient_click_to_call_enabled.is_enabled)\\\" authorize=role:clinical patient-user-profile=vm.patientUserProfile observation-report=vm.observationReport enterprise-customer=vm.enterpriseCustomer user=vm.user reporting-period-text=vm.reportPeriodText></e-audio-calls><e-five9-call ng-if=\\\"vm.showLogCall && vm.features && vm.features.five9_patient_click_to_call_enabled && vm.features.five9_patient_click_to_call_enabled.is_enabled\\\" authorize=role:clinical patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer user=vm.user observation-report=vm.observationReport reporting-period-text=vm.reportPeriodText features=vm.features></e-five9-call><e-video-call ng-if=vm.showLogCall authorize=role:clinical patient-user-profile=vm.patientUserProfile observation-report=vm.observationReport reporting-period-text=vm.reportPeriodText user=vm.user></e-video-call><are-you-sure-modal ng-if=::!vm.isCCM header-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.SHARE_FORM.HEADER template-url=app/components/portal/enterprise/e-observation-report/share-options.html close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SHARE action-callback=vm.shareReadings(vm.shareOptions.share_data) custom-payload=vm.shareOptions><button class=\\\"btn header-btn header-actions share\\\" authorize=role:clinical auth-disabled=true ng-click=vm.updateShares()>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SHARE\\' | translate }}</button></are-you-sure-modal><button ng-if=::vm.isCCM class=\\\"btn header-btn header-actions share\\\" authorize=role:clinical auth-disabled=true ng-click=vm.downloadCarePlan()>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.DOWNLOAD\\' | translate }}</button> <button class=\\\"btn header-btn header-actions\\\" ng-class=\\\"vm.hasReferenceNotes() ? \\'reference-notes-exist\\' : \\'reference-notes\\'\\\" ng-click=vm.showReferenceNotesModal() authorize=role:clinical auth-disabled=true>{{ (vm.hasReferenceNotes() ? \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.VIEW_REFERENCE_NOTES\\' : \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.ADD_REFERENCE_NOTES\\') | translate }}</button><are-you-sure-modal ng-if=\\\"vm.patientUserProfile.enterprise_enrollment && vm.patientUserProfile.enterprise_enrollment.id\\\" header-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.INSURANCE_MODAL.TITLE template-url=app/components/portal/enterprise/patient-header/patient-insurance.modal.html close-btn-trans=GLOBAL.BUTTONS.CANCEL action-btn-trans=GLOBAL.BUTTONS.SAVE custom-payload=vm.insuranceModalPayload window-class=patient-insurance-modal-window backdrop=static><button class=\\\"btn header-btn header-actions insurance\\\" authorize=\\\"role:clinical, role:administrative\\\" auth-disabled=true>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.INSURANCE\\' | translate }}</button></are-you-sure-modal><a ng-if=vm.escalationProtocolUrl class=\\\"btn header-btn header-actions escalation-protocol-link\\\" ng-href=\\\"{{ vm.escalationProtocolUrl }}\\\" target=_blank rel=\\\"noopener noreferrer\\\">Escalation Protocol</a><e-patient-services ng-if=vm.showPatienServices patient-user-profile=vm.patientUserProfile device-types=vm.deviceTypes></e-patient-services><span class=active-viewer-indicator ng-if=vm.othersActive>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.ACTIVE_VIEWER\\' | translate }}</span></div><div ng-if=vm.patientUserProfile.deactivated_at class=user-and-pills><span class=e-user-name>{{ vm.patientUserProfile.name_first }} {{ vm.patientUserProfile.name_last }}</span><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.MODAL.HEADER template-url=app/components/portal/enterprise/e-observation-report/share-options.html close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SHARE action-callback=vm.shareReadings(vm.shareOptions.share_data) custom-payload=vm.shareOptions><button class=\\\"btn header-btn btn-primary share header-actions\\\">{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.ACTIONS.SHARE\\' | translate }}</button></are-you-sure-modal><div class=\\\"pill header-btn\\\">{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.DEACTIVATED\\' | translate }} {{ vm.patientUserProfile.deactivated_at | date:\\'MM/dd/yyyy\\' }}: {{ vm.patientUserProfile.deactivation_reason.description }}</div><span class=active-viewer-indicator ng-if=vm.othersActive>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.ACTIVE_VIEWER\\' | translate }}</span><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.EDIT_ADDRESS template-url=app/components/portal/enterprise/e-remote-patient-monitoring-status/e-reactivation.modal.html custom-payload=vm.modalBody() close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.REACTIVATE_PATIENT action-callback=vm.reActivate()><button type=button class=\\\"btn header-btn btn-primary\\\" ng-if=vm.patientUserProfile.deactivated_at>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.REACTIVATE_PATIENT\\' | translate }}</button></are-you-sure-modal></div><div class=phone-and-email><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.DOB\\' | translate\\\"><div ng-show=!vm.editingDOB>{{ (vm.patientUserProfile.date_of_birth | date:\\'MM/dd/yyyy\\') + \\' (\\' + (vm.patientUserProfile.date_of_birth | dobToAge) + \\' \\' + (\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.YEARS\\' | translate) +\\')\\' }} <i class=\\\"fa fa-edit\\\" ng-show=!vm.editingDOB ng-click=vm.startEditDob()></i></div><div ng-show=vm.editingDOB><input date-range-picker minyear=1920 class=\\\"form-control date-picker\\\" type=text id=datepicker ng-model=vm.patientUserProfile.date_of_birth model=vm.patientUserProfile.date_of_birth input-name=patient_dob options=vm.datePicker.options picker=vm.datePicker.picker> <span ng-click=vm.onSavePatientDetails()><i class=\\\"fa fa-check\\\"></i> Save</span> <span ng-click=vm.cancelEditDob()><i class=\\\"fa fa-times\\\"></i>Cancel</span></div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.GENDER\\' | translate\\\"><div ng-show=!vm.editingGender>{{ vm.patientUserProfile.gender | gender }} <i class=\\\"fa fa-edit\\\" ng-show=!vm.editingGender ng-click=vm.startEditGender()></i></div><div ng-show=vm.editingGender><select-input class-name=gender form=vm.enrollmentProfileForm model=vm.patientUserProfile.gender options-array=::vm.genderOptionsArray label-txt=\\\"\\\" on-change=void() input-name=gender input-id=gender is-required=true></select-input><span ng-click=vm.onSavePatientDetails()><i class=\\\"fa fa-check\\\"></i> Save</span> <span ng-click=vm.cancelEditGender()><i class=\\\"fa fa-times\\\"></i>Cancel</span></div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.ADDRESS\\' | translate\\\"><div>{{ vm.patientUserProfile.addresses[0] | address }} &nbsp;<are-you-sure-modal header-trans=PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.EDIT_ADDRESS template-url=app/components/portal/enterprise/patient-header/address-edit.html close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.CLOSE action-btn-trans=GLOBAL.BUTTONS.SAVE action-callback=vm.onSavePatientDetails() close-callback=vm.resetAddress() custom-payload=vm.modalPayload backdrop=static><i class=\\\"fa fa-edit\\\" ng-click=\\\"vm.editingAddress = true\\\"></i></are-you-sure-modal></div></info-vertical><div class=info-vertical authorize=\\\"role:clinical, role:administrative\\\"><span class=header>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.LANGUAGE\\' | translate }}</span> <span class=data><select-input id=preferred-language-options class=preferred-language-options height-class=input-sm options-array=vm.languagesOptionsArray model=vm.patientUserProfile.language_id on-change=\\\"vm.onLanguageChange({model: model})\\\"></select-input></span></div><e-observation-phone-numbers patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer authorize=\\\"role:clinical, role:administrative\\\"></e-observation-phone-numbers><div ng-if=\\\"!vm.patientUserProfile.email.indexOf(\\'100plus\\')\\\"><info-vertical header=\\\"PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.EMAIL | translate\\\" text=vm.patientUserProfile.email></info-vertical></div></div></div></section>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/patient-insurance.modal.html\",\"<div id=patient-insurance-modal-template class=\\\"modal-wrapper patient-insurance-modal-host\\\"><div class=\\\"modal-header patient-insurance-modal-header\\\"><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4><button type=button class=close ng-click=modalOptions.close(false) aria-label=Close><span aria-hidden=true>&times;</span></button></div><patient-insurance-modal ng-if=modalOptions.payload enrollment-id=modalOptions.payload.enrollmentId enterprise-customer=modalOptions.payload.enterpriseCustomer patient-user-profile=modalOptions.payload.patientUserProfile user=modalOptions.payload.user on-saved=\\\"modalOptions.payload.onSaved($event); modalOptions.ok(true)\\\" on-cancel=modalOptions.close(false)></patient-insurance-modal></div>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/rpm-header.html\",\"<section class=\\\"card-header border-top\\\"><div class=card-header-inner><span class=user-contact-info><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.START_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.created_at | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><info-vertical header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.RPM_INITIAL_SETUP_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.rpm_setup_date | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><info-vertical ng-if=vm.hasAmbientChfDevice header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.CHF_INITIAL_SETUP_DATE\\' | translate\\\" text=\\\"\\'\\'\\\"><div>{{ vm.patientUserProfile.chf_setup_date | date:\\'shortDate\\':vm.patientUserProfile.timezone }}&nbsp;</div></info-vertical><div class=info-vertical authorize=role:clinical><span class=header>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.MONTHLY_TARGET\\' | translate }}</span> <span class=data><select-input id=dor-target class=dor-target height-class=input-sm options-array=vm.optionsForDorTarget model=vm.patientUserProfile.monthly_dor_target on-change=\\\"vm.onMonthlyDorTargetChange({model: model})\\\"></select-input></span></div><info-vertical header=\\\"\\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate\\\" text=\\\"\\'\\'\\\" ng-show=vm.isPrimaryProviderVisible authorize=\\\"role:clinical, role:administrative\\\"><select-input id=primary-provider-options height-class=input-sm options-array=vm.optionsForProviderPatientAuthorizations model=vm.primaryProvider.id on-change=\\\"vm.onPrimaryProviderChange({model: model})\\\"></select-input></info-vertical><info-vertical header=\\\"\\'GLOBAL.ACCOUNT.FIELDS.EHR_ID\\' | translate\\\" text=\\\"\\'\\'\\\" authorize=\\\"role:clinical, role:administrative\\\"><text-input class-name=ehr-id height-class=input-sm model=vm.patientUserProfile.patient_ehr_id on-blur=vm.onPatientEheFieldLeave() input-name=ehr-id mask-options=\\\"{clearOnBlur: false, maskPlaceholder: \\'\\', addDefaultPlaceholder: false, uiMaskPlaceholderChar: \\' \\'}\\\" input-id=ehr-id></text-input></info-vertical><div class=info-vertical authorize=\\\"role:clinical, role:administrative\\\"><span class=header>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.PATIENT_GROUPS\\' | translate }}</span> <span class=data><div class=patient-group-dropdown ng-dropdown-multiselect=\\\"\\\" extra-settings=vm.groupDropdownSettings options=vm.groupOptions selected-model=vm.groupOptionsModel translation-texts=vm.groupDropdownText events=\\\"{ onItemSelect: vm.addGroupMembership, onItemDeselect: vm.removeGroupMembership }\\\"></div></span></div><info-vertical ng-if=vm.patientUserProfile.pactsafe_eula header=\\\"\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.SUBSTANTION_FILES\\' | translate\\\" text=\\\"\\'\\'\\\" authorize=\\\"role:clinical, role:administrative\\\"><e-observation-download-substantion-files patient-user-profile=vm.patientUserProfile></info-vertical><div class=info-vertical><dx-codes patient-user-profile=vm.patientUserProfile></dx-codes></div></span></div></section>\");\n$templateCache.put(\"app/components/portal/enterprise/e-alert-thresholds/disclaimers/bg-disclaimer.html\",\"<div><button class=legend-btn ng-click=vm.bgLegendVisibility()>{{vm.bgLegend ? \\'Hide legend\\' : \\'Show legend\\'}}</button><br>Thresholds come from:<br><a class=legend-links href=https://www.diabetes.org/diabetes/complications/dka-ketoacidosis-ketones target=_blank>American Diabetes Association - DKA (Ketaocidosis) & Ketones</a><br><a class=legend-links href=https://care.diabetesjournals.org/content/24/1/131 target=_blank>American Diabetes Association - Management of Hyperglycemic Crisis in Patients with Diabetes</a><br><a class=legend-links href=https://www.diabetes.org/diabetes/medication-management/blood-glucose-testing-and-control/hypoglycemia target=_blank>American Diabetes Association - Hypoglycemia</a></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-alert-thresholds/disclaimers/bp-diastolic-disclaimer.html\",\"<!-- bp-systolic-disclaimer.html --><div><button class=legend-btn ng-click=vm.diastolicLegendVisibility()>{{vm.diastolicLegend ? \\'Hide legend\\' : \\'Show legend\\'}}</button><br>Thresholds come from:<br><a class=legend-links href=https://www.heart.org/en/health-topics/high-blood-pressure/understanding-blood-pressure-readings target=_blank>American Heart Association - Understanding Blood Pressure Readings</a><br><a class=legend-links href=https://www.heart.org/en/health-topics/heart-failure/warning-signs-of-heart-failure/managing-heart-failure-symptoms target=_blank>American Heart Association - Managing Heart Failure Symptoms</a></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-alert-thresholds/disclaimers/bp-systolic-disclaimer.html\",\"<!-- bp-systolic-disclaimer.html --><div><button class=legend-btn ng-click=vm.systolicLegendVisibility()>{{vm.systolicLegend ? \\'Hide legend\\' : \\'Show legend\\'}}</button><br>Thresholds come from:<br><a class=legend-links href=https://www.heart.org/en/health-topics/high-blood-pressure/understanding-blood-pressure-readings target=_blank>American Heart Association - Understanding Blood Pressure Readings</a><br><a class=legend-links href=https://www.heart.org/en/health-topics/heart-failure/warning-signs-of-heart-failure/managing-heart-failure-symptoms target=_blank>American Heart Association - Managing Heart Failure Symptoms</a></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-alert-thresholds/vertical-slider/vertical-slider.html\",\"<div class=row><!--    prevent rzslider from rendering bad options using ng-if--><div class=\\\"col-xs-5 vertical-slider-wrapper\\\" ng-if=vm.options ng-style=\\\"{ \\'height\\': vm.height }\\\"><rzslider rz-slider-model=vm.value rz-slider-high=vm.valueHigh rz-slider-options=vm.options ng-class=\\\"{\\'lower-disabled\\': vm.isLowerDisabled}\\\"></rzslider></div><div class=\\\"col-xs-5 scale-wrapper {{vm.scaleVisible ? \\'fade-in\\' : \\'fade-out\\'}}\\\"><div ng-repeat=\\\"s in vm.scale track by $index\\\" ng-style=\\\"{ \\'height\\': vm.getHeight(s) }\\\"><span class=scale ng-style=\\\"{ \\'background-color\\': s.color }\\\"></span> <span class=\\\"hidden-sm label\\\">{{s.label}}</span></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/customer-source/customer-source.html\",\"<card-wrapper><card card-name=customer-source><h3>Payment method <button class=\\\"btn btn-secondary pull-right\\\" ng-if=\\\"vm.defaultSourceType === vm.BANK_ACCOUNT || vm.defaultSourceType === vm.CREDIT_CARD\\\" tabindex=1 ng-hide=vm.onEdit ng-click=vm.updateSource()>{{ \\'GLOBAL.BUTTONS.EDIT\\' | translate }}</button></h3><section class=customer-source><!-- no source --><div class=no-source ng-if=\\\"vm.defaultSourceType !== vm.BANK_ACCOUNT && vm.defaultSourceType !== vm.CREDIT_CARD\\\"><p ng-if=vm.payByCheck>{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.PAY_BY_CHECK\\' | translate}}</p><p ng-if=!vm.payByCheck>{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.METHOD\\' | translate}}</p><div><button class=\\\"btn btn-secondary btn-small\\\" id=add-credit-card-btn ng-click=\\\"vm.onEdit = true\\\">{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.BUTTONS.ADD_CC\\' | translate}}</button> <button class=\\\"btn btn-secondary btn-small\\\" id=add-bank-account-btn ng-click=\\\"vm.onEdit = false\\\" ui-sref=enterprise.practicesettings.update-bank-account>{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.BUTTONS.ADD_BANK\\' | translate}}</button></div></div><!-- bank account --><div class=bank-account ng-if=\\\"vm.defaultSourceType === vm.BANK_ACCOUNT\\\"><span ng-if=\\\"vm.defaultSourceType === vm.BANK_ACCOUNT\\\" class=bank-account-number><source-details source=vm.defaultSource></source-details><button class=\\\"btn btn-link btn-small pull-right change-payment-method-btn\\\" ng-click=vm.changePaymentMethod()>{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.BUTTONS.CHANGE_PAYMENT_METHOD\\' | translate}}</button></span></div><!-- credit card --><div class=credit-card ng-if=\\\"vm.defaultSourceType === vm.CREDIT_CARD\\\"><credit-card-image ng-if=::vm.brand brand=::vm.brand></credit-card-image><span ng-if=\\\"vm.defaultSourceType === vm.CREDIT_CARD\\\" class=cc-number><source-details source=vm.defaultSource></source-details><button class=\\\"btn btn-link btn-small pull-right change-payment-method-btn\\\" ng-click=vm.changePaymentMethod()>{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.BUTTONS.CHANGE_PAYMENT_METHOD\\' | translate}}</button> <span ng-hide=vm.last4>{{\\'PORTAL.BILLING.OVERVIEW.SOURCE.CREDIT_CARD\\' | translate}}</span></span></div><div class=on-edit ng-show=vm.onEdit><div class=source-details><div class=source-details-inner><update-card on-edit=vm.onEdit user=vm.user enterprise-customer=vm.enterpriseCustomer stripe-customer=vm.stripeCustomer></update-card></div></div></div></section></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/e-billers/e-billers.html\",\"<card-wrapper><card card-name=e-billers><h3>{{\\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.BODY.HEADER\\' | translate}}</h3><div class=\\\"body full-width one-column\\\" us-spinner spinner-theme=black spinner-on=vm.isLoading><div class=col><div ng-if=!vm.isLoading><p>{{\\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.BODY.COPY\\' | translate}}</p><br><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.MODALS.ARE_YOU_SURE.HEADER body-trans=PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.MODALS.ARE_YOU_SURE.BODY close-btn-trans=PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.MODALS.ARE_YOU_SURE.BUTTONS.CLOSE action-btn-trans=PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.MODALS.ARE_YOU_SURE.BUTTONS.ACTION action-callback=vm.removeBiller(vm.biller)><form name=billerChoiceForm><div class=form-inputs-wrapper><div class=\\\"form-group radio-btns\\\"><label class=\\\"radio-btns-question-label required\\\">{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.FIELDS.BILLER_QUESTION\\' | translate }}</label><div class=radio><label><input type=radio name=biller-choice id=biller-choice-true ng-value=true tabindex=3 ng-model=vm.billerChoice.self required> {{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.FIELDS.BILLER_CHOICE\\' | translate }}</label></div><div class=radio><label><input type=radio name=biller-choice id=biller-choice-false ng-value=false tabindex=4 ng-model=vm.billerChoice.self required> {{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.FIELDS.BILLER_CHOICE2\\' | translate }}</label></div></div><button type=submit class=\\\"btn btn-primary pull-right btn-save\\\" ng-if=\\\"vm.billerChoice.self && vm.biller.id\\\" ng-disabled=billerChoiceForm.$invalid promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.BUTTONS.SAVE_AND_REMOVE_BILLER\\' | translate }}</button></div></form></are-you-sure-modal><form ng-if=!vm.billerChoice.self name=billerForm class=top-label-form ng-submit=vm.save(vm.biller) novalidate><h3>{{\\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.BODY.HEADER2\\' | translate}}</h3><div class=\\\"body full-width\\\" us-spinner spinner-theme=black spinner-on=vm.isLoading><text-input class-name=name-first form=billerForm model=vm.biller.name_first label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=name-first input-id=name-first height-class=input-sm is-required=true></text-input><text-input class-name=name-last form=billerForm model=vm.biller.name_last label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=name-last input-id=name-last height-class=input-sm is-required=true></text-input><text-input class-name=email field-type=email form=billerForm model=vm.biller.email label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages is-required=true></text-input><text-input class-name=phone form=billerForm model=vm.biller.phone_1_number mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}\\\" input-name=phone input-id=phone height-class=input-sm is-required=true></text-input></div><div class=card-form-footer><div class=form-footer-inner><button type=submit class=\\\"btn btn-primary pull-right btn-save\\\" ng-disabled=billerForm.$invalid promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.ACCOUNT_SETTINGS.EBILLERS.BUTTONS.SAVE_BILLER\\' | translate }}</button></div></div></form></div></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/practice-settings/add-individual-npi.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper individual-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=\\\"modal-body row\\\"><form name=vm.ProfileForm class=top-label-form novalidate><select-input class-name=formfield-half form=vm.enrollmentProfileForm model=modalOptions.payload.id options-array=::modalOptions.payload.providerOptions label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate }}\\\" input-name=primary-provider input-id=primary-provider tab-index=10 is-required=true></select-input><text-input class-name=formfield-half form=vm.ProfileForm model=modalOptions.payload.npi label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.TABLE_HEADINGS.INDIV_NPI_NUM\\' | translate}}\\\" input-name=npi input-id=npi height-class=input-sm tab-index=3></text-input></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/practice-settings/edit-office-npi.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper office-modal\\\"><div class=modal-header><h4 class=modal-title>{{ ::modalOptions.headerText }}</h4></div><div class=\\\"modal-body row\\\"><form name=vm.ProfileForm class=top-label-form novalidate><text-input class-name=formfield form=vm.ProfileForm model=modalOptions.payload.billing_npi label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.BILLING_NPI\\' | translate}}\\\" input-name=billing_npi input-id=billing-npi height-class=input-sm tab-index=1></text-input><text-input class-name=formfield-half form=vm.ProfileForm model=modalOptions.payload.billing_tax_id label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.TAX_ID\\' | translate}}\\\" input-name=tax-id input-id=tax-id height-class=input-sm tab-index=2></text-input><text-input class-name=formfield-half form=vm.ProfileForm model=modalOptions.payload.ptan label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.PTAN\\' | translate}}\\\" input-name=ptan input-id=ptan height-class=input-sm tab-index=3></text-input></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=btn>{{ ::modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{ ::modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/practice-settings/edit-phone.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper phone-modal\\\"><div class=modal-header><h4 class=modal-title>{{::modalOptions.headerText}}</h4></div><div class=modal-body><p>{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.CONTACT_TABLE.MODAL.COPY\\' | translate}}</p><form name=vm.ProfileForm class=top-label-form novalidate><text-input class-name=primary-phone form=vm.ProfileForm model=modalOptions.payload.phone_1_number mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" mask-options=\\\"{clearOnBlur: false}\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone tab-index=6 is-required=true></text-input></form></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-click=modalOptions.close(false) class=btn>{{ modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=\\\"btn btn-primary\\\" ng-click=modalOptions.ok(true) promise-btn>{{ modalOptions.actionButtonText }}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/practice-settings/practice-settings.html\",\"<div id=practice-settings><div ui-view></div><!-- wizard --><div ui-view=bankAccount></div><h1>{{ ::vm.enterpriseCustomer.name }} Account</h1><e-notification-microdeposits user=vm.user enterprise-customer=vm.enterpriseCustomer next-state=enterprise.practicesettings></e-notification-microdeposits><div id=tabs><uib-tabset active=vm.activeTab><!--- Contact Tab ---><uib-tab index=0><uib-tab-heading>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.CONTACT_INFORMATION\\' | translate }}</uib-tab-heading><e-office ng-if=!vm.eOfficeEdit user=vm.user on-edit=vm.eOfficeEdit></e-office><e-office-edit ng-if=vm.eOfficeEdit user=vm.user on-edit=vm.eOfficeEdit></e-office-edit></uib-tab><!-- RPM TAB ---><uib-tab index=1 authorize=role:clinical><uib-tab-heading>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.RPM_ELIGIBILITY\\' | translate }}</uib-tab-heading><card-wrapper><card card-name=npis><h3>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.HEADER\\' | translate }}</h3><table ng-if=vm.offices[0].billing_npi><tbody><tr><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.BILLING_NPI\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.NPI_TYPE\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.TAX_ID\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.TABLE_HEADINGS.PTAN\\' | translate }}</th><th></th></tr><tr><td><i class=flag ng-if=!vm.offices[0].billing_npi_type uib-tooltip=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_TYPES.INVALID\\' | translate}}\\\"></i> <i class=check ng-if=vm.offices[0].billing_npi_type uib-tooltip=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_TYPES.VALID\\' | translate}}\\\"></i> {{ vm.offices[0].billing_npi }}</td><td>{{ vm.offices[0].billing_npi_type }}</td><td>{{ vm.offices[0].billing_tax_id }}</td><td>{{ vm.offices[0].ptan }}</td><td class=practice-actions><span uib-dropdown on-toggle=toggled(open)><a href id=simple-dropdown uib-dropdown-toggle>...</a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=simple-dropdown><li><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.MODAL.HEADER template-url=app/components/portal/enterprise/e-billing/practice-settings/edit-office-npi.modal.html custom-payload=vm.offices[0] close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.MODAL.SAVE action-callback=vm.saveNPI(vm.offices[0]) backdrop=static><a tabindex=0><i class=edit></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.EDIT\\' | translate }}</a></are-you-sure-modal></li></ul></span></td></tr></tbody></table><div ng-if=!vm.offices[0].billing_npi><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.MODAL.HEADER template-url=app/components/portal/enterprise/e-billing/practice-settings/edit-office-npi.modal.html custom-payload=vm.offices[0] close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.MODAL.SAVE action-callback=vm.saveNPI() backdrop=static><button class=\\\"btn btn-primary pull-left\\\">{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_OFFICE.BUTTONS.ADD_ORG\\' | translate }}</button></are-you-sure-modal><br><br></div><br><br><h3>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.HEADER\\' | translate }}</h3><table ng-if=vm.has_npied_providers class=providers-npis><tbody><tr><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.TABLE_HEADINGS.PRIMARY_PRACTITIONER\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.TABLE_HEADINGS.INDIV_NPI_NUM\\' | translate }}</th><th>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.TABLE_HEADINGS.INDIV_NPI_TYPE\\' | translate }}</th><th></th></tr><tbody ng-if=\\\"vm.providers.length !== 0\\\" ng-repeat=\\\"provider in vm.providers | orderBy:\\'-\\'\\\"><tr ng-if=provider.npi><td>{{ provider.name_first }} {{ provider.name_last }}</td><td><i class=flag ng-if=!provider.npi_type uib-tooltip=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_TYPES.INVALID\\' | translate}}\\\"></i> <i class=check ng-if=provider.npi_type uib-tooltip=\\\"{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_TYPES.VALID\\' | translate}}\\\"></i> {{ provider.npi }}</td><td>{{ provider.npi_type }}</td><td class=practice-actions><span uib-dropdown on-toggle=toggled(open)><a href id=simple-dropdown uib-dropdown-toggle>...</a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=simple-dropdown><li><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.MODAL.HEADER template-url=app/components/portal/enterprise/e-billing/practice-settings/add-individual-npi.modal.html custom-payload=::vm.individualNPIPayload close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.MODAL.SAVE action-callback=vm.saveIndividualNPI(vm.individualNPIPayload) backdrop=static><a tabindex=0><i class=edit></i> {{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.ACTIONS.EDIT\\' | translate }}</a></are-you-sure-modal></li></ul></span></td></tr></tbody></tbody></table><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.MODAL.HEADER template-url=app/components/portal/enterprise/e-billing/practice-settings/add-individual-npi.modal.html custom-payload=vm.individualNPIPayload close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.MODAL.SAVE action-callback=vm.saveIndividualNPI(vm.individualNPIPayload) backdrop=static><button class=\\\"btn btn-primary pull-left\\\">{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.NPI_INDIVIDUAL.BUTTONS.ADD_INDIVIDUAL\\' | translate}}</button></are-you-sure-modal><br><br></card></card-wrapper></uib-tab><!-- EHR Provider --><uib-tab index=2 authorize=role:clinical><uib-tab-heading>{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.EHR_PROVIDER_SETTINGS\\' | translate}}</uib-tab-heading><card-wrapper><card card-name=\\\"ehr-provider-settings card\\\"><div class=\\\"header form-inputs-wrapper\\\"><h3>{{\\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.EHR_PROVIDER_SETTINGS\\' | translate}}</h3></div><div class=body><ehr-provider-settings user=vm.user enterprise-customer=vm.enterpriseCustomer e-user-profile=vm.eUserProfile ehr-type-credential-fields=vm.ehrTypeCredentialFields amd-office=vm.amdOffice></ehr-provider-settings><div class=form-spacing></div><ehr-office-settings user=vm.user enterprise-customer=vm.enterpriseCustomer e-user-profile=vm.eUserProfile logged-in-office=vm.loggedInOffice></ehr-office-settings></div></card><card card-name=claim-days class=claim-days><h3>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_CLAIM_SETTINGS.HEADER\\' | translate }}</h3><p>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_CLAIM_SETTINGS.COPY\\' | translate }}</p><div class=wrap><text-input regex=^{{::vm.numberRegex}} validation-messages=::vm.claimDaysValidationMessages label-txt=&ge; on-change=\\\"vm.updateClaimDays({model: model})\\\" model=vm.enterpriseCustomer.push_claim_drafts_days_99454 field-type=number model-options=\\\"{ debounce: 700 }\\\" placeholder-txt=\\\"{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.EHR_CLAIM_SETTINGS.PROMPT\\' | translate }}\\\"></text-input></div></card></card-wrapper></uib-tab><!-- Payment Methods --><uib-tab index=3 authorize=role:biller><uib-tab-heading>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.PAYMENT_METHODS\\' | translate }}</uib-tab-heading><customer-source user=vm.user stripe-customer=vm.stripeCustomer enterprise-customer=vm.enterpriseCustomer></customer-source></uib-tab><uib-tab index=4 authorize=\\\"role:administrative, role:clinical\\\"><uib-tab-heading>{{ \\'PORTAL.ENTERPRISE.PRACTICE_SETTINGS.TAB_HEADINGS.STAFF_ACCOUNTS\\' | translate }}</uib-tab-heading><provider-invite user=vm.user enterprise-customer=vm.enterpriseCustomer e-user-profile=vm.eUserProfile practice-roles=vm.practiceRoles enterprise-roles=vm.enterpriseRoles></provider-invite><providers-list user=vm.user enterprise-customer=vm.enterpriseCustomer enterprise-invites=vm.enterpriseInvites providers=vm.providers enterprise-roles=vm.enterpriseRoles></providers-list></uib-tab></uib-tabset></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/update-bank-account/update-bank-account.html\",\"<div id=update-card><add-bank-account enterprise-customer=vm.enterpriseCustomer on-success=\\\"vm.onSuccess({public_token: public_token, metadata: metadata})\\\" on-load=\\\"vm.onLoad({linkHandler: linkHandler})\\\" on-event=\\\"vm.onEvent({eventName: eventName, metadata: metadata})\\\" on-exit=\\\"vm.onExit({err: err, metadata: metadata})\\\"></add-bank-account></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-billing/update-card/update-card.html\",\"<div id=update-card><p>{{ \\'PORTAL.BILLING.UPDATE_CARD.BODY.COPY\\' | translate }}</p><form name=updateForm class=top-label-form ng-submit=vm.updateCard()><div class=row><text-input class-name=name form=updateForm model=vm.payment.name label-txt=\\\"{{ \\'GLOBAL.CREDIT_CARD.FIELDS.NAME\\' | translate }}\\\" input-id=name input-name=name></text-input></div><credit-card-fields stripe=vm.stripe card=vm.card></credit-card-fields><div class=card-form-footer><div class=form-footer-inner><button type=submit class=\\\"btn btn-primary pull-right btn-save\\\" tabindex=4 promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button type=button class=\\\"btn btn-secondary pull-right btn-cancel\\\" tabindex=5 ng-click=\\\"vm.onEdit = false\\\">{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button></div></div></form></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/allergies/allergies.html\",\"<div>Allergies for {{vm.patientUserProfile.name_first}}</div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/barriers/barriers.html\",\"<div><table-lister is-compact=vm.isCompact options=vm.tableOptions get-page-callback=\\\"vm.getPage(perPage, pageNumber)\\\" on-save-callback=vm.save(row) on-delete-callback=vm.delete(row)></table-lister></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/caregivers/caregivers.html\",\"<div><table-lister is-compact=vm.isCompact options=vm.tableOptions get-page-callback=\\\"vm.getPage(perPage, pageNumber)\\\" on-save-callback=vm.save(row) on-delete-callback=vm.delete(row)></table-lister></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/goals/goals.html\",\"<div><table-lister is-compact=vm.isCompact options=vm.tableOptions get-page-callback=\\\"vm.getPage(perPage, pageNumber)\\\" on-save-callback=vm.save(row) on-delete-callback=vm.delete(row)></table-lister></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/interventions/interventions.html\",\"<div><table-lister is-compact=vm.isCompact options=vm.tableOptions get-page-callback=\\\"vm.getPage(perPage, pageNumber)\\\" on-save-callback=vm.save(row) on-delete-callback=vm.delete(row)></table-lister></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/medications/medications.html\",\"<div>Medications for {{vm.patientUserProfile.name_first}}</div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/providers/providers.html\",\"<div><table-lister is-compact=vm.isCompact options=vm.tableOptions get-page-callback=\\\"vm.getPage(perPage, pageNumber)\\\" on-save-callback=vm.save(row) on-delete-callback=vm.delete(row)></table-lister></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/symptoms/symptoms.html\",\"<div><table-lister is-compact=vm.isCompact options=vm.tableOptions get-page-callback=\\\"vm.getPage(perPage, pageNumber)\\\" on-save-callback=vm.save(row) on-delete-callback=vm.delete(row)></table-lister></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-care-plan/vitals/vitals.html\",\"<div>Vitals for {{vm.patientUserProfile.name_first}}</div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-deactivated-patients/e-deactivated-users-card/e-deactivated-users-card.html\",\"<div><card-wrapper class=e-deactivated-users-card-wrapper><card card-name=e-deactivated-users-card><section class=card-header><div class=card-header-inner><div class=pagination-options><span class=show>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.SHOW\\' | translate}}</span><select-input id=pagination-options options-array=::vm.optionsForPagination model=vm.itemsPerPage on-change=\\\"vm.onChange(\\'_perPage\\', {model: model})\\\"></select-input><span class=results>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.RESULTS\\' | translate}}</span></div><span class=text>{{vm.patientDashboard.deactivated_patient_count}} {{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.HEADER\\' | translate}} <img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENTS.TOTAL_POPOVER.ALT\\' | translate}}\\\" uib-popover=\\\"{{\\'PORTAL.ENTERPRISE.PATIENTS.TOTAL_POPOVER.DEACTIVATED_COPY\\' | translate}}\\\" popover-title=\\\"{{\\'PORTAL.ENTERPRISE.PATIENTS.TOTAL_POPOVER.HEADER\\' | translate}}\\\" popover-class=total-patients-popover popover-placement=bottom popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></span></div></section><div id=e-deactivated-users class=module us-spinner spinner-theme=black spinner-on=vm.showSpinner><div class=\\\"row list-filters\\\"><form name=queryForm><div class=list-filter><text-input class-name=name-query form=queryForm model=vm.query label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" on-change=\\\"vm.onChange(\\'query\\', {model: model})\\\" placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" input-id=query input-name=query model-options=\\\"{debounce: 700}\\\" tab-index=1></text-input></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.DOB\\' | translate}}</label><input date-range-picker minyear=2019 class=\\\"form-control date-picker\\\" type=text id=datepicker ng-model=vm.datePicker.date model=vm.datePicker.date input-name=patient_name options=vm.datePicker.options picker=vm.datePicker.picker date-range=vm.graphDateRange></div><div class=list-filter><select-input form=queryForm model=vm.primaryProviderQuery label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.MONITORING_PROVIDER\\' | translate}}\\\" on-change=\\\"vm.onChange(\\'$providers.id$\\', {model: model})\\\" options-array=::vm.primaryProviderOptions input-name=primary-provider-query input-id=primary-provider-query tab-index=2></select-input></div></form></div><table class=table><thead class=thead><tr><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.RPM_START_DATE\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.PATIENT\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.MONITORING_PROVIDER\\' | translate}}</th><th class=hidden-xs>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.DEVICES\\' | translate}}</th><th class=hidden-xs>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.DEACTIVATION_DATE\\' | translate}}</th><th class=hidden-xs>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.DEACTIVATION_REASON\\' | translate}}</th><th></th></tr></thead><tbody><tr ng-repeat=\\\"userProfile in vm.patients track by $index\\\" ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><td><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch>{{userProfile.created_at | date:\\'MM/dd/yyyy\\'}}</div></a></td><td class=user-name><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch><i class=\\\"fa fa-user-md\\\" ng-if=userProfile.is_provider_device_test_account></i> <span class=badge ng-if=userProfile.is_fake>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.DEMO\\' | translate}} </span><span class=patient-info><strong>{{userProfile.name_first}} {{userProfile.name_last}}</strong><br>{{userProfile.gender | gender}}, {{userProfile.date_of_birth | dobToAge}},<diagnosis-codes codes=vm.userProfile.enterprise_chart.diagnosis.codes limit=3></diagnosis-codes></span></div></a></td><td><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch>{{userProfile.providers[0].name_first}} {{userProfile.providers[0].name_last}}</div></a></td><!--<td class=\\\"user-record-number hidden-xs\\\">{{userProfile.recNum}}</td>--><td class=\\\"hidden-xs devices\\\"><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch><span ng-if=\\\"userProfile.devices.length > 0\\\" ng-repeat=\\\"device in userProfile.devices | orderBy:\\'device_type.category\\'\\\">{{vm.getDeviceTypeName(device) | lowercase}}<span ng-if=\\\"userProfile.devices.length > 1 && !$last\\\">, </span></span><span ng-if=\\\"userProfile.devices.length === 0\\\">&ndash;</span></div></a></td><td><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch>{{userProfile.deactivated_at | date:\\'MM/dd/yyyy\\'}}</div></a></td><td><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch>{{userProfile.deactivation_reason.description }}</div></a></td><td><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.MODAL.HEADER template-url=app/components/portal/enterprise/e-remote-patient-monitoring-status/e-reactivation.modal.html custom-payload=vm.modalBody() close-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CANCEL action-btn-trans=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.REACTIVATE_PATIENT action-callback=vm.reActivate(userProfile)><button type=button class=\\\"btn btn-reactivate btn-primary\\\" ng-if=userProfile.deactivated_at>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.REACTIVATE\\' | translate}}</button></are-you-sure-modal></td></tr><tr ng-if=\\\"vm.patients.length < 1\\\"><td>{{\\'PORTAL.ENTERPRISE.GLOBAL.NONE\\' | translate}}</td><td>{{ userProfile.deactivated_at | date:\\'MM/dd/yyyy\\'}}</td><td>{{ userProfile.deactivation_reason }}</td></tr></tbody></table></div><card-wrapper ng-if=\\\"vm.patientsCount > 0\\\"><card card-name=\\\"pagination transparent\\\"><ul ng-if=\\\"vm.patientsCount > 0\\\" uib-pagination items-per-page=vm.itemsPerPage total-items=vm.patientsCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-add/e-enrollments-add.html\",\"<div id=e-enrollment-add><div class=inner-panel><h2 ng-if=!vm.enrollment.id>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.BODY.HEADER\\' | translate}}</h2><h2 ng-if=vm.enrollment.id>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.BODY.HEADER_EDIT\\' | translate:vm.translationData}}</h2><p class=subheader>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.BODY.COPY\\' | translate}}</p><e-enrollments-add-card is-internal=vm.user.user_profile.is_internal admin-user-profile-id=vm.user.user_profile.id enrollment=vm.enrollment relationships=vm.relationships device-types=vm.deviceTypes.data.data cancel-state=enterprise.enrollments med-advantage-providers=vm.medAdvantageProviders providers=vm.providers tos-delivery-methods=vm.tosDeliveryMethods enterprise-customer=vm.enterpriseCustomer user=vm.user features=vm.features global-configurations=vm.globalConfigurations></e-enrollments-add-card></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-add-card/e-enrollments-add-card.html\",\"<card-wrapper><card card-name=enrollment-new><div id=tabs class=module><div class=col-xs-12><uib-tabset active=vm.activeTab><uib-tab index=0 heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.PROFILE\\' | translate }}\\\" select=\\\"vm.onTabSelect($event, \\'.tags > input\\')\\\" ng-click=\\\"vm.activeTab = 0\\\"><form name=vm.enrollmentProfileForm class=top-label-form ng-submit=\\\"vm.activeTab = 1\\\" novalidate><div class=row ng-if=vm.ccmEnabled><div class=\\\"form-group text-input patient-services\\\" ng-class=\\\"{\\'has-error\\': vm.enrollmentProfileForm[\\'service-options\\'].$invalid && (vm.enrollmentProfileForm[\\'service-options\\'].$touched || vm.enrollmentProfileForm[\\'service-options\\'].$dirty)}\\\"><select-input class-name=select-service form=vm.enrollmentProfileForm model=vm.selectedPatientServices options-array=::vm.serviceOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.PATIENT_SERVICES\\' | translate }}\\\" input-name=service-options input-id=service-options tab-index=14 on-change=\\\"vm.onPatientServiceChange({model: model})\\\" is-required=true></select-input></div></div><div class=row><div class=\\\"form-group text-input diagnosis\\\" ng-class=\\\"{\\'has-error\\': vm.dXCodesRequired && vm.enrollmentProfileForm[\\'diagnosis\\'].$invalid && (vm.enrollmentProfileForm[\\'diagnosis\\'].$touched || vm.enrollmentProfileForm[\\'diagnosis\\'].$dirty)}\\\"><!-- http://mbenford.github.io/ngTagsInput/documentation/api --><label>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DIAGNOSIS_CODES\\' | translate }}</label><tags-input qa-id=\\\"diagnosis code\\\" ng-model=vm.enrollment.diagnosis.codes name=diagnosis add-from-autocomplete-only=true on-tag-added=vm.onTagAdded($tag) tabindex=1 placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DX_CODES\\' | translate }}\\\" min-tags=\\\"{{ vm.dXCodesRequired && !vm.nonMedicareEnabled ? 1 : 0 }}\\\" ng-required=\\\"vm.dXCodesRequired && !nonMedicareEnabled\\\" ng-disabled=vm.nonMedicareEnabled key-property=code display-property=code><div us-spinner=\\\"{radius:4, width:2, length: 4, top: \\'50%\\', left: \\'-13px\\'}\\\" spinner-theme=black spinner-on=vm.isTagLoading></div><auto-complete source=vm.loadDiagnoses($query) key-property=code debounce-delay=250 display-property=description max-results-to-show=8 select-first-match=true></auto-complete></tags-input><field-errors form=::vm.enrollmentProfileForm input-name=diagnosis></field-errors></div><div class=\\\"form-group text-input shipment\\\" ng-class=\\\"{\\'has-error\\': vm.enrollmentProfileForm[\\'shipment\\'].$invalid && (vm.enrollmentProfileForm[\\'shipment\\'].$touched || vm.enrollmentProfileForm[\\'shipment\\'].$dirty)}\\\"><!-- http://mbenford.github.io/ngTagsInput/documentation/api --><label for=shipment>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.PATIENT_MONITORING_DEVICES\\' | translate }}</label><ui-select multiple tabindex=2 close-on-select=false style=\\\"width: 100%\\\" theme=bootstrap name=shipment search-enabled=false input-id=shipment ng-model=vm.selectedDevices on-select=\\\"vm.onShipmentAdd($item, $model)\\\" on-remove=\\\"vm.onShipmentRemove($item, $model)\\\" ng-required=vm.deviceSelectionRequired() ng-disabled=vm.disableDeviceSelection()><ui-select-match qa-id=selectDevice placeholder=\\\"Select device(s)\\\"><span>{{$item.description}}</span></ui-select-match><ui-select-choices position=down group-by=vm.shipmentGroupBy ui-disable-choice=vm.disableShipmentChoice(item) repeat=\\\"item in vm.deviceTypes track by $index\\\"><span>{{vm.getDescriptionWithAvailability(item)}}</span></ui-select-choices></ui-select><field-errors form=::vm.enrollmentProfileForm input-name=shipment></field-errors><label><input type=checkbox name=q-patient-email id=yes-email ng-change=vm.onChangeDoesPatientHaveEmail() ng-model=vm.enrollment.uses_xl_devices> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.USE_XL_WHEN_AVAILABLE\\' | translate }}</label><div id=legacy-devices ng-if=vm.legacyDevices.length><b>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.LEGACY_DEVICES\\' | translate }}</b> <i class=info-link uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.WHAT_IS_LEGACY\\' | translate }}\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-placement=bottom popover-class=legacy-popover></i><ul><li ng-repeat=\\\"device in vm.legacyDevices track by $index\\\">{{device.device_type.description}} ({{device.device_type.manufacturer}})</li></ul></div></div><!--                    <select-input class-name=\\\"eula-delivery-method\\\"--><!--                                  form=\\\"vm.enrollmentProfileForm\\\"--><!--                                  model=\\\"vm.enrollment.pactsafe_request_delivery_method\\\"--><!--                                  options-array=\\\"::vm.pactsafeEulaDeliveryOptionsArray\\\"--><!--                                  on-change=\\\"vm.onDeliveryMethodChange({model: model})\\\"--><!--                                  label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_METHOD\\' | translate }}\\\"--><!--                                  input-name=\\\"eula-delivery-method\\\"--><!--                                  input-id=\\\"eula-delivery-method\\\"--><!--                                  tab-index=\\\"2\\\"--><!--                                  is-disabled=\\\"!!vm.enrollment.id\\\"--><!--                                  is-required=\\\"true\\\"></select-input>--></div><div class=row><text-input class-name=first-name form=vm.enrollmentProfileForm model=vm.enrollment.name_first label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=first-name input-id=first-name height-class=input-sm tab-index=3 is-required=true></text-input><text-input class-name=last-name form=vm.enrollmentProfileForm model=vm.enrollment.name_last label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=last-name input-id=last-name height-class=input-sm tab-index=4 is-required=true></text-input></div><div class=row><select-input class-name=phone-type form=vm.enrollmentProfileForm model=vm.enrollment.phone_1_type options-array=::vm.phoneLabelOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PHONE_TYPE\\' | translate }}\\\" input-name=primary-phone-label input-id=primary-phone-label info-txt=\\\"{{ \\'SETUP.PROFILE.FIELDS.PHONE_TYPE_DEFAULT\\' | translate }}\\\" tab-index=5 is-disabled=\\\"vm.enrollment.pactsafe_request_delivery_method === \\'SMS\\'\\\" is-required=true></select-input><text-input class-name=primary-phone form=vm.enrollmentProfileForm model=vm.enrollment.phone_1_number mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" mask-options=\\\"{clearOnBlur: false}\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone tab-index=6 is-required=true><phone-type-modal phone-type=vm.enrollment.phone_1_type phone-number=vm.enrollment.phone_1_number></phone-type-modal><duplicate-phone-modal phone-type=vm.enrollment.phone_1_type phone-number=vm.enrollment.phone_1_number enrollment-id=vm.enrollment.id></text-input></div><div class=row><multi-phone-number-input ng-if=vm.multiPhoneNumberInputReady number-of-inputs=::vm.numberOfAdditionalPhoneNumbers number-of-existing-phone-numbers=vm.numberExistingAdditionalPhoneNumberInputs model=vm.enrollment phone-type-class-name=phone-type phone-number-class-name=primary-phone add-phone-class-name=\\\"add-phone form-group\\\" form=vm.enrollmentProfileForm phone-type-label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PHONE_TYPE\\' | translate }}\\\" phone-number-label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.ADDITIONAL_PHONE\\' | translate }}\\\" options-array=::vm.phoneLabelOptionsArray starting-tab-index=6 enrollment-id=vm.enrollment.id></multi-phone-number-input></div><div class=row><text-input class-name=email field-type=text form=vm.enrollmentProfileForm model=vm.enrollment.email on-blur=\\\"vm.onEmailBlur({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages tab-index=7 is-disabled=vm.isEmailDisabled is-required=!vm.isEmailDisabled><label><input type=checkbox name=q-patient-email id=yes-email ng-change=vm.onChangeDoesPatientHaveEmail() ng-model=vm.enrollment.has_no_email> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.HAS_NO_EMAIL\\' | translate }}</label></text-input><date-input class-name=date-of-birth form=vm.enrollmentProfileForm model=vm.enrollment.date_of_birth label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=date-of-birth onblur=vm.validateBirthdate() input-id=date-of-birth date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" tab-index=8 is-required=true></date-input></div><div class=row><select-input class-name=gender form=vm.enrollmentProfileForm model=vm.enrollment.gender options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'SETUP.GENDER.FIELDS.GENDER\\' | translate }}\\\" on-change=\\\"vm.onGenderChange({model: model})\\\" input-name=gender input-id=gender tab-index=9 is-required=true></select-input><text-input class-name=ehr-id form=vm.enrollmentProfileForm model=vm.enrollment.patient_ehr_id placeholder-txt=\\\"{{ vm.ehrIdFieldPlaceholderText }}\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EHR_ID\\' | translate }}\\\" input-name=ehr-id input-id=ehr-id tab-index=10 is-required=false regex=^[a-zA-Z0-9]+$></text-input></div><div class=row><text-input class-name=pcp form=vm.enrollmentProfileForm model=vm.enrollment.pcp.full_name label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PCP\\' | translate }}\\\" input-name=pcp input-id=pcp tab-index=11 is-required=false></text-input><select-input class-name=medicare-advantage form=vm.enrollmentProfileForm model=vm.enrollment.enterprise_admin_id options-array=::vm.providerOptions label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate }}\\\" input-name=primary-provider input-id=primary-provider tab-index=12 is-required=true></select-input></div><div class=row><select-input class-name=preferred-language form=vm.enrollmentProfileForm model=vm.enrollment.language_id options-array=::vm.preferredLanguageOptionsArray label-txt=\\\"{{ \\'SETUP.LANGUAGE.FIELDS.LANGUAGE\\' | translate }}\\\" input-name=preferred-language input-id=preferred-language tab-index=13 is-required=true></select-input><div class=patient-groups><div class=\\\"form-group select-input\\\"><label for=patient-groups>Patient Groups {{vm.groupDropdownSettings}}</label><div class=rpm-device-filter id=patient-groups ng-dropdown-multiselect=\\\"\\\" extra-settings=\\\"{  displayProp: \\'name\\',\\n                                            idProperty: \\'id\\',\\n                                            scrollableHeight: \\'inherit\\',\\n                                            selectedToTop: true,\\n                                            scrollable: true,\\n                                            smartButtonMaxItems: 3,\\n                                            checkBoxes: true,\\n                                            showCheckAll: false,\\n                                            showUncheckAll: false,\\n                                            buttonClasses: \\'form-control input-sm select-button\\' }\\\" options=vm.groupOptions selected-model=vm.enrollment.patient_groups translation-texts=\\\"{ dynamicButtonTextSuffix: \\'Selected\\' }\\\"></div></div></div></div><div class=row><select-input ng-if=vm.showGlucoseTestsPerDayField class-name=glucose-tests-per-day form=vm.enrollmentProfileForm model=vm.enrollment.glucose_tests_per_day options-array=::vm.glucoseTestsPerDayOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.GLUCOSE_TESTS_PER_DAY\\' | translate }}\\\" input-name=glucose-tests-per-day input-id=glucose-tests-per-day tab-index=14 height-class=input-sm is-required=true></select-input></div><div class=form-footer><button type=button class=\\\"btn btn-secondary pull-left\\\" ui-sref={{vm.cancelState}} promise-btn>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button qa-id=profileNext type=submit class=\\\"btn btn-primary pull-right btn-next\\\" ng-disabled=\\\"!vm.enrollmentProfileForm[\\'first-name\\'].$valid ||\\n                    !vm.enrollmentProfileForm[\\'last-name\\'].$valid ||\\n                    !vm.enrollmentProfileForm[\\'date-of-birth\\'].$valid ||\\n                    !vm.enrollmentProfileForm[\\'primary-phone-label\\'].$valid ||\\n                    !vm.enrollmentProfileForm[\\'primary-phone\\'].$valid ||\\n                    !vm.enrollmentProfileForm[\\'preferred-language\\'].$valid ||\\n                    vm.dXCodesRequired && (!vm.enrollment.diagnosis.codes ||\\n                    vm.enrollment.diagnosis.codes.length === 0) ||\\n                    (!vm.selectedDevices && vm.deviceSelectionRequired()) ||\\n                    (vm.selectedDevices.length === 0 && vm.deviceSelectionRequired()) ||\\n                    !vm.enrollmentProfileForm[\\'gender\\'].$valid ||\\n                    !vm.enrollmentProfileForm[\\'ehr-id\\'].$valid\\\" ng-click=vm.initPatientAgreementDefaults()>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></div></form></uib-tab><uib-tab disable=vm.enrollmentProfileForm.$invalid index=1 heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.INSURANCE\\' | translate }}\\\" select=\\\"vm.onTabSelect($event, \\'.tags > input\\')\\\"><form name=vm.enrollmentInsuranceForm class=top-label-form ng-submit=\\\"vm.activeTab = 2\\\" novalidate><div class=row><input class=insurance-type-input type=radio name=insuranceType id=medicare ng-value=\\\"\\'medicare\\'\\\" ng-model=vm.insuranceType required><label class=insurance-type-label for=medicare><h4 class=insurance-type-heading>{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_TITLE\\' | translate }}</h4></label></div><div class=row ng-show=\\\"vm.insuranceType === \\'medicare\\'\\\"><text-input class-name=medicare-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.policy_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_NUM\\' | translate }}\\\" input-name=medicare-num input-id=medicare-num height-class=input-sm regex={{::vm.mbiRegex}} mask=****-***-**** mask-placeholder=____-___-____ mask-options=\\\"{clearOnBlur: false}\\\" tab-index=18 is-required=\\\"!vm.isInternal && vm.insuranceType === \\'medicare\\'\\\"></text-input></div><div class=row><input class=insurance-type-input type=radio name=insuranceType id=other ng-value=\\\"\\'other\\'\\\" ng-model=vm.insuranceType required><label class=insurance-type-label for=other><h4 class=insurance-type-heading>{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_OTHER_TITLE\\' | translate }}</h4></label></div><div class=row ng-show=\\\"vm.insuranceType === \\'other\\'\\\"><typeahead-input input-id=med-advantage class-name=medicare-advantage form=vm.enrollmentProfileForm label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE\\' | translate }}\\\" model=vm.enrollment.primary_insurer.medicare_advantage_provider_name typeahead-payload=vm.onSearch typeahead-field-name=name typeahead-json-node-name=name typeahead-min-length=3 is-required=false tab-index=12 typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\"></typeahead-input></div><div class=row ng-show=\\\"vm.insuranceType === \\'other\\'\\\"><text-input class-name=group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.group_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_GROUP_NUM\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=20></text-input><text-input class-name=individual-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.individual_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_INDIVIDUAL_NUM\\' | translate }}\\\" input-name=med-advantage-individual-num input-id=med-advantage-individual-num height-class=input-sm tab-index=21 is-required=\\\"vm.insuranceType === \\'other\\' && !vm.isInternal\\\"></text-input></div><div class=row ng-show=vm.insuranceType><div class=add-secondary-insurance ng-show=!vm.showSecondaryInsurance ng-click=\\\"vm.showSecondaryInsurance = !vm.showSecondaryInsurance\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"Add another insurace policy\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.HAS_SECONDARY\\' | translate }}</div></div><div ng-if=vm.showSecondaryInsurance class=secondary-insurance-panel><div class=row><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.SECONDARY_INSURANCE\\' | translate }}</h4></div><div class=row><select-input class-name=secondary-insurance-type form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.insurer_type_id options-array=::vm.insurerTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.TYPE\\' | translate }}\\\" input-name=secondary-insurance-type input-id=secondary-insurance-type tab-index=22></select-input><text-input class-name=secondary-insurance-name form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.insurer_name label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NAME_OF_INSURER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=23 is-required=vm.isMedAdvantageNumsRequired></text-input></div><div class=row><text-input class-name=secondary-group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.group_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.GROUP_NUMBER\\' | translate }}\\\" input-name=secondary-insurance-group-num input-id=secondary-insurance-group-num height-class=input-sm tab-index=24></text-input><text-input class-name=secondary-ins-num form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.individual_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.INDIVIDUAL_NUMBER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=25></text-input><text-input class-name=secondary-notes form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.notes label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NOTES\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=26></text-input></div><div class=row><label class=secondary-list-item><input type=checkbox ng-model=vm.enrollment.secondary_insurer.policy_holder_is_patient class=secondary-checkbox ng-click=vm.blankSecondaryRelationshipFields() tabindex=27> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PH_IS_PATIENT\\' | translate }}</label></div><div class=row><select-input class-name=secondary-patient-relationship form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.patient_to_policyholder_relationship_id options-array=::vm.ptprTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PATIENT_RELATIONSHIP\\' | translate }}\\\" input-name=secondary-patient-relationship input-id=secondary-patient-relationship tab-index=28 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></select-input><text-input class-name=secondary-policyholder-firstname form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_name_first label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_FIRST_NAME\\' | translate }}\\\" input-name=secondary-policyholder-firstname input-id=secondary-policyholder-firstname height-class=input-sm tab-index=29 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></text-input><text-input class-name=secondary-policyholder-lastname form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_name_last label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_LAST_NAME\\' | translate }}\\\" input-name=secondary-policyholder-lastname input-id=secondary-policyholder-lastname height-class=input-sm tab-index=30 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></text-input></div><div class=row><date-input class-name=secondary-insurance-date-of-birth form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_date_of_birth label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=date-of-birth input-id=date-of-birth date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" tab-index=31 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></date-input><select-input class-name=secondary-insurance-gender form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_sex options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_GENDER\\' | translate }}\\\" on-change=\\\"vm.onGenderChange({model: model})\\\" input-name=gender input-id=gender tab-index=32 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></select-input></div><div class=row><div class=remove-secondary-insurance ng-if=!vm.showTertiaryInsurance ng-click=\\\"vm.showSecondaryInsurance = !vm.showSecondaryInsurance\\\"><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_SECONDARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_SECONDARY\\' | translate }}</div><div ng-if=\\\"!vm.showTertiaryInsurance && (vm.enrollment.secondary_insurer.group_num || vm.enrollment.secondary_insurer.individual_num || vm.enrollment.secondary_insurer.insurer_type_id)\\\" class=add-tertiary-insurance ng-click=\\\"vm.showTertiaryInsurance = !vm.showTertiaryInsurance\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.HAS_TERTIARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.HAS_TERTIARY\\' | translate }}</div></div></div><div ng-if=vm.showTertiaryInsurance class=tertiary-insurance-panel><div class=row><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.TERTIARY_INSURANCE\\' | translate }}</h4></div><div class=row><select-input class-name=tertiary-insurance-type form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.insurer_type_id options-array=::vm.insurerTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.TYPE\\' | translate }}\\\" input-name=tertiary-insurance-type input-id=tertiary-insurance-type tab-index=33></select-input><text-input class-name=tertiary-insurance-name form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.insurer_name label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NAME_OF_INSURER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=34 is-required=vm.enrollment.tertiary_insurer.insurer_type_id></text-input></div><div class=row><text-input class-name=tertiary-group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.group_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.GROUP_NUMBER\\' | translate }}\\\" input-name=tertiary-insurance-group-num input-id=tertiary-insurance-group-num height-class=input-sm tab-index=35 is-required=vm.enrollment.tertiary_insurer.insurer_type_id></text-input><text-input class-name=tertiary-ins-num form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.individual_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.INDIVIDUAL_NUMBER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=36 is-required=vm.enrollment.tertiary_insurer.insurer_type_id></text-input><text-input class-name=tertiary-notes form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.notes label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NOTES_TERTIARY\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=37 is-required=false></text-input></div><div class=row><label class=tertiary-list-item><input type=checkbox ng-click=vm.blankTertiaryRelationshipFields() ng-model=vm.enrollment.tertiary_insurer.policy_holder_is_patient class=tertiary-checkbox tabindex=38> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PH_IS_PATIENT\\' | translate }}</label></div><div class=row><select-input class-name=tertiary-patient-relationship form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.patient_to_policyholder_relationship_id options-array=::vm.ptprTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PATIENT_RELATIONSHIP\\' | translate }}\\\" input-name=tertiary-patient-relationship input-id=tertiary-patient-relationship tab-index=39 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></select-input><text-input class-name=tertiary-policyholder-firstname form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_name_first label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_FIRST_NAME\\' | translate }}\\\" input-name=tertiary-policyholder-firstname input-id=tertiary-policyholder-firstname height-class=input-sm tab-index=40 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></text-input><text-input class-name=tertiary-policyholder-lastname form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_name_last label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_LAST_NAME\\' | translate }}\\\" input-name=tertiary-policyholder-lastname input-id=tertiary-policyholder-lastname height-class=input-sm tab-index=41 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></text-input></div><div class=row><date-input class-name=tertiary-insurance-date-of-birth form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_date_of_birth label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=date-of-birth input-id=date-of-birth date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" tab-index=42 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></date-input><select-input class-name=tertiary-insurance-gender form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_sex options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_GENDER\\' | translate }}\\\" on-change=\\\"vm.onGenderChange({model: model})\\\" input-name=gender input-id=gender tab-index=43 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></select-input></div><div class=row><div class=remove-secondary-insurance ng-click=\\\"vm.showTertiaryInsurance = !vm.showTertiaryInsurance\\\"><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"Remove secondary insurance policy\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_TERTIARY\\' | translate }}</div></div></div><div class=row ng-show=vm.insuranceType class=align-dos-row><label class=checkbox-align-dos><input type=checkbox name=align-dos class=align-dos ng-model=vm.enrollment.align_dos> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.ALIGN_DOS\\' | translate }} <i class=info-link uib-popover-html=::vm.alignExplanation() popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=top popover-class=dashboard-popover></i></label></div><div class=form-footer><button id=ins-btn-save type=submit class=\\\"btn btn-primary pull-right btn-next\\\" tab-index=44 ng-disabled=\\\"!vm.isInternal && vm.enrollmentInsuranceForm.$invalid\\\" ng-click=\\\"vm.activeTab = 2\\\">{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button> <button class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 0\\\" tab-index=34>{{ \\'GLOBAL.BUTTONS.PREVIOUS\\' | translate }}</button></div></form></uib-tab><uib-tab index=2 disable=\\\"vm.enrollmentInsuranceForm.$invalid || vm.enrollmentProfileForm.$invalid\\\" select=\\\"vm.onTabSelect($event, \\'#street1\\')\\\" heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.MAILING_ADDRESS\\' | translate }}\\\"><form name=vm.enrollmentAddressForm class=top-label-form ng-submit=\\\"vm.activeTab = 3\\\" novalidate><div class=row><text-input class-name=street1 form=vm.enrollmentAddressForm model=vm.enrollment.address.address_street label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STREET1\\' | translate }}\\\" input-name=street1 input-id=street1 tab-index=42 is-required=true></text-input></div><div class=row ng-if=vm.enrollment.address.address_zipcode><div class=city-state><text-input class-name=city form=vm.enrollmentAddressForm model=vm.enrollment.address.address_city label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.CITY\\' | translate }}\\\" input-name=city input-id=city tab-index=43 is-required=true></text-input><select-input class-name=state form=vm.enrollmentAddressForm model=vm.enrollment.address.address_state options-array=::vm.stateOptionsArray label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE\\' | translate }}\\\" input-name=state input-id=state tab-index=44 info-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE_DEFAULT\\' | translate }}\\\" is-required=true></select-input></div></div><div class=row><text-input class-name=zip form=vm.enrollmentAddressForm model=vm.enrollment.address.address_zipcode on-change=\\\"vm.onChange({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.ZIP\\' | translate }}\\\" input-name=zip input-id=zip mask=99999 mask-placeholder=_____ mask-options=\\\"{clearOnBlur: false}\\\" tab-index=45 is-required=true><p ng-if=vm.geocode.processing class=is-loading><span class=\\\"btn-spinner input-spinner\\\"></span></p></text-input><p ng-if=\\\"!vm.geocode.result && vm.enrollment.address.address_zipcode && !vm.geocode.processing\\\" class=help-block>{{ \\'GLOBAL.ADDRESS.FIELDS.ZIP_HELP\\' | translate }}</p></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-right btn-next\\\" ng-disabled=vm.enrollmentAddressForm.$invalid tab-index=46>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button> <button class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 1\\\" tab-index=47>{{ \\'GLOBAL.BUTTONS.PREVIOUS\\' | translate }}</button></div></form></uib-tab><uib-tab index=3 heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.PATIENT_AGREEMENT\\' | translate }}\\\" disable=\\\"vm.enrollmentAddressForm.$invalid || vm.enrollmentProfileForm.$invalid\\\"><signature-required-modal header-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.HEADER\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.HEADER\\'}}\\\" body-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BODY_ENROLLMENT_CREATE\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.BODY\\'}}\\\" close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.CLOSE action-btn-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.ACTION\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.BUTTONS.ACTION\\'}}\\\" short-circuit-if=\\\"vm.enrollment.signature_status === \\'SIGNED\\' || (!vm.inPersonOptionSelected && vm.eulaDeliveryMethod !== \\'PHYSICIAN_ATTESTATION\\')\\\" action-callback=vm.save(false) sign-later-btn-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.SIGN_LATER\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.BUTTONS.SIGN_LATER\\'}}\\\" sign-later-callback=vm.save(true)><form name=vm.enrollmentEULADelivery class=top-label-form novalidate><div class=row ng-if=\\\"vm.enrollment.signature_status !== \\'SIGNED\\'\\\"><div id=eula-delivery-method class=\\\"eula-delivery-method form-group\\\"><label ng-if=!vm.enrollment.id>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_METHOD\\' | translate }}</label><label ng-if=\\\"vm.enrollment.id && !vm.allTOSMethodsUsed\\\">{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.EULA_SELECT\\' | translate }}</label><label ng-if=\\\"vm.enrollment.id && vm.allTOSMethodsUsed\\\">{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.EULA_ALL_SELECTED\\' | translate }}</label><div class=subtext ng-if=\\\"vm.enrollment.id && vm.previouslySelectedTOSDeliveryMethodsStrings.length\\\" ng-repeat=\\\"lastMethod in vm.previouslySelectedTOSDeliveryMethodsStrings\\\">{{lastMethod}}</div><div class=radio ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedPhysicianAttestationOption\\\"><label class=physician-attestation><input type=radio name=eula-delivery-method ng-value=\\\"\\'PHYSICIAN_ATTESTATION\\'\\\" ng-click=vm.onEULADeliveryMethodChange() ng-model=vm.eulaDeliveryMethod ng-required=true tab-index=34> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.PHYSICIAN_ATTESTATION\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign by physician attestation - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.PHYSICIAN_ATTESTATION\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div><div class=radio ng-if=\\\"!vm.enrollment.id || !(vm.previouslySelectedEmailOption && vm.previouslySelectedSMSOption && vm.previouslySelectedInPersonOption)\\\"><label><input type=radio name=eula-delivery-method ng-value=\\\"\\'ELECTRONIC\\'\\\" ng-click=\\\"vm.onEULADeliveryMethodChange(\\'ELECTRONIC\\')\\\" ng-model=vm.eulaDeliveryMethod ng-required=true tab-index=35> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.ELECTRONIC\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign electronically - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.ELECTRONIC\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div><ul class=subcategories-list ng-if=\\\"!vm.enrollment.id || !(vm.previouslySelectedSMSOption && vm.previouslySelectedEmailOption && vm.previouslySelectedInPersonOption)\\\"><li ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedInPersonOption\\\"><label class=checkbox-list-item><input type=checkbox name=in-person-option ng-change=\\\"vm.onEULADeliveryMethodChange(\\'IN_PERSON\\', vm.inPersonOptionSelected)\\\" ng-model=vm.inPersonOptionSelected ng-required=\\\"vm.eulaDeliveryMethod === \\'ELECTRONIC\\' && !vm.emailOptionSelected && !vm.smsOptionSelected && !vm.inPersonOptionSelected\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.IN_PERSON\\' | translate }}</label></li><li ng-if=\\\"vm.enterpriseCustomer.vma_consent_enabled && (!vm.enrollment.id || !vm.previouslySelectedSMSOption)\\\"><label class=checkbox-list-item><input type=checkbox name=sms-option ng-change=\\\"vm.onEULADeliveryMethodChange(\\'SMS\\', vm.smsOptionSelected)\\\" ng-model=vm.smsOptionSelected ng-disabled=\\\"!((vm.enrollment.phone_1_number && vm.enrollment.phone_1_type === \\'m\\') ||\\n                              (vm.enrollment.phone_2_number && vm.enrollment.phone_2_type === \\'m\\') ||\\n                              (vm.enrollment.phone_3_number && vm.enrollment.phone_3_type === \\'m\\'))\\\" ng-required=\\\"vm.eulaDeliveryMethod === \\'ELECTRONIC\\' && !vm.emailOptionSelected && !vm.smsOptionSelected && !vm.inPersonOptionSelected\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.SMS\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign electronically - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.SMS\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></li><li ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedEmailOption\\\"><label class=checkbox-list-item><input qa-id=viaEmail type=checkbox name=email-option ng-change=\\\"vm.onEULADeliveryMethodChange(\\'EMAIL\\', vm.emailOptionSelected)\\\" ng-model=vm.emailOptionSelected ng-disabled=vm.enrollment.has_no_email ng-required=\\\"vm.eulaDeliveryMethod === \\'ELECTRONIC\\' && !vm.emailOptionSelected && !vm.smsOptionSelected && !vm.inPersonOptionSelected\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.EMAIL\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign electronically - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.EMAIL\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></li></ul><div class=radio ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedIVROption\\\"><label style=\\\"padding-top: 15px; padding-bottom: 12px\\\"><input type=radio name=eula-delivery-method ng-value=\\\"\\'IVR\\'\\\" ng-click=vm.onEULADeliveryMethodChange() ng-model=vm.eulaDeliveryMethod ng-required=true> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.VERBAL\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.IMAGE_ALTS.IVR\\' | translate }}\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.IVR\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div><div class=radio ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedMailOption\\\"><label style=\\\"padding-top: 12px; padding-bottom: 12px\\\"><input type=radio name=eula-delivery-method qa-id=viaMail ng-value=\\\"\\'MAIL\\'\\\" ng-click=vm.onEULADeliveryMethodChange() ng-model=vm.eulaDeliveryMethod ng-required=true> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.MAIL\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign by postal mail - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.MAIL\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div></div></div><div class=row ng-if=\\\"vm.enrollment.signature_status === \\'SIGNED\\'\\\"><div id=eula-delivery-method class=\\\"eula-delivery-method form-group\\\"><label>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_SIGNED\\' | translate:vm.translationData }}</label></div></div><div class=form-footer><button qa-id=patientAgreementSave type=submit class=\\\"btn btn-primary pull-right btn-next\\\" ng-disabled=\\\"!vm.enrollment.id ? vm.enrollmentAddressForm.$invalid || vm.enrollmentEULADelivery.$invalid : vm.enrollmentAddressForm.$invalid\\\">{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button qa-id=patientAgreementPrevious class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 2\\\">{{ \\'GLOBAL.BUTTONS.PREVIOUS\\' | translate }}</button></div></form></signature-required-modal></uib-tab></uib-tabset></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete/e-enrollments-incomplete.html\",\"<div id=e-inner-enrollments class=enterprise><div class=inner-enrollments><h1>{{::vm.enterpriseCustomer.name}}</h1><e-enrollments-incomplete-list authorize=role:administrative enterprise-customer-id=vm.enterpriseCustomer.id enrollments=vm.enrollments device-types=vm.deviceTypes edit-state=enterprise.enrollments-incomplete-edit enrollment-statuses=vm.enrollmentStatuses primary-providers=vm.primaryProviders></e-enrollments-incomplete-list></div><div ui-view></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-edit/e-enrollments-incomplete-edit.html\",\"<div id=e-enrollment-incomplete-edit><div class=inner-panel><h2 ng-if=!vm.enrollment.id>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.BODY.HEADER\\' | translate}}</h2><h2 ng-if=vm.enrollment.id>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.BODY.HEADER_EDIT\\' | translate:vm.translationData}}</h2><p class=subheader>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.BODY.COPY\\' | translate}}</p><e-enrollments-incomplete-edit-card enterprise-customer-id=vm.user.user_profile.enterprise_customer_id is-internal=vm.user.user_profile.is_internal admin-user-profile-id=vm.user.user_profile.id user=vm.user enrollment=vm.enrollment relationships=vm.relationships device-types=vm.deviceTypes.data.data cancel-state=enterprise.enrollments-incomplete med-advantage-providers=vm.medAdvantageProviders providers=vm.providers features=vm.features tos-delivery-methods=vm.tosDeliveryMethods enterprise-customer=vm.enterpriseCustomer global-configurations=vm.globalConfigurations></e-enrollments-incomplete-edit-card></div><!-- modals injected here. leave at bottom so IE doesn\\'t add a top offset --><div ui-view=enterpriseModalRoot></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-edit-card/e-enrollment-incomplete-missing-info.modal.html\",\"<div id=modal-service-template class=\\\"modal-wrapper incomplete-modal\\\"><div><div class=modal-header><h4 class=modal-title>{{::modalOptions.headerText}}</h4></div><div class=modal-body><div ng-bind-html=modalOptions.payload></div></div><div class=modal-footer><button ng-if=modalOptions.closeButtonText id=btn-close type=button ng-hide=modalOptions.hideCancel ng-click=modalOptions.close(false) class=btn>{{ modalOptions.closeButtonText }}</button> <button id=btn-action type=button class=btn ng-click=modalOptions.ok(true) promise-btn>{{ modalOptions.actionButtonText }}</button></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-edit-card/e-enrollments-incomplete-edit-card.html\",\"<card-wrapper><card card-name=enrollment-incomplete-edit><div id=tabs class=module><div class=col-xs-12><uib-tabset active=vm.activeTab><uib-tab index=0 heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.PROFILE\\' | translate }}\\\" select=\\\"vm.onTabSelect($event, \\'.tags > input\\')\\\" ng-click=\\\"vm.activeTab = 0\\\"><form name=vm.enrollmentProfileForm class=top-label-form ng-submit=\\\"vm.activeTab = 1\\\" id=formData novalidate><div class=row ng-if=vm.ccmEnabled><div class=\\\"form-group text-input patient-services\\\" id=serviceInputEdit ng-class=\\\"{\\'has-error\\': vm.enrollmentProfileForm[\\'service-options\\'].$invalid && (vm.enrollmentProfileForm[\\'service-options\\'].$touched || vm.enrollmentProfileForm[\\'service-options\\'].$dirty)}\\\"><select-input class-name=select-service form=vm.enrollmentProfileForm model=vm.selectedPatientServices options-array=::vm.serviceOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.PATIENT_SERVICES\\' | translate }}\\\" input-name=service-options input-id=service-options tab-index=14 on-change=\\\"vm.onPatientServiceChange({model: model})\\\" is-required=true></select-input></div></div><div class=row><div class=\\\"form-group text-input diagnosis\\\" ng-class=\\\"{\\'has-error\\': vm.dXCodesRequired && vm.enrollmentProfileForm[\\'diagnosis\\'].$invalid || vm.enrollmentProfileForm[\\'diagnosis\\'].$dirty}\\\"><!-- http://mbenford.github.io/ngTagsInput/documentation/api --><label>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DIAGNOSIS_CODES\\' | translate }}</label><tags-input ng-model=vm.enrollment.diagnosis.codes name=diagnosis on-tag-added=vm.onTagAdded($tag) tabindex=1 placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DX_CODES\\' | translate }}\\\" min-tags=\\\"{{ vm.dXCodesRequired && !vm.nonMedicareEnabled ? 1 : 0 }}\\\" ng-required=\\\"vm.dXCodesRequired && !nonMedicareEnabled\\\" ng-disabled=vm.nonMedicareEnabled key-property=code display-property=code><div us-spinner=\\\"{radius:4, width:2, length: 4, top: \\'50%\\', left: \\'-13px\\'}\\\" spinner-theme=black spinner-on=vm.isTagLoading></div><auto-complete source=vm.loadDiagnoses($query) key-property=code debounce-delay=250 display-property=description max-results-to-show=8 select-first-match=true></auto-complete></tags-input><field-errors form=::vm.enrollmentProfileForm input-name=diagnosis></field-errors></div><div class=\\\"form-group text-input shipment\\\" ng-class=\\\"{\\'has-error\\': vm.enrollmentProfileForm[\\'shipment\\'].$invalid || vm.enrollmentProfileForm[\\'shipment\\'].$dirty}\\\"><!-- http://mbenford.github.io/ngTagsInput/documentation/api --><label for=shipment>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.PATIENT_MONITORING_DEVICES\\' | translate }}</label><ui-select multiple tabindex=2 close-on-select=false style=\\\"width: 100%\\\" theme=bootstrap name=shipment search-enabled=false input-id=shipment ng-model=vm.selectedDevices on-select=\\\"vm.onShipmentAdd($item, $model)\\\" on-remove=\\\"!vm.onShipmentRemove($item, $model)\\\" ng-required=vm.deviceSelectionRequired() ng-disabled=vm.disableDeviceSelection()><ui-select-match placeholder=\\\"Select device(s)\\\"><span>{{$item.description}}</span></ui-select-match><ui-select-choices position=down group-by=vm.shipmentGroupBy ui-disable-choice=vm.disableShipmentChoice(item) repeat=\\\"item in vm.deviceTypes track by $index\\\"><span>{{vm.getDescriptionWithAvailability(item)}}</span></ui-select-choices></ui-select><field-errors form=::vm.enrollmentProfileForm input-name=shipment></field-errors><div id=legacy-devices ng-if=vm.legacyDevices.length><b>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.LEGACY_DEVICES\\' | translate }}</b> <i class=info-link uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.WHAT_IS_LEGACY\\' | translate }}\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=bottom popover-class=legacy-popover></i><ul><li ng-repeat=\\\"device in vm.legacyDevices track by $index\\\">{{device.device_type.description}} ({{device.device_type.manufacturer}})</li></ul></div></div><!--                    <select-input class-name=\\\"eula-delivery-method\\\"--><!--                                  form=\\\"vm.enrollmentProfileForm\\\"--><!--                                  model=\\\"vm.enrollment.pactsafe_request_delivery_method\\\"--><!--                                  options-array=\\\"::vm.pactsafeEulaDeliveryOptionsArray\\\"--><!--                                  on-change=\\\"vm.onDeliveryMethodChange({model: model})\\\"--><!--                                  label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_METHOD\\' | translate }}\\\"--><!--                                  input-name=\\\"eula-delivery-method\\\"--><!--                                  input-id=\\\"eula-delivery-method\\\"--><!--                                  tab-index=\\\"2\\\"--><!--                                  is-disabled=\\\"!!vm.enrollment.id\\\"--><!--                                  is-required=\\\"true\\\"></select-input>--></div><div class=row><text-input class-name=first-name form=vm.enrollmentProfileForm model=vm.enrollment.name_first label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_FIRST\\' | translate }}\\\" input-name=first-name input-id=first-name height-class=input-sm tab-index=3 is-required=true show-invalid-on-load=true></text-input><text-input class-name=last-name form=vm.enrollmentProfileForm model=vm.enrollment.name_last label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.NAME_LAST\\' | translate }}\\\" input-name=last-name input-id=last-name height-class=input-sm tab-index=4 is-required=true show-invalid-on-load=true></text-input></div><div class=row><select-input class-name=phone-type form=vm.enrollmentProfileForm model=vm.enrollment.phone_1_type options-array=::vm.phoneLabelOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PHONE_TYPE\\' | translate }}\\\" input-name=primary-phone-label input-id=primary-phone-label info-txt=\\\"{{ \\'SETUP.PROFILE.FIELDS.PHONE_TYPE_DEFAULT\\' | translate }}\\\" tab-index=5 is-disabled=\\\"vm.enrollment.pactsafe_request_delivery_method === \\'SMS\\'\\\" is-required=true></select-input><text-input class-name=primary-phone form=vm.enrollmentProfileForm model=vm.enrollment.phone_1_number mask=\\\"(999) 999-9999\\\" mask-placeholder=\\\"(___) ___-____\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PRIMARY_PHONE\\' | translate }}\\\" input-name=primary-phone input-id=primary-phone tab-index=6 is-required=true show-invalid-on-load=true><phone-type-modal phone-type=vm.enrollment.phone_1_type phone-number=vm.enrollment.phone_1_number></phone-type-modal></text-input></div><div class=row><multi-phone-number-input number-of-inputs=::vm.numberOfAdditionalPhoneNumbers number-of-existing-phone-numbers=vm.numberExistingAdditionalPhoneNumberInputs model=vm.enrollment phone-type-class-name=phone-type phone-number-class-name=primary-phone add-phone-class-name=\\\"add-phone form-group\\\" form=vm.enrollmentProfileForm phone-type-label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PHONE_TYPE\\' | translate }}\\\" phone-number-label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.ADDITIONAL_PHONE\\' | translate }}\\\" options-array=::vm.phoneLabelOptionsArray starting-tab-index=6></multi-phone-number-input></div><div class=row><text-input class-name=email field-type=text form=vm.enrollmentProfileForm model=vm.enrollment.email on-blur=\\\"vm.onEmailBlur({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EMAIL\\' | translate }}\\\" input-name=email input-id=email regex={{::vm.emailRegex}} validation-messages=vm.emailValidationMessages tab-index=7 is-disabled=vm.isEmailDisabled is-required=!vm.isEmailDisabled><label><input type=checkbox name=q-patient-email id=yes-email ng-change=vm.onChangeDoesPatientHaveEmail() ng-model=vm.enrollment.has_no_email> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.HAS_NO_EMAIL\\' | translate }}</label></text-input><date-input class-name=date-of-birth form=vm.enrollmentProfileForm model=vm.enrollment.date_of_birth label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=date-of-birth onblur=vm.validateBirthdate() input-id=date-of-birth date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy tab-index=8 is-required=true show-invalid-on-load=true></date-input></div><div class=row ng-class=\\\"{\\'has-error\\': vm.enrollmentProfileForm[\\'gender\\'].$invalid || vm.enrollmentProfileForm[\\'gender\\'].$dirty }\\\"><select-input class-name=gender form=vm.enrollmentProfileForm model=vm.enrollment.gender options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'SETUP.GENDER.FIELDS.GENDER\\' | translate }}\\\" on-change=\\\"vm.onGenderChange({model: model})\\\" input-name=gender input-id=gender tab-index=9 is-required=true show-invalid-on-load=true></select-input><text-input class-name=ehr-id form=vm.enrollmentProfileForm model=vm.enrollment.patient_ehr_id placeholder-txt=\\\"{{ vm.ehrIdFieldPlaceholderText }}\\\" label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.EHR_ID\\' | translate }}\\\" input-name=ehr-id input-id=ehr-id tab-index=10 is-required=false regex=^[a-zA-Z0-9]+$></text-input></div><div class=row><text-input class-name=pcp form=vm.enrollmentProfileForm model=vm.enrollment.pcp.full_name label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.PCP\\' | translate }}\\\" input-name=ehr-id input-id=pcp tab-index=11 is-required=false></text-input><select-input class-name=medicare-advantage form=vm.enrollmentProfileForm model=vm.enrollment.enterprise_admin_id options-array=::vm.providerOptions label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MONITORING_PROVIDER\\' | translate }}\\\" input-name=primary-provider input-id=primary-provider tab-index=12 is-required=true></select-input></div><div class=row><select-input class-name=preferred-language form=vm.enrollmentProfileForm model=vm.enrollment.language_id options-array=::vm.preferredLanguageOptionsArray label-txt=\\\"{{ \\'SETUP.LANGUAGE.FIELDS.LANGUAGE\\' | translate }}\\\" input-name=preferred-language input-id=preferred-language tab-index=13 is-required=true></select-input><div class=patient-groups><div class=\\\"form-group select-input\\\"><label for=patient-groups>Patient Groups {{vm.groupDropdownSettings}}</label><div class=rpm-device-filter id=patient-groups ng-dropdown-multiselect=\\\"\\\" extra-settings=\\\"{  displayProp: \\'name\\',\\n                                          idProperty: \\'id\\',\\n                                          scrollableHeight: \\'inherit\\',\\n                                          selectedToTop: true,\\n                                          scrollable: true,\\n                                          smartButtonMaxItems: 3,\\n                                          checkBoxes: true,\\n                                          showCheckAll: false,\\n                                          showUncheckAll: false,\\n                                          buttonClasses: \\'form-control input-sm select-button\\' }\\\" options=vm.groupOptions selected-model=vm.enrollment.patient_groups translation-texts=\\\"{ dynamicButtonTextSuffix: \\'Selected\\' }\\\"></div></div></div></div><div class=row><select-input ng-if=vm.showGlucoseTestsPerDayField class-name=glucose-tests-per-day form=vm.enrollmentProfileForm model=vm.enrollment.glucose_tests_per_day options-array=::vm.glucoseTestsPerDayOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.GLUCOSE_TESTS_PER_DAY\\' | translate }}\\\" input-name=glucose-tests-per-day input-id=glucose-tests-per-day tab-index=14 height-class=input-sm is-required=true></select-input></div><div class=form-footer><button type=button class=\\\"btn btn-secondary pull-left\\\" ui-sref={{vm.cancelState}} promise-btn>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button type=submit class=\\\"btn btn-primary pull-right btn-next\\\" ng-click=vm.initPatientAgreementDefaults() ng-disabled=\\\"!vm.enrollmentProfileForm[\\'first-name\\'].$valid ||\\n                  !vm.enrollmentProfileForm[\\'last-name\\'].$valid ||\\n                  !vm.enrollmentProfileForm[\\'date-of-birth\\'].$valid ||\\n                  !vm.enrollmentProfileForm[\\'ehr-id\\'].$valid\\\">{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button></div></form></uib-tab><uib-tab index=1 heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.INSURANCE\\' | translate }}\\\" select=\\\"vm.onTabSelect($event, \\'.tags > input\\')\\\" ng-click=\\\"vm.activeTab = 1\\\"><form name=vm.enrollmentInsuranceForm class=top-label-form ng-submit=\\\"vm.activeTab = 2\\\" novalidate><div class=row><input class=insurance-type-input type=radio name=insuranceType id=medicare ng-value=\\\"\\'medicare\\'\\\" ng-model=vm.insuranceType ng-change=vm.onInsuranceTypeChanged() required><label class=insurance-type-label for=medicare><h4 class=insurance-type-heading>{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_TITLE\\' | translate }}</h4></label></div><div class=row ng-show=\\\"vm.insuranceType === \\'medicare\\'\\\"><text-input class-name=medicare-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.policy_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_NUM\\' | translate }}\\\" input-name=medicare-num input-id=medicare-num height-class=input-sm regex={{::vm.mbiRegex}} mask=****-***-**** mask-placeholder=____-___-____ mask-options=\\\"{clearOnBlur: false}\\\" tab-index=18 show-invalid-on-load=true is-required=\\\"!vm.isInternal && vm.insuranceType === \\'medicare\\'\\\"></text-input></div><div class=row><input class=insurance-type-input type=radio name=insuranceType id=other ng-value=\\\"\\'other\\'\\\" ng-model=vm.insuranceType ng-change=vm.onInsuranceTypeChanged() required><label class=insurance-type-label for=other><h4 class=insurance-type-heading>{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_OTHER_TITLE\\' | translate }}</h4></label></div><div class=row ng-show=\\\"vm.insuranceType === \\'other\\'\\\"><typeahead-input input-id=med-advantage class-name=medicare-advantage form=vm.enrollmentProfileForm label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE\\' | translate }}\\\" model=vm.enrollment.primary_insurer.medicare_advantage_provider_name typeahead-payload=vm.onSearch typeahead-field-name=name typeahead-json-node-name=name typeahead-min-length=3 is-required=\\\"!vm.isInternal && vm.insuranceType === \\'other\\'\\\" tab-index=12 typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\"></typeahead-input></div><div class=row ng-show=\\\"vm.insuranceType === \\'other\\'\\\"><text-input class-name=group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.group_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_GROUP_NUM\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=20 show-invalid-on-load=true></text-input><text-input class-name=individual-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.individual_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_INDIVIDUAL_NUM\\' | translate }}\\\" input-name=med-advantage-individual-num input-id=med-advantage-individual-num height-class=input-sm tab-index=21 show-invalid-on-load=true is-required=\\\"!vm.isInternal && vm.insuranceType === \\'other\\'\\\"></text-input></div><div ng-hide=vm.insuranceType><span class=error><strong>* Insurance Required:</strong> Please make a selection</span></div><div class=row ng-show=vm.insuranceType><div class=add-secondary-insurance ng-show=!vm.showSecondaryInsurance ng-click=\\\"vm.showSecondaryInsurance = !vm.showSecondaryInsurance\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"Add another insurace policy\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.HAS_SECONDARY\\' | translate }}</div></div><div ng-if=vm.showSecondaryInsurance class=secondary-insurance-panel><div class=row><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.SECONDARY_INSURANCE\\' | translate }}</h4></div><div class=row><select-input class-name=secondary-insurance-type form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.insurer_type_id options-array=::vm.insurerTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.TYPE\\' | translate }}\\\" input-name=secondary-insurance-type input-id=secondary-insurance-type tab-index=22></select-input><text-input class-name=secondary-insurance-name form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.insurer_name label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NAME_OF_INSURER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=23></text-input></div><div class=row><text-input class-name=secondary-group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.group_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.GROUP_NUMBER\\' | translate }}\\\" input-name=secondary-insurance-group-num input-id=secondary-insurance-group-num height-class=input-sm tab-index=24></text-input><text-input class-name=secondary-ins-num form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.individual_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.INDIVIDUAL_NUMBER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=25></text-input><text-input class-name=secondary-notes form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.notes label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NOTES\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=26></text-input></div><div class=row><label class=secondary-list-item><input type=checkbox ng-model=vm.enrollment.secondary_insurer.policy_holder_is_patient class=secondary-checkbox ng-click=vm.blankSecondaryRelationshipFields() tabindex=27> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PH_IS_PATIENT\\' | translate }}</label></div><div class=row><select-input class-name=secondary-patient-relationship form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.patient_to_policyholder_relationship_id options-array=::vm.ptprTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PATIENT_RELATIONSHIP\\' | translate }}\\\" input-name=secondary-patient-relationship input-id=secondary-patient-relationship tab-index=28 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></select-input><text-input class-name=secondary-policyholder-firstname form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_name_first label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_FIRST_NAME\\' | translate }}\\\" input-name=secondary-policyholder-firstname input-id=secondary-policyholder-firstname height-class=input-sm tab-index=29 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></text-input><text-input class-name=secondary-policyholder-lastname form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_name_last label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_LAST_NAME\\' | translate }}\\\" input-name=secondary-policyholder-lastname input-id=secondary-policyholder-lastname height-class=input-sm tab-index=30 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></text-input></div><div class=row><date-input class-name=secondary-insurance-date-of-birth form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_date_of_birth label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=date-of-birth input-id=date-of-birth date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" tab-index=31 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></date-input><select-input class-name=secondary-insurance-gender form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_sex options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_GENDER\\' | translate }}\\\" on-change=\\\"vm.onGenderChange({model: model})\\\" input-name=gender input-id=gender tab-index=32 is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></select-input></div><div class=row><div class=remove-secondary-insurance ng-if=\\\"!vm.showTertiaryInsurance && !(vm.enrollment.secondary_insurer.group_num || vm.enrollment.secondary_insurer.individual_num || vm.enrollment.secondary_insurer.insurer_type_id)\\\" ng-click=\\\"vm.showSecondaryInsurance = !vm.showSecondaryInsurance\\\"><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_SECONDARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_SECONDARY\\' | translate }}</div><div ng-if=\\\"!vm.showTertiaryInsurance && (vm.enrollment.secondary_insurer.group_num || vm.enrollment.secondary_insurer.individual_num || vm.enrollment.secondary_insurer.insurer_type_id)\\\" class=add-tertiary-insurance ng-click=\\\"vm.showTertiaryInsurance = !vm.showTertiaryInsurance\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.HAS_TERTIARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.HAS_TERTIARY\\' | translate }}</div></div></div><div ng-if=vm.showTertiaryInsurance class=tertiary-insurance-panel><div class=row><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.TERTIARY_INSURANCE\\' | translate }}</h4></div><div class=row><select-input class-name=tertiary-insurance-type form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.insurer_type_id options-array=::vm.insurerTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.TYPE\\' | translate }}\\\" input-name=tertiary-insurance-type input-id=tertiary-insurance-type tab-index=33></select-input><text-input class-name=tertiary-insurance-name form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.insurer_name label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NAME_OF_INSURER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=34 is-required=vm.enrollment.tertiary_insurer.insurer_type_id></text-input></div><div class=row><text-input class-name=tertiary-group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.group_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.GROUP_NUMBER\\' | translate }}\\\" input-name=tertiary-insurance-group-num input-id=tertiary-insurance-group-num height-class=input-sm tab-index=35 is-required=vm.enrollment.tertiary_insurer.insurer_type_id></text-input><text-input class-name=tertiary-ins-num form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.individual_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.INDIVIDUAL_NUMBER\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=36 is-required=vm.enrollment.tertiary_insurer.insurer_type_id></text-input><text-input class-name=tertiary-notes form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.notes label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NOTES_TERTIARY\\' | translate }}\\\" input-name=med-advantage-group-num input-id=med-advantage-group-num height-class=input-sm tab-index=37 is-required=false></text-input></div><div class=row><label class=tertiary-list-item><input type=checkbox ng-click=vm.blankTertiaryRelationshipFields() ng-model=vm.enrollment.tertiary_insurer.policy_holder_is_patient class=tertiary-checkbox tabindex=38> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PH_IS_PATIENT\\' | translate }}</label></div><div class=row><select-input class-name=tertiary-patient-relationship form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.patient_to_policyholder_relationship_id options-array=::vm.ptprTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PATIENT_RELATIONSHIP\\' | translate }}\\\" input-name=tertiary-patient-relationship input-id=tertiary-patient-relationship tab-index=39 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></select-input><text-input class-name=tertiary-policyholder-firstname form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_name_first label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_FIRST_NAME\\' | translate }}\\\" input-name=tertiary-policyholder-firstname input-id=tertiary-policyholder-firstname height-class=input-sm tab-index=40 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></text-input><text-input class-name=tertiary-policyholder-lastname form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_name_last label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_LAST_NAME\\' | translate }}\\\" input-name=tertiary-policyholder-lastname input-id=tertiary-policyholder-lastname height-class=input-sm tab-index=41 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></text-input></div><div class=row><date-input class-name=tertiary-insurance-date-of-birth form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_date_of_birth label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=date-of-birth input-id=date-of-birth date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" tab-index=42 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></date-input><select-input class-name=tertiary-insurance-gender form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_sex options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_GENDER\\' | translate }}\\\" on-change=\\\"vm.onGenderChange({model: model})\\\" input-name=gender input-id=gender tab-index=43 is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></select-input></div><div class=row><div class=remove-tertiary-insurance ng-if=!vm.enrollment.tertiary_insurer ng-click=\\\"vm.showTertiaryInsurance = !vm.showTertiaryInsurance\\\"><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"Remove tertiary insurance policy\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_TERTIARY\\' | translate }}</div></div></div><div class=row ng-show=vm.insuranceType class=align-dos-row><label class=checkbox-align-dos><input type=checkbox name=align-dos class=align-dos ng-model=vm.enrollment.align_dos> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.ALIGN_DOS\\' | translate }} <i class=info-link uib-popover-html=::vm.alignExplanation() popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=top popover-class=dashboard-popover></i></label></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-right btn-next\\\" ng-click=\\\"vm.activeTab = 2\\\" tab-index=44>{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button> <button class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 0\\\">{{ \\'GLOBAL.BUTTONS.PREVIOUS\\' | translate }}</button></div></form></uib-tab><uib-tab index=2 select=\\\"vm.onTabSelect($event, \\'#street1\\')\\\" heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.MAILING_ADDRESS\\' | translate }}\\\"><form name=vm.enrollmentAddressForm class=top-label-form ng-submit=\\\"vm.activeTab = 4\\\" novalidate><div class=row ng-class=\\\"{\\'has-error\\': vm.enrollmentAddressForm[\\'address_street\\'].$invalid || vm.enrollmentAddressForm[\\'address_street\\'].$dirty }\\\"><text-input class-name=street1 form=vm.enrollmentAddressForm model=vm.enrollment.address.address_street label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STREET1\\' | translate }}\\\" input-name=street1 input-id=street1 tab-index=44 is-required=true show-invalid-on-load=true></text-input></div><div class=row ng-if=vm.enrollment.address.address_zipcode><div class=city-state><text-input class-name=city form=vm.enrollmentAddressForm model=vm.enrollment.address.address_city label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.CITY\\' | translate }}\\\" input-name=city input-id=city tab-index=45 is-required=true show-invalid-on-load=true></text-input><select-input class-name=state form=vm.enrollmentAddressForm model=vm.enrollment.address.address_state options-array=::vm.stateOptionsArray label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE\\' | translate }}\\\" input-name=state input-id=state tab-index=46 info-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.STATE_DEFAULT\\' | translate }}\\\" is-required=true show-invalid-on-load=true></select-input></div></div><div class=row><text-input class-name=zip form=vm.enrollmentAddressForm model=vm.enrollment.address.address_zipcode on-change=\\\"vm.onChange({model: model})\\\" label-txt=\\\"{{ \\'GLOBAL.ADDRESS.FIELDS.ZIP\\' | translate }}\\\" input-name=zip input-id=zip mask=99999 mask-placeholder=_____ tab-index=47 is-required=true show-invalid-on-load=true><p ng-if=vm.geocode.processing class=is-loading><span class=\\\"btn-spinner input-spinner\\\"></span></p></text-input><p ng-if=\\\"!vm.geocode.result && vm.enrollment.address.address_zipcode && !vm.geocode.processing\\\" class=help-block>{{ \\'GLOBAL.ADDRESS.FIELDS.ZIP_HELP\\' | translate }}</p></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-right btn-next\\\">{{ \\'GLOBAL.BUTTONS.NEXT\\' | translate }}</button> <button class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 1\\\">{{ \\'GLOBAL.BUTTONS.PREVIOUS\\' | translate }}</button></div></form></uib-tab><uib-tab index=4 heading=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TABS.PATIENT_AGREEMENT\\' | translate }}\\\" disable=\\\"vm.enrollmentAddressForm.$invalid || vm.enrollmentProfileForm.$invalid || vm.enrollmentInsuranceForm.$invalid\\\"><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.HEADER template-url=app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-edit-card/e-enrollment-incomplete-missing-info.modal.html custom-payload=vm.checkEnrollmentComplete() close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS_ADD.SAVE.ADD_MISSING action-btn-trans={{vm.saveButtonTranslationString()}} action-callback=vm.proceedToSave() hide-cancel=vm.isNowComplete() extra-class=incomplete-modal short-circuit-if=vm.readyToSave force-short-circuit-on-action-callback=true><signature-required-modal header-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.HEADER\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.HEADER\\'}}\\\" body-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BODY_ENROLLMENT_CREATE\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.BODY\\'}}\\\" close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.CLOSE action-btn-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.ACTION\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.BUTTONS.ACTION\\'}}\\\" short-circuit-if=\\\"!vm.readyToSave || vm.enrollment.signature_status === \\'SIGNED\\' || (!vm.inPersonOptionSelected && vm.eulaDeliveryMethod !== \\'PHYSICIAN_ATTESTATION\\')\\\" action-callback=vm.save(false) sign-later-btn-trans=\\\"{{vm.inPersonOptionSelected ? \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.SIGN_LATER\\' : \\'PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.PHYSICIAN_ATTESTATION.BUTTONS.SIGN_LATER\\'}}\\\" sign-later-callback=vm.save(true)><form name=vm.enrollmentEULADelivery class=top-label-form novalidate><div class=row ng-if=\\\"vm.enrollment.signature_status !== \\'SIGNED\\'\\\"><div id=eula-delivery-method class=\\\"eula-delivery-method form-group\\\"><label ng-if=!vm.enrollment.id>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_METHOD\\' | translate }}</label><label ng-if=\\\"vm.enrollment.id && !vm.allTOSMethodsUsed\\\">{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.EULA_SELECT\\' | translate }}</label><label ng-if=\\\"vm.enrollment.id && vm.allTOSMethodsUsed\\\">{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.EULA_ALL_SELECTED\\' | translate }}</label><div class=subtext ng-if=\\\"vm.enrollment.id && vm.previouslySelectedTOSDeliveryMethodsStrings.length\\\" ng-repeat=\\\"lastMethod in vm.previouslySelectedTOSDeliveryMethodsStrings\\\">{{lastMethod}}</div><div class=radio ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedPhysicianAttestationOption\\\"><label class=physician-attestation><input type=radio name=eula-delivery-method ng-value=\\\"\\'PHYSICIAN_ATTESTATION\\'\\\" ng-click=vm.onEULADeliveryMethodChange() ng-model=vm.eulaDeliveryMethod ng-required=true> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.PHYSICIAN_ATTESTATION\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign by physician attestation - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.PHYSICIAN_ATTESTATION\\' | translate }}\\\" popover-title=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.PHYSICIAN_ATTESTATION\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div><div class=radio ng-if=\\\"!vm.enrollment.id || !(vm.previouslySelectedEmailOption && vm.previouslySelectedSMSOption && vm.previouslySelectedInPersonOption)\\\"><label><input type=radio name=eula-delivery-method ng-value=\\\"\\'ELECTRONIC\\'\\\" ng-click=\\\"vm.onEULADeliveryMethodChange(\\'ELECTRONIC\\')\\\" ng-model=vm.eulaDeliveryMethod ng-required=true> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.ELECTRONIC\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign electronically - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.ELECTRONIC\\' | translate }}\\\" popover-title=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.ELECTRONIC\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div><ul class=subcategories-list ng-if=\\\"!vm.enrollment.id || !(vm.previouslySelectedSMSOption && vm.previouslySelectedEmailOption && vm.previouslySelectedInPersonOption)\\\"><li ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedInPersonOption\\\"><label class=checkbox-list-item><input type=checkbox name=in-person-option ng-change=\\\"vm.onEULADeliveryMethodChange(\\'IN_PERSON\\', vm.inPersonOptionSelected)\\\" ng-model=vm.inPersonOptionSelected ng-required=\\\"vm.eulaDeliveryMethod === \\'ELECTRONIC\\' && !vm.emailOptionSelected && !vm.smsOptionSelected && !vm.inPersonOptionSelected\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.IN_PERSON\\' | translate }}</label></li><li ng-if=\\\"vm.enterpriseCustomer.vma_consent_enabled && (!vm.enrollment.id || !vm.previouslySelectedSMSOption)\\\"><label class=checkbox-list-item><input type=checkbox name=sms-option ng-change=\\\"vm.onEULADeliveryMethodChange(\\'SMS\\', vm.smsOptionSelected)\\\" ng-model=vm.smsOptionSelected ng-disabled=\\\"!((vm.enrollment.phone_1_number && vm.enrollment.phone_1_type === \\'m\\') ||\\n                              (vm.enrollment.phone_2_number && vm.enrollment.phone_2_type === \\'m\\') ||\\n                              (vm.enrollment.phone_3_number && vm.enrollment.phone_3_type === \\'m\\'))\\\" ng-required=\\\"vm.eulaDeliveryMethod === \\'ELECTRONIC\\' && !vm.emailOptionSelected && !vm.smsOptionSelected && !vm.inPersonOptionSelected\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.SMS\\' | translate }}</label></li><li ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedEmailOption\\\"><label class=checkbox-list-item><input type=checkbox name=email-option ng-change=\\\"vm.onEULADeliveryMethodChange(\\'EMAIL\\', vm.emailOptionSelected)\\\" ng-model=vm.emailOptionSelected ng-disabled=vm.enrollment.has_no_email ng-required=\\\"vm.eulaDeliveryMethod === \\'ELECTRONIC\\' && !vm.emailOptionSelected && !vm.smsOptionSelected && !vm.inPersonOptionSelected\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.EMAIL\\' | translate }}</label></li></ul><div class=radio ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedIVROption\\\"><label style=\\\"padding-top: 15px; padding-bottom: 12px\\\"><input type=radio name=eula-delivery-method ng-value=\\\"\\'IVR\\'\\\" ng-click=vm.onEULADeliveryMethodChange() ng-model=vm.eulaDeliveryMethod ng-required=true> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.VERBAL\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.IMAGE_ALTS.IVR\\' | translate }}\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.IVR\\' | translate }}\\\" popover-title=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.VERBAL\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div><div class=radio ng-if=\\\"!vm.enrollment.id || !vm.previouslySelectedMailOption\\\"><label style=\\\"padding-top: 12px; padding-bottom: 12px\\\"><input type=radio name=eula-delivery-method ng-value=\\\"\\'MAIL\\'\\\" ng-click=vm.onEULADeliveryMethodChange() ng-model=vm.eulaDeliveryMethod ng-required=true> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.MAIL\\' | translate }}</label><img class=more-info src=assets/images/global/icons/icon-question-mark@2x.18d48124.png alt=\\\"Sign by postal mail - more information\\\" uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.TOOLTIPS.MAIL\\' | translate }}\\\" popover-title=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_DELIVERY_OPTIONS.MAIL\\' | translate }}\\\" popover-class=rpm-time-popover popover-trigger=\\\"\\'outsideClick\\'\\\" width=16 height=16></div></div></div><div class=row ng-if=\\\"vm.enrollment.signature_status === \\'SIGNED\\'\\\"><div id=eula-delivery-method class=\\\"eula-delivery-method form-group\\\"><label>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.EULA_SIGNED\\' | translate:vm.translationData }}</label></div></div><div class=form-footer><button id=enrollmentFormSaveButton type=submit class=\\\"btn btn-primary pull-right btn-next\\\">{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button> <button class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 2\\\">{{ \\'GLOBAL.BUTTONS.PREVIOUS\\' | translate }}</button></div></form></signature-required-modal></are-you-sure-modal></uib-tab></uib-tabset></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-incomplete-list/e-enrollments-incomplete-list.html\",\"<div id=e-enrollments-incomplete-list><card-wrapper class=e-enrollments-card-wrapper><card card-name=e-enrollments-card><section class=card-header><div class=card-header-inner><span class=text>{{vm.enrollmentCount}} {{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.INCOMPLETE\\' | translate}}</span><div class=pagination-options><span class=show>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.SHOW\\' | translate}}</span><select-input id=pagination-options options-array=::vm.optionsForPagination model=vm.itemsPerPage on-change=\\\"vm.onChange(\\'_perPage\\', {model: model})\\\"></select-input><span class=results>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.RESULTS\\' | translate}}</span></div><export-btn all-items-handler=vm.download(false) filtered-items-handler=vm.download(true) all-items-text=PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.ALL_ENROLLMENTS filtered-items-text=PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.FILTERED_ENROLLMENTS collapse-handler=vm.isExportCollapsed></export-btn><div class=\\\"row list-filters\\\"><form name=queryForm><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.NAME\\' | translate}}</label><text-input class-name=last-name-query form=queryForm model=vm.query on-change=\\\"vm.onChange(\\'full_name\\', {model: model})\\\" placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.NAME\\' | translate}}\\\" input-id=query input-name=query model-options=\\\"{debounce: 700}\\\" tab-index=1></text-input></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.DATE_OF_BIRTH\\' | translate}}</label><input date-range-picker minyear=2019 class=\\\"form-control date-picker\\\" type=text id=datepicker ng-model=vm.datePicker.date model=vm.datePicker.date input-name=patient_name options=vm.datePicker.options picker=vm.datePicker.picker date-range=vm.graphDateRange></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.PRIMARY_PROVIDER\\' | translate}}</label><select-input form=queryForm model=vm.primaryProviderQuery on-change=\\\"vm.onChange(\\'enterprise_admin_id\\', {model: model})\\\" options-array=::vm.primaryProviderOptions input-name=primary-provider-query input-id=primnary-provider-query tab-index=2></select-input></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.STATUS\\' | translate}}</label><select-input form=queryForm model=vm.statusQuery on-change=\\\"vm.onChange(\\'$enrollment_status.key_name$\\', {model: model})\\\" options-array=::vm.enrollmentStatusOptionsArray input-name=status-query input-id=status-query tab-index=3></select-input></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.MISSING_INFORMATION\\' | translate}}</label><div ng-dropdown-multiselect=\\\"\\\" extra-settings=\\\"{ checkBoxes: true, showCheckAll: true, showUncheckAll: false, scrollable: true, scrollableHeight: \\'400px !important\\' }\\\" options=vm.incompleteFilterOptions selected-model=vm.incompleteFilterModel events=\\\"{ onSelectionChanged: vm.missingFilterChange }\\\">translation-texts=\\\"{ checkAll: \\'All\\', selectionCount: \\'selected\\'}\\\"</div></div></form></div></div></section><div id=e-enrollments class=module us-spinner spinner-theme=black spinner-on=vm.showSpinner><table class=table><thead class=thead><tr><th class=enrollment-name-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.CREATED\\' | translate}}</th><th class=enrollment-name-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.INCOMPLETE.FIELDS.PATIENT\\' | translate}}</th><th class=enrollment-name-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.MONITORING_PROVIDER\\' | translate}}</th><th class=enrollment-phone-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.DEVICE_TYPE\\' | translate}}</th><th class=enrollment-status-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.STATUS\\' | translate}}</th><th class=enrollment-status-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.MISSING_INFORMATION\\' | translate}}</th><th class=enrollment-signed-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.SIGNED\\' | translate}}</th><th></th></tr></thead><tbody><tr ng-repeat=\\\"enrollment in vm.enrollments.data.data track by $index\\\" ng-class=\\\"{\\'evaluation-enrollment\\': enrollment.is_provider_device_test_account}\\\"><td>{{enrollment.created_at | date:\\'MM/dd/yyyy\\'}}</td><td class=enrollment-name><i class=\\\"fa fa-user-md\\\" ng-if=enrollment.is_provider_device_test_account></i> <strong>{{enrollment.name_first}} {{enrollment.name_last}}</strong><br>{{ enrollment.gender | gender }}, DOB: {{enrollment.date_of_birth | date:\\'MM/dd/yyyy\\'}}, <span ng-repeat=\\\"data in enrollment.diagnosis.codes\\\">{{ data.code }}{{$last ? \\' \\' : \\', \\'}}</span><div class=shipping-info ng-if=enrollment.tracking_number>{{enrollment.shipper}}: {{enrollment.tracking_number}}</div></td><td>{{enrollment.admin_user_profile.name_first}} {{enrollment.admin_user_profile.name_last}}</td><!--td class=\\\"enrollment-device-type\\\">\\n              <div class=\\\"device scale\\\" ng-if=\\\"vm.getDeviceType(enrollment)==\\'SCALE\\'\\\">\\n                S\\n              </div>\\n              <div class=\\\"device bp\\\" ng-if=\\\"vm.getDeviceType(enrollment)==\\'BP_CUFF\\'\\\">\\n                BP\\n              </div>\\n              <div class=\\\"device glucometer\\\" ng-if=\\\"vm.getDeviceType(enrollment)==\\'GLUCOMETER\\'\\\">\\n                GM\\n              </div--><td class=enrollment-device-type>{{vm.getDeviceType(enrollment) | lowercase}} <span ng-show=!vm.getDeviceType(enrollment) class=red>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.NO_DEVICE\\' | translate}}</span></td><td>{{enrollment.enrollment_status.name}}</td><td class=enrollment-status><strong>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.MISSING_INFORMATION\\' | translate}}</strong><br>{{enrollment.missing_information}}</td><td class=enrollment-signed><span ng-if=\\\"enrollment.inPersonEULAMethod && enrollment.inPersonEULAMethod.signature_status === \\'SIGNED\\'\\\" ng-click=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PATIENT)\\\" title=\\\"Click to view signed contract\\\" class=\\\"label label-success\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}} <i ng-class=\\\"\\'fa fa-user\\'\\\" class=delivery-method></i> </span><span ng-if=\\\"enrollment.physicianAttestationEULAMethod && enrollment.physicianAttestationEULAMethod.signature_status === \\'SIGNED\\'\\\" ng-click=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PHYSICIAN_ATTESTATION)\\\" title=\\\"Click to view signed contract\\\" class=\\\"label label-success\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}} <i ng-class=\\\"\\'fa fa-user-md\\'\\\" class=delivery-method></i> </span><span ng-if=\\\"enrollment.signature_status === \\'SIGNED\\' && enrollment.physicianAttestationEULAMethod.signature_status !== \\'SIGNED\\' && enrollment.inPersonEULAMethod.signature_status !== \\'SIGNED\\'\\\" class=\\\"label label-success\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}}</span><patient-agreement-picker-modal in-person-method={{enrollment.inPersonEULAMethod}} physician-attestation-method={{enrollment.physicianAttestationEULAMethod}} close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.CLOSE in-person-callback=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PATIENT)\\\" physician-attestation-callback=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PHYSICIAN_ATTESTATION)\\\" short-circuit-if=\\\"!enrollment.inPersonEULAMethod && !enrollment.physicianAttestationEULAMethod\\\"><span ng-if=\\\"enrollment.signature_status !== \\'SIGNED\\' && enrollment.enrollment_status.context != \\'CANCELED\\'\\\" ng-class=\\\"{\\'pointer\\': enrollment.inPersonEULAMethod || enrollment.physicianAttestationEULAMethod, \\'label-warning\\': enrollment.signature_status === \\'VIEWED\\', \\'label-danger\\': enrollment.signature_status === \\'NOT_SIGNED\\'}\\\" title=\\\"{{(enrollment.inPersonEULAMethod || enrollment.physicianAttestationEULAMethod) ? \\'Click to sign contract\\' : \\'\\'}}\\\" class=\\\"label label-default\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}} <span ng-if=\\\"enrollment.inPersonEULAMethod || enrollment.physicianAttestationEULAMethod\\\" ng-class=\\\"\\'fa fa-user\\'\\\" class=delivery-method></span></span></patient-agreement-picker-modal><span ng-if=\\\"enrollment.signature_status !== \\'SIGNED\\' && enrollment.enrollment_status.context == \\'CANCELED\\'\\\" class=\\\"label label-grey\\\">{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.EXPIRED\\' | translate}}</span></td><td qa-id=incompleteEnrollment{{$index}} class=enrollment-actions><span uib-dropdown on-toggle=toggled(open)><a href id=simple-dropdown uib-dropdown-toggle>...</a><ul class=filter-dropdown-menu uib-dropdown-menu aria-labelledby=simple-dropdown><li><a qa-id=edit{{$index}} ui-sref=\\\"enterprise.enrollments-incomplete-edit({enterprise_enrollment_id: enrollment.id})\\\" ng-if=\\\"enrollment.enrollment_status.key_name !== \\'OPEN_PENDING_TRACKING\\' && !enrollment.enrolled_user_profile_id\\\">Edit</a></li><li><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.HEADER body-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BODY close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.CLOSE action-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.ACTION action-callback=vm.deleteEnrollment(enrollment.id)><a qa-id=delete{{$index}} ng-if=\\\"enrollment.enrollment_status.key_name !== \\'OPEN_PENDING_TRACKING\\' && !enrollment.enrolled_user_profile_id\\\">Delete</a></are-you-sure-modal></li><li><a qa-id=admin{{$index}} ui-sref=\\\"enterprise.enrollment-provision({enterprise_enrollment_id: enrollment.id})\\\" ng-if=vm.isAdmin>Admin</a></li><li ng-if=!vm.isAdmin>&nbsp;</li></ul></span></td><!--td class=\\\"enrollment-actions\\\">\\n              <a ng-click=\\\"vm.editEnrollment(enrollment)\\\"\\n                 ng-if=\\\"enrollment.enrollment_status.key_name !== \\'OPEN_PENDING_TRACKING\\' && !enrollment.enrolled_user_profile_id\\\">\\n                Edit\\n              </a>\\n              <are-you-sure-modal header-trans=\\\"PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.HEADER\\\"\\n                                  body-trans=\\\"PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BODY\\\"\\n                                  close-btn-trans=\\\"PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.CLOSE\\\"\\n                                  action-btn-trans=\\\"PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.ACTION\\\"\\n                                  action-callback=\\\"vm.deleteEnrollment(enrollment.id)\\\">\\n                <a ng-if=\\\"enrollment.enrollment_status.key_name !== \\'OPEN_PENDING_TRACKING\\' && !enrollment.enrolled_user_profile_id\\\">\\n                  | Delete\\n                </a>\\n              </are-you-sure-modal>\\n              &nbsp;\\n              <a ui-sref=\\\"enterprise.enrollment-provision({enterprise_enrollment_id: enrollment.id})\\\"\\n                 ng-if=\\\"vm.isAdmin\\\">\\n                Admin\\n              </a>\\n            </td--></tr><tr ng-if=\\\"vm.enrollmentCount < 1\\\"><td>{{\\'PORTAL.ENTERPRISE.GLOBAL.NONE\\' | translate}}</td><td></td><td></td><td></td><td></td></tr></tbody></table></div><card-wrapper ng-if=\\\"vm.enrollmentCount > 0\\\"><card card-name=\\\"pagination transparent\\\"><ul uib-pagination items-per-page=vm.itemsPerPage total-items=vm.enrollmentCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-list/e-enrollments-list.html\",\"<div id=e-enrollments-list data-testid=enrollment-list><card-wrapper class=e-enrollments-card-wrapper><card card-name=e-enrollments-card><section class=card-header><div class=card-header-inner><span class=text>{{vm.enrollmentCount}} {{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.HEADER2\\' | translate}}</span><div class=pagination-options><span class=show>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.SHOW\\' | translate}}</span><select-input id=pagination-options options-array=::vm.optionsForPagination model=vm.itemsPerPage on-change=\\\"vm.onChange(\\'_perPage\\', {model: model})\\\"></select-input><span class=results>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.RESULTS\\' | translate}}</span></div><export-btn all-items-handler=vm.download(false) filtered-items-handler=vm.download(true) all-items-text=PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.ALL_ENROLLMENTS filtered-items-text=PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.FILTERED_ENROLLMENTS collapse-handler=vm.isExportCollapsed></export-btn><div class=\\\"row list-filters\\\"><form name=queryForm><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.NAME\\' | translate}}</label><text-input class-name=last-name-query test-id=enrollment-search-input form=queryForm model=vm.query on-change=\\\"vm.onChange(\\'full_name\\', {model: model})\\\" placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.NAME\\' | translate}}\\\" input-id=query input-name=query model-options=\\\"{debounce: 700}\\\" tab-index=1></text-input></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.DATE_OF_BIRTH\\' | translate}}</label><input date-range-picker minyear=2019 class=\\\"form-control date-picker\\\" type=text id=datepicker ng-model=vm.datePicker.date model=vm.datePicker.date input-name=patient_name options=vm.datePicker.options picker=vm.datePicker.picker date-range=vm.graphDateRange></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.PRIMARY_PROVIDER\\' | translate}}</label><select-input form=queryForm model=vm.primaryProviderQuery on-change=\\\"vm.onChange(\\'enterprise_admin_id\\', {model: model})\\\" options-array=::vm.primaryProviderOptions input-name=primary-provider-query input-id=primnary-provider-query tab-index=2></select-input></div><div class=list-filter><label class=filter-header>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FILTERS.HEADERS.STATUS\\' | translate}}</label><select-input form=queryForm model=vm.statusQuery on-change=\\\"vm.onChange(\\'$enrollment_status.key_name$\\', {model: model})\\\" options-array=::vm.enrollmentStatusOptionsArray input-name=status-query input-id=status-query tab-index=3></select-input></div></form></div></div></section><div id=e-enrollments class=module us-spinner spinner-theme=black spinner-on=vm.showSpinner><table class=table><thead class=thead><tr><th class=enrollment-name-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.CREATED\\' | translate}}</th><th class=enrollment-name-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.NAME\\' | translate}}</th><th class=enrollment-name-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.MONITORING_PROVIDER\\' | translate}}</th><th class=enrollment-phone-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.DEVICE_TYPE\\' | translate}}</th><!--<th>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.ADDRESS\\' | translate}}</th>--><th class=enrollment-status-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.STATUS\\' | translate}}</th><th class=enrollment-signed-hdr>{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.FIELDS.SIGNED\\' | translate}}</th><th></th></tr></thead><tbody><tr ng-repeat=\\\"enrollment in vm.enrollments.data.data track by $index\\\" data-testid=enrollment-row data-enrollment-id={{::enrollment.id}} data-enterprise-id={{::enrollment.enterprise_customer_id}} data-consent-state={{::enrollment.signature_status}} ng-class=\\\"{\\'evaluation-enrollment\\': enrollment.is_provider_device_test_account}\\\"><td>{{enrollment.created_at | date:\\'MM/dd/yyyy\\'}}</td><td class=enrollment-name><i class=\\\"fa fa-user-md\\\" ng-if=enrollment.is_provider_device_test_account></i> <i class=\\\"shipping-popover fa fa-truck\\\" ng-if=\\\"enrollment.shipments.length > 0\\\" uib-popover=\\\"{{ enrollment.shipments | shipmentInfo : vm.deviceTypes }}\\\" popover-title=\\\"Shipping info\\\" popover-trigger=\\\"\\'outsideClick\\'\\\"></i> <strong>{{enrollment.name_first}} {{enrollment.name_last}}</strong><br>{{ enrollment.gender | gender }}, DOB: {{enrollment.date_of_birth | date:\\'MM/dd/yyyy\\'}}{{enrollment.diagnosis.codes.length > 0 ? \\',\\': \\'\\'}} <span ng-repeat=\\\"data in enrollment.diagnosis.codes\\\">{{ data.code }}{{$last ? \\' \\' : \\', \\'}}</span><div class=shipping-info ng-if=enrollment.tracking_number>{{enrollment.shipper}}: {{enrollment.tracking_number}}</div></td><td>{{enrollment.admin_user_profile.name_first}} {{enrollment.admin_user_profile.name_last}}</td><td class=enrollment-device-type>{{vm.getDeviceType(enrollment) | lowercase}}</td><td class=enrollment-status data-testid=enrollment-status>{{enrollment.enrollment_status.name}}</td><td class=enrollment-signed data-testid=consent-status><span ng-if=\\\"enrollment.inPersonEULAMethod && enrollment.inPersonEULAMethod.signature_status === \\'SIGNED\\'\\\" ng-click=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PATIENT)\\\" title=\\\"Click to view signed contract\\\" class=\\\"label label-success\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}} <i ng-class=\\\"\\'fa fa-user\\'\\\" class=delivery-method></i> </span><span ng-if=\\\"enrollment.physicianAttestationEULAMethod && enrollment.physicianAttestationEULAMethod.signature_status === \\'SIGNED\\'\\\" ng-click=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PHYSICIAN_ATTESTATION)\\\" title=\\\"Click to view signed contract\\\" class=\\\"label label-success\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}} <i ng-class=\\\"\\'fa fa-user-md\\'\\\" class=delivery-method></i> </span><span ng-if=\\\"enrollment.signature_status === \\'SIGNED\\' && enrollment.physicianAttestationEULAMethod.signature_status !== \\'SIGNED\\' && enrollment.inPersonEULAMethod.signature_status !== \\'SIGNED\\'\\\" class=\\\"label label-success\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}}</span><patient-agreement-picker-modal authorize=role:administrative in-person-method={{enrollment.inPersonEULAMethod}} physician-attestation-method={{enrollment.physicianAttestationEULAMethod}} close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.HANDOFF.BUTTONS.CLOSE in-person-callback=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PATIENT)\\\" physician-attestation-callback=\\\"vm.onVisitSignature(enrollment, vm.InPersonAgreementTypes.PHYSICIAN_ATTESTATION)\\\" short-circuit-if=\\\"!enrollment.inPersonEULAMethod && !enrollment.physicianAttestationEULAMethod\\\"><span qa-id=noSignature{{$index}} data-testid=complete-consent-action ng-if=\\\"enrollment.signature_status !== \\'SIGNED\\' && enrollment.enrollment_status.context != \\'CANCELED\\'\\\" ng-class=\\\"{\\'pointer\\': enrollment.inPersonEULAMethod || enrollment.physicianAttestationEULAMethod, \\'label-warning\\': enrollment.signature_status === \\'VIEWED\\', \\'label-danger\\': enrollment.signature_status === \\'NOT_SIGNED\\'}\\\" title=\\\"{{(enrollment.inPersonEULAMethod || enrollment.physicianAttestationEULAMethod) ? \\'Click to sign contract\\' : \\'\\'}}\\\" class=\\\"label label-default label-warning\\\">{{enrollment.signature_status | replace : \\'_\\' : \\' \\'}} <span ng-if=\\\"enrollment.inPersonEULAMethod || enrollment.physicianAttestationEULAMethod\\\" ng-class=\\\"\\'fa fa-user\\'\\\" class=delivery-method></span></span></patient-agreement-picker-modal><span ng-if=\\\"enrollment.signature_status !== \\'SIGNED\\' && enrollment.enrollment_status.context == \\'CANCELED\\'\\\" class=\\\"label label-grey\\\">{{\\'PORTAL.ENTERPRISE.ENROLLMENTS.BODY.EXPIRED\\' | translate}}</span></td><td class=enrollment-actions><a qa-id=edit{{$index}} ui-sref=\\\"enterprise.enrollment({enterprise_enrollment_id: enrollment.id})\\\" authorize=role:administrative ng-if=\\\"enrollment.enrollment_status.key_name !== \\'OPEN_PENDING_TRACKING\\' && !enrollment.enrolled_user_profile_id\\\">Edit</a><are-you-sure-modal header-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.HEADER body-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BODY close-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.CLOSE action-btn-trans=PORTAL.ENTERPRISE.ENROLLMENTS.MODALS.ARE_YOU_SURE.BUTTONS.ACTION action-callback=vm.deleteEnrollment(enrollment.id) authorize=role:administrative><a qa-id=delete{{$index}} ng-if=\\\"enrollment.enrollment_status.key_name !== \\'OPEN_PENDING_TRACKING\\' && !enrollment.enrolled_user_profile_id\\\">| Delete</a></are-you-sure-modal>&nbsp; <a qa-id=admin{{$index}} ui-sref=\\\"enterprise.enrollment-provision({enterprise_enrollment_id: enrollment.id})\\\" ng-if=vm.isInternalUser authorize=role:administrative>Admin</a></td></tr><tr ng-if=\\\"vm.enrollmentCount < 1\\\"><td>{{\\'PORTAL.ENTERPRISE.GLOBAL.NONE\\' | translate}}</td><td></td><td></td><td></td><td></td></tr></tbody></table></div><card-wrapper ng-if=\\\"vm.enrollmentCount > 0\\\"><card card-name=\\\"pagination transparent\\\"><ul uib-pagination items-per-page=vm.itemsPerPage total-items=vm.enrollmentCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></card></card-wrapper></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-enrollments/e-enrollments-provision/e-enrollments-provision.html\",\"<div id=e-enrollment-provision><div class=inner-panel us-spinner spinner-theme=black spinner-on=vm.isLoading><h2>Enroll patient in 100Plus</h2><p class=subheader><strong>Patient:</strong> <a ui-sref=\\\"enterprise.enrollment({enterprise_enrollment_id: vm.enrollment.id})\\\">{{::vm.enrollment.name_last}}, {{::vm.enrollment.name_first}}</a><br><strong>Provider:</strong> {{::vm.enterpriseCustomer.name}}<br><strong>Email:</strong> {{::vm.enrollment.email}}<br><strong>Phone:</strong> {{::vm.enrollment.phone_1_number}}<br><strong>Address:</strong><address-display address=vm.enrollment.address></address-display><i class=\\\"fa fa-external-link\\\"></i> <a ng-href=https://app.pactsafe.com/signers/details/{{vm.enrollment.email}} target=_blank>Pactsafe signer details</a><br><i ng-if=vm.pactsafeObj class=\\\"fa fa-external-link\\\"></i> <a ng-if=vm.pactsafeObj ng-href=https://app.pactsafe.com/requests/{{pactsafeObj.id}} target=_blank>Pactsafe signature request</a></p><!-- Legacy enrollment --><!--card-wrapper ng-if=\\\"!vm.enrollment.enrolled_user_profile_id && vm.enrollment.shipments.length === 0\\\">\\n      <card card-name=\\\"e-enrollment-provision\\\">\\n        <div id=\\\"tabs\\\"\\n             class=\\\"module\\\">\\n          <div class=\\\"col-xs-12\\\">\\n            <uib-tabset active=\\\"vm.activeTab\\\">\\n              <uib-tab index=\\\"0\\\"\\n                       heading=\\\"Shipping\\\"\\n                       select=\\\"vm.onTabSelect($event, \\'.tags > input\\')\\\"\\n                       ng-click=\\\"vm.activeTab = 0\\\">\\n                <form name=\\\"vm.enrollmentShippingForm\\\"\\n                      class=\\\"top-label-form\\\"\\n                      ng-submit=\\\"vm.save(vm.enrollment)\\\"\\n                      novalidate>\\n                  <div class=\\\"row\\\">\\n                    <select-input class-name=\\\"signature-status\\\"\\n                                  form=\\\"vm.enrollmentShippingForm\\\"\\n                                  model=\\\"vm.enrollment.signature_status\\\"\\n                                  options-array=\\\"::vm.signatureStatusLabelOptionsArray\\\"\\n                                  label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.SIGNATURE_STATUS\\' | translate }}\\\"\\n                                  input-name=\\\"signature-status-label\\\"\\n                                  input-id=\\\"signature-status-label\\\"\\n                                  tab-index=\\\"0\\\"\\n                                  is-required=\\\"true\\\"></select-input>\\n\\n                    <select-input class-name=\\\"status\\\"\\n                                  form=\\\"vm.enrollmentShippingForm\\\"\\n                                  model=\\\"vm.enrollment.status\\\"\\n                                  options-array=\\\"::vm.statusLabelOptionsArray\\\"\\n                                  label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.STATUS\\' | translate }}\\\"\\n                                  input-name=\\\"status-label\\\"\\n                                  input-id=\\\"status-label\\\"\\n                                  tab-index=\\\"1\\\"\\n                                  is-disabled=\\\"true\\\"></select-input>\\n                  </div>\\n\\n                  <div class=\\\"row\\\">\\n                    <select-input class-name=\\\"shipper\\\"\\n                                  form=\\\"vm.enrollmentShippingForm\\\"\\n                                  model=\\\"vm.enrollment.shipper\\\"\\n                                  options-array=\\\"::vm.shipperLabelOptionsArray\\\"\\n                                  label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.SHIPPER\\' | translate }}\\\"\\n                                  input-name=\\\"shipper-label\\\"\\n                                  input-id=\\\"shipper-label\\\"\\n                                  tab-index=\\\"2\\\"></select-input>\\n\\n                    <text-input class-name=\\\"tracking-number\\\"\\n                                form=\\\"vm.enrollmentShippingForm\\\"\\n                                model=\\\"vm.enrollment.tracking_number\\\"\\n                                label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.TRACKING_NUMBER\\' | translate }}\\\"\\n                                input-name=\\\"tracking-number\\\"\\n                                input-id=\\\"tracking-number\\\"\\n                                tab-index=\\\"3\\\">\\n                    </text-input>\\n                  </div>\\n\\n                  <div class=\\\"row\\\">\\n                    <date-input class-name=\\\"mailed-at\\\"\\n                                form=\\\"vm.enrollmentShippingForm\\\"\\n                                model=\\\"vm.enrollment.mailed_at\\\"\\n                                label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MAILED_AT\\' | translate }}\\\"\\n                                placeholder-txt=\\\"mm/dd/yyyy\\\"\\n                                input-name=\\\"mailed-at\\\"\\n                                input-id=\\\"mailed-at\\\"\\n                                mask=\\\"99/99/9999\\\"\\n                                mask-placeholder=\\\"mm/dd/yyyy\\\"\\n                                tab-index=\\\"4\\\"></date-input>\\n\\n                    <text-area-input class-name=\\\"notes\\\"\\n                                     form=\\\"vm.enrollmentShippingForm\\\"\\n                                     model=\\\"vm.enrollment.notes\\\"\\n                                     input-name=\\\"notes\\\"\\n                                     tab-index=\\\"5\\\"\\n                                     label-txt=\\\"Notes\\\"\\n                                     placeholder-txt=\\\"05/12/2019 - example: updated tracking number...\\\"\\n                                     input-id=\\\"notes\\\"></text-area-input>\\n                  </div>\\n\\n                  <div class=\\\"form-footer\\\">\\n                    <button type=\\\"button\\\"\\n                            class=\\\"btn btn-secondary pull-left\\\"\\n                            ui-sref=\\\"enterprise.enrollments\\\"\\n                            promise-btn>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}\\n                    </button>\\n\\n                    <button type=\\\"submit\\\"\\n                            class=\\\"btn btn-primary pull-right btn-next\\\"\\n                            ng-disabled=\\\"vm.enrollmentShippingForm.$invalid\\\">{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}\\n                    </button>\\n                  </div>\\n                </form>\\n              </uib-tab>\\n\\n              <uib-tab index=\\\"1\\\"\\n                       select=\\\"vm.onTabSelect($event, \\'#address-type\\')\\\"\\n                       heading=\\\"Provision account\\\">\\n                <form name=\\\"vm.enrollmentProvisionForm\\\"\\n                      class=\\\"top-label-form\\\"\\n                      ng-submit=\\\"vm.provisionAccount(vm.enrollment, vm.deviceSerial)\\\"\\n                      novalidate>\\n                  <div class=\\\"row\\\">\\n                    <p>You are about to create a real patient account from this enrollment. After this is complete, the enrollment should not be edited.</p>\\n\\n                    <checkbox-input class-name=\\\"provider-test-account\\\"\\n                                    form=\\\"vm.enrollmentProvisionForm\\\"\\n                                    model=\\\"vm.enrollment.is_provider_device_test_account\\\"\\n                                    input-name=\\\"provider-test-account\\\"\\n                                    input-id=\\\"provider-test-account\\\"\\n                                    label-txt=\\\"This is a provider device evaluation account\\\"\\n                                    on-change=\\\"vm.isProviderTestDeviceAccount({model: model})\\\"\\n                                    tab-index=\\\"1\\\"></checkbox-input>\\n\\n                    <checkbox-input class-name=\\\"is-billable\\\"\\n                                    form=\\\"vm.enrollmentProvisionForm\\\"\\n                                    model=\\\"vm.enrollment.is_billable\\\"\\n                                    input-name=\\\"is-billable\\\"\\n                                    input-id=\\\"is-billable\\\"\\n                                    label-txt=\\\"This account will be billable\\\"\\n                                    is-disabled=\\\"!vm.isBillableEditable\\\"\\n                                    tab-index=\\\"2\\\"></checkbox-input>\\n\\n                    <text-input class-name=\\\"device-serial\\\"\\n                                form=\\\"vm.enrollmentProvisionForm\\\"\\n                                model=\\\"vm.deviceSerial\\\"\\n                                label-txt=\\\"Device serial\\\"\\n                                input-name=\\\"device-serial\\\"\\n                                input-id=\\\"device-serial\\\"\\n                                on-keyup=\\\"vm.upcaseDeviceSerialLegacy({model: model})\\\"\\n                                tab-index=\\\"3\\\"\\n                                is-required=\\\"true\\\">\\n                  </div>\\n\\n                  <div class=\\\"form-footer\\\">\\n                    <button type=\\\"submit\\\"\\n                            class=\\\"btn btn-primary pull-right btn-next\\\"\\n                            promise-btn=\\\"vm.submitPromise\\\"\\n                            ng-disabled=\\\"vm.enrollmentProvisionForm.$invalid\\\">Provision account\\n                    </button>\\n\\n                    <button class=\\\"btn btn-default pull-right btn-previous\\\"\\n                            type=\\\"button\\\"\\n                            ng-click=\\\"vm.activeTab = 0\\\">{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}\\n                    </button>\\n                  </div>\\n                </form>\\n              </uib-tab>\\n            </uib-tabset>\\n          </div>\\n        </div>\\n      </card>\\n    </card-wrapper--><!-- Multi-device enrollment --><card-wrapper ng-if=!vm.enrollment.enrolled_user_profile_id><card card-name=e-enrollment-provision><div id=tabs class=module><div class=col-xs-12><uib-tabset active=vm.activeTab><uib-tab index=0 heading=Shipping select=\\\"vm.onTabSelect($event, \\'.tags > input\\')\\\" ng-click=\\\"vm.activeTab = 0\\\"><form name=vm.enrollmentShippingForm class=top-label-form ng-submit=vm.saveEnrollment(vm.enrollment) novalidate><h3>Enrollment</h3><div class=row><select-input class-name=signature-status form=vm.enrollmentShippingForm model=vm.enrollment.signature_status is-disabled=true options-array=::vm.signatureStatusLabelOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.SIGNATURE_STATUS\\' | translate }}\\\" input-name=signature-status-label input-id=signature-status-label is-required=true></select-input><select-input class-name=status form=vm.enrollmentShippingForm model=vm.enrollment.enrollment_status_id options-array=::vm.statusLabelOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.STATUS\\' | translate }}\\\" input-name=status-label input-id=status-label is-required=true></select-input></div><h3>Shipments</h3><div class=well ng-repeat=\\\"shipment in vm.enrollment.shipments track by $index\\\"><h4>#{{::$index + 1}} - {{::vm.getDeviceTypeName(shipment.device_type_id, shipment)}}</h4><div class=row><select-input class-name=shipment-carrier form=vm.enrollmentShippingForm model=shipment.carrier options-array=::vm.shipperLabelOptionsArray label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.SHIPPER\\' | translate }}\\\" input-name=shipment-carrier-{{::$index}} input-id=shipment-carrier-{{::$index}}></select-input><text-input class-name=shipment-tracking-number form=vm.enrollmentShippingForm model=shipment.tracking_number label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.TRACKING_NUMBER\\' | translate }}\\\" input-name=shipment-tracking-number-{{::$index}} input-id=shipment-tracking-number-{{::$index}}></text-input></div><div class=row><select-input class-name=shipment-status form=vm.enrollmentShippingForm model=shipment.status label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.STATUS\\' | translate }}\\\" options-array=::vm.shipmentStatusesLabelOptionsArray input-name=shipment-status-{{::$index}} input-id=shipment-status-{{::$index}}></select-input><date-input class-name=shipment-status-at form=vm.enrollmentShippingForm model=shipment.status_at label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.STATUS_AT\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=shipment-status-at-{{::$index}} input-id=shipment-status-at-{{::$index}} mask=99/99/9999 mask-placeholder=mm/dd/yyyy></date-input></div><div class=row><text-input class-name=shipment-serial form=vm.enrollmentShippingForm model=shipment.serial label-txt=\\\"Serial for {{::vm.getDeviceTypeName(shipment.device_type_id)}}\\\" input-name=shipment-serial input-id=shipment-serial on-keyup=\\\"vm.upcaseDeviceSerial({model: model, shipment: shipment})\\\" tab-index=3></text-input></div></div><div class=form-footer><button type=button class=\\\"btn btn-secondary pull-left\\\" ui-sref=enterprise.enrollments promise-btn>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button type=submit class=\\\"btn btn-primary pull-right btn-next\\\" ng-disabled=vm.enrollmentShippingForm.$invalid promise-btn=vm.submitPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button></div></form></uib-tab><uib-tab index=1 select=\\\"vm.onTabSelect($event, \\'#provision-account\\')\\\" heading=\\\"Provision account\\\"><form name=vm.enrollmentProvisionForm class=top-label-form ng-submit=\\\"vm.provisionAccount(vm.enrollment, vm.deviceSerial)\\\" novalidate><div class=row><p>You are about to create a real patient account from this enrollment. After this is complete, the enrollment should not be edited.</p><checkbox-input class-name=provider-test-account form=vm.enrollmentProvisionForm model=vm.enrollment.is_provider_device_test_account input-name=provider-test-account input-id=provider-test-account label-txt=\\\"This is a provider device evaluation account\\\" on-change=\\\"vm.isProviderTestDeviceAccount({model: model})\\\" tab-index=1></checkbox-input><checkbox-input class-name=is-billable form=vm.enrollmentProvisionForm model=vm.enrollment.is_billable input-name=is-billable input-id=is-billable label-txt=\\\"This account will be billable\\\" is-disabled=!vm.isBillableEditable tab-index=2></checkbox-input></div><div class=form-footer><button type=submit class=\\\"btn btn-primary pull-right btn-next\\\" promise-btn=vm.submitPromise ng-disabled=vm.enrollmentProvisionForm.$invalid>Provision account</button> <button class=\\\"btn btn-default pull-right btn-previous\\\" type=button ng-click=\\\"vm.activeTab = 0\\\">{{ \\'GLOBAL.BUTTONS.BACK\\' | translate }}</button></div></form></uib-tab></uib-tabset></div></div></card></card-wrapper><!-- Already provisioned --><card-wrapper ng-if=vm.enrollment.enrolled_user_profile_id><card><p>Patient provisioned with {{::vm.patientDevices.length}} devices.</p><p>*Initial status info ONLY reflects the first shipment update! It does not get updated.</p><table class=\\\"table-striped table\\\"><thead><tr><th>Device</th><th>Serial</th><th>Initial status</th><th>Initial status at</th><th>Carrier</th><th>Tracking #</th></tr></thead><tbody><tr ng-repeat=\\\"device in ::vm.patientDevices track by $index\\\"><td>{{::device.device_type.description}}</td><td>{{::device.serial}}</td><td>{{::vm.getShipmentForDeviceTypeId(device.device_type.id).status}}</td><td>{{::vm.getShipmentForDeviceTypeId(device.device_type.id).status_at | date:\\'mediumDate\\'}}</td><td>{{::vm.getShipmentForDeviceTypeId(device.device_type.id).carrier}}</td><td>{{::vm.getShipmentForDeviceTypeId(device.device_type.id).tracking_number}}</td></tr></tbody></table></card></card-wrapper></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-notes/e-notes-editor/e-notes-editor.html\",\"<div class=e-notes-editor><div class=e-notes-editor-form><form><div text-angular-toolbar class=toolbar name={{vm.toolbarName}}></div><text-angular name={{vm.editorName}} ta-target-toolbars={{vm.toolbarName}} placeholder={{vm.placeholder}} ng-model=vm.note ng-change=vm.onNoteEdited(vm.note) data-ng-required=true></text-angular><button ng-disabled=vm.exceededNoteLimit id=add-notes-template class=\\\"btn btn-primary btn-small e-notes-editor-save-button\\\" type=button tabindex=2 ng-click=vm.onClick(vm.note) promise-btn=vm.submitPromise><span class=auto-updating>{{vm.buttonText}}</span></button></form></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-notifications/e-notification-microdeposits/e-notification-microdeposits.html\",\"<card-wrapper class=e-notification-microdeposits ng-if=\\\"vm.accountsPendingVerification.length > 0\\\"><card card-name=\\\"alert account\\\"><div class=\\\"col left\\\">{{\\'PORTAL.ALERTS.VERIFY_BANK.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h2>{{\\'PORTAL.ALERTS.VERIFY_BANK.BODY.HEADER\\' | translate}}</h2><p>{{\\'PORTAL.ALERTS.VERIFY_BANK.BODY.TEXT\\' | translate:vm.translationData}}</p><add-bank-account ng-if=vm.showLink enterprise-customer=vm.enterpriseCustomer ach-account-id=vm.accountsPendingVerification[0].id on-success=\\\"vm.onSuccess({public_token: public_token, metadata: metadata})\\\" on-load=\\\"vm.onLoad({linkHandler: linkHandler})\\\" on-event=\\\"vm.onEvent({eventName: eventName, metadata: metadata})\\\" on-exit=\\\"vm.onExit({err: err, metadata: metadata})\\\"></add-bank-account><div class=actions><button class=\\\"btn btn-primary pull-right\\\" type=button promise-btn=vm.loadPromise ng-click=vm.onVerify()>{{\\'PORTAL.ALERTS.VERIFY_BANK.BUTTONS.VERIFY\\' | translate}}</button></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-notifications/e-overdue-invoice/e-overdue-invoice.html\",\"<card-wrapper class=e-payment-method><card card-name=\\\"alert account\\\"><div class=\\\"col left\\\">{{\\'PORTAL.ALERTS.OVERDUE_INVOICE.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3>{{\\'PORTAL.ALERTS.OVERDUE_INVOICE.BODY.HEADER\\' | translate}}</h3><p>{{\\'PORTAL.ALERTS.OVERDUE_INVOICE.BODY.TEXT\\' | translate}}</p><div class=actions><button qa-id=dashboardPayment class=\\\"btn btn-primary pull-left\\\" type=button ng-click=vm.navigate() promise-btn=vm.submitPromise>{{\\'PORTAL.ALERTS.OVERDUE_INVOICE.BUTTONS.SETUP\\' | translate}}</button></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-notifications/e-payment-method/e-payment-method.html\",\"<card-wrapper class=e-payment-method ng-if=!vm.stripeCustomer.data.default_source><card card-name=\\\"alert account\\\"><div class=\\\"col left\\\">{{\\'PORTAL.ALERTS.ADD_PAYMENT_METHOD.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3>{{\\'PORTAL.ALERTS.ADD_PAYMENT_METHOD.BODY.HEADER\\' | translate}}</h3><p>{{\\'PORTAL.ALERTS.ADD_PAYMENT_METHOD.BODY.TEXT\\' | translate}}</p><div class=actions><button qa-id=dashboardPayment class=\\\"btn btn-primary pull-left\\\" type=button ng-click=vm.navigate() promise-btn=vm.submitPromise>{{\\'PORTAL.ALERTS.ADD_PAYMENT_METHOD.BUTTONS.SETUP\\' | translate}}</button></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/e-observation-download-substantiation-files/e-observation-download-substantiation-files.html\",\"<div id=substantiation-download class=download-section ng-if=vm.canDownloadEula><div class=btn-group role=group><button type=button class=\\\"btn btn-secondary2 btn-small dropdown-toggle\\\" ng-click=vm.toggleMenu()><span class=download-span>Download</span> <span class=icon-span ng-class=\\\"{\\'active\\': vm.menuActive}\\\"><i class=\\\"fa fa-angle-down\\\"></i></span></button><ul class=files-menu ng-class=\\\"{\\'active\\': vm.menuActive}\\\"><li ng-if=vm.canDownloadEula ng-click=vm.downloadPactsafeEula() ng-class=\\\"{\\'downloading\\': vm.downloadingEula}\\\"><div class=content><span class=file-label>Signed Consent</span> <span ng-if=vm.patientUserProfile.pactsafe_eula_ehr_id class=status-chip>Pushed To EHR</span></div></li><li ng-if=false><div class=content ng-click=vm.download99453() ng-class=\\\"{\\'downloading\\': vm.downloading99453}\\\"><span class=file-label>99453 Documentation</span> <span class=status-chip>Pushed To EHR</span></div></li></ul></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-observation-report/e-observation-phone-numbers/e-observation-phone-numbers.html\",\"<span class=user-observation-phone-numbers><info-vertical ng-if=\\\"vm.editablePhoneNumber1 || vm.patientUserProfile.phone_1_number\\\" header=\\\"vm.patientUserProfile.phone_1_type | phonetype\\\" ng-click=vm.phoneNumberClick(1)><span ng-if=!vm.editablePhoneNumber1>{{ vm.patientUserProfile.phone_1_number | bcTelephone:\\'format\\' }} </span><input ng-if=vm.editablePhoneNumber1 type=tel class=\\\"form-control input-sm telephone-input\\\" id=phone_1_number_input placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.PHONE_NUMBER\\' | translate }}\\\" ng-model=vm.patientUserProfile.phone_1_number ng-disabled=vm.savingProfile ng-keypress=\\\"vm.phoneNumberKeyPress($event, 1)\\\" ng-click=vm.setInputListener(1)></info-vertical><info-vertical ng-if=\\\"vm.editablePhoneNumber2 || vm.patientUserProfile.phone_2_number\\\" header=\\\"vm.patientUserProfile.phone_2_type | phonetype\\\" ng-click=vm.phoneNumberClick(2)><span ng-if=!vm.editablePhoneNumber2>{{ vm.patientUserProfile.phone_2_number | bcTelephone:\\'format\\' }} </span><input ng-if=vm.editablePhoneNumber2 type=tel class=\\\"form-control input-sm telephone-input\\\" id=phone_2_number_input placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.PHONE_NUMBER\\' | translate }}\\\" ng-model=vm.patientUserProfile.phone_2_number ng-disabled=vm.savingProfile ng-keypress=\\\"vm.phoneNumberKeyPress($event, 2)\\\" ng-click=vm.setInputListener(2)></info-vertical><info-vertical ng-if=\\\"vm.editablePhoneNumber3 || vm.patientUserProfile.phone_3_number\\\" header=\\\"vm.patientUserProfile.phone_3_type | phonetype\\\" ng-click=vm.phoneNumberClick(3)><span ng-if=\\\"!vm.editablePhoneNumber3 && vm.patientUserProfile.phone_2_number\\\">{{ vm.patientUserProfile.phone_3_number | bcTelephone:\\'format\\' }} </span><input ng-if=vm.editablePhoneNumber3 type=tel class=\\\"form-control input-sm telephone-input\\\" id=phone_3_number_input placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.PHONE_NUMBER\\' | translate }}\\\" ng-model=vm.patientUserProfile.phone_3_number ng-disabled=vm.savingProfile ng-keypress=\\\"vm.phoneNumberKeyPress($event, 3)\\\" ng-click=vm.setInputListener(3)></info-vertical><span ng-if=\\\"(!vm.patientUserProfile.phone_1_number && !vm.editablePhoneNumber1) ||\\n               (vm.profileCanAddPhoneNumbers() && (vm.editablePhoneNumber1 || vm.editablePhoneNumber2 || vm.editablePhoneNumber3))\\\" ng-click=vm.addPhoneNumber() class=\\\"add-phone-number-trigger no-print\\\" uib-popover-html=\\\"\\'{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.ADD_PHONE_NUMBER\\' | translate}}\\'\\\" popover-trigger=\\\"\\'mouseenter hover focus\\'\\\" popover-class=\\\"add-phone-number-tooltip no-print\\\" popover-placement=top tooltip-append-to-body=true><i class=\\\"fa fa-plus no-print\\\"></i> </span></span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-additional-info/e-additional-info.html\",\"<div id=patient-deactivation-additional-info-modal class=\\\"patient-deactivation-additional-info-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close aria-label=Close ng-click=modal.options.close() ng-disabled=modal.options.isLoading><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.ADDITIONAL_INFO_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><form name=additionalInfoForm autocomplete=off><div class=date-of-event ng-if=\\\"modal.options.reason !== \\'LEFT_PRACTICE\\' && !modal.options.hideCalendar\\\"><label for=datepicker>{{modal.options.getFieldLabel(\\'LABEL\\') | translate}}</label><input date-range-picker ng-keypress=modal.options.detectChange($event) ng-focus=modal.options.detectChange($event) date=modal.options.datePicker.date options=modal.options.datePicker.options picker=modal.options.datePicker.picker max=modal.options.datePicker.maxDate class=\\\"form-control date-picker\\\" type=text id=datepicker placeholder=mm-dd-yyyy ng-model=modal.options.datePicker.date ng-disabled=\\\"modal.options.unknown == true\\\"></div><div class=new-pratice-name ng-if=\\\"modal.options.reason == \\'LEFT_PRACTICE\\'\\\"><label for=practice-name>{{modal.options.getFieldLabel(\\'LABEL\\') | translate}}</label><input class=form-control type=text id=practice-name ng-model=modal.options.practiceName ng-disabled=\\\"modal.options.unknown == true\\\"></div><div class=field-unknown><label><input type=checkbox name=unknown ng-model=modal.options.unknown ng-change=modal.options.onUnknownChange()> <span>{{modal.options.getFieldLabel(\\'UNKNOWN_LABEL\\') | translate}}</span></label></div></form></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.close() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button type=button class=\\\"btn btn-primary\\\" ng-click=modal.options.continue() ng-disabled=modal.options.disableSubmit()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CONTINUE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-deactivation-billing-cycles/e-deactivation-billing-cycles.html\",\"<div id=patient-deactivation-billing-cycles-modal class=\\\"patient-deactivation-billing-cycles-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close aria-label=Close ng-click=modal.options.close() ng-disabled=modal.options.isLoading><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{modal.options.getTranslationKeyByField(\\'HEADER\\') | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><div class=row>{{modal.options.getTranslationKeyByField(\\'MESSAGE\\') | translate}}</div><div id=patient-deactivation-billing-cycles-table class=module><h5>{{modal.options.getTranslationKeyByField(\\'TABLE.TITLE\\') | translate}}</h5><div>{{modal.options.getTranslationKeyByField(\\'TABLE.SUBTITLE\\') | translate}}</div><table class=table><thead class=thead><tr><th class=title>{{modal.options.getTranslationKeyByField(\\'TABLE.FIELDS.START_DATE\\') | translate}}</th><th>{{modal.options.getTranslationKeyByField(\\'TABLE.FIELDS.DATE_OF_SERVICE\\') | translate}}</th></tr></thead><tbody><tr ng-repeat=\\\"billingPeriod in modal.options.billingPeriods\\\"><!-- RPM Start Date --><td>{{billingPeriod.startDate}}</td><!-- RPM Date of Service --><td>{{billingPeriod.endDate}}</td></tr></tbody></table></div></div><div class=modal-footer><button type=button class=\\\"btn btn-primary\\\" ng-click=modal.options.close() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.DONE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-deactivation-complete/e-deactivation-complete.html\",\"<div id=e-deactivation-complete-modal data-testid=deactivation-complete-modal class=\\\"e-deactivation-complete-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close ng-click=modal.options.close() aria-label=Close><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{modal.options.getTranslationKeyByField(\\'HEADER\\') | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()>{{modal.options.getTranslationKeyByField(\\'BODY.REVIEWING_REQUEST\\') | translate}}</div><div class=modal-footer><button type=button data-testid=deactivation-complete-done class=\\\"btn btn-primary\\\" ng-click=modal.options.close()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.DONE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-deactivation-contact/e-deactivation-contact.html\",\"<div id=e-deactivation-contact-modal class=\\\"e-deactivation-contact-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close ng-click=modal.options.close() aria-label=Close><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.CONTACT_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><div ng-bind-html=\\\"\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.CONTACT_MODAL.BODY.TEXT\\' | translate\\\"></div><div ng-bind-html=\\\"\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.CONTACT_MODAL.BODY.EMAIL\\' | translate\\\"></div><div ng-bind-html=\\\"\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.CONTACT_MODAL.BODY.PHONE\\' | translate\\\"></div></div><div class=modal-footer><button type=button class=\\\"btn btn-primary\\\" ng-click=modal.options.close()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.DONE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-deactivation-reason/e-deactivation-reason.html\",\"<div id=e-deactivation-reason-modal data-testid=deactivation-reason-modal class=\\\"e-deactivation-reason-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close ng-click=modal.options.close() aria-label=Close><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.REASON_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><form name=deactivationReason><!-- Container for all of Reason choices --><div class=e-deactivation-reasons-container><!-- Container for Reason Sections except OTHER --><div class=e-deactivation-reasons-section-container><div class=e-deactivation-reasons-section ng-repeat=\\\"(section, fields) in modal.options.formMap\\\" ng-if=\\\"section != \\'OTHER\\'\\\"><div class=e-deactivation-reason-section-label>{{modal.options.getSectionLabel(section) | translate}}</div><div class=\\\"e-deactivation-reason-field radio\\\" ng-repeat=\\\"(index, field) in fields\\\"><label><input data-testid=deactivation-reason-{{::field}} type=radio name={{field}} ng-click=modal.options.onReasonChange(field) value={{field}} ng-model=modal.options.model.reasonKey> <span>{{modal.options.getFieldLabel(section, field) | translate}}</span></label></div></div></div><!-- Container for Reason Section OTHER --><div class=e-deactivation-reasons-section-container><div class=e-deactivation-reasons-section><div class=e-deactivation-reason-section-label>{{modal.options.getSectionLabel(\\'OTHER\\') | translate}}</div><div class=\\\"e-deactivation-reason-field radio\\\" ng-repeat=\\\"(index, field) in modal.options.formMap[\\'OTHER\\']\\\"><label><input data-testid=deactivation-reason-{{::field}} type=radio name={{field}} ng-click=modal.options.onReasonChange(field) value={{field}} ng-model=modal.options.model.reasonKey> <span>{{modal.options.getFieldLabel(\\'OTHER\\', field) | translate}}</span></label></div></div></div></div><hr><div class=row><div><h5>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.REASON_MODAL.BODY.NOTES_HEADER\\' | translate}} <span ng-if=\\\"modal.options.model.reasonKey == \\'OTHER\\'\\\">({{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.REASON_MODAL.BODY.NOTES_REQUIRED\\' | translate}})</span></h5><text-area-input form=deactivationReason model=modal.options.model.notes input-name=notes placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.REASON_MODAL.BODY.NOTES_PLACEHOLDER\\' | translate}}\\\" input-id=notes></text-area-input></div></div><hr><div class=row>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.REASON_MODAL.FEE_LABEL\\' | translate}}</div></form></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.close()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button type=button data-testid=deactivation-reason-submit class=\\\"btn btn-primary\\\" ng-click=modal.options.submit() ng-disabled=modal.options.disableSubmit()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.SUBMIT\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-device-issue/e-device-issue.html\",\"<div id=patient-deactivation-device-issue-modal class=\\\"patient-deactivation-device-issue-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close aria-label=Close ng-click=modal.options.close() ng-disabled=modal.options.isLoading><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.DEVICE_ISSUE_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><h5>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.DEVICE_ISSUE_MODAL.BODY\\' | translate}}</h5><form name=deviceIssueForm><div class=deactivation-devices ng-repeat=\\\"(index, device) in modal.options.patientDevices\\\"><label><input type=checkbox name=selectedDevices[] value={{device.device_type_id}} ng-checked=\\\"modal.options.selectedDevices.indexOf(device.device_type_id) != -1\\\" ng-click=modal.options.toggleSelection(device.device_type_id)> <span>{{device.label}}</span></label></div></form></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.close() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button type=button class=\\\"btn btn-primary\\\" ng-click=modal.options.continue() ng-disabled=modal.options.disableSubmit()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CONTINUE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-insurance-change/e-insurance-change.html\",\"<div id=patient-deactivation-insurance-change-modal class=\\\"patient-deactivation-insurance-change-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close aria-label=Close ng-click=modal.options.close() ng-disabled=modal.options.isLoading><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><div class=row><h5>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.BODY.TEXT\\' | translate}}</h5></div><div class=field-file-unavailable ng-if=\\\"modal.options.file == null && modal.options.uploadedDate == null\\\"><label><input type=checkbox name=fileUnavailable ng-model=modal.options.fileUnavailable ng-change=modal.options.onFileUnavailableChange()> <span>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.BODY.UNAVAILABLE\\' | translate}}</span></label></div><div class=select-file-button ng-if=\\\"modal.options.file !== null && modal.options.uploadedDate !== null\\\"><button class=\\\"btn btn-primary2\\\" type=file ngf-select=modal.options.uploadFile($file) ngf-max-files=1 ngf-max-size=50MB ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.BODY.SUBMIT_BUTTON\\'| translate}}</button></div><span class=err ng-show=modal.options.errorMsg>{{modal.options.errorMsg}}</span><div id=patient-deactivation-insurance-change-table class=module ng-if=\\\"modal.options.uploadedDate !== null\\\"><h5>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.FILE_TABLE.HEADER\\' | translate}}</h5><table class=table><thead class=thead><tr><th class=title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.FILE_TABLE.FIELDS.FILE_NAME\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.FILE_TABLE.FIELDS.UPLOADED_DATE\\' | translate}}</th><th></th></tr></thead><tbody><tr><!-- File Name --><td>{{modal.options.file.name}}</td><!-- Date Uploaded --><td>{{modal.options.uploadedDate}}</td><!-- Delete Button --><td><i class=\\\"fa fa-trash-o\\\" ng-click=modal.options.deleteFile()></i></td></tr></tbody></table></div></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.close() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button class=\\\"btn btn-primary\\\" type=file ng-if=\\\"modal.options.file == null && !modal.options.fileUnavailable\\\" ngf-select=modal.options.uploadFile($file) ngf-max-files=1 ngf-max-size=50MB>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.INSURANCE_CHANGE_MODAL.BODY.SUBMIT_BUTTON\\'| translate}}</button> <button type=button class=\\\"btn btn-primary\\\" ng-if=\\\"modal.options.file !== null || modal.options.fileUnavailable\\\" ng-click=modal.options.continue() ng-disabled=modal.options.disableSubmit()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CONTINUE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-patient-adherence/e-patient-adherence.html\",\"<div id=e-patient-adherence-modal class=\\\"e-patient-adherence-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close aria-label=Close ng-click=modal.options.close() ng-disabled=modal.options.isLoading><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.PATIENT_ADHERENCE_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><div class=row ng-bind-html=\\\"\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.PATIENT_ADHERENCE_MODAL.TEXT\\' | translate\\\"></div></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.close() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button type=button class=\\\"btn btn-primary\\\" ng-click=modal.options.continue() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CONTINUE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-temp-deactivation/e-temp-deactivation.html\",\"<div id=patient-temp-deactivation-modal data-testid=temporary-pause-modal class=\\\"patient-temp-deactivation-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close aria-label=Close ng-click=modal.options.close() ng-disabled=modal.options.isLoading><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{modal.options.getTranslationKeyByField(\\'HEADER\\') | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><form name=tempDeactivationForm autocomplete=off><div class=date-of-event ng-if=!modal.options.hideCalendar><label for=datepicker>{{modal.options.getTranslationKeyByField(\\'DATE_LABEL\\') | translate}}</label><input date-range-picker ng-keypress=modal.options.detectChange($event) ng-focus=modal.options.detectChange($event) options=modal.options.datePicker.options picker=modal.options.datePicker.picker min=modal.options.datePicker.minDate max=modal.options.datePicker.maxDate class=\\\"form-control date-picker\\\" type=text id=datepicker placeholder=\\\"mm-dd-yyyy - mm-dd-yyyy\\\" ng-model=modal.options.datePicker.date ng-disabled=\\\"modal.options.unknown == true\\\"></div><div class=custom-date-range-display ng-if=\\\"modal.options.getDateRange() > 0\\\"><span class=range-label>{{modal.options.getTranslationKeyByField(\\'DATE_RANGE_LABEL\\') | translate}}</span> {{ modal.options.getDateRange() }} <span>{{modal.options.getTranslationKeyByField(\\'DATE_RANGE_DAYS_TEXT\\') | translate}}</span></div><div class=field-unknown><label><input data-testid=temporary-pause-unknown type=checkbox name=unknown ng-model=modal.options.unknown ng-change=modal.options.onUnknownChange()> <span>{{modal.options.getTranslationKeyByField(\\'UNKNOWN_LABEL\\') | translate}}</span></label></div><div class=field-unknown-message ng-if=modal.options.unknown>{{modal.options.getTranslationKeyByField(\\'PAUSE\\') | translate}}</div></form><div class=temp-deactivation-message ng-bind-html=\\\"modal.options.getTranslationKeyByField(\\'NOTE\\') | translate\\\"></div></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.close() ng-disabled=modal.options.isLoading>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button type=button data-testid=temporary-pause-continue class=\\\"btn btn-primary\\\" ng-click=modal.options.continue() ng-disabled=modal.options.disableSubmit()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CONTINUE\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-users-card/dor-pacing-bar-preview.html\",\"<!DOCTYPE html><html lang=en><head><meta charset=UTF-8><title>DoR Pacing Bar Preview</title><style>body { font-family: -apple-system, BlinkMacSystemFont, \\'Segoe UI\\', sans-serif; padding: 32px; background: #fafafa; color: #1f1f1f; }\\n    h1 { font-size: 18px; margin-bottom: 8px; }\\n    p.note { color: #6d6d6d; font-size: 13px; max-width: 520px; margin-bottom: 24px; }\\n    .legend { font-size: 12px; color: #6d6d6d; margin-bottom: 32px; }\\n    .legend span { display: inline-block; margin-right: 16px; }\\n    .legend .swatch-solid { display: inline-block; width: 12px; height: 8px; border-radius: 2px; vertical-align: middle; margin-right: 4px; background: #999; }\\n    .legend .swatch-light { opacity: 0.5; }\\n    .legend .swatch-today { display: inline-block; width: 2px; height: 12px; background: #444; vertical-align: middle; margin-right: 4px; }\\n    .legend .swatch-end { display: inline-block; width: 3px; height: 10px; background: #999; vertical-align: middle; margin-right: 4px; border-radius: 1px; }\\n    .example { background: #fff; border: 1px solid #e0e0e0; border-radius: 6px; padding: 16px 20px; margin-bottom: 16px; max-width: 360px; }\\n    .example h2 { font-size: 14px; margin: 0 0 4px; }\\n    .example .meta { font-size: 12px; color: #6d6d6d; margin-bottom: 10px; }\\n    .dor-pacing-bar { margin: 6px 0 4px; max-width: 140px; }\\n    .dor-pacing-bar__track { position: relative; height: 8px; background: #E0E0E0; border-radius: 4px; }\\n    .dor-pacing-bar__readings { position: absolute; left: 0; top: 0; height: 100%; border-radius: 4px 0 0 4px; z-index: 1; }\\n    .dor-pacing-bar__forecast { position: absolute; top: 0; height: 100%; z-index: 1; }\\n    .dor-pacing-bar__today { position: absolute; top: -2px; width: 2px; height: 12px; background: #444444; transform: translateX(-50%); z-index: 3; }\\n    .dor-pacing-bar__forecast-end { position: absolute; top: -1px; width: 3px; height: 10px; transform: translateX(-50%); border-radius: 1px; z-index: 2; }\\n    .dor-pacing-bar--green .dor-pacing-bar__readings { background: #5EC900; }\\n    .dor-pacing-bar--green .dor-pacing-bar__forecast { background: rgba(94, 201, 0, 0.35); }\\n    .dor-pacing-bar--green .dor-pacing-bar__forecast-end { background: #5EC900; }\\n    .dor-pacing-bar--orange .dor-pacing-bar__readings { background: #FF9500; }\\n    .dor-pacing-bar--orange .dor-pacing-bar__forecast { background: rgba(255, 149, 0, 0.35); }\\n    .dor-pacing-bar--orange .dor-pacing-bar__forecast-end { background: #FF9500; }\\n    .dor-pacing-bar--red .dor-pacing-bar__readings { background: #EE3B59; }\\n    .dor-pacing-bar--red .dor-pacing-bar__forecast { background: rgba(238, 59, 89, 0.35); }\\n    .dor-pacing-bar--red .dor-pacing-bar__forecast-end { background: #EE3B59; }\\n    .in-app { margin-top: 32px; padding-top: 24px; border-top: 1px solid #e0e0e0; font-size: 13px; }\\n    code { background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-size: 12px; }</style></head><body><h1>DoR Pacing Progress Bar — Preview</h1><p class=note>Static mock of the bar in the patient list pacing column. Scale is 0–31 days of readings.</p><div class=legend><span><span class=swatch-solid></span> Solid = readings so far</span> <span><span class=\\\"swatch-solid swatch-light\\\"></span> Light = projected to forecast</span> <span><span class=swatch-today></span> Dark line = day in billing cycle</span> <span><span class=swatch-end></span> Tick = forecast end</span></div><div class=example><h2>Green — above target (forecast &gt; 18)</h2><div class=meta>5 DoR · day 18 of 30 · forecast 22 DoR</div><div class=\\\"dor-pacing-bar dor-pacing-bar--green\\\"><div class=dor-pacing-bar__track><div class=dor-pacing-bar__readings style=width:16.1%></div><div class=dor-pacing-bar__forecast style=left:16.1%;width:54.8%></div><div class=dor-pacing-bar__today style=left:58.1%></div><div class=dor-pacing-bar__forecast-end style=left:71.0%></div></div></div></div><div class=example><h2>Orange — on target (forecast 14–18)</h2><div class=meta>8 DoR · day 20 of 30 · forecast 16 DoR</div><div class=\\\"dor-pacing-bar dor-pacing-bar--orange\\\"><div class=dor-pacing-bar__track><div class=dor-pacing-bar__readings style=width:25.8%></div><div class=dor-pacing-bar__forecast style=left:25.8%;width:25.8%></div><div class=dor-pacing-bar__today style=left:64.5%></div><div class=dor-pacing-bar__forecast-end style=left:51.6%></div></div></div></div><div class=example><h2>Red — below target (forecast &lt; 14)</h2><div class=meta>3 DoR · day 22 of 30 · forecast 9 DoR</div><div class=\\\"dor-pacing-bar dor-pacing-bar--red\\\"><div class=dor-pacing-bar__track><div class=dor-pacing-bar__readings style=width:9.7%></div><div class=dor-pacing-bar__forecast style=left:9.7%;width:19.4%></div><div class=dor-pacing-bar__today style=left:71.0%></div><div class=dor-pacing-bar__forecast-end style=left:29.0%></div></div></div></div><div class=in-app><strong>In the real app:</strong> from <code>consumer-ui</code>, run <code>npm run serve</code>, log in, and open <strong>Enterprise → Patients</strong>. The bar appears in the pacing column for patients with an active subscription and DoR metrics.</div></body></html>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-users-card/e-users-card.html\",\"<div class=e-users-card-page><service-options user=vm.user enterprise-customer=vm.enterpriseCustomer selected-option=physiologic ccm-enabled=vm.ccmEnabled authorize=role:clinical ng-if=vm.ccmEnabled></service-options><status-filter on-change=\\\"vm.onChange(property, payload)\\\"></status-filter><card-wrapper class=e-users-card-wrapper><card card-name=e-users-card><section class=card-header><div class=card-header-inner><span class=text><span ng-show=\\\"vm.patientDashboard.real_patient_count === vm.patientDashboard.total_patient_count\\\">{{vm.patientDashboard.total_patient_count}} {{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.REAL\\' | translate}}{{vm.patientDashboard.total_patient_count !== \\'1\\' ? \\'s\\' : \\'\\'}} </span><span ng-show=\\\"vm.patientDashboard.real_patient_count !== vm.patientDashboard.total_patient_count\\\">{{vm.patientDashboard.real_patient_count}} {{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.REAL\\' | translate}}{{vm.patientDashboard.real_patient_count !== \\'1\\' ? \\'s\\' : \\'\\'}} {{vm.patientDashboard.fake_patient_count}} {{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.DEMO\\' | translate}}{{vm.patientDashboard.fake_patient_count !== \\'1\\' ? \\'s\\' : \\'\\'}} </span></span><span class=text ng-show=\\\"\\n            vm.activeStatus\\n            && vm.activeStatus.includes((\\'PORTAL.ENTERPRISE.PATIENTS.BODY.STATUS.DEACTIVATED\\' | translate))\\\">{{vm.patientDashboard.total_patient_count}}<ng-pluralize count=vm.patientDashboard.total_patient_count when=\\\"{\\'1\\': \\' Patient \\', \\'other\\': \\' Patients \\'}\\\"></ng-pluralize>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.DEACTIVATED\\' | translate}} </span><button ng-show=vm.hasFilters() class=\\\"btn clear-filter pull-right\\\" ng-click=vm.clearPatientReportingFilters() tab-index=9>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.CLEAR_FILTERS\\' | translate}}</button> <button type=button class=\\\"btn filter-btn pull-right\\\" ng-click=\\\"vm.showFilters = !vm.showFilters\\\"><div class=filter></div><span>{{vm.showFilters ? \\'Hide\\' : \\'Show\\'}} filters</span></button><export-btn authorize=\\\"role:clinical, role:administrative\\\" all-items-handler=vm.download(false) filtered-items-handler=vm.download(true) all-items-text=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.ALL_PATIENTS filtered-items-text=PORTAL.ENTERPRISE.PATIENT_REPORTING.BUTTONS.FILTERED_PATIENTS collapse-handler=vm.isExportCollapsed is-disabled=\\\"vm.patientDashboard.total_patient_count === 0\\\"></export-btn></div></section><div id=e-users class=module data-testid=patient-list us-spinner spinner-theme=black spinner-on=vm.showSpinner><div ng-show=vm.showFilters class=\\\"row list-filters\\\"><form name=queryForm><div class=\\\"list-filter small\\\"><text-input class-name=name-query form=queryForm model=vm.query test-id=patient-search-input label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" on-change=\\\"vm.onChange(\\'query\\', {model: model})\\\" placeholder-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.NAME\\' | translate}}\\\" input-id=query input-name=query model-options=\\\"{debounce: 700}\\\" tab-index=1></text-input></div><div class=\\\"list-filter small\\\"><select-input form=queryForm model=vm.primaryProviderQuery label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.MONITORING_PROVIDER\\' | translate}}\\\" on-change=\\\"vm.onChange(\\'$providers.id$\\', {model: model})\\\" options-array=::vm.primaryProviderOptions input-name=primary-provider-query input-id=primary-provider-query tab-index=5></select-input></div><div class=\\\"list-filter small\\\"><label class=filter-header>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.DEVICES\\' | translate}}</label><div class=rpm-device-filter ng-dropdown-multiselect extra-settings=vm.deviceTypeSelectExtraSettings options=vm.deviceTypeOptions selected-model=vm.deviceTypeModel events=\\\"{ onSelectionChanged: vm.deviceTypeChanged }\\\"></div></div><div class=\\\"list-filter small\\\"><select-input class-name=rpm-time model=vm.readingAcuity options-array=vm.readingAcuityOptions on-change=\\\"vm.onChange(\\'reading_acuity\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.READING_ACUITY\\' | translate}}\\\" input-name=rpm-time input-id=rpm-time tab-index=3></select-input></div><div class=\\\"list-filter small\\\"><select-input class-name=rpm-time form=rpmTimeForm model=vm.latestReading options-array=vm.latestReadingOptions on-change=\\\"vm.onChange(\\'$latest_device_readings.reading_taken_ts$\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.LATEST_READING\\' | translate}}\\\" input-name=latest-reading input-id=latest-reading tab-index=4></select-input></div><div class=\\\"list-filter small\\\"><select-input class-name=rpm-time form=rpmTimeForm model=vm.rpmTime options-array=vm.rpmTimesOptions on-change=\\\"vm.onChange(\\'current_period_timesheet_range\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.RPM_TIME\\' | translate}}\\\" input-name=rpm-time input-id=rpm-time tab-index=6></select-input></div><div class=\\\"list-filter small\\\"><label>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.CONDITIONS\\' | translate }}</label><tags-input id=dx ng-model=vm.diagnosis_codes name=diagnosis on-tag-added=vm.onDiagnosisAdded() on-tag-removed=vm.onDiagnosisAdded() tabindex=1 placeholder=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.DX_CODES\\' | translate }}\\\" min-tags=0 add-from-autocomplete-only=true key-property=code display-property=code><div us-spinner=\\\"{radius:4, width:2, length: 4, top: \\'50%\\', left: \\'-13px\\'}\\\" spinner-theme=black spinner-on=vm.isTagLoading></div><auto-complete source=vm.loadDiagnoses($query) key-property=code debounce-delay=250 display-property=description max-results-to-show=8 select-first-match=true></auto-complete></tags-input></div><div class=\\\"list-filter small\\\"><select-input class-name=adherence form=rpmTimeForm model=vm.adherenceTrend options-array=vm.adherenceOptions on-change=\\\"vm.onChange(\\'$dor_pacing_types.filter_key$\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.ADHERENCE\\' | translate}}\\\" input-name=adherence input-id=adherence tab-index=8></select-input></div><div class=\\\"list-filter small no-print\\\"><label class=filter-header>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.PATIENT_GROUPS\\' | translate}}</label><div class=rpm-device-filter ng-dropdown-multiselect=\\\"\\\" disabled extra-settings=vm.groupDropdownSettings options=vm.groupOptions selected-model=vm.groupOptionsModel translation-texts=vm.groupDropdownText events=\\\"{ onSelectionChanged: vm.groupSelectionChanged }\\\"></div></div><div class=\\\"list-filter small dor-filter\\\"><label>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.DAYS_OF_READINGS\\' | translate }}</label><text-input class=dor-range height-class=dor model=\\\"vm.dorRange(vm.dorLow, vm.dorHigh)\\\" placeholder-txt=0-31 input-name=dor_limits autocomplete=off ng-click=\\\"vm.isDaysRemainingCollapsed = true; vm.isDaysOfReadingsCollapsed = !vm.isDaysOfReadingsCollapsed;\\\" form=queryForm></text-input><div class=dorform ng-show=!vm.isDaysOfReadingsCollapsed><label for=dor_low class=text-left>&#8805;</label><text-input class-name=dor_low name=dor_low field-type=number model=vm.dorLow model-options=\\\"{debounce: 700}\\\" on-change=\\\"vm.onChange(\\'dor_low\\', {model: model})\\\"></text-input><label for=dor_high class=text-left>&#8804;</label><text-input name=\\\" dor_high\\\" field-type=number model=vm.dorHigh model-options=\\\"{debounce: 700}\\\" on-change=\\\"vm.onChange(\\'dor_high\\', {model: model})\\\" class-name=dor_high></text-input></div></div><div class=\\\"list-filter small dor-filter\\\"><label>{{ \\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.DAYS_REMAINING_AND_DOR\\' | translate }}</label><text-input class=dor-range height-class=dor model=\\\"vm.dorRange(vm.drdorLow, vm.drdorHigh)\\\" placeholder-txt=0-31 input-name=dor_limits autocomplete=off ng-click=\\\"vm.isDaysOfReadingsCollapsed = true; vm.isDaysRemainingCollapsed = !vm.isDaysRemainingCollapsed;\\\" form=queryForm></text-input><div class=dorform ng-show=!vm.isDaysRemainingCollapsed><label for=dor_low class=text-left>&#8805;</label><text-input class-name=dor_low name=dor_low field-type=number model=vm.drdorLow model-options=\\\"{debounce: 700}\\\" on-change=\\\"vm.onChange(\\'drdor_low\\', {model: model})\\\"></text-input><label for=dor_high class=text-left>&#8804;</label><text-input name=dor_high field-type=number model=vm.drdorHigh model-options=\\\"{debounce: 700}\\\" on-change=\\\"vm.onChange(\\'drdor_high\\', {model: model})\\\" class-name=dor_high></text-input></div></div><div class=\\\"list-filter small\\\" ng-if=vm.spoken_with_patient_filter_enabled><select-input class-name=\\\"\\\" model=vm.spoken_with_patient options-array=vm.spokenWithPatientOptions on-change=\\\"vm.onChange(\\'spoken_with_patient\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.SPOKEN_WITH_PATIENT\\' | translate}}\\\" input-name=rpm-time input-id=rpm-time tab-index=3></select-input></div><div class=\\\"list-filter small\\\"><select-input class-name=\\\"\\\" model=vm.patient_services_count options-array=vm.patientServicesCountOptions on-change=\\\"vm.onChange(\\'patient_services_count\\', {model: model})\\\" label-txt=\\\"{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.OTHER_SERVICES\\' | translate}}\\\" input-name=rpm-time input-id=rpm-time tab-index=3></select-input></div><!-- PP-1479 --><!--div class=\\\"list-filter large\\\">\\n                <label class=\\\"filter-header\\\">{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FILTERS.HEADERS.LAST_READING_DATE\\' | translate}}</label>\\n                <input date-range-picker\\n                         data-id=\\\"last_reading\\\"\\n                         class=\\\"form-control date-picker last-reading\\\"\\n                         type=\\\"text\\\"\\n                         ng-model=\\\"vm.lastReadingPicker.date\\\"\\n                         model=\\\"vm.datePicker.date\\\"\\n                         input-name=\\\"last_reading_date\\\"\\n                         options=\\\"vm.lastReadingPicker.options\\\"\\n                         picker=\\\"vm.lastReadingPicker.picker\\\"\\n                   />\\n              </div--></form></div><table class=table><thead class=thead><tr><th></th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.LATEST_READING_DATE\\' | translate}}<table-sort sort-options=vm.sortOptions.threshold field-is-selected=vm.InSort(vm.sortOptions.threshold) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.threshold) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.PATIENT\\' | translate}}<table-sort sort-options=vm.sortOptions.name_last field-is-selected=vm.InSort(vm.sortOptions.name_last) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.name_last) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>PATIENT<br>SERVICES<table-sort sort-options=vm.sortOptions.patient_services_count field-is-selected=vm.InSort(vm.sortOptions.patient_services_count) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.patient_services_count) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.CONDITIONS\\' | translate}}</th><th uib-popover-html=\\\"\\'{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.TOOLTIPS.LAST_REVIEWED\\' | translate}}\\'\\\" popover-append-to-body=true popover-class=status-popover popover-trigger=\\\"\\'mouseenter\\'\\\">LAST<br>REVIEWED<table-sort sort-options=vm.sortOptions.last_reviewed field-is-selected=vm.InSort(vm.sortOptions.last_reviewed) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.last_reviewed) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>LAST<br>CONTACTED<table-sort sort-options=vm.sortOptions.call_log field-is-selected=vm.InSort(vm.sortOptions.call_log) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.call_log) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><th>{{vm.monthYear}}<br>RPM time<table-sort sort-options=vm.sortOptions.timesheet_sum field-is-selected=vm.InSort(vm.sortOptions.timesheet_sum) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.timesheet_sum) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th><!-- PP-1479 --><!--th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.LAST_READING\\' | translate}} <i popover-trigger=\\\"\\'click\\'\\\" class=\\\"info-link\\\" popover-placement=\\\"left-middle\\\" uib-popover-html=\\\"\\'{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.WHAT_IS_LAST_READING\\' | translate}}\\'\\\"></i></th--><th>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.LATEST_AVA_ADHERENCE_DATE\\' | translate}}<table-sort sort-options=vm.sortOptions.last_ava_alert field-is-selected=vm.InSort(vm.sortOptions.last_ava_alert) asc-sort-selected=vm.fieldIsAscSort(vm.sortOptions.last_ava_alert) sort-callback=\\\"vm.setSort(field, dir)\\\"></table-sort></th></tr></thead><tbody><tr ng-repeat=\\\"userProfile in vm.patients track by userProfile.id\\\" ng-click=vm.onRowClick($index) data-testid=patient-row data-patient-id={{::userProfile.id}} data-enterprise-id={{::userProfile.enterprise_customer_id}} data-subscription-active={{::!!userProfile.patient_subscriptions[0].current_period_started_at}}><td qa-id=userProfile{{$index}} data-testid=patient-chart-link ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div ng-attr-id=\\\"{{ \\'patient_row_\\' + userProfile.id }}\\\" class=unread ng-if=\\\"(userProfile | isUnread) || (userProfile | isUnreadChfAlert)\\\"><i ng-mouseenter=vm.openPopover($index) popover-trigger=\\\"\\'outsideClick\\'\\\" uib-popover-template=vm.patientReviewedDisclaimer popover-placement=top popover-is-open=vm.popoverIsOpen[$index]><img src=../assets/images/enterprise/patient-reporting/unread.svg class=unread-dot> <img ng-if=\\\"userProfile | isUnreadChfAlert\\\" src=../assets/images/enterprise/patient-reporting/unread-chf-alert.svg class=chf-dot></i></div></td><td ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\" class=last-ava-alert><div class=latest-device-reading-wrapper data-testid=assigned-device data-device-category={{::device.device_type.category}} ng-repeat=\\\"device in userProfile.devices track by $index\\\"><div class=latest-reading-wrapper ng-if=\\\"device.latest_device_readings.length > 0\\\" ng-repeat=\\\"reading in device.latest_device_readings track by $index\\\"><span class=\\\"latest-reading {{ reading | deviceReadingClass: device.device_type }}\\\" data-testid=latest-reading data-threshold-state=\\\"{{ vm.showBtrAlert(reading, userProfile) ? \\'out-of-range\\' : \\'in-range\\' }}\\\" ng-if=\\\"device.device_type.category !== vm.DeviceTypeCategories.TABLET\\\">{{ device.device_type | deviceTypeAbbreviation }}: {{ reading | deviceReadingDisplay: device.device_type }} {{ (reading.reading_taken_ts | isPastDate) ? \\' - \\' : \\'\\' }} <strong ng-if=\\\"reading.reading_taken_ts | isSinceYesterday\\\">{{ reading.reading_taken_ts | humanizeTimestamp:vm.latestReading }}</strong> <span ng-if=\\\"!(reading.reading_taken_ts | isSinceYesterday)\\\">{{ reading.reading_taken_ts | humanizeTimestamp:vm.latestReading }}</span> <span ng-if=\\\"vm.showBtrAlert(reading, userProfile)\\\" uib-popover-html=\\\"reading | beyondThresholdTooltip: vm.user.user_profile.timezone\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true>&#9888;️</span></span></div><!-- Hide chips from devices that have since been replaced --><div class=latest-reading-wrapper ng-if=\\\"device.latest_device_readings.length === 0 && vm.countOfDevicesByType(userProfile.devices, device.device_type.category) === 1\\\"><span class=\\\"latest-reading no-reading\\\" ng-if=\\\"!(device.device_type.category === vm.DeviceTypeCategories.THERMOMETER || device.device_type.category === vm.DeviceTypeCategories.TABLET)\\\"><span>{{ device.device_type | deviceTypeAbbreviation }}: No readings</span><e-device-shipment device=device></e-device-shipment></span></div></div><div class=latest-device-reading-wrapper ng-repeat=\\\"device in userProfile.heartrateDevices track by $index\\\"><div class=latest-reading-wrapper ng-if=\\\"device.latest_device_readings.length > 0\\\" ng-repeat=\\\"reading in device.latest_device_readings track by $index\\\"><span class=\\\"latest-reading {{ reading | deviceReadingClass: device.device_type }}\\\">HR via {{ device.device_type | deviceTypeAbbreviation }}: {{ reading | pulseReadingDisplay: device.device_type }} {{ (reading.reading_taken_ts | isPastDate) ? \\' - \\' : \\'\\' }} <strong ng-if=\\\"reading.reading_taken_ts | isSinceYesterday\\\">{{ reading.reading_taken_ts | humanizeTimestamp:vm.latestReading }}</strong> <span ng-if=\\\"!(reading.reading_taken_ts | isSinceYesterday)\\\">{{ reading.reading_taken_ts | humanizeTimestamp:vm.latestReading }}</span> <span ng-if=\\\"vm.showBtrAlert(reading, userProfile)\\\" uib-popover-html=\\\"reading | beyondThresholdTooltip: vm.user.user_profile.timezone\\\" popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true>&#9888;️</span></span></div></div></td><td ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\" class=user-name><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch><i class=\\\"fa fa-user-md\\\" ng-if=userProfile.is_provider_device_test_account></i> <span class=badge ng-if=userProfile.is_fake>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.DEMO\\' | translate}} </span><span class=badge ng-if=userProfile.is_internal>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.BADGES.INTERNAL\\' | translate}} </span><span class=patient-info>{{userProfile.name_first}} {{userProfile.name_last}}<br>{{userProfile.gender | gender}}, {{userProfile.date_of_birth | dobToAge}}</span></div></a></td><td class=user-name><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch><span class=patient-info>{{ userProfile.model_patient_services.length > 1 ? \\'CCM\\' : \\'\\' }}</span></div></a></td><td ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile .id, observation_report_id: userProfile.patient_reports[0].id})\\\"><diagnosis-codes codes=userProfile.enterprise_chart.diagnosis.codes limit=3></diagnosis-codes></td><td><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch ng-show=userProfile.rpm_last_reviewed_by><div ng-show=userProfile.rpm_last_reviewed_at>{{ userProfile.rpm_last_reviewed_at | humanizeTimestamp }}</div><div ng-show=userProfile.rpm_last_reviewed_by>by {{ vm.getProviderName(userProfile.rpm_last_reviewed_by) }}</div></div><div class=stretch ng-hide=userProfile.rpm_last_reviewed_at>Not reviewed yet</div></a></td><td><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch ng-if=\\\"userProfile.call_logs.length > 0\\\"><div ng-if=userProfile.call_logs[0]>{{ userProfile.call_logs[0].created_at | humanizeTimestamp }}</div><div ng-if=userProfile.call_logs[0].provider_user_profile_id>by {{ vm.getProviderName(userProfile.call_logs[0].provider_user_profile_id) }}</div></div><div class=stretch ng-hide=userProfile.call_logs[0].created_at>No call log</div></a></td><td class=rpm-minutes><!-- Split button --><div ng-if=\\\"userProfile.enterprise.missing_report_dates.length > 0\\\" class=\\\"btn-group dropdown-btns\\\"><button type=button class=\\\"btn btn-primary\\\" ng-click=\\\"vm.navigateToReport(userProfile, userProfile.enterprise.missing_report_dates[0])\\\">{{userProfile.enterprise.missing_report_dates[0].period_started_at | date:\\'mediumDate\\' : \\'UTC/GMT\\'}}</button> <button type=button class=\\\"btn btn-primary dropdown-toggle\\\" data-toggle=dropdown aria-haspopup=true aria-expanded=false><span class=caret></span> <span class=sr-only>Toggle Dropdown</span></button><ul class=dropdown-menu><li ng-repeat=\\\"missingReport in userProfile.enterprise.missing_report_dates\\\"><a ng-click=\\\"vm.navigateToReport(userProfile, missingReport)\\\">{{missingReport.period_started_at | date:\\'mediumDate\\' : \\'UTC/GMT\\'}}</a></li></ul></div><a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><div class=stretch><div ng-if=\\\"!userProfile.enterprise.missing_report_dates \\\"><span>{{ userProfile.patient_reports[0].reporting_period_id === vm.currentReportingPeriod.id ? userProfile.patient_reports[0].timesheet_sum : 0 | duration:\\'seconds\\':\\\"m \\'minutes\\'\\\" }}</span></div></div></a><span class=data-actions><a ng-class=\\\"{\\'noclick\\': vm.observationReportService.intervalId}\\\" ng-click=vm.getPDF(userProfile) authorize=\\\"role:clinical, role:administrative\\\"><i class=download></i> </a><a ng-click=\\\"vm.observationReportService.copyLinkToClipboard(\\'enterprise.observation_report\\', {user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><i class=copy></i></a></span></td><td ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\"><nobr><a ng-if=userProfile.metrics_by_patient_subscriptions[0].dor_pacing_type.label class=dorpacing><div class=up ng-if=\\\"userProfile.metrics_by_patient_subscriptions[0].dor_pacing_type.filter_key.indexOf(\\'UP\\')>=0\\\"></div><div class=neu ng-if=\\\"userProfile.metrics_by_patient_subscriptions[0].dor_pacing_type.filter_key.indexOf(\\'NEU\\')>=0\\\"></div><div class=down ng-if=\\\"userProfile.metrics_by_patient_subscriptions[0].dor_pacing_type.filter_key.indexOf(\\'DOWN\\')>=0\\\"></div>{{userProfile.metrics_by_patient_subscriptions[0].dor_pacing_type.label}} </a><i class=info-link uib-popover-html=vm.getDorTooltop(userProfile) popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=bottom popover-class=dor-pacing-popover ng-click=$event.stopPropagation()></i><!-- No pacing bar: keep adherence/reminder on the same line as the info icon --> <span class=adherence-inline ng-if=!userProfile.dorBar.show><span class=last-ava-alert-info ng-if=userProfile.last_ava_alert>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.REMINDED\\' | translate}} {{ userProfile.last_ava_alert | humanizeAvaAlertTimestamp }} </span><span class=no-ava-last-alert ng-if=!userProfile.last_ava_alert><e-users-no-ava-adherence-date user-profile=userProfile enterprise-customer=vm.enterpriseCustomer dor-bar=userProfile.dorBar></e-users-no-ava-adherence-date></span></span></nobr><div ng-if=userProfile.dorBar.show><div class=dor-pacing-bar ng-class=\\\"\\'dor-pacing-bar--\\' + userProfile.dorBar.status\\\" title=\\\"{{userProfile.dorBar.readingsSoFar}} DoR · day {{userProfile.dorBar.daysElapsed}} of {{userProfile.dorBar.cycleTotalDays}} · forecast {{userProfile.dorBar.forecast}} DoR\\\"><div class=dor-pacing-bar__track><div class=dor-pacing-bar__readings ng-style=\\\"{width: userProfile.dorBar.readingsPercent + \\'%\\'}\\\"></div><div class=dor-pacing-bar__forecast ng-if=\\\"userProfile.dorBar.forecastGapPercent > 0\\\" ng-style=\\\"{left: userProfile.dorBar.readingsPercent + \\'%\\', width: userProfile.dorBar.forecastGapPercent + \\'%\\'}\\\"></div><div class=dor-pacing-bar__today ng-style=\\\"{left: userProfile.dorBar.todayPercent + \\'%\\'}\\\"></div><div class=dor-pacing-bar__forecast-end ng-style=\\\"{left: userProfile.dorBar.forecastPercent + \\'%\\'}\\\"></div></div></div><div class=spacing><div class=last-ava-alert-info ng-if=userProfile.last_ava_alert>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.FIELDS.REMINDED\\' | translate}} {{ userProfile.last_ava_alert | humanizeAvaAlertTimestamp }}</div><div class=no-ava-last-alert ng-if=!userProfile.last_ava_alert><e-users-no-ava-adherence-date user-profile=userProfile enterprise-customer=vm.enterpriseCustomer dor-bar=userProfile.dorBar></e-users-no-ava-adherence-date></div></div></div></td><!-- PP-1479 --><!--td>\\n              <a ui-sref=\\\"enterprise.observation_report({user_profile_id: userProfile.id, observation_report_id: userProfile.patient_reports[0].id})\\\">\\n                <div class=\\\"stretch\\\">\\n                  <span ng-if=\\\"!userProfile.latest_device_readings[0]\\\">---</span>\\n                  <span ng-if=\\\"userProfile.latest_device_readings[0]\\\"><b>{{userProfile.latest_device_readings[0].reading_taken_ts | date:\\'MM/dd/yyyy\\' : \\'UTC/GMT\\'}}</b><br/>\\n\\n                      <span ng-if=\\\"userProfile.latest_device_readings[0].device_type.category == \\'SCALE\\'\\\">\\n                          {{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.DATA.WEIGHT\\' | translate}}:\\n                          {{ userProfile.latest_device_readings[0].values.weight }}{{ userProfile.latest_device_readings[0].values.unit }}\\n                      </span>\\n                      <span ng-if=\\\"userProfile.latest_device_readings[0].device_type.category == \\'BP_CUFF\\'\\\">\\n                        {{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.DATA.PULSE\\' | translate}}:{{ userProfile.latest_device_readings[0].values.pulse }}\\n                        {{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.DATA.BP\\' | translate}}:{{ userProfile.latest_device_readings[0].values.systolic /100 }}/{{ userProfile.latest_device_readings[0].values.diastolic / 100 }}\\n                      </span>\\n                      <span ng-if=\\\"userProfile.latest_device_readings[0].device_type.category == \\'GLUCOMETER\\'\\\">\\n                        {{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.DATA.READING\\' | translate}}:\\n                          {{ userProfile.latest_device_readings[0].values.reading }}{{ userProfile.latest_device_readings[0].values.unit }}\\n                      </span>\\n\\n                  </span>\\n                </div>\\n              </a>\\n            </td--></tr><tr ng-if=\\\"vm.patients.length < 1\\\"><td>{{\\'PORTAL.ENTERPRISE.GLOBAL.NONE\\' | translate}}</td><td></td><td></td></tr></tbody></table></div><card-wrapper><card card-name=\\\"pagination transparent\\\"><div ng-if=\\\"vm.patientsCount > 0\\\" class=pagination-options><span class=show>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.SHOW\\' | translate}}</span><select-input id=pagination-options options-array=::vm.optionsForPagination model=vm.itemsPerPage on-change=\\\"vm.onChange(\\'_perPage\\', {model: model})\\\"></select-input><span class=results>{{\\'PORTAL.ENTERPRISE.PATIENTS.BODY.RESULTS\\' | translate}}</span></div><ul ng-if=\\\"vm.patientsCount > 0\\\" uib-pagination items-per-page=vm.itemsPerPage total-items=vm.patientsCount boundary-link-numbers=true max-size=5 previous-text=\\\"<\\\" next-text=\\\">\\\" ng-model=vm.pageNumber ng-change=vm.goToPage()></ul></card></card-wrapper></card></card-wrapper><div class=ibeat-disclaimer>{{\\'PORTAL.ENTERPRISE.DISCLAIMERS.RPM_TIMELY_RESPONSE\\' | translate}}</div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-users-card/e-users-status-text.html\",\"<!-- For statuses other than DEMO --><div ng-if=\\\"(vm.status | translate) !== \\'Demo\\'\\\"><span class=text>{{vm.patientCount}}<ng-pluralize count=vm.patientCount when=\\\"{\\'1\\': \\' Patient \\', \\'other\\': \\' Patients \\'}\\\"></ng-pluralize>{{vm.status | translate}}</span></div><!-- For DEMO status --><div ng-if=\\\"(vm.status | translate) == \\'Demo\\'\\\"><span class=text>{{vm.patientCount}} {{vm.status | translate}}<ng-pluralize count=vm.patientCount when=\\\"{\\'1\\': \\' Patient \\', \\'other\\': \\' Patients \\'}\\\"></ng-pluralize></span></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-tasks/e-task-ccm-summary/e-task-ccm-summary.html\",\"<card-wrapper class=e-task-ccm-summary><card card-name=\\\"alert ccm ibeat\\\"><div class=\\\"col left-clock\\\">{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.CCM.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.CCM.SUBTITLE\\' | translate}}</h3><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.ALL\\' | translate}}</span><h3>{{vm.ccmSummaryData.real_ccm_patient_count}} <i class=info-link popover-placement=bottom uib-popover-html=::vm.explainCCMActive() popover-trigger=\\\"\\'click\\'\\\" popover-class=dashboard-popover></i></h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_0_19\\' | translate}}</span><h3>{{vm.ccmSummaryData.ccm_count_0_19}}</h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_20_39\\' | translate}}</span><h3>{{vm.ccmSummaryData.ccm_count_20_39}}</h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_40_59\\' | translate}}</span><h3>{{vm.ccmSummaryData.ccm_count_40_59}}</h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_6_PLUS\\' | translate}}</span><h3>{{vm.ccmSummaryData.ccm_count_60_plus}}</h3></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-tasks/e-task-outcomes-dashboard/e-task-outcomes-dashboard.html\",\"<card-wrapper class=e-task-outcomes-dashboard><card card-name=\\\"alert ibeat\\\"><div class=\\\"col left\\\">{{\\'PORTAL.ALERTS.OUTCOMES.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3 class=outcomes-title>{{\\'PORTAL.ALERTS.OUTCOMES.BODY.SUBTITLE\\' | translate}}</h3><p class=outcomes-lede>{{\\'PORTAL.ALERTS.OUTCOMES.BODY.LEDE\\' | translate}}</p><uib-tabset ng-if=vm.showOfficeTab active=vm.activeTab class=outcomes-scope-tabs><uib-tab index=\\\"\\'practice\\'\\\" heading=\\\"{{ \\'PORTAL.ALERTS.OUTCOMES.TABS.PRACTICE\\' | translate }}\\\" select=vm.selectPracticeTab()></uib-tab><uib-tab index=\\\"\\'office\\'\\\" heading=\\\"{{ \\'PORTAL.ALERTS.OUTCOMES.TABS.OFFICE\\' | translate }}\\\" select=vm.selectOfficeTab()></uib-tab></uib-tabset><div class=outcomes-metrics ng-if=vm.activeStudy><div class=no_outcomes ng-if=!vm.showMetrics><i class=\\\"fa fa-exclamation-triangle\\\"></i> {{\\'PORTAL.ALERTS.OUTCOMES.BODY.NO_READINGS\\' | translate:vm.translationData }}</div><div class=outcomes-as-of ng-if=vm.showMetrics>{{\\'PORTAL.ALERTS.OUTCOMES.BODY.AS_OF\\' | translate}} {{ vm.activeStudy.created_at | date: \\'shortDate\\'}}</div><div class=outcomes-section ng-repeat=\\\"section in vm.outcomeSections\\\"><h3 class=outcomes-section-title>{{ section.titleKey | translate }}</h3><div class=outcomes-cards><div class=outcome-card ng-repeat=\\\"card in section.cards\\\"><h4 class=outcome-card-title>{{ card.titleKey | translate }}</h4><div class=outcome-empty ng-if=!card.hasData><i class=\\\"fa fa-minus-circle\\\" aria-hidden=true></i> <span>{{\\'PORTAL.ALERTS.OUTCOMES.EMPTY\\' | translate}}</span></div><div ng-if=card.hasData><div class=outcome-metric ng-repeat=\\\"metric in card.metrics\\\"><div class=outcome-metric-label>{{ metric.labelKey | translate }}</div><div class=outcome-comparison><div class=outcome-point><div class=outcome-point-label>{{\\'PORTAL.ALERTS.OUTCOMES.DAY_0\\' | translate}}</div><div class=outcome-point-value>{{ metric.day0 }} {{ metric.unit }}</div></div><i class=\\\"fa fa-arrow-right outcome-arrow\\\" aria-hidden=true></i><div class=outcome-point><div class=outcome-point-label>{{\\'PORTAL.ALERTS.OUTCOMES.DAY_180\\' | translate}}</div><div class=outcome-point-value>{{ metric.day180 }} {{ metric.unit }}</div></div></div><div class=outcome-change ng-class=metric.direction><div class=outcome-change-value><i class=fa ng-class=\\\"{\\n                                 \\'fa-arrow-down\\': metric.direction === \\'improved\\',\\n                                 \\'fa-arrow-up\\': metric.direction === \\'worsened\\',\\n                                 \\'fa-minus\\': metric.direction === \\'unchanged\\'\\n                               }\\\" aria-hidden=true></i> {{ metric.change }} {{ metric.unit }}</div><div class=outcome-change-label>{{ metric.changeLabelKey | translate }}</div></div><div class=outcome-badge ng-class=metric.direction><i class=fa ng-class=\\\"{\\n                               \\'fa-arrow-down\\': metric.direction === \\'improved\\',\\n                               \\'fa-arrow-up\\': metric.direction === \\'worsened\\',\\n                               \\'fa-minus\\': metric.direction === \\'unchanged\\'\\n                             }\\\" aria-hidden=true></i> {{ metric.statusKey | translate }}</div></div><div class=outcome-card-footer><div class=outcome-n ng-if=\\\"card.n === 1\\\">{{\\'PORTAL.ALERTS.OUTCOMES.BASED_ON_ONE\\' | translate}}</div><div class=outcome-n ng-if=\\\"card.n !== 1\\\">{{\\'PORTAL.ALERTS.OUTCOMES.BASED_ON\\' | translate:{ count: card.n } }}</div><span class=outcome-stats-link tabindex=0 uib-popover-html=card.statsHtml popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=bottom popover-class=\\\"dashboard-popover outcomes-stats-popover\\\"><i class=info-link aria-hidden=true></i> {{\\'PORTAL.ALERTS.OUTCOMES.STATISTICAL_DETAILS\\' | translate}}</span></div></div></div></div></div></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-tasks/e-task-summary/e-task-summary.html\",\"<card-wrapper class=e-task-summary><card card-name=\\\"alert rpm ibeat\\\"><div class=\\\"col left-clock\\\">{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.SUBTITLE\\' | translate}}</h3><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.ALL\\' | translate}}</span><h3>{{vm.summaryData.real_patient_count}} <i class=info-link popover-placement=bottom uib-popover-html=::vm.explainActive() popover-trigger=\\\"\\'click\\'\\\" popover-class=dashboard-popover></i></h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_0_19\\' | translate}}</span><h3>{{vm.summaryData.rpm_count_0_19}}</h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_20_39\\' | translate}}</span><h3>{{vm.summaryData.rpm_count_20_39}}</h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_40_59\\' | translate}}</span><h3>{{vm.summaryData.rpm_count_40_59}}</h3></div><div class=box><span>{{\\'PORTAL.ALERTS.SUMMARY_TASK.BODY.STAT_6_PLUS\\' | translate}}</span><h3>{{vm.summaryData.rpm_count_60_plus}}</h3></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-tasks/e-task-upload/e-task-upload.html\",\"<card-wrapper class=e-task-upload><card card-name=\\\"alert ibeat\\\"><div class=\\\"col left\\\">{{\\'PORTAL.ALERTS.BULK_ENROLLMENT.BODY.TITLE\\' | translate}}</div><div class=\\\"col right\\\"><h3>{{\\'PORTAL.ALERTS.BULK_ENROLLMENT.BODY.HEADER\\' | translate}}</h3><p>{{\\'PORTAL.ALERTS.BULK_ENROLLMENT.BODY.TEXT\\' | translate}}</p><div class=task-details><p><strong>The following patient information is required:</strong><br>{{\\'PORTAL.ALERTS.BULK_ENROLLMENT.BODY.REQUIRED_INFO\\' | translate}}</p></div><span ng-show=\\\"vm.file.progress === 100\\\">Upload Successful: {{vm.file.name}}</span> <span class=err ng-show=vm.errorMsg>{{vm.errorMsg}}</span><div class=progress ng-show=\\\"vm.file.progress != null\\\"><div class=\\\"progress-bar progress-bar-success\\\" role=progressbar aria-valuenow=vm.file.progress aria-valuemin=0 aria-valuemax=100 style=width:{{vm.file.progress}}%>{{vm.file.progress + \\'%\\'}}</div></div><div class=actions><!--        <button class=\\\"btn btn-secondary pull-right\\\"--><!--                ng-click=\\\"vm.dismissTask()\\\">--><!--          {{\\'PORTAL.ALERTS.BULK_ENROLLMENT.BUTTONS.IGNORE\\' | translate}}--><!--        </button>--> <button qa-id=dashboardUpload class=\\\"btn btn-primary pull-left\\\" type=file ngf-select=\\\"vm.uploadFiles($file, $invalidFiles)\\\" ngf-max-size=50MB>{{\\'PORTAL.ALERTS.BULK_ENROLLMENT.BUTTONS.UPLOAD_FILE\\' | translate}}</button></div></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-components/e-edit-template-component.html\",\"<div id=e-edit-template-component class=modal-wrapper><div class=add-component-item><div class=modal-header ng-if=modalOptions.headerText><h4 class=modal-title>{{modalOptions.headerText}}</h4></div><div class=modal-body><form name=vm.createComponentItemForm class=top-label-form novalidate><div class=form-group><text-input class-name=new-component-item form=vm.createComponentItemForm model=modalOptions.componentItem.value tab-index=1 is-required=true input-name=new-component-item input-id=new-component-item></text-input></div></form></div><div class=modal-footer><button type=button id=btn-cancel class=\\\"btn btn-secondary\\\" ng-click=modalOptions.close(false)>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button type=submit id=btn-save class=\\\"btn btn-primary\\\" ng-disabled=vm.createComponentItemForm.$invalid ng-click=modalOptions.ok(modalOptions.componentItem) promise-btn=modalOptions.createComponentItemPromise>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button></div></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-components/e-template-components.html\",\"<section id=e-template-components><div class=component-list-wrapper authorize=role:clinical><a ng-click=\\\"vm.isCollapsed = !vm.isCollapsed\\\" class=collapse-temp-notes><i class=fa ng-class=\\\"{\\'fa-chevron-down\\': !vm.isCollapsed, \\'fa-chevron-right\\': vm.isCollapsed}\\\"></i></a><div uib-collapse=vm.isCollapsed><span class=component-list-header><span class=component-list-header-txt>{{vm.headerTxt}} {{\\'PORTAL.ENTERPRISE.TEMPLATES.COMMENTS\\' | translate}} </span><button class=\\\"btn add-button\\\" ng-click=vm.onEditOrCreate()>{{ \\'GLOBAL.BUTTONS.ADD\\' | translate }}</button></span><ul ng-if=\\\"vm.activeTabKey === key.toUpperCase()\\\" class=component-list ng-repeat=\\\"(key, list) in vm.componentData track by $index\\\" ng-init=\\\"vm.headerTxt = list.displayValue\\\"><li class=component-list-item ng-repeat=\\\"item in list.items track by $index\\\" ng-class=\\\"{\\'is-visualized\\': isClicked}\\\" ng-click=\\\"vm.addTextToTemplateVisualizer(item); isClicked=true\\\" ng-init=\\\"nestedItemIndex = $index\\\"><span class=component-list-item-txt>{{item.value}}</span><!-- https://github.com/danklammer/bytesize-icons --><div class=actions><svg ng-click=\\\"vm.onEditOrCreate(item); $event.stopPropagation()\\\" id=i-edit viewBox=\\\"0 0 32 32\\\" width=16 height=16 fill=none stroke=currentcolor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d=\\\"M30 7 L25 2 5 22 3 29 10 27 Z M21 6 L26 11 Z M5 22 L10 27 Z\\\"/></svg> <svg ng-click=\\\"vm.onDelete({model: {itemKey: vm.activeTabKey, nestedItemIndex: nestedItemIndex}});\\\" id=i-trash viewBox=\\\"0 0 32 32\\\" width=16 height=16 fill=none stroke=currentcolor stroke-linecap=round stroke-linejoin=round stroke-width=2><path d=\\\"M28 6 L6 6 8 30 24 30 26 6 4 6 M16 12 L16 24 M21 12 L20 24 M11 12 L12 24 M12 6 L13 2 19 2 20 6\\\"/></svg></div></li></ul></div></div><p class=visualizer-hdr>{{vm.reportPeriodTxt}} notes</p><section class=visualizer-notes><e-patient-observation-form ng-if=vm.observationReport observation-report=vm.observationReport label-txt=\\\"{{\\'PORTAL.ENTERPRISE.E_USER_DETAIL.FIELDS.COMMENTS\\' | translate:vm.translationData}}\\\" on-submit=\\\"vm.onSubmit({observationReportId: observationReportId, notes: notes, model: model})\\\" features=vm.features></e-patient-observation-form></section></section>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-readonly/e-template-readonly.html\",\"<section id=e-template-readonly><h4>Notes</h4><section class=readonly-notes><div ta-bind ng-model=vm.observationReport.details></div><span ng-if=!vm.observationReport.details>&mdash;</span></section></section>\");\n$templateCache.put(\"app/components/portal/enterprise/graphs/graph-card/graph-card.html\",\"<card-wrapper class=graph-card-wrapper><card card-name=graph-card><span class=timezone-info ng-bind-html=\\\"vm.patientUserProfile | patientTimezoneWarning : vm.timeZone : vm.graphViewName\\\"></span><div id=graph class=module us-spinner spinner-theme=black spinner-on=vm.isLoading><iframe ng-class=\\\"{\\'data-loading\\': vm.isLoading}\\\" id={{vm.graphIframeUniqueId}} ng-src={{vm.graphUrl}} frameborder=0></iframe><!-- div class=\\\"graph-scrim\\\" ng-show=\\\"vm.isLoading\\\"></div --></div></card></card-wrapper>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-visualizer/e-template-visualizer.html\",\"<section id=e-template-visualizer><e-template-timesheets ng-if=\\\"vm.observationReport && vm.observationReport.status !== \\'COMPLETED\\'\\\" user=vm.user patient-user-profile=vm.patientUserProfile enterprise-customer=vm.enterpriseCustomer observation-report=vm.observationReport timesheets=vm.timesheets is-report-editable=vm.isReportEditable is-report-from-current-period=vm.isReportFromCurrentPeriod on-submit-update-notes=\\\"vm.onSubmitUpdateNotes({model: model})\\\" date-range=vm.dateRange report-period-txt=vm.reportPeriodTxt features=vm.features go-to-next-patient=\\\"vm.goToNextPatient({isNext: true})\\\"></e-template-timesheets><e-observation-reports user=vm.user patient-user-profile=vm.patientUserProfile current-reporting-period=vm.currentReportingPeriod observation-report=vm.observationReport observation-reports=vm.observationReports features=vm.features></e-observation-reports></section>\");\n$templateCache.put(\"app/components/portal/enterprise/patient-header/patient-insurance-modal/patient-insurance-modal.html\",\"<div class=patient-insurance-modal><div class=patient-insurance-modal-body ng-if=vm.loading><p>{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}</p></div><form name=vm.enrollmentInsuranceForm class=\\\"top-label-form patient-insurance-modal-form enrollment-new\\\" ng-submit=vm.submitForm() novalidate ng-if=!vm.loading><div class=patient-insurance-modal-body><section class=\\\"insurance-tier-panel primary-insurance-panel\\\"><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.PRIMARY_INSURANCE\\' | translate }}</h4><div class=row><input class=insurance-type-input type=radio name=insuranceType id=patient-insurance-medicare ng-value=\\\"\\'medicare\\'\\\" ng-model=vm.insuranceType required><label class=insurance-type-label for=patient-insurance-medicare><h4 class=insurance-type-heading>{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_TITLE\\' | translate }}</h4></label></div><div class=row ng-show=\\\"vm.insuranceType === \\'medicare\\'\\\"><text-input class-name=medicare-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.policy_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_NUM\\' | translate }}\\\" input-name=medicare-num input-id=patient-insurance-medicare-num height-class=input-sm regex={{::vm.mbiRegex}} mask=****-***-**** mask-placeholder=____-___-____ mask-options=\\\"{clearOnBlur: false}\\\" validation-messages=vm.medicareNumValidationMessages on-change=vm.clearMedicareNumUniqueError() is-required=\\\"!vm.isInternal && vm.insuranceType === \\'medicare\\'\\\"></text-input></div><div class=row><input class=insurance-type-input type=radio name=insuranceType id=patient-insurance-other ng-value=\\\"\\'other\\'\\\" ng-model=vm.insuranceType required><label class=insurance-type-label for=patient-insurance-other><h4 class=insurance-type-heading>{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_OTHER_TITLE\\' | translate }}</h4></label></div><div class=row ng-show=\\\"vm.insuranceType === \\'other\\'\\\"><typeahead-input input-id=patient-insurance-med-advantage class-name=medicare-advantage form=vm.enrollmentInsuranceForm label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE\\' | translate }}\\\" model=vm.enrollment.primary_insurer.medicare_advantage_provider_name typeahead-payload=vm.onSearch typeahead-field-name=name typeahead-json-node-name=name typeahead-min-length=3 is-required=false typeahead-loading-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.LOADING\\' | translate }}\\\" typeahead-no-results-message=\\\"{{ \\'GLOBAL.TYPEAHEAD.NO_RESULTS\\' | translate }}\\\"></typeahead-input></div><div class=row ng-show=\\\"vm.insuranceType === \\'other\\'\\\"><text-input class-name=group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.group_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_GROUP_NUM\\' | translate }}\\\" input-name=patient-insurance-med-advantage-group-num input-id=patient-insurance-med-advantage-group-num height-class=input-sm></text-input><text-input class-name=individual-num form=vm.enrollmentInsuranceForm model=vm.enrollment.primary_insurer.individual_num label-txt=\\\"{{ \\'GLOBAL.ACCOUNT.FIELDS.MEDICARE_ADVANTAGE_INDIVIDUAL_NUM\\' | translate }}\\\" input-name=patient-insurance-med-advantage-individual-num input-id=patient-insurance-med-advantage-individual-num height-class=input-sm is-required=\\\"vm.insuranceType === \\'other\\' && !vm.isInternal\\\"></text-input></div></section><div class=row ng-show=vm.insuranceType><div class=add-secondary-insurance ng-show=!vm.showSecondaryInsurance ng-click=\\\"vm.showSecondaryInsurance = true\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.ADD_SECONDARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.ADD_SECONDARY\\' | translate }}</div></div><section class=\\\"insurance-tier-panel secondary-insurance-panel\\\" ng-if=vm.showSecondaryInsurance><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.SECONDARY_INSURANCE\\' | translate }}</h4><div class=row><select-input class-name=secondary-insurance-type form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.insurer_type_id options-array=::vm.insurerTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.TYPE\\' | translate }}\\\" input-name=patient-secondary-insurance-type input-id=patient-secondary-insurance-type></select-input><text-input class-name=secondary-insurance-name form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.insurer_name label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NAME_OF_INSURER\\' | translate }}\\\" input-name=patient-secondary-insurance-name input-id=patient-secondary-insurance-name height-class=input-sm></text-input></div><div class=row><text-input class-name=secondary-group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.group_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.GROUP_NUMBER\\' | translate }}\\\" input-name=patient-secondary-insurance-group-num input-id=patient-secondary-insurance-group-num height-class=input-sm></text-input><text-input class-name=secondary-ins-num form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.individual_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.INDIVIDUAL_NUMBER\\' | translate }}\\\" input-name=patient-secondary-insurance-individual-num input-id=patient-secondary-insurance-individual-num height-class=input-sm></text-input></div><div class=row><text-input class-name=secondary-notes form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.notes label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NOTES\\' | translate }}\\\" input-name=patient-secondary-insurance-notes input-id=patient-secondary-insurance-notes height-class=input-sm></text-input></div><div class=row><label class=secondary-list-item><input type=checkbox ng-model=vm.enrollment.secondary_insurer.policy_holder_is_patient class=secondary-checkbox ng-click=vm.blankSecondaryRelationshipFields()> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PH_IS_PATIENT\\' | translate }}</label></div><div class=row><select-input class-name=secondary-patient-relationship form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.patient_to_policyholder_relationship_id options-array=::vm.ptprTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PATIENT_RELATIONSHIP\\' | translate }}\\\" input-name=patient-secondary-patient-relationship input-id=patient-secondary-patient-relationship is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></select-input><text-input class-name=secondary-policyholder-firstname form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_name_first label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_FIRST_NAME\\' | translate }}\\\" input-name=patient-secondary-policyholder-firstname input-id=patient-secondary-policyholder-firstname height-class=input-sm is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></text-input></div><div class=row><text-input class-name=secondary-policyholder-lastname form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_name_last label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_LAST_NAME\\' | translate }}\\\" input-name=patient-secondary-policyholder-lastname input-id=patient-secondary-policyholder-lastname height-class=input-sm is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></text-input><date-input class-name=secondary-insurance-date-of-birth form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_date_of_birth label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=patient-secondary-policyholder-dob input-id=patient-secondary-policyholder-dob date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></date-input></div><div class=row><select-input class-name=secondary-insurance-gender form=vm.enrollmentInsuranceForm model=vm.enrollment.secondary_insurer.policyholder_sex options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_GENDER\\' | translate }}\\\" input-name=patient-secondary-policyholder-gender input-id=patient-secondary-policyholder-gender is-disabled=vm.enrollment.secondary_insurer.policy_holder_is_patient is-required=!vm.enrollment.secondary_insurer.policy_holder_is_patient></select-input></div><div class=row><div class=remove-secondary-insurance ng-if=!vm.showTertiaryInsurance ng-click=vm.clearSecondaryInsurance()><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_SECONDARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_SECONDARY\\' | translate }}</div><div class=add-tertiary-insurance ng-if=!vm.showTertiaryInsurance ng-click=\\\"vm.showTertiaryInsurance = true\\\"><img src=assets/images/global/icons/plus-circle@2x.741ba2b2.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.ADD_TERTIARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.ADD_TERTIARY\\' | translate }}</div></div></section><section class=\\\"insurance-tier-panel tertiary-insurance-panel\\\" ng-if=vm.showTertiaryInsurance><h4 class=insurance-type-heading>{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.PANELS.TERTIARY_INSURANCE\\' | translate }}</h4><div class=row><select-input class-name=tertiary-insurance-type form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.insurer_type_id options-array=::vm.insurerTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.TYPE\\' | translate }}\\\" input-name=patient-tertiary-insurance-type input-id=patient-tertiary-insurance-type></select-input><text-input class-name=tertiary-insurance-name form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.insurer_name label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NAME_OF_INSURER\\' | translate }}\\\" input-name=patient-tertiary-insurance-name input-id=patient-tertiary-insurance-name height-class=input-sm></text-input></div><div class=row><text-input class-name=tertiary-group-num form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.group_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.GROUP_NUMBER\\' | translate }}\\\" input-name=patient-tertiary-insurance-group-num input-id=patient-tertiary-insurance-group-num height-class=input-sm></text-input><text-input class-name=tertiary-ins-num form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.individual_num label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.INDIVIDUAL_NUMBER\\' | translate }}\\\" input-name=patient-tertiary-insurance-individual-num input-id=patient-tertiary-insurance-individual-num height-class=input-sm></text-input></div><div class=row><text-input class-name=tertiary-notes form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.notes label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.NOTES_TERTIARY\\' | translate }}\\\" input-name=patient-tertiary-insurance-notes input-id=patient-tertiary-insurance-notes height-class=input-sm></text-input></div><div class=row><label class=tertiary-list-item><input type=checkbox ng-click=vm.blankTertiaryRelationshipFields() ng-model=vm.enrollment.tertiary_insurer.policy_holder_is_patient class=tertiary-checkbox> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PH_IS_PATIENT\\' | translate }}</label></div><div class=row><select-input class-name=tertiary-patient-relationship form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.patient_to_policyholder_relationship_id options-array=::vm.ptprTypeOptions label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.PATIENT_RELATIONSHIP\\' | translate }}\\\" input-name=patient-tertiary-patient-relationship input-id=patient-tertiary-patient-relationship is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></select-input><text-input class-name=tertiary-policyholder-firstname form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_name_first label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_FIRST_NAME\\' | translate }}\\\" input-name=patient-tertiary-policyholder-firstname input-id=patient-tertiary-policyholder-firstname height-class=input-sm is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></text-input></div><div class=row><text-input class-name=tertiary-policyholder-lastname form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_name_last label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_LAST_NAME\\' | translate }}\\\" input-name=patient-tertiary-policyholder-lastname input-id=patient-tertiary-policyholder-lastname height-class=input-sm is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></text-input><date-input class-name=tertiary-insurance-date-of-birth form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_date_of_birth label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_DOB\\' | translate }}\\\" placeholder-txt=mm/dd/yyyy input-name=patient-tertiary-policyholder-dob input-id=patient-tertiary-policyholder-dob date-format=yyyy-MM-dd mask=99/99/9999 mask-placeholder=mm/dd/yyyy mask-options=\\\"{clearOnBlur: false}\\\" is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></date-input></div><div class=row><select-input class-name=tertiary-insurance-gender form=vm.enrollmentInsuranceForm model=vm.enrollment.tertiary_insurer.policyholder_sex options-array=::vm.genderOptionsArray label-txt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.INSURANCE.POLICYHOLDER_GENDER\\' | translate }}\\\" input-name=patient-tertiary-policyholder-gender input-id=patient-tertiary-policyholder-gender is-disabled=vm.enrollment.tertiary_insurer.policy_holder_is_patient is-required=!vm.enrollment.tertiary_insurer.policy_holder_is_patient></select-input></div><div class=row><div class=remove-tertiary-insurance ng-click=vm.clearTertiaryInsurance()><img src=assets/images/global/icons/minus-circle@2x.cead7ed4.png alt=\\\"{{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_TERTIARY\\' | translate }}\\\"> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.LINKS.REMOVE_TERTIARY\\' | translate }}</div></div></section><div class=\\\"row align-dos-row\\\" ng-show=vm.insuranceType><label class=checkbox-align-dos><input type=checkbox name=align-dos class=align-dos ng-model=vm.enrollment.align_dos> {{ \\'PORTAL.ENTERPRISE.ENROLLMENTS_ADD.FIELDS.ALIGN_DOS\\' | translate }} <i class=\\\"info-link fa fa-question-circle\\\" uib-popover-html=::vm.alignExplanation() popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-placement=top popover-class=dashboard-popover></i></label></div></div><div class=patient-insurance-modal-footer><button type=button class=\\\"btn btn-default\\\" ng-click=vm.cancel() ng-disabled=vm.saving>{{ \\'GLOBAL.BUTTONS.CANCEL\\' | translate }}</button> <button type=submit class=\\\"btn btn-primary\\\" promise-btn=vm.savePromise ng-disabled=!vm.canSubmitInsuranceForm()>{{ \\'GLOBAL.BUTTONS.SAVE\\' | translate }}</button></div></form></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patient-deactivation/e-insurance-change/e-delete-file-confirmation/e-delete-file-confirmation.html\",\"<div id=e-delete-file-confirmation-modal class=\\\"e-delete-file-confirmation-modal modal-wrapper\\\"><div class=modal-header><button type=button class=close ng-click=modal.options.close() aria-label=Close><span aria-hidden=true>&times;</span></button><h4 class=modal-title>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.DELETE_FILE_CONFIRMATION_MODAL.HEADER\\' | translate}}</h4><hr></div><div class=modal-body us-spinner spinner-theme=black spinner-on=modal.options.isLoading ng-init=modal.options.init()><div>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.DELETE_FILE_CONFIRMATION_MODAL.BODY\\' | translate}}</div><div class=e-delete-file-confirmation-name>{{modal.options.file.name}}</div></div><div class=modal-footer><button type=button class=\\\"btn btn-primary2\\\" ng-click=modal.options.cancel()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.BUTTONS.CANCEL\\' | translate}}</button> <button type=button class=\\\"btn btn-primary\\\" ng-click=modal.options.delete()>{{\\'PORTAL.ENTERPRISE.PATIENT_DEACTIVATION.DELETE_FILE_CONFIRMATION_MODAL.BUTTON\\' | translate}}</button></div></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-users-card/e-device-shipment/e-device-shipment.html\",\"<span ng-if=vm.device.shipment class=device-shipment-status><span class=device-shipment-not-delivered><img src=/assets/images/portal/user-profile/fulfilled.1eb47220.png ng-if=\\\"vm.shipment.status == vm.shipment_fulfilled_status\\\" alt={{this.shipment.status}} width=14 height=14 uib-popover-html=vm.shipmentInfo.popoverText(vm.shipment) popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-popup-close-delay=1000 class=device-shipment-is-processing> <img src=/assets/images/portal/user-profile/delivered.06100161.png ng-if=\\\"vm.shipment.status == vm.shipment_delivered_status\\\" alt={{this.shipment.status}} width=14 height=14 uib-popover-html=vm.shipmentInfo.popoverText(vm.shipment) popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-popup-close-delay=1000 class=device-shipment-is-processing> <img src=/assets/images/portal/user-profile/processing.6b034cf9.png ng-if=\\\"vm.shipment.status != vm.shipment_delivered_status && vm.shipment.status != vm.shipment_fulfilled_status\\\" alt={{this.shipment.status}} width=14 height=14 uib-popover-html=vm.shipmentInfo.popoverText(vm.shipment) popover-trigger=\\\"\\'focus mouseenter\\'\\\" popover-append-to-body=true popover-popup-close-delay=1000 class=device-shipment-is-processing> </span></span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-users-card/e-user-patient-review/e-user-patient-review.html\",\"<div><p>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.UNREAD.POPOVER_CONTEXT\\' | translate}}</p><br><button class=\\\"mark-as-reviewed btn btn-primary\\\" ng-click=\\\"vm.markAsReviewed($event, userProfile)\\\">{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.UNREAD.POPOVER_BUTTON\\' | translate}}</button></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-patients/e-users-card/e-users-no-ava-adherence-date/e-users-no-ava-adherence-date.html\",\"<span class=no-ava-adherence-date ng-switch=vm.messageStatus><span ng-switch-when=NO_MOBILE_PHONE class=no-mobile-phone>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_NO_DATE.NO_MOBILE_PHONE\\' | translate}} </span><span ng-switch-when=NEWLY_ENROLLED class=newly-enrolled>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_NO_DATE.NEWLY_ENROLLED\\' | translate}} </span><span ng-switch-when=ADHERENT class=adherent>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_NO_DATE.ADHERENT\\' | translate}} </span><span ng-switch-when=REMINDERS_PAUSED class=reminders-paused>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_NO_DATE.REMINDERS_PAUSED\\' | translate}} </span><span ng-switch-when=LAST_READING class=last-reading-age><span ng-if=vm.lastReadingLabel>{{vm.lastReadingLabel}}</span> <span ng-if=!vm.lastReadingLabel>{{\\'PORTAL.ENTERPRISE.PATIENT_REPORTING.AVA.ADHERENCE_ALERT_NO_DATE.NO_LAST_READING\\' | translate}}</span> </span></span>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-visualizer/e-patient-observation-form/e-patient-observation-form.html\",\"<div class=e-patient-observation-form><section class=observation-form><div ng-if=\\\"vm.observationReport.status === \\'COMPLETED\\'\\\" ta-bind ng-model=\\\"vm.observationReport.details || \\'-\\'\\\"></div><!--<unsaved-data-modal form=\\\"vm.ePatientObservationForm\\\"></unsaved-data-modal>--><form ng-if=\\\"vm.observationReport.status !== \\'COMPLETED\\' && vm.observationReport.service.name == \\'RPM\\'\\\" name=vm.ePatientObservationForm><div text-angular-toolbar class=toolbar name=toolbar></div><text-angular name=observationReportEditor ng-model=vm.observationReport.details_tobeadded add-text-at-cursor ta-target-toolbars=toolbar placeholder=\\\"Add a comment...\\\" data-ng-required=true ta-disabled=vm.disabled></text-angular><button id=save-btn class=\\\"btn btn-primary btn-small\\\" type=button tabindex=2 ng-click=\\\"vm.onSave(vm.observationReport, true)\\\" promise-btn=vm.submitPromise authorize=role:clinical auth-disabled=true><span class=auto-updating ng-if=!vm.isAutoUpdating>{{\\'GLOBAL.BUTTONS.SAVE\\' | translate}}</span> <span class=auto-updating ng-if=vm.isAutoUpdating>Saving...</span></button> <i class=info-link popover-placement=top uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.PHYSIOLOGICAL_MONITORING_SAVE_NOTE_INFO\\' | translate }}\\\" popover-trigger=\\\"\\'mouseenter\\'\\\"></i><p class=visualizer-hdr>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.HEADERS.PREVIOUS_NOTES\\' | translate}}</p><text-angular name=observationReportViewPrevious ng-model=vm.observationReport.details ta-disabled=true ta-toolbar=[]></text-angular></form><form ng-if=\\\"vm.observationReport.status !== \\'COMPLETED\\' && vm.observationReport.service.name != \\'RPM\\'\\\" name=vm.ePatientObservationForm><div text-angular-toolbar class=toolbar name=toolbar></div><text-angular name=observationReportEditor ng-model=vm.observationReport.details add-text-at-cursor ta-target-toolbars=toolbar ng-change=vm.onSave(vm.observationReport) ng-blur=\\\"vm.onSave(vm.observationReport, true)\\\" placeholder=\\\"Add a comment...\\\" data-ng-required=true ta-disabled=vm.disabled></text-angular><button id=save-btn class=\\\"btn btn-primary btn-small\\\" type=button tabindex=2 ng-click=\\\"vm.onSave(vm.observationReport, true)\\\" promise-btn=vm.submitPromise authorize=role:clinical auth-disabled=true><span class=auto-updating ng-if=!vm.isAutoUpdating>{{\\'GLOBAL.BUTTONS.SAVE\\' | translate}}</span> <span class=auto-updating ng-if=vm.isAutoUpdating>Saving...</span></button> <i class=info-link popover-placement=top uib-popover=\\\"{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT.BODY.SAVE_NOTE_INFO\\' | translate }}\\\" popover-trigger=\\\"\\'mouseenter\\'\\\"></i></form></section></div>\");\n$templateCache.put(\"app/components/portal/enterprise/e-template-builder/e-template-visualizer/e-template-timesheets/e-template-timesheets.html\",\"<div id=e-template-timesheets><h4>{{ vm.totalRPMSeconds | duration:\\'seconds\\':\\\"m \\'minutes\\'\\\" }} total {{vm.observationReport.service.name || \\'RPM\\'}} time for {{vm.reportPeriodTxt}}</h4><form name=timesheetForm ng-if=vm.isReportEditable class=top-label-form novalidate><div class=form-inputs-wrapper><div class=\\\"form-group btn-timesheet-submit\\\"><label>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.\\' + (vm.observationReport.service.name || \\'RPM\\') + \\'_TIME_SPENT\\' | translate}} [<span ng-class=\\\"{ \\'time-selection-error\\': vm.rpmTime && (vm.rpmTime < 1 || vm.rpmTime > 20) }\\\">1-20 minutes</span>] <i class=info-link title=\\\"{{vm.observationReport.service.name || \\'RPM\\'}} time spend - more information\\\" popover-placement=top uib-popover=\\\"Includes ALL time spent by clinical staff/physicians/other qualified healthcare professionals for remote physiologic monitoring treatment management services in a calendar month requiring interactive communication with the patient/caregiver.\\\" popover-trigger=\\\"\\'outsideClick\\'\\\"></i></label><div class=row><input type=number min=1 max=20 ng-model=vm.rpmTime onkeydown=\\\"return ![\\'e\\',\\'E\\',\\'+\\',\\'-\\'].includes(event.key)\\\" class=input-time-selection ng-focus=\\\"vm.rpmTime === vm.defaultRpmTime ? vm.rpmTime = null : null\\\"> <button qa-id=reportingSubmit authorize=role:clinical auth-disabled=true type=button class=\\\"btn btn-primary btn-save col-md-1\\\" ng-model=vm.rpmTime ng-click=vm.onSubmit() ng-disabled=\\\"!vm.rpmTime || vm.rpmTime < 1 || vm.rpmTime > 20\\\" promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.BUTTONS.SUBMIT\\' | translate }}</button> <button qa-id=reportingSubmitNext type=button class=\\\"btn btn-primary btn-save col-md-3\\\" ng-click=vm.onSubmit(true) ng-show=vm.hasNext() ng-disabled=\\\"!vm.rpmTime || vm.rpmTime < 1 || vm.rpmTime > 20\\\" promise-btn=vm.submitPromise>{{ \\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.BUTTONS.SUBMIT_AND_NEXT\\' | translate }}</button></div></div></div></form><table class=\\\"table activity-log\\\" us-spinner spinner-theme=black spinner-on=vm.showSpinner><thead class=thead><tr><th class=title>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.DATE\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.SUBMITTED_BY\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.PROVIDER\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.MINUTES_SUBMITTED\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.TOTAL_TIME\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.CPT_CODE\\' | translate}}</th><th>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.RPM_DATE\\' | translate}} <i class=info-link title=\\\"RPM Date - more information\\\" uib-popover=\\\"RPM time accrues across the full billable month, meaning CPT codes and dates of service can adjust as data is collected. Final data is not available until after the last day of the month.\\\" popover-trigger=\\\"\\'outsideClick\\'\\\" popover-placement=top></i></th></tr></thead><tbody ng-if=\\\"vm.timesheets.length > 0\\\"><tr ng-repeat=\\\"timesheet in vm.timesheetForDisplay track by $index\\\"><td class=nobr>{{timesheet.created_at | date:\\'M/d/yy\\'}}<br>{{timesheet.created_at | date:\\'h:mm a\\'}}</td><td>{{timesheet.submitted_by | providerName }}</td><td>{{timesheet.observation_report.patient_user_profile.providers[0] | providerName}}</td><td>{{ timesheet.min }}</td><td>{{ timesheet.totalAsMin }}</td><td><span ng-if=timesheet.cpt_code class=pill>{{timesheet.cpt_code}}</span></td><td><span>{{timesheet.date_of_service | date:\\'mediumDate\\'}}</span></td></tr></tbody><tbody ng-if=\\\"vm.timesheets.length === 0\\\"><tr><td>{{\\'PORTAL.ENTERPRISE.OBSERVATION_REPORT_ACTIVITY_LOG.FIELDS.NONE\\' | translate}}</td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table></div>\");}]);"],"file":"scripts/app-061fc3519f.9b4d71ee.js"}