{"version":3,"sources":["webpack:///app-3.14.0.js","webpack:///./src/common/AngularModule.ts","webpack:///./src/module/ui/partial/Tabs/Tabs.ts","webpack:///./src/module/core/service/NotificationService.ts","webpack:///./src/module/core/template/tabs-layout.tmpl","webpack:///./src/module/ui/partial/Tabs/Tabs.tmpl","webpack:///./src/module/ui/directive/AddChannel/AddChannel.ts","webpack:///./src/module/ui/directive/AddProgrammer/AddProgrammer.ts","webpack:///./src/module/ui/directive/Applications/Applications.ts","webpack:///./src/module/report/partial/ReportItem/ReportItem.tmpl","webpack:///./src/module/ui/directive/Certificates/Certificates.ts","webpack:///./src/module/data/service/TempPassService.ts","webpack:///./src/module/ui/directive/ComplexInput/ComplexInput.ts","webpack:///./src/module/admin/partial/AdminAdvanced/AdminAdvanced.ts","webpack:///./src/module/diff/directive/Diff/Diff.ts","webpack:///./src/module/mvpd/partial/MvpdProxiedMvpds/MvpdProxiedMvpds.ts","webpack:///./src/module/core/partial/Sidebar/Sidebar.ts","webpack:///./src/module/core/partial/Header/Header.ts","webpack:///./src/module/core/partial/Footer/Footer.ts","webpack:///./src/module/core/partial/Dashboard/Dashboard.ts","webpack:///./src/module/core/partial/ChangeLog/ChangeLog.ts","webpack:///./src/module/data/service/ManglerUtil.ts","webpack:///./src/module/ui/directive/ClientData/ClientData.ts","webpack:///./src/module/ui/directive/Manglers/Manglers.ts","webpack:///./src/module/ui/directive/OAuthConsumerCredentials/OAuthConsumerCredentials.ts","webpack:///./src/module/ui/directive/OAuth2ClientCredentials/OAuth2ClientCredentials.ts","webpack:///./src/module/ui/directive/OAuth2AccessToken/OAuth2AccessToken.ts","webpack:///./src/module/ui/directive/OAuthEndpoint/OAuthEndpoint.ts","webpack:///./src/module/ui/directive/PanelList/PanelList.ts","webpack:///./src/module/ui/directive/PlatformSwitcher/PlatformSwitcher.ts","webpack:///./src/module/ui/directive/SamlMetadataInfo/SamlMetadataInfo.ts","webpack:///./src/module/ui/directive/Searchbox/Searchbox.ts","webpack:///./src/module/ui/directive/UserMetadata/UserMetadata.ts","webpack:///./src/module/ui/directive/DurationInput/DurationInput.ts","webpack:///./src/module/core/template/layout.tmpl","webpack:///./src/index.js","webpack:///./src/module/admin/admin.ts","webpack:///./src/module/admin/partial/AdminDefaultMetadata/AdminDefaultMetadata.ts","webpack:///./src/module/admin/partial/AdminImport/AdminImport.ts","webpack:///./src/module/admin/partial/AdminInfo/AdminInfo.ts","webpack:///./src/module/admin/partial/AdminTmsIds/AdminTmsIds.ts","webpack:///./src/module/admin/partial/Maintenance/Maintenance.ts","webpack:///./src/module/admin/service/AdminService.ts","webpack:///./src/module/admin/partial/AdminInfo/AdminInfo.tmpl","webpack:///./src/module/admin/partial/AdminImport/AdminImport.tmpl","webpack:///./src/module/admin/partial/AdminAdvanced/AdminAdvanced.tmpl","webpack:///./src/module/admin/partial/Maintenance/Maintenance.tmpl","webpack:///./src/module/admin/partial/AdminTmsIds/AdminTmsIds.tmpl","webpack:///./src/module/admin/partial/AdminDefaultMetadata/AdminDefaultMetadata.tmpl","webpack:///./src/module/channel/channel.ts","webpack:///./src/module/channel/partial/ChannelList/ChannelList.ts","webpack:///./src/module/channel/partial/ChannelItem/ChannelItem.ts","webpack:///./src/module/channel/partial/ChannelItemBasic/ChannelItemBasic.ts","webpack:///./src/module/channel/partial/ChannelCertificates/ChannelCertificates.ts","webpack:///./src/module/channel/partial/ChannelSettings/ChannelSettings.ts","webpack:///./src/module/channel/partial/ChannelDomains/ChannelDomains.ts","webpack:///./src/module/channel/partial/ChannelIntegrations/ChannelIntegrations.ts","webpack:///./src/module/ui/directive/Certificates/Certificates.tmpl","webpack:///./src/module/channel/partial/ChannelApplications/ChannelApplications.ts","webpack:///./src/module/ui/directive/Applications/Applications.tmpl","webpack:///./src/module/channel/partial/ChannelCustomSchemes/ChannelCustomSchemes.ts","webpack:///./src/module/channel/partial/ChannelPermissions/ChannelPermissions.ts","webpack:///./src/module/channel/partial/ChannelItemBasic/ChannelItemBasic.tmpl","webpack:///./src/module/channel/partial/ChannelList/ChannelList.tmpl","webpack:///./src/module/channel/partial/ChannelItem/ChannelItem.tmpl","webpack:///./src/module/channel/partial/ChannelSettings/ChannelSettings.tmpl","webpack:///./src/module/channel/partial/ChannelCertificates/ChannelCertificates.tmpl","webpack:///./src/module/channel/partial/ChannelDomains/ChannelDomains.tmpl","webpack:///./src/module/channel/partial/ChannelIntegrations/ChannelIntegrations.tmpl","webpack:///./src/module/channel/partial/ChannelApplications/ChannelApplications.tmpl","webpack:///./src/module/channel/partial/ChannelCustomSchemes/ChannelCustomSchemes.tmpl","webpack:///./src/module/channel/partial/ChannelPermissions/ChannelPermissions.tmpl","webpack:///./src/module/feedback/feedback.ts","webpack:///./src/module/feedback/directive/Feedback/Feedback.ts","webpack:///./src/module/feedback/directive/Feedback/Feedback.tmpl","webpack:///./src/module/feedback/service/FeedbackService.ts","webpack:///./src/module/programmer/programmer.ts","webpack:///./src/module/programmer/partial/ProgrammerCertificates/ProgrammerCertificates.ts","webpack:///./src/module/programmer/partial/ProgrammerChannels/ProgrammerChannels.ts","webpack:///./src/module/programmer/partial/ProgrammerItem/ProgrammerItem.ts","webpack:///./src/module/programmer/partial/ProgrammerItemBasic/ProgrammerItemBasic.ts","webpack:///./src/module/programmer/partial/ProgrammerList/ProgrammerList.ts","webpack:///./src/module/programmer/partial/ProgrammerApplications/ProgrammerApplications.ts","webpack:///./src/module/programmer/partial/ProgrammerCustomSchemes/ProgrammerCustomSchemes.ts","webpack:///./src/module/programmer/partial/ProgrammerPermissions/ProgrammerPermissions.ts","webpack:///./src/module/programmer/partial/ProgrammerItemBasic/ProgrammerItemBasic.tmpl","webpack:///./src/module/programmer/partial/ProgrammerList/ProgrammerList.tmpl","webpack:///./src/module/programmer/partial/ProgrammerItem/ProgrammerItem.tmpl","webpack:///./src/module/programmer/partial/ProgrammerCertificates/ProgrammerCertificates.tmpl","webpack:///./src/module/programmer/partial/ProgrammerChannels/ProgrammerChannels.tmpl","webpack:///./src/module/programmer/partial/ProgrammerApplications/ProgrammerApplications.tmpl","webpack:///./src/module/programmer/partial/ProgrammerCustomSchemes/ProgrammerCustomSchemes.tmpl","webpack:///./src/module/programmer/partial/ProgrammerPermissions/ProgrammerPermissions.tmpl","webpack:///./src/module/diff/diff.ts","webpack:///./src/module/diff/directive/Diff/Diff.tmpl","webpack:///./src/module/diff/partial/Compare/Compare.ts","webpack:///./src/module/diff/partial/Review/Review.ts","webpack:///./src/module/diff/service/DiffService.ts","webpack:///./src/module/diff/partial/Compare/Compare.tmpl","webpack:///./src/module/diff/partial/Review/Review.tmpl","webpack:///./src/module/mvpd/mvpd.ts","webpack:///./src/module/mvpd/partial/MvpdEndpoint/MvpdEndpoint.ts","webpack:///./src/module/mvpd/partial/MvpdItem/MvpdItem.ts","webpack:///./src/module/mvpd/partial/MvpdItemBasic/MvpdItemBasic.ts","webpack:///./src/module/mvpd/partial/MvpdList/MvpdList.ts","webpack:///./src/module/mvpd/partial/MvpdSettings/MvpdSettings.ts","webpack:///./src/module/mvpd/partial/MvpdServerNameIndication/MvpdServerNameIndication.ts","webpack:///./src/module/mvpd/partial/MvpdItemBasic/MvpdItemBasic.tmpl","webpack:///./src/module/mvpd/partial/MvpdList/MvpdList.tmpl","webpack:///./src/module/mvpd/partial/MvpdItem/MvpdItem.tmpl","webpack:///./src/module/mvpd/partial/MvpdSettings/MvpdSettings.tmpl","webpack:///./src/module/mvpd/partial/MvpdEndpoint/MvpdEndpoint.tmpl","webpack:///./src/module/mvpd/partial/MvpdProxiedMvpds/MvpdProxiedMvpds.tmpl","webpack:///./src/module/mvpd/partial/MvpdServerNameIndication/MvpdServerNameIndication.tmpl","webpack:///./src/module/core/core.ts","webpack:///./src/module/core/interceptor/MaintenanceInterceptor.ts","webpack:///./src/module/core/interceptor/HttpExceptionHandler.ts","webpack:///./src/module/core/service/CertificateService.ts","webpack:///./src/module/core/service/DownloadService.ts","webpack:///./src/module/core/service/InitService.ts","webpack:///./src/module/core/service/NavService.ts","webpack:///./src/module/core/service/ResilienceService.ts","webpack:///./src/module/core/service/TooltipService.ts","webpack:///./src/module/core/service/UserService.ts","webpack:///./src/module/core/service/EnvironmentService.ts","webpack:///./src/module/data/data.ts","webpack:///./src/module/data/service/ConsoleUtils.ts","webpack:///./src/module/data/service/MvpdService.ts","webpack:///./src/module/data/service/MvpdProxyService.ts","webpack:///./src/module/data/service/MvpdGenericService.ts","webpack:///./src/module/data/service/ManglerService.ts","webpack:///./src/module/data/service/BulkService.ts","webpack:///./src/module/data/service/PushService.ts","webpack:///./src/module/data/service/TMSIdService.ts","webpack:///./src/module/data/service/CacheService.ts","webpack:///./src/module/data/service/ChannelService.ts","webpack:///./src/module/data/service/PlatformService.ts","webpack:///./src/module/data/service/ProgrammerService.ts","webpack:///./src/module/data/service/DataCollectorService.ts","webpack:///./src/module/data/service/LocalConfigurationService.ts","webpack:///./src/module/data/service/IntegrationService.ts","webpack:///./src/module/data/service/HistoryService.ts","webpack:///./src/module/data/service/ApplicationService.ts","webpack:///./src/module/data/interceptor/ConfigVersionInterceptor.ts","webpack:///./src/module/data/interceptor/CacheInterceptor.ts","webpack:///./src/module/data/interceptor/PushStatusInterceptor.ts","webpack:///./src/module/data/interceptor/RelatedDataInterceptor.ts","webpack:///./src/module/data/interceptor/ResilienceInterceptor.ts","webpack:///./src/module/data/interceptor/RetryableRequestInterceptor.ts","webpack:///./src/module/data/service/CertificateUtils.ts","webpack:///./src/module/data/service/CustomSchemeService.ts","webpack:///./src/module/data/service/ReportService.ts","webpack:///./src/module/integration/integration.ts","webpack:///./src/module/integration/partial/IntegrationEndpoint/IntegrationEndpoint.ts","webpack:///./src/module/integration/partial/IntegrationItem/IntegrationItem.ts","webpack:///./src/module/integration/partial/IntegrationItemBasic/IntegrationItemBasic.ts","webpack:///./src/module/integration/partial/IntegrationList/IntegrationList.ts","webpack:///./src/module/integration/partial/IntegrationSettings/IntegrationSettings.ts","webpack:///./src/module/integration/partial/NewIntegration/NewIntegration.ts","webpack:///./src/module/integration/partial/IntegrationItemBasic/IntegrationItemBasic.tmpl","webpack:///./src/module/integration/partial/IntegrationList/IntegrationList.tmpl","webpack:///./src/module/core/template/basic-layout.tmpl","webpack:///./src/module/integration/partial/IntegrationItem/IntegrationItem.tmpl","webpack:///./src/module/integration/partial/IntegrationSettings/IntegrationSettings.tmpl","webpack:///./src/module/integration/partial/IntegrationEndpoint/IntegrationEndpoint.tmpl","webpack:///./src/module/integration/partial/NewIntegration/NewIntegration.tmpl","webpack:///./src/module/security/security.ts","webpack:///./src/module/security/interceptor/CsrfTokenInterceptor.ts","webpack:///./src/module/security/interceptor/AuthorizationInterceptor.ts","webpack:///./src/module/security/service/InputEscapeService.ts","webpack:///./src/module/filters/filters.ts","webpack:///./src/module/filters/filter/BooleanFilter.ts","webpack:///./src/module/filters/filter/CountFilter.ts","webpack:///./src/module/filters/filter/HumanReadableFilter.ts","webpack:///./src/module/filters/filter/HumanReadableIdFilter.ts","webpack:///./src/module/filters/filter/IdToDisplayNameFilter.ts","webpack:///./src/module/filters/filter/InitialsFilter.ts","webpack:///./src/module/filters/filter/IntegrationParentsFilter.ts","webpack:///./src/module/filters/filter/MetadataFilter.ts","webpack:///./src/module/filters/filter/OlcaKeyMappingFilter.ts","webpack:///./src/module/filters/filter/OlcaTypeMappingFilter.ts","webpack:///./src/module/filters/filter/PropertyAlias.ts","webpack:///./src/module/filters/filter/SquashFilter.ts","webpack:///./src/module/filters/filter/TimeFilter.ts","webpack:///./src/module/filters/filter/TTLFilter.ts","webpack:///./src/module/ui/ui.ts","webpack:///./src/module/ui/directive/ComplexInput/ComplexInput.tmpl","webpack:///./src/module/ui/directive/ImagePlaceholder/ImagePlaceholder.ts","webpack:///./src/module/ui/directive/ImagePlaceholder/ImagePlaceholder.tmpl","webpack:///./src/module/ui/directive/OAuthConsumerCredentials/OAuthConsumerCredentials.tmpl","webpack:///./src/module/ui/directive/OAuth2ClientCredentials/OAuth2ClientCredentials.tmpl","webpack:///./src/module/ui/directive/OAuth2AccessToken/OAuth2AccessToken.tmpl","webpack:///./src/module/ui/directive/OAuthEndpoint/OAuthEndpoint.tmpl","webpack:///./src/module/ui/directive/PanelList/PanelList.tmpl","webpack:///./src/module/ui/directive/PanelList/TableList.tmpl","webpack:///./src/module/ui/directive/PlatformSwitcher/PlatformSwitcher.tmpl","webpack:///./src/module/ui/directive/SamlMetadataInfo/SamlMetadataInfo.tmpl","webpack:///./src/module/ui/directive/Searchbox/Searchbox.tmpl","webpack:///./src/module/ui/directive/UserMetadata/UserMetadata.tmpl","webpack:///./src/module/ui/directive/DurationInput/DurationInput.tmpl","webpack:///./src/module/ui/directive/AddChannel/AddChannel.tmpl","webpack:///./src/module/ui/directive/AddProgrammer/AddProgrammer.tmpl","webpack:///./src/module/ui/directive/Applications/Add/AddApplication.ts","webpack:///./src/module/ui/directive/Applications/View/ViewApplication.ts","webpack:///./src/module/ui/directive/Certificates/Add/AddCertificate.ts","webpack:///./src/module/ui/directive/Certificates/Edit/EditCertificate.ts","webpack:///./src/module/ui/directive/Certificates/Delete/DeleteCertificate.ts","webpack:///./src/module/ui/directive/CustomSchemes/CustomSchemes.ts","webpack:///./src/module/ui/directive/CustomSchemes/CustomSchemes.tmpl","webpack:///./src/module/ui/directive/Permissions/Permissions.ts","webpack:///./src/module/ui/directive/Permissions/Permissions.tmpl","webpack:///./src/module/ui/directive/Permissions/Add/AddPermission.ts","webpack:///./src/module/report/report.ts","webpack:///./src/module/report/partial/ReportItem/ReportItem.ts","webpack:///./src/module/report/reportlist.ts","webpack:///./src/app.ts","webpack:///./src/module/core/Forbidden.ts","webpack:///./src/module/core/partial/Header/Header.tmpl","webpack:///./src/module/core/partial/Sidebar/Sidebar.tmpl","webpack:///./src/module/core/partial/Footer/Footer.tmpl","webpack:///./src/module/core/template/forbidden.tmpl","webpack:///./src/module/core/partial/Dashboard/Dashboard.tmpl","webpack:///./src/module/core/partial/ChangeLog/ChangeLog.tmpl","webpack:/// .*\\.html","webpack:///./src/index.html","webpack:///./src/module/ui/directive/Applications/Add/AddApplication.html","webpack:///./src/module/ui/directive/Applications/View/ViewApplication.html","webpack:///./src/module/ui/directive/Certificates/Add/AddCertificate.html","webpack:///./src/module/ui/directive/Certificates/Delete/DeleteCertificate.html","webpack:///./src/module/ui/directive/Certificates/Edit/EditCertificate.html","webpack:///./src/module/ui/directive/ClientData/ClientData.html","webpack:///./src/module/ui/directive/ClientData/ClientDataBasic.html","webpack:///./src/module/ui/directive/Manglers/Manglers.html","webpack:///./src/module/ui/directive/Manglers/ManglersAuthnBasic.html","webpack:///./src/module/ui/directive/Manglers/ManglersAuthzBasic.html","webpack:///./src/module/ui/directive/Permissions/Add/AddPermission.html","webpack:///./src/module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html","webpack:///./src/module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html","webpack:///./src/module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html","webpack:///./src/module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html","webpack:///./src/module/ui/template/endpoint/authenticationProviderConfiguration-rules.html","webpack:///./src/module/ui/template/endpoint/authenticationProviderConfiguration-settings.html","webpack:///./src/module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html","webpack:///./src/module/ui/template/endpoint/authorizationProviderConfiguration-rules.html","webpack:///./src/module/ui/template/endpoint/authorizationProviderConfiguration-settings.html","webpack:///./src/module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html","webpack:///./src/module/ui/template/endpoint/logoutProviderConfiguration-certificates.html","webpack:///./src/module/ui/template/endpoint/logoutProviderConfiguration-rules.html","webpack:///./src/module/ui/template/endpoint/logoutProviderConfiguration-settings.html","webpack:///./src/module/ui/template/renderer/IntegrationRenderer.html","webpack:///./src/module/ui/template/renderer/LiveIntegrationRenderer.html","webpack:///./src/module/ui/template/renderer/MvpdRenderer.html","webpack:///./src/module/ui/template/renderer/ProgrammerRenderer.html","webpack:///./src/module/ui/template/reports/AuthNReport.html","webpack:///./src/module/ui/template/reports/AuthZReport.html","webpack:///./src/module/ui/template/reports/SSOReport.html","webpack:///./src/static/res/swagger/o2c.html"],"names":["webpackJsonp","module","exports","__webpack_require__","AngularModuleConfig","options","targetClass","prototype","ngRef","angular","moduleName","dependencies","config","run","Object","defineProperty","value","TabsCtrl","$scope","$state","States","tabs","onTabClick","event","stopImmediatePropagation","stopPropagation","$inject","_","Notification","title","message","this","getTitle","getMessage","Notifications","confirmDeleteTMSID","confirmDeleteDefaultMetadata","confirmDeleteDomain","confirmDeleteSniHostname","NotificationModalCtrl","$sce","$uibModalInstance","data","trustAsHtml","type","ok","close","cancel","NotificationService","$rootScope","$injector","getConfirmationFromUser","notification","showDialog","warn","showError","error","persist","success","warnModal","removeError","active","errorWithHelperLink","link","showErrorWithHelperLink","isObject","list","modalData","assign","templateUrl","controller","resolve","backdrop","get","open","ApcAddChannelDirective","restrict","replace","scope","programmer","template","ApcAddChannelCtrl","UniqueChannelValidator","require","elm","attrs","ctrl","field","$observe","toString","$validate","$asyncValidators","uniqueChannel","modelValue","viewValue","deferred","$q","defer","reject","ChannelService","getAll","then","response","entities","filter","channel","entityData","toLowerCase","length","promise","ChannelIdValidator","$validators","validChannelId","indexOf","ApcAddChannelModalCtrl","$http","Config","ProgrammerService","DataCollectorService","form","programmerSelectorDisabled","contentProvider","getNewContentProviderModel","serviceProvider","getNewServiceProviderModel","requiredErrorMessage","channelIdErrorMessage","selectedProgrammer","getProgrammers","searchTerm","getPage","createChannel","programmerId","key","channelId","channelDisplayName","id","serviceProviders","displayName","contentProviders","push","createEntity","updateEntity","defaults","cache","put","configVersion","go","ChannelItemData","name","$uibModal","UserService","hasWriteRole","hasRole","openModal","ApcAddProgrammerDirective","ApcAddProgrammerCtrl","ProgrammerIdValidator","validProgrammerId","UniqueProgrammerValidator","uniqueProgrammer","ApcAddProgrammerModalCtrl","getNewProgrammerModel","programmerIdErrorMessage","createProgrammer","programmerDisplayName","ProgrammerItemData","adobeOnly","ApcApplicationsDirective","entity","platforms","applications","applicationTypes","ApplicationsCtrl","DownloadService","newlyAddedAppIds","addPlatformReference","item","removePlatformReference","trim","getPlatformIdsForAllPlatforms","platformIds","_i","_a","keys","platformId","init","forEach","application","isEmpty","map","addAppReferenceAtProgrammerLevel","appReference","isNull","relatedData","write","openAddModal","result","openViewModal","selectedApplication","addApplication","viewApplication","downloadStatement","onErrorCallback","downloadWithErrorCallback","API_ROOT","platformDetails","isNewlyAddedApp","ApcCertificatesDirective","certificates","encryptionData","CertificatesCtrl","CertificateUtils","EncryptionLevel","userMetadataEncryptionCertificateId","getUserMetadataEncryptionCertificateId","level","channelUserMetadataEncryptionCertificate","isSet","CHANNEL","PROGRAMMER","programmerUserMetadataEncryptionCertificate","certificateKey","isString","index","copy","enabled","openEditModal","editModal","selectedCertificateKey","openDeleteModal","deleteModal","addCertificate","editCertificate","deleteCertificate","isEncryptionCertificate","getTooltipMessageFor","action","util_1","TempPassService","getTempPassMap","pipelineStageListAuthZ","tempPassMap","isNullOrUndefined","pipelineArray","JSON","stringify","match","i","tempPassConfig","tempPassDuration","tempPassMaxResources","maxResources","tempPassIdentifyingField","identifyingField","ApcComplexInputDirective","property","readOnly","inheritData","selected","ApcComplexInputCtrl","modal","ApcComplexInputModalCtrl","$filter","fieldName","propertyName","propertyType","integrationPropertiesStartIndex","newEmptyPropertyCreated","levelData","warning","errors","isPropertyMapType","isPropertyInherited","propertyIndex","propertyKeyAlreadyExists","propertyKey","properties","createPropertiesArrayFromData","propertiesArray","propertyKeyInDataMap","hasOwnProperty","propertyValueInDataMap","propertyValueInDataArray","createPropertiesArray","inheritedPropertiesArray","levelPropertiesArray","concat","createNewEmptyProperty","newEmptyProperty","onAddNewProperty","splice","onRemoveProperty","tooltip","$","remove","computeErrorStatusForInputField","inputValue","inputField","jsonValue","parse","updateErrorStatusForProperty","propertyKeyError","propertyValueError","propertyKeyUniqueError","onSaveProperties","newPropertyKey","newPropertyValue","onCancel","dismiss","computeValueColumnSize","MaintenanceModalCtrl","$window","label","placeholder","AdminAdvancedCtrl","isMaintenanceActive","storedModelSerialIds","AdminService","CsrfTokenInterceptor","FileUploader","CacheService","TooltipService","headers","CSRF_TOKEN_KEY","getToken","uploader","url","onSuccessItem","file","restoreMessage","restoredModelSerialId","nrKeysRestored","confirm","reload","modelSerialIdToDump","modelSerialIdToDelete","activateMaintenance","statusMessage","appLoading","deactivateMaintenance","restoreDump","confirmation","reset","uploadAll","dumpModelSerialId","dumpData","dumpRepository","deleteDataForModel","deleteDataForRunningModel","getConsoleInfo","runningModelSerialId","modelSerialId","resetSyncedConfigVersion","forceApigeeResync","forcePushConfig","getTooltips","tooltips","ACTIONS","adminAdvanced","ApcDiffDirective","sharing","typeFilter","nameFilter","ApcDiffCtrl","selectedEntityFilter","selectedNameFilter","defaultFilter","all","extractEntityNames","entityDifferences","entityType","entityKey","split","entityName","extractEntityTypes","compareEntitiesWithFilter","entity1","entity2","name1","name2","localeCompare","getValuesFromMap","sort","entityTypesValues","entityNames","entityNamesValues","filterByEntityType","entityTypeFilter","filterByEntityName","entityNameFilter","isVisible","diffItem","shareDiff","location","href","encodeURIComponent","isDefined","ProxiedMvpdRequestorsModalCtrl","requestors","search","resetSearch","onClose","MvpdProxiedMvpdsCtrl","SearchEvent","originalProxiedMvpds","related","proxiedMvpds","filteredProxiedMvpds","pagination","currentPage","pageSize","PAGE_SIZE","onPageChange","startIndex","stopIndex","pageData","slice","$on","SEARCH","ev","RESET","proxiedMvpd","serviceProviderIds","SidebarCtrl","navItems","isOpen","showPush","getStoredData","getScope","$watch","newValue","toggleIcon","toggleSidebar","addClass","removeClass","on","innerWidth","$apply","off","HeaderCtrl","EnvironmentService","user","getUserData","getWorkspaceMode","advancedWorkspaceEnabled","enableBasicWorkspace","enableAdvancedWorkspace","environments","getEnvironments","identifyCurrentEnvironment","selectedEnvironment","getSelectedEnvironment","FooterCtrl","ncyBreadcrumbIgnore","currentYear","Date","getFullYear","hasData","DashboardCtrl","HistoryService","latestChanges","serviceProviderList","adminOnly","integrationsColumns","sortable","sorted","sortAsc","sortField","class","compareConfigs","configA","configB","configurationSaveInformation","configurationVersion","Compare","parentState","Dashboard","getSelected","onLiveIntegrationClick","ChannelIntegrations","exportConfiguration","change","changeLog","tableListElement","document","getElementById","window","scrollTo","scrollY","offsetHeight","ChangelogCtrl","$timeout","history","highlight","configurationInformationList","historyCount","count","loadingTimeout","loading","History","exportZipConfiguration","ManglerUtil","BulkService","propertyList","zippedPropertyList","processManglers","manglerList","entityManglers","manglerChain","forIn","manglerId","mangler","ManglerItem","manglerInfo","setInfo","processTTL","ttl","asString","days","Math","floor","secondsRemainder","hours","minutes","seconds","getPropertyList","getMandatoryManglerProperties","integration","_this","types","configuration","default","propData","inheritTree","owner","authenticationProviderConfiguration","authorizationProviderConfiguration","logoutProviderConfiguration","getBulk","each","manglers","inheritLevel","itemManglers","itemConfig","extend","union","inProps","outProps","uniqBy","zipObject","omit","finally","ManglerItemOperation","AUTHENTICATION","AUTHORIZATION","LOGOUT","ANY","ManglerItemPhase","REQUEST","RESPONSE","TOKEN","ManglerItemProtocol","REST","SAML","OAUTH","bucketName","bucket","SAML_REQUEST_MANGLER","operation","protocol","phase","SAML_RESPONSE_MANGLER","SAML_REQUEST_IDP_INITIATED","SAML_RESPONSE_IDP_INITIATED","REST_AUTHORIZATION_REQUEST_MANGLER","REST_AUTHORIZATION_RESPONSE_MANGLER","AUTHENTICATION_TOKEN_MANGLER","AUTHORIZATION_TOKEN_MANGLER","SHORT_AUTHORIZATION_TOKEN_MANGLER","RESOURCE_AUTHORIZATION_REQUEST","RESOURCE_PREFLIGHT_AUTHORIZATION_REQUEST","AUTHORIZATION_REQUEST","OAUTH2_AUTHORIZATION_CODE_REQUEST_MANGLER","OAUTH2_ACCESS_TOKEN_REQUEST_MANGLER","OAUTH2_LOGOUT_REQUEST_MANGLER","XACML20_REQUEST_MANGLER","info","requirement","requirementType","configurationProperties","Operation","Phase","Protocol","ApcClientDataDirective","element","attributes","allowedList","inheritPath","ApcClientDataCtrl","InputEscapeService","clientDataTooltips","CLIENT_DATA","clientData","getTooltip","fieldInvalidOrNull","$invalid","addon","booleanSelectValues","clear","clearBoolean","deleteProperty","hideProperty","added","addProperty","removeIfNullOrInvalid","clientDataForm","isFieldInvalid","$dirty","getProperties","onNumberKeyPress","keyCode","preventDefault","inheritChain","j","inheritClientData","inheritValue","target","useInheritTemplate","escapeHtml","inheritanceTemplate","inheritTreeData","inheritLayerName","inheritLayerValue","style","inherited","padding","inheritEntity","k","infoTooltip","ApcManglersDirective","ApcManglersCtrl","manglerTooltips","MANGLERS","manglerid","manglerForm","isBoolean","getPropsByPhase","props","selectPhase","selectedPhase","getInheritedTooltip","substr","newProps","prop","ApcOauthConsumerCredentialsDirective","ApcOauthConsumerCredentialsCtrl","DOMAIN_MODELS","oAuthConsumerCredentials","ApcOauth2ClientCredentialsDirective","ApcOauth2ClientCredentialsCtrl","oAuth2ClientCredentials","ApcOAuth2AccessTokenDirective","ApcOAuth2AccessTokenCtrl","oAuth2Endpoint","ApcOauthEndpointDirective","ApcOauthEndpointCtrl","oAuthEndpoint","ApcPanelListDirective","attr","usePanel","panelTitle","itemRenderer","columns","service","onItemClick","fetchRelated","ApcPanelListCtrl","ResilienceService","updateData","sortOrder","sortingColumn","onColumnSort","column","$broadcast","onSearch","onRowClick","onSearchReset","payload","isDegraded","getResilienceState","ApcPlatformSwitcherDirective","transclude","platformList","selectedPlatform","onChange","ApcPlatformSwitcherCtrl","$element","$attrs","getOveridedStatus","platformConfigurations","platform","generateManglerProps","getPlatformIndex","overridedManglers","extractOverridedMenglersForPlatform","find","enabledPlatformServices","platformConfiguration","platformIndex","setPlatformIconAndTooltip","icon","isOverided","selectPlatform","ApcSamlMetadataInfoDirective","ApcSamlMetadataInfoCtrl","parseMetadata","metadata","samlMetadataInfo","ApcSearchboxDirective","searchDelay","realTime","onReset","customId","ApcSearchboxCtrl","searchTimeout","submitSearch","onKeyPress","onKeyUp","CLEAR","ApcUserMetadataDirective","localConf","ApcUserMetadataCtrl","USER_METADATA","userMetadata","defaultMetadataKeys","changedKeys","userMetadataComponentOpen","hasErrors","encryptionRequired","userMetadataKey","disableUserMetadataComponent","getDefaultKeyDescription","squashInheritedUserMetadata","userMetadataMap","inheritedUserMetadataArray","userMetadataKeys","inheritedUserMetadata","encrypted","description","squashDefaultUserMetadata","defaultMetadataMap","createUserMetadataMap","userMetadataMapIntegrationLevel","userMetadataKeyConfigurations","onChangeUserMetadata","changedUserMetadata","defaultMetadataKey","ApcDurationInputCtrl","processedTTL","daysPlaceholder","hoursPlaceholder","minutesPlaceholder","secondsPlaceholder","makeValid","number","maxValue","newTime","ApcDurationInputDirective","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0__app_less__","__WEBPACK_IMPORTED_MODULE_1__module_admin_admin__","n","__WEBPACK_IMPORTED_MODULE_2__module_channel_channel__","__WEBPACK_IMPORTED_MODULE_3__module_feedback_feedback__","__WEBPACK_IMPORTED_MODULE_4__module_programmer_programmer__","__WEBPACK_IMPORTED_MODULE_5__module_diff_diff__","__WEBPACK_IMPORTED_MODULE_6__module_mvpd_mvpd__","__WEBPACK_IMPORTED_MODULE_7__module_core_core__","__WEBPACK_IMPORTED_MODULE_8__module_data_data__","__WEBPACK_IMPORTED_MODULE_9__module_integration_integration__","__WEBPACK_IMPORTED_MODULE_10__module_security_security__","__WEBPACK_IMPORTED_MODULE_11__module_filters_filters__","__WEBPACK_IMPORTED_MODULE_12__module_ui_ui__","__WEBPACK_IMPORTED_MODULE_13__module_report_report__","__WEBPACK_IMPORTED_MODULE_14__app_ts__","X2JS","jQuery","URI","CoreModule","AdminModule","DataModule","FiltersModule","ChannelModule","FeedbackModule","DiffModule","ProgrammerModule","MvpdModule","IntegrationModule","SecurityModule","UIModule","ReportModule","App","bootstrap","r","__decorate","decorators","desc","d","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","AngularModule_1","AdminAdvanced_1","AdminDefaultMetadata_1","AdminImport_1","AdminInfo_1","AdminTmsIds_1","Maintenance_1","AdminAdvanced_2","AdminService_1","Tabs_1","MaintenanceCtrl","AdminTmsIdsCtrl","AdminInfoCtrl","AdminImportCtrl","AdminDefaultMetadataCtrl","$stateProvider","state","Admin","abstract","ncyBreadcrumb","AdminImport","AdminAdvanced","AdminTmsIds","AdminDefaultMetadata","views","page@Base","tabs@Base.Admin","tabContent@Base.Admin","consoleInfo","parent","getStoredModelSerialIds","maintenanceMode","Maintenance","maintenanceData","tmsIdsList","TMSIdService","getTmsIdsList","localConfigurationData","LocalConfigurationService","getLocalConfiguration","NotificationService_1","createDefaultMetadataKeysArray","defaultMetadataKeysMap","defaultMetadataKeysArray","key1","key2","collector","createNewEmptyDefaultMetadataKey","newDefaultMetadataKey","newDefaultMetadataKeyAdded","onAddNewDefaultMetadataKey","resetNewDefaultMetadataKey","keyNameInput","$setPristine","addNewDefaultMetadataKey","newDefaultMetadataKeyFormHasError","newKeyName","onChangeDefaultMetadataKey","defaultMetadataKeyName","valueOfChangedKey","removeDefaultMetadataKey","equals","userDecisionToDelete","isNewDefaultMetadataKeyNameEmpty","isNewDefaultMetadataKeyNameUnique","PushStatusInterceptor","HttpExceptionHandler","RetryableRequestInterceptor","trimmingInfo","configUpgrade","fileName","chooseFile","input","files","pullFromCore","pullConfigurationConfirmation","exportLatestJson","exportLatestZip","reviewChanges","$valid","formData","FormData","append","method","Content-Type","status","pushChanges","modelUpgradeInformation","trimmed","diffData","completeDiffUUID","exceptionType","additionalInfo","exceptionMessage","responseError","downloadCompleteDiff","download","adminImpex","coreData","getCoreInfo","coreInfo","configurationInfo","coreVersion","coreModelId","getSyncedCoreConfigurationVersion","syncedConfigurationVersion","adminInfo","consoleClientVersion","ConsoleUtils","tmsidWatcher","rootEntityIds","createTmsIdsList","selectedTmsId","TMSID_DEFAULT_VALUE","onChangeTmsIdMap","tmsIdsArray","tmsidmap","getMVPDTMSIdMap","mapping","selectedTmsIdMap","createTmsIdsArray","isResourceNameInputEmpty","newTmsId","resourceName","isResourceIdInputEmpty","resourceId","isResourceNameUnique","newTmsIdFormHasError","createNewEmptyTmsId","newTmsIdAdded","onAddNewTmsId","onRemoveTmsId","tmsIdIndex","onResetNewTmsId","onSaveNewTmsId","resourceNameString","resourceIdString","isAdmin","ignoreError","post","ChannelList_1","ChannelItem_1","ChannelItemBasic_1","ChannelCertificates_1","ChannelSettings_1","ChannelDomains_1","ChannelIntegrations_1","Certificates_1","ChannelApplications_1","Applications_1","ChannelCustomSchemes_1","ChannelPermissions_1","ChannelListCtrl","ChannelItemCtrl","ChannelItemBasicCtrl","ChannelCertificatesCtrl","ChannelSettingsCtrl","ChannelDomainsCtrl","ChannelIntegrationsCtrl","ChannelApplicationsCtrl","ChannelCustomSchemesCtrl","ChannelPermissionsCtrl","basicView","Channel","ChannelList","onEnter","searchActive","onExit","newProviders","getNewProviders","ChannelItem","$stateParams","getItem","tabs@Base.Channel.Item","ChannelSettings","ChannelCertificates","ChannelDomains","ChannelApplications","customSchemes","ChannelCustomSchemes","ChannelPermissions","tabContent@Base.Channel.Item","entityItemBasic@Base.Channel.Item","PlatformService","getPlatformDetails","channelCertificates","CertificateService","parseCertificates","programmerCertificates","programmerResponse","mvpdList","idList","integrations","integrationList","values","ApplicationService","getAllChannelApps","getApplicationTypes","basicWorkspaceEnabled","onMvpdClick","mvpd","integrationId","IntegrationItemData","getSerialNumberFor","certificateId","certificateInfo","serialNumber","programmerCertificatesComponentOpen","oldValue","trackingServerSchema","rsidMappingTemplate","rsidConfirmationMarker","analyticsConfigOpen","notAdmin","notInternalUser","ac","analyticsConfigs","regex","newDomainForm","removeDomain","domain","size","domains","createEmptyDomain","domainName","idpInitiated","newDomain","newDomainAdded","addNewDomainButtonClicked","resetNewDomain","genericDomainExists","subdomain","subdomainElements","reverse","counter","isDomainValid","saveDomain","domainForm","getEnabled","getDomains","Feedback_1","FeedbackService_1","FeedbackService","directive","ApcFeedbackDirective","ApcFeedbackCtrl","fn","opened","screenshotMode","invalidFile","resetForm","screenshotData","feedbackForm","toggleFeedbackForm","addEventListener","closeFeedbackFormIfClickedOutside","feedbackFormElement","clickedElementOrParentOfIt","feedbackFormRemainsOpen","parentNode","removeEventListener","submit","send","updatePreview","reader","FileReader","onload","e","readAsDataURL","ProgrammerCertificates_1","ProgrammerChannels_1","ProgrammerItem_1","ProgrammerItemBasic_1","ProgrammerList_1","ProgrammerApplications_1","ProgrammerCustomSchemes_1","ProgrammerPermissions_1","ProgrammerCertificatesCtrl","ProgrammerChannelsCtrl","ProgrammerItemCtrl","ProgrammerItemBasicCtrl","ProgrammerListCtrl","ProgrammerApplicationsCtrl","ProgrammerCustomSchemesCtrl","ProgrammerPermissionsCtrl","Programmer","ProgrammerList","programmerList","newProgrammers","getNewProgrammers","ProgrammerItem","tabs@Base.Programmer.Item","ProgrammerCertificates","ProgrammerChannels","ProgrammerApplications","ProgrammerCustomSchemes","ProgrammerPermissions","tabContent@Base.Programmer.Item","entityItemBasic@Base.Programmer.Item","getAllProgrammerApps","roles","isSortAsc","a","b","onChannelClick","Diff_1","Compare_1","Review_1","DiffService_1","Diff_2","DiffService","CompareCtrl","ReviewCtrl","params","compareData","getCompareData","filters","Review","PushService","getDiffData","MvpdEndpoint_1","MvpdItem_1","MvpdItemBasic_1","MvpdList_1","MvpdSettings_1","MvpdProxiedMvpds_1","MvpdProxiedMvpds_2","MvpdServerNameIndication_1","MvpdEndpointCtrl","MvpdItemCtrl","MvpdItemBasicCtrl","MvpdListCtrl","MvpdSettingsCtrl","MvpdServerNameIndicationCtrl","endpointsData","authnEndpointKeys","authenticationProviderConfigs","authzEndpointKeys","authorizationProviderConfigs","logoutEndpointKeys","logoutProviderConfigs","endpointKeys","authn","endpoint","authz","logout","ManglerService","getManglerList","Mvpd","MvpdList","MvpdGenericService","MvpdItem","mvpdId","selectedAuthnEndpointKey","selectedAuthzEndpointKey","tabs@Base.Mvpd.Item","MvpdItemData","MvpdSettings","MvpdEndpoint","highlightOn","endpointType","selectedEndpoint","MvpdServerNameIndication","isProxy","MvpdProxiedMvpds","tabContent@Base.Mvpd.Item","entityItemBasic@Base.Mvpd.Item","activeEndpointTab","only","endpointData","endpointFetchData","endpointTabContent@Base.Mvpd.Item.Endpoint","endpointTypeValue","TempPassService_1","selectEndpoint","endpointId","endpointIndex","current","manglerData","noData","isSaml","pipelineStageList","PIPELINE_AUTHORIZATION","tmsIdMap","mvpdTMSIdMap","samlInfoTooltips","generalTooltips","samlTooltips","samlAuthenticationProviderConfiguration","oAuthTooltips","oAuthAuthenticationProviderConfiguration","oAuth2Tooltips","oAuth2AuthenticationProviderConfiguration","oAuth2EndpointTooltips","authNAllTooltips","authNAllAuthenticationProviderConfiguration","samlAuthorizationProviderConfiguration","oAuthAuthorizationProviderConfiguration","oAuth2AuthorizationProviderConfiguration","restTooltips","restAuthorizationProviderConfiguration","soapTooltips","soapAuthorizationProviderConfiguration","authZAllTooltips","authZAllAuthorizationProviderConfiguration","preFlightTooltips","preFlightConfiguration","dosProtectionTooltips","dosProtectionConfiguration","tempPassTooltips","tempPassConfiguration","samlLogoutProviderConfiguration","oAuth2RedirectLogoutProviderConfiguration","authnEndpoints","authnEndpointsData","keyBy","authnEndpoint","authenticationProviderType","selectedAuthnEndpoint","authnSelectorDisabled","authzEndpoints","authzEndpointsData","authzEndpoint","authorizationProviderType","preFlightSupport","dosProtection","dosProtectionEnabled","selectedAuthzEndpoint","authzSelectorDisabled","updateEndpoint","transitionTo","inherit","notify","clientDataAllowedList","authnInheritTree","authzInheritTree","authnManglerData","authzManglerData","clientDataOpen","hasClientData","newHostnameForm","removeHostname","sni","serverNameIndication","createEmptyHostname","hostname","newHostname","newSniAdded","addNewSniButtonClicked","resetnewHostname","genericHostnameExists","isHostnameValid","saveHostname","hostnameForm","MaintenanceInterceptor_1","HttpExceptionHandler_1","CertificateService_1","DownloadService_1","InitService_1","NavService_1","ResilienceService_1","TooltipService_1","UserService_1","Sidebar_1","Header_1","Footer_1","Dashboard_1","ChangeLog_1","NotificationService_2","EnvironmentService_1","InitService","NavService","constant","Base","enableNav","Intro","Forbidden","Integration","IntegrationList","IntegrationItem","IntegrationSettings","IntegrationEndpoint","IntegrationNew","ReportAuthnData","overrideDisplayName","ReportAuthzData","ReportSSOData","$provide","$httpProvider","factory","MaintenanceInterceptor","getInstance","interceptors","maintenanceMessage","forbidden","isRetryableRequest","when","retryableRequest","retry","retryLimitNotReached","retryCount","cachedData_1","certificate","toReturn","base64Certificate","parseCertificate","pemCertificate","getTime","hashCertificate","iframe","createElement","display","body","appendChild","src","ajax","Accept","xhrFields","responseType","filename","getResponseHeader","URL","createObjectURL","click","revokeObjectURL","initConsole","getLatestActivatedConfigVersion","getEntityTypeMappings","getPropertyNameMappings","results","entityTypeMappings","propertyNameMappings","getAvailableNavigationStates","getProcessedAvailableStates","availableStates","stateObject","resilienceState","troubleshootingLink","setResilienceState","getHttpServiceCache","removeAll","getTroubleshootingLink","$log","$cookies","userRoles","context","$new","userProfile","loggedIn","firstName","lastName","email","checkAuthentication","log","csrfToken","getParsedProfile","getParsedRoles","grantedAuthorities","setToken","getUserRoles","login","loginRedirectUri","isLoggedIn","setAuthorizationCodeUrl","authorizationCodeUrl","query","redirectUri","redirect_uri","redirectQuery","redirect","role","userData","first_name","last_name","authority","currentBaseLocation","ConsoleUtils_1","ManglerUtil_1","ManglerUtil_2","MvpdService_1","MvpdProxyService_1","MvpdGenericService_1","ManglerService_1","BulkService_1","PushService_1","TMSIdService_1","CacheService_1","ChannelService_1","PlatformService_1","ProgrammerService_1","DataCollectorService_1","LocalConfigurationService_1","IntegrationService_1","HistoryService_1","ApplicationService_1","ConfigVersionInterceptor_1","CacheInterceptor_1","PushStatusInterceptor_1","RelatedDataInterceptor_1","ResilienceInterceptor_1","RetryableRequestInterceptor_1","CertificateUtils_1","CustomSchemeService_1","ReportService_1","maintenance","MvpdService","MvpdProxyService","IntegrationService","CustomSchemeService","ReportService","ConfigVersionInterceptor","CacheInterceptor","RelatedDataInterceptor","ResilienceInterceptor","tmsId","tmsId1","tmsId2","tmsIdsList_1","str","elems","pageNumber","join","arrayRelated","responses","mvpdNo","mvpdProxyNo","mvpdPages","ceil","mvpdProxyPages","total","sliceSize","res1","res2","page","res","cachedList","listToFetch","processedId","cachedData","cachedItem","itemData","entityPayloads","getDefaultTMSIdMap","$cacheFactory","httpServiceCache","initialData","getInfo","errorReporting","defaultRedirectUrl","privateKeys","usermetadataHashSeed","mediaCompanyMapping","additionalTokenFormat","permissions","channels","sortBy","getNewModel","integrationData","version","integrationConfiguration","enforcePlatformPermissions","Set","add","Array","from","allowedRoles","logoUrl","platformSettings","imsOrgIds","featureFlags","debounceList","collectorObject","updateCollector","storedData","entityId","entityPrefix","previousVersion","storedItem","debounced","checkForConflicts","latest","onbeforeunload","debounce","leading","trailing","_self_1","newList","getAllIntegrations","totalIntegrations","getNewList","mvpdResourceFormat","platformTraitConfigurations","HistoryResponseTransformer","dataNode","configurationPushInformation","pushResultStatus","transformResponse","getRecent","uuid","getApplicationDefinition","typeValue","v4","platformTraitIdentifiers","redirectUrls","scopes","externalConfiguration","request","getCachedResponse","isArray","checkPushStatus","http","pushInfo","checkResponse","timeout","deferred_1","relatedList","processedData_1","getIdList","idsToFetch","relatedResponse","relatedItem","relatedEntity","getMultipleIdList","relatedProperties","cachedItemData","uniq","encryptionLevel","encryptionCertificateSetAt","channelEncryptionCertificateId","programmerEncryptionCertificateId","getUserMetadataEncryptionCertificateSerialNumber","channelEncryptionCertificateSerialNo","programmerEncryptionCertificateSerialNo","normalizeContent","content","generateCustomSchemeForChannel","generateCustomSchemeForProgrammer","__awaiter","thisArg","_arguments","P","generator","Promise","fulfilled","step","next","rejected","throw","done","apply","__generator","verb","v","op","f","TypeError","y","t","call","ops","pop","trys","g","sent","return","Symbol","iterator","__asyncValues","__asyncIterator","o","asyncIterator","m","__values","finalData","selectedMvpdsList","selectedChannelsList","self","reportData","paginatedData","selectedReport","getTTLReportData","getSSOReportData","reportType","reportColumns","integrations_1","integrations_1_1","authnTTLMap","authzTTLMap","platformName","authnTTLPlatform","authzTTLPlatform","stop_1","authnTTLIntegration_1","authzTTLIntegration_1","authnTTLEndpoint_1","authzTTLEndpoint_1","authnTTLMvpd_1","authzTTLMvpd_1","mvpdName","serviceProviderName","e_1_1","e_1","_b","includes","authn_ttl","mobileOthers","tvcdOthers","authz_ttl","authentication","authorization","ssoReportData","integrations_2","integrations_2_1","mvpdBoardingStatus","configurationEnabled","channelSSO","e_2_1","e_2","_c","getBoardingStatus","getConfigurationEnabled","JS","getSSOStatus","iOS","Android","roku","fireTV","tvOS","unknown","channelName","authPerAggregator","ssoType","boardingStatus","getDownloadData","downloadFile","csvData","ConvertToCSV","setAttribute","blob","Blob","prepareDownloadReport","items","currentState","downloadData","MVPD","BROWSERS","objArray","array","row","line","IntegrationEndpoint_1","IntegrationItem_1","IntegrationItemBasic_1","IntegrationList_1","IntegrationSettings_1","NewIntegration_1","ENABLE","DISABLE","IntegrationEndpointCtrl","IntegrationItemCtrl","IntegrationItemBasicCtrl","IntegrationListCtrl","IntegrationSettingsCtrl","NewIntegrationCtrl","authnEndpointKey","authzEndpointKey","logoutEndpointKey","newIntegrations","programmerData","templateProvider","tabs@Base.Integration.Item","tabContent@Base.Integration.Item","entityItemBasic@Base.Integration.Item","endpointTabContent@Base.Integration.Item.Endpoint","IntegrationStatusChange","hasMandatoryProperties","noToggle","unregister","unshift","platformConfig","platformValue","platformData","platformConfig_1","getEnabledToggleTooltip","disableMessage","enableMessage","resetInheritancePath","authnInheritPath","authzInheritPath","addPlatformToInheritancePath","hasAuthnMangler","hasAuthzMangler","selectedPlatformId","authNTooltips","authZTooltips","addNewIntegration","scrollTop","mandatoryProperties","hasMandatory","updateId","selectedChannel","editOnly","getChannels","getIdp","oldChannel","oldMvpd","onboardedPlatformsSettings","onboardedStatus","onboardedPlatformsSettingsEndpoints_1","val","integrationDefined","channelAndMvpdDefined","createPlatformConfig","createIntegrationAndNavigate","createIntegration","continue","mandatoryPropertiesValid","$error","isValid","CsrfTokenInterceptor_1","AuthorizationInterceptor_1","InputEscapeService_1","AuthorizationInterceptor","token","CSRF_TOKEN_HEADER","enumerable","configurable","authorization_code_url","entityMap","&","<",">","\"","'","/","string","String","s","BooleanFilter_1","CountFilter_1","HumanReadableFilter_1","HumanReadableIdFilter_1","IdToDisplayNameFilter_1","InitialsFilter_1","IntegrationParentsFilter_1","MetadataFilter_1","OlcaKeyMappingFilter_1","OlcaTypeMappingFilter_1","PropertyAlias_1","SquashFilter_1","TimeFilter_1","TTLFilter_1","booleanFilter","countFilter","humanReadableFilter","humanReadableIdFilter","idToDisplayNameFilter","initialsFilter","integrationParentsFilter","metadataFilter","olcaKeyFilter","olcaTypeFilter","propertyAliasFilter","squashFilter","timeFilter","ttlFilter","arg","toUpperCase","words","word","charAt","mvpdRef","channelRef","x2js","path","atob","xml2js","splitKey","source","console","duration","withHour","unit","out","secondsNumber","minutesNumber","hoursNumber","daysNumber","minutesPrefix","secondsPrefix","ClientData_1","ComplexInput_1","ImagePlaceholder_1","Manglers_1","OAuthConsumerCredentials_1","OAuth2ClientCredentials_1","OAuth2AccessToken_1","OAuthEndpoint_1","PanelList_1","PlatformSwitcher_1","SamlMetadataInfo_1","Searchbox_1","UserMetadata_1","DurationInput_1","AddChannel_1","AddProgrammer_1","Applications_2","AddApplication_1","ViewApplication_1","Certificates_2","AddCertificate_1","EditCertificate_1","DeleteCertificate_1","ClientData_2","ComplexInput_2","ComplexInput_3","Manglers_2","OAuthConsumerCredentials_2","OAuth2ClientCredentials_2","OAuth2AccessToken_2","OAuthEndpoint_2","PanelList_2","PlatformSwitcher_2","SamlMetadataInfo_2","Searchbox_2","UserMetadata_2","DurationInput_2","AddChannel_2","AddChannel_3","AddProgrammer_2","AddProgrammer_3","AddChannel_4","AddChannel_5","AddProgrammer_4","AddProgrammer_5","CustomSchemes_1","Permissions_1","AddPermission_1","AddApplicationCtrl","ViewApplicationCtrl","AddCertificateCtrl","EditCertificateCtrl","DeleteCertificateCtrl","ApcCustomSchemesCtrl","ApcPermissionsCtrl","AddPermissionCtrl","ApcImagePlaceholderDirective","ApcCustomSchemeDirective","ApcPermissionsDirective","decorator","$delegate","compile","ngModel","toggle","disabled","$viewValue","confirmationOffMessage","confirmationOnMessage","height","fontSize","ALL","addProgrammerReference","addServiceProviderReference","removeServiceProviderReference","isChannel","isProgrammer","selectedServiceProvider","serviceProviderOptions","allPlatformsSelected","filtered","updateProvider","updateRegisteredApplication","newAppEntity","platformNames","utf8","userMetadataEncryptionCertificateSerialNumber","initialCertificatesValues","encryptionValue","getEncryptionCertificateWarningMessage","getPlatformIds","updateEncryptionCertificate","encryptionValueChanged","saveCertificate","hash","btoa","encode","parseSuccessful","msg","updatePlatformData","entityDataPlatforms","updateEntityData","encryptionCertificate","generateNewCustomScheme","parentHasData","permissionOptions","Map","set","permission","isSelected","groupPermission","has","removeGroup","initialGroups","delete","groupName","processData","onPermissionChange","targetPermission","read","createPermissionGroup","groupPermissions","processParentData","permissionBucketKey","permissionBucket","group","groupEntry","_d","_e","initialGroup","groupPermissionsList","permissionOptionsList","parentGroupPermissions","parentGroupPermissionsList","ReportItem_1","reportlist_1","ReportItemCtrl","tabs@Base.Report","tabContent@Base.Report","ttlReportTabContent@Base.Report","entityItemBasic@Base.Report","report","ttlReportTabContent@Base.Report.Authz","ssoReportTabContent@Base.Report.SSO","renderer","reportStatus","getData","some","getAvailableChannelsList","availableChannelsList","selectAllChannels","getAvailableMVPDsList","availableIntegrations","availableMvpdsList","selectAllMvpds","selectChannel","availableChannel","selectMvpd","selectedMvpd","alert","downloadItems","reports","reportName","layout","Forbidden_1","$urlRouterProvider","$breadcrumbProvider","$qProvider","errorOnUnhandledRejections","setOptions","includeAbstract","skip","header","sidebar","footer","content@","otherwise","safeApply","$$phase","toState","toParams","fromState","fromParams","Error","ready","injector","strictDi","selector","hiddenSidebar","unavailable","webpackContext","req","webpackContextResolve","./index.html","./module/ui/directive/Applications/Add/AddApplication.html","./module/ui/directive/Applications/View/ViewApplication.html","./module/ui/directive/Certificates/Add/AddCertificate.html","./module/ui/directive/Certificates/Delete/DeleteCertificate.html","./module/ui/directive/Certificates/Edit/EditCertificate.html","./module/ui/directive/ClientData/ClientData.html","./module/ui/directive/ClientData/ClientDataBasic.html","./module/ui/directive/Manglers/Manglers.html","./module/ui/directive/Manglers/ManglersAuthnBasic.html","./module/ui/directive/Manglers/ManglersAuthzBasic.html","./module/ui/directive/Permissions/Add/AddPermission.html","./module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html","./module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html","./module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html","./module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html","./module/ui/template/endpoint/authenticationProviderConfiguration-rules.html","./module/ui/template/endpoint/authenticationProviderConfiguration-settings.html","./module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html","./module/ui/template/endpoint/authorizationProviderConfiguration-rules.html","./module/ui/template/endpoint/authorizationProviderConfiguration-settings.html","./module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html","./module/ui/template/endpoint/logoutProviderConfiguration-certificates.html","./module/ui/template/endpoint/logoutProviderConfiguration-rules.html","./module/ui/template/endpoint/logoutProviderConfiguration-settings.html","./module/ui/template/renderer/IntegrationRenderer.html","./module/ui/template/renderer/LiveIntegrationRenderer.html","./module/ui/template/renderer/MvpdRenderer.html","./module/ui/template/renderer/ProgrammerRenderer.html","./module/ui/template/reports/AuthNReport.html","./module/ui/template/reports/AuthZReport.html","./module/ui/template/reports/SSOReport.html","./static/res/swagger/o2c.html","ngModule","v1","id1","inj"],"mappings":"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AK,WACLmxB,MAAO,OACP8K,aACAhoC,GAAI,qBAERwV,qBACI3U,KAAM,iCACN2qB,YACAtrB,YAAa,eACb6L,IAAK,gBACLmxB,MAAO,OACP8K,aACAhoC,GAAI,0BAERm8B,YACIt7B,KAAM,kBACN2qB,YACAtrB,YAAa,cACb6L,IAAK,aACLmxB,MAAO,OACP8K,aACAjkB,KAAM,WACN/jB,GAAI,cAERo8B,gBACIv7B,KAAM,uBACN2qB,YACAtrB,YAAa,cACb2gC,YAAa,kBACb90B,IAAK,GACLmxB,MAAO,OACP8K,aACAjkB,KAAM,WACN/jB,GAAI,cAERw8B,gBACI37B,KAAM,uBACN2qB,YACAtrB,YAAa,kBACb6L,IAAK,iBACLmxB,MAAO,OACP8K,cAEJlmC,oBACIjB,KAAM,4BACN2qB,YACAtrB,YAAa,kBACb6L,IAAK,GACLmxB,MAAO,OACP8K,aACAhoC,GAAI,qBAER08B,wBACI77B,KAAM,oCACN2qB,YACAtrB,YAAa,eACb6L,IAAK,gBACLmxB,MAAO,OACP8K,aACAhoC,GAAI,6BAER48B,wBACI/7B,KAAM,oCACN2qB,YACAtrB,YAAa,0BACb6L,IAAK,gBACLmxB,MAAO,OACP8K,aACAhoC,GAAI,6BAER68B,yBACIh8B,KAAM,qCACN2qB,YACAtrB,YAAa,iBACb6L,IAAK,WACLmxB,MAAO,QACP8K,aACAhoC,GAAI,8BAER88B,uBACIj8B,KAAM,mCACN2qB,YACAtrB,YAAa,oBACb6L,IAAK,eACLmxB,MAAO,QACP8K,aACAhoC,GAAI,4BAER28B,oBACI97B,KAAM,gCACN2qB,YACAtrB,YAAa,WACb6L,IAAK,YACLmxB,MAAO,OACP8K,aACAhoC,GAAI,yBAERmoC,aACItnC,KAAM,mBACN2qB,YACAtrB,YAAa,eACb6L,IAAK,cACLmxB,MAAO,OACP8K,aACAjkB,KAAM,QACN/jB,GAAI,eAERooC,iBACIvnC,KAAM,wBACN2qB,YACAtrB,YAAa,eACb2gC,YAAa,mBACb90B,IAAK,GACLmxB,MAAO,OACP8K,aACAjkB,KAAM,QACN/jB,GAAI,eAERqoC,iBACIxn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","file":"app-3.14.0.js","sourcesContent":["webpackJsonp([0],[\n/* 0 */,\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar angular = __webpack_require__(0);\r\nfunction AngularModuleConfig(options) {\r\n return function (targetClass) {\r\n targetClass.prototype.ngRef = angular.module(options.moduleName, options.dependencies);\r\n targetClass.prototype.ngRef.config(targetClass.prototype.config);\r\n targetClass.prototype.ngRef.run(targetClass.prototype.run);\r\n };\r\n}\r\nexports.AngularModuleConfig = AngularModuleConfig;\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TabsCtrl = (function () {\r\n TabsCtrl.$inject = [\"$scope\", \"$state\", \"States\", \"tabs\"];\r\n function TabsCtrl($scope, $state, States, tabs) {\r\n \"ngInject\";\r\n /**\r\n * @name module:ui.TabsCtrl#tabs\r\n * @type {Array}\r\n * @description TabsCtrl list\r\n */\r\n $scope.tabs = tabs;\r\n /**\r\n * @name module:ui.TabsCtrl#$state\r\n * @type {Object}\r\n * @description Ui router state service\r\n */\r\n $scope.$state = $state;\r\n /**\r\n * @name module:ui.TabsCtrl#onTabClick\r\n * @method\r\n * @param {Event} event - Jquery click event\r\n * @description Prevent Bootstrap to control the tabs\r\n */\r\n $scope.onTabClick = function (event) {\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n };\r\n }\r\n return TabsCtrl;\r\n}());\r\nexports.TabsCtrl = TabsCtrl;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar Notification = (function () {\r\n function Notification(title, message) {\r\n this.title = title;\r\n this.message = message;\r\n }\r\n Notification.prototype.getTitle = function () {\r\n return this.title;\r\n };\r\n Notification.prototype.getMessage = function () {\r\n return this.message;\r\n };\r\n return Notification;\r\n}());\r\nvar Notifications = (function () {\r\n function Notifications() {\r\n }\r\n Notifications.confirmDeleteTMSID = new Notification(\"Delete Confirmation\", \"Are you sure you want to delete this\" +\r\n \" TMS ID? If deleted, the authorization flows that involves this TMS ID mapping will stop working.\");\r\n Notifications.confirmDeleteDefaultMetadata = new Notification(\"Delete Confirmation\", \"Are you sure you want to\" +\r\n \" delete this default metadata? If deleted, this default metadata key will be removed from all existing\" +\r\n \" integrations.\");\r\n Notifications.confirmDeleteDomain = new Notification(\"Delete Confirmation\", \"Are you sure you want to delete this\" +\r\n \" domain? If deleted, the application associated with this domain will not be able to use the Adobe Primetime\" +\r\n \" authentication service.\");\r\n Notifications.confirmDeleteSniHostname = new Notification(\"Delete Confirmation\", \"Are you sure you want to delete this\" +\r\n \" SNI hostname? If deleted, the authorization may fail with this mvpd.\");\r\n return Notifications;\r\n}());\r\nexports.Notifications = Notifications;\r\nvar NotificationModalCtrl = (function () {\r\n NotificationModalCtrl.$inject = [\"$scope\", \"$sce\", \"$uibModalInstance\", \"data\"];\r\n function NotificationModalCtrl($scope, $sce, $uibModalInstance, data) {\r\n \"ngInject\";\r\n $scope.title = data.title;\r\n $scope.message = $sce.trustAsHtml(data.message);\r\n $scope.type = data.type;\r\n $scope.options = data.options;\r\n $scope.ok = function () {\r\n $uibModalInstance.close(true);\r\n };\r\n $scope.cancel = function () {\r\n $uibModalInstance.close(false);\r\n };\r\n }\r\n return NotificationModalCtrl;\r\n}());\r\nexports.NotificationModalCtrl = NotificationModalCtrl;\r\nvar NotificationService = (function () {\r\n NotificationService.$inject = [\"$rootScope\", \"$injector\"];\r\n function NotificationService($rootScope, $injector) {\r\n \"ngInject\";\r\n this.$rootScope = $rootScope;\r\n this.$injector = $injector;\r\n }\r\n NotificationService.prototype.getConfirmationFromUser = function (notification) {\r\n return this.showDialog(notification.getTitle(), notification.getMessage(), 'warning', null);\r\n };\r\n NotificationService.prototype.warn = function (title, message) {\r\n this.showError(title, message, 'warning');\r\n };\r\n NotificationService.prototype.error = function (title, message, persist) {\r\n this.showError(title, message, 'danger', persist);\r\n };\r\n NotificationService.prototype.success = function (title, message) {\r\n this.showError(title, message, 'success');\r\n };\r\n NotificationService.prototype.warnModal = function (title, message, options) {\r\n return this.showDialog(title, message, 'warning', options);\r\n };\r\n NotificationService.prototype.removeError = function (title) {\r\n if (this.$rootScope.error && this.$rootScope.error.title === title) {\r\n this.$rootScope.error = {\r\n active: false,\r\n type: \"danger\",\r\n title: title\r\n };\r\n }\r\n };\r\n NotificationService.prototype.errorWithHelperLink = function (title, message, link) {\r\n this.showErrorWithHelperLink(title, message, 'danger', link);\r\n };\r\n NotificationService.prototype.showError = function (title, message, type, persist) {\r\n this.$rootScope.error = {\r\n active: true,\r\n type: type,\r\n title: title,\r\n persist: persist,\r\n message: !angular.isObject(message) ? message : null,\r\n list: angular.isObject(message) ? message : null\r\n };\r\n };\r\n NotificationService.prototype.showErrorWithHelperLink = function (title, message, type, link) {\r\n this.$rootScope.error = {\r\n active: true,\r\n type: type,\r\n title: title,\r\n link: link,\r\n message: !angular.isObject(message) ? message : null,\r\n list: angular.isObject(message) ? message : null\r\n };\r\n };\r\n NotificationService.prototype.showDialog = function (title, message, type, options) {\r\n var modalData = _.assign({\r\n templateUrl: 'modal.html',\r\n controller: NotificationModalCtrl,\r\n resolve: {\r\n data: function () {\r\n return {\r\n title: title,\r\n message: message,\r\n type: type,\r\n options: options\r\n };\r\n }\r\n },\r\n backdrop: 'static'\r\n }, options);\r\n return this.$injector.get('$uibModal').open(modalData);\r\n };\r\n return NotificationService;\r\n}());\r\nexports.NotificationService = NotificationService;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\";\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
  • {{tab.displayName || tab.state.displayName}}
  • \";\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcAddChannelDirective = (function () {\r\n function ApcAddChannelDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n programmer: '<'\r\n };\r\n this.template = __webpack_require__(224);\r\n this.controller = ApcAddChannelCtrl;\r\n }\r\n return ApcAddChannelDirective;\r\n}());\r\nexports.ApcAddChannelDirective = ApcAddChannelDirective;\r\nvar UniqueChannelValidator = (function () {\r\n function UniqueChannelValidator() {\r\n this.restrict = 'A';\r\n this.require = 'ngModel';\r\n this.scope = {};\r\n this.link = function (scope, elm, attrs, ctrl) {\r\n var field = '';\r\n attrs.$observe('uniqueChannel', function (value) {\r\n field = value.toString() || '';\r\n ctrl.$validate();\r\n });\r\n ctrl.$asyncValidators.uniqueChannel = function (modelValue, viewValue) {\r\n var deferred = scope.$q.defer();\r\n if (!field) {\r\n deferred.reject();\r\n }\r\n scope.ChannelService.getAll().then(function (response) {\r\n var channels = response.data.entities;\r\n var result = channels.filter(function (channel) { return channel.entityData[field].toLowerCase() === modelValue.toLowerCase(); }).length === 0;\r\n if (result) {\r\n deferred.resolve();\r\n }\r\n else {\r\n deferred.reject();\r\n }\r\n });\r\n return deferred.promise;\r\n };\r\n };\r\n }\r\n UniqueChannelValidator.prototype.controller = [\"$scope\", \"$q\", \"ChannelService\", function ($scope, $q, ChannelService) {\r\n \"ngInject\";\r\n $scope.ChannelService = ChannelService;\r\n $scope.$q = $q;\r\n }];\r\n return UniqueChannelValidator;\r\n}());\r\nexports.UniqueChannelValidator = UniqueChannelValidator;\r\nvar ChannelIdValidator = (function () {\r\n function ChannelIdValidator() {\r\n this.restrict = 'A';\r\n this.require = 'ngModel';\r\n this.link = function (scope, elm, attrs, ctrl) {\r\n ctrl.$validators.validChannelId = function (modelValue, viewValue) {\r\n if (!modelValue) {\r\n return true;\r\n }\r\n return modelValue.indexOf(\" \") === -1;\r\n };\r\n };\r\n }\r\n return ChannelIdValidator;\r\n}());\r\nexports.ChannelIdValidator = ChannelIdValidator;\r\nvar ApcAddChannelModalCtrl = (function () {\r\n ApcAddChannelModalCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"$state\", \"$http\", \"States\", \"Config\", \"programmer\", \"ProgrammerService\", \"ChannelService\", \"DataCollectorService\"];\r\n function ApcAddChannelModalCtrl($scope, $uibModalInstance, $state, $http, States, Config, programmer, ProgrammerService, ChannelService, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.form = {};\r\n $scope.programmerSelectorDisabled = false;\r\n $scope.contentProvider = ChannelService.getNewContentProviderModel();\r\n $scope.serviceProvider = ChannelService.getNewServiceProviderModel();\r\n $scope.requiredErrorMessage = \"This field is required.\";\r\n $scope.channelIdErrorMessage = \"Channel id cannot contain white spaces.\";\r\n if (programmer) {\r\n $scope.programmerSelectorDisabled = true;\r\n $scope.form.selectedProgrammer = programmer;\r\n }\r\n $scope.getProgrammers = function (searchTerm) {\r\n return ProgrammerService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\r\n return response.data.entities;\r\n });\r\n };\r\n $scope.createChannel = function () {\r\n var programmerId = \"@\" + $scope.form.selectedProgrammer.key;\r\n var channelId = $scope.form.channelId;\r\n var channelDisplayName = $scope.form.channelDisplayName;\r\n // Complete ContentProvider.\r\n $scope.contentProvider.key = \"ContentProvider:\" + channelId;\r\n $scope.contentProvider.entityData.id = channelId;\r\n $scope.contentProvider.entityData.programmer = programmerId;\r\n $scope.contentProvider.entityData.serviceProviders = [\"@ServiceProvider:\" + channelId];\r\n // Complete ServiceProvider.\r\n $scope.serviceProvider.key = \"ServiceProvider:\" + channelId;\r\n $scope.serviceProvider.entityData.id = channelId;\r\n $scope.serviceProvider.entityData.displayName = channelDisplayName;\r\n $scope.serviceProvider.entityData.programmer = programmerId;\r\n $scope.serviceProvider.entityData.contentProviders = [\"@ContentProvider:\" + channelId];\r\n // Reference new Content and Service providers.\r\n $scope.form.selectedProgrammer.entityData.contentProviders.push(\"@\" + $scope.contentProvider.key);\r\n $scope.form.selectedProgrammer.entityData.serviceProviders.push(\"@\" + $scope.serviceProvider.key);\r\n DataCollectorService.createEntity($scope.serviceProvider);\r\n DataCollectorService.createEntity($scope.contentProvider);\r\n DataCollectorService.updateEntity($scope.form.selectedProgrammer);\r\n $scope.close();\r\n $http.defaults.cache.put(\"/rest/api/entity/ServiceProvider/\" + $scope.serviceProvider.entityData.id + \"?configurationVersion=\" + Config.configVersion, [200, $scope.serviceProvider]);\r\n $state.go(States.ChannelItemData.name, {\r\n channelId: channelId\r\n });\r\n };\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n }\r\n return ApcAddChannelModalCtrl;\r\n}());\r\nexports.ApcAddChannelModalCtrl = ApcAddChannelModalCtrl;\r\nvar ApcAddChannelCtrl = (function () {\r\n ApcAddChannelCtrl.$inject = [\"$scope\", \"$uibModal\", \"UserService\"];\r\n function ApcAddChannelCtrl($scope, $uibModal, UserService) {\r\n \"ngInject\";\r\n $scope.hasWriteRole = UserService.hasRole(\"ROLE_CONSOLE_WRITE\");\r\n $scope.openModal = function () {\r\n var modal = $uibModal.open({\r\n templateUrl: 'add-channel-modal.html',\r\n controller: 'AddChannelModalCtrl',\r\n resolve: {\r\n programmer: function () {\r\n return $scope.programmer;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n return modal;\r\n };\r\n }\r\n return ApcAddChannelCtrl;\r\n}());\r\nexports.ApcAddChannelCtrl = ApcAddChannelCtrl;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcAddProgrammerDirective = (function () {\r\n function ApcAddProgrammerDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n programmer: '<'\r\n };\r\n this.template = __webpack_require__(225);\r\n this.controller = ApcAddProgrammerCtrl;\r\n }\r\n return ApcAddProgrammerDirective;\r\n}());\r\nexports.ApcAddProgrammerDirective = ApcAddProgrammerDirective;\r\nvar ProgrammerIdValidator = (function () {\r\n function ProgrammerIdValidator() {\r\n this.restrict = 'A';\r\n this.require = 'ngModel';\r\n this.link = function (scope, elm, attrs, ctrl) {\r\n ctrl.$validators.validProgrammerId = function (modelValue, viewValue) {\r\n if (!modelValue) {\r\n return true;\r\n }\r\n return modelValue.indexOf(\" \") === -1;\r\n };\r\n };\r\n }\r\n return ProgrammerIdValidator;\r\n}());\r\nexports.ProgrammerIdValidator = ProgrammerIdValidator;\r\nvar UniqueProgrammerValidator = (function () {\r\n function UniqueProgrammerValidator() {\r\n this.restrict = 'A';\r\n this.require = 'ngModel';\r\n this.scope = {};\r\n this.link = function (scope, elm, attrs, ctrl) {\r\n var field = '';\r\n attrs.$observe('uniqueProgrammer', function (value) {\r\n field = value.toString() || '';\r\n ctrl.$validate();\r\n });\r\n ctrl.$asyncValidators.uniqueProgrammer = function (modelValue, viewValue) {\r\n var deferred = scope.$q.defer();\r\n if (!field) {\r\n deferred.reject();\r\n }\r\n scope.ProgrammerService.getAll().then(function (response) {\r\n var programmers = response.data.entities;\r\n var result = programmers.filter(function (programmer) { return programmer.entityData[field].toLowerCase() === modelValue.toLowerCase(); }).length === 0;\r\n if (result) {\r\n deferred.resolve();\r\n }\r\n else {\r\n deferred.reject();\r\n }\r\n });\r\n return deferred.promise;\r\n };\r\n };\r\n }\r\n UniqueProgrammerValidator.prototype.controller = [\"$scope\", \"$q\", \"ProgrammerService\", function ($scope, $q, ProgrammerService) {\r\n \"ngInject\";\r\n $scope.ProgrammerService = ProgrammerService;\r\n $scope.$q = $q;\r\n }];\r\n return UniqueProgrammerValidator;\r\n}());\r\nexports.UniqueProgrammerValidator = UniqueProgrammerValidator;\r\nvar ApcAddProgrammerModalCtrl = (function () {\r\n ApcAddProgrammerModalCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"$state\", \"$http\", \"States\", \"Config\", \"ProgrammerService\", \"DataCollectorService\"];\r\n function ApcAddProgrammerModalCtrl($scope, $uibModalInstance, $state, $http, States, Config, ProgrammerService, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.form = {};\r\n $scope.programmer = ProgrammerService.getNewProgrammerModel();\r\n $scope.requiredErrorMessage = \"This field is required.\";\r\n $scope.programmerIdErrorMessage = \"Programmer id cannot contain white spaces.\";\r\n $scope.createProgrammer = function () {\r\n $scope.programmer.key = \"Programmer:\" + $scope.form.programmerId;\r\n $scope.programmer.entityData.id = $scope.form.programmerId;\r\n $scope.programmer.entityData.displayName = $scope.form.programmerDisplayName;\r\n DataCollectorService.createEntity($scope.programmer);\r\n $scope.close();\r\n $http.defaults.cache.put(\"/rest/api/entity/Programmer/\" + $scope.programmer.entityData.id + \"?configurationVersion=\" + Config.configVersion, [200, $scope.programmer]);\r\n $state.go(States.ProgrammerItemData.name, {\r\n programmerId: $scope.programmer.entityData.id\r\n });\r\n };\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n }\r\n return ApcAddProgrammerModalCtrl;\r\n}());\r\nexports.ApcAddProgrammerModalCtrl = ApcAddProgrammerModalCtrl;\r\nvar ApcAddProgrammerCtrl = (function () {\r\n ApcAddProgrammerCtrl.$inject = [\"$scope\", \"$uibModal\", \"UserService\"];\r\n function ApcAddProgrammerCtrl($scope, $uibModal, UserService) {\r\n \"ngInject\";\r\n $scope.adobeOnly = UserService.hasRole('ROLE_CONSOLE_ALL_DATA') && UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n $scope.openModal = function () {\r\n return $uibModal.open({\r\n templateUrl: 'add-programmer-modal.html',\r\n controller: 'AddProgrammerModalCtrl',\r\n backdrop: 'static'\r\n });\r\n };\r\n }\r\n return ApcAddProgrammerCtrl;\r\n}());\r\nexports.ApcAddProgrammerCtrl = ApcAddProgrammerCtrl;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2018 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar _ = __webpack_require__(1);\r\nvar ApcApplicationsDirective = (function () {\r\n function ApcApplicationsDirective() {\r\n this.restrict = 'E';\r\n this.replace = false;\r\n this.scope = {\r\n entity: '=',\r\n platforms: '=',\r\n applications: '=',\r\n applicationTypes: '='\r\n };\r\n this.controller = ApplicationsCtrl;\r\n this.template = __webpack_require__(78);\r\n }\r\n return ApcApplicationsDirective;\r\n}());\r\nexports.ApcApplicationsDirective = ApcApplicationsDirective;\r\nvar ApplicationsCtrl = (function () {\r\n ApplicationsCtrl.$inject = [\"$scope\", \"$uibModal\", \"Config\", \"DataCollectorService\", \"DownloadService\", \"UserService\", \"NotificationService\"];\r\n function ApplicationsCtrl($scope, $uibModal, Config, DataCollectorService, DownloadService, UserService, NotificationService) {\r\n \"ngInject\";\r\n $scope.newlyAddedAppIds = [];\r\n $scope.addPlatformReference = function (item) {\r\n return '@Platform:' + item;\r\n };\r\n $scope.removePlatformReference = function (item) {\r\n return item.trim().replace('@Platform:', '');\r\n };\r\n /**\r\n * Parses all platforms in APass and retrieves their ids\r\n */\r\n $scope.getPlatformIdsForAllPlatforms = function () {\r\n var platformIds = [];\r\n for (var _i = 0, _a = Object.keys($scope.platforms); _i < _a.length; _i++) {\r\n var platformId = _a[_i];\r\n platformIds.push(platformId);\r\n }\r\n return platformIds;\r\n };\r\n $scope.platformIds = $scope.getPlatformIdsForAllPlatforms();\r\n $scope.init = function () {\r\n // An empty list of platforms should be handled the same as a list containing all AdobePass defined platforms\r\n $scope.applications.forEach(function (application) {\r\n if (_.isEmpty(application.entityData.platforms)) {\r\n application.entityData.platforms = $scope.platformIds.map($scope.addPlatformReference);\r\n }\r\n });\r\n };\r\n $scope.init();\r\n /**\r\n * References the application at programmer level\r\n */\r\n $scope.addAppReferenceAtProgrammerLevel = function (application) {\r\n var appReference = '@' + application.key;\r\n if ($scope.entity.type === 'PROGRAMMER') {\r\n if (_.isNull($scope.entity.data.entityData.applications)) {\r\n $scope.entity.data.entityData.applications = [];\r\n }\r\n $scope.entity.data.entityData.applications.push(appReference);\r\n DataCollectorService.updateEntity($scope.entity.data);\r\n }\r\n else {\r\n if (_.isNull($scope.entity.relatedData.programmer.entityData.applications)) {\r\n $scope.entity.relatedData.programmer.entityData.applications = [];\r\n }\r\n $scope.entity.relatedData.programmer.entityData.applications.push(appReference);\r\n DataCollectorService.updateEntity($scope.entity.relatedData.programmer);\r\n }\r\n };\r\n $scope.write = UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n var openAddModal = function () {\r\n var addModal = $uibModal.open({\r\n templateUrl: 'AddApplication.html',\r\n controller: 'AddApplicationCtrl',\r\n resolve: {\r\n platforms: function () {\r\n return $scope.platformIds;\r\n },\r\n data: function () {\r\n return $scope.data;\r\n },\r\n entity: function () {\r\n return $scope.entity;\r\n },\r\n applicationTypes: function () {\r\n return $scope.applicationTypes;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n addModal.result.then(function (result) {\r\n if (_.isEmpty(result)) {\r\n return;\r\n }\r\n $scope.newlyAddedAppIds.push(result.application.entityData.id);\r\n $scope.applications.push(result.application);\r\n $scope.init();\r\n DataCollectorService.createEntity(result.application);\r\n $scope.addAppReferenceAtProgrammerLevel(result.application);\r\n });\r\n };\r\n var openViewModal = function () {\r\n var editModal = $uibModal.open({\r\n templateUrl: 'ViewApplication.html',\r\n controller: 'ViewApplicationCtrl',\r\n resolve: {\r\n application: function () {\r\n return $scope.selectedApplication;\r\n },\r\n platforms: function () {\r\n return $scope.platforms;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n return editModal;\r\n };\r\n /**\r\n * Opens the necessary modal for adding applications\r\n */\r\n $scope.addApplication = function () {\r\n openAddModal();\r\n };\r\n /**\r\n * Opens the necessary modal for viewing a specific application\r\n */\r\n $scope.viewApplication = function (application) {\r\n $scope.selectedApplication = application;\r\n openViewModal();\r\n };\r\n /**\r\n * Download software statement for a specific application\r\n */\r\n $scope.downloadStatement = function (application) {\r\n var onErrorCallback = function () {\r\n NotificationService.warn('Software statement not ready', 'Please try again in a couple of minutes.');\r\n };\r\n DownloadService.downloadWithErrorCallback(Config.API_ROOT + '/applications/' + application.entityData.id, onErrorCallback);\r\n };\r\n /**\r\n * Retrieve all details for a specific platform id\r\n */\r\n $scope.platformDetails = function (platformId) {\r\n return $scope.platforms[platformId];\r\n };\r\n /**\r\n * Checks if an application is a newly added one.\r\n * A new application can be viewed in the list, but is not yet saved in the JSON file\r\n */\r\n $scope.isNewlyAddedApp = function (application) {\r\n return $scope.newlyAddedAppIds.indexOf(application.entityData.id) > -1;\r\n };\r\n }\r\n return ApplicationsCtrl;\r\n}());\r\nexports.ApplicationsCtrl = ApplicationsCtrl;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"


    Loading Data
    \";\n\n/***/ }),\n/* 12 */,\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar ApcCertificatesDirective = (function () {\r\n function ApcCertificatesDirective() {\r\n this.restrict = 'E';\r\n this.replace = false;\r\n this.scope = {\r\n data: '=',\r\n platforms: '=',\r\n certificates: \"=\",\r\n encryptionData: \"=\",\r\n write: \"=\"\r\n };\r\n this.controller = CertificatesCtrl;\r\n this.template = __webpack_require__(76);\r\n }\r\n return ApcCertificatesDirective;\r\n}());\r\nexports.ApcCertificatesDirective = ApcCertificatesDirective;\r\nvar CertificatesCtrl = (function () {\r\n CertificatesCtrl.$inject = [\"$scope\", \"$uibModal\", \"CertificateUtils\", \"EncryptionLevel\"];\r\n function CertificatesCtrl($scope, $uibModal, CertificateUtils, EncryptionLevel) {\r\n \"ngInject\";\r\n /**\r\n * User metadata encryption certificate id.\r\n */\r\n $scope.userMetadataEncryptionCertificateId =\r\n CertificateUtils.getUserMetadataEncryptionCertificateId($scope.encryptionData.level, $scope.encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER, $scope.encryptionData.channelUserMetadataEncryptionCertificate.id, $scope.encryptionData.programmerUserMetadataEncryptionCertificate.id);\r\n /**\r\n * Includes platform details: id, description, icon, enabled\r\n * E.g.: \"@Platform:JS\" -> {id: 'JS', description: 'JS SDK', icon: 'coral-Icon--deviceLaptop', enabled: true}\r\n */\r\n $scope.init = function () {\r\n if ($scope.certificates == null || $scope.certificates.length == 0) {\r\n $scope.certificates = {};\r\n }\r\n for (var certificateKey in $scope.certificates) {\r\n var platforms = $scope.certificates[certificateKey].platforms;\r\n if (!_.isEmpty(platforms) && _.isString(platforms[0])) {\r\n for (var _i = 0, _a = Object.keys($scope.platforms); _i < _a.length; _i++) {\r\n var platformId = _a[_i];\r\n var index = $scope.certificates[certificateKey].platforms.indexOf('@Platform:' + platformId);\r\n if (index !== -1) {\r\n var platformDetails = angular.copy($scope.platforms[platformId]);\r\n platformDetails.enabled = true;\r\n $scope.certificates[certificateKey].platforms[index] = platformDetails;\r\n }\r\n else {\r\n $scope.certificates[certificateKey].platforms.push($scope.platforms[platformId]);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n $scope.init();\r\n var openAddModal = function () {\r\n var addModal = $uibModal.open({\r\n templateUrl: 'AddCertificate.html',\r\n controller: 'AddCertificateCtrl',\r\n resolve: {\r\n encryptionData: function () {\r\n return $scope.encryptionData;\r\n },\r\n certificates: function () {\r\n return $scope.certificates;\r\n },\r\n platforms: function () {\r\n return $scope.platforms;\r\n },\r\n data: function () {\r\n return $scope.data;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n addModal.result.then(function (result) {\r\n $scope.certificates = result.certificates;\r\n $scope.userMetadataEncryptionCertificateId = result.userMetadataEncryptionCertificateId;\r\n });\r\n };\r\n var openEditModal = function () {\r\n var editModal = $uibModal.open({\r\n templateUrl: 'EditCertificate.html',\r\n controller: 'EditCertificateCtrl',\r\n resolve: {\r\n selectedCertificateKey: function () {\r\n return $scope.selectedCertificateKey;\r\n },\r\n encryptionData: function () {\r\n return $scope.encryptionData;\r\n },\r\n certificates: function () {\r\n return $scope.certificates;\r\n },\r\n platforms: function () {\r\n return $scope.platforms;\r\n },\r\n data: function () {\r\n return $scope.data;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n editModal.result.then(function (result) {\r\n $scope.certificates = result.certificates;\r\n $scope.userMetadataEncryptionCertificateId = result.userMetadataEncryptionCertificateId;\r\n });\r\n return editModal;\r\n };\r\n var openDeleteModal = function () {\r\n var deleteModal = $uibModal.open({\r\n templateUrl: 'DeleteCertificate.html',\r\n controller: 'DeleteCertificateCtrl',\r\n resolve: {\r\n selectedCertificateKey: function () {\r\n return $scope.selectedCertificateKey;\r\n },\r\n encryptionData: function () {\r\n return $scope.encryptionData;\r\n },\r\n certificates: function () {\r\n return $scope.certificates;\r\n },\r\n data: function () {\r\n return $scope.data;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n deleteModal.result.then(function (result) {\r\n $scope.certificates = result.certificates;\r\n $scope.userMetadataEncryptionCertificateId = result.userMetadataEncryptionCertificateId;\r\n });\r\n return deleteModal;\r\n };\r\n /**\r\n * Opens the necessary modal for adding certificates\r\n */\r\n $scope.addCertificate = function () {\r\n openAddModal();\r\n };\r\n /**\r\n * Opens the corresponding modal for editing a specific certificate\r\n */\r\n $scope.editCertificate = function (certificateKey) {\r\n $scope.selectedCertificateKey = certificateKey;\r\n openEditModal();\r\n };\r\n /**\r\n * Opens the corresponding modal for deleting a specific certificate\r\n */\r\n $scope.deleteCertificate = function (certificateKey) {\r\n $scope.selectedCertificateKey = certificateKey;\r\n openDeleteModal();\r\n };\r\n /**\r\n * Checks if the specified certificate is used for encryption\r\n */\r\n $scope.isEncryptionCertificate = function (certificateKey) {\r\n return (certificateKey === $scope.userMetadataEncryptionCertificateId);\r\n };\r\n /**\r\n * Returns the action specific tooltip message\r\n * @param {string} action\r\n * @returns {any}\r\n */\r\n $scope.getTooltipMessageFor = function (action) {\r\n switch (action) {\r\n case 'edit':\r\n return ($scope.write == false) ? \"For editing programmer specific certificates, please use the 'Programmers' tab.\" : \"Edit certificate\";\r\n case 'delete':\r\n return ($scope.write == false) ? \"For deleting programmer specific certificates, please use the 'Programmers' tab.\" : \"Delete certificate\";\r\n }\r\n };\r\n }\r\n return CertificatesCtrl;\r\n}());\r\nexports.CertificatesCtrl = CertificatesCtrl;\r\n\n\n/***/ }),\n/* 14 */,\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(14);\r\nvar TempPassService = (function () {\r\n function TempPassService() {\r\n \"ngInject\";\r\n }\r\n TempPassService.prototype.getTempPassMap = function (pipelineStageListAuthZ) {\r\n var tempPassMap = new Object();\r\n if (!util_1.isNullOrUndefined(pipelineStageListAuthZ)) {\r\n //obtain array of ids\r\n var pipelineArray = (JSON.stringify(pipelineStageListAuthZ)).match(/[0-9]{4}:.{36}/g);\r\n for (var i = 0; i < pipelineArray.length; i++) {\r\n var tempPassConfig = pipelineStageListAuthZ[(pipelineArray[i].toString())];\r\n if (typeof tempPassConfig !== \"undefined\" &&\r\n (tempPassConfig[\"type\"] === \"flexibleTempPassConfiguration\" || tempPassConfig[\"type\"] === \"tempPassConfiguration\")) {\r\n tempPassMap[\"tempPassDuration\"] = tempPassConfig[\"tempPassDuration\"];\r\n if (tempPassConfig[\"type\"] === \"flexibleTempPassConfiguration\") {\r\n tempPassMap[\"tempPassMaxResources\"] = tempPassConfig[\"maxResources\"];\r\n tempPassMap[\"tempPassIdentifyingField\"] = tempPassConfig[\"identifyingField\"];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n return tempPassMap;\r\n };\r\n return TempPassService;\r\n}());\r\nexports.TempPassService = TempPassService;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar ApcComplexInputDirective = (function () {\r\n function ApcComplexInputDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n property: '=',\r\n readOnly: '=',\r\n inheritData: '=',\r\n selected: '='\r\n };\r\n this.template = __webpack_require__(210);\r\n this.controller = ApcComplexInputCtrl;\r\n }\r\n return ApcComplexInputDirective;\r\n}());\r\nexports.ApcComplexInputDirective = ApcComplexInputDirective;\r\nvar ApcComplexInputCtrl = (function () {\r\n ApcComplexInputCtrl.$inject = [\"$scope\", \"$uibModal\"];\r\n function ApcComplexInputCtrl($scope, $uibModal) {\r\n \"ngInject\";\r\n var modal;\r\n $scope.openModal = function () {\r\n modal = $uibModal.open({\r\n templateUrl: 'complex-input-modal.html',\r\n controller: ApcComplexInputModalCtrl,\r\n resolve: {\r\n data: function () {\r\n return $scope.data;\r\n },\r\n property: function () {\r\n return $scope.property;\r\n },\r\n readOnly: function () {\r\n return $scope.readOnly;\r\n },\r\n inheritData: function () {\r\n return $scope.inheritData;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n modal.result.then(function (result) {\r\n $scope.data = result;\r\n });\r\n return modal;\r\n };\r\n }\r\n return ApcComplexInputCtrl;\r\n}());\r\nexports.ApcComplexInputCtrl = ApcComplexInputCtrl;\r\nvar ApcComplexInputModalCtrl = (function () {\r\n ApcComplexInputModalCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"$filter\", \"data\", \"property\", \"readOnly\", \"inheritData\"];\r\n function ApcComplexInputModalCtrl($scope, $uibModalInstance, $filter, data, property, readOnly, inheritData) {\r\n \"ngInject\";\r\n $scope.fieldName = $filter('propertyAlias')(property.propertyName);\r\n $scope.propertyName = property.propertyName;\r\n $scope.propertyType = property.propertyType;\r\n $scope.integrationPropertiesStartIndex = 0;\r\n $scope.newEmptyPropertyCreated = false;\r\n $scope.inheritData = inheritData;\r\n $scope.readOnly = readOnly;\r\n $scope.levelData = data;\r\n $scope.warning = false;\r\n $scope.errors = {};\r\n $scope.isPropertyMapType = function () {\r\n return $scope.propertyType === 'java.util.Map';\r\n };\r\n $scope.isPropertyInherited = function (propertyIndex) {\r\n return propertyIndex < $scope.integrationPropertiesStartIndex;\r\n };\r\n $scope.propertyKeyAlreadyExists = function (propertyIndex) {\r\n var propertyKey = $scope.properties[propertyIndex].key;\r\n for (var i = $scope.integrationPropertiesStartIndex; i < $scope.properties.length; i++) {\r\n if (i !== propertyIndex && $scope.properties[i].key === propertyKey) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n $scope.createPropertiesArrayFromData = function (data) {\r\n var propertiesArray = [];\r\n if (data) {\r\n if ($scope.isPropertyMapType()) {\r\n for (var propertyKeyInDataMap in data) {\r\n if (data.hasOwnProperty(propertyKeyInDataMap)) {\r\n var propertyValueInDataMap = JSON.stringify(data[propertyKeyInDataMap]);\r\n propertiesArray.push({\r\n key: JSON.stringify(propertyKeyInDataMap),\r\n value: propertyValueInDataMap\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < data.length; i++) {\r\n var propertyValueInDataArray = JSON.stringify(data[i]);\r\n propertiesArray.push({\r\n key: null,\r\n value: propertyValueInDataArray\r\n });\r\n }\r\n }\r\n }\r\n return propertiesArray;\r\n };\r\n $scope.createPropertiesArray = function () {\r\n var inheritedPropertiesArray = [];\r\n if ($scope.inheritData && $scope.inheritData[$scope.propertyName]) {\r\n inheritedPropertiesArray = $scope.createPropertiesArrayFromData($scope.inheritData[$scope.propertyName].value);\r\n $scope.integrationPropertiesStartIndex = inheritedPropertiesArray.length;\r\n }\r\n var levelPropertiesArray = [];\r\n if ($scope.levelData !== undefined) {\r\n levelPropertiesArray = $scope.createPropertiesArrayFromData($scope.levelData);\r\n if ($scope.integrationPropertiesStartIndex > 0) {\r\n $scope.warning = true;\r\n }\r\n }\r\n return inheritedPropertiesArray.concat(levelPropertiesArray);\r\n };\r\n $scope.properties = $scope.createPropertiesArray();\r\n $scope.createNewEmptyProperty = function () {\r\n var newEmptyProperty = {\r\n key: null,\r\n value: null\r\n };\r\n $scope.newEmptyPropertyCreated = true;\r\n return newEmptyProperty;\r\n };\r\n $scope.onAddNewProperty = function () {\r\n if (!$scope.newEmptyPropertyCreated && Object.keys($scope.errors).length === 0) {\r\n if ($scope.integrationPropertiesStartIndex > 0 && $scope.warning === false) {\r\n $scope.warning = true;\r\n }\r\n $scope.properties.splice($scope.integrationPropertiesStartIndex, 0, $scope.createNewEmptyProperty());\r\n }\r\n };\r\n $scope.onRemoveProperty = function (propertyIndex) {\r\n if (propertyIndex < $scope.integrationPropertiesStartIndex) {\r\n return;\r\n }\r\n var tooltip = $('.tooltip');\r\n if (tooltip) {\r\n tooltip.remove();\r\n }\r\n if (propertyIndex === $scope.integrationPropertiesStartIndex && $scope.newEmptyPropertyCreated) {\r\n $scope.newEmptyPropertyCreated = false;\r\n }\r\n $scope.properties.splice(propertyIndex, 1);\r\n delete $scope.errors[propertyIndex];\r\n if ($scope.properties.length === $scope.integrationPropertiesStartIndex) {\r\n $scope.warning = false;\r\n }\r\n };\r\n $scope.computeErrorStatusForInputField = function (inputValue, inputField) {\r\n try {\r\n var jsonValue = JSON.parse(inputValue);\r\n if (inputField === \"Key\") {\r\n return !angular.isString(jsonValue);\r\n }\r\n else if (inputField === \"Value\") {\r\n return !(angular.isObject(jsonValue) && Object.keys(jsonValue).length > 0 || angular.isString(jsonValue));\r\n }\r\n }\r\n catch (error) {\r\n return true;\r\n }\r\n };\r\n $scope.updateErrorStatusForProperty = function (propertyIndex) {\r\n var error = {\r\n propertyKeyError: false,\r\n propertyValueError: false,\r\n propertyKeyUniqueError: false\r\n };\r\n if ($scope.isPropertyMapType()) {\r\n error.propertyKeyError = $scope.computeErrorStatusForInputField($scope.properties[propertyIndex].key, \"Key\");\r\n if (!error.propertyKeyError) {\r\n error.propertyKeyUniqueError = $scope.propertyKeyAlreadyExists(propertyIndex);\r\n }\r\n }\r\n error.propertyValueError = $scope.computeErrorStatusForInputField($scope.properties[propertyIndex].value, \"Value\");\r\n if (error.propertyKeyError || error.propertyValueError || error.propertyKeyUniqueError) {\r\n $scope.errors[propertyIndex] = error;\r\n return;\r\n }\r\n if ($scope.errors[propertyIndex]) {\r\n delete $scope.errors[propertyIndex];\r\n }\r\n if (propertyIndex === $scope.integrationPropertiesStartIndex && $scope.newEmptyPropertyCreated) {\r\n $scope.newEmptyPropertyCreated = false;\r\n }\r\n };\r\n $scope.onSaveProperties = function () {\r\n if ($scope.properties.length === $scope.integrationPropertiesStartIndex) {\r\n $uibModalInstance.close(undefined);\r\n }\r\n if ($scope.newEmptyPropertyCreated) {\r\n $scope.updateErrorStatusForProperty($scope.integrationPropertiesStartIndex);\r\n }\r\n if (Object.keys($scope.errors).length === 0) {\r\n var result = $scope.isPropertyMapType() ? {} : [];\r\n var index = void 0;\r\n for (index = $scope.integrationPropertiesStartIndex; index < $scope.properties.length; index++) {\r\n if ($scope.isPropertyMapType()) {\r\n var newPropertyKey = JSON.parse($scope.properties[index].key);\r\n result[newPropertyKey] = JSON.parse($scope.properties[index].value);\r\n }\r\n else {\r\n var newPropertyValue = JSON.parse($scope.properties[index].value);\r\n result.push(newPropertyValue);\r\n }\r\n }\r\n $uibModalInstance.close(result);\r\n }\r\n };\r\n $scope.onCancel = function () {\r\n $uibModalInstance.dismiss();\r\n };\r\n $scope.computeValueColumnSize = function () {\r\n if (!$scope.readOnly && $scope.warning) {\r\n if ($scope.isPropertyMapType()) {\r\n return 'col-md-6';\r\n }\r\n return 'col-md-10';\r\n }\r\n else if (!$scope.readOnly || $scope.warning) {\r\n if ($scope.isPropertyMapType()) {\r\n return 'col-md-7';\r\n }\r\n return 'col-md-11';\r\n }\r\n else {\r\n if ($scope.isPropertyMapType()) {\r\n return 'col-md-8';\r\n }\r\n return 'col-md-12';\r\n }\r\n };\r\n }\r\n return ApcComplexInputModalCtrl;\r\n}());\r\nexports.ApcComplexInputModalCtrl = ApcComplexInputModalCtrl;\r\n\n\n/***/ }),\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */,\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class MaintenanceModalCtrl\r\n * @memberOf module:admin\r\n * @param {Object} $cope - Angular scope\r\n * @param {Object} $uibModalInstance - Ui bootstrap modal instance service\r\n * @param {Object} data - modal data\r\n * @description Controls the maintenance confirmation modal\r\n */\r\nvar MaintenanceModalCtrl = (function () {\r\n MaintenanceModalCtrl.$inject = [\"$scope\", \"$window\", \"$uibModalInstance\", \"data\"];\r\n function MaintenanceModalCtrl($scope, $window, $uibModalInstance, data) {\r\n \"ngInject\";\r\n /**\r\n * @name module:admin.MaintenanceModalCtrl#message\r\n * @type {String}\r\n * @description Activation/deactivation message\r\n */\r\n $scope.message = '';\r\n /**\r\n * @name module:admin.MaintenanceModalCtrl#title\r\n * @type {String}\r\n * @default 'Confirm maintenance mode activation'\r\n * @description Modal title\r\n */\r\n $scope.title = data.title || 'Confirm maintenance mode activation';\r\n /**\r\n * @name module:admin.MaintenanceModalCtrl#label\r\n * @type {String}\r\n * @default 'Activation message'\r\n * @description Input label\r\n */\r\n $scope.label = data.label || 'Activation message';\r\n /**\r\n * @name module:admin.MaintenanceModalCtrl#placeholder\r\n * @type {String}\r\n * @default 'Enter activation message'\r\n * @description Input placeholder\r\n */\r\n $scope.placeholder = data.placeholder || 'Enter activation message';\r\n /**\r\n * @name module:admin.MaintenanceModalCtrl#ok\r\n * @method\r\n * @description Ok button handler. Closes the modal and resolves the result promise with {@link module:admin.MaintenanceModalCtrl#message}\r\n */\r\n $scope.ok = function () {\r\n $uibModalInstance.close($scope.message);\r\n };\r\n /**\r\n * @name module:admin.MaintenanceModalCtrl#cancel\r\n * @method\r\n * @description Cancel button handler. Closes the modal.\r\n */\r\n $scope.cancel = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n }\r\n return MaintenanceModalCtrl;\r\n}());\r\nexports.MaintenanceModalCtrl = MaintenanceModalCtrl;\r\nvar AdminAdvancedCtrl = (function () {\r\n AdminAdvancedCtrl.$inject = [\"$rootScope\", \"$window\", \"$scope\", \"$uibModal\", \"$state\", \"isMaintenanceActive\", \"storedModelSerialIds\", \"AdminService\", \"Config\", \"CsrfTokenInterceptor\", \"FileUploader\", \"CacheService\", \"NotificationService\", \"TooltipService\"];\r\n function AdminAdvancedCtrl($rootScope, $window, $scope, $uibModal, $state, isMaintenanceActive, storedModelSerialIds, AdminService, Config, CsrfTokenInterceptor, FileUploader, CacheService, NotificationService, TooltipService) {\r\n \"ngInject\";\r\n var headers = {};\r\n headers[CsrfTokenInterceptor.CSRF_TOKEN_KEY] = CsrfTokenInterceptor.getToken();\r\n var uploader = $scope.uploader = new FileUploader({\r\n url: Config.API_ROOT + '/admin/repo/restore',\r\n headers: headers,\r\n onSuccessItem: function (file, response) {\r\n var restoreMessage = \"Restore successful, keys restored:\";\r\n NotificationService.warnModal('Restore was successful', restoreMessage, {\r\n confirm: true,\r\n backdrop: 'static'\r\n }).result.then(function () {\r\n $state.reload();\r\n });\r\n }\r\n });\r\n $scope.isMaintenanceActive = isMaintenanceActive;\r\n $scope.storedModelSerialIds = storedModelSerialIds;\r\n $scope.modelSerialIdToDump = storedModelSerialIds[0];\r\n $scope.modelSerialIdToDelete = storedModelSerialIds[0];\r\n /**\r\n * @name module:admin.AdminAdvancedCtrl#openModal\r\n * @method\r\n * @private\r\n * @param {String} title - Modal title\r\n * @param {String} label - Modal input label\r\n * @param {String} placeholder - Modal input placeholder\r\n * @returns {Object} Modal instance\r\n * @description Opens a modal for maintenance mode activation / deactivation.\r\n */\r\n var openModal = function (title, label, placeholder) {\r\n return $uibModal.open({\r\n templateUrl: 'maintenanceModal.html',\r\n controller: MaintenanceModalCtrl,\r\n resolve: {\r\n data: function () {\r\n return {\r\n title: title,\r\n label: label,\r\n placeholder: placeholder\r\n };\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * @name module:admin.AdminAdvancedCtrl#activateMaintenance\r\n * @method\r\n * @description Activates maintenance mode\r\n */\r\n $scope.activateMaintenance = function () {\r\n openModal().result.then(function (message) {\r\n $rootScope.statusMessage = \"Activating maintenance mode\";\r\n $rootScope.appLoading = true;\r\n AdminService.activateMaintenance(message).then(function () {\r\n $rootScope.appLoading = false;\r\n $state.reload();\r\n });\r\n });\r\n };\r\n /**\r\n * @name module:admin.AdminAdvancedCtrl#deactivateMaintenance\r\n * @method\r\n * @description Deactivates maintenance mode\r\n */\r\n $scope.deactivateMaintenance = function () {\r\n openModal('Confirm maintenance mode deactivation', 'Deactivation message', 'Enter deactivation message').result.then(function (message) {\r\n $rootScope.statusMessage = \"Deactivating maintenance mode\";\r\n $rootScope.appLoading = true;\r\n AdminService.deactivateMaintenance(message).then(function () {\r\n $rootScope.appLoading = false;\r\n $state.reload();\r\n });\r\n });\r\n };\r\n $scope.restoreDump = function () {\r\n NotificationService.warnModal('Confirm repository dump restore', 'Are you sure you want to restore this repository dump?' +\r\n '
    If it is a full repository dump, it will flush all existing data beforehand!').result.then(function (confirmation) {\r\n if (confirmation) {\r\n CacheService.reset();\r\n uploader.uploadAll();\r\n }\r\n });\r\n };\r\n $scope.dumpModelSerialId = function () {\r\n AdminService.dumpData($scope.modelSerialIdToDump);\r\n };\r\n $scope.dumpRepository = function () {\r\n AdminService.dumpData();\r\n };\r\n $scope.deleteDataForModel = function () {\r\n NotificationService.warnModal('Confirm repository data deletion', 'Are you sure you want to delete all data related to model ' +\r\n $scope.modelSerialIdToDelete + '?').result.then(function (confirmation) {\r\n if (confirmation) {\r\n AdminService.deleteDataForModel($scope.modelSerialIdToDelete).then(function () {\r\n $state.reload();\r\n });\r\n }\r\n });\r\n };\r\n $scope.deleteDataForRunningModel = function () {\r\n AdminService.getConsoleInfo().then(function (response) {\r\n var runningModelSerialId = response.data.modelSerialId;\r\n NotificationService.warnModal('Confirm repository data deletion', 'Are you sure you want to delete all data ' +\r\n 'for the running (active) model ' + runningModelSerialId + '?').result.then(function (confirmation) {\r\n if (confirmation) {\r\n AdminService.deleteDataForModel(runningModelSerialId).then(function () {\r\n $state.reload();\r\n });\r\n }\r\n });\r\n });\r\n };\r\n $scope.resetSyncedConfigVersion = function () {\r\n NotificationService.warnModal('Confirm synced configuration version reset', 'Are you sure you want to reset the ' +\r\n 'synced Core configuration version to null?').result.then(function (confirmation) {\r\n if (confirmation) {\r\n AdminService.resetSyncedConfigVersion().then(function () {\r\n NotificationService.warn('Synced core configuration version was reset');\r\n });\r\n }\r\n });\r\n };\r\n $scope.forceApigeeResync = function () {\r\n NotificationService.warnModal('Confirm Apigee resynchronization', 'Are you sure you want to trigger an Apigee resynchronization?').result.then(function (confirmation) {\r\n if (confirmation) {\r\n AdminService.forceApigeeResync().then(function () {\r\n NotificationService.warn('A Manual Apigee resynchronization was triggered');\r\n });\r\n }\r\n });\r\n };\r\n $scope.forcePushConfig = function () {\r\n NotificationService.warnModal('Confirm force push', 'Are you sure you want to force push the active configuration to Core?').result.then(function (confirmation) {\r\n if (confirmation) {\r\n AdminService.forcePushConfig().then(function () {\r\n NotificationService.warn('A force push of the active configuration to Core was triggered');\r\n });\r\n }\r\n });\r\n };\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.ACTIONS.adminAdvanced;\r\n });\r\n }\r\n return AdminAdvancedCtrl;\r\n}());\r\nexports.AdminAdvancedCtrl = AdminAdvancedCtrl;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar ApcDiffDirective = (function () {\r\n function ApcDiffDirective() {\r\n this.restrict = 'E';\r\n this.scope = {\r\n data: '=',\r\n sharing: '=?',\r\n typeFilter: '=?',\r\n nameFilter: '=?'\r\n };\r\n this.template = __webpack_require__(113);\r\n this.controller = ApcDiffCtrl;\r\n }\r\n return ApcDiffDirective;\r\n}());\r\nexports.ApcDiffDirective = ApcDiffDirective;\r\nvar ApcDiffCtrl = (function () {\r\n ApcDiffCtrl.$inject = [\"$scope\", \"$window\", \"$filter\"];\r\n function ApcDiffCtrl($scope, $window, $filter) {\r\n \"ngInject\";\r\n $scope.typeFilter = $scope.typeFilter || 'all';\r\n $scope.nameFilter = $scope.nameFilter || 'all';\r\n $scope.selectedEntityFilter = {\r\n type: 'all',\r\n name: 'All entities'\r\n };\r\n $scope.selectedNameFilter = {\r\n type: 'all',\r\n name: 'All entities'\r\n };\r\n var defaultFilter = {\r\n all: {\r\n type: 'all',\r\n name: 'All entities'\r\n }\r\n };\r\n /**\r\n * @method extractEntityNames\r\n * @private\r\n * @returns [Array] Unique array of entity names\r\n * @description Creates a unique array of entity names\r\n */\r\n var extractEntityNames = function () {\r\n var result = [];\r\n angular.copy(defaultFilter, result);\r\n for (var i = 0; i < $scope.data.entityDifferences.length; i++) {\r\n var entity = $scope.data.entityDifferences[i];\r\n var entityType = entity.entityKey.split(':')[0];\r\n var entityName = entity.entityKey.split(':')[1];\r\n if (entityType === $scope.selectedEntityFilter.type || $scope.selectedEntityFilter.type === 'all') {\r\n if (!result[entityName]) {\r\n result[entityName] = {\r\n type: entityName,\r\n name: entityName\r\n };\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * @method extractEntityTypes\r\n * @private\r\n * @returns [Array] Unique array of entity types\r\n * @description Creates a unique array of entity types\r\n */\r\n var extractEntityTypes = function () {\r\n var result = [];\r\n angular.copy(defaultFilter, result);\r\n for (var i = 0; i < $scope.data.entityDifferences.length; i++) {\r\n var entityType = $scope.data.entityDifferences[i].entityKey.split(':')[0];\r\n if (!result[entityType]) {\r\n result[entityType] = {\r\n type: entityType,\r\n name: entityType\r\n };\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * @method compareEntitiesWithFilter\r\n * @param entity1 - first entity to be compared\r\n * @param entity2 - second entity to be compared\r\n * @private\r\n * @returns {number} - compare result\r\n * @description Compares 2 entities with filter applied\r\n */\r\n var compareEntitiesWithFilter = function (entity1, entity2) {\r\n var name1 = $filter(\"olcaType\")(entity1.name);\r\n var name2 = $filter(\"olcaType\")(entity2.name);\r\n if (entity1.name.localeCompare(\"All entities\") === 0) {\r\n return -1;\r\n }\r\n else if (entity2.name.localeCompare(\"All entities\") === 0) {\r\n return 1;\r\n }\r\n else {\r\n return name1.localeCompare(name2);\r\n }\r\n };\r\n /**\r\n * @method getValuesFromMap\r\n * @param {Object[]} entities - array of entities\r\n * @private\r\n * @return {Object[]} Unique array with objects\r\n * @description Creates a unique array of objects from a map\r\n */\r\n var getValuesFromMap = function (entities) {\r\n var result = [];\r\n for (var entity in entities) {\r\n result.push(entities[entity]);\r\n }\r\n return result.sort(compareEntitiesWithFilter);\r\n };\r\n /**\r\n * @type {Object[]}\r\n * @description Unique array of entity types\r\n */\r\n $scope.entities = extractEntityTypes();\r\n /**\r\n * @type {Object[]}\r\n * @description Unique list of values from #entities\r\n */\r\n $scope.entityTypesValues = getValuesFromMap($scope.entities);\r\n /**\r\n * @type {Object[]}\r\n * @description Unique array of entity names\r\n */\r\n $scope.entityNames = extractEntityNames();\r\n /**\r\n * @type {Object[]}\r\n * @description Unique list of values from #entityNames\r\n */\r\n $scope.entityNamesValues = getValuesFromMap($scope.entityNames);\r\n /**\r\n * @method filterByEntityType\r\n * @param {String} entityTypeFilter - type filter value\r\n * @description Select the type filter, filter the entity names and types\r\n */\r\n $scope.filterByEntityType = function (entityTypeFilter) {\r\n $scope.selectedEntityFilter = $scope.entities[entityTypeFilter];\r\n $scope.selectedNameFilter = $scope.entityNames['all'];\r\n $scope.entities = extractEntityTypes();\r\n $scope.entityNames = extractEntityNames();\r\n $scope.entityTypesValues = getValuesFromMap($scope.entities);\r\n $scope.entityNamesValues = getValuesFromMap($scope.entityNames);\r\n };\r\n /**\r\n * @method filterByEntityName\r\n * @param {String} entityNameFilter - name filter value\r\n * @description Select the type filter\r\n */\r\n $scope.filterByEntityName = function (entityNameFilter) {\r\n $scope.selectedNameFilter = $scope.entityNames[entityNameFilter];\r\n };\r\n /**\r\n * @method isVisible\r\n * @memberOf module:diff.DiffCtrl\r\n * @param {Object} diffItem - diff item to check\r\n * @returns {Boolean} True/False is the filter should be applied or not\r\n * @description Checks if the element should be visible or not based on the selected filters\r\n */\r\n $scope.isVisible = function (diffItem) {\r\n var entityType = diffItem.entityKey.split(':')[0];\r\n var entityName = diffItem.entityKey.split(':')[1];\r\n return ((entityType === $scope.selectedEntityFilter.type || $scope.selectedEntityFilter.type === 'all') &&\r\n (entityName === $scope.selectedNameFilter.type || $scope.selectedNameFilter.type === 'all'));\r\n };\r\n /**\r\n * @method shareDiff\r\n * @description Calculates the full URL with filter data and opens the default mail client\r\n */\r\n $scope.shareDiff = function () {\r\n var url = $window.location.href + '&type=' + $scope.selectedEntityFilter.type + '&name=' + $scope.selectedNameFilter.type;\r\n $window.location.href = 'mailto:?subject=Adobe Pass configuration compare report&body=Configuration compare report: ' + encodeURIComponent(url);\r\n };\r\n $scope.isDefined = function (value) {\r\n return angular.isDefined(value) && value !== null;\r\n };\r\n $scope.isObject = function (value) {\r\n return angular.isObject(value);\r\n };\r\n $scope.selectedEntityFilter = $scope.entities[$scope.typeFilter];\r\n $scope.selectedNameFilter = $scope.entityNames[$scope.nameFilter];\r\n }\r\n return ApcDiffCtrl;\r\n}());\r\nexports.ApcDiffCtrl = ApcDiffCtrl;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProxiedMvpdRequestorsModalCtrl = (function () {\r\n ProxiedMvpdRequestorsModalCtrl.$inject = [\"$uibModalInstance\", \"$scope\", \"$filter\", \"requestors\"];\r\n function ProxiedMvpdRequestorsModalCtrl($uibModalInstance, $scope, $filter, requestors) {\r\n \"ngInject\";\r\n $scope.requestors = requestors;\r\n $scope.search = function (searchTerm) {\r\n $scope.requestors = $filter('filter')(requestors, searchTerm);\r\n };\r\n $scope.resetSearch = function () {\r\n $scope.requestors = requestors;\r\n };\r\n $scope.onClose = function () {\r\n $uibModalInstance.close();\r\n };\r\n }\r\n return ProxiedMvpdRequestorsModalCtrl;\r\n}());\r\nexports.ProxiedMvpdRequestorsModalCtrl = ProxiedMvpdRequestorsModalCtrl;\r\nvar MvpdProxiedMvpdsCtrl = (function () {\r\n MvpdProxiedMvpdsCtrl.$inject = [\"$scope\", \"$rootScope\", \"$filter\", \"$uibModal\", \"SearchEvent\", \"Config\", \"data\"];\r\n function MvpdProxiedMvpdsCtrl($scope, $rootScope, $filter, $uibModal, SearchEvent, Config, data) {\r\n \"ngInject\";\r\n var originalProxiedMvpds = $filter('orderBy')(data.related.proxiedMvpds, 'entityData.displayName');\r\n $scope.data = data;\r\n $scope.filteredProxiedMvpds = originalProxiedMvpds;\r\n $scope.pagination = {\r\n currentPage: 1,\r\n pageSize: Config.PAGE_SIZE\r\n };\r\n $scope.onPageChange = function () {\r\n var startIndex = ($scope.pagination.currentPage - 1) * $scope.pagination.pageSize;\r\n var stopIndex = startIndex + $scope.pagination.pageSize;\r\n $scope.pageData = $scope.filteredProxiedMvpds.slice(startIndex, stopIndex);\r\n };\r\n $scope.search = function (searchTerm) {\r\n $scope.filteredProxiedMvpds = $filter('filter')(originalProxiedMvpds, {\r\n 'entityData': {\r\n 'displayName': searchTerm\r\n }\r\n });\r\n $scope.pagination.currentPage = 1;\r\n $scope.onPageChange();\r\n };\r\n $scope.resetSearch = function () {\r\n $scope.filteredProxiedMvpds = originalProxiedMvpds;\r\n $scope.pagination.currentPage = 1;\r\n $scope.onPageChange();\r\n };\r\n $rootScope.$on(SearchEvent.SEARCH, function (ev, searchTerm) {\r\n $scope.search(searchTerm);\r\n });\r\n $rootScope.$on(SearchEvent.RESET, function () {\r\n $scope.resetSearch();\r\n });\r\n $scope.openModal = function (proxiedMvpd) {\r\n var modal = $uibModal.open({\r\n templateUrl: 'proxied-mvpd-requestors.html',\r\n controller: 'ProxiedMvpdRequestorsModalCtrl',\r\n resolve: {\r\n requestors: function () {\r\n return proxiedMvpd.entityData.serviceProviderIds;\r\n }\r\n },\r\n backdrop: 'static'\r\n });\r\n return modal;\r\n };\r\n $scope.onPageChange();\r\n }\r\n return MvpdProxiedMvpdsCtrl;\r\n}());\r\nexports.MvpdProxiedMvpdsCtrl = MvpdProxiedMvpdsCtrl;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class SidebarCtrl\r\n * @memberOf module:core\r\n * @param {Object} $scope - Angular scope\r\n * @param {Array} navItems - navigation items\r\n * @description Controls the sidebar. If window width drops below 768px the sidebar will auto collapse.\r\n */\r\nvar SidebarCtrl = (function () {\r\n SidebarCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"$window\", \"navItems\", \"DataCollectorService\"];\r\n function SidebarCtrl($rootScope, $scope, $state, $window, navItems, DataCollectorService) {\r\n \"ngInject\";\r\n /**\r\n * @name module:core.SidebarCtrl#isOpen\r\n * @type {Boolean}\r\n * @default true\r\n * @description Sidebar status\r\n */\r\n $scope.isOpen = true;\r\n $scope.showPush = DataCollectorService.getStoredData().length > 0;\r\n DataCollectorService.getScope().$watch('hasData', function (newValue) {\r\n $scope.showPush = newValue ? true : false;\r\n });\r\n /**\r\n * @name module:core.SidebarCtrl#navItems\r\n * @type {Array}\r\n * @description Navigation items. {@link module:core.NavService}\r\n */\r\n $scope.navItems = navItems;\r\n /**\r\n * @name module:core.SidebarCtrl#$state\r\n * @type {Object}\r\n * @description Ui router state service\r\n */\r\n $scope.$state = $state;\r\n /**\r\n * @name module:core.SidebarCtrl#toggleIcon\r\n * @type {String}\r\n * @description CUI icon name\r\n */\r\n $scope.toggleIcon = 'railRightOpen';\r\n /**\r\n * @method toggleSidebar\r\n * @memberOf module:core.SidebarCtrl\r\n * @description Toggles the sidebar\r\n */\r\n $scope.toggleSidebar = function () {\r\n if ($scope.isOpen) {\r\n $scope.toggleIcon = 'railRightClose';\r\n $('#sidebar').addClass('collapsed');\r\n }\r\n else {\r\n $scope.toggleIcon = 'railRightOpen';\r\n $('#sidebar').removeClass('collapsed');\r\n }\r\n $scope.isOpen = !$scope.isOpen;\r\n };\r\n $($window).on(\"resize.doResize\", function () {\r\n var value = $window.innerWidth;\r\n $scope.$apply(function () {\r\n if (value < 940 && $scope.isOpen) {\r\n $scope.toggleSidebar();\r\n }\r\n });\r\n });\r\n $scope.$on(\"$destroy\", function () {\r\n $($window).off(\"resize.doResize\");\r\n });\r\n if ($window.innerWidth < 940) {\r\n $scope.toggleSidebar();\r\n }\r\n }\r\n return SidebarCtrl;\r\n}());\r\nexports.SidebarCtrl = SidebarCtrl;\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class HeaderCtrl\r\n * @memberOf module:core\r\n * @param {Object} $scope - Angular scope\r\n * @param {Object} $window - Angular reference to window\r\n * @param {module:core.UserService} UserService - User service\r\n * @description Controls the header view\r\n */\r\nvar HeaderCtrl = (function () {\r\n HeaderCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"States\", \"$window\", \"UserService\", \"EnvironmentService\"];\r\n function HeaderCtrl($rootScope, $scope, $state, States, $window, UserService, EnvironmentService) {\r\n \"ngInject\";\r\n /**\r\n * @name module:core.HeaderCtrl#user\r\n * @type {module:core.UserProfile}\r\n * @description The user profile data\r\n */\r\n $scope.user = UserService.getUserData();\r\n UserService.getScope().$watch('userProfile', function () {\r\n $scope.user = UserService.getUserData();\r\n });\r\n /**\r\n * @name module:core.HeaderCtrl#getWorkspaceMode\r\n * @type String\r\n * @description Returns the user's selected workspace mode\r\n */\r\n $scope.getWorkspaceMode = function () {\r\n var advancedWorkspaceEnabled = UserService.advancedWorkspaceEnabled();\r\n return advancedWorkspaceEnabled ? 'Advanced Workspace' : 'Basic Workspace';\r\n };\r\n /**\r\n * @name module:core.HeaderCtrl#enableBasicWorkspace\r\n * @type void\r\n * @description Enable Basic Workspace Mode\r\n */\r\n $scope.enableBasicWorkspace = function () {\r\n UserService.enableAdvancedWorkspace(false);\r\n };\r\n /**\r\n * @name module:core.HeaderCtrl#enableAdvancedWorkspace\r\n * @type void\r\n * @description Enabled Advanced Workspace Mode\r\n */\r\n $scope.enableAdvancedWorkspace = function () {\r\n UserService.enableAdvancedWorkspace(true);\r\n };\r\n /**\r\n * @name module:core.HeaderCtrl#environments\r\n * @type {Array}\r\n * @example\r\n * [{name: 'Environment name', url:'Environment url'}]\r\n * @description A list with available environments\r\n */\r\n $scope.environments = EnvironmentService.getEnvironments();\r\n EnvironmentService.identifyCurrentEnvironment($window);\r\n /**\r\n * @name module:core.HeaderCtrl#selectedEnvironment\r\n * @type {Object}\r\n * @example\r\n * {name: 'Environment name', url:'Environment url'}\r\n * @see {@link module:core.HeaderCtrl#environments}\r\n * @description The selected environment object\r\n */\r\n $scope.selectedEnvironment = EnvironmentService.getSelectedEnvironment();\r\n }\r\n return HeaderCtrl;\r\n}());\r\nexports.HeaderCtrl = HeaderCtrl;\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2015 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n */\r\nvar FooterCtrl = (function () {\r\n FooterCtrl.$inject = [\"$scope\", \"$state\", \"DataCollectorService\"];\r\n function FooterCtrl($scope, $state, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.ncyBreadcrumbIgnore = true;\r\n $scope.showPush = DataCollectorService.getStoredData().length > 0;\r\n $scope.currentYear = new Date().getFullYear();\r\n DataCollectorService.getScope().$watch('hasData', function (newValue) {\r\n var errors = $('.ng-dirty.ng-invalid.ng-touched');\r\n if (errors.length > 0) {\r\n DataCollectorService.getScope().hasData = false;\r\n }\r\n $scope.showPush = !!(errors.length === 0 && newValue);\r\n });\r\n }\r\n return FooterCtrl;\r\n}());\r\nexports.FooterCtrl = FooterCtrl;\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class DashboardCtrl\r\n * @memberOf module:core\r\n * @param {Object} $scope - Angular scope\r\n * @param {Object} $state - Ui Router state manager\r\n * @param {module:data.Config} Config - Application config\r\n * @param {module:core.States} States - Application states\r\n * @param {module:data.HistoryService} HistoryService - History service\r\n * @param {module:data.ChannelService} ChannelService - ChannelService service\r\n * @param {Object} latestChanges - latest successful pushes\r\n * @param {Object} serviceProviderList - initial service provider data\r\n * @description Controls the dashboard page\r\n */\r\nvar DashboardCtrl = (function () {\r\n DashboardCtrl.$inject = [\"$scope\", \"$state\", \"Config\", \"States\", \"HistoryService\", \"ChannelService\", \"latestChanges\", \"serviceProviderList\", \"TooltipService\", \"UserService\"];\r\n function DashboardCtrl($scope, $state, Config, States, HistoryService, ChannelService, latestChanges, serviceProviderList, TooltipService, UserService) {\r\n \"ngInject\";\r\n $scope.adminOnly = UserService.hasRole('ROLE_CONSOLE_ADMIN');\r\n /**\r\n * @name module:core.DashboardCtrl#ChannelService\r\n * @type {module:data.ChannelService}\r\n * @description ServiceProvider service\r\n */\r\n $scope.ChannelService = ChannelService;\r\n /**\r\n * @name module:core.DashboardCtrl#pageSize\r\n * @type {Number}\r\n * @see {@link module:data.Config}\r\n * @description Items per page\r\n */\r\n $scope.pageSize = Config.PAGE_SIZE;\r\n /**\r\n * @name module:core.DashboardCtrl#integrationsColumns\r\n * @type {Array}\r\n * @description Columns description for panel list\r\n */\r\n $scope.integrationsColumns = [\r\n {\r\n name: 'Channel',\r\n sortable: true,\r\n sorted: true,\r\n sortAsc: true,\r\n sortField: 'displayName',\r\n class: 'col-md-10'\r\n },\r\n {\r\n name: 'No of integrations',\r\n sortable: false,\r\n class: 'col-md-2'\r\n }\r\n ];\r\n /**\r\n * @name module:core.DashboardCtrl#serviceProviderList\r\n * @type {Object}\r\n * @see {@link module:data.ChannelService}\r\n * @description ServiceProvider data\r\n */\r\n $scope.serviceProviderList = serviceProviderList ? serviceProviderList : null;\r\n /**\r\n * @name module:core.DashboardCtrl#latestChanges\r\n * @type {Array}\r\n * @see {@link module:data.HistoryService}\r\n * @description Latest successful changes.\r\n */\r\n $scope.latestChanges = latestChanges;\r\n /**\r\n * @name module:core.DashboardCtrl#selected\r\n * @type {Array}\r\n * @description Configuration history selection status\r\n */\r\n $scope.selected = [];\r\n /**\r\n * @method compareConfigs\r\n * @memberOf module:core.DashboardCtrl\r\n * @description Navigates to Compare state.\r\n */\r\n $scope.compareConfigs = function () {\r\n var configA, configB;\r\n for (var i = 0; i < $scope.selected.length; i++) {\r\n if ($scope.selected[i] && !configA) {\r\n configA = $scope.latestChanges[i].configurationSaveInformation.configurationVersion;\r\n }\r\n else if ($scope.selected[i] && !configB) {\r\n configB = $scope.latestChanges[i].configurationSaveInformation.configurationVersion;\r\n }\r\n }\r\n $state.go(States.Compare.name, {\r\n configA: configA,\r\n configB: configB,\r\n parentState: States.Dashboard.name\r\n });\r\n };\r\n /**\r\n * @method getSelected\r\n * @memberOf module:core.DashboardCtrl\r\n * @returns {Number} The number of selected rows\r\n * @description Computes and returns the number of selected rows\r\n */\r\n $scope.getSelected = function () {\r\n var result = 0;\r\n for (var i = 0; i < $scope.selected.length; i++) {\r\n if ($scope.selected[i]) {\r\n result++;\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * @method onLiveIntegrationClick\r\n * @memberOf module:core.DashboardCtrl\r\n * @param {Object} item - Selected integration row\r\n * @description Navigates to channel detail integrations page\r\n */\r\n $scope.onLiveIntegrationClick = function (item) {\r\n $state.go(States.ChannelIntegrations.name, {\r\n channelId: item.entityData.id\r\n });\r\n };\r\n /**\r\n * @method exportConfiguration\r\n * @memberOf module:core.DashboardCtrl\r\n * @param {Object} change - Configuration push entry\r\n * @see {@link module:data.HistoryService}\r\n * @description Exports a configuration file.\r\n */\r\n $scope.exportConfiguration = function (change) {\r\n HistoryService.exportConfiguration(change.configurationSaveInformation.configurationVersion);\r\n };\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.ACTIONS.changeLog;\r\n });\r\n $scope.$on(\"onPageChange\", function () {\r\n var tableListElement = document.getElementById('table-list');\r\n window.scrollTo(0, window.scrollY - tableListElement.offsetHeight);\r\n });\r\n }\r\n return DashboardCtrl;\r\n}());\r\nexports.DashboardCtrl = DashboardCtrl;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class ChangelogCtrl\r\n * @memberOf module:core\r\n * @param {Object} $scope - Angular scope\r\n * @param {Object} $state - Angular state service\r\n * @param {Array} history - History data\r\n * @param {module:data.HistoryService} HistoryService - History service\r\n * @param {module:core.States} States - Application states\r\n * @description Handles history page\r\n */\r\nvar ChangelogCtrl = (function () {\r\n ChangelogCtrl.$inject = [\"$scope\", \"$timeout\", \"$state\", \"history\", \"HistoryService\", \"States\", \"highlight\", \"Config\", \"TooltipService\", \"UserService\"];\r\n function ChangelogCtrl($scope, $timeout, $state, history, HistoryService, States, highlight, Config, TooltipService, UserService) {\r\n \"ngInject\";\r\n $scope.adminOnly = UserService.hasRole('ROLE_CONSOLE_ADMIN');\r\n $scope.pagination = {\r\n pageSize: Config.PAGE_SIZE\r\n };\r\n /**\r\n * @name module:core.ChangelogCtrl#history\r\n * @type {Array}\r\n * @see {@link module:data.HistoryService}\r\n * @description History list.\r\n */\r\n $scope.history = history.configurationInformationList;\r\n $scope.historyCount = history.count;\r\n $scope.onPageChange = function () {\r\n $scope.loadingTimeout = $timeout(function () {\r\n $scope.loading = true;\r\n }, 300);\r\n HistoryService.getPage($scope.pagination.currentPage).then(function (response) {\r\n $scope.history = response.data.configurationInformationList;\r\n $scope.historyCount = response.data.count;\r\n $timeout.cancel($scope.loadingTimeout);\r\n $scope.loading = false;\r\n });\r\n window.scrollTo(0, 0);\r\n };\r\n /**\r\n * @name module:core.ChangelogCtrl#selected\r\n * @type {Array}\r\n * @description Configuration history selection status\r\n */\r\n $scope.selected = [];\r\n $scope.highlight = highlight;\r\n /**\r\n * @method compareConfigs\r\n * @memberOf module:core.ChangelogCtrl\r\n * @description Navigates to Compare state.\r\n */\r\n $scope.compareConfigs = function () {\r\n var configA, configB;\r\n for (var i = 0; i < $scope.selected.length; i++) {\r\n if ($scope.selected[i] && !configB) {\r\n configB = i;\r\n }\r\n else if ($scope.selected[i] && !configA) {\r\n configA = i;\r\n }\r\n }\r\n $state.go(States.Compare.name, {\r\n configA: configA,\r\n configB: configB,\r\n parentState: States.History.name\r\n });\r\n };\r\n /**\r\n * @method getSelected\r\n * @memberOf module:core.ChangelogCtrl\r\n * @returns {number} The number of selected rows\r\n * @description Computes and returns the number of selected rows\r\n */\r\n $scope.getSelected = function () {\r\n var result = 0;\r\n for (var i = 0; i < $scope.selected.length; i++) {\r\n if ($scope.selected[i]) {\r\n result++;\r\n }\r\n }\r\n return result;\r\n };\r\n /**\r\n * @method exportConfiguration\r\n * @memberOf module:core.ChangelogCtrl\r\n * @param {Object} change - Configuration push entry\r\n * @see {@link module:data.HistoryService}\r\n * @description Exports a JSON configuration file.\r\n */\r\n $scope.exportConfiguration = function (change) {\r\n HistoryService.exportConfiguration(change.configurationSaveInformation.configurationVersion);\r\n };\r\n /**\r\n * @method exportZipConfiguration\r\n * @memberOf module:core.ChangelogCtrl\r\n * @param {Object} change - Configuration push entry\r\n * @see {@link module:data.HistoryService}\r\n * @description Exports a zip configuration file.\r\n */\r\n $scope.exportZipConfiguration = function (change) {\r\n HistoryService.exportZipConfiguration(change.configurationSaveInformation.configurationVersion);\r\n };\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.ACTIONS.changeLog;\r\n });\r\n }\r\n return ChangelogCtrl;\r\n}());\r\nexports.ChangelogCtrl = ChangelogCtrl;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar _ = __webpack_require__(1);\r\nvar ManglerUtil = (function () {\r\n ManglerUtil.$inject = [\"$rootScope\", \"$timeout\", \"$q\", \"BulkService\"];\r\n function ManglerUtil($rootScope, $timeout, $q, BulkService) {\r\n \"ngInject\";\r\n this.$rootScope = $rootScope;\r\n this.$timeout = $timeout;\r\n this.$q = $q;\r\n this.BulkService = BulkService;\r\n this.propertyList = [];\r\n this.zippedPropertyList = [];\r\n }\r\n ManglerUtil.prototype.processManglers = function (manglerList, entityManglers, manglerChain) {\r\n _.forIn(entityManglers, function (value, key) {\r\n _.forIn(value, function (manglerId) {\r\n var mangler = manglerChain[manglerId];\r\n if (!mangler) {\r\n mangler = manglerChain[manglerId] = new ManglerItem(key);\r\n }\r\n var manglerInfo = manglerList[manglerId];\r\n mangler.setInfo(manglerInfo);\r\n });\r\n });\r\n };\r\n ManglerUtil.prototype.processTTL = function (ttl) {\r\n var SECONDS_IN_DAY = 86400;\r\n var SECONDS_IN_HOUR = 3600;\r\n var SECONDS_IN_MINUTE = 60;\r\n var asString = \"\";\r\n var days = Math.floor(ttl / SECONDS_IN_DAY);\r\n var secondsRemainder = ttl % SECONDS_IN_DAY;\r\n var hours = Math.floor(secondsRemainder / SECONDS_IN_HOUR);\r\n secondsRemainder = secondsRemainder % SECONDS_IN_HOUR;\r\n var minutes = Math.floor(secondsRemainder / SECONDS_IN_MINUTE);\r\n secondsRemainder = secondsRemainder % SECONDS_IN_MINUTE;\r\n var seconds = secondsRemainder;\r\n if (days === 1) {\r\n asString += days + \" day \";\r\n }\r\n else if (days > 1) {\r\n asString += days + \" days \";\r\n }\r\n if (hours === 1) {\r\n asString += hours + \" hour \";\r\n }\r\n else if (hours > 1) {\r\n asString += hours + \" hours \";\r\n }\r\n if (minutes === 1) {\r\n asString += minutes + \" minute \";\r\n }\r\n else if (minutes > 1) {\r\n asString += minutes + \" minutes \";\r\n }\r\n if (seconds === 1) {\r\n asString += seconds + \" second\";\r\n }\r\n else if (seconds > 1) {\r\n asString += seconds + \" seconds\";\r\n }\r\n return {\r\n \"days\": days,\r\n \"hours\": hours,\r\n \"minutes\": minutes,\r\n \"seconds\": seconds,\r\n \"asString\": asString\r\n };\r\n };\r\n ManglerUtil.prototype.getPropertyList = function () {\r\n return this.zippedPropertyList;\r\n };\r\n ManglerUtil.prototype.getMandatoryManglerProperties = function (integration, manglerList) {\r\n var _this = this;\r\n this.propertyList = [];\r\n var deferred = this.$q.defer();\r\n var manglerChain = {};\r\n var types = [];\r\n if (!integration.entityData.configuration) {\r\n integration.entityData.configuration = { default: {} };\r\n }\r\n var propData = angular.copy(integration.entityData.configuration.default);\r\n var inheritTree = ['serviceProvider', 'owner', 'authenticationProviderConfiguration', 'authorizationProviderConfiguration', 'logoutProviderConfiguration'];\r\n var list = [];\r\n if (!integration.related) {\r\n integration.related = {};\r\n }\r\n if (!integration.related[integration.entityData.owner]) {\r\n list.push(integration.entityData.owner);\r\n }\r\n if (!integration.related[integration.entityData.serviceProvider]) {\r\n list.push(integration.entityData.serviceProvider);\r\n }\r\n if (!integration.related[integration.entityData.authenticationProviderConfiguration]) {\r\n list.push(integration.entityData.authenticationProviderConfiguration);\r\n }\r\n if (!integration.related[integration.entityData.authorizationProviderConfiguration]) {\r\n list.push(integration.entityData.authorizationProviderConfiguration);\r\n }\r\n if (!integration.related[integration.entityData.logoutProviderConfiguration]) {\r\n list.push(integration.entityData.logoutProviderConfiguration);\r\n }\r\n this.$rootScope.loadingTimeout = this.$timeout(function () {\r\n _this.$rootScope.statusMessage = \"Loading data\";\r\n _this.$rootScope.appLoading = true;\r\n }, 300);\r\n this.BulkService.getBulk(list).then(function (response) {\r\n _.each(response.data, function (item) {\r\n integration.related['@' + item.key] = item;\r\n });\r\n _this.processManglers(manglerList, integration.entityData.manglers, manglerChain);\r\n for (var i = 0; i < inheritTree.length; i++) {\r\n var inheritLevel = inheritTree[i];\r\n var itemManglers = integration.related[integration.entityData[inheritLevel]].entityData.manglers || {};\r\n var itemConfig = integration.related[integration.entityData[inheritLevel]].entityData.configuration || {};\r\n _this.processManglers(manglerList, itemManglers, manglerChain);\r\n propData = _.extend(propData, itemConfig.default || {});\r\n }\r\n _.forIn(manglerChain, function (value, key) {\r\n _this.propertyList = _.union(_this.propertyList, value.inProps, value.outProps);\r\n });\r\n _this.propertyList = _.uniqBy(_this.propertyList, 'propertyName');\r\n types = _.map(_this.propertyList, 'propertyType');\r\n _this.propertyList = _.map(_this.propertyList, 'propertyName');\r\n _this.zippedPropertyList = _.zipObject(_this.propertyList, types);\r\n propData = _.keys(propData);\r\n deferred.resolve(_.omit(_this.zippedPropertyList, propData));\r\n }).finally(function () {\r\n _this.$timeout.cancel(_this.$rootScope.loadingTimeout);\r\n _this.$rootScope.appLoading = false;\r\n deferred.resolve({});\r\n });\r\n return deferred.promise;\r\n };\r\n return ManglerUtil;\r\n}());\r\nexports.ManglerUtil = ManglerUtil;\r\nvar ManglerItemOperation = (function () {\r\n function ManglerItemOperation() {\r\n }\r\n ManglerItemOperation.AUTHENTICATION = 'AUTHENTICATION';\r\n ManglerItemOperation.AUTHORIZATION = 'AUTHORIZATION';\r\n ManglerItemOperation.LOGOUT = 'LOGOUT';\r\n ManglerItemOperation.ANY = 'ANY';\r\n return ManglerItemOperation;\r\n}());\r\nvar ManglerItemPhase = (function () {\r\n function ManglerItemPhase() {\r\n }\r\n ManglerItemPhase.REQUEST = 'REQUEST';\r\n ManglerItemPhase.RESPONSE = 'RESPONSE';\r\n ManglerItemPhase.TOKEN = 'TOKEN';\r\n ManglerItemPhase.ANY = 'ANY';\r\n return ManglerItemPhase;\r\n}());\r\nvar ManglerItemProtocol = (function () {\r\n function ManglerItemProtocol() {\r\n }\r\n ManglerItemProtocol.REST = 'REST';\r\n ManglerItemProtocol.SAML = 'SAML';\r\n ManglerItemProtocol.OAUTH = 'OAUTH';\r\n ManglerItemProtocol.ANY = 'ANY';\r\n return ManglerItemProtocol;\r\n}());\r\nvar ManglerItem = (function () {\r\n function ManglerItem(bucketName) {\r\n this.bucket = {\r\n SAML_REQUEST_MANGLER: {\r\n operation: ManglerItemOperation.ANY,\r\n protocol: ManglerItemProtocol.SAML,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n SAML_RESPONSE_MANGLER: {\r\n operation: ManglerItemOperation.ANY,\r\n protocol: ManglerItemProtocol.SAML,\r\n phase: ManglerItemPhase.RESPONSE\r\n },\r\n // SAML IdP Initiated Logout\r\n SAML_REQUEST_IDP_INITIATED: {\r\n operation: ManglerItemOperation.LOGOUT,\r\n protocol: ManglerItemProtocol.SAML,\r\n phase: ManglerItemPhase.RESPONSE\r\n },\r\n SAML_RESPONSE_IDP_INITIATED: {\r\n operation: ManglerItemOperation.LOGOUT,\r\n protocol: ManglerItemProtocol.SAML,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n // REST AUTHORIZATION\r\n REST_AUTHORIZATION_REQUEST_MANGLER: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.REST,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n REST_AUTHORIZATION_RESPONSE_MANGLER: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.REST,\r\n phase: ManglerItemPhase.RESPONSE\r\n },\r\n // TOKEN MANGLER\r\n AUTHENTICATION_TOKEN_MANGLER: {\r\n operation: ManglerItemOperation.AUTHENTICATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.TOKEN\r\n },\r\n AUTHORIZATION_TOKEN_MANGLER: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.TOKEN\r\n },\r\n SHORT_AUTHORIZATION_TOKEN_MANGLER: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.TOKEN\r\n },\r\n // RESOURCE MANGLER\r\n RESOURCE_AUTHORIZATION_REQUEST: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n RESOURCE_PREFLIGHT_AUTHORIZATION_REQUEST: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n AUTHORIZATION_REQUEST: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n // OAUTH2\r\n OAUTH2_AUTHORIZATION_CODE_REQUEST_MANGLER: {\r\n operation: ManglerItemOperation.AUTHENTICATION,\r\n protocol: ManglerItemProtocol.OAUTH,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n OAUTH2_ACCESS_TOKEN_REQUEST_MANGLER: {\r\n operation: ManglerItemOperation.ANY,\r\n protocol: ManglerItemProtocol.OAUTH,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n OAUTH2_LOGOUT_REQUEST_MANGLER: {\r\n operation: ManglerItemOperation.LOGOUT,\r\n protocol: ManglerItemProtocol.OAUTH,\r\n phase: ManglerItemPhase.REQUEST\r\n },\r\n // XACML\r\n XACML20_REQUEST_MANGLER: {\r\n operation: ManglerItemOperation.AUTHORIZATION,\r\n protocol: ManglerItemProtocol.ANY,\r\n phase: ManglerItemPhase.REQUEST\r\n }\r\n };\r\n var bucket = this.bucket[bucketName];\r\n this.operation = bucket ? bucket.operation : null;\r\n this.protocol = bucket ? bucket.protocol : null;\r\n this.phase = bucket ? bucket.phase : null;\r\n }\r\n ManglerItem.prototype.setInfo = function (info) {\r\n var _this = this;\r\n for (var i = 0; i < info.length; i++) {\r\n var requirement = info[i];\r\n switch (requirement.requirementType) {\r\n case 'IN_PROPERTIES':\r\n this.inProps = requirement.configurationProperties;\r\n break;\r\n case 'OUT_PROPERTIES':\r\n this.outProps = requirement.configurationProperties;\r\n break;\r\n }\r\n }\r\n _.forIn(this.inProps, function (value, key) {\r\n value.phase = _this.phase;\r\n });\r\n _.forIn(this.outProps, function (value, key) {\r\n value.phase = _this.phase;\r\n });\r\n };\r\n ;\r\n ManglerItem.Operation = {\r\n AUTHENTICATION: 'AUTHENTICATION',\r\n AUTHORIZATION: 'AUTHORIZATION',\r\n LOGOUT: 'LOGOUT',\r\n ANY: 'ANY'\r\n };\r\n ManglerItem.Phase = {\r\n REQUEST: 'REQUEST',\r\n RESPONSE: 'RESPONSE',\r\n TOKEN: 'TOKEN',\r\n ANY: 'ANY'\r\n };\r\n ManglerItem.Protocol = {\r\n REST: 'REST',\r\n SAML: 'SAML',\r\n OAUTH: 'OAUTH',\r\n ANY: 'ANY'\r\n };\r\n return ManglerItem;\r\n}());\r\nexports.ManglerItem = ManglerItem;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar angular = __webpack_require__(0);\r\nvar ApcClientDataDirective = (function () {\r\n function ApcClientDataDirective() {\r\n this.templateUrl = function (element, attributes) {\r\n var template = 'module/ui/directive/ClientData/ClientData.html';\r\n if (angular.isDefined(attributes.template)) {\r\n template = attributes.template;\r\n }\r\n return template;\r\n };\r\n this.restrict = 'E';\r\n this.scope = {\r\n data: '=',\r\n allowedList: '@?',\r\n inheritPath: '@',\r\n inheritTree: '@',\r\n readOnly: '=',\r\n template: '@?'\r\n };\r\n this.controller = ApcClientDataCtrl;\r\n }\r\n return ApcClientDataDirective;\r\n}());\r\nexports.ApcClientDataDirective = ApcClientDataDirective;\r\nvar ApcClientDataCtrl = (function () {\r\n ApcClientDataCtrl.$inject = [\"$scope\", \"$sce\", \"DataCollectorService\", \"UserService\", \"TooltipService\", \"InputEscapeService\", \"$filter\"];\r\n function ApcClientDataCtrl($scope, $sce, DataCollectorService, UserService, TooltipService, InputEscapeService, $filter) {\r\n \"ngInject\";\r\n $scope.user = UserService;\r\n $scope.filter = $filter('boolean');\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.clientDataTooltips = result.data.CLIENT_DATA.clientData;\r\n $scope.getTooltip = function (property) {\r\n if (!$scope.clientDataTooltips[property + '.field']) {\r\n return;\r\n }\r\n return $scope.clientDataTooltips[property + '.field'];\r\n };\r\n });\r\n var fieldInvalidOrNull = function (property, field) {\r\n if (field.$invalid) {\r\n return true;\r\n }\r\n var clientData = $scope.data.entityData.clientData;\r\n if (clientData && property in clientData) {\r\n return !clientData[property];\r\n }\r\n return false;\r\n };\r\n $scope.properties = [\r\n { field: 'displayName', name: 'Display Name', type: 'string' },\r\n { field: 'logoUrl', name: 'Logo Url', type: 'string' },\r\n { field: 'passiveAuthnEnabled', name: 'Enable Passive AuthN', type: 'boolean' },\r\n { field: 'authPerAggregator', name: 'Auth / Aggregator', type: 'boolean' },\r\n { field: 'authPerBrowserSession', name: 'Auth / Browser Session', type: 'boolean' },\r\n { field: 'iFrameRequired', name: 'IFrame Required', type: 'boolean' },\r\n { field: 'iFrameWidth', name: 'IFrame Width', type: 'number', addon: 'px' },\r\n { field: 'iFrameHeight', name: 'IFrame Height', type: 'number', addon: 'px' },\r\n { field: 'preflightMaxResources', name: 'Max Number of Preflight Resources', type: 'number' },\r\n //{field: 'preloadToken', name: 'Preload Token', type: 'boolean'},\r\n { field: 'isProxy', name: 'Proxy MVPD', type: 'boolean' },\r\n { field: 'tempPass', name: 'TempPass', type: 'boolean' }\r\n ];\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.clear = function (property) {\r\n var value = $scope.data.entityData.clientData[property];\r\n if (!value) {\r\n delete $scope.data.entityData.clientData[property];\r\n }\r\n };\r\n $scope.clearBoolean = function (property) {\r\n if ($scope.data.entityData.clientData[property] === null) {\r\n delete $scope.data.entityData.clientData[property];\r\n }\r\n };\r\n $scope.deleteProperty = function (property) {\r\n if ($scope.data.entityData.clientData && $scope.inheritData[property]) {\r\n delete $scope.data.entityData.clientData[property];\r\n }\r\n };\r\n $scope.hideProperty = function (property) {\r\n if ($scope.inheritData[property]) {\r\n return;\r\n }\r\n if ($scope.data.entityData.clientData) {\r\n delete $scope.data.entityData.clientData[property];\r\n }\r\n for (var i = 0; i < $scope.properties.length; i++) {\r\n if ($scope.properties[i].field === property) {\r\n $scope.properties[i].added = false;\r\n }\r\n }\r\n };\r\n $scope.addProperty = function (property) {\r\n for (var i = 0; i < $scope.properties.length; i++) {\r\n if ($scope.properties[i].field === property) {\r\n $scope.properties[i].added = true;\r\n }\r\n }\r\n };\r\n $scope.removeIfNullOrInvalid = function (property, clientDataForm) {\r\n var field = clientDataForm['clientData-' + property];\r\n if (fieldInvalidOrNull(property, field)) {\r\n delete $scope.data.entityData.clientData[property];\r\n }\r\n };\r\n $scope.isFieldInvalid = function (property, clientDataForm) {\r\n var field = clientDataForm['clientData-' + property];\r\n if (field) {\r\n return field.$invalid && field.$dirty;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n $scope.getProperties = function () {\r\n var result = [];\r\n for (var i = 0; i < $scope.properties.length; i++) {\r\n if (!$scope.properties[i].added && !$scope.isDefined($scope.properties[i].field) && !$scope.inheritData[$scope.properties[i].field]) {\r\n result.push($scope.properties[i]);\r\n }\r\n }\r\n return result;\r\n };\r\n $scope.isDefined = function (property) {\r\n return ($scope.data.entityData.clientData) ? angular.isDefined($scope.data.entityData.clientData[property]) : false;\r\n };\r\n $scope.onNumberKeyPress = function (event) {\r\n if (event.keyCode === 32) {\r\n event.preventDefault();\r\n }\r\n };\r\n $scope.inheritData = {};\r\n if ($scope.inheritPath) {\r\n var inheritChain = $scope.inheritPath.split(':');\r\n for (var i = 0; i < $scope.properties.length; i++) {\r\n var field = $scope.properties[i].field;\r\n for (var j = 0; j < inheritChain.length; j++) {\r\n var inheritLevel = inheritChain[j];\r\n var inheritClientData = $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.clientData;\r\n var inheritValue = void 0;\r\n if (inheritClientData) {\r\n inheritValue = inheritClientData[field];\r\n if (angular.isDefined(inheritValue)) {\r\n $scope.inheritData[field] = {\r\n value: inheritValue,\r\n target: inheritLevel\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n $scope.useInheritTemplate = function (field) {\r\n var result = $scope.inheritData[field] ? 'Use inherited value: ' + InputEscapeService.escapeHtml($scope.inheritData[field].value) + '' : 'This property does not have an inherited value';\r\n return $sce.trustAsHtml(result);\r\n };\r\n $scope.inheritanceTemplate = function (field, name) {\r\n var result = '

    ' + name + ' - Property Inheritance Chain

    ';\r\n var inheritTreeData = $scope.inheritTree.split(':');\r\n var inheritChain = $scope.inheritPath.split(':');\r\n result += '';\r\n for (var j = inheritTreeData.length - 1; j >= 0; j--) {\r\n var inheritLayerName = inheritTreeData[j];\r\n var inheritLayerValue = 'Not set';\r\n var style = '';\r\n var inherited = '';\r\n var padding = 10 * (inheritTreeData.length - j);\r\n if (j === 0) {\r\n inheritLayerValue = $scope.data.entityData.clientData ? $scope.data.entityData.clientData[field] : 'Not set';\r\n }\r\n else {\r\n var inheritEntity = inheritChain[j - 1];\r\n inheritLayerValue = $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.clientData ? $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.clientData[field] : 'Not set';\r\n }\r\n if (!angular.isDefined(inheritLayerValue)) {\r\n inheritLayerValue = 'Not set';\r\n }\r\n if (inheritLayerValue !== 'Not set') {\r\n if (j !== 0) {\r\n result = result.replace(/inherited/g, '');\r\n inherited = 'inherited';\r\n }\r\n if (typeof inheritLayerValue === 'boolean') {\r\n inheritLayerValue = $scope.filter(inheritLayerValue);\r\n }\r\n result = result.replace('hasValue', '');\r\n style = 'hasValue';\r\n }\r\n result += '';\r\n }\r\n result += '
    Level:Value:
    ' + inheritLayerName + '' + InputEscapeService.escapeHtml(inheritLayerValue) + '
    ';\r\n return $sce.trustAsHtml(result);\r\n };\r\n }\r\n for (var k = 0; k < $scope.properties.length; k++) {\r\n if ($scope.isDefined($scope.properties[k].field)) {\r\n $scope.properties[k].added = true;\r\n }\r\n }\r\n $scope.infoTooltip = $sce.trustAsHtml('This is a modified value, not the one inherited.
    Click to see the inheritance chain.');\r\n $scope.isVisible = function () {\r\n if (!$scope.readOnly) {\r\n return true;\r\n }\r\n return $scope.getProperties().length !== $scope.properties.length;\r\n };\r\n }\r\n return ApcClientDataCtrl;\r\n}());\r\nexports.ApcClientDataCtrl = ApcClientDataCtrl;\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar ApcManglersDirective = (function () {\r\n function ApcManglersDirective() {\r\n this.templateUrl = function (element, attributes) {\r\n var template = 'module/ui/directive/Manglers/Manglers.html';\r\n if (angular.isDefined(attributes.template)) {\r\n template = attributes.template;\r\n }\r\n return template;\r\n };\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n 'data': '=',\r\n 'manglers': '=',\r\n 'inheritPath': '@',\r\n 'inheritTree': '@',\r\n 'operation': '@',\r\n 'template': '@?',\r\n 'readOnly': '=',\r\n 'allowedList': '@?'\r\n };\r\n this.controller = ApcManglersCtrl;\r\n }\r\n return ApcManglersDirective;\r\n}());\r\nexports.ApcManglersDirective = ApcManglersDirective;\r\nvar ApcManglersCtrl = (function () {\r\n ApcManglersCtrl.$inject = [\"$scope\", \"$sce\", \"ManglerUtil\", \"UserService\", \"$filter\", \"TooltipService\", \"InputEscapeService\"];\r\n function ApcManglersCtrl($scope, $sce, ManglerUtil, UserService, $filter, TooltipService, InputEscapeService) {\r\n \"ngInject\";\r\n $scope.user = UserService;\r\n $scope.filter = $filter('boolean');\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.manglerTooltips = result.data.MANGLERS;\r\n $scope.getTooltip = function (manglerid, propertyName, type) {\r\n if (!$scope.manglerTooltips[manglerid]) {\r\n return;\r\n }\r\n var manglerTooltips = $scope.manglerTooltips[manglerid];\r\n if (!manglerTooltips[propertyName + \".\" + type]) {\r\n return;\r\n }\r\n return manglerTooltips[propertyName + \".\" + type];\r\n };\r\n });\r\n var generateManglerProps = function () {\r\n var manglerChain = {};\r\n var inheritTree = $scope.inheritPath ? $scope.inheritPath.split(':') : [];\r\n ManglerUtil.processManglers($scope.manglers, $scope.data.entityData.manglers, manglerChain);\r\n for (var i = 0; i < inheritTree.length; i++) {\r\n var inheritLevel = inheritTree[i];\r\n if ($scope.data.related[$scope.data.entityData[inheritLevel]] != null) {\r\n ManglerUtil.processManglers($scope.manglers, $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.manglers, manglerChain);\r\n }\r\n }\r\n _.forIn(manglerChain, function (value, key) {\r\n if (value.operation === $scope.operation || value.operation === 'ANY') {\r\n var newProps = _.union(value.inProps, value.outProps);\r\n newProps = _.map(newProps, function (prop) {\r\n prop.manglerId = key;\r\n return prop;\r\n });\r\n $scope.props = _.union($scope.props, newProps);\r\n }\r\n });\r\n $scope.props = _.uniqBy($scope.props, 'propertyName');\r\n };\r\n $scope.clear = function (property) {\r\n var value = $scope.data.entityData.configuration.default[property];\r\n if (!value) {\r\n delete $scope.data.entityData.configuration.default[property];\r\n }\r\n };\r\n $scope.clearBoolean = function (property) {\r\n if ($scope.data.entityData.configuration.default[property] === null) {\r\n delete $scope.data.entityData.configuration.default[property];\r\n }\r\n };\r\n $scope.deleteProperty = function (property) {\r\n if (!$scope.inheritData[property]) {\r\n return;\r\n }\r\n if ($scope.data.entityData.configuration && $scope.data.entityData.configuration.default) {\r\n delete $scope.data.entityData.configuration.default[property];\r\n }\r\n };\r\n $scope.isFieldInvalid = function (property, manglerForm) {\r\n if (manglerForm['mangler-' + property]) {\r\n return manglerForm['mangler-' + property].$invalid && manglerForm['mangler-' + property].$dirty;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n $scope.isDefined = function (property) {\r\n return ($scope.data.entityData.configuration && $scope.data.entityData.configuration.default) ? angular.isDefined($scope.data.entityData.configuration.default[property]) : false;\r\n };\r\n $scope.isBoolean = function (property) {\r\n return property.propertyType === 'java.lang.Boolean' || property.propertyType === 'boolean';\r\n };\r\n $scope.onNumberKeyPress = function (event) {\r\n if (event.keyCode === 32) {\r\n event.preventDefault();\r\n }\r\n };\r\n $scope.getPropsByPhase = function (phase) {\r\n var result = [];\r\n for (var i = 0; i < $scope.props.length; i++) {\r\n if ($scope.props[i].phase === phase || $scope.props[i].phase === 'ANY') {\r\n result.push($scope.props[i]);\r\n }\r\n }\r\n return result;\r\n };\r\n $scope.selectPhase = function (phase) {\r\n if ($scope.selectedPhase === phase) {\r\n $scope.selectedPhase = null;\r\n }\r\n else {\r\n $scope.selectedPhase = phase;\r\n }\r\n };\r\n $scope.getInheritedTooltip = function (propertyName) {\r\n var value = $scope.inheritData[propertyName] ? $scope.inheritData[propertyName].value : null;\r\n if (angular.isObject(value)) {\r\n value = $filter('json')(value);\r\n }\r\n if (propertyName.substr(propertyName.length - 3) === \"ttl\") {\r\n var processedTtl = ManglerUtil.processTTL(value);\r\n value = processedTtl.asString;\r\n }\r\n var result = $scope.inheritData[propertyName] ? 'Use inherited value: ' + InputEscapeService.escapeHtml(value) + '' : 'This property does not have an inherited value';\r\n return $sce.trustAsHtml(result);\r\n };\r\n $scope.props = [];\r\n generateManglerProps();\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.inheritData = {};\r\n if ($scope.inheritPath) {\r\n var inheritChain = $scope.inheritPath.split(':');\r\n for (var i = 0; i < $scope.props.length; i++) {\r\n var field = $scope.props[i].propertyName;\r\n for (var j = 0; j < inheritChain.length; j++) {\r\n var inheritLevel = inheritChain[j];\r\n if ($scope.data.related[$scope.data.entityData[inheritLevel]].entityData.configuration) {\r\n var inheritClientData = $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.configuration.default;\r\n var inheritValue = void 0;\r\n if (inheritClientData) {\r\n inheritValue = inheritClientData[field];\r\n if (angular.isDefined(inheritValue)) {\r\n $scope.inheritData[field] = {\r\n value: inheritValue,\r\n target: inheritLevel\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n $scope.inheritanceTemplate = function (field) {\r\n var result = '

    ' + $filter('propertyAlias')(field) + ' - Property Inheritance Chain

    ';\r\n var inheritTreeData = $scope.inheritTree.split(':');\r\n var inheritChain = $scope.inheritPath.split(':');\r\n result += '';\r\n for (var j = inheritTreeData.length - 1; j >= 0; j--) {\r\n var inheritLayerName = inheritTreeData[j];\r\n var inheritLayerValue = 'Not set';\r\n var style = '';\r\n var inherited = '';\r\n var padding = 10 * (inheritTreeData.length - j);\r\n if (j === 0) {\r\n inheritLayerValue = ($scope.data.entityData.configuration && $scope.data.entityData.configuration.default) ? $scope.data.entityData.configuration.default[field] : 'Not set';\r\n }\r\n else {\r\n var inheritEntity = inheritChain[j - 1];\r\n inheritLayerValue = ($scope.data.related[$scope.data.entityData[inheritEntity]].entityData.configuration && $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.configuration.default) ? $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.configuration.default[field] : 'Not set';\r\n }\r\n if (!angular.isDefined(inheritLayerValue)) {\r\n inheritLayerValue = 'Not set';\r\n }\r\n if (inheritLayerValue !== 'Not set') {\r\n if (j !== 0) {\r\n result = result.replace(/inherited/g, '');\r\n inherited = 'inherited';\r\n }\r\n if (typeof inheritLayerValue === 'boolean') {\r\n inheritLayerValue = $scope.filter(inheritLayerValue);\r\n }\r\n result = result.replace('hasValue', '');\r\n style = 'hasValue';\r\n }\r\n if (inheritLayerValue !== 'Not set' && angular.isObject(inheritLayerValue)) {\r\n inheritLayerValue = $filter('json')(inheritLayerValue);\r\n }\r\n if (field.substr(field.length - 3) === \"ttl\" && inheritLayerValue !== \"Not set\") {\r\n var processedTtl = ManglerUtil.processTTL(inheritLayerValue);\r\n inheritLayerValue = processedTtl.asString;\r\n }\r\n result += '';\r\n }\r\n result += '
    Level:Value:
    ' + inheritLayerName + '' + InputEscapeService.escapeHtml(inheritLayerValue) + '
    ';\r\n return $sce.trustAsHtml(result);\r\n };\r\n }\r\n $scope.infoTooltip = $sce.trustAsHtml('This is a modified value, not the one inherited.
    Click to see the inheritance chain.');\r\n }\r\n return ApcManglersCtrl;\r\n}());\r\nexports.ApcManglersCtrl = ApcManglersCtrl;\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcOauthConsumerCredentialsDirective = (function () {\r\n function ApcOauthConsumerCredentialsDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n title: '@'\r\n };\r\n this.template = __webpack_require__(213);\r\n this.controller = ApcOauthConsumerCredentialsCtrl;\r\n }\r\n return ApcOauthConsumerCredentialsDirective;\r\n}());\r\nexports.ApcOauthConsumerCredentialsDirective = ApcOauthConsumerCredentialsDirective;\r\nvar ApcOauthConsumerCredentialsCtrl = (function () {\r\n ApcOauthConsumerCredentialsCtrl.$inject = [\"$scope\", \"TooltipService\"];\r\n function ApcOauthConsumerCredentialsCtrl($scope, TooltipService) {\r\n \"ngInject\";\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuthConsumerCredentials;\r\n });\r\n }\r\n return ApcOauthConsumerCredentialsCtrl;\r\n}());\r\nexports.ApcOauthConsumerCredentialsCtrl = ApcOauthConsumerCredentialsCtrl;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcOauth2ClientCredentialsDirective = (function () {\r\n function ApcOauth2ClientCredentialsDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n title: '@'\r\n };\r\n this.template = __webpack_require__(214);\r\n this.controller = ApcOauth2ClientCredentialsCtrl;\r\n }\r\n return ApcOauth2ClientCredentialsDirective;\r\n}());\r\nexports.ApcOauth2ClientCredentialsDirective = ApcOauth2ClientCredentialsDirective;\r\nvar ApcOauth2ClientCredentialsCtrl = (function () {\r\n ApcOauth2ClientCredentialsCtrl.$inject = [\"$scope\", \"TooltipService\"];\r\n function ApcOauth2ClientCredentialsCtrl($scope, TooltipService) {\r\n \"ngInject\";\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuth2ClientCredentials;\r\n });\r\n }\r\n return ApcOauth2ClientCredentialsCtrl;\r\n}());\r\nexports.ApcOauth2ClientCredentialsCtrl = ApcOauth2ClientCredentialsCtrl;\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcOAuth2AccessTokenDirective = (function () {\r\n function ApcOAuth2AccessTokenDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n title: '@'\r\n };\r\n this.template = __webpack_require__(215);\r\n this.controller = ApcOAuth2AccessTokenCtrl;\r\n }\r\n return ApcOAuth2AccessTokenDirective;\r\n}());\r\nexports.ApcOAuth2AccessTokenDirective = ApcOAuth2AccessTokenDirective;\r\nvar ApcOAuth2AccessTokenCtrl = (function () {\r\n ApcOAuth2AccessTokenCtrl.$inject = [\"$scope\", \"TooltipService\"];\r\n function ApcOAuth2AccessTokenCtrl($scope, TooltipService) {\r\n \"ngInject\";\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuth2Endpoint;\r\n });\r\n }\r\n return ApcOAuth2AccessTokenCtrl;\r\n}());\r\nexports.ApcOAuth2AccessTokenCtrl = ApcOAuth2AccessTokenCtrl;\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcOauthEndpointDirective = (function () {\r\n function ApcOauthEndpointDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n type: '@',\r\n title: '@'\r\n };\r\n this.template = __webpack_require__(216);\r\n this.controller = ApcOauthEndpointCtrl;\r\n }\r\n return ApcOauthEndpointDirective;\r\n}());\r\nexports.ApcOauthEndpointDirective = ApcOauthEndpointDirective;\r\nvar ApcOauthEndpointCtrl = (function () {\r\n ApcOauthEndpointCtrl.$inject = [\"$scope\", \"TooltipService\"];\r\n function ApcOauthEndpointCtrl($scope, TooltipService) {\r\n \"ngInject\";\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuthEndpoint;\r\n });\r\n }\r\n return ApcOauthEndpointCtrl;\r\n}());\r\nexports.ApcOauthEndpointCtrl = ApcOauthEndpointCtrl;\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\n/**\r\n * @class PanelListDirective\r\n * @memberOf module:ui\r\n * @see module:ui.PanelListCtrl\r\n * @example\r\n * \r\n * @description Displays a panel with title, {@link module:ui.SearchboxDirective}, pagination and a table populated with given data.\r\n */\r\nvar ApcPanelListDirective = (function () {\r\n function ApcPanelListDirective() {\r\n this.template = function (element, attr) {\r\n attr.usePanel = (angular.isDefined(attr.usePanel)) ? attr.usePanel : false;\r\n if (attr.usePanel) {\r\n return __webpack_require__(217);\r\n }\r\n else {\r\n return __webpack_require__(218);\r\n }\r\n };\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n usePanel: '=?',\r\n /**\r\n * @name module:ui.PanelListDirective#panelTitle\r\n * @type {String}\r\n * @description Panel title\r\n */\r\n 'panelTitle': '@',\r\n /**\r\n * @name module:ui.PanelListDirective#itemRenderer\r\n * @type {String}\r\n * @description Path to external item renderer\r\n */\r\n 'itemRenderer': '@',\r\n /**\r\n * @name module:ui.PanelListDirective#columns\r\n * @type {Array}\r\n * @example\r\n * [{\r\n * name: 'Column name',\r\n * sortable: true || false,\r\n * sorted: true || false,\r\n * sortAsc: true || false,\r\n * sortField: 'fieldToSortBy',\r\n * class: 'additional-styling-class'\r\n * }]\r\n * @description Columns data\r\n */\r\n 'columns': '=',\r\n /**\r\n * @name module:ui.PanelListDirective#service\r\n * @type {Object}\r\n * @description The service used to fetch {@link module:ui.PanelListDirective#data}. This service needs a getPage method which should accept pagination, sorting and search params. See {@link module:ui.PanelListCtrl#updateData}\r\n */\r\n 'service': '=',\r\n /**\r\n * @name module:ui.PanelListDirective#data\r\n * @type {Object}\r\n * @example\r\n * {\r\n * entities: [{},{}],\r\n * count: totalItemsCount\r\n * }\r\n * @description Initial data to display\r\n */\r\n 'data': '=',\r\n /**\r\n * @name module:ui.PanelListDirective#pageSize\r\n * @type {Number}\r\n * @default 20\r\n * @description Page size value used by pagination.\r\n */\r\n 'pageSize': '=?',\r\n /**\r\n * @name module:ui.PanelListDirective#onItemClick\r\n * @type {Function}\r\n * @description Item click handler\r\n */\r\n 'onItemClick': '&?',\r\n 'fetchRelated': '=?'\r\n };\r\n this.controller = ApcPanelListCtrl;\r\n }\r\n return ApcPanelListDirective;\r\n}());\r\nexports.ApcPanelListDirective = ApcPanelListDirective;\r\nvar ApcPanelListCtrl = (function () {\r\n ApcPanelListCtrl.$inject = [\"$scope\", \"$rootScope\", \"$timeout\", \"SearchEvent\", \"ResilienceService\"];\r\n function ApcPanelListCtrl($scope, $rootScope, $timeout, SearchEvent, ResilienceService) {\r\n \"ngInject\";\r\n /**\r\n * @name module:ui.PanelListCtrl#updateData\r\n * @method\r\n * @private\r\n * @description Calls 'getPage' method on {@link module:ui.PanelListDirective#service} with pagination, search and sorting data\r\n */\r\n var updateData = function () {\r\n var sortOrder = ($scope.sortingColumn.sortAsc) ? 'ASC' : 'DESC';\r\n $scope.loadingTimeout = $timeout(function () {\r\n $scope.loading = true;\r\n }, 300);\r\n $scope.service.getPage($scope.pagination.currentPage, $scope.sortingColumn.sortField, sortOrder, encodeURIComponent($scope.searchTerm), $scope.fetchRelated).then(function (response) {\r\n $scope.data = response.data;\r\n $timeout.cancel($scope.loadingTimeout);\r\n $scope.loading = false;\r\n });\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#selectDefaultSortingColumn\r\n * @method\r\n * @private\r\n * @description Iterates over {@link module:ui.PanelListDirective#columns} and sets the default sorting column.\r\n */\r\n var selectDefaultSortingColumn = function () {\r\n for (var i = 0; i < $scope.columns.length; i++) {\r\n if ($scope.columns[i].sorted) {\r\n $scope.sortingColumn = $scope.columns[i];\r\n }\r\n }\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#loading\r\n * @type {Boolean}\r\n * @default false\r\n * @description Loading flag\r\n */\r\n $scope.loading = false;\r\n $scope.fetchRelated = (angular.isDefined($scope.fetchRelated)) ? $scope.fetchRelated : false;\r\n $scope.usePanel = (angular.isDefined($scope.usePanel)) ? $scope.usePanel : false;\r\n /**\r\n * @name module:ui.PanelListCtrl#pagination\r\n * @type {Object}\r\n * @default {currentPage: 1, pageSize: 20}\r\n * @description Pagination data\r\n */\r\n $scope.pagination = {\r\n currentPage: 1,\r\n pageSize: $scope.pageSize || 20\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#searchTerm\r\n * @type {String}\r\n * @default ''\r\n * @description Search data. {@link module:ui.SearchboxCtrl#searchTerm}\r\n */\r\n $scope.searchTerm = '';\r\n /**\r\n * @name module:ui.PanelListCtrl#onColumnSort\r\n * @method\r\n * @param {Object} column - column item\r\n * @description Sets the sorting data and calls {@link module:ui.PanelListCtrl#updateData}\r\n */\r\n $scope.onColumnSort = function (column) {\r\n if (column.sortable) {\r\n for (var i = 0; i < $scope.columns.length; i++) {\r\n $scope.columns[i].sorted = false;\r\n }\r\n column.sorted = true;\r\n column.sortAsc = !column.sortAsc;\r\n $scope.sortingColumn = column;\r\n updateData();\r\n }\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#onPageChange\r\n * @method\r\n * @description Sets the pagination data and calls {@link module:ui.PanelListCtrl#updateData}\r\n */\r\n $scope.onPageChange = function () {\r\n updateData();\r\n $rootScope.$broadcast(\"onPageChange\");\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#onSearch\r\n * @method\r\n * @description Sets the search data and calls {@link module:ui.PanelListCtrl#updateData}\r\n */\r\n $scope.onSearch = function (searchTerm) {\r\n $scope.pagination.currentPage = 1;\r\n $scope.searchTerm = searchTerm;\r\n updateData();\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#onRowClick\r\n * @method\r\n * @param {Object} item - clicked item\r\n * @description Calls {@link module:ui.PanelListDirective#onItemClick} handler if defined\r\n */\r\n $scope.onRowClick = function (item) {\r\n if ($scope.onItemClick()) {\r\n $scope.onItemClick()(item);\r\n }\r\n };\r\n /**\r\n * @name module:ui.PanelListCtrl#onSearchReset\r\n * @method\r\n * @description Resets the search data and calls {@link module:ui.PanelListCtrl#updateData}\r\n */\r\n $scope.onSearchReset = function () {\r\n $scope.pagination.currentPage = 1;\r\n $scope.searchTerm = '';\r\n updateData();\r\n };\r\n selectDefaultSortingColumn();\r\n $scope.$on(SearchEvent.RESET, function () {\r\n $scope.onSearchReset();\r\n });\r\n $scope.$on(SearchEvent.SEARCH, function (event, payload) {\r\n $scope.onSearch(payload);\r\n });\r\n $scope.isDegraded = function () {\r\n return ResilienceService.getResilienceState();\r\n };\r\n }\r\n return ApcPanelListCtrl;\r\n}());\r\nexports.ApcPanelListCtrl = ApcPanelListCtrl;\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar ApcPlatformSwitcherDirective = (function () {\r\n function ApcPlatformSwitcherDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.transclude = true;\r\n this.scope = {\r\n platformList: '=',\r\n selectedPlatform: '@',\r\n onChange: '&?',\r\n data: '=',\r\n properties: '@',\r\n inheritPath: '@?',\r\n inheritTree: '@?',\r\n manglers: '=?',\r\n operation: '@?'\r\n };\r\n this.template = __webpack_require__(219);\r\n this.controller = ApcPlatformSwitcherCtrl;\r\n }\r\n return ApcPlatformSwitcherDirective;\r\n}());\r\nexports.ApcPlatformSwitcherDirective = ApcPlatformSwitcherDirective;\r\nvar ApcPlatformSwitcherCtrl = (function () {\r\n ApcPlatformSwitcherCtrl.$inject = [\"$scope\", \"$element\", \"$attrs\", \"ManglerUtil\"];\r\n function ApcPlatformSwitcherCtrl($scope, $element, $attrs, ManglerUtil) {\r\n \"ngInject\";\r\n $scope.props = [];\r\n $scope.manglerChain = {};\r\n var getOveridedStatus = function (platformId) {\r\n var result = false;\r\n _.each($scope.data.related.platformConfigurations, function (config) {\r\n if (platformId === config.entityData.platform.split(':')[1]) {\r\n if ($attrs.properties.indexOf('mangler') !== -1) {\r\n if (config.entityData.configuration && config.entityData.configuration.default && Object.keys(config.entityData.configuration.default).length > 0) {\r\n $scope.generateManglerProps($scope.getPlatformIndex(platformId));\r\n var overridedManglers = $scope.extractOverridedMenglersForPlatform($scope.data.related.platformConfigurations, platformId);\r\n for (var i = 0; i < overridedManglers.length; i++) {\r\n var prop = _.find($scope.props, { propertyName: overridedManglers[i] });\r\n if (prop) {\r\n var bucket = _.find($scope.manglerChain, { id: prop.manglerId });\r\n if (bucket && ($scope.operation === bucket.operation || bucket.operation === \"ANY\")) {\r\n result = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (config.entityData.enabledPlatformServices && (platformId === 'iOS' || platformId === 'tvOS' || platformId === 'roku')) {\r\n result = true;\r\n }\r\n if ($attrs.properties.indexOf('clientData') !== -1) {\r\n if (config.entityData.clientData && Object.keys(config.entityData.clientData).length > 0) {\r\n result = true;\r\n }\r\n }\r\n }\r\n });\r\n return result;\r\n };\r\n $scope.getPlatformIndex = function (platformId) {\r\n var platformConfiguration = $scope.data.related.platformConfigurations;\r\n for (var i = 0; i < platformConfiguration.length; i++) {\r\n if (platformId === platformConfiguration[i].entityData.platform.split(':')[1]) {\r\n return i;\r\n }\r\n }\r\n };\r\n $scope.generateManglerProps = function (platformIndex) {\r\n $scope.props = [];\r\n $scope.manglerChain = {};\r\n var inheritTree = $scope.inheritPath ? $scope.inheritPath.split(':') : [];\r\n ManglerUtil.processManglers($scope.manglers, $scope.data.related.platformConfigurations[0].manglers, $scope.manglerChain);\r\n for (var i = 0; i < inheritTree.length; i++) {\r\n var inheritLevel = inheritTree[i];\r\n if ($scope.data.related.platformConfigurations[platformIndex].related && $scope.data.related.platformConfigurations[platformIndex].related[$scope.data.related.platformConfigurations[0].entityData[inheritLevel]] != null) {\r\n ManglerUtil.processManglers($scope.manglers, $scope.data.related.platformConfigurations[platformIndex].related[$scope.data.related.platformConfigurations[platformIndex].entityData[inheritLevel]].entityData.manglers, $scope.manglerChain);\r\n }\r\n }\r\n _.forIn($scope.manglerChain, function (value, key) {\r\n if (value.operation === $scope.operation || value.operation === 'ANY') {\r\n var newProps = _.union(value.inProps, value.outProps);\r\n newProps = _.map(newProps, function (prop) {\r\n prop.manglerId = key;\r\n return prop;\r\n });\r\n $scope.props = _.union($scope.props, newProps);\r\n }\r\n });\r\n $scope.props = _.uniqBy($scope.props, 'propertyName');\r\n };\r\n $scope.extractOverridedMenglersForPlatform = function (platformConfiguration, platformId) {\r\n var overridedManglers = [];\r\n if (platformConfiguration.length === 0) {\r\n return overridedManglers;\r\n }\r\n _.each(platformConfiguration, function (config) {\r\n if (platformId === config.entityData.platform.split(':')[1]) {\r\n if (config.entityData.configuration && config.entityData.configuration.default && Object.keys(config.entityData.configuration.default).length > 0) {\r\n for (var propertyName in config.entityData.configuration.default) {\r\n overridedManglers.push(propertyName);\r\n }\r\n }\r\n }\r\n });\r\n return overridedManglers;\r\n };\r\n var setPlatformIconAndTooltip = function () {\r\n _.each($scope.platformList, function (platform) {\r\n switch (platform.entityData.id) {\r\n case 'all':\r\n platform.icon = 'circle';\r\n platform.isOverided = false;\r\n break;\r\n case 'xboxOne':\r\n platform.icon = 'game';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'xbox':\r\n platform.icon = 'game';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'XBOX':\r\n platform.icon = 'game';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'REST':\r\n platform.icon = 'deviceDesktop';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'JS':\r\n platform.icon = 'deviceLaptop';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'Android':\r\n platform.icon = 'android';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'roku':\r\n platform.icon = 'deviceTV';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'tvOS':\r\n platform.icon = 'apple';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n case 'fireTV':\r\n platform.icon = 'android';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n default:\r\n platform.icon = 'devices';\r\n platform.isOverided = getOveridedStatus(platform.entityData.id);\r\n break;\r\n }\r\n });\r\n };\r\n setPlatformIconAndTooltip();\r\n $scope.selectPlatform = function (value) {\r\n if ($scope.onChange()) {\r\n $scope.onChange()(value);\r\n setPlatformIconAndTooltip();\r\n }\r\n };\r\n }\r\n return ApcPlatformSwitcherCtrl;\r\n}());\r\nexports.ApcPlatformSwitcherCtrl = ApcPlatformSwitcherCtrl;\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcSamlMetadataInfoDirective = (function () {\r\n function ApcSamlMetadataInfoDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n 'data': '='\r\n };\r\n this.template = __webpack_require__(220);\r\n this.controller = ApcSamlMetadataInfoCtrl;\r\n }\r\n return ApcSamlMetadataInfoDirective;\r\n}());\r\nexports.ApcSamlMetadataInfoDirective = ApcSamlMetadataInfoDirective;\r\nvar ApcSamlMetadataInfoCtrl = (function () {\r\n ApcSamlMetadataInfoCtrl.$inject = [\"$scope\", \"$filter\", \"TooltipService\"];\r\n function ApcSamlMetadataInfoCtrl($scope, $filter, TooltipService) {\r\n \"ngInject\";\r\n $scope.parseMetadata = function (metadata) {\r\n return $filter('metadata')(metadata, true);\r\n };\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.samlMetadataInfo;\r\n });\r\n }\r\n return ApcSamlMetadataInfoCtrl;\r\n}());\r\nexports.ApcSamlMetadataInfoCtrl = ApcSamlMetadataInfoCtrl;\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\n/**\r\n * @class SearchboxDirective\r\n * @memberOf module:ui\r\n * @see module:ui.SearchboxCtrl\r\n * @example\r\n * \r\n * @description Displays a searchbox with reset button and search as you type functionality.\r\n */\r\nvar ApcSearchboxDirective = (function () {\r\n function ApcSearchboxDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n /**\r\n * @name module:ui.SearchboxDirective#searchDelay\r\n * @type {string}\r\n * @default 250\r\n * @description Search delay. Only works if {@link module:ui.SearchboxDirective#realTime} is true\r\n */\r\n 'searchDelay': '=?',\r\n /**\r\n * @name module:ui.SearchboxDirective#realTime\r\n * @type {string}\r\n * @default true\r\n * @description Enables/disables the realtime feature.\r\n */\r\n 'realTime': '=?',\r\n /**\r\n * @name module:ui.SearchboxDirective#onSearch\r\n * @type {string}\r\n * @description Handler to call when search is performed.\r\n */\r\n 'onSearch': '&',\r\n /**\r\n * @name module:ui.SearchboxDirective#onReset\r\n * @type {string}\r\n * @description Handler to call when search is reset\r\n */\r\n 'onReset': '&',\r\n /**\r\n * @name module:ui.SearchboxDirective#id\r\n * @type {string}\r\n * @description Custom html id\r\n */\r\n customId: '@?'\r\n };\r\n this.template = __webpack_require__(221);\r\n this.controller = ApcSearchboxCtrl;\r\n }\r\n return ApcSearchboxDirective;\r\n}());\r\nexports.ApcSearchboxDirective = ApcSearchboxDirective;\r\nvar ApcSearchboxCtrl = (function () {\r\n ApcSearchboxCtrl.$inject = [\"$rootScope\", \"$scope\", \"$timeout\", \"SearchEvent\", \"ResilienceService\"];\r\n function ApcSearchboxCtrl($rootScope, $scope, $timeout, SearchEvent, ResilienceService) {\r\n \"ngInject\";\r\n /**\r\n * @name module:ui.SearchboxCtrl#searchTimeout\r\n * @private\r\n * @type {Promise}\r\n * @description Search timeout promise. Used for realtime search.\r\n */\r\n var searchTimeout;\r\n /**\r\n * @name module:ui.SearchboxCtrl#submitSearch\r\n * @method\r\n * @private\r\n * @description Calls onSearch attribute handler if present.\r\n */\r\n var submitSearch = function () {\r\n if ($scope.onSearch()) {\r\n $scope.onSearch()($scope.searchTerm);\r\n }\r\n else {\r\n $rootScope.$broadcast(SearchEvent.SEARCH, $scope.searchTerm);\r\n }\r\n };\r\n /**\r\n * @name module:ui.SearchboxCtrl#searchTerm\r\n * @type {string}\r\n * @default ''\r\n * @description Search input value\r\n */\r\n $scope.searchTerm = '';\r\n /**\r\n * @name module:ui.SearchboxCtrl#realTime\r\n * @type {Boolean}\r\n * @default true\r\n * @description Realtime feature flag\r\n */\r\n $scope.realTime = (angular.isDefined($scope.realTime)) ? $scope.realTime : true;\r\n /**\r\n * @name module:ui.SearchboxCtrl#searchDelay\r\n * @type {Number}\r\n * @default 250\r\n * @description Realtime search delay in milliseconds\r\n */\r\n $scope.searchDelay = $scope.searchDelay || 250;\r\n $scope.customId = angular.isDefined($scope.customId) ? $scope.customId : 'searchbox';\r\n /**\r\n * @name module:ui.SearchboxCtrl#resetSearch\r\n * @method\r\n * @description Resets the {@link module:ui.SearchboxCtrl#searchTerm} to the default value and calls the onReset handler if present.\r\n */\r\n $scope.resetSearch = function () {\r\n $scope.searchTerm = '';\r\n if ($scope.onReset()) {\r\n $scope.onReset()();\r\n }\r\n else {\r\n $rootScope.$broadcast(SearchEvent.RESET);\r\n }\r\n };\r\n /**\r\n * @name module:ui.SearchboxCtrl#onKeyPress\r\n * @method\r\n * @param {Event} event - Key press JQuery event\r\n * @description Key press handler. If the pressed key is ENTER, calls {@link module:ui.SearchboxCtrl#submitSearch}\r\n */\r\n $scope.onKeyPress = function (event) {\r\n if (event.keyCode === 13) {\r\n submitSearch();\r\n }\r\n };\r\n /**\r\n * @name module:ui.SearchboxCtrl#onKeyUp\r\n * @method\r\n * @see module:ui.SearchboxCtrl#searchDelay\r\n * @see module:ui.SearchboxCtrl#searchTimeout\r\n * @description Key up handler. If realtime is enabled, resets the timeout and after expiration calls {@link module:ui.SearchboxCtrl#submitSearch}.\r\n */\r\n $scope.onKeyUp = function () {\r\n if ($scope.realTime) {\r\n if (searchTimeout) {\r\n $timeout.cancel(searchTimeout);\r\n }\r\n searchTimeout = $timeout(function () {\r\n submitSearch();\r\n }, $scope.searchDelay);\r\n }\r\n };\r\n $scope.$on(SearchEvent.CLEAR, function () {\r\n $scope.searchTerm = '';\r\n });\r\n $scope.isDegraded = function () {\r\n return ResilienceService.getResilienceState();\r\n };\r\n }\r\n return ApcSearchboxCtrl;\r\n}());\r\nexports.ApcSearchboxCtrl = ApcSearchboxCtrl;\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar ApcUserMetadataDirective = (function () {\r\n function ApcUserMetadataDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n localConf: '=',\r\n level: '@'\r\n };\r\n this.template = __webpack_require__(222);\r\n this.controller = ApcUserMetadataCtrl;\r\n }\r\n return ApcUserMetadataDirective;\r\n}());\r\nexports.ApcUserMetadataDirective = ApcUserMetadataDirective;\r\nvar ApcUserMetadataCtrl = (function () {\r\n ApcUserMetadataCtrl.$inject = [\"$scope\", \"$rootScope\", \"DataCollectorService\", \"UserService\", \"TooltipService\"];\r\n function ApcUserMetadataCtrl($scope, $rootScope, DataCollectorService, UserService, TooltipService) {\r\n \"ngInject\";\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.USER_METADATA.userMetadata;\r\n });\r\n $scope.defaultMetadataKeys = $scope.localConf.entities[0].entityData.defaultMetadataKeys;\r\n var changedKeys = {};\r\n $scope.keys = Object.keys;\r\n $scope.userMetadataComponentOpen = true;\r\n var isMetadataEncryptionCertificateSet = function () {\r\n var serviceProvider = $scope.data.related[$scope.data.entityData.serviceProvider];\r\n if (!_.isEmpty(serviceProvider.entityData.userMetadataEncryptionCertificateId)) {\r\n return true;\r\n }\r\n var programmer = $scope.data.related[serviceProvider.entityData.programmer];\r\n return !_.isEmpty(programmer.entityData.userMetadataEncryptionCertificateId);\r\n };\r\n $scope.hasErrors = ($scope.level === 'integration') ? !isMetadataEncryptionCertificateSet() : false;\r\n $scope.encryptionRequired = function (userMetadataKey) {\r\n return [\"zip\", \"encryptedZip\"].indexOf(userMetadataKey) >= 0;\r\n };\r\n $scope.disableUserMetadataComponent = false;\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n $scope.adobeOnly = UserService.hasRole('ROLE_CONSOLE_ALL_DATA');\r\n $scope.getDefaultKeyDescription = function (userMetadataKey) {\r\n if ($scope.tooltips) {\r\n return $scope.tooltips[userMetadataKey.toString() + '.description'] || \"No description available\";\r\n }\r\n else {\r\n return \"No description available\";\r\n }\r\n };\r\n $scope.squashInheritedUserMetadata = function (userMetadataMap) {\r\n var inheritTree = [\"authenticationProviderConfiguration\", \"owner\"];\r\n for (var i = 0; i < inheritTree.length; i++) {\r\n var inheritLevel = inheritTree[i];\r\n var inheritedUserMetadataArray = $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.userMetadataKeys;\r\n if (!inheritedUserMetadataArray) {\r\n continue;\r\n }\r\n for (var j = 0; j < inheritedUserMetadataArray.length; j++) {\r\n var inheritedUserMetadata = inheritedUserMetadataArray[j];\r\n if (!(inheritedUserMetadata.key in userMetadataMap)) {\r\n var userMetadata = {};\r\n userMetadata.enabled = false;\r\n userMetadata.encrypted = $scope.encryptionRequired(inheritedUserMetadata.key);\r\n userMetadataMap[inheritedUserMetadata.key] = userMetadata;\r\n }\r\n if (!userMetadataMap[inheritedUserMetadata.key].description) {\r\n userMetadataMap[inheritedUserMetadata.key].description = inheritedUserMetadata.description;\r\n }\r\n userMetadataMap[inheritedUserMetadata.key].warning = false;\r\n }\r\n }\r\n return userMetadataMap;\r\n };\r\n $scope.squashDefaultUserMetadata = function (defaultMetadataMap, userMetadataMap) {\r\n for (var key in defaultMetadataMap) {\r\n if (!(userMetadataMap.hasOwnProperty(key))) {\r\n var userMetadata = {};\r\n userMetadata.enabled = true;\r\n userMetadata.encrypted = defaultMetadataMap[key];\r\n userMetadataMap[key] = userMetadata;\r\n }\r\n }\r\n return userMetadataMap;\r\n };\r\n $scope.createUserMetadataMap = function () {\r\n var userMetadataMap = {};\r\n switch ($scope.level) {\r\n case \"integration\":\r\n var userMetadataMapIntegrationLevel = null;\r\n if ($scope.data.entityData.userMetadata === null) {\r\n $scope.data.entityData.userMetadata = { userMetadataKeyConfigurations: {} };\r\n }\r\n else {\r\n userMetadataMapIntegrationLevel = $scope.data.entityData.userMetadata.userMetadataKeyConfigurations;\r\n }\r\n if (userMetadataMapIntegrationLevel) {\r\n userMetadataMap = angular.copy(userMetadataMapIntegrationLevel);\r\n }\r\n for (var userMetadataKey in userMetadataMap) {\r\n if (userMetadataMap.hasOwnProperty(userMetadataKey) && !(userMetadataKey in $scope.defaultMetadataKeys)) {\r\n userMetadataMap[userMetadataKey].warning = true;\r\n }\r\n }\r\n userMetadataMap = $scope.squashDefaultUserMetadata($scope.defaultMetadataKeys, userMetadataMap);\r\n userMetadataMap = $scope.squashInheritedUserMetadata(userMetadataMap);\r\n break;\r\n case \"mvpd\":\r\n if ($scope.data) {\r\n for (var index = 0; index < $scope.data.length; index++) {\r\n userMetadataMap[$scope.data[index].key] = {\r\n description: $scope.data[index].description\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n return userMetadataMap;\r\n };\r\n $scope.userMetadataMap = $scope.createUserMetadataMap();\r\n $scope.onChangeUserMetadata = function (userMetadataKey) {\r\n var changedUserMetadata = $scope.userMetadataMap[userMetadataKey];\r\n if ($scope.data.entityData.userMetadata === null || $scope.data.entityData.userMetadata.userMetadataKeyConfigurations === null) {\r\n $scope.data.entityData.userMetadata = { userMetadataKeyConfigurations: {} };\r\n }\r\n // extra checks for defaultUserMetadata in order not to have duplicated keys\r\n if (userMetadataKey in $scope.defaultMetadataKeys) {\r\n var defaultMetadataKey = {\r\n enabled: true,\r\n encrypted: $scope.defaultMetadataKeys[userMetadataKey]\r\n };\r\n // if the key doesn't exist on integration, create it\r\n if (!(userMetadataKey in $scope.data.entityData.userMetadata.userMetadataKeyConfigurations)) {\r\n $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey] = {\r\n enabled: changedUserMetadata.enabled,\r\n encrypted: changedUserMetadata.encrypted\r\n };\r\n changedKeys[userMetadataKey] = userMetadataKey;\r\n // if the key was recently changed but now is identical with the one from defaultMetadata, delete it from integration\r\n }\r\n else if (userMetadataKey in changedKeys) {\r\n if (changedUserMetadata.encrypted === defaultMetadataKey.encrypted && changedUserMetadata.enabled === defaultMetadataKey.enabled) {\r\n delete $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey];\r\n delete changedKeys[userMetadataKey];\r\n }\r\n // if the key existed previously, just change it or delete it from integration if is identical with the one from defaultMetadata\r\n }\r\n else {\r\n if (changedUserMetadata.encrypted === defaultMetadataKey.encrypted && changedUserMetadata.enabled === defaultMetadataKey.enabled) {\r\n delete $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey];\r\n }\r\n else {\r\n $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey] = {\r\n enabled: changedUserMetadata.enabled,\r\n encrypted: changedUserMetadata.encrypted\r\n };\r\n }\r\n }\r\n }\r\n else {\r\n $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey] = {\r\n enabled: changedUserMetadata.enabled,\r\n encrypted: changedUserMetadata.encrypted\r\n };\r\n }\r\n if (_.isEmpty($scope.data.entityData.userMetadata.userMetadataKeyConfigurations)) {\r\n $scope.data.entityData.userMetadata = null;\r\n }\r\n };\r\n }\r\n return ApcUserMetadataCtrl;\r\n}());\r\nexports.ApcUserMetadataCtrl = ApcUserMetadataCtrl;\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcDurationInputCtrl = (function () {\r\n ApcDurationInputCtrl.$inject = [\"$scope\", \"ManglerUtil\"];\r\n function ApcDurationInputCtrl($scope, ManglerUtil) {\r\n \"ngInject\";\r\n var SECONDS_IN_DAY = 86400;\r\n var SECONDS_IN_HOUR = 3600;\r\n var SECONDS_IN_MINUTE = 60;\r\n var processedTTL;\r\n $scope.$watch('data', function () {\r\n if (!$scope.data) {\r\n $scope.days = undefined;\r\n $scope.hours = undefined;\r\n $scope.minutes = undefined;\r\n $scope.seconds = undefined;\r\n }\r\n });\r\n if ($scope.data) {\r\n processedTTL = ManglerUtil.processTTL($scope.data);\r\n $scope.days = processedTTL.days;\r\n $scope.hours = processedTTL.hours;\r\n $scope.minutes = processedTTL.minutes;\r\n $scope.seconds = processedTTL.seconds;\r\n }\r\n if ($scope.inheritData) {\r\n processedTTL = ManglerUtil.processTTL($scope.inheritData);\r\n $scope.daysPlaceholder = processedTTL.days;\r\n $scope.hoursPlaceholder = processedTTL.hours;\r\n $scope.minutesPlaceholder = processedTTL.minutes;\r\n $scope.secondsPlaceholder = processedTTL.seconds;\r\n }\r\n else {\r\n $scope.daysPlaceholder = 0;\r\n $scope.hoursPlaceholder = 0;\r\n $scope.minutesPlaceholder = 0;\r\n $scope.secondsPlaceholder = 0;\r\n }\r\n var makeValid = function (number, maxValue) {\r\n return number > maxValue ? maxValue : number;\r\n };\r\n $scope.onNumberKeyPress = function (event) {\r\n if (event.keyCode === 32) {\r\n event.preventDefault();\r\n }\r\n };\r\n $scope.isFieldInvalid = function (form, property) {\r\n if (form['days-' + property] && form['hours-' + property] && form['minutes-' + property] && form['seconds-' + property]) {\r\n return (form['days-' + property].$invalid && form['days-' + property].$dirty) ||\r\n (form['hours-' + property].$invalid && form['hours-' + property].$dirty) ||\r\n (form['minutes-' + property].$invalid && form['minutes-' + property].$dirty) ||\r\n (form['seconds-' + property].$invalid && form['seconds-' + property].$dirty);\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n $scope.onChange = function () {\r\n var newTime = 0;\r\n if ($scope.days) {\r\n $scope.days = makeValid($scope.days, 730);\r\n newTime = $scope.days * SECONDS_IN_DAY;\r\n }\r\n if ($scope.hours) {\r\n $scope.hours = makeValid($scope.hours, 23);\r\n newTime += $scope.hours * SECONDS_IN_HOUR;\r\n }\r\n if ($scope.minutes) {\r\n $scope.minutes = makeValid($scope.minutes, 59);\r\n newTime += $scope.minutes * SECONDS_IN_MINUTE;\r\n }\r\n if ($scope.seconds) {\r\n $scope.seconds = makeValid($scope.seconds, 59);\r\n newTime += $scope.seconds;\r\n }\r\n if (newTime) {\r\n $scope.data = newTime;\r\n }\r\n else {\r\n delete $scope.data;\r\n }\r\n };\r\n }\r\n return ApcDurationInputCtrl;\r\n}());\r\nexports.ApcDurationInputCtrl = ApcDurationInputCtrl;\r\nvar ApcDurationInputDirective = (function () {\r\n function ApcDurationInputDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n property: '=',\r\n readOnly: '=',\r\n inheritData: '=',\r\n selected: '='\r\n };\r\n this.template = __webpack_require__(223);\r\n this.controller = ApcDurationInputCtrl;\r\n }\r\n return ApcDurationInputDirective;\r\n}());\r\nexports.ApcDurationInputDirective = ApcDurationInputDirective;\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__app_less__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__app_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__app_less__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__module_admin_admin__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__module_admin_admin___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__module_admin_admin__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__module_channel_channel__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__module_channel_channel___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2__module_channel_channel__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__module_feedback_feedback__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__module_feedback_feedback___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__module_feedback_feedback__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__module_programmer_programmer__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__module_programmer_programmer___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__module_programmer_programmer__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__module_diff_diff__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__module_diff_diff___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__module_diff_diff__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__module_mvpd_mvpd__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__module_mvpd_mvpd___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6__module_mvpd_mvpd__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__module_core_core__ = __webpack_require__(136);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__module_core_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7__module_core_core__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__module_data_data__ = __webpack_require__(147);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__module_data_data___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8__module_data_data__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__module_integration_integration__ = __webpack_require__(176);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__module_integration_integration___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9__module_integration_integration__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__module_security_security__ = __webpack_require__(190);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__module_security_security___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10__module_security_security__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__module_filters_filters__ = __webpack_require__(194);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__module_filters_filters___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11__module_filters_filters__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__module_ui_ui__ = __webpack_require__(209);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__module_ui_ui___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12__module_ui_ui__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__module_report_report__ = __webpack_require__(237);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__module_report_report___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_13__module_report_report__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__app_ts__ = __webpack_require__(240);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__app_ts___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_14__app_ts__);\n// /*************************************************************************\n// * ADOBE CONFIDENTIAL\n// * ___________________\n// *\n// * Copyright 2018 Adobe Systems Incorporated\n// * All Rights Reserved.\n// *\n// * NOTICE: All information contained herein is, and remains\n// * the property of Adobe Systems Incorporated and its suppliers,\n// * if any. The intellectual and technical concepts contained\n// * herein are proprietary to Adobe Systems Incorporated and its\n// * suppliers and are protected by all applicable intellectual property laws,\n// * including trade secret and copyright laws.\n// * Dissemination of this information or reproduction of this material\n// * is strictly forbidden unless prior written permission is obtained\n// * from Adobe Systems Incorporated.\n// ************************************************************************/\nwindow.X2JS = __webpack_require__(45);\nwindow._ = __webpack_require__(1);\nwindow.$ = window.jQuery = __webpack_require__(46);\nwindow.URI = __webpack_require__(47);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nnew __WEBPACK_IMPORTED_MODULE_7__module_core_core__[\"CoreModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_1__module_admin_admin__[\"AdminModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_8__module_data_data__[\"DataModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_11__module_filters_filters__[\"FiltersModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_2__module_channel_channel__[\"ChannelModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_3__module_feedback_feedback__[\"FeedbackModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_5__module_diff_diff__[\"DiffModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_4__module_programmer_programmer__[\"ProgrammerModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_6__module_mvpd_mvpd__[\"MvpdModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_9__module_integration_integration__[\"IntegrationModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_10__module_security_security__[\"SecurityModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_12__module_ui_ui__[\"UIModule\"]();\nnew __WEBPACK_IMPORTED_MODULE_13__module_report_report__[\"ReportModule\"]();\n\nvar app = new __WEBPACK_IMPORTED_MODULE_14__app_ts__[\"App\"]();\napp.bootstrap();\n\n__webpack_require__(248);\n__webpack_require__(21);\n__webpack_require__(249);\n__webpack_require__(250);\n__webpack_require__(251);\n__webpack_require__(252);\n__webpack_require__(253);\n__webpack_require__(254);\n__webpack_require__(255);\n__webpack_require__(256);\n__webpack_require__(257);\n__webpack_require__(258);\n\nfunction importAll(r) {\n r.keys().forEach(function (file) {\n r(file);\n });\n}\n\nimportAll(__webpack_require__(259));\n\n\n/***/ }),\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */,\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar AdminAdvanced_1 = __webpack_require__(22);\r\nvar AdminDefaultMetadata_1 = __webpack_require__(56);\r\nvar AdminImport_1 = __webpack_require__(57);\r\nvar AdminInfo_1 = __webpack_require__(58);\r\nvar AdminTmsIds_1 = __webpack_require__(59);\r\nvar Maintenance_1 = __webpack_require__(60);\r\nvar AdminAdvanced_2 = __webpack_require__(22);\r\nvar AdminService_1 = __webpack_require__(61);\r\nvar Tabs_1 = __webpack_require__(3);\r\n/**\r\n * @module admin\r\n * @requires ui.router\r\n * @requires module:core\r\n * @requires module:data\r\n * @description Handles admin features\r\n */\r\nvar AdminModule = (function () {\r\n function AdminModule() {\r\n this.ngRef.service('AdminService', AdminService_1.AdminService);\r\n this.ngRef.controller('MaintenanceCtrl', Maintenance_1.MaintenanceCtrl);\r\n this.ngRef.controller('MaintenanceModalCtrl', AdminAdvanced_2.MaintenanceModalCtrl);\r\n this.ngRef.controller('AdminTmsIdsCtrl', AdminTmsIds_1.AdminTmsIdsCtrl);\r\n this.ngRef.controller('AdminInfoCtrl', AdminInfo_1.AdminInfoCtrl);\r\n this.ngRef.controller('AdminImportCtrl', AdminImport_1.AdminImportCtrl);\r\n this.ngRef.controller('AdminDefaultMetadataCtrl', AdminDefaultMetadata_1.AdminDefaultMetadataCtrl);\r\n this.ngRef.controller('AdminAdvancedCtrl', AdminAdvanced_1.AdminAdvancedCtrl);\r\n }\r\n /**\r\n * @method config\r\n * @memberOf module:admin\r\n * @param {Object} $stateProvider - UI-Router's state provider\r\n * @param {module:core.States} States - application states\r\n * @description Configures admin module states.\r\n */\r\n AdminModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n $stateProvider.state(States.Admin.name, {\r\n abstract: States.Admin.abstract,\r\n url: States.Admin.url,\r\n ncyBreadcrumb: {\r\n label: 'Admin'\r\n },\r\n resolve: {\r\n tabs: [\"States\", function (States) {\r\n return [\r\n {\r\n state: States.Admin,\r\n id: 'adminInfo'\r\n },\r\n {\r\n state: States.AdminImport,\r\n id: 'adminImport'\r\n },\r\n {\r\n state: States.AdminAdvanced,\r\n id: 'adminAdvanced'\r\n },\r\n {\r\n state: States.AdminTmsIds,\r\n id: 'adminTmsIds'\r\n },\r\n {\r\n state: States.AdminDefaultMetadata,\r\n id: 'adminDefaultMetadata'\r\n }\r\n ];\r\n }]\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(5),\r\n controller: Tabs_1.TabsCtrl\r\n },\r\n 'tabs@Base.Admin': {\r\n template: __webpack_require__(6)\r\n },\r\n 'tabContent@Base.Admin': {\r\n template: __webpack_require__(62),\r\n controller: AdminInfo_1.AdminInfoCtrl,\r\n resolve: {\r\n consoleInfo: [\"AdminService\", function (AdminService) {\r\n return AdminService.getConsoleInfo().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.AdminImport.name, {\r\n abstract: States.AdminImport.abstract,\r\n url: States.AdminImport.url,\r\n ncyBreadcrumb: {\r\n label: 'Import',\r\n parent: States.Admin.name\r\n },\r\n views: {\r\n 'tabContent@Base.Admin': {\r\n template: __webpack_require__(63),\r\n controller: AdminImport_1.AdminImportCtrl\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.AdminAdvanced.name, {\r\n abstract: States.AdminAdvanced.abstract,\r\n url: States.AdminAdvanced.url,\r\n ncyBreadcrumb: {\r\n label: 'Advanced',\r\n parent: States.Admin.name\r\n },\r\n views: {\r\n 'tabContent@Base.Admin': {\r\n template: __webpack_require__(64),\r\n controller: AdminAdvanced_1.AdminAdvancedCtrl,\r\n resolve: {\r\n storedModelSerialIds: [\"AdminService\", function (AdminService) {\r\n return AdminService.getStoredModelSerialIds().then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n isMaintenanceActive: [\"AdminService\", function (AdminService) {\r\n return AdminService.isMaintenanceActive().then(function (response) {\r\n return response.data.maintenanceMode === 'ON';\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.Maintenance.name, {\r\n abstract: States.Maintenance.abstract,\r\n url: States.Maintenance.url,\r\n ncyBreadcrumb: {\r\n label: States.Maintenance.displayName,\r\n parent: 'Base'\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(65),\r\n controller: Maintenance_1.MaintenanceCtrl,\r\n resolve: {\r\n maintenanceData: [\"AdminService\", function (AdminService) {\r\n return AdminService.isMaintenanceActive().then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n isMaintenanceActive: [\"AdminService\", function (AdminService) {\r\n return AdminService.isMaintenanceActive().then(function (response) {\r\n return response.data.maintenanceMode === 'ON';\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.AdminTmsIds.name, {\r\n abstract: States.AdminTmsIds.abstract,\r\n url: States.AdminTmsIds.url,\r\n ncyBreadcrumb: {\r\n label: 'TMS IDs',\r\n parent: States.Admin.name\r\n },\r\n views: {\r\n 'tabContent@Base.Admin': {\r\n template: __webpack_require__(66),\r\n controller: AdminTmsIds_1.AdminTmsIdsCtrl,\r\n resolve: {\r\n tmsIdsList: [\"TMSIdService\", function (TMSIdService) {\r\n return TMSIdService.getTmsIdsList().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.AdminDefaultMetadata.name, {\r\n abstract: States.AdminDefaultMetadata.abstract,\r\n url: States.AdminDefaultMetadata.url,\r\n ncyBreadcrumb: {\r\n label: 'Default Metadata',\r\n parent: States.Admin.name\r\n },\r\n views: {\r\n 'tabContent@Base.Admin': {\r\n template: __webpack_require__(67),\r\n controller: AdminDefaultMetadata_1.AdminDefaultMetadataCtrl,\r\n resolve: {\r\n localConfigurationData: [\"LocalConfigurationService\", function (LocalConfigurationService) {\r\n return LocalConfigurationService.getLocalConfiguration().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n /* Add New States Above */\r\n }];\r\n AdminModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'admin',\r\n dependencies: ['ui.router', 'ui.bootstrap', 'angularFileUpload', 'core', 'data', 'security']\r\n })\r\n ], AdminModule);\r\n return AdminModule;\r\n}());\r\nexports.AdminModule = AdminModule;\r\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar angular = __webpack_require__(0);\r\nvar NotificationService_1 = __webpack_require__(4);\r\nvar AdminDefaultMetadataCtrl = (function () {\r\n AdminDefaultMetadataCtrl.$inject = [\"$scope\", \"localConfigurationData\", \"DataCollectorService\", \"NotificationService\"];\r\n function AdminDefaultMetadataCtrl($scope, localConfigurationData, DataCollectorService, NotificationService) {\r\n \"ngInject\";\r\n $scope.createDefaultMetadataKeysArray = function (defaultMetadataKeysMap) {\r\n if (!defaultMetadataKeysMap || Object.keys(defaultMetadataKeysMap).length === 0) {\r\n return [];\r\n }\r\n var defaultMetadataKeysArray = [];\r\n for (var key in defaultMetadataKeysMap) {\r\n var defaultMetadataKey = {\r\n name: key,\r\n encrypted: defaultMetadataKeysMap[key]\r\n };\r\n defaultMetadataKeysArray.push(defaultMetadataKey);\r\n }\r\n defaultMetadataKeysArray.sort(function (key1, key2) {\r\n return key1.name.localeCompare(key2.name);\r\n });\r\n return defaultMetadataKeysArray;\r\n };\r\n if (localConfigurationData && localConfigurationData.entities[0]) {\r\n $scope.localConfigurationData = localConfigurationData;\r\n $scope.defaultMetadataKeysArray = $scope.createDefaultMetadataKeysArray($scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys);\r\n $scope.$watch('defaultMetadataKeysArray', DataCollectorService.collector($scope.localConfigurationData.entities[0]), true);\r\n }\r\n else {\r\n $scope.defaultMetadataKeysArray = null;\r\n }\r\n $scope.createNewEmptyDefaultMetadataKey = function () {\r\n return {\r\n name: null,\r\n encrypted: false\r\n };\r\n };\r\n $scope.newDefaultMetadataKey = $scope.createNewEmptyDefaultMetadataKey();\r\n $scope.newDefaultMetadataKeyAdded = false;\r\n $scope.onAddNewDefaultMetadataKey = function () {\r\n $scope.newDefaultMetadataKeyAdded = true;\r\n };\r\n $scope.resetNewDefaultMetadataKey = function (keyNameInput) {\r\n if (keyNameInput) {\r\n $scope.newDefaultMetadataKey = $scope.createNewEmptyDefaultMetadataKey();\r\n $scope.newDefaultMetadataKeyAdded = false;\r\n keyNameInput.$setPristine();\r\n }\r\n };\r\n $scope.addNewDefaultMetadataKey = function (keyNameInput) {\r\n if (keyNameInput && $scope.newDefaultMetadataKey.name && !$scope.newDefaultMetadataKeyFormHasError(keyNameInput)) {\r\n var newKeyName = $scope.newDefaultMetadataKey.name;\r\n $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[newKeyName] = $scope.newDefaultMetadataKey.encrypted;\r\n $scope.defaultMetadataKeysArray.splice(0, 0, $scope.newDefaultMetadataKey);\r\n $scope.resetNewDefaultMetadataKey(keyNameInput);\r\n return true;\r\n }\r\n return false;\r\n };\r\n $scope.onChangeDefaultMetadataKey = function (defaultMetadataKeyName) {\r\n var valueOfChangedKey = $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[defaultMetadataKeyName];\r\n $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[defaultMetadataKeyName] = !valueOfChangedKey;\r\n $scope.defaultMetadataKeysArray[defaultMetadataKeyName] = !valueOfChangedKey;\r\n };\r\n $scope.removeDefaultMetadataKey = function (defaultMetadataKeyName) {\r\n var _loop_1 = function (index) {\r\n if (angular.equals(defaultMetadataKeyName, $scope.defaultMetadataKeysArray[index].name)) {\r\n NotificationService.getConfirmationFromUser(NotificationService_1.Notifications.confirmDeleteDefaultMetadata).result.then(function (userDecisionToDelete) {\r\n if (userDecisionToDelete === true) {\r\n delete $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[defaultMetadataKeyName];\r\n $scope.defaultMetadataKeysArray.splice(index, 1);\r\n }\r\n });\r\n return \"break\";\r\n }\r\n };\r\n for (var index = 0; index < $scope.defaultMetadataKeysArray.length; index++) {\r\n var state_1 = _loop_1(index);\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n };\r\n $scope.isNewDefaultMetadataKeyNameEmpty = function () {\r\n return typeof $scope.newDefaultMetadataKey.name === 'undefined';\r\n };\r\n $scope.isNewDefaultMetadataKeyNameUnique = function () {\r\n return !($scope.newDefaultMetadataKey.name in $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys);\r\n };\r\n $scope.newDefaultMetadataKeyFormHasError = function () {\r\n return $scope.isNewDefaultMetadataKeyNameEmpty() || !$scope.isNewDefaultMetadataKeyNameUnique();\r\n };\r\n }\r\n return AdminDefaultMetadataCtrl;\r\n}());\r\nexports.AdminDefaultMetadataCtrl = AdminDefaultMetadataCtrl;\r\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class AdminImportCtrl\r\n * @memberOf module:admin\r\n * @param {Object} $rootScope - Angualar root scope\r\n * @param {Object} $scope - Angualar scope\r\n * @param {Object} $state - Ui router state service\r\n * @param {Object} $window - Angular window wrapper\r\n * @param {module:core.States} States - Application states\r\n * @param {Object} FileUploader - Angular file uploader\r\n * @param {module:data.Config} Config - Application config\r\n * @param {module:security.CsrfTokenInterceptor} CsrfTokenInterceptor - CSRF token interceptor\r\n * @description Handles full configuration import\r\n */\r\nvar AdminImportCtrl = (function () {\r\n AdminImportCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"$window\", \"$http\", \"States\", \"Config\", \"CsrfTokenInterceptor\", \"PushStatusInterceptor\", \"NotificationService\", \"DownloadService\", \"AdminService\", \"HttpExceptionHandler\", \"TooltipService\", \"RetryableRequestInterceptor\", \"EnvironmentService\"];\r\n function AdminImportCtrl($rootScope, $scope, $state, $window, $http, States, Config, CsrfTokenInterceptor, PushStatusInterceptor, NotificationService, DownloadService, AdminService, HttpExceptionHandler, TooltipService, RetryableRequestInterceptor, EnvironmentService) {\r\n \"ngInject\";\r\n $scope.selectedEnvironment = EnvironmentService.getSelectedEnvironment();\r\n $scope.trimmingInfo = null;\r\n $scope.configUpgrade = false;\r\n $scope.file = null;\r\n $scope.fileName = '';\r\n $scope.chooseFile = function (input) {\r\n $scope.fileName = '';\r\n $scope.file = null;\r\n $scope.$apply(function () {\r\n $scope.file = input.files[0];\r\n $scope.fileName = $scope.file.name;\r\n });\r\n };\r\n /**\r\n * @name module:admin.AdminAdvancedCtrl#pullFromCore\r\n * @method\r\n * @description Pull latest configuration from Core\r\n */\r\n $scope.pullFromCore = function () {\r\n NotificationService.warnModal(\"Confirm pull from Core\", \"Are you sure you want to pull the latest Core configuration?\").result.then(function (pullConfigurationConfirmation) {\r\n if (pullConfigurationConfirmation === true) {\r\n $rootScope.statusMessage = \"Pulling configuration from Core\";\r\n $rootScope.appLoading = true;\r\n AdminService.pullFromCore().then(function () {\r\n $rootScope.appLoading = false;\r\n $window.location.reload();\r\n });\r\n }\r\n });\r\n };\r\n /**\r\n * @name module:admin.AdminAdvancedCtrl#exportLatest\r\n * @method\r\n * @description Export latest console configuration in JSON format\r\n */\r\n $scope.exportLatestJson = function () {\r\n AdminService.exportLatestJson();\r\n };\r\n /**\r\n * @name module:admin.AdminAdvancedCtrl#exportLatest\r\n * @method\r\n * @description Export latest console configuration in ZIP format\r\n */\r\n $scope.exportLatestZip = function () {\r\n AdminService.exportLatestZip();\r\n };\r\n /**\r\n * @method reviewChanges\r\n * @memberOf module:admin.AdminImportCtrl\r\n * @description Fetch diff data for the selected file\r\n */\r\n $scope.reviewChanges = function (form) {\r\n $rootScope.appLoading = true;\r\n if (form.$valid && $scope.file) {\r\n var formData = new FormData();\r\n formData.append('message', $scope.formData.message);\r\n formData.append('file', $scope.file);\r\n $http({\r\n method: 'POST',\r\n url: Config.API_ROOT + '/config/diff/import',\r\n headers: { 'Content-Type': undefined },\r\n data: formData\r\n }).then(function (response) {\r\n $rootScope.appLoading = false;\r\n if (response.status === 204) {\r\n $scope.pushChanges(form);\r\n }\r\n if (response.data.modelUpgradeInformation) {\r\n $scope.configUpgrade = true;\r\n }\r\n if (response.data.trimmingInfo && response.data.trimmingInfo.trimmed) {\r\n $scope.trimmingInfo = response.trimmingInfo;\r\n }\r\n if (response.data.entityDifferences) {\r\n $scope.diffData = response.data;\r\n }\r\n $scope.completeDiffUUID = response.data.completeDiffUUID;\r\n }, function (error) {\r\n $rootScope.appLoading = false;\r\n if (error.status === 413) {\r\n NotificationService.warn('Oops!', 'The file you are trying to upload exceeds the maximum allowed size of 10MB.');\r\n }\r\n else if (error.status === 400) {\r\n var title = 'Error';\r\n var message = 'There was an error during configuration import';\r\n if (error.data.exceptionType === 'FieldTypeValidationException' || error.data.exceptionType === 'UnreferencedEntitiesException') {\r\n message = error.data.additionalInfo;\r\n title = error.data.exceptionMessage;\r\n }\r\n else if (error.data.exceptionType) {\r\n title = 'Configuration validation error';\r\n message = error.data.exceptionMessage;\r\n }\r\n NotificationService.error(title, message);\r\n }\r\n else if (error.status === 502 || error.status === 503) {\r\n NotificationService.error('A related service was unreachable and the operation failed. Please retry in a few minutes.');\r\n }\r\n else {\r\n HttpExceptionHandler.responseError({\r\n data: error.data,\r\n status: error.status,\r\n config: {}\r\n });\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * @method pushChanges\r\n * @memberOf module:admin.AdminImportCtrl\r\n * @description Upload the configuration file to the server\r\n */\r\n $scope.pushChanges = function (form) {\r\n if (form.$valid && $scope.file) {\r\n var formData = new FormData();\r\n formData.append('message', $scope.formData.message);\r\n formData.append('file', $scope.file);\r\n $http({\r\n method: 'POST',\r\n url: Config.API_ROOT + '/admin/import',\r\n headers: { 'Content-Type': undefined },\r\n data: formData\r\n }).then(function (response) {\r\n PushStatusInterceptor.response({ config: { url: Config.API_ROOT + '/admin/import' }, data: response.data });\r\n }, function (error) {\r\n RetryableRequestInterceptor.responseError({\r\n config: { url: Config.API_ROOT + '/admin/import' },\r\n data: error.data\r\n });\r\n });\r\n $rootScope.statusMessage = 'Pushing configuration to server';\r\n $rootScope.appLoading = true;\r\n }\r\n };\r\n /**\r\n * @name module:admin.AdminImportCtrl#formData\r\n * @type {Object}\r\n * @description Upload form data\r\n */\r\n $scope.formData = {\r\n message: ''\r\n };\r\n $scope.downloadCompleteDiff = function () {\r\n var url = Config.API_ROOT + '/config/diff/uuid/' + $scope.completeDiffUUID;\r\n DownloadService.download(url);\r\n };\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.ACTIONS.adminImpex;\r\n });\r\n }\r\n return AdminImportCtrl;\r\n}());\r\nexports.AdminImportCtrl = AdminImportCtrl;\r\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class AdminInfoCtrl\r\n * @memberOf module:admin\r\n * @param {Object} $scope - Angular scope\r\n * @param {Object} coreInfo - Adobe Pass Core configuration\r\n * @param {Object} consoleInfo - Console build information\r\n * @description Controls admin module Info tab\r\n */\r\nvar AdminInfoCtrl = (function () {\r\n AdminInfoCtrl.$inject = [\"$scope\", \"consoleInfo\", \"AdminService\", \"TooltipService\"];\r\n function AdminInfoCtrl($scope, consoleInfo, AdminService, TooltipService) {\r\n \"ngInject\";\r\n $scope.coreData = {};\r\n AdminService.getCoreInfo().then(function (response) {\r\n $scope.coreData = response.data || {};\r\n /**\r\n * @name module:admin.AdminInfoCtrl#coreInfo\r\n * @type {Object}\r\n * @description Adobe Pass Core latest configuration information\r\n */\r\n $scope.coreInfo = $scope.coreData.configurationInfo ? $scope.coreData.configurationInfo[0] : null;\r\n /**\r\n * @name module:admin.AdminInfoCtrl#coreVersion\r\n * @type {String}\r\n * @description Adobe Pass Core version\r\n */\r\n $scope.coreVersion = $scope.coreData.coreVersion;\r\n /**\r\n * @name module:admin.AdminInfoCtrl#coreModelId\r\n * @type {Number}\r\n * @description Adobe Pass Core model serial id\r\n */\r\n $scope.coreModelId = $scope.coreData.modelSerialId;\r\n /**\r\n * @name module:admin.AdminInfoCtrl#consoleInfo\r\n * @type {Object}\r\n * @description Adobe Pass Console build info\r\n */\r\n });\r\n $scope.consoleInfo = consoleInfo;\r\n AdminService.getSyncedCoreConfigurationVersion().then(function (response) {\r\n $scope.syncedConfigurationVersion = response.data;\r\n });\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.ACTIONS.adminInfo;\r\n });\r\n $scope.consoleClientVersion = \"3.14.0\" + \"-\" + \"447cfa5\";\r\n }\r\n return AdminInfoCtrl;\r\n}());\r\nexports.AdminInfoCtrl = AdminInfoCtrl;\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar NotificationService_1 = __webpack_require__(4);\r\nvar AdminTmsIdsCtrl = (function () {\r\n AdminTmsIdsCtrl.$inject = [\"$scope\", \"TMSIdService\", \"tmsIdsList\", \"DataCollectorService\", \"ConsoleUtils\", \"NotificationService\"];\r\n function AdminTmsIdsCtrl($scope, TMSIdService, tmsIdsList, DataCollectorService, ConsoleUtils, NotificationService) {\r\n \"ngInject\";\r\n var tmsidWatcher;\r\n if (tmsIdsList && tmsIdsList.entityData && tmsIdsList.entityData.rootEntityIds) {\r\n $scope.tmsIdsList = ConsoleUtils.createTmsIdsList(tmsIdsList.entityData.rootEntityIds);\r\n $scope.selectedTmsId = ConsoleUtils.TMSID_DEFAULT_VALUE;\r\n }\r\n else {\r\n $scope.tmsIdsList = null;\r\n }\r\n $scope.onChangeTmsIdMap = function () {\r\n $scope.tmsIdsArray = null;\r\n var tmsidmap = $scope.selectedTmsId;\r\n if (tmsidmap != ConsoleUtils.TMSID_DEFAULT_VALUE) {\r\n TMSIdService.getMVPDTMSIdMap(tmsidmap).then(function (response) {\r\n if (response.data && response.data.entityData && response.data.entityData.mapping) {\r\n $scope.selectedTmsIdMap = response.data;\r\n $scope.tmsIdsArray = ConsoleUtils.createTmsIdsArray($scope.selectedTmsIdMap.entityData.mapping);\r\n if (tmsidWatcher) {\r\n tmsidWatcher();\r\n }\r\n tmsidWatcher = $scope.$watch('tmsIdsArray', DataCollectorService.collector($scope.selectedTmsIdMap), true);\r\n }\r\n });\r\n }\r\n };\r\n $scope.isResourceNameInputEmpty = function () {\r\n return typeof $scope.newTmsId.resourceName === 'undefined';\r\n };\r\n $scope.isResourceIdInputEmpty = function () {\r\n return typeof $scope.newTmsId.resourceId === 'undefined';\r\n };\r\n $scope.isResourceNameUnique = function () {\r\n if ($scope.newTmsId.resourceName && $scope.selectedTmsIdMap.entityData.mapping) {\r\n return !($scope.newTmsId.resourceName in $scope.selectedTmsIdMap.entityData.mapping);\r\n }\r\n return true;\r\n };\r\n $scope.newTmsIdFormHasError = function () {\r\n if ($scope.isResourceNameInputEmpty() || $scope.isResourceIdInputEmpty()) {\r\n return true;\r\n }\r\n return !$scope.isResourceNameUnique();\r\n };\r\n $scope.createNewEmptyTmsId = function () {\r\n return {\r\n resourceName: null,\r\n resourceId: null\r\n };\r\n };\r\n $scope.newTmsId = $scope.createNewEmptyTmsId();\r\n $scope.newTmsIdAdded = false;\r\n $scope.onAddNewTmsId = function () {\r\n $scope.newTmsIdAdded = true;\r\n };\r\n $scope.onRemoveTmsId = function (tmsIdIndex) {\r\n if ($scope.tmsIdsArray && tmsIdIndex >= 0 && tmsIdIndex < $scope.tmsIdsArray.length) {\r\n NotificationService.getConfirmationFromUser(NotificationService_1.Notifications.confirmDeleteTMSID).result.then(function (userDecisionToDelete) {\r\n if (userDecisionToDelete === true) {\r\n delete $scope.selectedTmsIdMap.entityData.mapping[$scope.tmsIdsArray[tmsIdIndex].resourceName];\r\n $scope.tmsIdsArray.splice(tmsIdIndex, 1);\r\n }\r\n });\r\n }\r\n };\r\n $scope.onResetNewTmsId = function () {\r\n $scope.newTmsId = $scope.createNewEmptyTmsId();\r\n $scope.newTmsIdAdded = false;\r\n };\r\n $scope.onSaveNewTmsId = function () {\r\n if ($scope.tmsIdsArray && $scope.newTmsId.resourceName && $scope.newTmsId.resourceId && !$scope.newTmsIdFormHasError()) {\r\n if (!$scope.selectedTmsIdMap.entityData.mapping) {\r\n $scope.selectedTmsIdMap.entityData.mapping = {};\r\n }\r\n var resourceNameString = $scope.newTmsId.resourceName.toString();\r\n var resourceIdString = $scope.newTmsId.resourceId.toString();\r\n $scope.selectedTmsIdMap.entityData.mapping[resourceNameString] = resourceIdString;\r\n $scope.tmsIdsArray.splice(0, 0, $scope.newTmsId);\r\n $scope.onResetNewTmsId();\r\n return true;\r\n }\r\n return false;\r\n };\r\n }\r\n return AdminTmsIdsCtrl;\r\n}());\r\nexports.AdminTmsIdsCtrl = AdminTmsIdsCtrl;\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MaintenanceCtrl = (function () {\r\n MaintenanceCtrl.$inject = [\"$scope\", \"$state\", \"States\", \"maintenanceData\", \"isMaintenanceActive\", \"UserService\"];\r\n function MaintenanceCtrl($scope, $state, States, maintenanceData, isMaintenanceActive, UserService) {\r\n \"ngInject\";\r\n $scope.data = maintenanceData;\r\n $scope.isAdmin = UserService.hasRole('ROLE_CONSOLE_ADMIN');\r\n if (!isMaintenanceActive) {\r\n $state.go(States.Dashboard.name);\r\n }\r\n }\r\n return MaintenanceCtrl;\r\n}());\r\nexports.MaintenanceCtrl = MaintenanceCtrl;\r\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class AdminService\r\n * @memberOf module:admin\r\n * @param {Object} $http - Angular http service\r\n * @param {module:data.Config} Config - Application config\r\n * @description Performs admin specific calls\r\n */\r\nvar AdminService = (function () {\r\n AdminService.$inject = [\"$http\", \"Config\", \"DownloadService\", \"CacheService\"];\r\n function AdminService($http, Config, DownloadService, CacheService) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n this.DownloadService = DownloadService;\r\n this.CacheService = CacheService;\r\n }\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @returns {HttpPromise} Latest Core configuration\r\n * @description Retrieves latest Adobe Pass Core configuration\r\n */\r\n AdminService.prototype.getCoreInfo = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/latestCoreConfiguration', { ignoreError: true });\r\n };\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @returns {HttpPromise} Console build info\r\n * @description Retrieves console build info\r\n */\r\n AdminService.prototype.getConsoleInfo = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/info/build');\r\n };\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @returns {HttpPromise}\r\n * @description Pull configuration from core\r\n */\r\n AdminService.prototype.pullFromCore = function () {\r\n return this.$http.post(this.Config.API_ROOT + '/admin/pull');\r\n };\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @description Uses Download service to download a json file\r\n */\r\n AdminService.prototype.exportLatestJson = function () {\r\n this.DownloadService.download(this.Config.API_ROOT + '/admin/download');\r\n };\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @description Uses Download service to download a zip file\r\n */\r\n AdminService.prototype.exportLatestZip = function () {\r\n this.DownloadService.download(this.Config.API_ROOT + '/admin/downloadSplit');\r\n };\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @description Activate maintenance mode\r\n */\r\n AdminService.prototype.activateMaintenance = function (message) {\r\n this.CacheService.reset();\r\n return this.$http.post(this.Config.API_ROOT + '/admin/maintenance/activate?message=' + encodeURIComponent(message));\r\n };\r\n /**\r\n * @memberOf module:admin.AdminService\r\n * @description Deactivates maintenance mode\r\n */\r\n AdminService.prototype.deactivateMaintenance = function (message) {\r\n this.CacheService.reset();\r\n return this.$http.post(this.Config.API_ROOT + '/admin/maintenance/deactivate?message=' + encodeURIComponent(message));\r\n };\r\n AdminService.prototype.isMaintenanceActive = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/admin/maintenance/status');\r\n };\r\n AdminService.prototype.resetSyncedConfigVersion = function () {\r\n return this.$http.post(this.Config.API_ROOT + '/admin/resetSyncedCoreConfigurationVersion');\r\n };\r\n AdminService.prototype.forceApigeeResync = function () {\r\n return this.$http.post(this.Config.API_ROOT + '/admin/devapps/resync?message=[DevApp Resync]');\r\n };\r\n AdminService.prototype.forcePushConfig = function () {\r\n return this.$http.post(this.Config.API_ROOT + '/admin/forcePush');\r\n };\r\n AdminService.prototype.getSyncedCoreConfigurationVersion = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/latestSyncedCoreConfigurationVersion', { 'cache': false, ignoreError: true });\r\n };\r\n AdminService.prototype.getStoredModelSerialIds = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/admin/repo/storedModelSerialIds', { 'cache': false });\r\n };\r\n AdminService.prototype.deleteDataForModel = function (modelSerialId) {\r\n this.CacheService.reset();\r\n return this.$http.post(this.Config.API_ROOT + '/admin/repo/deleteDataForModel?modelSerialId=' + modelSerialId);\r\n };\r\n AdminService.prototype.dumpData = function (modelSerialId) {\r\n if (modelSerialId) {\r\n this.DownloadService.download(this.Config.API_ROOT + '/admin/repo/dumpData?modelSerialId=' + modelSerialId);\r\n }\r\n else {\r\n this.DownloadService.download(this.Config.API_ROOT + '/admin/repo/dumpData');\r\n }\r\n };\r\n return AdminService;\r\n}());\r\nexports.AdminService = AdminService;\r\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    \";\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Export

    Import from Core

    Import from File

    An import message is required

    A file is required

    Choose File
    0 && uploader.progress < 100\\\" class=\\\"progress-striped active\\\" value=uploader.progress type=primary>{{uploader.progress}}%

    A push message is required

    \";\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Maintenance

    Repository Dump & Restore

    0 && uploader.progress < 100\\\" class=\\\"progress-striped active\\\" value=uploader.progress type=primary>{{uploader.progress}}%

    Miscellaneous

    \";\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    The application is in maintenance mode
    \";\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"


    You are now editing the tmsid map {{selectedTmsId}}

    Resource ID TMS ID Remove
    Resource ID should be unique and values should not be empty Resource ID should be unique Values should not be empty
    {{tmsId.resourceName}} {{tmsId.resourceId}}

    No data available

    \";\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Key Encrypted Remove
    {{ isNewDefaultMetadataKeyNameEmpty() ? 'Key name should not be empty' : 'Key name should be unique' }}
    {{key.name}}

    No data available

    \";\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar ChannelList_1 = __webpack_require__(69);\r\nvar ChannelItem_1 = __webpack_require__(70);\r\nvar ChannelItemBasic_1 = __webpack_require__(71);\r\nvar ChannelCertificates_1 = __webpack_require__(72);\r\nvar ChannelSettings_1 = __webpack_require__(73);\r\nvar ChannelDomains_1 = __webpack_require__(74);\r\nvar ChannelIntegrations_1 = __webpack_require__(75);\r\nvar _ = __webpack_require__(1);\r\nvar Tabs_1 = __webpack_require__(3);\r\nvar Certificates_1 = __webpack_require__(13);\r\nvar angular = __webpack_require__(0);\r\nvar ChannelApplications_1 = __webpack_require__(77);\r\nvar Applications_1 = __webpack_require__(10);\r\nvar ChannelCustomSchemes_1 = __webpack_require__(79);\r\nvar ChannelPermissions_1 = __webpack_require__(80);\r\nvar ChannelModule = (function () {\r\n function ChannelModule() {\r\n this.ngRef.controller('ChannelListCtrl', ChannelList_1.ChannelListCtrl);\r\n this.ngRef.controller('ChannelItemCtrl', ChannelItem_1.ChannelItemCtrl);\r\n this.ngRef.controller('ChannelItemBasicCtrl', ChannelItemBasic_1.ChannelItemBasicCtrl);\r\n this.ngRef.controller('ChannelCertificatesCtrl', ChannelCertificates_1.ChannelCertificatesCtrl);\r\n this.ngRef.controller('CertificatesCtrl', Certificates_1.CertificatesCtrl);\r\n this.ngRef.controller('ChannelSettingsCtrl', ChannelSettings_1.ChannelSettingsCtrl);\r\n this.ngRef.controller('ChannelDomainsCtrl', ChannelDomains_1.ChannelDomainsCtrl);\r\n this.ngRef.controller('ChannelIntegrationsCtrl', ChannelIntegrations_1.ChannelIntegrationsCtrl);\r\n this.ngRef.controller('ChannelApplicationsCtrl', ChannelApplications_1.ChannelApplicationsCtrl);\r\n this.ngRef.controller('ChannelCustomSchemesCtrl', ChannelCustomSchemes_1.ChannelCustomSchemesCtrl);\r\n this.ngRef.controller('ChannelPermissionsCtrl', ChannelPermissions_1.ChannelPermissionsCtrl);\r\n this.ngRef.controller('ApplicationsCtrl', Applications_1.ApplicationsCtrl);\r\n }\r\n /**\r\n * @method config\r\n * @memberOf module:channel\r\n * @param {Object} $stateProvider - Ui router state provider\r\n * @param {module:core.States} States - Application states\r\n */\r\n ChannelModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n var basicView = {\r\n template: __webpack_require__(81),\r\n controller: ChannelItemBasic_1.ChannelItemBasicCtrl\r\n };\r\n $stateProvider.state(States.Channel.name, {\r\n abstract: States.Channel.abstract,\r\n url: States.Channel.url\r\n });\r\n $stateProvider.state(States.ChannelList.name, {\r\n abstract: States.ChannelList.abstract,\r\n url: States.ChannelList.url,\r\n ncyBreadcrumb: {\r\n label: States.ChannelList.displayName\r\n },\r\n onEnter: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = true;\r\n }],\r\n onExit: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = false;\r\n }],\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(82),\r\n controller: ChannelList_1.ChannelListCtrl,\r\n resolve: {\r\n serviceProviderList: [\"ChannelService\", function (ChannelService) {\r\n return ChannelService.getPage(1, 'displayName', 'ASC').then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n newProviders: [\"ChannelService\", function (ChannelService) {\r\n return ChannelService.getNewProviders();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.ChannelItem.name, {\r\n abstract: States.ChannelItem.abstract,\r\n url: States.ChannelItem.url,\r\n resolve: {\r\n data: [\"$stateParams\", \"ChannelService\", function ($stateParams, ChannelService) {\r\n return ChannelService.getItem($stateParams.channelId).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(5)\r\n },\r\n 'tabs@Base.Channel.Item': {\r\n template: __webpack_require__(6),\r\n controller: Tabs_1.TabsCtrl,\r\n resolve: {\r\n tabs: [\"States\", \"data\", \"UserService\", function (States, data, UserService) {\r\n var result = [{\r\n state: States.ChannelItemData,\r\n id: 'channelDataTab'\r\n },\r\n {\r\n state: States.ChannelSettings,\r\n id: 'channelSettingsTab'\r\n },\r\n {\r\n state: States.ChannelCertificates,\r\n id: 'channelCertificatesTab'\r\n },\r\n {\r\n state: States.ChannelDomains,\r\n id: 'channelDomainsTab'\r\n },\r\n {\r\n state: States.ChannelIntegrations,\r\n id: 'channelIntegrationsTab'\r\n },\r\n {\r\n state: States.ChannelApplications,\r\n id: 'channelApplicationsTab'\r\n }];\r\n if (data.entityData.customSchemes) {\r\n result.push({\r\n state: States.ChannelCustomSchemes,\r\n id: 'channelCustomSchemesTab'\r\n });\r\n }\r\n if (UserService.hasRole('ROLE_CONSOLE_ADMIN')) {\r\n result.push({\r\n state: States.ChannelPermissions,\r\n id: 'channelPermissionsTab'\r\n });\r\n }\r\n return result;\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.ChannelItemData.name, {\r\n abstract: States.ChannelItemData.abstract,\r\n url: States.ChannelItemData.url,\r\n ncyBreadcrumb: {\r\n label: '{{data.entityData.displayName}}',\r\n parent: States.ChannelList.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(83),\r\n controller: ChannelItem_1.ChannelItemCtrl\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelSettings.name, {\r\n abstract: States.ChannelSettings.abstract,\r\n url: States.ChannelSettings.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Settings'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(84),\r\n controller: ChannelSettings_1.ChannelSettingsCtrl\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelCertificates.name, {\r\n abstract: States.ChannelCertificates.abstract,\r\n url: States.ChannelCertificates.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Certificates'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(85),\r\n controller: ChannelCertificates_1.ChannelCertificatesCtrl,\r\n resolve: {\r\n platforms: [\"data\", \"PlatformService\", function (data, PlatformService) {\r\n return PlatformService.getPlatformDetails().then(function (response) {\r\n return response;\r\n });\r\n }],\r\n channelCertificates: [\"data\", \"CertificateService\", function (data, CertificateService) {\r\n return CertificateService.parseCertificates(data).then(function (response) {\r\n return angular.copy(response.data);\r\n });\r\n }],\r\n programmerCertificates: [\"data\", \"ProgrammerService\", \"CertificateService\", function (data, ProgrammerService, CertificateService) {\r\n var programmerId = data.entityData.programmer.replace(\"@Programmer:\", \"\").trim();\r\n return ProgrammerService.getItem(programmerId).then(function (programmerResponse) {\r\n return CertificateService.parseCertificates(programmerResponse.data).then(function (response) {\r\n return {\r\n certificates: angular.copy(response.data),\r\n userMetadataEncryptionCertificateId: programmerResponse.data.entityData.userMetadataEncryptionCertificateId\r\n };\r\n });\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelDomains.name, {\r\n abstract: States.ChannelDomains.abstract,\r\n url: States.ChannelDomains.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Domains'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(86),\r\n controller: ChannelDomains_1.ChannelDomainsCtrl\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelIntegrations.name, {\r\n abstract: States.ChannelIntegrations.abstract,\r\n url: States.ChannelIntegrations.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Integrations'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(87),\r\n controller: ChannelIntegrations_1.ChannelIntegrationsCtrl,\r\n resolve: {\r\n mvpdList: [\"data\", \"BulkService\", function (data, BulkService) {\r\n var idList = (data.entityData.integrations) ? Object.keys(data.entityData.integrations) : [];\r\n return BulkService.getBulk(idList).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n integrationList: [\"data\", \"BulkService\", function (data, BulkService) {\r\n var idList = (data.entityData.integrations) ? _.values(data.entityData.integrations) : [];\r\n return BulkService.getBulk(idList).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelApplications.name, {\r\n abstract: States.ChannelApplications.abstract,\r\n url: States.ChannelApplications.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Applications'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(88),\r\n controller: ChannelApplications_1.ChannelApplicationsCtrl,\r\n resolve: {\r\n programmer: [\"data\", \"ProgrammerService\", function (data, ProgrammerService) {\r\n var programmerId = data.entityData.programmer.replace('@Programmer:', '').trim();\r\n return ProgrammerService.getItem(programmerId).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n applications: [\"data\", \"ApplicationService\", function (data, ApplicationService) {\r\n var programmerId = data.entityData.programmer.trim().replace('@Programmer:', '');\r\n var channelId = data.entityData.id;\r\n return ApplicationService.getAllChannelApps(programmerId, channelId).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n platforms: [\"data\", \"PlatformService\", function (data, PlatformService) {\r\n return PlatformService.getPlatformDetails().then(function (response) {\r\n return response;\r\n });\r\n }],\r\n applicationTypes: [\"data\", \"ApplicationService\", function (data, ApplicationService) {\r\n return ApplicationService.getApplicationTypes().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelCustomSchemes.name, {\r\n abstract: States.ChannelCustomSchemes.abstract,\r\n url: States.ChannelCustomSchemes.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Custom Schemes'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(89),\r\n controller: ChannelCustomSchemes_1.ChannelCustomSchemesCtrl,\r\n resolve: {\r\n programmer: [\"data\", \"ProgrammerService\", function (data, ProgrammerService) {\r\n var programmerId = data.entityData.programmer.replace('@Programmer:', '').trim();\r\n return ProgrammerService.getItem(programmerId).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ChannelPermissions.name, {\r\n abstract: States.ChannelPermissions.abstract,\r\n url: States.ChannelPermissions.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Permissions'}}\",\r\n parent: States.ChannelItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Channel.Item': {\r\n template: __webpack_require__(90),\r\n controller: ChannelPermissions_1.ChannelPermissionsCtrl,\r\n resolve: {\r\n programmer: [\"data\", \"ProgrammerService\", function (data, ProgrammerService) {\r\n var programmerId = data.entityData.programmer.replace('@Programmer:', '').trim();\r\n return ProgrammerService.getItem(programmerId).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Channel.Item': basicView\r\n }\r\n });\r\n /* Add New States Above */\r\n }];\r\n ChannelModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'channel',\r\n dependencies: ['ui.router', 'core', 'data']\r\n })\r\n ], ChannelModule);\r\n return ChannelModule;\r\n}());\r\nexports.ChannelModule = ChannelModule;\r\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class ChannelListCtrl\r\n * @memberOf module:channel\r\n * @param {Object} $scope - Angular scope\r\n * @param {Object} $state - Ui router state service\r\n * @param {module:core.States} States - Application states\r\n * @param {module:data.Config} Config - Application config\r\n * @param {Object} serviceProviderList - Initial data\r\n * @param {module:data.ChannelService} ChannelService - service provider service\r\n */\r\nvar ChannelListCtrl = (function () {\r\n ChannelListCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"States\", \"Config\", \"serviceProviderList\", \"newProviders\", \"ChannelService\", \"CacheService\"];\r\n function ChannelListCtrl($rootScope, $scope, $state, States, Config, serviceProviderList, newProviders, ChannelService, CacheService) {\r\n \"ngInject\";\r\n /**\r\n * @name module:channel.ChannelListCtrl#columns\r\n * @type {Array}\r\n * @description Provides column description for {@link module:ui.PanelListDirective#columns}\r\n */\r\n $scope.columns = [\r\n {\r\n name: 'Display Name',\r\n sortable: true,\r\n sorted: true,\r\n sortAsc: true,\r\n sortField: 'displayName',\r\n class: 'col-md-10'\r\n },\r\n {\r\n name: 'No of integrations',\r\n sortable: false,\r\n class: 'col-md-2'\r\n }\r\n ];\r\n /**\r\n * @name module:channel.ChannelListCtrl#data\r\n * @type {Object}\r\n * @see module:data.ChannelService\r\n * @description Initial list data\r\n */\r\n $scope.data = serviceProviderList ? serviceProviderList : null;\r\n if ($scope.data === null) {\r\n $rootScope.searchActive = false;\r\n }\r\n /**\r\n * @name module:channel.ChannelListCtrl#pageSize\r\n * @type {Number}\r\n * @default Config.PAGE_SIZE\r\n * @description Page size used by {@link module:ui.PanelListDirective#pageSize}\r\n */\r\n $scope.pageSize = Config.PAGE_SIZE;\r\n /**\r\n * @name module:channel.ChannelListCtrl#service\r\n * @type {Object}\r\n * @description Data retrieval service. Used by {@link module:ui.PanelListDirective#service}\r\n */\r\n $scope.service = ChannelService;\r\n /**\r\n * name module:channel.ChannelListCtrl#onItemClick\r\n * @method\r\n * @param {Object} item - selected item\r\n * @description Item click handler. Navigates to channel item detail page\r\n */\r\n $scope.onItemClick = function (item) {\r\n $state.go(States.ChannelItemData.name, {\r\n channelId: item.entityData.id\r\n });\r\n };\r\n $scope.$on(\"onPageChange\", function () {\r\n var tableListElement = document.getElementById('table-list');\r\n window.scrollTo(0, window.scrollY - tableListElement.offsetHeight);\r\n });\r\n $scope.newProviders = newProviders;\r\n }\r\n return ChannelListCtrl;\r\n}());\r\nexports.ChannelListCtrl = ChannelListCtrl;\r\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelItemCtrl = (function () {\r\n ChannelItemCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\", \"TooltipService\", \"UserService\"];\r\n function ChannelItemCtrl($scope, data, DataCollectorService, TooltipService, UserService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.serviceProvider;\r\n });\r\n }\r\n return ChannelItemCtrl;\r\n}());\r\nexports.ChannelItemCtrl = ChannelItemCtrl;\r\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelItemBasicCtrl = (function () {\r\n ChannelItemBasicCtrl.$inject = [\"$scope\", \"States\", \"$state\", \"data\", \"mvpdList\", \"DataCollectorService\"];\r\n function ChannelItemBasicCtrl($scope, States, $state, data, mvpdList, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.basicWorkspaceEnabled = true;\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.mvpdList = mvpdList;\r\n $scope.onMvpdClick = function (mvpd) {\r\n var integrationId = $scope.data.entityData.integrations['@' + mvpd.key].split(':')[1];\r\n $state.go(States.IntegrationItemData.name, {\r\n integrationId: integrationId\r\n });\r\n };\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ChannelItemBasicCtrl;\r\n}());\r\nexports.ChannelItemBasicCtrl = ChannelItemBasicCtrl;\r\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelCertificatesCtrl = (function () {\r\n ChannelCertificatesCtrl.$inject = [\"$scope\", \"data\", \"platforms\", \"channelCertificates\", \"programmerCertificates\", \"UserService\", \"DataCollectorService\", \"EncryptionLevel\"];\r\n function ChannelCertificatesCtrl($scope, data, platforms, channelCertificates, programmerCertificates, UserService, DataCollectorService, EncryptionLevel) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.platforms = platforms;\r\n $scope.channelCertificates = channelCertificates;\r\n $scope.programmerCertificates = programmerCertificates.certificates;\r\n $scope.write = UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n var isChannelLevelEncryptionCertificateSet = function () {\r\n return data.entityData.userMetadataEncryptionCertificateId !== null;\r\n };\r\n var isProgrammerLevelEncryptionCertificateSet = function () {\r\n return programmerCertificates.userMetadataEncryptionCertificateId !== null;\r\n };\r\n var getSerialNumberFor = function (certificateId) {\r\n if (!certificateId) {\r\n return undefined;\r\n }\r\n if ($scope.channelCertificates[certificateId]) {\r\n return $scope.channelCertificates[certificateId].certificateInfo.serialNumber;\r\n }\r\n if (programmerCertificates.certificates[certificateId]) {\r\n return programmerCertificates.certificates[certificateId].certificateInfo.serialNumber;\r\n }\r\n return undefined;\r\n };\r\n $scope.encryptionData = {\r\n level: EncryptionLevel.CHANNEL,\r\n channelUserMetadataEncryptionCertificate: {\r\n isSet: isChannelLevelEncryptionCertificateSet(),\r\n id: data.entityData.userMetadataEncryptionCertificateId,\r\n serialNumber: getSerialNumberFor(data.entityData.userMetadataEncryptionCertificateId)\r\n },\r\n programmerUserMetadataEncryptionCertificate: {\r\n isSet: isProgrammerLevelEncryptionCertificateSet(),\r\n id: programmerCertificates.userMetadataEncryptionCertificateId,\r\n serialNumber: getSerialNumberFor(programmerCertificates.userMetadataEncryptionCertificateId)\r\n }\r\n };\r\n $scope.programmerCertificatesComponentOpen = true;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ChannelCertificatesCtrl;\r\n}());\r\nexports.ChannelCertificatesCtrl = ChannelCertificatesCtrl;\r\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelSettingsCtrl = (function () {\r\n ChannelSettingsCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\", \"TooltipService\", \"UserService\"];\r\n function ChannelSettingsCtrl($scope, data, DataCollectorService, TooltipService, UserService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.$watch(\"data.entityData.analyticsConfigs\", function (newValue, oldValue) {\r\n if (newValue !== oldValue) {\r\n if (newValue && newValue.length !== 0) {\r\n if (!newValue[0].enabled) {\r\n newValue[0].enabled = false;\r\n }\r\n if (!newValue[0].trackingServerSchema) {\r\n newValue[0].trackingServerSchema = null;\r\n }\r\n if (!newValue[0].rsidMappingTemplate) {\r\n newValue[0].rsidMappingTemplate = null;\r\n }\r\n if (!newValue[0].rsidConfirmationMarker) {\r\n newValue[0].rsidConfirmationMarker = null;\r\n }\r\n if (!newValue[0].default) {\r\n newValue[0].default = true;\r\n }\r\n }\r\n }\r\n }, true);\r\n $scope.analyticsConfigOpen = false;\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n $scope.notAdmin = !UserService.hasRole('ROLE_CONSOLE_ADMIN');\r\n $scope.notInternalUser = !UserService.hasRole('ROLE_CONSOLE_ALL_DATA');\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.serviceProvider;\r\n });\r\n $scope.isEmpty = function (field) {\r\n var ac = $scope.data.entityData.analyticsConfigs[0];\r\n if (!ac || !ac.enabled) {\r\n return false;\r\n }\r\n return !ac[field] || ac[field].length === 0;\r\n };\r\n }\r\n return ChannelSettingsCtrl;\r\n}());\r\nexports.ChannelSettingsCtrl = ChannelSettingsCtrl;\r\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar angular = __webpack_require__(0);\r\nvar NotificationService_1 = __webpack_require__(4);\r\nvar ChannelDomainsCtrl = (function () {\r\n ChannelDomainsCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\", \"TooltipService\", \"UserService\", \"NotificationService\"];\r\n function ChannelDomainsCtrl($scope, data, DataCollectorService, TooltipService, UserService, NotificationService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n $scope.regex = /^([a-zA-Z0-9-]{1,63}\\.)+([a-zA-Z]{1,})$/;\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.serviceProvider;\r\n });\r\n $scope.isFieldInvalid = function (newDomainForm) {\r\n if (newDomainForm) {\r\n return newDomainForm.$invalid && newDomainForm.$dirty;\r\n }\r\n return false;\r\n };\r\n $scope.removeDomain = function (domain) {\r\n var size = $scope.data.entityData.domains.length;\r\n var _loop_1 = function (index) {\r\n if (angular.equals(domain, $scope.data.entityData.domains[index])) {\r\n NotificationService.getConfirmationFromUser(NotificationService_1.Notifications.confirmDeleteDomain).result.then(function (userDecisionToDelete) {\r\n if (userDecisionToDelete === true) {\r\n $scope.data.entityData.domains.splice(index, 1);\r\n }\r\n });\r\n return \"break\";\r\n }\r\n };\r\n for (var index = 0; index < size; index++) {\r\n var state_1 = _loop_1(index);\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n };\r\n $scope.createEmptyDomain = function () {\r\n return {\r\n id: \"\",\r\n domainName: \"\",\r\n idpInitiated: false\r\n };\r\n };\r\n $scope.newDomain = $scope.createEmptyDomain();\r\n $scope.newDomainAdded = false;\r\n $scope.addNewDomainButtonClicked = function () {\r\n $scope.newDomainAdded = true;\r\n };\r\n $scope.resetNewDomain = function () {\r\n $scope.newDomainAdded = false;\r\n $scope.newDomain = $scope.createEmptyDomain();\r\n };\r\n $scope.genericDomainExists = function (subdomain) {\r\n if (!subdomain) {\r\n return false;\r\n }\r\n var size = $scope.data.entityData.domains.length;\r\n var subdomainElements = subdomain.split(\".\").reverse();\r\n for (var index = 0; index < size; index++) {\r\n var domain = $scope.data.entityData.domains[index].domainName;\r\n domain = domain.split(\".\").reverse();\r\n if (domain.length <= subdomainElements.length) {\r\n for (var j = 0, counter = 0; j < domain.length; j++, counter++) {\r\n if (!angular.equals(domain[j], subdomainElements[j])) {\r\n break;\r\n }\r\n }\r\n if (counter === domain.length) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n $scope.isDomainValid = function (domain) {\r\n if (domain) {\r\n if (domain.match($scope.regex)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n $scope.saveDomain = function (domainForm) {\r\n if ($scope.isDomainValid($scope.newDomain.domainName) && !$scope.genericDomainExists($scope.newDomain.domainName)) {\r\n $scope.newDomainAdded = false;\r\n $scope.newDomain.id = $scope.newDomain.domainName;\r\n $scope.data.entityData.domains.push($scope.newDomain);\r\n $scope.newDomain = $scope.createEmptyDomain();\r\n domainForm.$setPristine();\r\n return true;\r\n }\r\n return false;\r\n };\r\n }\r\n return ChannelDomainsCtrl;\r\n}());\r\nexports.ChannelDomainsCtrl = ChannelDomainsCtrl;\r\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelIntegrationsCtrl = (function () {\r\n ChannelIntegrationsCtrl.$inject = [\"$scope\", \"$state\", \"States\", \"data\", \"mvpdList\", \"integrationList\"];\r\n function ChannelIntegrationsCtrl($scope, $state, States, data, mvpdList, integrationList) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.mvpdList = mvpdList;\r\n $scope.integrationList = integrationList;\r\n $scope.onMvpdClick = function (integrationId) {\r\n $state.go(States.IntegrationItemData.name, {\r\n integrationId: integrationId\r\n });\r\n };\r\n $scope.getEnabled = function (integration) {\r\n return integration.entityData.enabled ? 'Yes' : 'No';\r\n };\r\n }\r\n return ChannelIntegrationsCtrl;\r\n}());\r\nexports.ChannelIntegrationsCtrl = ChannelIntegrationsCtrl;\r\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Serial Number Subject Organization Issuer Organization Active Since Expires Used On Actions
    Certificate parse error {{certificate.certificateInfo.serialNumber}} {{certificate.certificateInfo.subjectOrganization}} {{certificate.certificateInfo.issuerOrganization}} {{certificate.certificateInfo.issued | date:'mediumDate'}} {{certificate.certificateInfo.expires | date:'mediumDate'}}

    No certificate is defined

    \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2018 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar ChannelApplicationsCtrl = (function () {\r\n ChannelApplicationsCtrl.$inject = [\"$scope\", \"data\", \"programmer\", \"applications\", \"platforms\", \"applicationTypes\", \"ChannelService\"];\r\n function ChannelApplicationsCtrl($scope, data, programmer, applications, platforms, applicationTypes, ChannelService) {\r\n \"ngInject\";\r\n $scope.applicationTypes = applicationTypes;\r\n $scope.platforms = platforms;\r\n $scope.applications = applications;\r\n $scope.data = data;\r\n $scope.entity = {\r\n type: 'CHANNEL',\r\n data: angular.copy($scope.data),\r\n relatedData: {\r\n programmer: programmer,\r\n domains: ChannelService.getDomains(data.entityData)\r\n }\r\n };\r\n }\r\n return ChannelApplicationsCtrl;\r\n}());\r\nexports.ChannelApplicationsCtrl = ChannelApplicationsCtrl;\r\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    No applications present.

    0\\\">
    Name Version Platforms Actions
    {{application.entityData.name}} {{application.entityData.version}}
    Download Download View
    \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelCustomSchemesCtrl = (function () {\r\n ChannelCustomSchemesCtrl.$inject = [\"$scope\", \"data\", \"programmer\", \"DataCollectorService\"];\r\n function ChannelCustomSchemesCtrl($scope, data, programmer, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.programmer = programmer;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ChannelCustomSchemesCtrl;\r\n}());\r\nexports.ChannelCustomSchemesCtrl = ChannelCustomSchemesCtrl;\r\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ChannelPermissionsCtrl = (function () {\r\n ChannelPermissionsCtrl.$inject = [\"$scope\", \"data\", \"programmer\", \"DataCollectorService\"];\r\n function ChannelPermissionsCtrl($scope, data, programmer, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.programmer = programmer;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ChannelPermissionsCtrl;\r\n}());\r\nexports.ChannelPermissionsCtrl = ChannelPermissionsCtrl;\r\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Live Integrations

    This channel has no integrations.

    0\\\">
    MVPD Display Name Enabled
    {{integration | squash: 'displayName':'integration'}}
    \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    New Channels

    Display Name No of integrations
    {{item.entityData.displayName}} {{item.entityData.integrations | count}}
    \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Value should not be empty
    \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Analytics Configuration
    Value should not be empty
    Value should not be empty
    \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Channel Specific Certificates

    Inherited Programmer Certificates
    \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    This channel has no domains.

    0 || newDomainAdded)\\\">
    Domain IDP Initiated Actions
    {{domain.domainName}}
    0 && readOnly\\\">
    Domain IDP Initiated
    {{domain.domainName}}
    \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    This channel has no integrations.

    0\\\">
    Integration with Enabled
    {{integration | squash: 'displayName':'integration'}} ID: {{integration | squash: 'id':'integration'}} {{getEnabled(integration)}}
    \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar Feedback_1 = __webpack_require__(92);\r\nvar FeedbackService_1 = __webpack_require__(94);\r\nvar FeedbackModule = (function () {\r\n function FeedbackModule() {\r\n this.ngRef.service('FeedbackService', FeedbackService_1.FeedbackService);\r\n this.ngRef.directive('apcFeedback', function () { return new Feedback_1.ApcFeedbackDirective(); });\r\n }\r\n FeedbackModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n }];\r\n FeedbackModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'feedback',\r\n dependencies: ['core']\r\n })\r\n ], FeedbackModule);\r\n return FeedbackModule;\r\n}());\r\nexports.FeedbackModule = FeedbackModule;\r\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcFeedbackDirective = (function () {\r\n function ApcFeedbackDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {};\r\n this.template = __webpack_require__(93);\r\n this.controller = ApcFeedbackCtrl;\r\n }\r\n ApcFeedbackDirective.prototype.link = function (scope, element, attrs, fn) { };\r\n return ApcFeedbackDirective;\r\n}());\r\nexports.ApcFeedbackDirective = ApcFeedbackDirective;\r\nvar ApcFeedbackCtrl = (function () {\r\n ApcFeedbackCtrl.$inject = [\"$scope\", \"FeedbackService\", \"NotificationService\"];\r\n function ApcFeedbackCtrl($scope, FeedbackService, NotificationService) {\r\n \"ngInject\";\r\n $scope.opened = false;\r\n $scope.screenshotMode = false;\r\n $scope.invalidFile = false;\r\n $scope.resetForm = function () {\r\n $scope.title = '';\r\n $scope.message = '';\r\n $scope.screenshotData = null;\r\n $scope.invalidFile = false;\r\n $scope.feedbackForm.$setPristine(true);\r\n };\r\n $scope.toggleFeedbackForm = function () {\r\n $scope.opened = !$scope.opened;\r\n if ($scope.opened) {\r\n window.addEventListener('mouseup', $scope.closeFeedbackFormIfClickedOutside);\r\n }\r\n };\r\n $scope.closeFeedbackFormIfClickedOutside = function (event) {\r\n var feedbackFormElement = document.getElementById('feedback');\r\n var clickedElementOrParentOfIt = event.target;\r\n var feedbackFormRemainsOpen = false;\r\n while (clickedElementOrParentOfIt) {\r\n if (clickedElementOrParentOfIt === feedbackFormElement) {\r\n feedbackFormRemainsOpen = true;\r\n break;\r\n }\r\n clickedElementOrParentOfIt = clickedElementOrParentOfIt.parentNode;\r\n }\r\n if (!feedbackFormRemainsOpen) {\r\n window.removeEventListener('mouseup', $scope.closeFeedbackFormIfClickedOutside);\r\n $scope.opened = false;\r\n $scope.$apply();\r\n }\r\n };\r\n $scope.submit = function () {\r\n FeedbackService.send({\r\n title: $scope.title,\r\n message: $scope.message,\r\n screenshotData: $scope.screenshotData\r\n }).then(function () {\r\n $scope.toggleFeedbackForm();\r\n $scope.resetForm();\r\n NotificationService.success('', 'Thank you for your feedback.');\r\n }, function () {\r\n NotificationService.error('', 'There was a problem while sending your message. Please try again later.');\r\n });\r\n };\r\n $scope.updatePreview = function (input) {\r\n var reader = new FileReader();\r\n $scope.$apply(function () { $scope.invalidFile = false; });\r\n if (input.files[0].type.indexOf('image/') === -1) {\r\n $scope.$apply(function () { $scope.invalidFile = true; });\r\n }\r\n else {\r\n reader.onload = function (e) {\r\n $scope.$apply(function () {\r\n $scope.screenshotData = e.target.result;\r\n });\r\n };\r\n reader.readAsDataURL(input.files[0]);\r\n }\r\n };\r\n }\r\n return ApcFeedbackCtrl;\r\n}());\r\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Feedback
    \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar FeedbackService = (function () {\r\n FeedbackService.$inject = [\"$http\", \"Config\"];\r\n function FeedbackService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n FeedbackService.prototype.send = function (payload) {\r\n return this.$http.post(this.Config.API_ROOT + '/feedback/send', payload);\r\n };\r\n return FeedbackService;\r\n}());\r\nexports.FeedbackService = FeedbackService;\r\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar ProgrammerCertificates_1 = __webpack_require__(96);\r\nvar ProgrammerChannels_1 = __webpack_require__(97);\r\nvar ProgrammerItem_1 = __webpack_require__(98);\r\nvar ProgrammerItemBasic_1 = __webpack_require__(99);\r\nvar ProgrammerList_1 = __webpack_require__(100);\r\nvar Tabs_1 = __webpack_require__(3);\r\nvar angular = __webpack_require__(0);\r\nvar ProgrammerApplications_1 = __webpack_require__(101);\r\nvar Applications_1 = __webpack_require__(10);\r\nvar ProgrammerCustomSchemes_1 = __webpack_require__(102);\r\nvar ProgrammerPermissions_1 = __webpack_require__(103);\r\nvar ProgrammerModule = (function () {\r\n function ProgrammerModule() {\r\n this.ngRef.controller('ProgrammerCertificatesCtrl', ProgrammerCertificates_1.ProgrammerCertificatesCtrl);\r\n this.ngRef.controller('ProgrammerChannelsCtrl', ProgrammerChannels_1.ProgrammerChannelsCtrl);\r\n this.ngRef.controller('ProgrammerItemCtrl', ProgrammerItem_1.ProgrammerItemCtrl);\r\n this.ngRef.controller('ProgrammerItemBasicCtrl', ProgrammerItemBasic_1.ProgrammerItemBasicCtrl);\r\n this.ngRef.controller('ProgrammerListCtrl', ProgrammerList_1.ProgrammerListCtrl);\r\n this.ngRef.controller('ProgrammerApplicationsCtrl', ProgrammerApplications_1.ProgrammerApplicationsCtrl);\r\n this.ngRef.controller('ProgrammerCustomSchemesCtrl', ProgrammerCustomSchemes_1.ProgrammerCustomSchemesCtrl);\r\n this.ngRef.controller('ProgrammerPermissionsCtrl', ProgrammerPermissions_1.ProgrammerPermissionsCtrl);\r\n this.ngRef.controller('ApplicationsCtrl', Applications_1.ApplicationsCtrl);\r\n }\r\n ProgrammerModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n var basicView = {\r\n template: __webpack_require__(104),\r\n controller: ProgrammerItemBasic_1.ProgrammerItemBasicCtrl\r\n };\r\n $stateProvider.state(States.Programmer.name, {\r\n abstract: States.Programmer.abstract,\r\n url: States.Programmer.url\r\n });\r\n $stateProvider.state(States.ProgrammerList.name, {\r\n abstract: States.ProgrammerList.abstract,\r\n url: States.ProgrammerList.url,\r\n ncyBreadcrumb: {\r\n label: States.ProgrammerList.displayName\r\n },\r\n onEnter: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = true;\r\n }],\r\n onExit: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = false;\r\n }],\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(105),\r\n controller: ProgrammerList_1.ProgrammerListCtrl,\r\n resolve: {\r\n programmerList: [\"ProgrammerService\", function (ProgrammerService) {\r\n return ProgrammerService.getPage(1, 'displayName', 'ASC').then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n newProgrammers: [\"ProgrammerService\", function (ProgrammerService) {\r\n return ProgrammerService.getNewProgrammers();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerItem.name, {\r\n abstract: States.ProgrammerItem.abstract,\r\n url: States.ProgrammerItem.url,\r\n resolve: {\r\n data: [\"$stateParams\", \"ProgrammerService\", function ($stateParams, ProgrammerService) {\r\n return ProgrammerService.getItem($stateParams.programmerId).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(5)\r\n },\r\n 'tabs@Base.Programmer.Item': {\r\n template: __webpack_require__(6),\r\n controller: Tabs_1.TabsCtrl,\r\n resolve: {\r\n tabs: [\"States\", \"data\", \"UserService\", function (States, data, UserService) {\r\n var result = [];\r\n result.push({\r\n state: States.ProgrammerItemData,\r\n id: 'programmerDataTab'\r\n });\r\n result.push({\r\n state: States.ProgrammerCertificates,\r\n id: 'programmerCertificatesTab'\r\n });\r\n result.push({\r\n state: States.ProgrammerChannels,\r\n id: 'programmerChannelsTab'\r\n });\r\n result.push({\r\n state: States.ProgrammerApplications,\r\n id: 'programmerApplicationsTab'\r\n });\r\n if (data.entityData.customSchemes) {\r\n result.push({\r\n state: States.ProgrammerCustomSchemes,\r\n id: 'programmerCustomSchemesTab'\r\n });\r\n }\r\n if (UserService.hasRole('ROLE_CONSOLE_ADMIN')) {\r\n result.push({\r\n state: States.ProgrammerPermissions,\r\n id: 'programmerPermissionsTab'\r\n });\r\n }\r\n return result;\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerItemData.name, {\r\n abstract: States.ProgrammerItemData.abstract,\r\n url: States.ProgrammerItemData.url,\r\n ncyBreadcrumb: {\r\n label: '{{data.entityData.displayName}}',\r\n parent: States.ProgrammerList.name\r\n },\r\n views: {\r\n 'tabContent@Base.Programmer.Item': {\r\n template: __webpack_require__(106),\r\n controller: ProgrammerItem_1.ProgrammerItemCtrl\r\n },\r\n 'entityItemBasic@Base.Programmer.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerCertificates.name, {\r\n abstract: States.ProgrammerCertificates.abstract,\r\n url: States.ProgrammerCertificates.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Certificates'}}\",\r\n parent: States.ProgrammerItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Programmer.Item': {\r\n template: __webpack_require__(107),\r\n controller: ProgrammerCertificates_1.ProgrammerCertificatesCtrl,\r\n resolve: {\r\n platforms: [\"data\", \"PlatformService\", function (data, PlatformService) {\r\n return PlatformService.getPlatformDetails().then(function (response) {\r\n return response;\r\n });\r\n }],\r\n certificates: [\"data\", \"CertificateService\", function (data, CertificateService) {\r\n return CertificateService.parseCertificates(data).then(function (response) {\r\n return angular.copy(response.data);\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Programmer.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerChannels.name, {\r\n abstract: States.ProgrammerChannels.abstract,\r\n url: States.ProgrammerChannels.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Channels'}}\",\r\n parent: States.ProgrammerItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Programmer.Item': {\r\n template: __webpack_require__(108),\r\n controller: ProgrammerChannels_1.ProgrammerChannelsCtrl\r\n },\r\n 'entityItemBasic@Base.Programmer.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerApplications.name, {\r\n abstract: States.ProgrammerApplications.abstract,\r\n url: States.ProgrammerApplications.url,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Applications'}}\",\r\n parent: States.ProgrammerItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Programmer.Item': {\r\n template: __webpack_require__(109),\r\n controller: ProgrammerApplications_1.ProgrammerApplicationsCtrl,\r\n resolve: {\r\n applications: [\"data\", \"ApplicationService\", function (data, ApplicationService) {\r\n var programmerId = data.entityData.id;\r\n return ApplicationService.getAllProgrammerApps(programmerId).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n platforms: [\"data\", \"PlatformService\", function (data, PlatformService) {\r\n return PlatformService.getPlatformDetails().then(function (response) {\r\n return response;\r\n });\r\n }],\r\n applicationTypes: [\"data\", \"ApplicationService\", function (data, ApplicationService) {\r\n return ApplicationService.getApplicationTypes().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Programmer.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerCustomSchemes.name, {\r\n abstract: States.ProgrammerCustomSchemes.abstract,\r\n url: States.ProgrammerCustomSchemes.url,\r\n roles: States.ProgrammerCustomSchemes.roles,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Custom Schemes'}}\",\r\n parent: States.ProgrammerItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Programmer.Item': {\r\n template: __webpack_require__(110),\r\n controller: ProgrammerCustomSchemes_1.ProgrammerCustomSchemesCtrl\r\n },\r\n 'entityItemBasic@Base.Programmer.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.ProgrammerPermissions.name, {\r\n abstract: States.ProgrammerPermissions.abstract,\r\n url: States.ProgrammerPermissions.url,\r\n roles: States.ProgrammerPermissions.roles,\r\n ncyBreadcrumb: {\r\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Permissions'}}\",\r\n parent: States.ProgrammerItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Programmer.Item': {\r\n template: __webpack_require__(111),\r\n controller: ProgrammerPermissions_1.ProgrammerPermissionsCtrl\r\n },\r\n 'entityItemBasic@Base.Programmer.Item': basicView\r\n }\r\n });\r\n /* Add New States Above */\r\n }];\r\n ProgrammerModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'programmer',\r\n dependencies: ['ui.bootstrap', 'ui.router', 'core', 'data']\r\n })\r\n ], ProgrammerModule);\r\n return ProgrammerModule;\r\n}());\r\nexports.ProgrammerModule = ProgrammerModule;\r\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerCertificatesCtrl = (function () {\r\n ProgrammerCertificatesCtrl.$inject = [\"$scope\", \"data\", \"platforms\", \"certificates\", \"UserService\", \"DataCollectorService\", \"EncryptionLevel\"];\r\n function ProgrammerCertificatesCtrl($scope, data, platforms, certificates, UserService, DataCollectorService, EncryptionLevel) {\r\n \"ngInject\";\r\n var isProgrammerLevelEncryptionCertificateSet = function () {\r\n return data.entityData.userMetadataEncryptionCertificateId !== null;\r\n };\r\n var getSerialNumberFor = function (certificateId) {\r\n if (!certificateId) {\r\n return undefined;\r\n }\r\n if (data.certificates[certificateId]) {\r\n return data.certificates[certificateId].certificateInfo.serialNumber;\r\n }\r\n return undefined;\r\n };\r\n $scope.data = data;\r\n $scope.platforms = platforms;\r\n $scope.certificates = certificates;\r\n $scope.write = UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n $scope.encryptionData = {\r\n level: EncryptionLevel.PROGRAMMER,\r\n channelUserMetadataEncryptionCertificate: {\r\n isSet: false,\r\n id: undefined,\r\n serialNumber: undefined\r\n },\r\n programmerUserMetadataEncryptionCertificate: {\r\n isSet: isProgrammerLevelEncryptionCertificateSet(),\r\n id: data.entityData.userMetadataEncryptionCertificateId,\r\n serialNumber: getSerialNumberFor(data.entityData.userMetadataEncryptionCertificateId)\r\n }\r\n };\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ProgrammerCertificatesCtrl;\r\n}());\r\nexports.ProgrammerCertificatesCtrl = ProgrammerCertificatesCtrl;\r\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerChannelsCtrl = (function () {\r\n ProgrammerChannelsCtrl.$inject = [\"$scope\", \"$state\", \"States\", \"data\"];\r\n function ProgrammerChannelsCtrl($scope, $state, States, data) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.isSortAsc = true;\r\n $scope.onColumnSort = function () {\r\n $scope.data.related.serviceProviders.sort(function (a, b) {\r\n return a.entityData.displayName.localeCompare(b.entityData.displayName);\r\n });\r\n !$scope.isSortAsc && $scope.data.related.serviceProviders.reverse();\r\n $scope.isSortAsc = !$scope.isSortAsc;\r\n };\r\n $scope.onChannelClick = function (channel) {\r\n $state.go(States.ChannelItemData.name, {\r\n channelId: channel.entityData.id\r\n });\r\n };\r\n }\r\n return ProgrammerChannelsCtrl;\r\n}());\r\nexports.ProgrammerChannelsCtrl = ProgrammerChannelsCtrl;\r\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerItemCtrl = (function () {\r\n ProgrammerItemCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\", \"TooltipService\"];\r\n function ProgrammerItemCtrl($scope, data, DataCollectorService, TooltipService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.programmer;\r\n });\r\n }\r\n return ProgrammerItemCtrl;\r\n}());\r\nexports.ProgrammerItemCtrl = ProgrammerItemCtrl;\r\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerItemBasicCtrl = (function () {\r\n ProgrammerItemBasicCtrl.$inject = [\"$scope\", \"$state\", \"States\", \"data\", \"DataCollectorService\"];\r\n function ProgrammerItemBasicCtrl($scope, $state, States, data, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.basicWorkspaceEnabled = true;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.onChannelClick = function (channel) {\r\n $state.go(States.ChannelItemData.name, {\r\n channelId: channel.entityData.id\r\n });\r\n };\r\n }\r\n return ProgrammerItemBasicCtrl;\r\n}());\r\nexports.ProgrammerItemBasicCtrl = ProgrammerItemBasicCtrl;\r\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerListCtrl = (function () {\r\n ProgrammerListCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"States\", \"Config\", \"programmerList\", \"newProgrammers\", \"ProgrammerService\"];\r\n function ProgrammerListCtrl($rootScope, $scope, $state, States, Config, programmerList, newProgrammers, ProgrammerService) {\r\n \"ngInject\";\r\n $scope.columns = [\r\n {\r\n name: 'Display Name',\r\n sortable: true,\r\n sorted: true,\r\n sortAsc: true,\r\n sortField: 'displayName',\r\n class: 'col-md-9'\r\n },\r\n {\r\n name: 'No of channels',\r\n sortable: false,\r\n class: 'col-md-2'\r\n },\r\n {\r\n name: 'Logo',\r\n sortable: false,\r\n class: 'col-md-1 image action'\r\n }\r\n ];\r\n $scope.data = programmerList ? programmerList : null;\r\n if ($scope.data === null) {\r\n $rootScope.searchActive = false;\r\n }\r\n $scope.pageSize = Config.PAGE_SIZE;\r\n $scope.service = ProgrammerService;\r\n $scope.onItemClick = function (item) {\r\n $state.go(States.ProgrammerItemData.name, {\r\n programmerId: item.entityData.id\r\n });\r\n };\r\n $scope.$on(\"onPageChange\", function () {\r\n var tableListElement = document.getElementById('table-list');\r\n window.scrollTo(0, window.scrollY - tableListElement.offsetHeight);\r\n });\r\n $scope.newProgrammers = newProgrammers;\r\n }\r\n return ProgrammerListCtrl;\r\n}());\r\nexports.ProgrammerListCtrl = ProgrammerListCtrl;\r\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2018 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar ProgrammerApplicationsCtrl = (function () {\r\n ProgrammerApplicationsCtrl.$inject = [\"$scope\", \"data\", \"applications\", \"platforms\", \"applicationTypes\", \"ProgrammerService\"];\r\n function ProgrammerApplicationsCtrl($scope, data, applications, platforms, applicationTypes, ProgrammerService) {\r\n \"ngInject\";\r\n $scope.applicationTypes = applicationTypes;\r\n $scope.platforms = platforms;\r\n $scope.applications = applications;\r\n $scope.data = data;\r\n $scope.entity = {\r\n type: 'PROGRAMMER',\r\n data: angular.copy($scope.data),\r\n relatedData: {\r\n domains: ProgrammerService.getDomains(data.related.serviceProviders)\r\n }\r\n };\r\n }\r\n return ProgrammerApplicationsCtrl;\r\n}());\r\nexports.ProgrammerApplicationsCtrl = ProgrammerApplicationsCtrl;\r\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerCustomSchemesCtrl = (function () {\r\n ProgrammerCustomSchemesCtrl.$inject = [\"$scope\", \"$state\", \"States\", \"data\", \"DataCollectorService\"];\r\n function ProgrammerCustomSchemesCtrl($scope, $state, States, data, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ProgrammerCustomSchemesCtrl;\r\n}());\r\nexports.ProgrammerCustomSchemesCtrl = ProgrammerCustomSchemesCtrl;\r\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ProgrammerPermissionsCtrl = (function () {\r\n ProgrammerPermissionsCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\"];\r\n function ProgrammerPermissionsCtrl($scope, data, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return ProgrammerPermissionsCtrl;\r\n}());\r\nexports.ProgrammerPermissionsCtrl = ProgrammerPermissionsCtrl;\r\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Channels

    Channel No of Integrations
    {{channel.entityData.displayName}} {{channel.entityData.integrations | count}}
    \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    New Channels

    Display Name No of channels Logo
    {{item.entityData.displayName}} {{item.entityData.serviceProviders.length}}
    \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Channel No of Integrations
    {{channel.entityData.displayName}} ID: {{channel.entityData.id}} {{channel.entityData.integrations | count}}
    \";\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar Diff_1 = __webpack_require__(23);\r\nvar Compare_1 = __webpack_require__(114);\r\nvar Review_1 = __webpack_require__(115);\r\nvar DiffService_1 = __webpack_require__(116);\r\nvar Diff_2 = __webpack_require__(23);\r\n/**\r\n * @module diff\r\n * @requires ui.router\r\n * @requires module:core\r\n * @description Handles compare and diff features.\r\n */\r\nvar DiffModule = (function () {\r\n function DiffModule() {\r\n this.ngRef.service('DiffService', DiffService_1.DiffService);\r\n this.ngRef.directive('apcDiff', function () { return new Diff_1.ApcDiffDirective(); });\r\n this.ngRef.controller('CompareCtrl', Compare_1.CompareCtrl);\r\n this.ngRef.controller('ReviewCtrl', Review_1.ReviewCtrl);\r\n this.ngRef.controller('DiffCtrl', Diff_2.ApcDiffCtrl);\r\n }\r\n DiffModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n $stateProvider.state(States.Compare.name, {\r\n abstract: States.Compare.abstract,\r\n url: States.Compare.url,\r\n ncyBreadcrumb: {\r\n label: States.Compare.displayName,\r\n parent: function ($scope) {\r\n return $scope.parentState;\r\n }\r\n },\r\n params: {\r\n parentState: ''\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(117),\r\n controller: Compare_1.CompareCtrl,\r\n resolve: {\r\n compareData: [\"$stateParams\", \"DiffService\", function ($stateParams, DiffService) {\r\n return DiffService.getCompareData($stateParams.configA, $stateParams.configB).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n filters: [\"$stateParams\", function ($stateParams) {\r\n return {\r\n type: $stateParams.type || 'all',\r\n name: $stateParams.name || 'all'\r\n };\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.Review.name, {\r\n abstract: States.Review.abstract,\r\n url: States.Review.url,\r\n ncyBreadcrumb: {\r\n label: States.Review.displayName\r\n },\r\n resolve: {\r\n diffData: [\"PushService\", \"DataCollectorService\", function (PushService, DataCollectorService) {\r\n var data = DataCollectorService.getStoredData();\r\n return PushService.getDiffData(data).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(118),\r\n controller: Review_1.ReviewCtrl\r\n }\r\n }\r\n });\r\n /* Add New States Above */\r\n }];\r\n DiffModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'diff',\r\n dependencies: ['ui.router', 'core', 'data', 'filters', 'angular-json-tree']\r\n })\r\n ], DiffModule);\r\n return DiffModule;\r\n}());\r\nexports.DiffModule = DiffModule;\r\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Contents are identical or you have no rights to see the modified entities.

    0\\\">
    Created Updated Deleted {{diffItem.entityKey | olcaKey}}
    Property Old Value New Value
    {{diffEntry.fieldName | propertyAlias}} {{!isDefined(diffEntry.oldFieldValue)?'Not set':diffEntry.oldFieldValue | ttl:diffEntry}} {{!isDefined(diffEntry.newFieldValue)?'Not set':diffEntry.newFieldValue | ttl:diffEntry}}
    \";\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class CompareCtrl\r\n * @memberOf module:diff\r\n * @param {Object} $scope - Angular scope\r\n * @param {Object} $window - Angular window wrapper\r\n * @param {Object} compareData - Compare data from server\r\n * @param {Object} filters - Filter data from state params\r\n * @description Controls the compare configuration page\r\n */\r\nvar CompareCtrl = (function () {\r\n CompareCtrl.$inject = [\"$scope\", \"$state\", \"$window\", \"compareData\", \"filters\", \"Config\", \"DownloadService\"];\r\n function CompareCtrl($scope, $state, $window, compareData, filters, Config, DownloadService) {\r\n \"ngInject\";\r\n /**\r\n * @name module:diff.CompareCtrl#parentState\r\n * @type {String}\r\n * @description The state from which the transition originated\r\n */\r\n $scope.parentState = $state.params.parentState;\r\n /**\r\n * @name module:diff.CompareCtrl#data\r\n * @type {Object}\r\n * @description Compare data\r\n */\r\n $scope.data = compareData;\r\n if (compareData.trimmingInfo && compareData.trimmingInfo.trimmed) {\r\n $scope.trimmingInfo = compareData.trimmingInfo;\r\n }\r\n $scope.completeDiffUUID = compareData.completeDiffUUID;\r\n /**\r\n * @name module:diff.CompareCtrl#typeFilter\r\n * @type {String}\r\n * @description Default type filter\r\n */\r\n $scope.typeFilter = filters.type;\r\n /**\r\n * @name module:diff.CompareCtrl#nameFilter\r\n * @type {String}\r\n * @description Default name filter\r\n */\r\n $scope.nameFilter = filters.name;\r\n $scope.downloadCompleteDiff = function () {\r\n var url = Config.API_ROOT + '/config/diff/uuid/' + $scope.completeDiffUUID;\r\n DownloadService.download(url);\r\n };\r\n }\r\n return CompareCtrl;\r\n}());\r\nexports.CompareCtrl = CompareCtrl;\r\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ReviewCtrl = (function () {\r\n ReviewCtrl.$inject = [\"$scope\", \"$rootScope\", \"$state\", \"$window\", \"States\", \"diffData\", \"PushService\", \"DataCollectorService\", \"EnvironmentService\"];\r\n function ReviewCtrl($scope, $rootScope, $state, $window, States, diffData, PushService, DataCollectorService, EnvironmentService) {\r\n \"ngInject\";\r\n $scope.selectedEnvironment = EnvironmentService.getSelectedEnvironment();\r\n $scope.data = diffData;\r\n $scope.formData = {\r\n message: ''\r\n };\r\n $scope.pushChanges = function () {\r\n $rootScope.statusMessage = 'Pushing configuration to server';\r\n $rootScope.appLoading = true;\r\n PushService.pushChanges(DataCollectorService.getStoredData(), $scope.formData.message).then(function () {\r\n $rootScope.appLoading = false;\r\n $window.location.reload();\r\n });\r\n };\r\n if (diffData.entityDifferences.length === 0) {\r\n $state.go(States.Dashboard.name);\r\n }\r\n }\r\n return ReviewCtrl;\r\n}());\r\nexports.ReviewCtrl = ReviewCtrl;\r\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class DiffService\r\n * @memberOf module:diff\r\n * @param {Object} $http - Angular http service\r\n * @param {module:data.Config} Config - Application config\r\n * @description Retrieves diff data from the server\r\n */\r\nvar DiffService = (function () {\r\n DiffService.$inject = [\"$http\", \"Config\"];\r\n function DiffService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n /**\r\n * @memberOf module:diff.DiffService\r\n * @param {Number} configA - Configuration A version\r\n * @param {Number} configB - Configuration B version\r\n * @returns {HttpPromise} Diff data from server\r\n * @description Retrieves diff data between 2 configuration versions\r\n */\r\n DiffService.prototype.getCompareData = function (configA, configB) {\r\n return this.$http.get(this.Config.API_ROOT + '/config/diff/versions?configurationVersionB=' + configA + '&configurationVersionA=' + configB);\r\n };\r\n return DiffService;\r\n}());\r\nexports.DiffService = DiffService;\r\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    \";\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar MvpdEndpoint_1 = __webpack_require__(120);\r\nvar MvpdItem_1 = __webpack_require__(124);\r\nvar MvpdItemBasic_1 = __webpack_require__(125);\r\nvar MvpdList_1 = __webpack_require__(126);\r\nvar MvpdSettings_1 = __webpack_require__(127);\r\nvar MvpdProxiedMvpds_1 = __webpack_require__(24);\r\nvar MvpdProxiedMvpds_2 = __webpack_require__(24);\r\nvar Tabs_1 = __webpack_require__(3);\r\nvar MvpdServerNameIndication_1 = __webpack_require__(128);\r\nvar MvpdModule = (function () {\r\n function MvpdModule() {\r\n this.ngRef.controller('MvpdEndpointCtrl', MvpdEndpoint_1.MvpdEndpointCtrl);\r\n this.ngRef.controller('MvpdItemCtrl', MvpdItem_1.MvpdItemCtrl);\r\n this.ngRef.controller('MvpdItemBasicCtrl', MvpdItemBasic_1.MvpdItemBasicCtrl);\r\n this.ngRef.controller('MvpdListCtrl', MvpdList_1.MvpdListCtrl);\r\n this.ngRef.controller('MvpdSettingsCtrl', MvpdSettings_1.MvpdSettingsCtrl);\r\n this.ngRef.controller('MvpdProxiedMvpdsCtrl', MvpdProxiedMvpds_1.MvpdProxiedMvpdsCtrl);\r\n this.ngRef.controller('ProxiedMvpdRequestorsModalCtrl', MvpdProxiedMvpds_2.ProxiedMvpdRequestorsModalCtrl);\r\n this.ngRef.controller('MvpdServerNameIndicationCtrl', MvpdServerNameIndication_1.MvpdServerNameIndicationCtrl);\r\n }\r\n MvpdModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n var basicView = {\r\n template: __webpack_require__(129),\r\n controller: MvpdItemBasic_1.MvpdItemBasicCtrl,\r\n resolve: {\r\n endpointsData: [\"data\", \"BulkService\", function (data, BulkService) {\r\n \"ngInject\";\r\n var endpointsData = {};\r\n var authnEndpointKeys = data.entityData[\"authenticationProviderConfigs\"];\r\n var authzEndpointKeys = data.entityData[\"authorizationProviderConfigs\"];\r\n var logoutEndpointKeys = data.entityData[\"logoutProviderConfigs\"];\r\n var endpointKeys = authnEndpointKeys.concat(authzEndpointKeys).concat(logoutEndpointKeys);\r\n return BulkService.getBulk(endpointKeys).then(function (response) {\r\n endpointsData[\"authn\"] = response.data.filter(function (endpoint) {\r\n return endpoint.key.indexOf(\"AuthenticationProviderConfiguration\") !== -1;\r\n });\r\n endpointsData[\"authz\"] = response.data.filter(function (endpoint) {\r\n return endpoint.key.indexOf(\"AuthorizationProviderConfiguration\") !== -1;\r\n });\r\n endpointsData[\"logout\"] = response.data.filter(function (endpoint) {\r\n return endpoint.key.indexOf(\"LogoutProviderConfiguration\") !== -1;\r\n });\r\n return endpointsData;\r\n });\r\n }],\r\n manglerList: [\"ManglerService\", function (ManglerService) {\r\n \"ngInject\";\r\n return ManglerService.getManglerList().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n };\r\n $stateProvider.state(States.Mvpd.name, {\r\n abstract: States.Mvpd.abstract,\r\n url: States.Mvpd.url\r\n });\r\n $stateProvider.state(States.MvpdList.name, {\r\n abstract: States.MvpdList.abstract,\r\n url: States.MvpdList.url,\r\n ncyBreadcrumb: {\r\n label: States.MvpdList.displayName\r\n },\r\n onEnter: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = true;\r\n }],\r\n onExit: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = false;\r\n }],\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(130),\r\n controller: MvpdList_1.MvpdListCtrl,\r\n resolve: {\r\n mvpdList: [\"MvpdGenericService\", function (MvpdGenericService) {\r\n return MvpdGenericService.getPage(1, 'displayName', 'ASC').then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.MvpdItem.name, {\r\n abstract: States.MvpdItem.abstract,\r\n url: States.MvpdItem.url,\r\n resolve: {\r\n data: [\"$stateParams\", \"MvpdGenericService\", function ($stateParams, MvpdGenericService) {\r\n return MvpdGenericService.getItem($stateParams.mvpdId).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n },\r\n params: {\r\n selectedAuthnEndpointKey: null,\r\n selectedAuthzEndpointKey: null\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(5),\r\n },\r\n 'tabs@Base.Mvpd.Item': {\r\n template: __webpack_require__(6),\r\n controller: Tabs_1.TabsCtrl,\r\n resolve: {\r\n tabs: [\"$stateParams\", \"States\", \"MvpdGenericService\", function ($stateParams, States, MvpdGenericService) {\r\n var tabs = [\r\n {\r\n state: States.MvpdItemData,\r\n id: 'mvpdDataTab'\r\n },\r\n {\r\n state: States.MvpdSettings,\r\n id: 'mvpdSettingsTab'\r\n },\r\n {\r\n state: States.MvpdEndpoint,\r\n displayName: 'Authentication Settings',\r\n highlightOn: 'authenticationProviderConfigs',\r\n params: {\r\n endpointType: 'authenticationProviderConfigs',\r\n selectedEndpoint: 0\r\n },\r\n id: 'mvpdAuthnTab'\r\n },\r\n {\r\n state: States.MvpdEndpoint,\r\n displayName: 'Authorization Settings',\r\n highlightOn: 'authorizationProviderConfigs',\r\n params: {\r\n endpointType: 'authorizationProviderConfigs',\r\n selectedEndpoint: 0\r\n },\r\n id: 'mvpdAuthzTab'\r\n },\r\n {\r\n state: States.MvpdEndpoint,\r\n displayName: 'Logout Settings',\r\n highlightOn: 'logoutProviderConfigs',\r\n params: {\r\n endpointType: 'logoutProviderConfigs',\r\n selectedEndpoint: 0\r\n },\r\n id: 'mvpdLogoutTab'\r\n },\r\n {\r\n state: States.MvpdServerNameIndication,\r\n displayName: 'Server Name Indication',\r\n id: 'serverNameIndicationTab'\r\n }\r\n ];\r\n if (MvpdGenericService.isProxy($stateParams.mvpdId)) {\r\n tabs.push({\r\n state: States.MvpdProxiedMvpds,\r\n id: 'mvpdProxiedMvpdsTab'\r\n });\r\n }\r\n return tabs;\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.MvpdItemData.name, {\r\n abstract: States.MvpdItemData.abstract,\r\n url: States.MvpdItemData.url,\r\n ncyBreadcrumb: {\r\n label: '{{data.entityData.displayName}}',\r\n parent: States.MvpdList.name\r\n },\r\n views: {\r\n 'tabContent@Base.Mvpd.Item': {\r\n template: __webpack_require__(131),\r\n controller: MvpdItem_1.MvpdItemCtrl\r\n },\r\n 'entityItemBasic@Base.Mvpd.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.MvpdSettings.name, {\r\n abstract: States.MvpdSettings.abstract,\r\n url: States.MvpdSettings.url,\r\n ncyBreadcrumb: {\r\n label: 'Settings',\r\n parent: States.MvpdItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Mvpd.Item': {\r\n template: __webpack_require__(132),\r\n controller: MvpdSettings_1.MvpdSettingsCtrl,\r\n resolve: {\r\n localConfigurationData: [\"LocalConfigurationService\", function (LocalConfigurationService) {\r\n return LocalConfigurationService.getLocalConfiguration().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Mvpd.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.MvpdEndpoint.name, {\r\n abstract: States.MvpdEndpoint.abstract,\r\n url: States.MvpdEndpoint.url,\r\n params: {\r\n activeEndpointTab: 'settings',\r\n selectedEndpoint: 0,\r\n only: []\r\n },\r\n ncyBreadcrumb: {\r\n label: '{{endpointData.entityData.displayName}}',\r\n parent: States.MvpdItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Mvpd.Item': {\r\n template: __webpack_require__(133),\r\n controller: MvpdEndpoint_1.MvpdEndpointCtrl,\r\n resolve: {\r\n endpointType: [\"$stateParams\", function ($stateParams) {\r\n return $stateParams.endpointType;\r\n }],\r\n activeEndpointTab: [\"$stateParams\", function ($stateParams) {\r\n if ($stateParams.only.length > 0 && $stateParams.only.indexOf($stateParams.endpointType) === -1) {\r\n $stateParams.activeEndpointTab = 'settings';\r\n $stateParams.only = [];\r\n }\r\n return $stateParams.activeEndpointTab;\r\n }],\r\n certificates: [\"endpointData\", \"CertificateService\", function (endpointData, CertificateService) {\r\n return CertificateService.parseCertificates(endpointData).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n selectedEndpoint: [\"$stateParams\", function ($stateParams) {\r\n return $stateParams.selectedEndpoint;\r\n }],\r\n endpointData: [\"data\", \"endpointType\", \"BulkService\", \"selectedEndpoint\", function (data, endpointType, BulkService, selectedEndpoint) {\r\n var endpointFetchData = data.entityData[endpointType][selectedEndpoint];\r\n return BulkService.getItem(endpointFetchData).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n manglerList: [\"ManglerService\", function (ManglerService) {\r\n return ManglerService.getManglerList().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'endpointTabContent@Base.Mvpd.Item.Endpoint': {\r\n templateUrl: function (data) {\r\n var endpointTypeValue = data.endpointType.replace('Configs', 'Configuration');\r\n if (angular.equals(data.activeEndpointTab, \"rules\")) {\r\n return 'module/ui/template/endpoint/MVPD' + endpointTypeValue + '-' + data.activeEndpointTab + '.html';\r\n }\r\n else {\r\n return 'module/ui/template/endpoint/' + endpointTypeValue + '-' + data.activeEndpointTab + '.html';\r\n }\r\n }\r\n },\r\n 'entityItemBasic@Base.Mvpd.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.MvpdProxiedMvpds.name, {\r\n abstract: States.MvpdProxiedMvpds.abstract,\r\n url: States.MvpdProxiedMvpds.url,\r\n ncyBreadcrumb: {\r\n label: 'Proxied Mvpds',\r\n parent: States.MvpdItemData.name\r\n },\r\n onEnter: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = true;\r\n }],\r\n onExit: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = false;\r\n }],\r\n views: {\r\n 'tabContent@Base.Mvpd.Item': {\r\n template: __webpack_require__(134),\r\n controller: MvpdProxiedMvpds_1.MvpdProxiedMvpdsCtrl\r\n },\r\n 'entityItemBasic@Base.Mvpd.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.MvpdServerNameIndication.name, {\r\n abstract: States.MvpdServerNameIndication.abstract,\r\n url: States.MvpdServerNameIndication.url,\r\n ncyBreadcrumb: {\r\n label: \"Server Name Indication\",\r\n parent: States.MvpdItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Mvpd.Item': {\r\n template: __webpack_require__(135),\r\n controller: MvpdServerNameIndication_1.MvpdServerNameIndicationCtrl\r\n },\r\n 'entityItemBasic@Base.Mvpd.Item': basicView\r\n }\r\n });\r\n /* Add New States Above */\r\n }];\r\n MvpdModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'mvpd',\r\n dependencies: ['ui.bootstrap', 'ui.router', 'core', 'data', 'filters']\r\n })\r\n ], MvpdModule);\r\n return MvpdModule;\r\n}());\r\nexports.MvpdModule = MvpdModule;\r\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(14);\r\nvar TempPassService_1 = __webpack_require__(15);\r\nvar MvpdEndpointCtrl = (function () {\r\n MvpdEndpointCtrl.$inject = [\"$scope\", \"$state\", \"$filter\", \"data\", \"endpointType\", \"activeEndpointTab\", \"endpointData\", \"selectedEndpoint\", \"certificates\", \"States\", \"manglerList\", \"DataCollectorService\", \"TooltipService\", \"TMSIdService\", \"ConsoleUtils\"];\r\n function MvpdEndpointCtrl($scope, $state, $filter, data, endpointType, activeEndpointTab, endpointData, selectedEndpoint, certificates, States, manglerList, DataCollectorService, TooltipService, TMSIdService, ConsoleUtils) {\r\n \"ngInject\";\r\n var generateTabs = function (endpointType) {\r\n var result = [];\r\n var type = '';\r\n switch (endpointType) {\r\n case 'authenticationProviderConfigs':\r\n type = 'AuthN';\r\n break;\r\n case 'authorizationProviderConfigs':\r\n type = 'AuthZ';\r\n break;\r\n case 'logoutProviderConfigs':\r\n type = 'Logout';\r\n break;\r\n }\r\n result.push({\r\n name: type + ' General Settings',\r\n active: activeEndpointTab === 'settings',\r\n location: States.MvpdEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'settings',\r\n only: []\r\n },\r\n id: type + '_endpointSettingsTab'\r\n });\r\n result.push({\r\n name: type + ' Certificates',\r\n active: activeEndpointTab === 'certificates',\r\n location: States.MvpdEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'certificates',\r\n only: []\r\n },\r\n id: type + '_endpointCertificatesTab'\r\n });\r\n result.push({\r\n name: type + ' Dynamic Rules',\r\n active: activeEndpointTab === 'rules',\r\n location: States.MvpdEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'rules',\r\n only: []\r\n },\r\n id: type + '_endpointDynamicRulesTab'\r\n });\r\n if (type === 'AuthZ') {\r\n result.push({\r\n name: type + ' TmsIds',\r\n active: activeEndpointTab === 'tmsids',\r\n location: States.MvpdEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'tmsids',\r\n only: ['authorizationProviderConfigs']\r\n },\r\n id: type + '_endpointTmsIdsTab'\r\n });\r\n }\r\n return result;\r\n };\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.data = data;\r\n $scope.selectedEndpoint = data.related[endpointType][selectedEndpoint].entityData.id;\r\n $scope.selectEndpoint = function (endpointId) {\r\n var endpointIndex = 0;\r\n for (var i = 0; i < data.related[endpointType].length; i++) {\r\n if (data.related[endpointType][i].entityData.id === endpointId) {\r\n endpointIndex = i;\r\n }\r\n }\r\n $state.go($state.current.name, {\r\n activeEndpointTab: 'settings',\r\n selectedEndpoint: endpointIndex\r\n });\r\n };\r\n $scope.endpointType = endpointType;\r\n $scope.endpointData = endpointData;\r\n $scope.manglerData = endpointData;\r\n $scope.certificates = certificates;\r\n $scope.related = endpointData.related;\r\n $scope.tabs = generateTabs(endpointType);\r\n $scope.parseMetadata = function (metadata) {\r\n return $filter('metadata')(metadata, true);\r\n };\r\n $scope.noData = (endpointData.entityData.id.indexOf('null') !== -1);\r\n $scope.isSaml = (endpointData.entityData.id.indexOf('saml') !== -1);\r\n $scope.manglerList = manglerList;\r\n $scope.$watch('endpointData.entityData', DataCollectorService.collector(endpointData), true);\r\n $scope.inheritPath = 'owner';\r\n $scope.inheritTree = 'AuthN Endpoint:Mvpd';\r\n $scope.readOnly = true;\r\n var pipelineStageList = endpointData.entityData.pipelineStageList;\r\n if (!util_1.isNullOrUndefined(pipelineStageList)) {\r\n $scope.tempPassConfig = new TempPassService_1.TempPassService().getTempPassMap(pipelineStageList.PIPELINE_AUTHORIZATION);\r\n }\r\n if (endpointData.entityData.configuration && angular.isObject(endpointData.entityData.configuration.default) &&\r\n angular.isDefined(endpointData.entityData.configuration.default.tmsIdMap)) {\r\n TMSIdService.getMVPDTMSIdMap(endpointData.entityData.configuration.default.tmsIdMap).then(function (result) {\r\n var mvpdTMSIdMap = result.data;\r\n if (mvpdTMSIdMap && mvpdTMSIdMap.entityData) {\r\n $scope.tmsIdsArray = ConsoleUtils.createTmsIdsArray(mvpdTMSIdMap.entityData.mapping);\r\n }\r\n else {\r\n $scope.tmsIdsArray = [];\r\n }\r\n });\r\n }\r\n else {\r\n $scope.tmsIdsArray = [];\r\n }\r\n TooltipService.getTooltips().then(function (result) {\r\n // TODO: better separation when we will have separate controllers and templates for each endpoint type\r\n $scope.samlInfoTooltips = result.data.DOMAIN_MODELS.samlMetadataInfo;\r\n switch (endpointType) {\r\n case 'authenticationProviderConfigs':\r\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authenticationProviderConfiguration;\r\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthenticationProviderConfiguration;\r\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthenticationProviderConfiguration;\r\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthenticationProviderConfiguration;\r\n $scope.oAuth2EndpointTooltips = result.data.DOMAIN_MODELS.oAuth2Endpoint;\r\n $scope.authNAllTooltips = result.data.DOMAIN_MODELS.authNAllAuthenticationProviderConfiguration;\r\n break;\r\n case 'authorizationProviderConfigs':\r\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authorizationProviderConfiguration;\r\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthorizationProviderConfiguration;\r\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthorizationProviderConfiguration;\r\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthorizationProviderConfiguration;\r\n $scope.restTooltips = result.data.DOMAIN_MODELS.restAuthorizationProviderConfiguration;\r\n $scope.soapTooltips = result.data.DOMAIN_MODELS.soapAuthorizationProviderConfiguration;\r\n $scope.authZAllTooltips = result.data.DOMAIN_MODELS.authZAllAuthorizationProviderConfiguration;\r\n $scope.preFlightTooltips = result.data.DOMAIN_MODELS.preFlightConfiguration;\r\n $scope.dosProtectionTooltips = result.data.DOMAIN_MODELS.dosProtectionConfiguration;\r\n $scope.tempPassTooltips = result.data.DOMAIN_MODELS.tempPassConfiguration;\r\n break;\r\n case 'logoutProviderConfigs':\r\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlLogoutProviderConfiguration;\r\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2RedirectLogoutProviderConfiguration;\r\n break;\r\n }\r\n });\r\n }\r\n return MvpdEndpointCtrl;\r\n}());\r\nexports.MvpdEndpointCtrl = MvpdEndpointCtrl;\r\n\n\n/***/ }),\n/* 121 */,\n/* 122 */,\n/* 123 */,\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MvpdItemCtrl = (function () {\r\n MvpdItemCtrl.$inject = [\"$scope\", \"$filter\", \"data\", \"DataCollectorService\", \"TooltipService\"];\r\n function MvpdItemCtrl($scope, $filter, data, DataCollectorService, TooltipService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.mvpd;\r\n });\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return MvpdItemCtrl;\r\n}());\r\nexports.MvpdItemCtrl = MvpdItemCtrl;\r\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar MvpdItemBasicCtrl = (function () {\r\n MvpdItemBasicCtrl.$inject = [\"$scope\", \"$state\", \"$stateParams\", \"States\", \"data\", \"endpointsData\", \"manglerList\", \"DataCollectorService\"];\r\n function MvpdItemBasicCtrl($scope, $state, $stateParams, States, data, endpointsData, manglerList, DataCollectorService) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.basicWorkspaceEnabled = true;\r\n $scope.authnEndpoints = endpointsData[\"authn\"];\r\n $scope.authnEndpointsData = _.keyBy($scope.authnEndpoints.map(function (authnEndpoint) {\r\n var endpointData = {};\r\n endpointData['key'] = authnEndpoint.key;\r\n endpointData['endpointType'] = authnEndpoint.entityData.authenticationProviderType;\r\n return endpointData;\r\n }), 'key');\r\n $stateParams.selectedAuthnEndpointKey = $stateParams.selectedAuthnEndpointKey || $scope.authnEndpoints[0].key;\r\n $scope.selectedAuthnEndpoint = $scope.data.related[\"@\" + $stateParams.selectedAuthnEndpointKey];\r\n $scope.authnSelectorDisabled = $scope.authnEndpoints.length === 1;\r\n $scope.authzEndpoints = endpointsData[\"authz\"];\r\n $scope.authzEndpointsData = _.keyBy($scope.authzEndpoints.map(function (authzEndpoint) {\r\n var endpointData = {};\r\n endpointData['key'] = authzEndpoint.key;\r\n endpointData['endpointType'] = authzEndpoint.entityData.authorizationProviderType;\r\n endpointData['preFlightSupport'] = (!authzEndpoint.entityData.preFlightConfiguration) ? \"N/A\" :\r\n authzEndpoint.entityData.preFlightConfiguration.type;\r\n var dosProtection = authzEndpoint.entityData.dosProtection;\r\n endpointData['dosProtectionEnabled'] = dosProtection ? (dosProtection.enabled ?\r\n \"Enabled\" : \"Disabled\") : \"N/A\";\r\n return endpointData;\r\n }), 'key');\r\n $stateParams.selectedAuthzEndpointKey = $stateParams.selectedAuthzEndpointKey || $scope.authzEndpoints[0].key;\r\n $scope.selectedAuthzEndpoint = $scope.data.related[\"@\" + $stateParams.selectedAuthzEndpointKey];\r\n $scope.authzSelectorDisabled = $scope.authzEndpoints.length === 1;\r\n $scope.updateEndpoint = function () {\r\n $stateParams.selectedAuthnEndpointKey = $scope.selectedAuthnEndpoint.key;\r\n $stateParams.selectedAuthzEndpointKey = $scope.selectedAuthzEndpoint.key;\r\n $state.transitionTo($state.current.name, $stateParams, { reload: true, inherit: false, notify: false });\r\n };\r\n $scope.clientDataAllowedList = ['iFrameRequired', 'iFrameWidth', 'iFrameHeight'];\r\n $scope.manglerList = manglerList;\r\n $scope.inheritPath = 'owner';\r\n $scope.authnInheritTree = 'AuthN Endpoint:Mvpd';\r\n $scope.authzInheritTree = 'AuthZ Endpoint:Mvpd';\r\n $scope.authnManglerData = $scope.selectedAuthnEndpoint;\r\n $scope.authnManglerData.related = {};\r\n $scope.authnManglerData.related['@' + data.key] = data;\r\n $scope.authzManglerData = $scope.selectedAuthzEndpoint;\r\n $scope.authzManglerData.related = {};\r\n $scope.authzManglerData.related['@' + data.key] = data;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.$watch('authnManglerData.entityData', DataCollectorService.collector($scope.selectedAuthnEndpoint), true);\r\n $scope.$watch('authzManglerData.entityData', DataCollectorService.collector($scope.selectedAuthzEndpoint), true);\r\n }\r\n return MvpdItemBasicCtrl;\r\n}());\r\nexports.MvpdItemBasicCtrl = MvpdItemBasicCtrl;\r\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MvpdListCtrl = (function () {\r\n MvpdListCtrl.$inject = [\"$rootScope\", \"$scope\", \"$filter\", \"$state\", \"States\", \"Config\", \"mvpdList\", \"MvpdGenericService\"];\r\n function MvpdListCtrl($rootScope, $scope, $filter, $state, States, Config, mvpdList, MvpdGenericService) {\r\n \"ngInject\";\r\n $scope.columns = [\r\n {\r\n name: 'Display Name',\r\n sortable: true,\r\n sorted: true,\r\n sortAsc: true,\r\n sortField: 'displayName',\r\n class: 'col-md-9'\r\n },\r\n {\r\n name: 'Logo',\r\n sortable: false,\r\n class: 'col-md-1 image action'\r\n }\r\n ];\r\n $scope.data = mvpdList ? mvpdList : null;\r\n if ($scope.data === null) {\r\n $rootScope.searchActive = false;\r\n }\r\n $scope.pageSize = Config.PAGE_SIZE;\r\n $scope.service = MvpdGenericService;\r\n $scope.onItemClick = function (item) {\r\n $state.go(States.MvpdItemData.name, {\r\n mvpdId: item.entityData.id\r\n });\r\n };\r\n $scope.$on(\"onPageChange\", function () {\r\n var tableListElement = document.getElementById('table-list');\r\n window.scrollTo(0, window.scrollY - tableListElement.offsetHeight);\r\n });\r\n }\r\n return MvpdListCtrl;\r\n}());\r\nexports.MvpdListCtrl = MvpdListCtrl;\r\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MvpdSettingsCtrl = (function () {\r\n MvpdSettingsCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\", \"localConfigurationData\"];\r\n function MvpdSettingsCtrl($scope, data, DataCollectorService, localConfigurationData) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.localConf = localConfigurationData;\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.clientDataOpen = true;\r\n $scope.hasClientData = data.entityData.clientData && Object.keys(data.entityData.clientData).length > 0 ? true : false;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n }\r\n return MvpdSettingsCtrl;\r\n}());\r\nexports.MvpdSettingsCtrl = MvpdSettingsCtrl;\r\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar angular = __webpack_require__(0);\r\nvar NotificationService_1 = __webpack_require__(4);\r\nvar MvpdServerNameIndicationCtrl = (function () {\r\n MvpdServerNameIndicationCtrl.$inject = [\"$scope\", \"data\", \"DataCollectorService\", \"TooltipService\", \"UserService\", \"NotificationService\"];\r\n function MvpdServerNameIndicationCtrl($scope, data, DataCollectorService, TooltipService, UserService, NotificationService) {\r\n \"ngInject\";\r\n $scope.isAdmin = UserService.hasRole('ROLE_CONSOLE_ADMIN');\r\n $scope.data = data;\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.regex = /^([a-zA-Z0-9-]{1,63}\\.)+([a-zA-Z]{1,})$/;\r\n $scope.isFieldInvalid = function (newHostnameForm) {\r\n if (newHostnameForm) {\r\n return newHostnameForm.$invalid && newHostnameForm.$dirty;\r\n }\r\n return false;\r\n };\r\n $scope.removeHostname = function (sni) {\r\n var size = $scope.data.entityData.serverNameIndication.length;\r\n var _loop_1 = function (index) {\r\n if (angular.equals(sni, $scope.data.entityData.serverNameIndication[index])) {\r\n NotificationService.getConfirmationFromUser(NotificationService_1.Notifications.confirmDeleteSniHostname).result.then(function (userDecisionToDelete) {\r\n if (userDecisionToDelete === true) {\r\n $scope.data.entityData.serverNameIndication.splice(index, 1);\r\n }\r\n });\r\n return \"break\";\r\n }\r\n };\r\n for (var index = 0; index < size; index++) {\r\n var state_1 = _loop_1(index);\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n };\r\n $scope.createEmptyHostname = function () {\r\n return {\r\n id: \"\",\r\n hostname: \"\"\r\n };\r\n };\r\n $scope.newHostname = $scope.createEmptyHostname();\r\n $scope.newSniAdded = false;\r\n $scope.addNewSniButtonClicked = function () {\r\n $scope.newSniAdded = true;\r\n };\r\n $scope.resetnewHostname = function () {\r\n $scope.newSniAdded = false;\r\n $scope.newHostname = $scope.createEmptyHostname();\r\n };\r\n $scope.genericHostnameExists = function (subdomain) {\r\n if (!subdomain) {\r\n return false;\r\n }\r\n var size = $scope.data.entityData.serverNameIndication.length;\r\n var subdomainElements = subdomain.split(\".\").reverse();\r\n for (var index = 0; index < size; index++) {\r\n var domain = $scope.data.entityData.serverNameIndication[index];\r\n domain = domain.split(\".\").reverse();\r\n if (domain.length <= subdomainElements.length) {\r\n for (var j = 0, counter = 0; j < domain.length; j++, counter++) {\r\n if (!angular.equals(domain[j], subdomainElements[j])) {\r\n break;\r\n }\r\n }\r\n if (counter === domain.length) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n $scope.isHostnameValid = function (hostname) {\r\n if (hostname) {\r\n if (hostname.match($scope.regex)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n $scope.saveHostname = function (hostnameForm) {\r\n if ($scope.isHostnameValid($scope.newHostname.hostname) && !$scope.genericHostnameExists($scope.newHostname.hostname)) {\r\n $scope.newSniAdded = false;\r\n $scope.newHostname.id = $scope.newHostname.hostname;\r\n $scope.data.entityData.serverNameIndication.push($scope.newHostname.hostname);\r\n $scope.newHostname = $scope.createEmptyHostname();\r\n hostnameForm.$setPristine();\r\n return true;\r\n }\r\n return false;\r\n };\r\n }\r\n return MvpdServerNameIndicationCtrl;\r\n}());\r\nexports.MvpdServerNameIndicationCtrl = MvpdServerNameIndicationCtrl;\r\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    Authentication


    Authorization

    PreFlight Support: {{authzEndpointsData[selectedAuthzEndpoint.key].preFlightSupport}}

    DOS Protection: {{authzEndpointsData[selectedAuthzEndpoint.key].dosProtectionEnabled}}


    Client Data

    \";\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    \";\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    Client Data Properties

    No data available

    \";\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

    This is a null or dummy endpoint. No data to display.


    \";\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
    0\\\" class=pagination-holder>
    Display name Logo Channels
    {{proxiedMvpd.entityData.displayName}}

      No data available

      \";\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

      This mvpd has no SNI hostnames.

      0 || newSniAdded)\\\">
      Hostname Delete
      {{sni}}
      0\\\">
      Hostname
      {{sni}}
      \";\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @module core\r\n * @requires module:data\r\n * @description Application's core module. Defines utility services and constants.\r\n */\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar MaintenanceInterceptor_1 = __webpack_require__(137);\r\nvar HttpExceptionHandler_1 = __webpack_require__(138);\r\nvar CertificateService_1 = __webpack_require__(139);\r\nvar DownloadService_1 = __webpack_require__(140);\r\nvar InitService_1 = __webpack_require__(141);\r\nvar NavService_1 = __webpack_require__(142);\r\nvar NotificationService_1 = __webpack_require__(4);\r\nvar ResilienceService_1 = __webpack_require__(143);\r\nvar TooltipService_1 = __webpack_require__(144);\r\nvar UserService_1 = __webpack_require__(145);\r\nvar Sidebar_1 = __webpack_require__(25);\r\nvar Header_1 = __webpack_require__(26);\r\nvar Footer_1 = __webpack_require__(27);\r\nvar Dashboard_1 = __webpack_require__(28);\r\nvar ChangeLog_1 = __webpack_require__(29);\r\nvar NotificationService_2 = __webpack_require__(4);\r\nvar EnvironmentService_1 = __webpack_require__(146);\r\nvar CoreModule = (function () {\r\n function CoreModule() {\r\n this.ngRef.service('CertificateService', CertificateService_1.CertificateService);\r\n this.ngRef.service('DownloadService', DownloadService_1.DownloadService);\r\n this.ngRef.service('InitService', InitService_1.InitService);\r\n this.ngRef.service('NavService', NavService_1.NavService);\r\n this.ngRef.service('NotificationService', NotificationService_1.NotificationService);\r\n this.ngRef.service('ResilienceService', ResilienceService_1.ResilienceService);\r\n this.ngRef.service('TooltipService', TooltipService_1.TooltipService);\r\n this.ngRef.service('UserService', UserService_1.UserService);\r\n this.ngRef.service(\"EnvironmentService\", EnvironmentService_1.EnvironmentService);\r\n this.ngRef.controller('SidebarCtrl', Sidebar_1.SidebarCtrl);\r\n this.ngRef.controller('HeaderCtrl', Header_1.HeaderCtrl);\r\n this.ngRef.controller('FooterCtrl', Footer_1.FooterCtrl);\r\n this.ngRef.controller('ChangelogCtrl', ChangeLog_1.ChangelogCtrl);\r\n this.ngRef.controller('DashboardCtrl', Dashboard_1.DashboardCtrl);\r\n this.ngRef.controller('NotificationModalCtrl', NotificationService_2.NotificationModalCtrl);\r\n this.ngRef.constant('States', {\r\n 'Base': {\r\n name: 'Base',\r\n abstract: true,\r\n displayName: 'Base State',\r\n url: '/',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'Intro': {\r\n name: 'Base.Intro',\r\n abstract: false,\r\n displayName: 'Intro State',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'Forbidden': {\r\n name: 'Base.Forbidden',\r\n abstract: false,\r\n displayName: 'Forbidden State',\r\n url: 'error',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'Compare': {\r\n name: 'Base.Compare',\r\n abstract: false,\r\n displayName: 'Compare',\r\n url: 'compare?configA&configB&type&name',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'Review': {\r\n name: 'Base.Review',\r\n abstract: false,\r\n displayName: 'Review and Push Changes',\r\n url: 'review',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'Dashboard': {\r\n name: 'Base.Dashboard',\r\n abstract: false,\r\n displayName: 'Dashboard',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'dashboard',\r\n id: 'dashboard'\r\n },\r\n 'Channel': {\r\n name: 'Base.Channel',\r\n abstract: true,\r\n displayName: 'Channels',\r\n url: 'channel',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'pages',\r\n id: 'channel'\r\n },\r\n 'ChannelList': {\r\n name: 'Base.Channel.List',\r\n abstract: false,\r\n displayName: 'Channels',\r\n highlightOn: 'Base.Channel',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'pages',\r\n id: 'channel'\r\n },\r\n 'ChannelItem': {\r\n name: 'Base.Channel.Item',\r\n abstract: true,\r\n displayName: 'Channel Data',\r\n url: '/:channelId',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'ChannelItemData': {\r\n name: 'Base.Channel.Item.Data',\r\n abstract: false,\r\n displayName: 'Channel Data',\r\n url: '/data',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelDataTab'\r\n },\r\n 'ChannelSettings': {\r\n name: 'Base.Channel.Item.Settings',\r\n abstract: false,\r\n displayName: 'General Settings',\r\n url: '/settings',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelSettingsTab'\r\n },\r\n 'ChannelCertificates': {\r\n name: 'Base.Channel.Item.Certificates',\r\n abstract: false,\r\n displayName: 'Certificates',\r\n url: '/certificates',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelCertificatesTab'\r\n },\r\n 'ChannelApplications': {\r\n name: 'Base.Channel.Item.Applications',\r\n abstract: false,\r\n displayName: 'Registered Applications',\r\n url: '/applications',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelApplicationsTab'\r\n },\r\n 'ChannelCustomSchemes': {\r\n name: 'Base.Channel.Item.CustomSchemes',\r\n abstract: false,\r\n displayName: 'Custom Schemes',\r\n url: '/schemes',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelCustomSchemesTab'\r\n },\r\n 'ChannelPermissions': {\r\n name: 'Base.Channel.Item.Permissions',\r\n abstract: false,\r\n displayName: 'Group Permissions',\r\n url: '/permissions',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelPermissionsTab'\r\n },\r\n 'ChannelDomains': {\r\n name: 'Base.Channel.Item.Domains',\r\n abstract: false,\r\n displayName: 'Domains',\r\n url: '/domains',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelDomainsTab'\r\n },\r\n 'ChannelIntegrations': {\r\n name: 'Base.Channel.Item.Integrations',\r\n abstract: false,\r\n displayName: 'Integrations',\r\n url: '/integrations',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'channelIntegrationsTab'\r\n },\r\n 'Programmer': {\r\n name: 'Base.Programmer',\r\n abstract: true,\r\n displayName: 'Programmers',\r\n url: 'programmer',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'phoneGap',\r\n id: 'programmer'\r\n },\r\n 'ProgrammerList': {\r\n name: 'Base.Programmer.List',\r\n abstract: false,\r\n displayName: 'Programmers',\r\n highlightOn: 'Base.Programmer',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'phoneGap',\r\n id: 'programmer'\r\n },\r\n 'ProgrammerItem': {\r\n name: 'Base.Programmer.Item',\r\n abstract: true,\r\n displayName: 'Programmer Data',\r\n url: '/:programmerId',\r\n roles: 'READ',\r\n enableNav: false\r\n },\r\n 'ProgrammerItemData': {\r\n name: 'Base.Programmer.Item.Data',\r\n abstract: false,\r\n displayName: 'Programmer Data',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'programmerDataTab'\r\n },\r\n 'ProgrammerCertificates': {\r\n name: 'Base.Programmer.Item.Certificates',\r\n abstract: false,\r\n displayName: 'Certificates',\r\n url: '/certificates',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'programmerCertificatesTab'\r\n },\r\n 'ProgrammerApplications': {\r\n name: 'Base.Programmer.Item.Applications',\r\n abstract: false,\r\n displayName: 'Registered Applications',\r\n url: '/applications',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'programmerApplicationsTab'\r\n },\r\n 'ProgrammerCustomSchemes': {\r\n name: 'Base.Programmer.Item.CustomSchemes',\r\n abstract: false,\r\n displayName: 'Custom Schemes',\r\n url: '/schemes',\r\n roles: 'ADMIN',\r\n enableNav: false,\r\n id: 'programmerCustomSchemesTab'\r\n },\r\n 'ProgrammerPermissions': {\r\n name: 'Base.Programmer.Item.Permissions',\r\n abstract: false,\r\n displayName: 'Group Permissions',\r\n url: '/permissions',\r\n roles: 'ADMIN',\r\n enableNav: false,\r\n id: 'programmerPermissionsTab'\r\n },\r\n 'ProgrammerChannels': {\r\n name: 'Base.Programmer.Item.Channels',\r\n abstract: false,\r\n displayName: 'Channels',\r\n url: '/channels',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'programmerChannelsTab'\r\n },\r\n 'Integration': {\r\n name: 'Base.Integration',\r\n abstract: true,\r\n displayName: 'Integrations',\r\n url: 'integration',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'integration'\r\n },\r\n 'IntegrationList': {\r\n name: 'Base.Integration.List',\r\n abstract: false,\r\n displayName: 'Integrations',\r\n highlightOn: 'Base.Integration',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'merge',\r\n id: 'integration'\r\n },\r\n 'IntegrationItem': {\r\n name: 'Base.Integration.Item',\r\n abstract: true,\r\n displayName: 'Integrations',\r\n url: '/:integrationId',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'integration'\r\n },\r\n 'IntegrationItemData': {\r\n name: 'Base.Integration.Item.Data',\r\n abstract: false,\r\n displayName: 'Integration Data',\r\n url: '/data',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'integrationDataTab'\r\n },\r\n 'IntegrationSettings': {\r\n name: 'Base.Integration.Item.Settings',\r\n abstract: false,\r\n displayName: 'General Settings',\r\n url: '/settings',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'integrationDataTab'\r\n },\r\n 'IntegrationEndpoint': {\r\n name: 'Base.Integration.Item.Endpoint',\r\n abstract: false,\r\n displayName: 'Endpoint Settings',\r\n url: '/endpoint/:endpointType',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'integrationDataTab'\r\n },\r\n 'IntegrationNew': {\r\n name: 'Base.Integration.New',\r\n abstract: false,\r\n displayName: 'New Integration',\r\n url: '/new',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'newIntegration'\r\n },\r\n 'Mvpd': {\r\n name: 'Base.Mvpd',\r\n abstract: true,\r\n displayName: 'MVPDs',\r\n url: 'mvpd',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'deviceDesktop',\r\n id: 'mvpd'\r\n },\r\n 'MvpdList': {\r\n name: 'Base.Mvpd.List',\r\n abstract: false,\r\n displayName: 'MVPDs',\r\n highlightOn: 'Base.Mvpd',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'deviceDesktop',\r\n id: 'mvpd'\r\n },\r\n 'MvpdItem': {\r\n name: 'Base.Mvpd.Item',\r\n abstract: true,\r\n displayName: 'Mvpd Item',\r\n url: '/:mvpdId',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'deviceDesktop',\r\n id: 'mvpd'\r\n },\r\n 'MvpdItemData': {\r\n name: 'Base.Mvpd.Item.Data',\r\n abstract: false,\r\n displayName: 'MVPD Data',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'deviceDesktop',\r\n id: 'mvpdDataTab'\r\n },\r\n 'MvpdSettings': {\r\n name: 'Base.Mvpd.Item.Settings',\r\n abstract: false,\r\n displayName: 'General Settings',\r\n url: '/settings',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'deviceDesktop',\r\n id: 'mvpdSettingsTab'\r\n },\r\n 'MvpdEndpoint': {\r\n name: 'Base.Mvpd.Item.Endpoint',\r\n abstract: false,\r\n displayName: 'Endpoint Settings',\r\n url: '/endpoint/:endpointType',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'mvpdEndpointTab'\r\n },\r\n 'MvpdProxiedMvpds': {\r\n name: 'Base.Mvpd.Item.ProxiedMvpds',\r\n abstract: false,\r\n displayName: 'Proxied Mvpds',\r\n url: '/proxiedMvpds',\r\n roles: 'READ',\r\n enableNav: false,\r\n icon: 'merge',\r\n id: 'mvpdProxiedMvpdsTab'\r\n },\r\n 'MvpdServerNameIndication': {\r\n name: 'Base.Mvpd.Item.ServerNameIndication',\r\n abstract: false,\r\n displayName: 'Server Name Indication',\r\n url: '/sni',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'serverNameIndicationTab'\r\n },\r\n 'History': {\r\n name: 'Base.History',\r\n abstract: false,\r\n displayName: 'Change Log',\r\n url: 'history?highlight',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'viewList',\r\n id: 'history'\r\n },\r\n 'ReportAuthnData': {\r\n name: 'Base.Report',\r\n abstract: false,\r\n displayName: 'AuthN TTL Reports',\r\n overrideDisplayName: 'Reports',\r\n highlightOn: 'Base.Report',\r\n url: 'reports',\r\n roles: 'READ',\r\n enableNav: true,\r\n icon: 'report',\r\n id: 'authnDataTab'\r\n },\r\n 'ReportAuthzData': {\r\n name: 'Base.Report.Authz',\r\n abstract: false,\r\n displayName: 'AuthZ TTL Reports',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'authzDataTab'\r\n },\r\n 'ReportSSOData': {\r\n name: 'Base.Report.SSO',\r\n abstract: false,\r\n displayName: 'SSO Reports',\r\n url: '',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'ssoDataTab'\r\n },\r\n 'Admin': {\r\n name: 'Base.Admin',\r\n abstract: false,\r\n displayName: 'Info',\r\n overrideDisplayName: 'Admin',\r\n url: 'admin',\r\n roles: 'ADMIN',\r\n highlightOn: 'Base.Admin',\r\n enableNav: true,\r\n icon: 'wrench',\r\n id: 'adminInfo'\r\n },\r\n 'AdminImport': {\r\n name: 'Base.Admin.Import',\r\n abstract: false,\r\n displayName: 'Import / Export',\r\n url: '/import',\r\n roles: 'ADMIN',\r\n enableNav: false,\r\n id: 'adminImport'\r\n },\r\n 'AdminAdvanced': {\r\n name: 'Base.Admin.Advanced',\r\n abstract: false,\r\n displayName: 'Advanced',\r\n url: '/advanced',\r\n roles: 'ADMIN',\r\n enableNav: false,\r\n id: 'adminAdvanced'\r\n },\r\n 'AdminTmsIds': {\r\n name: 'Base.Admin.TmsIds',\r\n abstract: false,\r\n displayName: 'TMS IDs',\r\n url: '/tmsIds',\r\n roles: 'ADMIN',\r\n enableNav: false,\r\n id: 'adminTmsIds'\r\n },\r\n 'Maintenance': {\r\n name: 'Base.Maintenance',\r\n abstract: false,\r\n displayName: 'Maintenance',\r\n url: 'maintenance',\r\n roles: 'READ',\r\n enableNav: false,\r\n id: 'adminMaintenance'\r\n },\r\n 'AdminDefaultMetadata': {\r\n name: 'Base.Admin.DefaultMetadata',\r\n abstract: false,\r\n displayName: 'Default Metadata',\r\n url: '/defaultMetadata',\r\n roles: 'ADMIN',\r\n enableNav: false,\r\n id: 'adminDefaultMetadata'\r\n }\r\n });\r\n }\r\n CoreModule.prototype.config = [\"$provide\", \"$httpProvider\", function ($provide, $httpProvider) {\r\n \"ngInject\";\r\n $provide.factory('MaintenanceInterceptor', MaintenanceInterceptor_1.MaintenanceInterceptor.getInstance);\r\n $provide.factory('HttpExceptionHandler', HttpExceptionHandler_1.HttpExceptionHandler.getInstance);\r\n $httpProvider.interceptors.push('MaintenanceInterceptor');\r\n $httpProvider.interceptors.push('HttpExceptionHandler');\r\n }];\r\n CoreModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'core',\r\n dependencies: ['ui.bootstrap', 'ngCookies', 'data', 'security']\r\n })\r\n ], CoreModule);\r\n return CoreModule;\r\n}());\r\nexports.CoreModule = CoreModule;\r\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MaintenanceInterceptor = (function () {\r\n function MaintenanceInterceptor($q, $injector, States, CacheService) {\r\n var _this = this;\r\n this.$q = $q;\r\n this.$injector = $injector;\r\n this.States = States;\r\n this.CacheService = CacheService;\r\n this.responseError = function (response) {\r\n if (response.status === 503 && response.data.maintenanceMessage) {\r\n _this.CacheService.reset();\r\n _this.$injector.get('$state').go(_this.States.Maintenance.name);\r\n }\r\n return _this.$q.reject(response);\r\n };\r\n }\r\n MaintenanceInterceptor.getInstance = [\"$q\", \"$injector\", \"States\", \"CacheService\", function ($q, $injector, States, CacheService) {\r\n \"ngInject\";\r\n return new MaintenanceInterceptor($q, $injector, States, CacheService);\r\n }];\r\n return MaintenanceInterceptor;\r\n}());\r\nexports.MaintenanceInterceptor = MaintenanceInterceptor;\r\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HttpExceptionHandler = (function () {\r\n function HttpExceptionHandler($q, $rootScope, $injector, States, $timeout, NotificationService) {\r\n var _this = this;\r\n this.$q = $q;\r\n this.$rootScope = $rootScope;\r\n this.$injector = $injector;\r\n this.States = States;\r\n this.$timeout = $timeout;\r\n this.NotificationService = NotificationService;\r\n this.responseError = function (response) {\r\n var state = _this.$injector.get('$state');\r\n _this.$timeout.cancel(_this.$rootScope.loadingTimeout);\r\n _this.$rootScope.appLoading = false;\r\n switch (response.status) {\r\n case 413:\r\n _this.NotificationService.warn('Oops!', 'The file you are trying to upload exceeds the maximum allowed size of 10MB.');\r\n break;\r\n case 403:\r\n if (!response.config.ignoreError) {\r\n _this.NotificationService.error('Forbidden', 'Access to this resource is restricted.');\r\n state.go(_this.States.Forbidden.name, {\r\n forbidden: true\r\n });\r\n }\r\n break;\r\n case 409:\r\n if (!HttpExceptionHandler.isRetryableRequest(response)) {\r\n _this.NotificationService.warnModal('Data Conflict', 'Another user made a concurrent modification to the same data. ' +\r\n 'You need to refresh your data. All changes will be lost.', {\r\n confirm: true,\r\n backdrop: 'static'\r\n });\r\n }\r\n break;\r\n case 400:\r\n _this.NotificationService.error(response.data.exceptionMessage, response.data.additionalInfo);\r\n break;\r\n case 500:\r\n if (response.data.exceptionMessage) {\r\n _this.NotificationService.error(response.data.exceptionType, response.data.exceptionMessage);\r\n }\r\n else {\r\n // Default error message for all uncaught internal errors.\r\n _this.NotificationService.error('Internal error', 'Please try again later.');\r\n }\r\n state.go(_this.States.Forbidden.name);\r\n break;\r\n case 503:\r\n if (!response.data.maintenanceMessage && !response.config.ignoreError) {\r\n _this.NotificationService.error('Network error', 'Please try again later.');\r\n if (response.data.url.indexOf('schemes') === -1) {\r\n state.go(_this.States.Forbidden.name);\r\n }\r\n }\r\n break;\r\n case 404:\r\n if (response.data.exceptionType === 'MissingIndexException') {\r\n _this.NotificationService.warnModal('No Data', 'Your loaded data might be expired. Please refresh the page to load the latest data.', {\r\n confirm: true,\r\n backdrop: 'static'\r\n });\r\n return _this.$q.reject(response);\r\n }\r\n if (response.config.url.indexOf('latestActivatedConsoleConfigurationVersion') !== -1) {\r\n _this.NotificationService.error('No data', 'There is no valid configuration loaded');\r\n state.go(_this.States.Forbidden.name);\r\n }\r\n if (!response.config.ignoreError) {\r\n state.go(_this.States.Dashboard.name);\r\n }\r\n if (response.config.url.indexOf('latestCoreConfiguration') !== -1) {\r\n return _this.$q.when({ data: {}, config: { url: '' } });\r\n }\r\n break;\r\n }\r\n return _this.$q.reject(response);\r\n };\r\n }\r\n HttpExceptionHandler.isRetryableRequest = function (response) {\r\n var retryableRequest = response.data.additionalInfo && response.data.additionalInfo.retry;\r\n var retryLimitNotReached = !response.config.retryCount ||\r\n (response.config.retryCount && response.config.retryCount < 10);\r\n return retryableRequest && retryLimitNotReached;\r\n };\r\n HttpExceptionHandler.getInstance = [\"$q\", \"$rootScope\", \"$injector\", \"States\", \"$timeout\", \"NotificationService\", function ($q, $rootScope, $injector, States, $timeout, NotificationService) {\r\n \"ngInject\";\r\n return new HttpExceptionHandler($q, $rootScope, $injector, States, $timeout, NotificationService);\r\n }];\r\n return HttpExceptionHandler;\r\n}());\r\nexports.HttpExceptionHandler = HttpExceptionHandler;\r\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar CertificateService = (function () {\r\n CertificateService.$inject = [\"$q\", \"$http\", \"Config\", \"CacheService\"];\r\n function CertificateService($q, $http, Config, CacheService) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.$http = $http;\r\n this.Config = Config;\r\n this.CacheService = CacheService;\r\n }\r\n CertificateService.prototype.parseCertificates = function (endpointData) {\r\n var _this = this;\r\n var deferred = this.$q.defer();\r\n var certificates = endpointData.entityData.certificates;\r\n if (!certificates || Object.keys(certificates).length === 0) {\r\n deferred.resolve({ data: [] });\r\n }\r\n else {\r\n var cachedData_1 = this.CacheService.get(endpointData.key);\r\n if (cachedData_1 && cachedData_1.certificates) {\r\n deferred.resolve({ data: cachedData_1.certificates });\r\n }\r\n else {\r\n var payload = {};\r\n for (var key in certificates) {\r\n if (certificates[key].certificate) {\r\n payload[key] = certificates[key].certificate;\r\n }\r\n else {\r\n payload[key] = certificates[key];\r\n }\r\n }\r\n this.$http.post(this.Config.API_ROOT + '/certificates/details', payload).then(function (response) {\r\n var toReturn = angular.copy(response);\r\n for (var key in response.data) {\r\n toReturn.data[key] = {\r\n certificateKey: key,\r\n certificateInfo: response.data[key],\r\n base64Certificate: certificates[key].certificate,\r\n platforms: certificates[key].platforms\r\n };\r\n }\r\n if (cachedData_1) {\r\n cachedData_1.certificates = toReturn.data;\r\n _this.CacheService.put(endpointData.key, cachedData_1);\r\n }\r\n deferred.resolve(toReturn);\r\n });\r\n }\r\n }\r\n return deferred.promise;\r\n };\r\n CertificateService.prototype.parseCertificate = function (pemCertificate) {\r\n var payload = {};\r\n var key = new Date().getTime() / 1000 | 0;\r\n payload[key] = pemCertificate;\r\n return this.$http.post(this.Config.API_ROOT + '/certificates/details', payload).then(function (result) {\r\n return result.data[key];\r\n });\r\n };\r\n CertificateService.prototype.hashCertificate = function (pemCertificate) {\r\n return this.$http.get(this.Config.API_ROOT + '/certificates/hash?pemCertificate=' + pemCertificate).then(function (result) {\r\n return result.data;\r\n });\r\n };\r\n return CertificateService;\r\n}());\r\nexports.CertificateService = CertificateService;\r\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar DownloadService = (function () {\r\n function DownloadService() {\r\n }\r\n DownloadService.prototype.download = function (url) {\r\n var hiddenIFrameID = 'hiddenDownloader', iframe = document.getElementById(hiddenIFrameID);\r\n if (iframe === null) {\r\n iframe = document.createElement('iframe');\r\n iframe.id = hiddenIFrameID;\r\n iframe.style.display = 'none';\r\n document.body.appendChild(iframe);\r\n }\r\n iframe.src = url;\r\n };\r\n DownloadService.prototype.downloadWithErrorCallback = function (url, onErrorCallback) {\r\n $.ajax({\r\n url: url,\r\n method: 'GET',\r\n headers: {\r\n 'Accept': \"text/html,application/xhtml+xml,application/xml,*/*\"\r\n },\r\n xhrFields: {\r\n responseType: 'blob'\r\n },\r\n success: function (data, status, response) {\r\n var filename = response.getResponseHeader('Content-Disposition').match(/filename=\"(.+)\"/)[1];\r\n var a = document.createElement('a');\r\n a.href = window.URL.createObjectURL(data);\r\n a.id = 'hiddenLink';\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n },\r\n error: function () {\r\n onErrorCallback();\r\n }\r\n });\r\n };\r\n return DownloadService;\r\n}());\r\nexports.DownloadService = DownloadService;\r\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar InitService = (function () {\r\n InitService.$inject = [\"$q\", \"$http\", \"Config\"];\r\n function InitService($q, $http, Config) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n InitService.prototype.initConsole = function () {\r\n var _this = this;\r\n var deferred = this.$q.defer();\r\n this.$q.all([\r\n this.getLatestActivatedConfigVersion(),\r\n this.getEntityTypeMappings(),\r\n this.getPropertyNameMappings()\r\n ]).then(function (results) {\r\n if (results) {\r\n _this.Config.configVersion = results[0].data;\r\n _this.Config.entityTypeMappings = results[1].data;\r\n _this.Config.propertyNameMappings = results[2].data;\r\n }\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n };\r\n InitService.prototype.getLatestActivatedConfigVersion = function () {\r\n return this.$http.get(this.Config.API_ROOT +\r\n '/config/latestActivatedConsoleConfigurationVersion', { ignoreError: false });\r\n };\r\n InitService.prototype.getEntityTypeMappings = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/entityTypeMappings', { ignoreError: false });\r\n };\r\n InitService.prototype.getPropertyNameMappings = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/propertyNameMappings', { ignoreError: false });\r\n };\r\n return InitService;\r\n}());\r\nexports.InitService = InitService;\r\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar NavService = (function () {\r\n NavService.$inject = [\"States\", \"UserService\"];\r\n function NavService(States, UserService) {\r\n \"ngInject\";\r\n this.States = States;\r\n this.UserService = UserService;\r\n }\r\n NavService.prototype.getAvailableNavigationStates = function () {\r\n return this.getProcessedAvailableStates();\r\n };\r\n NavService.prototype.getProcessedAvailableStates = function () {\r\n var availableStates = [];\r\n if (this.UserService.hasRole('ROLE_CONSOLE_READ')) {\r\n for (var state in this.States) {\r\n var stateObject = this.States[state];\r\n if (stateObject.enableNav) {\r\n if (this.UserService.hasRole('ROLE_CONSOLE_' + stateObject.roles)) {\r\n availableStates.push(stateObject);\r\n }\r\n }\r\n }\r\n }\r\n return availableStates;\r\n };\r\n return NavService;\r\n}());\r\nexports.NavService = NavService;\r\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ResilienceService = (function () {\r\n ResilienceService.$inject = [\"CacheService\"];\r\n function ResilienceService(CacheService) {\r\n \"ngInject\";\r\n this.CacheService = CacheService;\r\n this.resilienceState = false;\r\n this.troubleshootingLink = \"http://tve.helpdocsonline.com/primetime-tve-dashboard-user-guide$troubleshooting\";\r\n }\r\n ResilienceService.prototype.getResilienceState = function () {\r\n return this.resilienceState;\r\n };\r\n ResilienceService.prototype.setResilienceState = function (value) {\r\n if (this.resilienceState !== value) {\r\n this.resilienceState = value;\r\n this.CacheService.getHttpServiceCache().removeAll();\r\n }\r\n };\r\n ResilienceService.prototype.getTroubleshootingLink = function () {\r\n return this.troubleshootingLink;\r\n };\r\n return ResilienceService;\r\n}());\r\nexports.ResilienceService = ResilienceService;\r\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TooltipService = (function () {\r\n TooltipService.$inject = [\"$q\", \"$http\", \"Config\"];\r\n function TooltipService($q, $http, Config) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n TooltipService.prototype.getTooltips = function () {\r\n var deferred = this.$q.defer();\r\n this.$http.get(this.Config.API_ROOT + '/config/tooltips').then(function (response) {\r\n deferred.resolve(response);\r\n });\r\n return deferred.promise;\r\n };\r\n return TooltipService;\r\n}());\r\nexports.TooltipService = TooltipService;\r\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UserService = (function () {\r\n UserService.$inject = [\"$rootScope\", \"$state\", \"$log\", \"$http\", \"$q\", \"$window\", \"$cookies\", \"Config\", \"CsrfTokenInterceptor\", \"NotificationService\", \"InitService\"];\r\n function UserService($rootScope, $state, $log, $http, $q, $window, $cookies, Config, CsrfTokenInterceptor, NotificationService, InitService) {\r\n \"ngInject\";\r\n this.$rootScope = $rootScope;\r\n this.$state = $state;\r\n this.$log = $log;\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.$window = $window;\r\n this.$cookies = $cookies;\r\n this.Config = Config;\r\n this.CsrfTokenInterceptor = CsrfTokenInterceptor;\r\n this.NotificationService = NotificationService;\r\n this.InitService = InitService;\r\n this.userRoles = {};\r\n this.context = this.$rootScope.$new();\r\n this.context.userProfile = {\r\n /**\r\n * @name module:core.UserProfile#loggedIn\r\n * @type Boolean\r\n * @default false\r\n * @description Authentication status\r\n */\r\n loggedIn: false,\r\n /**\r\n * @name module:core.UserProfile#firstName\r\n * @type String\r\n * @default ''\r\n * @description User first name\r\n */\r\n firstName: \"\",\r\n /**\r\n * @name module:core.UserProfile#lastName\r\n * @type String\r\n * @default ''\r\n * @description User last name\r\n */\r\n lastName: \"\",\r\n /**\r\n * @name module:core.UserProfile#email\r\n * @type String\r\n * @default ''\r\n * @description User email\r\n */\r\n email: \"\",\r\n /**\r\n * @name module:core.UserProfile#displayName\r\n * @type String\r\n * @default ''\r\n * @description User display name\r\n */\r\n displayName: \"\"\r\n };\r\n }\r\n UserService.prototype.advancedWorkspaceEnabled = function () {\r\n if (!this.$cookies.get('advancedWorkspace')) {\r\n this.$cookies.put('advancedWorkspace', false);\r\n }\r\n return (this.$cookies.get('advancedWorkspace') === true || this.$cookies.get('advancedWorkspace') === 'true');\r\n };\r\n UserService.prototype.enableAdvancedWorkspace = function (selected) {\r\n this.$cookies.put('advancedWorkspace', selected);\r\n this.$state.reload();\r\n };\r\n UserService.prototype.checkAuthentication = function () {\r\n var _this = this;\r\n var deferred = this.$q.defer();\r\n this.$log.log('Checking authentication...');\r\n this.$http.get(this.Config.API_ROOT + '/user/extendedProfile', { ignoreError: true }).then(function (response) {\r\n var csrfToken = response.headers(_this.CsrfTokenInterceptor.CSRF_TOKEN_KEY);\r\n _this.context.userProfile = _this.getParsedProfile(response.data.userProfile);\r\n _this.context.userProfile.loggedIn = true;\r\n _this.userRoles = _this.getParsedRoles(response.data.grantedAuthorities);\r\n _this.CsrfTokenInterceptor.setToken(csrfToken);\r\n _this.InitService.initConsole().then(function () {\r\n deferred.resolve(_this.context.userProfile);\r\n });\r\n }, function (error) {\r\n if (error.status !== 401) {\r\n _this.NotificationService.error('Network error', 'Unable to check authentication.');\r\n }\r\n });\r\n return deferred.promise;\r\n };\r\n UserService.prototype.getUserData = function () {\r\n return this.context.userProfile;\r\n };\r\n UserService.prototype.getUserRoles = function () {\r\n return this.userRoles;\r\n };\r\n UserService.prototype.login = function () {\r\n if (!this.loginRedirectUri) {\r\n this.checkAuthentication();\r\n }\r\n else {\r\n this.$rootScope.statusMessage = \"Redirecting to login page\";\r\n this.$window.location = this.loginRedirectUri.toString();\r\n }\r\n };\r\n UserService.prototype.isLoggedIn = function () {\r\n return this.context.userProfile.loggedIn;\r\n };\r\n UserService.prototype.setAuthorizationCodeUrl = function (authorizationCodeUrl) {\r\n this.loginRedirectUri = new URI(authorizationCodeUrl);\r\n var query = this.loginRedirectUri.search(true);\r\n var redirectUri = new URI(query.redirect_uri);\r\n var redirectQuery = redirectUri.search(true);\r\n redirectQuery.redirect = new URI().toString();\r\n redirectUri.search(redirectQuery);\r\n query.redirect_uri = redirectUri.toString();\r\n this.loginRedirectUri.search(query);\r\n return this.loginRedirectUri.toString();\r\n };\r\n UserService.prototype.hasRole = function (role) {\r\n return !!this.userRoles[role];\r\n };\r\n UserService.prototype.getScope = function () {\r\n return this.context;\r\n };\r\n UserService.prototype.getParsedProfile = function (userData) {\r\n return {\r\n firstName: userData.first_name,\r\n lastName: userData.last_name,\r\n email: userData.email,\r\n displayName: userData.displayName\r\n };\r\n };\r\n ;\r\n UserService.prototype.getParsedRoles = function (roles) {\r\n var result = {};\r\n for (var role in roles) {\r\n result[roles[role].authority] = roles[role].authority;\r\n }\r\n return result;\r\n };\r\n ;\r\n return UserService;\r\n}());\r\nexports.UserService = UserService;\r\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EnvironmentService = (function () {\r\n EnvironmentService.$inject = [\"$window\"];\r\n function EnvironmentService($window) {\r\n \"ngInject\";\r\n this.environments = [\r\n {\r\n name: 'Prequal Staging',\r\n url: 'https://console-prequal.auth-staging.adobe.com'\r\n },\r\n {\r\n name: 'Prequal Production',\r\n url: 'https://console-prequal.auth.adobe.com'\r\n },\r\n {\r\n name: 'Release Staging',\r\n url: 'https://console.auth-staging.adobe.com'\r\n },\r\n {\r\n name: 'Release Production',\r\n url: 'https://console.auth.adobe.com'\r\n },\r\n {\r\n name: 'Release Production Europe',\r\n url: 'https://console-eu.auth.adobe.com'\r\n }\r\n ];\r\n this.selectedEnvironment = {\r\n name: 'Development Environment',\r\n url: $window.location.href\r\n };\r\n if ($window.location.href.indexOf('eu-dev') != -1) {\r\n this.selectedEnvironment = {\r\n name: 'Development Environment Europe',\r\n url: $window.location.href\r\n };\r\n }\r\n this.identifyCurrentEnvironment($window);\r\n }\r\n EnvironmentService.prototype.getEnvironments = function () {\r\n return this.environments;\r\n };\r\n EnvironmentService.prototype.getSelectedEnvironment = function () {\r\n return this.selectedEnvironment;\r\n };\r\n EnvironmentService.prototype.identifyCurrentEnvironment = function ($window) {\r\n var currentBaseLocation = new URI($window.location.href).hostname();\r\n for (var i = 0; i < this.getEnvironments().length; i++) {\r\n if (currentBaseLocation === this.getEnvironments()[i].url.replace('https://', '')) {\r\n this.selectedEnvironment = this.getEnvironments()[i];\r\n }\r\n }\r\n };\r\n return EnvironmentService;\r\n}());\r\nexports.EnvironmentService = EnvironmentService;\r\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConsoleUtils_1 = __webpack_require__(148);\r\nvar ManglerUtil_1 = __webpack_require__(30);\r\nvar ManglerUtil_2 = __webpack_require__(30);\r\nvar MvpdService_1 = __webpack_require__(149);\r\nvar MvpdProxyService_1 = __webpack_require__(150);\r\nvar MvpdGenericService_1 = __webpack_require__(151);\r\nvar ManglerService_1 = __webpack_require__(152);\r\nvar BulkService_1 = __webpack_require__(153);\r\nvar PushService_1 = __webpack_require__(154);\r\nvar TMSIdService_1 = __webpack_require__(155);\r\nvar CacheService_1 = __webpack_require__(156);\r\nvar ChannelService_1 = __webpack_require__(157);\r\nvar PlatformService_1 = __webpack_require__(158);\r\nvar ProgrammerService_1 = __webpack_require__(159);\r\nvar DataCollectorService_1 = __webpack_require__(160);\r\nvar LocalConfigurationService_1 = __webpack_require__(161);\r\nvar IntegrationService_1 = __webpack_require__(162);\r\nvar HistoryService_1 = __webpack_require__(163);\r\nvar ApplicationService_1 = __webpack_require__(164);\r\nvar ConfigVersionInterceptor_1 = __webpack_require__(167);\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar CacheInterceptor_1 = __webpack_require__(168);\r\nvar PushStatusInterceptor_1 = __webpack_require__(169);\r\nvar RelatedDataInterceptor_1 = __webpack_require__(170);\r\nvar ResilienceInterceptor_1 = __webpack_require__(171);\r\nvar RetryableRequestInterceptor_1 = __webpack_require__(172);\r\nvar CertificateUtils_1 = __webpack_require__(173);\r\nvar CustomSchemeService_1 = __webpack_require__(174);\r\nvar TempPassService_1 = __webpack_require__(15);\r\nvar ReportService_1 = __webpack_require__(175);\r\nvar DataModule = (function () {\r\n function DataModule() {\r\n this.ngRef.constant('EncryptionLevel', CertificateUtils_1.EncryptionLevel);\r\n this.ngRef.constant('Config', {\r\n API_ROOT: '/rest/api',\r\n PAGE_SIZE: 20,\r\n maintenance: false,\r\n configVersion: null,\r\n propertyNameMappings: {}\r\n });\r\n this.ngRef.service('CertificateUtils', CertificateUtils_1.CertificateUtils);\r\n this.ngRef.service('ConsoleUtils', ConsoleUtils_1.ConsoleUtils);\r\n this.ngRef.service('ManglerUtil', ManglerUtil_1.ManglerUtil);\r\n this.ngRef.factory('ManglerItem', function () { return ManglerUtil_2.ManglerItem; });\r\n this.ngRef.service('MvpdService', MvpdService_1.MvpdService);\r\n this.ngRef.service('MvpdProxyService', MvpdProxyService_1.MvpdProxyService);\r\n this.ngRef.service('MvpdGenericService', MvpdGenericService_1.MvpdGenericService);\r\n this.ngRef.service('ManglerService', ManglerService_1.ManglerService);\r\n this.ngRef.service('BulkService', BulkService_1.BulkService);\r\n this.ngRef.service('PushService', PushService_1.PushService);\r\n this.ngRef.service('TMSIdService', TMSIdService_1.TMSIdService);\r\n this.ngRef.service('CacheService', CacheService_1.CacheService);\r\n this.ngRef.service('ChannelService', ChannelService_1.ChannelService);\r\n this.ngRef.service('PlatformService', PlatformService_1.PlatformService);\r\n this.ngRef.service('ProgrammerService', ProgrammerService_1.ProgrammerService);\r\n this.ngRef.service('DataCollectorService', DataCollectorService_1.DataCollectorService);\r\n this.ngRef.service('LocalConfigurationService', LocalConfigurationService_1.LocalConfigurationService);\r\n this.ngRef.service('IntegrationService', IntegrationService_1.IntegrationService);\r\n this.ngRef.service('HistoryService', HistoryService_1.HistoryService);\r\n this.ngRef.service('ApplicationService', ApplicationService_1.ApplicationService);\r\n this.ngRef.service('CustomSchemeService', CustomSchemeService_1.CustomSchemeService);\r\n this.ngRef.service('TempPassService', TempPassService_1.TempPassService);\r\n this.ngRef.service('ReportService', ReportService_1.ReportService);\r\n }\r\n DataModule.prototype.config = [\"$provide\", \"$httpProvider\", function ($provide, $httpProvider) {\r\n \"ngInject\";\r\n $provide.factory('ConfigVersionInterceptor', ConfigVersionInterceptor_1.ConfigVersionInterceptor.getInstance);\r\n $provide.factory('CacheInterceptor', CacheInterceptor_1.CacheInterceptor.getInstance);\r\n $provide.factory('PushStatusInterceptor', PushStatusInterceptor_1.PushStatusInterceptor.getInstance);\r\n $provide.factory('RelatedDataInterceptor', RelatedDataInterceptor_1.RelatedDataInterceptor.getInstance);\r\n $provide.factory('ResilienceInterceptor', ResilienceInterceptor_1.ResilienceInterceptor.getInstance);\r\n $provide.factory('RetryableRequestInterceptor', RetryableRequestInterceptor_1.RetryableRequestInterceptor.getInstance);\r\n $httpProvider.interceptors.push('ConfigVersionInterceptor');\r\n $httpProvider.interceptors.push('RelatedDataInterceptor');\r\n $httpProvider.interceptors.push('CacheInterceptor');\r\n $httpProvider.interceptors.push('ResilienceInterceptor');\r\n $httpProvider.interceptors.push('PushStatusInterceptor');\r\n $httpProvider.interceptors.push('RetryableRequestInterceptor');\r\n }];\r\n DataModule.prototype.run = [\"$http\", \"CacheService\", function ($http, CacheService) {\r\n \"ngInject\";\r\n $http.defaults.cache = CacheService.getHttpServiceCache();\r\n }];\r\n DataModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'data',\r\n dependencies: ['ui.router', 'core']\r\n })\r\n ], DataModule);\r\n return DataModule;\r\n}());\r\nexports.DataModule = DataModule;\r\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConsoleUtils = (function () {\r\n function ConsoleUtils() {\r\n this.TMSID_DEFAULT_VALUE = \"Please select a map to edit\";\r\n }\r\n ConsoleUtils.prototype.createTmsIdsArray = function (tmsIdMap) {\r\n var tmsIdsArray = [];\r\n for (var key in tmsIdMap) {\r\n var tmsId = {\r\n resourceName: key,\r\n resourceId: tmsIdMap[key]\r\n };\r\n tmsIdsArray.push(tmsId);\r\n }\r\n tmsIdsArray.sort(function (tmsId1, tmsId2) { return tmsId1.resourceName.localeCompare(tmsId2.resourceName); });\r\n return tmsIdsArray;\r\n };\r\n ConsoleUtils.prototype.createTmsIdsList = function (tmsIdsList) {\r\n var tmsIdsArray = [this.TMSID_DEFAULT_VALUE];\r\n for (var _i = 0, tmsIdsList_1 = tmsIdsList; _i < tmsIdsList_1.length; _i++) {\r\n var str = tmsIdsList_1[_i];\r\n var elems = str.split(\":\");\r\n if (elems && elems.length > 1) {\r\n tmsIdsArray.push(elems[1]);\r\n }\r\n }\r\n return tmsIdsArray;\r\n };\r\n return ConsoleUtils;\r\n}());\r\nexports.ConsoleUtils = ConsoleUtils;\r\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar MvpdService = (function () {\r\n MvpdService.$inject = [\"$http\", \"Config\"];\r\n function MvpdService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n MvpdService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var url = this.Config.API_ROOT + '/entity/Mvpd?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\r\n if (searchTerm && searchTerm.trim().length >= 1) {\r\n url += '&query=' + searchTerm;\r\n }\r\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\r\n url += '&sorting=' +\r\n _.map(sortField.split(\",\"), function (field) {\r\n return field + \":\" + sortOrder;\r\n }).join(',');\r\n }\r\n return this.$http.get(url);\r\n };\r\n MvpdService.prototype.getItem = function (id) {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/Mvpd/' + id, {\r\n arrayRelated: ['authenticationProviderConfigs', 'authorizationProviderConfigs', 'logoutProviderConfigs']\r\n });\r\n };\r\n MvpdService.prototype.getAll = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/Mvpd');\r\n };\r\n return MvpdService;\r\n}());\r\nexports.MvpdService = MvpdService;\r\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar MvpdProxyService = (function () {\r\n MvpdProxyService.$inject = [\"$http\", \"Config\"];\r\n function MvpdProxyService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n MvpdProxyService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var url = this.Config.API_ROOT + '/entity/MvpdProxy?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\r\n if (searchTerm && searchTerm.trim().length >= 1) {\r\n url += '&query=' + searchTerm;\r\n }\r\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\r\n url += '&sorting=' +\r\n _.map(sortField.split(\",\"), function (field) {\r\n return field + \":\" + sortOrder;\r\n }).join(',');\r\n }\r\n return this.$http.get(url);\r\n };\r\n MvpdProxyService.prototype.getItem = function (id) {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/MvpdProxy/' + id, {\r\n arrayRelated: ['authenticationProviderConfigs', 'authorizationProviderConfigs', 'logoutProviderConfigs', 'proxiedMvpds']\r\n });\r\n };\r\n MvpdProxyService.prototype.getAll = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/MvpdProxy');\r\n };\r\n return MvpdProxyService;\r\n}());\r\nexports.MvpdProxyService = MvpdProxyService;\r\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MvpdGenericService = (function () {\r\n MvpdGenericService.$inject = [\"$q\", \"MvpdService\", \"MvpdProxyService\", \"Config\"];\r\n function MvpdGenericService($q, MvpdService, MvpdProxyService, Config) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.MvpdService = MvpdService;\r\n this.MvpdProxyService = MvpdProxyService;\r\n this.Config = Config;\r\n }\r\n MvpdGenericService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var _this = this;\r\n return this.$q.all([\r\n this.MvpdService.getPage(1, sortField, sortOrder, searchTerm),\r\n this.MvpdProxyService.getPage(1, sortField, sortOrder, searchTerm)\r\n ]).then(function (responses) {\r\n var mvpdNo = responses[0].data.count;\r\n var mvpdProxyNo = responses[1].data.count;\r\n var mvpdPages = Math.ceil(mvpdNo / _this.Config.PAGE_SIZE);\r\n var mvpdProxyPages = Math.ceil(mvpdProxyNo / _this.Config.PAGE_SIZE);\r\n var total = mvpdNo + mvpdProxyNo;\r\n var sliceSize = _this.Config.PAGE_SIZE - (mvpdNo % _this.Config.PAGE_SIZE);\r\n if (sliceSize === _this.Config.PAGE_SIZE) {\r\n sliceSize = 0;\r\n }\r\n if (pageNumber <= mvpdPages) {\r\n return _this.MvpdService.getPage(pageNumber, sortField, sortOrder, searchTerm).then(function (res1) {\r\n res1.data.count = total;\r\n if (res1.data.entities.length < _this.Config.PAGE_SIZE) {\r\n return _this.MvpdProxyService.getPage(1, sortField, sortOrder, searchTerm).then(function (res2) {\r\n res1.data.entities = res1.data.entities.concat(res2.data.entities.slice(0, sliceSize));\r\n return res1;\r\n });\r\n }\r\n else {\r\n return res1;\r\n }\r\n });\r\n }\r\n else {\r\n var page = pageNumber - mvpdPages;\r\n if (page < mvpdProxyPages && sliceSize > 0) {\r\n return _this.$q.all([\r\n _this.MvpdProxyService.getPage(page, sortField, sortOrder, searchTerm),\r\n _this.MvpdProxyService.getPage(page + 1, sortField, sortOrder, searchTerm)\r\n ]).then(function (responses) {\r\n responses[0].data.count = total;\r\n responses[0].data.entities = responses[0].data.entities.slice(sliceSize)\r\n .concat(responses[1].data.entities.slice(0, sliceSize));\r\n return responses[0];\r\n });\r\n }\r\n else {\r\n return _this.MvpdProxyService.getPage(page, sortField, sortOrder, searchTerm).then(function (res) {\r\n res.data.count = total;\r\n res.data.entities = res.data.entities.slice(sliceSize);\r\n return res;\r\n });\r\n }\r\n }\r\n });\r\n };\r\n MvpdGenericService.prototype.isProxy = function (id) {\r\n return id.indexOf(\"ProxyMVPD\") === 0;\r\n };\r\n MvpdGenericService.prototype.getItem = function (id) {\r\n if (this.isProxy(id)) {\r\n return this.MvpdProxyService.getItem(id);\r\n }\r\n else {\r\n return this.MvpdService.getItem(id);\r\n }\r\n };\r\n MvpdGenericService.prototype.getAll = function () {\r\n return this.$q.all([\r\n this.MvpdService.getAll(),\r\n this.MvpdProxyService.getAll()\r\n ]).then(function (responses) {\r\n responses[0].data.count += responses[1].data.count;\r\n responses[0].data.entities = responses[0].data.entities.concat(responses[1].data.entities);\r\n return responses[0];\r\n });\r\n };\r\n return MvpdGenericService;\r\n}());\r\nexports.MvpdGenericService = MvpdGenericService;\r\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ManglerService = (function () {\r\n ManglerService.$inject = [\"$http\", \"Config\"];\r\n function ManglerService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n ManglerService.prototype.getManglerList = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/manglers');\r\n };\r\n return ManglerService;\r\n}());\r\nexports.ManglerService = ManglerService;\r\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar BulkService = (function () {\r\n BulkService.$inject = [\"$q\", \"$injector\", \"Config\", \"CacheService\"];\r\n function BulkService($q, $injector, Config, CacheService) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.$injector = $injector;\r\n this.Config = Config;\r\n this.CacheService = CacheService;\r\n }\r\n BulkService.prototype.getBulk = function (list) {\r\n var _this = this;\r\n var deferred = this.$q.defer();\r\n var cachedList = [];\r\n var listToFetch = [];\r\n _.each(list, function (id) {\r\n var processedId = id.replace('@', '');\r\n var cachedData = _this.CacheService.get(processedId);\r\n if (!cachedData) {\r\n listToFetch.push(processedId);\r\n }\r\n else {\r\n cachedList.push(cachedData);\r\n }\r\n });\r\n if (listToFetch.length === 0) {\r\n deferred.resolve({\r\n data: cachedList\r\n });\r\n }\r\n else {\r\n this.$injector.get('$http').post(this.Config.API_ROOT + '/entity/bulkRetrieve', {\r\n entities: listToFetch,\r\n configVersion: this.Config.configVersion\r\n }).then(function (response) {\r\n var result = response.data;\r\n _.each(cachedList, function (cachedItem) {\r\n result.push(cachedItem);\r\n result.entities.push(cachedItem);\r\n });\r\n deferred.resolve({\r\n data: result\r\n });\r\n });\r\n }\r\n return deferred.promise;\r\n };\r\n BulkService.prototype.getItem = function (itemData) {\r\n var entity = itemData.split(':')[0].replace('@', '');\r\n var id = itemData.split(':')[1];\r\n var related = [];\r\n if (entity === 'SamlAuthenticationProviderConfiguration' || entity === 'SamlAuthorizationProviderConfiguration' || entity === 'SamlLogoutProviderConfiguration') {\r\n related.push('samlMetadataInfo');\r\n }\r\n if (entity === 'OAuthAuthenticationProviderConfiguration' || entity === 'OAuthAuthorizationProviderConfiguration') {\r\n related.push('oAuthConsumerCredentials');\r\n }\r\n if (entity === 'OAuth2AuthenticationProviderConfiguration') {\r\n related.push('oAuth2EndpointConfiguration');\r\n }\r\n if (entity.indexOf('ProviderConfiguration') !== -1) {\r\n related.push('owner');\r\n }\r\n return this.$injector.get('$http').get(this.Config.API_ROOT + '/entity/' + entity + '/' + id, {\r\n related: related\r\n });\r\n };\r\n return BulkService;\r\n}());\r\nexports.BulkService = BulkService;\r\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar PushService = (function () {\r\n PushService.$inject = [\"$http\", \"Config\"];\r\n function PushService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n PushService.prototype.getDiffData = function (data) {\r\n return this.$http.post(this.Config.API_ROOT + '/config/diff/update', data);\r\n };\r\n PushService.prototype.pushChanges = function (data, message) {\r\n return this.$http.post(this.Config.API_ROOT + '/entity/update', {\r\n message: message,\r\n entityPayloads: data\r\n });\r\n };\r\n return PushService;\r\n}());\r\nexports.PushService = PushService;\r\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TMSIdService = (function () {\r\n TMSIdService.$inject = [\"$http\", \"Config\"];\r\n function TMSIdService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n TMSIdService.prototype.getDefaultTMSIdMap = function () {\r\n var url = this.Config.API_ROOT + '/entity/TMSIdMap/default';\r\n return this.$http.get(url);\r\n };\r\n TMSIdService.prototype.getMVPDTMSIdMap = function (tmsidmap) {\r\n var url = this.Config.API_ROOT + '/entity/TMSIdMap/' + tmsidmap;\r\n return this.$http.get(url);\r\n };\r\n TMSIdService.prototype.getTmsIdsList = function () {\r\n var url = this.Config.API_ROOT + '/entity/RootEntityList/TMSIdMap';\r\n return this.$http.get(url);\r\n };\r\n return TMSIdService;\r\n}());\r\nexports.TMSIdService = TMSIdService;\r\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar CacheService = (function () {\r\n CacheService.$inject = [\"$cacheFactory\"];\r\n function CacheService($cacheFactory) {\r\n \"ngInject\";\r\n this.cache = $cacheFactory('apcCache');\r\n this.httpServiceCache = $cacheFactory('httpServiceCache');\r\n }\r\n CacheService.prototype.put = function (key, value) {\r\n if (this.get('@' + key) === null) {\r\n var initialData = value === undefined ? null : angular.copy(value);\r\n this.cache.put('@' + key, initialData);\r\n }\r\n this.cache.put(key, value === undefined ? null : value);\r\n };\r\n CacheService.prototype.get = function (key) {\r\n var value = this.cache.get(key);\r\n return (angular.isDefined(value)) ? value : null;\r\n };\r\n CacheService.prototype.getInfo = function () {\r\n return this.cache.info();\r\n };\r\n CacheService.prototype.getHttpServiceCache = function () {\r\n return this.httpServiceCache;\r\n };\r\n CacheService.prototype.reset = function () {\r\n this.cache.removeAll();\r\n this.httpServiceCache.removeAll();\r\n };\r\n return CacheService;\r\n}());\r\nexports.CacheService = CacheService;\r\n\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\n/**\r\n * @class ChannelService\r\n * @memberOf module:data\r\n * @static\r\n * @param {Object} $http - Angular http service\r\n * @description Fetch ServiceProvider data. Supports pagination, searching and sorting\r\n */\r\nvar ChannelService = (function () {\r\n ChannelService.$inject = [\"$http\", \"Config\", \"CacheService\"];\r\n function ChannelService($http, Config, CacheService) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n this.CacheService = CacheService;\r\n }\r\n /**\r\n * @memberOf module:data.ChannelService\r\n * @param {Number} pageNumber - Page number\r\n * @param {String} sortField - Field to sort. If null no sorting will be applied.\r\n * @param {String} sortOrder - Sort order. 'ASC' or 'DESC'. If null no sorting will be applied.\r\n * @param {String} searchTerm - What to search for. If null or shorter than 3 characters, no searching will be applied.\r\n * @returns {HttpPromise}\r\n */\r\n ChannelService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var url = this.Config.API_ROOT + '/entity/ServiceProvider?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\r\n if (searchTerm && searchTerm.trim().length >= 1) {\r\n url += '&query=' + searchTerm;\r\n }\r\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\r\n url += '&sorting=' +\r\n _.map(sortField.split(\",\"), function (field) {\r\n return field + \":\" + sortOrder;\r\n }).join(',');\r\n }\r\n return this.$http.get(url);\r\n };\r\n ChannelService.prototype.getItem = function (id) {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/ServiceProvider/' + id);\r\n };\r\n ChannelService.prototype.getAll = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/ServiceProvider');\r\n };\r\n /**\r\n * Returns a list of all channel domains\r\n */\r\n ChannelService.prototype.getDomains = function (channel) {\r\n var domains = [];\r\n channel.domains.forEach(function (domain) {\r\n domains.push(domain.domainName.toLowerCase());\r\n });\r\n return domains.sort();\r\n };\r\n ChannelService.prototype.getNewProviders = function () {\r\n return this.CacheService.get(\"New:ServiceProvider\");\r\n };\r\n ChannelService.prototype.getNewServiceProviderModel = function () {\r\n return {\r\n entityData: {\r\n analyticsConfigs: [],\r\n certificates: {},\r\n clientData: {},\r\n configuration: {\r\n default: {}\r\n },\r\n domains: [{\r\n \"id\": \"adobe.com\",\r\n \"domainName\": \"adobe.com\",\r\n \"idpInitiated\": false\r\n }],\r\n errorReporting: true,\r\n defaultRedirectUrl: null,\r\n integrations: {},\r\n manglers: {},\r\n pipelineStageList: {},\r\n privateKeys: {},\r\n userMetadataEncryptionCertificateId: null,\r\n usermetadataHashSeed: null,\r\n mediaCompanyMapping: null,\r\n additionalTokenFormat: [],\r\n customSchemes: [],\r\n permissions: null\r\n }\r\n };\r\n };\r\n ChannelService.prototype.getNewContentProviderModel = function () {\r\n return {\r\n entityData: {\r\n channels: null\r\n }\r\n };\r\n };\r\n return ChannelService;\r\n}());\r\nexports.ChannelService = ChannelService;\r\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar PlatformService = (function () {\r\n PlatformService.$inject = [\"$q\", \"$http\", \"Config\"];\r\n function PlatformService($q, $http, Config) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n PlatformService.prototype.getAll = function () {\r\n var deferred = this.$q.defer();\r\n this.$http.get(this.Config.API_ROOT + '/entity/Platform').then(function (response) {\r\n response.data.entities = _.sortBy(response.data.entities, function (item) {\r\n return item.entityData.name;\r\n });\r\n deferred.resolve(response);\r\n });\r\n return deferred.promise;\r\n };\r\n PlatformService.prototype.getPlatformDetails = function () {\r\n return this.getAll().then(function (response) {\r\n var platforms = {};\r\n response.data.entities.forEach(function (entity) {\r\n var platform = {};\r\n platform.id = entity.entityData.id;\r\n platform.description = entity.entityData.name;\r\n platform.enabled = false;\r\n switch (platform.id) {\r\n case 'xboxOne':\r\n platform.icon = 'coral-Icon--game';\r\n break;\r\n case 'xbox':\r\n platform.icon = 'coral-Icon--game';\r\n break;\r\n case 'XBOX':\r\n platform.icon = 'coral-Icon--game';\r\n break;\r\n case 'REST':\r\n platform.icon = 'coral-Icon--deviceDesktop';\r\n break;\r\n case 'JS':\r\n platform.icon = 'coral-Icon--deviceLaptop';\r\n break;\r\n case 'Android':\r\n platform.icon = 'coral-Icon--android';\r\n break;\r\n case 'roku':\r\n platform.icon = 'coral-Icon--deviceTV';\r\n break;\r\n case 'tvOS':\r\n platform.icon = 'coral-Icon--apple';\r\n break;\r\n case 'fireTV':\r\n platform.icon = 'coral-Icon--android';\r\n break;\r\n default:\r\n platform.icon = 'coral-Icon--devices';\r\n break;\r\n }\r\n platforms[platform.id] = platform;\r\n });\r\n return platforms;\r\n });\r\n };\r\n PlatformService.prototype.getNewModel = function (selectedPlatform, integrationData) {\r\n var model = {\r\n key: 'PlatformConfiguration:' + integrationData.entityData.id + '_' + selectedPlatform,\r\n version: 1,\r\n entityData: {\r\n id: integrationData.entityData.id + '_' + selectedPlatform,\r\n clientData: {},\r\n pipelineStageList: {},\r\n manglers: {},\r\n integrationConfiguration: '@' + integrationData.key,\r\n platform: '@Platform:' + selectedPlatform,\r\n configuration: {\r\n default: {}\r\n },\r\n enabledPlatformServices: false,\r\n enforcePlatformPermissions: true\r\n }\r\n };\r\n return model;\r\n };\r\n return PlatformService;\r\n}());\r\nexports.PlatformService = PlatformService;\r\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar ProgrammerService = (function () {\r\n ProgrammerService.$inject = [\"$http\", \"Config\", \"CacheService\"];\r\n function ProgrammerService($http, Config, CacheService) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n this.CacheService = CacheService;\r\n }\r\n ProgrammerService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var url = this.Config.API_ROOT + '/entity/Programmer?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\r\n if (searchTerm && searchTerm.trim().length >= 1) {\r\n url += '&query=' + searchTerm;\r\n }\r\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\r\n url += '&sorting=' +\r\n _.map(sortField.split(\",\"), function (field) {\r\n return field + \":\" + sortOrder;\r\n }).join(',');\r\n }\r\n return this.$http.get(url);\r\n };\r\n ProgrammerService.prototype.getItem = function (id) {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/Programmer/' + id, {\r\n arrayRelated: ['serviceProviders']\r\n });\r\n };\r\n ProgrammerService.prototype.getAll = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/Programmer');\r\n };\r\n /**\r\n * Merges all programmer domains.\r\n * Currently, domains can only be added at service provider level.\r\n */\r\n ProgrammerService.prototype.getDomains = function (serviceProviders) {\r\n var domains = new Set();\r\n serviceProviders.forEach(function (serviceProvider) {\r\n serviceProvider.entityData.domains.forEach(function (domain) {\r\n domains.add(domain.domainName.toLowerCase());\r\n });\r\n });\r\n return Array.from(domains).sort();\r\n };\r\n ProgrammerService.prototype.getNewProgrammers = function () {\r\n return this.CacheService.get(\"New:Programmer\");\r\n };\r\n ProgrammerService.prototype.getNewProgrammerModel = function () {\r\n return {\r\n entityData: {\r\n allowedRoles: [\"SERVICE_PROVIDER\", \"CONTENT_PROVIDER\"],\r\n certificates: null,\r\n clientData: null,\r\n configuration: null,\r\n contentProviders: [],\r\n logoUrl: null,\r\n manglers: null,\r\n parent: null,\r\n pipelineStageList: null,\r\n platformSettings: null,\r\n privateKeys: null,\r\n serviceProviders: [],\r\n customSchemes: [],\r\n imsOrgIds: [],\r\n featureFlags: {},\r\n applications: [],\r\n userMetadataEncryptionCertificateId: null,\r\n permissions: null\r\n }\r\n };\r\n };\r\n return ProgrammerService;\r\n}());\r\nexports.ProgrammerService = ProgrammerService;\r\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar _ = __webpack_require__(1);\r\nvar DataCollectorService = (function () {\r\n DataCollectorService.$inject = [\"$rootScope\", \"$timeout\", \"CacheService\", \"$http\", \"$window\", \"Config\", \"NotificationService\", \"UserService\"];\r\n function DataCollectorService($rootScope, $timeout, CacheService, $http, $window, Config, NotificationService, UserService) {\r\n \"ngInject\";\r\n this.$rootScope = $rootScope;\r\n this.$timeout = $timeout;\r\n this.CacheService = CacheService;\r\n this.$http = $http;\r\n this.$window = $window;\r\n this.Config = Config;\r\n this.NotificationService = NotificationService;\r\n this.UserService = UserService;\r\n this.scope = this.$rootScope.$new();\r\n this.scope.hasData = false;\r\n this.debounceList = {};\r\n this.collectorObject = {};\r\n }\r\n DataCollectorService.prototype.updateCollector = function (data, operation) {\r\n var _this = this;\r\n var storedData = {\r\n entityData: data.entityData,\r\n entityId: data.key.split(':')[1],\r\n entityPrefix: data.key.split(':')[0].replace('@', ''),\r\n operation: operation\r\n };\r\n if (operation !== 'CREATE') {\r\n storedData.previousVersion = data.version;\r\n }\r\n var storedItem = this.collectorObject[data.key];\r\n if (storedItem) {\r\n storedData.operation = storedItem.operation;\r\n if (storedItem.operation === 'CREATE') {\r\n delete storedData.previousVersion;\r\n }\r\n }\r\n this.collectorObject[data.key] = storedData;\r\n if (angular.equals(storedData.entityData, this.CacheService.get('@' + data.key).entityData) && storedData.operation !== 'CREATE') {\r\n delete this.collectorObject[data.key];\r\n }\r\n else {\r\n if (!this.debounceList[data.key]) {\r\n this.debounceList[data.key] = {};\r\n }\r\n if (!this.debounceList[data.key].debounced) {\r\n var checkForConflicts = function () {\r\n _this.$http.get(_this.Config.API_ROOT + '/entity/' + storedData.entityPrefix + '/' + storedData.entityId, {\r\n cache: false,\r\n latest: true,\r\n ignoreError: true\r\n }).then(function (response) {\r\n if (data.version !== response.data.version) {\r\n delete _this.collectorObject[data.key];\r\n _this.NotificationService.warnModal('Data conflict', storedData.operation === 'CREATE' ? 'Another user already added the same entity. You need to refresh your data. All changes will be lost.' : 'Another user made a concurrent modification to the same data. You need to refresh your data. All changes will be lost.', {\r\n backdrop: 'static',\r\n confirm: true\r\n }).result.then(function () {\r\n window.onbeforeunload = null;\r\n _this.$window.location.reload();\r\n });\r\n }\r\n }, function (error) {\r\n if ((error.status === 404 || error.status === 403) && storedData.operation !== 'CREATE') {\r\n delete _this.collectorObject[data.key];\r\n _this.NotificationService.warnModal('Data conflict', 'Another user deleted the data you are trying to edit. You need to refresh your data. All changes will be lost.', {\r\n backdrop: 'static',\r\n confirm: true\r\n }).result.then(function () {\r\n window.onbeforeunload = null;\r\n _this.$window.location.reload();\r\n });\r\n }\r\n });\r\n };\r\n this.debounceList[data.key].debounced = _.debounce(checkForConflicts, 1000, {\r\n leading: false,\r\n trailing: true\r\n });\r\n }\r\n this.debounceList[data.key].debounced();\r\n }\r\n this.$timeout(function () {\r\n // check for errors in page, in case there are any fields containing errors notify there are valid changes\r\n var errors = $(\"input.ng-invalid.ng-dirty\");\r\n _this.scope.hasData = Object.keys(_this.collectorObject).length > 0 && errors.length === 0;\r\n }, 100);\r\n window.onbeforeunload = function (event) {\r\n event.preventDefault();\r\n if (_this.scope.hasData) {\r\n return \"You have unsaved changes. All of your changes will be lost.\";\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n };\r\n DataCollectorService.prototype.collector = function (data) {\r\n var _this = this;\r\n if (this.UserService.hasRole('ROLE_CONSOLE_WRITE')) {\r\n var _self_1 = this;\r\n return function (newValue, oldValue) {\r\n if (newValue !== oldValue) {\r\n var entityType = data.key.split(':')[0].replace('@', '');\r\n if (entityType === 'PlatformConfiguration') {\r\n var cachedData = _this.CacheService.get(data.key);\r\n if (cachedData) {\r\n _this.updateCollector(data, 'UPDATE');\r\n _this.CacheService.put(data.key, data);\r\n }\r\n else {\r\n var integration = _this.CacheService.get(data.entityData.integrationConfiguration.replace('@', ''));\r\n if (!integration.entityData.platformConfigurations) {\r\n integration.entityData.platformConfigurations = {};\r\n }\r\n integration.entityData.platformConfigurations[data.entityData.platform] = '@' + data.key;\r\n integration.related.platformConfigurations.push(data);\r\n _self_1.updateEntity(integration);\r\n _self_1.createEntity(data);\r\n }\r\n }\r\n else {\r\n _this.CacheService.put(data.key, data);\r\n _this.updateCollector(data, 'UPDATE');\r\n }\r\n }\r\n };\r\n }\r\n };\r\n DataCollectorService.prototype.updateEntity = function (entity) {\r\n if (this.UserService.hasRole('ROLE_CONSOLE_WRITE')) {\r\n this.CacheService.put(entity.key, entity);\r\n this.updateCollector(entity, 'UPDATE');\r\n }\r\n };\r\n DataCollectorService.prototype.createEntity = function (entity) {\r\n if (this.UserService.hasRole('ROLE_CONSOLE_WRITE')) {\r\n var entityType = entity.key.split(':')[0].replace('@', '');\r\n var newList = this.CacheService.get('New:' + entityType);\r\n if (!newList) {\r\n newList = [];\r\n }\r\n newList.push(entity);\r\n this.CacheService.put('New:' + entityType, newList);\r\n this.CacheService.put(entity.key, entity);\r\n this.updateCollector(entity, 'CREATE');\r\n }\r\n };\r\n DataCollectorService.prototype.getStoredData = function () {\r\n var storedData = angular.copy(_.values(this.collectorObject));\r\n for (var i = 0; i < storedData.length; i++) {\r\n var item = storedData[i];\r\n if (item.entityPrefix === 'PlatformConfiguration') {\r\n delete item.entityData.authenticationProviderConfiguration;\r\n delete item.entityData.authorizationProviderConfiguration;\r\n delete item.entityData.logoutProviderConfiguration;\r\n delete item.entityData.serviceProvider;\r\n delete item.entityData.owner;\r\n }\r\n }\r\n return storedData;\r\n };\r\n DataCollectorService.prototype.getScope = function () {\r\n return this.scope;\r\n };\r\n DataCollectorService.prototype.reset = function () {\r\n window.onbeforeunload = null;\r\n this.scope.hasData = false;\r\n this.collectorObject = {};\r\n this.debounceList = {};\r\n };\r\n return DataCollectorService;\r\n}());\r\nexports.DataCollectorService = DataCollectorService;\r\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar LocalConfigurationService = (function () {\r\n LocalConfigurationService.$inject = [\"$http\", \"Config\"];\r\n function LocalConfigurationService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n LocalConfigurationService.prototype.getLocalConfiguration = function () {\r\n var url = this.Config.API_ROOT + '/entity/LocalConfiguration';\r\n return this.$http.get(url);\r\n };\r\n return LocalConfigurationService;\r\n}());\r\nexports.LocalConfigurationService = LocalConfigurationService;\r\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar IntegrationService = (function () {\r\n IntegrationService.$inject = [\"$http\", \"Config\", \"CacheService\"];\r\n function IntegrationService($http, Config, CacheService) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n this.CacheService = CacheService;\r\n }\r\n IntegrationService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var url = this.Config.API_ROOT + '/entity/IntegrationConfiguration?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\r\n if (searchTerm && searchTerm.trim().length >= 1) {\r\n url += '&query=' + searchTerm;\r\n }\r\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\r\n url += '&sorting=' +\r\n _.map(sortField.split(\",\"), function (field) {\r\n return field + \":\" + sortOrder;\r\n }).join(',');\r\n }\r\n return this.$http.get(url, {\r\n related: ['owner', 'serviceProvider']\r\n });\r\n };\r\n IntegrationService.prototype.getItem = function (id) {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/IntegrationConfiguration/' + id, {\r\n related: ['owner', 'serviceProvider', 'authenticationProviderConfiguration', 'authorizationProviderConfiguration', 'logoutProviderConfiguration'],\r\n arrayRelated: ['platformConfigurations']\r\n });\r\n };\r\n IntegrationService.prototype.getAllIntegrations = function () {\r\n var _this = this;\r\n var url = this.Config.API_ROOT + '/entity/IntegrationConfiguration?pageNumber=1&pageSize=';\r\n var totalIntegrations = 0;\r\n return this.$http.get(url + this.Config.PAGE_SIZE).then(function (response) {\r\n totalIntegrations = response.data.count;\r\n url += totalIntegrations;\r\n return _this.$http.get(url);\r\n });\r\n };\r\n IntegrationService.prototype.getNewList = function () {\r\n return this.CacheService.get('New:IntegrationConfiguration');\r\n };\r\n IntegrationService.prototype.getNewModel = function () {\r\n var model = {\r\n key: 'IntegrationConfiguration:new',\r\n version: 1,\r\n entityData: {\r\n id: 'new',\r\n enabled: null,\r\n clientData: {},\r\n manglers: {},\r\n mvpdResourceFormat: null,\r\n pipelineStageList: {},\r\n platformConfigurations: {},\r\n platformTraitConfigurations: {},\r\n configuration: {\r\n default: {}\r\n },\r\n userMetadata: null\r\n }\r\n };\r\n return model;\r\n };\r\n return IntegrationService;\r\n}());\r\nexports.IntegrationService = IntegrationService;\r\n\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HistoryService = (function () {\r\n HistoryService.$inject = [\"$http\", \"Config\", \"DownloadService\"];\r\n function HistoryService($http, Config, DownloadService) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n this.DownloadService = DownloadService;\r\n }\r\n /**\r\n * @class HistoryResponseTransformer\r\n * @memberOf module:data\r\n * @param {Object} data - data from server\r\n * @returns {Object} Transformed data\r\n * @description Adds a default message to configuration save information is none was specified and flags the history entry as an \"Import from Core\" if that's the case.\r\n */\r\n HistoryService.prototype.HistoryResponseTransformer = function (response) {\r\n var data = response.configurationInformationList || [];\r\n for (var i = 0; i < data.length; i++) {\r\n var dataNode = data[i];\r\n if (!dataNode.configurationSaveInformation.message || dataNode.configurationSaveInformation.message.trim().length === 0) {\r\n dataNode.configurationSaveInformation.message = (dataNode.configurationPushInformation) ? 'No message was specified' : 'Import from Core';\r\n }\r\n if (dataNode.configurationPushInformation) {\r\n switch (dataNode.configurationPushInformation.pushResultStatus) {\r\n case 'SUCCESS':\r\n break;\r\n case 'SUCCESS_DIFFERENT_MODEL_SERIAL_ID':\r\n dataNode.configurationPushInformation.pushResultStatus = 'SUCCESS*';\r\n break;\r\n default:\r\n dataNode.configurationPushInformation.pushResultStatus = 'FAILED';\r\n break;\r\n }\r\n }\r\n }\r\n response.configurationInformationList = data;\r\n return response;\r\n };\r\n ;\r\n /**\r\n * @memberOf module:data.HistoryService\r\n * @see {@link module:data.HistoryResponseTransformer}\r\n * @returns {HttpPromise} Parsed data from server. See {@link module:data.HistoryResponseTransformer}\r\n * @description Fetch all configuration push history from server.\r\n */\r\n HistoryService.prototype.getAll = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/history', {\r\n cache: false,\r\n transformResponse: this.$http.defaults.transformResponse.concat([this.HistoryResponseTransformer])\r\n });\r\n };\r\n /**\r\n * @memberOf module:data.HistoryService\r\n * @see {@link module:data.HistoryResponseTransformer}\r\n * @returns {HttpPromise} Parsed data from server. See {@link module:data.HistoryResponseTransformer}\r\n * @description Fetch paginated configuration push history from server.\r\n */\r\n HistoryService.prototype.getPage = function (pageNumber) {\r\n return this.$http.get(this.Config.API_ROOT + '/config/history?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE, {\r\n cache: false,\r\n transformResponse: this.$http.defaults.transformResponse.concat([this.HistoryResponseTransformer])\r\n });\r\n };\r\n /**\r\n * @memberOf module:data.HistoryService\r\n * @see {@link module:data.HistoryResponseTransformer}\r\n * @returns {HttpPromise} Parsed data from server. See {@link module:data.HistoryResponseTransformer}\r\n * @description Fetch last 5 successful configurations\r\n */\r\n HistoryService.prototype.getRecent = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/config/history?pushStatus=SUCCESS&pageNumber=1&pageSize=5', {\r\n cache: false,\r\n transformResponse: this.$http.defaults.transformResponse.concat([this.HistoryResponseTransformer])\r\n });\r\n };\r\n /**\r\n * @memberOf module:data.HistoryService\r\n * @see {@link module:core.DownloadService}\r\n * @param {Number} configurationVersion - Configuration version to export\r\n * @description Exports a specific configuration file JSON format\r\n */\r\n HistoryService.prototype.exportConfiguration = function (configurationVersion) {\r\n var url = this.Config.API_ROOT + '/admin/download?version=' + configurationVersion;\r\n this.DownloadService.download(url);\r\n };\r\n /**\r\n * @memberOf module:data.HistoryService\r\n * @see {@link module:core.DownloadService}\r\n * @param {Number} configurationVersion - Configuration version to export\r\n * @description Exports a specific configuration file ZIP format\r\n */\r\n HistoryService.prototype.exportZipConfiguration = function (configurationVersion) {\r\n var url = this.Config.API_ROOT + '/admin/downloadSplit?version=' + configurationVersion;\r\n this.DownloadService.download(url);\r\n };\r\n return HistoryService;\r\n}());\r\nexports.HistoryService = HistoryService;\r\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2018 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar uuid = __webpack_require__(165);\r\nvar ApplicationService = (function () {\r\n ApplicationService.$inject = [\"$http\", \"Config\"];\r\n function ApplicationService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n ApplicationService.prototype.getItem = function (id) {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/RegisteredApplication/' + id);\r\n };\r\n ApplicationService.prototype.getAll = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/RegisteredApplication');\r\n };\r\n ApplicationService.prototype.getAllProgrammerApps = function (programmerId) {\r\n return this.$http.get(this.Config.API_ROOT + '/applications?programmer=' + programmerId);\r\n };\r\n ApplicationService.prototype.getAllChannelApps = function (programmerId, channelId) {\r\n return this.$http.get(this.Config.API_ROOT + '/applications?programmer=' + programmerId + \"&channel=\" + channelId);\r\n };\r\n ApplicationService.prototype.getApplicationDefinition = function (typeValue) {\r\n return {\r\n entityData: {\r\n id: uuid.v4(),\r\n name: null,\r\n owner: null,\r\n version: \"1.0.0\",\r\n platformTraitIdentifiers: [],\r\n platforms: [],\r\n redirectUrls: [],\r\n serviceProviders: [],\r\n type: typeValue,\r\n scopes: null,\r\n externalConfiguration: null\r\n }\r\n };\r\n };\r\n ApplicationService.prototype.getApplicationTypes = function () {\r\n return this.$http.get(this.Config.API_ROOT + '/entity/enum/RegisteredApplicationType');\r\n };\r\n return ApplicationService;\r\n}());\r\nexports.ApplicationService = ApplicationService;\r\n\n\n/***/ }),\n/* 165 */,\n/* 166 */,\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConfigVersionInterceptor = (function () {\r\n function ConfigVersionInterceptor(Config) {\r\n var _this = this;\r\n this.Config = Config;\r\n this.request = function (config) {\r\n if (config.url.indexOf('entity') !== -1 && !config.latest) {\r\n var url = new URI(config.url);\r\n var query = url.search(true);\r\n query.configurationVersion = _this.Config.configVersion;\r\n url.search(query);\r\n config.url = url.toString();\r\n }\r\n return config;\r\n };\r\n }\r\n ConfigVersionInterceptor.getInstance = [\"Config\", function (Config) {\r\n \"ngInject\";\r\n return new ConfigVersionInterceptor(Config);\r\n }];\r\n return ConfigVersionInterceptor;\r\n}());\r\nexports.ConfigVersionInterceptor = ConfigVersionInterceptor;\r\n\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar CacheInterceptor = (function () {\r\n function CacheInterceptor(Config, CacheService) {\r\n var _this = this;\r\n this.Config = Config;\r\n this.CacheService = CacheService;\r\n this.request = function (config) {\r\n if (!config.latest && (config.url.indexOf(_this.Config.API_ROOT + '/entity') !== -1 || config.url.indexOf(_this.Config.API_ROOT + '/config/manglers') !== -1) && config.url !== _this.Config.API_ROOT + '/entity/bulkRetrieve' && config.url !== _this.Config.API_ROOT + '/entity/update') {\r\n config.cache = true;\r\n }\r\n return config;\r\n };\r\n this.response = function (response) {\r\n if (response.config.cache === true && !response.config.latest && response.config.url.indexOf(_this.Config.API_ROOT + '/entity') !== -1 && response.config.url && response.config.url !== _this.Config.API_ROOT + '/entity/update') {\r\n response = _this.getCachedResponse(response);\r\n }\r\n return response;\r\n };\r\n }\r\n CacheInterceptor.getInstance = [\"Config\", \"CacheService\", function (Config, CacheService) {\r\n \"ngInject\";\r\n return new CacheInterceptor(Config, CacheService);\r\n }];\r\n CacheInterceptor.prototype.getCachedResponse = function (response) {\r\n if (response.data && response.data.entityData) {\r\n var cachedItem = this.CacheService.get(response.data.key);\r\n if (cachedItem) {\r\n response.data = cachedItem;\r\n }\r\n else {\r\n this.CacheService.put(response.data.key, response.data);\r\n }\r\n }\r\n else if (response.data) {\r\n if (angular.isArray(response.data)) {\r\n response.data.entities = response.data;\r\n }\r\n var list = response.data.entities;\r\n for (var i = 0; i < list.length; i++) {\r\n var entity = list[i];\r\n if (entity.key !== undefined) {\r\n var cachedData = this.CacheService.get(entity.key);\r\n if (cachedData) {\r\n list[i] = cachedData;\r\n }\r\n else {\r\n this.CacheService.put(entity.key, entity);\r\n }\r\n }\r\n }\r\n }\r\n return response;\r\n };\r\n return CacheInterceptor;\r\n}());\r\nexports.CacheInterceptor = CacheInterceptor;\r\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar PushStatusInterceptor = (function () {\r\n function PushStatusInterceptor($q, $injector, $timeout, States, Config, NotificationService, $rootScope) {\r\n var _this = this;\r\n this.$q = $q;\r\n this.$injector = $injector;\r\n this.$timeout = $timeout;\r\n this.States = States;\r\n this.Config = Config;\r\n this.NotificationService = NotificationService;\r\n this.$rootScope = $rootScope;\r\n this.response = function (response) {\r\n var deferred = _this.$q.defer();\r\n if (response.config.url.indexOf('entity/update') !== -1 || response.config.url.indexOf('admin/import') !== -1 || response.config.url.indexOf('pull') !== -1) {\r\n _this.checkPushStatus(response, deferred);\r\n }\r\n else {\r\n deferred.resolve(response);\r\n }\r\n return deferred.promise;\r\n };\r\n }\r\n PushStatusInterceptor.getInstance = [\"$q\", \"$injector\", \"$timeout\", \"States\", \"Config\", \"NotificationService\", \"$rootScope\", function ($q, $injector, $timeout, States, Config, NotificationService, $rootScope) {\r\n \"ngInject\";\r\n return new PushStatusInterceptor($q, $injector, $timeout, States, Config, NotificationService, $rootScope);\r\n }];\r\n PushStatusInterceptor.prototype.checkPushStatus = function (response, deferred) {\r\n var _this = this;\r\n var http = this.$injector.get('$http');\r\n var pushInfo = response.data.configurationPushInformation;\r\n if (pushInfo) {\r\n var state = this.$injector.get('$state');\r\n if (pushInfo.pushResultStatus === 'SUCCESS') {\r\n state.go(this.States.History.name, {\r\n reset: true,\r\n highlight: response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion\r\n });\r\n }\r\n else {\r\n state.go(this.States.History.name, {\r\n reset: true,\r\n highlight: response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion\r\n });\r\n this.$rootScope.appLoading = false;\r\n this.NotificationService.error(\"Push failed due to a network error. Please contact Adobe Primetime Support.\");\r\n }\r\n }\r\n else {\r\n http.get(this.Config.API_ROOT + '/config/info?configurationVersion=' + (response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion), { cache: false }).then(function (checkResponse) {\r\n _this.timeout = _this.$timeout(function () {\r\n _this.checkPushStatus(checkResponse, deferred);\r\n }, 1000);\r\n });\r\n }\r\n this.Config.configVersion = response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion;\r\n };\r\n return PushStatusInterceptor;\r\n}());\r\nexports.PushStatusInterceptor = PushStatusInterceptor;\r\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar RelatedDataInterceptor = (function () {\r\n function RelatedDataInterceptor($q, BulkService, CacheService) {\r\n var _this = this;\r\n this.$q = $q;\r\n this.BulkService = BulkService;\r\n this.CacheService = CacheService;\r\n this.response = function (response) {\r\n if (response.config.related || response.config.arrayRelated) {\r\n var deferred_1 = _this.$q.defer();\r\n var relatedList = _.union(response.config.related, response.config.arrayRelated);\r\n var processedData_1 = _this.getIdList(response.data, relatedList);\r\n var idsToFetch = processedData_1.list;\r\n _this.BulkService.getBulk(idsToFetch).then(function (relatedResponse) {\r\n relatedResponse.data = _.union(relatedResponse.data.entities, processedData_1.cachedList);\r\n var relatedData = {};\r\n for (var i = 0; i < relatedResponse.data.length; i++) {\r\n var relatedItem = relatedResponse.data[i];\r\n relatedData['@' + relatedItem.key] = relatedItem;\r\n }\r\n if (response.config.arrayRelated) {\r\n for (var property in response.config.arrayRelated) {\r\n var propertyName = response.config.arrayRelated[property];\r\n relatedData[propertyName] = [];\r\n var idList = response.data.entityData[propertyName];\r\n for (var relatedEntity in idList) {\r\n if (relatedData[idList[relatedEntity]]) {\r\n relatedData[propertyName].push(relatedData[idList[relatedEntity]]);\r\n }\r\n }\r\n }\r\n }\r\n if (response.data) {\r\n response.data.related = relatedData;\r\n var cachedData = _this.CacheService.get(response.data.key);\r\n if (cachedData) {\r\n cachedData.related = relatedData;\r\n _this.CacheService.put(response.data.key, cachedData);\r\n }\r\n }\r\n deferred_1.resolve(response);\r\n });\r\n return deferred_1.promise;\r\n }\r\n else {\r\n return response;\r\n }\r\n };\r\n }\r\n RelatedDataInterceptor.getInstance = [\"$q\", \"BulkService\", \"CacheService\", function ($q, BulkService, CacheService) {\r\n \"ngInject\";\r\n return new RelatedDataInterceptor($q, BulkService, CacheService);\r\n }];\r\n RelatedDataInterceptor.prototype.getMultipleIdList = function (data, relatedProperties) {\r\n var result = {\r\n list: [],\r\n cachedList: []\r\n };\r\n if (data && data.entities) {\r\n for (var i = 0; i < data.entities.length; i++) {\r\n var item = data.entities[i].entityData;\r\n for (var j = 0; j < relatedProperties.length; j++) {\r\n var cachedData = this.CacheService.get(item[relatedProperties[j]].replace('@', ''));\r\n if (cachedData) {\r\n result.cachedList.push(cachedData);\r\n }\r\n else {\r\n result.list.push(item[relatedProperties[j]]);\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n RelatedDataInterceptor.prototype.getIdList = function (data, relatedProperties) {\r\n var result = {\r\n list: [],\r\n cachedList: []\r\n };\r\n if (data && data.entityData) {\r\n for (var i = 0; i < relatedProperties.length; i++) {\r\n var property = data.entityData[relatedProperties[i]];\r\n if (property) {\r\n if (angular.isObject(property)) {\r\n property = _.values(property);\r\n }\r\n if (angular.isArray(property)) {\r\n for (var j = 0; j < property.length; j++) {\r\n var cachedItemData = this.CacheService.get(property[j].replace('@', ''));\r\n if (cachedItemData) {\r\n result.cachedList.push(cachedItemData);\r\n }\r\n else {\r\n result.list.push(property[j]);\r\n }\r\n }\r\n }\r\n else {\r\n var cachedData = this.CacheService.get(property.replace('@', ''));\r\n if (cachedData) {\r\n result.cachedList.push(cachedData);\r\n }\r\n else {\r\n result.list.push(data.entityData[relatedProperties[i]]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n result = this.getMultipleIdList(data, relatedProperties);\r\n }\r\n result.list = _.uniq(result.list);\r\n result.cachedList = _.uniq(result.cachedList);\r\n return result;\r\n };\r\n ;\r\n return RelatedDataInterceptor;\r\n}());\r\nexports.RelatedDataInterceptor = RelatedDataInterceptor;\r\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ResilienceInterceptor = (function () {\r\n function ResilienceInterceptor(Config, ResilienceService, NotificationService) {\r\n var _this = this;\r\n this.Config = Config;\r\n this.ResilienceService = ResilienceService;\r\n this.NotificationService = NotificationService;\r\n this.response = function (response) {\r\n if (response.config.url && response.config.url.indexOf(_this.Config.API_ROOT + '/entity') !== -1 && response.config.url !== _this.Config.API_ROOT + '/entity/bulkRetrieve' && response.config.url !== _this.Config.API_ROOT + '/entity/update') {\r\n if (response.data && response.data.resilienceState !== undefined && response.config.url.indexOf(_this.Config.API_ROOT + '/entity/Platform') === -1) {\r\n _this.ResilienceService.setResilienceState(response.data.resilienceState);\r\n if (response.data.resilienceState) {\r\n _this.NotificationService.errorWithHelperLink(\"Degraded state\", \"Only search and sort functionality is affected. \", _this.ResilienceService.getTroubleshootingLink());\r\n }\r\n else {\r\n _this.NotificationService.removeError(\"Degraded state\");\r\n }\r\n }\r\n }\r\n return response;\r\n };\r\n }\r\n ResilienceInterceptor.getInstance = [\"Config\", \"ResilienceService\", \"NotificationService\", function (Config, ResilienceService, NotificationService) {\r\n \"ngInject\";\r\n return new ResilienceInterceptor(Config, ResilienceService, NotificationService);\r\n }];\r\n return ResilienceInterceptor;\r\n}());\r\nexports.ResilienceInterceptor = ResilienceInterceptor;\r\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar RetryableRequestInterceptor = (function () {\r\n function RetryableRequestInterceptor($q, $injector) {\r\n var _this = this;\r\n this.$q = $q;\r\n this.$injector = $injector;\r\n this.responseError = function (response) {\r\n var count = (response.config.retryCount) ? response.config.retryCount + 1 : 1;\r\n if (response.data && response.data.additionalInfo && response.data.additionalInfo.retry && count <= 10) {\r\n var http = _this.$injector.get('$http');\r\n switch (response.config.method) {\r\n case 'GET':\r\n http.get(response.config.url, { retryCount: count });\r\n break;\r\n case 'POST':\r\n http.post(response.config.url, response.config.data, { retryCount: count });\r\n break;\r\n }\r\n }\r\n return _this.$q.reject(response);\r\n };\r\n }\r\n RetryableRequestInterceptor.getInstance = [\"$q\", \"$injector\", function ($q, $injector) {\r\n \"ngInject\";\r\n return new RetryableRequestInterceptor($q, $injector);\r\n }];\r\n return RetryableRequestInterceptor;\r\n}());\r\nexports.RetryableRequestInterceptor = RetryableRequestInterceptor;\r\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar CertificateUtils = (function () {\r\n function CertificateUtils() {\r\n }\r\n CertificateUtils.prototype.getUserMetadataEncryptionCertificateId = function (encryptionLevel, encryptionCertificateSetAt, channelEncryptionCertificateId, programmerEncryptionCertificateId) {\r\n switch (encryptionLevel) {\r\n case EncryptionLevel.CHANNEL:\r\n return encryptionCertificateSetAt === EncryptionLevel.CHANNEL ? channelEncryptionCertificateId : programmerEncryptionCertificateId;\r\n case EncryptionLevel.PROGRAMMER:\r\n return programmerEncryptionCertificateId;\r\n }\r\n };\r\n ;\r\n CertificateUtils.prototype.getUserMetadataEncryptionCertificateSerialNumber = function (encryptionLevel, encryptionCertificateSetAt, channelEncryptionCertificateSerialNo, programmerEncryptionCertificateSerialNo) {\r\n switch (encryptionLevel) {\r\n case EncryptionLevel.CHANNEL:\r\n return encryptionCertificateSetAt === EncryptionLevel.CHANNEL ? channelEncryptionCertificateSerialNo : programmerEncryptionCertificateSerialNo;\r\n case EncryptionLevel.PROGRAMMER:\r\n return programmerEncryptionCertificateSerialNo;\r\n }\r\n };\r\n ;\r\n /**\r\n * Corrects the certificate content by removing any whitespaces or new lines and adding\r\n * \"-----BEGIN CERTIFICATE-----\" and \"-----END CERTIFICATE-----\"\r\n */\r\n CertificateUtils.prototype.normalizeContent = function (content) {\r\n return '-----BEGIN CERTIFICATE-----' + '\\n' +\r\n content\r\n .replace('-----BEGIN CERTIFICATE-----', '')\r\n .replace('-----END CERTIFICATE-----', '')\r\n .replace(/(\\r\\n|\\n|\\r)/gm, '') +\r\n '\\n' + '-----END CERTIFICATE-----' + '\\n';\r\n };\r\n return CertificateUtils;\r\n}());\r\nexports.CertificateUtils = CertificateUtils;\r\nvar EncryptionLevel;\r\n(function (EncryptionLevel) {\r\n EncryptionLevel[EncryptionLevel[\"CHANNEL\"] = 0] = \"CHANNEL\";\r\n EncryptionLevel[EncryptionLevel[\"PROGRAMMER\"] = 1] = \"PROGRAMMER\";\r\n})(EncryptionLevel = exports.EncryptionLevel || (exports.EncryptionLevel = {}));\r\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar CustomSchemeService = (function () {\r\n CustomSchemeService.$inject = [\"$http\", \"Config\"];\r\n function CustomSchemeService($http, Config) {\r\n \"ngInject\";\r\n this.$http = $http;\r\n this.Config = Config;\r\n }\r\n CustomSchemeService.prototype.generateCustomSchemeForChannel = function (channelId) {\r\n return this.$http.post(this.Config.API_ROOT + '/schemes/serviceProvider/' + channelId);\r\n };\r\n CustomSchemeService.prototype.generateCustomSchemeForProgrammer = function (programmerId) {\r\n return this.$http.post(this.Config.API_ROOT + '/schemes/programmer/' + programmerId);\r\n };\r\n return CustomSchemeService;\r\n}());\r\nexports.CustomSchemeService = CustomSchemeService;\r\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __asyncValues = (this && this.__asyncIterator) || function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar ReportService = (function () {\r\n ReportService.$inject = [\"$q\", \"BulkService\"];\r\n function ReportService($q, BulkService) {\r\n \"ngInject\";\r\n this.$q = $q;\r\n this.BulkService = BulkService;\r\n this.configuration = {};\r\n this.finalData = [];\r\n this.pageSize = 20;\r\n this.selectedMvpdsList = [];\r\n this.selectedChannelsList = [];\r\n this.BulkService = BulkService;\r\n }\r\n ReportService.prototype.getPage = function (pageNumber, sortField, sortOrder, searchTerm) {\r\n var self = this;\r\n return this.$q(function (resolve) {\r\n var paginatedData = self.finalData.slice((pageNumber - 1) * self.pageSize, pageNumber * self.pageSize);\r\n var reportData;\r\n if (self.selectedReport.id === 'authnReport' || self.selectedReport.id === 'authzReport') {\r\n self.getTTLReportData(paginatedData, self.selectedReport.id).then(function (response) {\r\n reportData = response;\r\n }).then(function () {\r\n resolve({\r\n data: {\r\n entities: reportData,\r\n count: self.finalData.length\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n self.getSSOReportData(paginatedData).then(function (response) {\r\n reportData = response;\r\n }).then(function () {\r\n resolve({\r\n data: {\r\n entities: reportData,\r\n count: self.finalData.length\r\n }\r\n });\r\n });\r\n }\r\n });\r\n };\r\n ReportService.prototype.processTTL = function (ttl) {\r\n var SECONDS_IN_DAY = 86400;\r\n var SECONDS_IN_HOUR = 3600;\r\n var SECONDS_IN_MINUTE = 60;\r\n var asString = \"\";\r\n var days = Math.floor(ttl / SECONDS_IN_DAY);\r\n var secondsRemainder = ttl % SECONDS_IN_DAY;\r\n var hours = Math.floor(secondsRemainder / SECONDS_IN_HOUR);\r\n secondsRemainder = secondsRemainder % SECONDS_IN_HOUR;\r\n var minutes = Math.floor(secondsRemainder / SECONDS_IN_MINUTE);\r\n secondsRemainder = secondsRemainder % SECONDS_IN_MINUTE;\r\n var seconds = secondsRemainder;\r\n if (days === 1) {\r\n asString += days + \" day \";\r\n }\r\n else if (days > 1) {\r\n asString += days + \" days \";\r\n }\r\n if (hours === 1) {\r\n asString += hours + \" hour \";\r\n }\r\n else if (hours > 1) {\r\n asString += hours + \" hours \";\r\n }\r\n if (minutes === 1) {\r\n asString += minutes + \" minute \";\r\n }\r\n else if (minutes > 1) {\r\n asString += minutes + \" minutes \";\r\n }\r\n if (seconds === 1) {\r\n asString += seconds + \" second\";\r\n }\r\n else if (seconds > 1) {\r\n asString += seconds + \" seconds\";\r\n }\r\n return asString;\r\n };\r\n // Consider the fallowing inheritance chain tree:\r\n //\r\n // CHANNEL\r\n // -> MVPD\r\n // -> ENDPOINT\r\n // -> INTEGRATION\r\n // -> PLATFORM\r\n //\r\n ReportService.prototype.getTTLReportData = function (integrations, reportType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n var deferred, reportData, reportColumns, integrations_1, integrations_1_1, integration, authnTTLMap, authzTTLMap, related, entities, key, platformName, platformId, authnTTLPlatform, authzTTLPlatform, stop_1, authnTTLIntegration_1, authzTTLIntegration_1, authnTTLEndpoint_1, authzTTLEndpoint_1, authnEndpoint, authzEndpoint, authnTTLMvpd_1, authzTTLMvpd_1, mvpd, mvpdName, owner, serviceProviderName, serviceProvider, e_1_1, e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n deferred = this.$q.defer();\r\n reportData = [];\r\n reportColumns = ['JS', 'iOS', 'Android', 'mobileOthers', 'roku', 'fireTV', 'tvOS', 'tvcdOthers', 'unknown'];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 8, 9, 14]);\r\n integrations_1 = __asyncValues(integrations);\r\n _b.label = 2;\r\n case 2: return [4 /*yield*/, integrations_1.next()];\r\n case 3:\r\n if (!(integrations_1_1 = _b.sent(), !integrations_1_1.done)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, integrations_1_1.value];\r\n case 4:\r\n integration = _b.sent();\r\n authnTTLMap = {};\r\n authzTTLMap = {};\r\n related = _.values(integration.entityData.platformConfigurations);\r\n if (!this.configuration[integration.entityData.owner.split('@')[1]]) {\r\n related.push(integration.entityData.owner);\r\n }\r\n if (reportType === 'authnReport' && !this.configuration[integration.entityData.authenticationProviderConfiguration.split('@')[1]]) {\r\n related.push(integration.entityData.authenticationProviderConfiguration);\r\n }\r\n if (reportType === 'authzReport' && !this.configuration[integration.entityData.authorizationProviderConfiguration.split('@')[1]]) {\r\n related.push(integration.entityData.authorizationProviderConfiguration);\r\n }\r\n return [4 /*yield*/, Promise.all([this.BulkService.getBulk(related)])];\r\n case 5:\r\n entities = (_b.sent())[0];\r\n if (entities.data) {\r\n entities.data.forEach(function (entity) {\r\n _this.configuration[entity.key] = entity.entityData;\r\n });\r\n }\r\n //////////////////\r\n // PLATFORM\r\n //////////////////\r\n if (integration.entityData.platformConfigurations) {\r\n for (key in integration.entityData.platformConfigurations) {\r\n platformName = key.split(':')[1];\r\n if (reportColumns.includes(platformName) || platformName === 'REST') {\r\n platformId = integration.entityData.platformConfigurations[key].split('@')[1];\r\n // Compute AUTHN_TLL from PLATFORM\r\n if (reportType === 'authnReport' &&\r\n this.configuration[platformId].configuration.default &&\r\n this.configuration[platformId].configuration.default.authn_ttl) {\r\n authnTTLPlatform = this.processTTL(this.configuration[platformId].configuration.default.authn_ttl);\r\n if (platformName === \"REST\") {\r\n authnTTLMap['mobileOthers'] = authnTTLPlatform;\r\n authnTTLMap['tvcdOthers'] = authnTTLPlatform;\r\n }\r\n else {\r\n authnTTLMap[platformName] = authnTTLPlatform;\r\n }\r\n }\r\n // Compute AUTHZ_TLL from PLATFORM\r\n if (reportType === 'authzReport' &&\r\n this.configuration[platformId].configuration.default &&\r\n this.configuration[platformId].configuration.default.authz_ttl) {\r\n authzTTLPlatform = this.processTTL(this.configuration[platformId].configuration.default.authz_ttl);\r\n if (platformName === \"REST\") {\r\n authzTTLMap['mobileOthers'] = authzTTLPlatform;\r\n authzTTLMap['tvcdOthers'] = authzTTLPlatform;\r\n }\r\n else {\r\n authzTTLMap[platformName] = authzTTLPlatform;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n stop_1 = false;\r\n //////////////////\r\n // INTEGRATION\r\n //////////////////\r\n if (!stop_1) {\r\n // Hope we will stop after INTEGRATION level\r\n stop_1 = true;\r\n authnTTLIntegration_1 = undefined;\r\n authzTTLIntegration_1 = undefined;\r\n // Compute AUTHN_TLL from INTEGRATION\r\n if (reportType === 'authnReport' &&\r\n integration.entityData.configuration.default &&\r\n integration.entityData.configuration.default.authn_ttl) {\r\n authnTTLIntegration_1 = this.processTTL(integration.entityData.configuration.default.authn_ttl);\r\n }\r\n // Compute AUTHZ_TLL from INTEGRATION\r\n if (reportType === 'authzReport' &&\r\n integration.entityData.configuration.default &&\r\n integration.entityData.configuration.default.authz_ttl) {\r\n authzTTLIntegration_1 = this.processTTL(integration.entityData.configuration.default.authz_ttl);\r\n }\r\n reportColumns.forEach(function (key) {\r\n if (reportType === 'authnReport' && authnTTLMap[key] === undefined && authnTTLIntegration_1 !== undefined) {\r\n authnTTLMap[key] = authnTTLIntegration_1;\r\n }\r\n if (reportType === 'authzReport' && authzTTLMap[key] === undefined && authzTTLIntegration_1 !== undefined) {\r\n authzTTLMap[key] = authzTTLIntegration_1;\r\n }\r\n if ((reportType === 'authnReport' && authnTTLMap[key] === undefined) ||\r\n (reportType === 'authzReport' && authzTTLMap[key] === undefined)) {\r\n // We need to keep on looking at ENDPOINT level\r\n stop_1 = false;\r\n }\r\n });\r\n //////////////////\r\n // ENDPOINT\r\n //////////////////\r\n if (!stop_1) {\r\n // Hope we will stop after ENDPOINT level\r\n stop_1 = true;\r\n authnTTLEndpoint_1 = undefined;\r\n authzTTLEndpoint_1 = undefined;\r\n authnEndpoint = this.configuration[integration.entityData.authenticationProviderConfiguration.split('@')[1]];\r\n authzEndpoint = this.configuration[integration.entityData.authorizationProviderConfiguration.split('@')[1]];\r\n // Compute AUTHN_TTL from ENDPOINT\r\n if (reportType === 'authnReport' &&\r\n authnEndpoint.configuration.default &&\r\n authnEndpoint.configuration.default.authn_ttl) {\r\n authnTTLEndpoint_1 = this.processTTL(authnEndpoint.configuration.default.authn_ttl);\r\n }\r\n // Compute AUTHZ_TTL from ENDPOINT\r\n if (reportType === 'authzReport' &&\r\n authzEndpoint.configuration.default &&\r\n authzEndpoint.configuration.default.authz_ttl) {\r\n authzTTLEndpoint_1 = this.processTTL(authzEndpoint.configuration.default.authz_ttl);\r\n }\r\n reportColumns.forEach(function (key) {\r\n if (reportType === 'authnReport' && authnTTLMap[key] === undefined && authnTTLEndpoint_1 !== undefined) {\r\n authnTTLMap[key] = authnTTLEndpoint_1;\r\n }\r\n if (reportType === 'authzReport' && authzTTLMap[key] === undefined && authzTTLEndpoint_1 !== undefined) {\r\n authzTTLMap[key] = authzTTLEndpoint_1;\r\n }\r\n if ((reportType === 'authnReport' && authnTTLMap[key] === undefined) ||\r\n (reportType === 'authzReport' && authzTTLMap[key] === undefined)) {\r\n // We need to keep on looking at MVPD level\r\n stop_1 = false;\r\n }\r\n });\r\n //////////////////\r\n // MVPD\r\n //////////////////\r\n if (!stop_1) {\r\n // MVPD is the last level\r\n stop_1 = true;\r\n authnTTLMvpd_1 = undefined;\r\n authzTTLMvpd_1 = undefined;\r\n mvpd = this.configuration[integration.entityData.owner.split('@')[1]];\r\n if (mvpd.configuration.default) {\r\n // Compute AUTHN_TTL from MVPD\r\n if (reportType === 'authnReport' && mvpd.configuration.default.authn_ttl) {\r\n authnTTLMvpd_1 = this.processTTL(mvpd.configuration.default.authn_ttl);\r\n }\r\n // Compute AUTHZ_TTL from MVPD\r\n if (reportType === 'authzReport' && mvpd.configuration.default.authz_ttl) {\r\n authzTTLMvpd_1 = this.processTTL(mvpd.configuration.default.authz_ttl);\r\n }\r\n }\r\n reportColumns.forEach(function (key) {\r\n if (reportType === 'authnReport' && authnTTLMap[key] === undefined && authnTTLMvpd_1 !== undefined) {\r\n authnTTLMap[key] = authnTTLMvpd_1;\r\n }\r\n if (reportType === 'authzReport' && authzTTLMap[key] === undefined && authzTTLMvpd_1 !== undefined) {\r\n authzTTLMap[key] = authzTTLMvpd_1;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n mvpdName = integration.entityData.owner.split(':')[1];\r\n owner = this.selectedMvpdsList.find(function (mvpd) { return mvpd.key === integration.entityData.owner.split('@')[1]; });\r\n mvpdName = (owner && owner.entityData.displayName) || mvpdName;\r\n serviceProviderName = integration.entityData.serviceProvider.split(':')[1];\r\n serviceProvider = this.selectedChannelsList.find(function (channel) { return channel.key === integration.entityData.serviceProvider.split('@')[1]; });\r\n serviceProviderName = (serviceProvider && serviceProvider.entityData.displayName) || serviceProviderName;\r\n // Return TTL report data\r\n reportData.push({\r\n serviceProvider: serviceProviderName,\r\n mvpd: mvpdName,\r\n authentication: authnTTLMap,\r\n authorization: authzTTLMap\r\n });\r\n _b.label = 6;\r\n case 6: return [3 /*break*/, 2];\r\n case 7: return [3 /*break*/, 14];\r\n case 8:\r\n e_1_1 = _b.sent();\r\n e_1 = { error: e_1_1 };\r\n return [3 /*break*/, 14];\r\n case 9:\r\n _b.trys.push([9, , 12, 13]);\r\n if (!(integrations_1_1 && !integrations_1_1.done && (_a = integrations_1.return))) return [3 /*break*/, 11];\r\n return [4 /*yield*/, _a.call(integrations_1)];\r\n case 10:\r\n _b.sent();\r\n _b.label = 11;\r\n case 11: return [3 /*break*/, 13];\r\n case 12:\r\n if (e_1) throw e_1.error;\r\n return [7 /*endfinally*/];\r\n case 13: return [7 /*endfinally*/];\r\n case 14:\r\n deferred.resolve(reportData);\r\n return [2 /*return*/, deferred.promise];\r\n }\r\n });\r\n });\r\n };\r\n ReportService.prototype.getSSOReportData = function (integrations) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deferred, ssoReportData, integrations_2, integrations_2_1, integration, mvpd, _a, mvpdBoardingStatus, configurationEnabled, channelSSO, e_2_1, e_2, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n deferred = this.$q.defer();\r\n ssoReportData = [];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 8, 9, 14]);\r\n integrations_2 = __asyncValues(integrations);\r\n _c.label = 2;\r\n case 2: return [4 /*yield*/, integrations_2.next()];\r\n case 3:\r\n if (!(integrations_2_1 = _c.sent(), !integrations_2_1.done)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, integrations_2_1.value];\r\n case 4:\r\n integration = _c.sent();\r\n mvpd = this.selectedMvpdsList.find(function (m) { return m.entityData.id === integration.entityData.owner.split(\":\")[1]; });\r\n return [4 /*yield*/, Promise.all([this.getBoardingStatus(mvpd), this.getConfigurationEnabled(integration)])];\r\n case 5:\r\n _a = _c.sent(), mvpdBoardingStatus = _a[0], configurationEnabled = _a[1];\r\n channelSSO = {\r\n serviceProvider: (this.selectedChannelsList.find(function (c) { return c.entityData.id === integration.entityData.serviceProvider.split(\":\")[1]; })).entityData.displayName,\r\n mvpd: mvpd.entityData.displayName\r\n };\r\n channelSSO[\"JS\"] = this.getSSOStatus(mvpdBoardingStatus.JS, configurationEnabled.JS);\r\n channelSSO[\"iOS\"] = this.getSSOStatus(mvpdBoardingStatus.iOS, configurationEnabled.iOS);\r\n channelSSO[\"Android\"] = this.getSSOStatus(mvpdBoardingStatus.Android, configurationEnabled.Android);\r\n channelSSO[\"mobileOthers\"] = this.getSSOStatus(mvpdBoardingStatus.mobileOthers, configurationEnabled.mobileOthers);\r\n channelSSO[\"roku\"] = this.getSSOStatus(mvpdBoardingStatus.roku, configurationEnabled.roku);\r\n channelSSO[\"fireTV\"] = this.getSSOStatus(mvpdBoardingStatus.fireTV, configurationEnabled.fireTV);\r\n channelSSO[\"tvOS\"] = this.getSSOStatus(mvpdBoardingStatus.tvOS, configurationEnabled.tvOS);\r\n channelSSO[\"tvcdOthers\"] = this.getSSOStatus(mvpdBoardingStatus.tvcdOthers, configurationEnabled.tvcdOthers);\r\n channelSSO[\"unknown\"] = this.getSSOStatus(mvpdBoardingStatus.unknown, configurationEnabled.unknown);\r\n ssoReportData.push(channelSSO);\r\n _c.label = 6;\r\n case 6: return [3 /*break*/, 2];\r\n case 7: return [3 /*break*/, 14];\r\n case 8:\r\n e_2_1 = _c.sent();\r\n e_2 = { error: e_2_1 };\r\n return [3 /*break*/, 14];\r\n case 9:\r\n _c.trys.push([9, , 12, 13]);\r\n if (!(integrations_2_1 && !integrations_2_1.done && (_b = integrations_2.return))) return [3 /*break*/, 11];\r\n return [4 /*yield*/, _b.call(integrations_2)];\r\n case 10:\r\n _c.sent();\r\n _c.label = 11;\r\n case 11: return [3 /*break*/, 13];\r\n case 12:\r\n if (e_2) throw e_2.error;\r\n return [7 /*endfinally*/];\r\n case 13: return [7 /*endfinally*/];\r\n case 14:\r\n deferred.resolve(ssoReportData);\r\n return [2 /*return*/, deferred.promise];\r\n }\r\n });\r\n });\r\n };\r\n ReportService.prototype.getConfigurationEnabled = function (integration) {\r\n var deferred = this.$q.defer();\r\n var data = {\r\n channelName: (integration.entityData.serviceProvider).split(\":\")[1],\r\n mvpdName: (integration.entityData.owner).split(\":\")[1],\r\n JS: true,\r\n iOS: false,\r\n Android: false,\r\n mobileOthers: false,\r\n roku: false,\r\n fireTV: false,\r\n tvOS: false,\r\n tvcdOthers: false,\r\n unknown: true,\r\n };\r\n if (\"authPerAggregator\" in integration.entityData.clientData) {\r\n data[\"JS\"] = !integration.entityData.clientData.authPerAggregator;\r\n data[\"unknown\"] = !integration.entityData.clientData.authPerAggregator;\r\n }\r\n if (Object.keys(integration.entityData.platformConfigurations).length !== 0) {\r\n this.BulkService.getBulk(_.values(integration.entityData.platformConfigurations)).then(function (response) {\r\n _.each(response.data, function (config) {\r\n var platformName = (config.entityData.platform).split(\":\")[1];\r\n if (platformName === \"roku\") {\r\n data[\"roku\"] = config.entityData.enabledPlatformServices;\r\n }\r\n else if (platformName === \"fireTV\") {\r\n data[\"fireTV\"] = config.entityData.enabledPlatformServices;\r\n }\r\n else if (platformName === \"iOS\") {\r\n data[\"iOS\"] = config.entityData.enabledPlatformServices;\r\n }\r\n else if (platformName === \"tvOS\") {\r\n data[\"tvOS\"] = config.entityData.enabledPlatformServices;\r\n }\r\n else if (platformName === \"Android\") {\r\n data[\"Android\"] = config.entityData.enabledPlatformServices;\r\n }\r\n });\r\n }).finally(function () {\r\n deferred.resolve(data);\r\n });\r\n }\r\n else {\r\n deferred.resolve(data);\r\n }\r\n return deferred.promise;\r\n };\r\n ReportService.prototype.getSSOStatus = function (ssoType, configurationEnabled) {\r\n if (ssoType === \"SUPPORTED\" && configurationEnabled === true)\r\n return \"SSO Enabled\";\r\n else if (ssoType === \"SUPPORTED\" && configurationEnabled === false)\r\n return \"SSO Disabled\";\r\n else if (ssoType === \"UNSUPPORTED\" && configurationEnabled === true)\r\n return \"SSO Uncertain\";\r\n else if (ssoType === \"UNSUPPORTED\" && configurationEnabled === false)\r\n return \"SSO Disabled\";\r\n else if (ssoType === \"PICKER\" && configurationEnabled === true)\r\n return \"SSO Uncertain\";\r\n else if (ssoType === \"PICKER\" && configurationEnabled === false)\r\n return \"SSO Disabled\";\r\n };\r\n ReportService.prototype.getBoardingStatus = function (mvpd) {\r\n var deferred = this.$q.defer();\r\n var mvpdBoardingStatus = {\r\n id: mvpd.entityData.id,\r\n JS: \"UNSUPPORTED\",\r\n iOS: \"UNSUPPORTED\",\r\n Android: \"UNSUPPORTED\",\r\n mobileOthers: \"UNSUPPORTED\",\r\n roku: \"UNSUPPORTED\",\r\n fireTV: \"UNSUPPORTED\",\r\n tvOS: \"UNSUPPORTED\",\r\n tvcdOthers: \"UNSUPPORTED\",\r\n unknown: \"UNSUPPORTED\",\r\n };\r\n var platformSettings = mvpd.entityData.platformSettings;\r\n this.BulkService.getBulk(platformSettings).then(function (response) {\r\n _.each(response.data, function (config) {\r\n if (config.entityData.boardingStatus === \"NOT_SUPPORTED\") {\r\n config.entityData.boardingStatus = \"UNSUPPORTED\";\r\n }\r\n var platforms = (config.entityData.id).split(\"_\");\r\n if (platforms.indexOf(\"Amazon\") !== -1) {\r\n mvpdBoardingStatus[\"fireTV\"] = config.entityData.boardingStatus;\r\n }\r\n if (platforms.indexOf(\"Apple\") !== -1 || platforms.indexOf(\"iOS\") !== -1) {\r\n mvpdBoardingStatus[\"iOS\"] = config.entityData.boardingStatus;\r\n }\r\n if (platforms.indexOf(\"Apple\") !== -1 || platforms.indexOf(\"tvOS\") !== -1) {\r\n mvpdBoardingStatus[\"tvOS\"] = config.entityData.boardingStatus;\r\n }\r\n });\r\n }).finally(function () {\r\n deferred.resolve(mvpdBoardingStatus);\r\n });\r\n return deferred.promise;\r\n };\r\n ReportService.prototype.getDownloadData = function (integrationList) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var self;\r\n return __generator(this, function (_a) {\r\n self = this;\r\n return [2 /*return*/, this.$q(function (resolve) {\r\n var reportData;\r\n if (self.selectedReport.id === 'authnReport' || self.selectedReport.id === 'authzReport') {\r\n self.getTTLReportData(integrationList, self.selectedReport.id).then(function (response) {\r\n reportData = response;\r\n }).then(function () {\r\n resolve({\r\n data: {\r\n entities: reportData,\r\n count: self.finalData.length\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n self.getSSOReportData(integrationList).then(function (response) {\r\n reportData = response;\r\n }).then(function () {\r\n resolve({\r\n data: {\r\n entities: reportData,\r\n count: self.finalData.length\r\n }\r\n });\r\n });\r\n }\r\n })];\r\n });\r\n });\r\n };\r\n ReportService.prototype.downloadFile = function (data) {\r\n var csvData = this.ConvertToCSV(data);\r\n var a = document.createElement(\"a\");\r\n a.setAttribute('style', 'display:none;');\r\n document.body.appendChild(a);\r\n var blob = new Blob([csvData], { type: 'text/csv' });\r\n var url = window.URL.createObjectURL(blob);\r\n a.href = url;\r\n a.download = 'Report.csv';\r\n a.click();\r\n };\r\n ReportService.prototype.prepareDownloadReport = function (items, currentState, States) {\r\n var self = this;\r\n var deferred = this.$q.defer();\r\n var downloadData = [];\r\n items.entities.forEach(function (item) {\r\n var data = {};\r\n data[\"CHANNEL\"] = item.serviceProvider;\r\n data[\"MVPD\"] = item.mvpd;\r\n if (self.selectedReport.id === 'authnReport' || self.selectedReport.id === 'authzReport') {\r\n item = (currentState === States.ReportAuthnData.name) ? item.authentication : item.authorization;\r\n }\r\n data[\"BROWSERS\"] = item.JS || \"N/A\";\r\n data[\"MOBILE: IOS\"] = item.iOS || \"N/A\";\r\n data[\"MOBILE: ANDROID\"] = item.Android || \"N/A\";\r\n data[\"MOBILE: OTHERS\"] = item.mobileOthers || \"N/A\";\r\n data[\"TVCD: ROKU\"] = item.roku || \"N/A\";\r\n data[\"TVCD: FIRETV\"] = item.fireTV || \"N/A\";\r\n data[\"TVCD: APPLETV\"] = item.tvOS || \"N/A\";\r\n data[\"TVCD: OTHERS\"] = item.tvcdOthers || \"N/A\";\r\n data[\"PLATFORM: UNKNOWN\"] = item.unknown || \"N/A\";\r\n downloadData.push(data);\r\n });\r\n deferred.resolve(downloadData);\r\n return deferred.promise;\r\n };\r\n /**\r\n * @name module:ui.ReportUtils#ConvertToCSV\r\n * @method\r\n * @param {Object} objArray Json to be exported to CSV\r\n * @description Utility method for converting json to CSV {@link module:ui.ReportUtils}\r\n */\r\n ReportService.prototype.ConvertToCSV = function (objArray) {\r\n var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;\r\n var str = '';\r\n var row = \"\";\r\n for (var index in objArray[0]) {\r\n // Now convert each value to string and comma-separated\r\n if (!(index == '$$hashKey')) {\r\n row += index + ',';\r\n }\r\n }\r\n row = row.slice(0, -1);\r\n //append Label row with line break\r\n str += row + '\\r\\n';\r\n for (var i = 0; i < array.length; i++) {\r\n var line = '';\r\n for (var index in array[i]) {\r\n if (line != '') {\r\n line += ',';\r\n }\r\n if (!(index == '$$hashKey')) {\r\n line += array[i][index];\r\n }\r\n }\r\n line = line + ' ';\r\n line = line.slice(0, -1);\r\n str += line + '\\r\\n';\r\n }\r\n return str;\r\n };\r\n return ReportService;\r\n}());\r\nexports.ReportService = ReportService;\r\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar IntegrationEndpoint_1 = __webpack_require__(177);\r\nvar IntegrationItem_1 = __webpack_require__(178);\r\nvar IntegrationItemBasic_1 = __webpack_require__(179);\r\nvar IntegrationList_1 = __webpack_require__(180);\r\nvar IntegrationSettings_1 = __webpack_require__(181);\r\nvar NewIntegration_1 = __webpack_require__(182);\r\nvar Tabs_1 = __webpack_require__(3);\r\nvar IntegrationModule = (function () {\r\n function IntegrationModule() {\r\n this.ngRef.constant('IntegrationStatusChange', {\r\n ENABLE: \"By enabling this integration you will allow the users of this channel to see the current MVPD in their picker and to authenticate with it.\",\r\n DISABLE: \"Are you sure you want to disable this integration? If disabled, the users of current channel won't be able to see the current MVPD in the picker, and current authenticated users won't be able to use the integration anymore!\"\r\n });\r\n this.ngRef.controller('IntegrationEndpointCtrl', IntegrationEndpoint_1.IntegrationEndpointCtrl);\r\n this.ngRef.controller('IntegrationItemCtrl', IntegrationItem_1.IntegrationItemCtrl);\r\n this.ngRef.controller('IntegrationItemBasicCtrl', IntegrationItemBasic_1.IntegrationItemBasicCtrl);\r\n this.ngRef.controller('IntegrationListCtrl', IntegrationList_1.IntegrationListCtrl);\r\n this.ngRef.controller('IntegrationSettingsCtrl', IntegrationSettings_1.IntegrationSettingsCtrl);\r\n this.ngRef.controller('NewIntegrationCtrl', NewIntegration_1.NewIntegrationCtrl);\r\n }\r\n IntegrationModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n var basicView = {\r\n template: __webpack_require__(183),\r\n controller: IntegrationItemBasic_1.IntegrationItemBasicCtrl,\r\n resolve: {\r\n endpointsData: [\"data\", \"BulkService\", function (data, BulkService) {\r\n \"ngInject\";\r\n var endpointsData = {};\r\n var authnEndpointKey = data.entityData[\"authenticationProviderConfiguration\"];\r\n var authzEndpointKey = data.entityData[\"authorizationProviderConfiguration\"];\r\n var logoutEndpointKey = data.entityData[\"logoutProviderConfiguration\"];\r\n return BulkService.getBulk([authnEndpointKey, authzEndpointKey, logoutEndpointKey]).then(function (response) {\r\n endpointsData[\"authn\"] = response.data.filter(function (endpoint) {\r\n return endpoint.key.indexOf(\"AuthenticationProviderConfiguration\") !== -1;\r\n })[0];\r\n endpointsData[\"authz\"] = response.data.filter(function (endpoint) {\r\n return endpoint.key.indexOf(\"AuthorizationProviderConfiguration\") !== -1;\r\n })[0];\r\n endpointsData[\"logout\"] = response.data.filter(function (endpoint) {\r\n return endpoint.key.indexOf(\"LogoutProviderConfiguration\") !== -1;\r\n })[0];\r\n return endpointsData;\r\n });\r\n }],\r\n manglerList: [\"ManglerService\", function (ManglerService) {\r\n \"ngInject\";\r\n return ManglerService.getManglerList().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n };\r\n $stateProvider.state(States.Integration.name, {\r\n abstract: States.Integration.abstract,\r\n url: States.Integration.url\r\n });\r\n $stateProvider.state(States.IntegrationList.name, {\r\n abstract: States.IntegrationList.abstract,\r\n url: States.IntegrationList.url,\r\n ncyBreadcrumb: {\r\n label: States.IntegrationList.displayName\r\n },\r\n onEnter: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = true;\r\n }],\r\n onExit: [\"$rootScope\", function ($rootScope) {\r\n $rootScope.searchActive = false;\r\n }],\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(184),\r\n controller: IntegrationList_1.IntegrationListCtrl,\r\n resolve: {\r\n integrationList: [\"IntegrationService\", function (IntegrationService) {\r\n return IntegrationService.getPage(1, 'serviceProvider.displayName,owner.displayName', 'ASC').then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n newIntegrations: [\"IntegrationService\", function (IntegrationService) {\r\n return IntegrationService.getNewList();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.IntegrationItem.name, {\r\n abstract: States.IntegrationItem.abstract,\r\n url: States.IntegrationItem.url,\r\n resolve: {\r\n data: [\"$stateParams\", \"IntegrationService\", \"ProgrammerService\", function ($stateParams, IntegrationService, ProgrammerService) {\r\n return IntegrationService.getItem($stateParams.integrationId).then(function (response) {\r\n var serviceProvider = response.data.entityData.serviceProvider;\r\n var programmer = response.data.related[serviceProvider].entityData.programmer;\r\n var programmerId = programmer.replace(\"@Programmer:\", \"\");\r\n return ProgrammerService.getItem(programmerId).then(function (programmerData) {\r\n response.data.related[programmer] = programmerData.data;\r\n return response.data;\r\n });\r\n });\r\n }],\r\n platforms: [\"PlatformService\", function (PlatformService) {\r\n return PlatformService.getAll().then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n manglerList: [\"ManglerService\", function (ManglerService) {\r\n return ManglerService.getManglerList().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n },\r\n views: {\r\n 'page@Base': {\r\n templateProvider: [\"UserService\", function (UserService) {\r\n return UserService.advancedWorkspaceEnabled() ?\r\n __webpack_require__(5) :\r\n __webpack_require__(185);\r\n }]\r\n },\r\n 'tabs@Base.Integration.Item': {\r\n template: __webpack_require__(6),\r\n controller: Tabs_1.TabsCtrl,\r\n resolve: {\r\n tabs: [\"States\", function (States) {\r\n return [\r\n {\r\n state: States.IntegrationItemData,\r\n id: 'integrationDataTab'\r\n },\r\n {\r\n state: States.IntegrationSettings,\r\n id: 'integrationSettingsTab'\r\n },\r\n {\r\n state: States.IntegrationEndpoint,\r\n displayName: 'Authentication Settings',\r\n highlightOn: 'authenticationProviderConfiguration',\r\n params: {\r\n endpointType: 'authenticationProviderConfiguration'\r\n },\r\n id: 'integrationAuthnEndpointTab'\r\n },\r\n {\r\n state: States.IntegrationEndpoint,\r\n displayName: 'Authorization Settings',\r\n highlightOn: 'authorizationProviderConfiguration',\r\n params: {\r\n endpointType: 'authorizationProviderConfiguration'\r\n },\r\n id: 'integrationAuthzEndpointTab'\r\n },\r\n {\r\n state: States.IntegrationEndpoint,\r\n displayName: 'Logout Settings',\r\n highlightOn: 'logoutProviderConfiguration',\r\n params: {\r\n endpointType: 'logoutProviderConfiguration'\r\n },\r\n id: 'integrationLogoutEndpointTab'\r\n }\r\n ];\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.IntegrationItemData.name, {\r\n abstract: States.IntegrationItemData.abstract,\r\n url: States.IntegrationItemData.url,\r\n ncyBreadcrumb: {\r\n label: '{{data.entityData.id | integrationParents:data}}',\r\n parent: States.IntegrationList.name\r\n },\r\n views: {\r\n 'tabContent@Base.Integration.Item': {\r\n template: __webpack_require__(186),\r\n controller: IntegrationItem_1.IntegrationItemCtrl\r\n },\r\n 'entityItemBasic@Base.Integration.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.IntegrationSettings.name, {\r\n abstract: States.IntegrationSettings.abstract,\r\n url: States.IntegrationSettings.url,\r\n ncyBreadcrumb: {\r\n label: 'Settings',\r\n parent: States.IntegrationItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Integration.Item': {\r\n template: __webpack_require__(187),\r\n controller: IntegrationSettings_1.IntegrationSettingsCtrl,\r\n resolve: {\r\n localConfigurationData: [\"LocalConfigurationService\", function (LocalConfigurationService) {\r\n return LocalConfigurationService.getLocalConfiguration().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'entityItemBasic@Base.Integration.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.IntegrationEndpoint.name, {\r\n abstract: States.IntegrationEndpoint.abstract,\r\n url: States.IntegrationEndpoint.url,\r\n params: {\r\n activeEndpointTab: 'settings'\r\n },\r\n ncyBreadcrumb: {\r\n label: '{{data.related[data.entityData[endpointType]].entityData.id | idToDisplayName:data.related[data.entityData[endpointType]].entityData}}',\r\n parent: States.IntegrationItemData.name\r\n },\r\n views: {\r\n 'tabContent@Base.Integration.Item': {\r\n template: __webpack_require__(188),\r\n controller: IntegrationEndpoint_1.IntegrationEndpointCtrl,\r\n resolve: {\r\n endpointType: [\"$stateParams\", function ($stateParams) {\r\n return $stateParams.endpointType;\r\n }],\r\n activeEndpointTab: [\"$stateParams\", function ($stateParams) {\r\n return $stateParams.activeEndpointTab;\r\n }],\r\n certificates: [\"endpointData\", \"CertificateService\", function (endpointData, CertificateService) {\r\n return CertificateService.parseCertificates(endpointData).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n endpointData: [\"data\", \"endpointType\", \"BulkService\", function (data, endpointType, BulkService) {\r\n var endpointFetchData = data.entityData[endpointType];\r\n return BulkService.getItem(endpointFetchData).then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n },\r\n 'endpointTabContent@Base.Integration.Item.Endpoint': {\r\n templateUrl: function (data) {\r\n return 'module/ui/template/endpoint/' + data.endpointType + '-' + data.activeEndpointTab + '.html';\r\n }\r\n },\r\n 'entityItemBasic@Base.Integration.Item': basicView\r\n }\r\n });\r\n $stateProvider.state(States.IntegrationNew.name, {\r\n abstract: States.IntegrationNew.abstract,\r\n url: States.IntegrationNew.url,\r\n ncyBreadcrumb: {\r\n label: States.IntegrationNew.displayName,\r\n parent: States.IntegrationList.name\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(189),\r\n controller: NewIntegration_1.NewIntegrationCtrl,\r\n resolve: {\r\n data: [\"IntegrationService\", function (IntegrationService) {\r\n return IntegrationService.getNewModel();\r\n }],\r\n manglerList: [\"ManglerService\", function (ManglerService) {\r\n return ManglerService.getManglerList().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n /* Add New States Above */\r\n }];\r\n IntegrationModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'integration',\r\n dependencies: [\r\n 'ui.bootstrap',\r\n 'ui.router',\r\n 'data',\r\n 'filters'\r\n ]\r\n })\r\n ], IntegrationModule);\r\n return IntegrationModule;\r\n}());\r\nexports.IntegrationModule = IntegrationModule;\r\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar TempPassService_1 = __webpack_require__(15);\r\nvar util_1 = __webpack_require__(14);\r\nvar IntegrationEndpointCtrl = (function () {\r\n IntegrationEndpointCtrl.$inject = [\"$scope\", \"$rootScope\", \"$state\", \"$filter\", \"data\", \"endpointType\", \"activeEndpointTab\", \"endpointData\", \"certificates\", \"States\", \"manglerList\", \"platforms\", \"DataCollectorService\", \"PlatformService\", \"UserService\", \"TooltipService\", \"ManglerUtil\", \"IntegrationStatusChange\"];\r\n function IntegrationEndpointCtrl($scope, $rootScope, $state, $filter, data, endpointType, activeEndpointTab, endpointData, certificates, States, manglerList, platforms, DataCollectorService, PlatformService, UserService, TooltipService, ManglerUtil, IntegrationStatusChange) {\r\n \"ngInject\";\r\n var type = '';\r\n var generateTabs = function (endpointType) {\r\n var result = [];\r\n switch (endpointType) {\r\n case 'authenticationProviderConfiguration':\r\n type = 'AuthN';\r\n break;\r\n case 'authorizationProviderConfiguration':\r\n type = 'AuthZ';\r\n break;\r\n case 'logoutProviderConfiguration':\r\n type = 'Logout';\r\n break;\r\n }\r\n result.push({\r\n name: type + ' General Settings',\r\n active: activeEndpointTab === 'settings',\r\n location: States.IntegrationEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'settings'\r\n },\r\n id: type + '_endpointSettingsTab'\r\n });\r\n result.push({\r\n name: type + ' Certificates',\r\n active: activeEndpointTab === 'certificates',\r\n location: States.IntegrationEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'certificates'\r\n },\r\n id: type + '_endpointCertificatesTab'\r\n });\r\n result.push({\r\n name: type + ' Dynamic Rules',\r\n active: activeEndpointTab === 'rules',\r\n location: States.IntegrationEndpoint.name,\r\n params: {\r\n endpointType: endpointType,\r\n activeEndpointTab: 'rules'\r\n },\r\n id: type + '_endpointDynamicRulesTab'\r\n });\r\n return result;\r\n };\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.data = data;\r\n $scope.hasMandatoryProperties = false;\r\n $scope.noToggle = function () {\r\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\r\n };\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\r\n });\r\n $scope.$watch('data.entityData.configuration.default', function (value, oldValue) {\r\n if (value !== oldValue) {\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\r\n });\r\n }\r\n }, true);\r\n $scope.manglerData = data;\r\n $scope.endpointType = endpointType;\r\n $scope.endpointData = endpointData;\r\n $scope.certificates = certificates;\r\n $scope.related = endpointData.related;\r\n $scope.tabs = generateTabs(endpointType);\r\n $scope.parseMetadata = function (metadata) {\r\n return $filter('metadata')(metadata, true);\r\n };\r\n $scope.noData = (endpointData.entityData.id.indexOf('null') !== -1);\r\n $scope.isSaml = (endpointData.entityData.id.indexOf('saml') !== -1);\r\n $scope.manglerList = manglerList;\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.inheritPath = endpointType + ':owner:serviceProvider';\r\n $scope.inheritTree = 'Integration:' + type + ' Endpoint:Mvpd:Channel';\r\n $scope.unregister = function () {\r\n };\r\n $scope.platforms = angular.copy(platforms);\r\n $scope.platforms.entities.unshift({\r\n entityData: {\r\n id: 'all',\r\n name: 'All Platforms'\r\n }\r\n });\r\n var pipelineStageList = endpointData.entityData.pipelineStageList;\r\n if (!util_1.isNullOrUndefined(pipelineStageList)) {\r\n $scope.tempPassConfig = new TempPassService_1.TempPassService().getTempPassMap(pipelineStageList.PIPELINE_AUTHORIZATION);\r\n }\r\n var platformConfig;\r\n for (var i = 0; i < $scope.data.related.platformConfigurations.length; i++) {\r\n var platform = $scope.data.related.platformConfigurations[i];\r\n platformConfig = platform;\r\n platformConfig.related = $scope.data.related;\r\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\r\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\r\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig.related['@' + $scope.data.key] = $scope.data;\r\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\r\n }\r\n $scope.selectedPlatform = 'all';\r\n $scope.selectPlatform = function (platformValue) {\r\n $scope.unregister();\r\n $scope.selectedPlatform = platformValue;\r\n if (platformValue === 'all') {\r\n $scope.platformData = null;\r\n }\r\n else {\r\n var platformConfig_1 = _.find($scope.data.related.platformConfigurations, { entityData: { platform: \"@Platform:\" + platformValue } });\r\n if (platformConfig_1) {\r\n $scope.platformData = platformConfig_1;\r\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\r\n }\r\n else {\r\n platformConfig_1 = PlatformService.getNewModel(platformValue, $scope.data);\r\n platformConfig_1.related = $scope.data.related;\r\n platformConfig_1.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig_1.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\r\n platformConfig_1.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\r\n platformConfig_1.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig_1.entityData['owner'] = $scope.data.entityData.owner;\r\n platformConfig_1.related['@' + $scope.data.key] = $scope.data;\r\n $scope.platformData = platformConfig_1;\r\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\r\n }\r\n }\r\n };\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n TooltipService.getTooltips().then(function (result) {\r\n // TODO: better separation when we will have separate controllers and templates for each endpoint type\r\n $scope.samlInfoTooltips = result.data.DOMAIN_MODELS.samlMetadataInfo;\r\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\r\n switch (endpointType) {\r\n case 'authenticationProviderConfiguration':\r\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authenticationProviderConfiguration;\r\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthenticationProviderConfiguration;\r\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthenticationProviderConfiguration;\r\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthenticationProviderConfiguration;\r\n $scope.authNAllTooltips = result.data.DOMAIN_MODELS.authNAllAuthenticationProviderConfiguration;\r\n break;\r\n case 'authorizationProviderConfiguration':\r\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authorizationProviderConfiguration;\r\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthorizationProviderConfiguration;\r\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthorizationProviderConfiguration;\r\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthorizationProviderConfiguration;\r\n $scope.restTooltips = result.data.DOMAIN_MODELS.restAuthorizationProviderConfiguration;\r\n $scope.soapTooltips = result.data.DOMAIN_MODELS.soapAuthorizationProviderConfiguration;\r\n $scope.authZAllTooltips = result.data.DOMAIN_MODELS.authZAllAuthorizationProviderConfiguration;\r\n $scope.preFlightTooltips = result.data.DOMAIN_MODELS.preFlightConfiguration;\r\n $scope.dosProtectionTooltips = result.data.DOMAIN_MODELS.dosProtectionConfiguration;\r\n $scope.tempPassTooltips = result.data.DOMAIN_MODELS.tempPassConfiguration;\r\n break;\r\n case 'logoutProviderConfiguration':\r\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlLogoutProviderConfiguration;\r\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2RedirectLogoutProviderConfiguration;\r\n break;\r\n }\r\n $scope.getEnabledToggleTooltip = function () {\r\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\r\n return $scope.tooltips['disabled.noRights.toggle'];\r\n }\r\n if ($scope.noToggle()) {\r\n return $scope.tooltips['disabled.missingProperties.toggle'];\r\n }\r\n else {\r\n return $scope.tooltips['enabled.toggle'];\r\n }\r\n };\r\n });\r\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\r\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\r\n }\r\n return IntegrationEndpointCtrl;\r\n}());\r\nexports.IntegrationEndpointCtrl = IntegrationEndpointCtrl;\r\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar IntegrationItemCtrl = (function () {\r\n IntegrationItemCtrl.$inject = [\"$scope\", \"$rootScope\", \"data\", \"manglerList\", \"ManglerUtil\", \"TooltipService\", \"DataCollectorService\", \"IntegrationStatusChange\"];\r\n function IntegrationItemCtrl($scope, $rootScope, data, manglerList, ManglerUtil, TooltipService, DataCollectorService, IntegrationStatusChange) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.hasMandatoryProperties = false;\r\n $scope.noToggle = function () {\r\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\r\n };\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\r\n });\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\r\n $scope.getEnabledToggleTooltip = function () {\r\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\r\n return $scope.tooltips['disabled.noRights.toggle'];\r\n }\r\n if ($scope.noToggle()) {\r\n return $scope.tooltips['disabled.missingProperties.toggle'];\r\n }\r\n else {\r\n return $scope.tooltips['enabled.toggle'];\r\n }\r\n };\r\n });\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\r\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\r\n }\r\n return IntegrationItemCtrl;\r\n}());\r\nexports.IntegrationItemCtrl = IntegrationItemCtrl;\r\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar _ = __webpack_require__(1);\r\nvar IntegrationItemBasicCtrl = (function () {\r\n IntegrationItemBasicCtrl.$inject = [\"$scope\", \"$rootScope\", \"$state\", \"States\", \"manglerList\", \"platforms\", \"endpointsData\", \"data\", \"UserService\", \"PlatformService\", \"DataCollectorService\", \"ManglerUtil\", \"TooltipService\", \"IntegrationStatusChange\"];\r\n function IntegrationItemBasicCtrl($scope, $rootScope, $state, States, manglerList, platforms, endpointsData, data, UserService, PlatformService, DataCollectorService, ManglerUtil, TooltipService, IntegrationStatusChange) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.basicWorkspaceEnabled = true;\r\n $scope.manglerList = manglerList;\r\n $scope.clientDataAllowedList = ['iFrameRequired', 'iFrameWidth', 'iFrameHeight'];\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n $scope.platformData = data;\r\n $scope.endpointsData = endpointsData;\r\n $scope.platforms = angular.copy(platforms);\r\n $scope.hasMandatoryProperties = false;\r\n $scope.hasAuthnMangler = false;\r\n $scope.hasAuthzMangler = false;\r\n $scope.noToggle = function () {\r\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\r\n };\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\r\n var propertyList = ManglerUtil.getPropertyList();\r\n $scope.hasAuthnMangler = propertyList['authn_ttl'] ? true : false;\r\n $scope.hasAuthzMangler = propertyList['authz_ttl'] ? true : false;\r\n });\r\n if ($scope.platforms) {\r\n $scope.platforms.entities.unshift({\r\n entityData: {\r\n id: 'all',\r\n name: 'All Platforms'\r\n }\r\n });\r\n $scope.selectedPlatformId = 'all';\r\n }\r\n $scope.unregister = function () {\r\n };\r\n $scope.booleanSelectValues = [\r\n { value: true, label: 'Yes' },\r\n { value: false, label: 'No' }\r\n ];\r\n $scope.isDefined = function (propertyName) {\r\n return angular.isDefined($scope.platformData.entityData[propertyName]);\r\n };\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n function resetInheritancePath() {\r\n $scope.authnInheritPath = 'authenticationProviderConfiguration:owner:serviceProvider';\r\n $scope.authzInheritPath = 'authorizationProviderConfiguration:owner:serviceProvider';\r\n $scope.authnInheritTree = 'Integration:AuthN Endpoint:Mvpd:Channel';\r\n $scope.authzInheritTree = 'Integration:AuthZ Endpoint:Mvpd:Channel';\r\n }\r\n function addPlatformToInheritancePath() {\r\n $scope.authnInheritPath = 'integrationConfiguration:authenticationProviderConfiguration:owner:serviceProvider';\r\n $scope.authzInheritPath = 'integrationConfiguration:authorizationProviderConfiguration:owner:serviceProvider';\r\n $scope.authnInheritTree = 'Platform:Integration:AuthN Endpoint:Mvpd:Channel';\r\n $scope.authzInheritTree = 'Platform:Integration:AuthZ Endpoint:Mvpd:Channel';\r\n }\r\n resetInheritancePath();\r\n $scope.selectedPlatformId = 'all';\r\n $scope.selectPlatform = function (platformValue) {\r\n $scope.unregister();\r\n $scope.selectedPlatformId = platformValue;\r\n if (platformValue === 'all') {\r\n $scope.platformData = data;\r\n resetInheritancePath();\r\n }\r\n else {\r\n var platformConfig = void 0;\r\n for (var i = 0; i < $scope.data.related.platformConfigurations.length; i++) {\r\n var platform = $scope.data.related.platformConfigurations[i];\r\n if (platform.entityData.platform === '@Platform:' + platformValue) {\r\n platformConfig = platform;\r\n platformConfig.related = $scope.data.related;\r\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\r\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\r\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\r\n platformConfig.related['@' + $scope.data.key] = $scope.data;\r\n }\r\n }\r\n if (platformConfig) {\r\n $scope.platformData = platformConfig;\r\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\r\n }\r\n else {\r\n platformConfig = PlatformService.getNewModel(platformValue, $scope.data);\r\n platformConfig.related = $scope.data.related;\r\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\r\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\r\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\r\n platformConfig.related['@' + $scope.data.key] = $scope.data;\r\n $scope.platformData = platformConfig;\r\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\r\n }\r\n addPlatformToInheritancePath();\r\n }\r\n };\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\r\n $scope.authNTooltips = result.data.DOMAIN_MODELS.authenticationProviderConfiguration;\r\n $scope.authZTooltips = result.data.DOMAIN_MODELS.authorizationProviderConfiguration;\r\n $scope.getEnabledToggleTooltip = function () {\r\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\r\n return $scope.tooltips['disabled.noRights.toggle'];\r\n }\r\n if ($scope.noToggle()) {\r\n return $scope.tooltips['disabled.missingProperties.toggle'];\r\n }\r\n else {\r\n return $scope.tooltips['enabled.toggle'];\r\n }\r\n };\r\n $scope.getTooltip = function (property) {\r\n if (!$scope.tooltips[property + '.field']) {\r\n return;\r\n }\r\n return $scope.tooltips[property + '.field'];\r\n };\r\n });\r\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\r\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\r\n }\r\n return IntegrationItemBasicCtrl;\r\n}());\r\nexports.IntegrationItemBasicCtrl = IntegrationItemBasicCtrl;\r\n\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar IntegrationListCtrl = (function () {\r\n IntegrationListCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"States\", \"Config\", \"integrationList\", \"newIntegrations\", \"IntegrationService\"];\r\n function IntegrationListCtrl($rootScope, $scope, $state, States, Config, integrationList, newIntegrations, IntegrationService) {\r\n \"ngInject\";\r\n $scope.columns = [\r\n {\r\n name: 'Name',\r\n sortable: true,\r\n sorted: true,\r\n sortAsc: true,\r\n sortField: 'serviceProvider.displayName,owner.displayName',\r\n class: 'col-md-4'\r\n },\r\n {\r\n name: 'Channel',\r\n sortable: true,\r\n sortField: 'serviceProvider.displayName',\r\n class: 'col-md-4'\r\n },\r\n {\r\n name: 'Mvpd',\r\n sortable: true,\r\n sortField: 'owner.displayName',\r\n class: 'col-md-4'\r\n },\r\n {\r\n name: 'Enabled',\r\n sortable: false,\r\n class: 'action integration'\r\n }\r\n ];\r\n $scope.data = integrationList ? integrationList : null;\r\n if ($scope.data === null) {\r\n $rootScope.searchActive = false;\r\n }\r\n $scope.newIntegrations = newIntegrations;\r\n $scope.pageSize = Config.PAGE_SIZE;\r\n $scope.service = IntegrationService;\r\n $scope.onItemClick = function (item) {\r\n $state.go(States.IntegrationItemData.name, {\r\n integrationId: item.entityData.id\r\n });\r\n };\r\n $scope.addNewIntegration = function () {\r\n $state.go(States.IntegrationNew.name);\r\n };\r\n $scope.getEnabled = function (integration) {\r\n return integration.entityData.enabled ? 'Yes' : 'No';\r\n };\r\n $scope.$on(\"onPageChange\", function () {\r\n var tableListElement = document.getElementById('table-list');\r\n $(window).scrollTop(window.scrollY - tableListElement.offsetHeight);\r\n });\r\n }\r\n return IntegrationListCtrl;\r\n}());\r\nexports.IntegrationListCtrl = IntegrationListCtrl;\r\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar _ = __webpack_require__(1);\r\nvar IntegrationSettingsCtrl = (function () {\r\n IntegrationSettingsCtrl.$inject = [\"$scope\", \"$rootScope\", \"data\", \"manglerList\", \"DataCollectorService\", \"PlatformService\", \"platforms\", \"UserService\", \"$filter\", \"ManglerUtil\", \"TooltipService\", \"localConfigurationData\", \"IntegrationStatusChange\"];\r\n function IntegrationSettingsCtrl($scope, $rootScope, data, manglerList, DataCollectorService, PlatformService, platforms, UserService, $filter, ManglerUtil, TooltipService, localConfigurationData, IntegrationStatusChange) {\r\n \"ngInject\";\r\n $scope.data = data;\r\n $scope.localConf = localConfigurationData;\r\n $scope.hasMandatoryProperties = false;\r\n $scope.noToggle = function () {\r\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\r\n };\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\r\n });\r\n $scope.unregister = function () {\r\n };\r\n $scope.platforms = angular.copy(platforms);\r\n $scope.booleanSelectValues = [\r\n { value: true, label: 'Yes' },\r\n { value: false, label: 'No' }\r\n ];\r\n $scope.platforms.entities.unshift({\r\n entityData: {\r\n id: 'all',\r\n name: 'All Platforms'\r\n }\r\n });\r\n $scope.isDefined = function (propertyName) {\r\n return angular.isDefined($scope.platformData.entityData[propertyName]);\r\n };\r\n $scope.selectedPlatform = 'all';\r\n $scope.selectPlatform = function (platformValue) {\r\n $scope.unregister();\r\n $scope.selectedPlatform = platformValue;\r\n if (platformValue === 'all') {\r\n $scope.platformData = null;\r\n }\r\n else {\r\n var platformConfig = void 0;\r\n for (var i = 0; i < $scope.data.related.platformConfigurations.length; i++) {\r\n var platform = $scope.data.related.platformConfigurations[i];\r\n if (platform.entityData.platform === '@Platform:' + platformValue) {\r\n platformConfig = platform;\r\n platformConfig.related = $scope.data.related;\r\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\r\n platformConfig.related['@' + $scope.data.key] = $scope.data;\r\n }\r\n }\r\n if (platformConfig) {\r\n $scope.platformData = platformConfig;\r\n $scope.unregister();\r\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\r\n }\r\n else {\r\n platformConfig = PlatformService.getNewModel(platformValue, $scope.data);\r\n platformConfig.related = $scope.data.related;\r\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\r\n platformConfig.related['@' + $scope.data.key] = $scope.data;\r\n $scope.platformData = platformConfig;\r\n $scope.unregister();\r\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\r\n }\r\n }\r\n };\r\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\r\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\r\n $scope.getEnabledToggleTooltip = function () {\r\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\r\n return $scope.tooltips['disabled.noRights.toggle'];\r\n }\r\n if ($scope.noToggle()) {\r\n return $scope.tooltips['disabled.missingProperties.toggle'];\r\n }\r\n else {\r\n return $scope.tooltips['enabled.toggle'];\r\n }\r\n };\r\n $scope.getTooltip = function (property) {\r\n if (!$scope.tooltips[property + '.field']) {\r\n return;\r\n }\r\n return $scope.tooltips[property + '.field'];\r\n };\r\n });\r\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\r\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\r\n }\r\n return IntegrationSettingsCtrl;\r\n}());\r\nexports.IntegrationSettingsCtrl = IntegrationSettingsCtrl;\r\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar NewIntegrationCtrl = (function () {\r\n NewIntegrationCtrl.$inject = [\"$scope\", \"$rootScope\", \"$q\", \"$state\", \"$http\", \"$uibModal\", \"States\", \"data\", \"manglerList\", \"Config\", \"DataCollectorService\", \"ChannelService\", \"MvpdService\", \"MvpdProxyService\", \"UserService\", \"ManglerUtil\", \"TooltipService\", \"BulkService\", \"PlatformService\"];\r\n function NewIntegrationCtrl($scope, $rootScope, $q, $state, $http, $uibModal, States, data, manglerList, Config, DataCollectorService, ChannelService, MvpdService, MvpdProxyService, UserService, ManglerUtil, TooltipService, BulkService, PlatformService) {\r\n \"ngInject\";\r\n $scope.channelId = '';\r\n $scope.mvpdId = '';\r\n $scope.data = data;\r\n $scope.mandatoryProperties = [];\r\n $scope.hasMandatory = false;\r\n $scope.updateId = function () {\r\n $scope.data.entityData.id = $scope.channelId + '_' + $scope.mvpdId;\r\n if ($scope.selectedChannel && $scope.selectedChannel.entityData && $scope.selectedChannel.entityData.integrations) {\r\n var integration = $scope.selectedChannel.entityData.integrations[$scope.data.entityData.owner];\r\n $scope.editOnly = !!integration;\r\n }\r\n else {\r\n $scope.editOnly = false;\r\n }\r\n if ($scope.data.entityData.owner && $scope.data.entityData.serviceProvider && !$scope.editOnly) {\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.mandatoryProperties = data;\r\n $scope.hasMandatory = _.keys(data).length > 0;\r\n });\r\n }\r\n else {\r\n $scope.mandatoryProperties = [];\r\n $scope.hasMandatory = false;\r\n }\r\n };\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.getChannels = function (searchTerm) {\r\n return ChannelService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\r\n if (response.data.resilienceState) {\r\n return ChannelService.getAll().then(function (response) {\r\n return response.data.entities;\r\n });\r\n }\r\n return response.data.entities;\r\n });\r\n };\r\n $scope.getIdp = function (searchTerm) {\r\n var defer = $q.defer();\r\n $q.all([MvpdService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\r\n if (response.data.resilienceState) {\r\n return MvpdService.getAll().then(function (response) {\r\n return response.data.entities;\r\n });\r\n }\r\n return response.data.entities;\r\n }), MvpdProxyService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\r\n if (response.data.resilienceState) {\r\n return MvpdProxyService.getAll().then(function (response) {\r\n return response.data.entities;\r\n });\r\n }\r\n return response.data.entities;\r\n })]).then(function (response) {\r\n var result = _.union([], response[0], response[1]);\r\n defer.resolve(result);\r\n });\r\n return defer.promise;\r\n };\r\n $scope.$watch('selectedChannel', function (channel, oldChannel) {\r\n if (!channel || !channel.key) {\r\n delete $scope.data.entityData.serviceProvider;\r\n $scope.channelId = '';\r\n $scope.updateId();\r\n }\r\n else if (channel !== oldChannel && channel.key) {\r\n $scope.data.entityData.serviceProvider = '@' + channel.key;\r\n $scope.channelId = channel.entityData.id;\r\n $scope.updateId();\r\n }\r\n });\r\n $scope.$watch('selectedMvpd', function (mvpd, oldMvpd) {\r\n $scope.onboardedPlatformsSettings = [];\r\n $scope.onboardedStatus = [];\r\n if (!mvpd || !mvpd.key) {\r\n delete $scope.data.entityData.owner;\r\n $scope.mvpdId = '';\r\n delete data.entityData.authenticationProviderConfiguration;\r\n delete data.entityData.authorizationProviderConfiguration;\r\n delete data.entityData.logoutProviderConfiguration;\r\n $scope.updateId();\r\n }\r\n else if (mvpd !== oldMvpd) {\r\n $scope.data.entityData.owner = '@' + mvpd.key;\r\n $scope.mvpdId = mvpd.entityData.id;\r\n data.entityData.authenticationProviderConfiguration = mvpd.entityData.authenticationProviderConfigs[0];\r\n data.entityData.authorizationProviderConfiguration = mvpd.entityData.authorizationProviderConfigs[0];\r\n data.entityData.logoutProviderConfiguration = mvpd.entityData.logoutProviderConfigs[0];\r\n $rootScope.loading = true;\r\n var onboardedPlatformsSettingsEndpoints_1 = [];\r\n $scope.onboardedPlatformsSettings = mvpd.entityData.platformSettings;\r\n for (var platform in mvpd.entityData.platformSettings) {\r\n if (mvpd.entityData.platformSettings.hasOwnProperty(platform)) {\r\n onboardedPlatformsSettingsEndpoints_1.push(mvpd.entityData.platformSettings[platform]);\r\n }\r\n }\r\n BulkService.getBulk(_.union(mvpd.entityData.authenticationProviderConfigs, mvpd.entityData.authorizationProviderConfigs, mvpd.entityData.logoutProviderConfigs, onboardedPlatformsSettingsEndpoints_1)).then(function (response) {\r\n for (var i = 0; i < onboardedPlatformsSettingsEndpoints_1.length; i++) {\r\n for (var j = 0; j < response.data.length; j++) {\r\n if (onboardedPlatformsSettingsEndpoints_1[i] === '@' + response.data[j].key) {\r\n $scope.onboardedStatus[onboardedPlatformsSettingsEndpoints_1[i]] = response.data[j].entityData.boardingStatus;\r\n }\r\n }\r\n }\r\n mvpd.related = {};\r\n _.each(response.data, function (val) {\r\n mvpd.related['@' + val.key] = val;\r\n });\r\n $rootScope.loading = false;\r\n }).then(function () {\r\n $scope.updateId();\r\n });\r\n }\r\n });\r\n $scope.$watch('data.entityData.configuration.default', function (value, oldValue) {\r\n if (value !== oldValue) {\r\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\r\n $scope.mandatoryProperties = data;\r\n $scope.hasMandatory = _.keys(data).length > 0;\r\n $scope.data.entityData.enabled = !$scope.hasMandatory;\r\n });\r\n }\r\n }, true);\r\n $scope.integrationDefined = function () {\r\n return $scope.channelAndMvpdDefined() && !$scope.hasMandatory ? \"\" : \"false\";\r\n };\r\n $scope.channelAndMvpdDefined = function () {\r\n return !!(data.entityData.serviceProvider &&\r\n data.entityData.owner &&\r\n data.entityData.authenticationProviderConfiguration &&\r\n data.entityData.authorizationProviderConfiguration &&\r\n data.entityData.logoutProviderConfiguration &&\r\n data.entityData.id === $scope.channelId + '_' + $scope.mvpdId);\r\n };\r\n $scope.createPlatformConfig = function (platformId) {\r\n $scope.data.related.platformConfigurations = [];\r\n var platformConfig = PlatformService.getNewModel(platformId, $scope.data);\r\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\r\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\r\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\r\n platformConfig.entityData.enabledPlatformServices = true;\r\n $scope.data.related.platformConfigurations.push(platformConfig);\r\n $scope.data.related[\"@PlatformConfiguration:\" + $scope.data.entityData.id + \"_\" + platformId] = platformConfig;\r\n DataCollectorService.createEntity(platformConfig);\r\n $scope.data.entityData.platformConfigurations[\"@Platform:\" + platformId] = \"@PlatformConfiguration:\" + $scope.data.entityData.id + \"_\" + platformId;\r\n };\r\n var createIntegrationAndNavigate = function () {\r\n $scope.data.key = 'IntegrationConfiguration:' + $scope.data.entityData.id;\r\n for (var platform in $scope.onboardedPlatformsSettings) {\r\n if ($scope.onboardedPlatformsSettings.hasOwnProperty(platform)) {\r\n var platformId = platform.split(\":\")[1];\r\n var platformConfig = $scope.onboardedPlatformsSettings[platform];\r\n if ($scope.onboardedStatus[platformConfig] === \"SUPPORTED\") {\r\n $scope.createPlatformConfig(platformId);\r\n }\r\n }\r\n }\r\n if ($scope.data.entityData.enabled === null) {\r\n $scope.data.entityData.enabled = !$scope.hasMandatory;\r\n }\r\n DataCollectorService.createEntity($scope.data);\r\n if (!$scope.selectedChannel.entityData.integrations) {\r\n $scope.selectedChannel.entityData.integrations = {};\r\n }\r\n $scope.selectedChannel.entityData.integrations[$scope.data.entityData.owner] = '@' + $scope.data.key;\r\n DataCollectorService.updateEntity($scope.selectedChannel);\r\n $http.defaults.cache.put('/rest/api/entity/IntegrationConfiguration/' + $scope.data.entityData.id + '?configurationVersion=' + Config.configVersion, [200, $scope.data]);\r\n $state.go(States.IntegrationSettings.name, {\r\n integrationId: $scope.data.entityData.id\r\n });\r\n };\r\n $scope.createIntegration = function () {\r\n var integration = ($scope.selectedChannel.entityData.integrations) ? $scope.selectedChannel.entityData.integrations[$scope.data.entityData.owner] : null;\r\n if (integration) {\r\n $state.go(States.IntegrationSettings.name, {\r\n integrationId: integration.split(':')[1]\r\n });\r\n }\r\n else {\r\n if ($scope.hasMandatory) {\r\n $uibModal.open({\r\n templateUrl: 'mandatory-properties-modal.html',\r\n controller: [\"$scope\", \"$uibModalInstance\", \"data\", \"mandatoryProperties\", \"integrationDefined\", function ($scope, $uibModalInstance, data, mandatoryProperties, integrationDefined) {\r\n $scope.data = data;\r\n $scope.integrationDefined = integrationDefined;\r\n $scope.mandatoryProperties = mandatoryProperties;\r\n $scope.booleanSelectValues = [\r\n { value: false, label: 'No' },\r\n { value: true, label: 'Yes' }\r\n ];\r\n $scope.deleteProperty = function (key) {\r\n var property = data.entityData.configuration.default[key];\r\n if (!property || property.length === 0) {\r\n delete data.entityData.configuration.default[key];\r\n }\r\n };\r\n $scope.continue = function () {\r\n $uibModalInstance.close();\r\n };\r\n $scope.cancel = function () {\r\n data.entityData.configuration.default = {};\r\n $uibModalInstance.dismiss();\r\n };\r\n $scope.isFieldInvalid = function (property, manglerForm) {\r\n if (manglerForm['mangler-' + property]) {\r\n return manglerForm['mangler-' + property].$invalid && manglerForm['mangler-' + property].$dirty;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n $scope.mandatoryPropertiesValid = function (manglerForm) {\r\n return _.keys(manglerForm.$error).length > 0;\r\n };\r\n }],\r\n resolve: {\r\n data: function () {\r\n return $scope.data;\r\n },\r\n mandatoryProperties: function () {\r\n return $scope.mandatoryProperties;\r\n },\r\n integrationDefined: function () {\r\n return $scope.integrationDefined;\r\n }\r\n },\r\n backdrop: 'static'\r\n }).result.then(createIntegrationAndNavigate);\r\n }\r\n else {\r\n createIntegrationAndNavigate();\r\n }\r\n }\r\n };\r\n $scope.isValid = function () {\r\n if ($scope.data.entityData.serviceProvider === null) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n if (!UserService.hasRole('ROLE_CONSOLE_WRITE')) {\r\n $state.go(States.Dashboard.name);\r\n }\r\n TooltipService.getTooltips().then(function (result) {\r\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\r\n });\r\n $scope.getEnabledToggleTooltip = function () {\r\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\r\n return $scope.tooltips['disabled.noRights.toggle'];\r\n }\r\n if ($scope.noToggle()) {\r\n return $scope.tooltips['disabled.missingProperties.toggle'];\r\n }\r\n else {\r\n return $scope.tooltips['enabled.toggle'];\r\n }\r\n };\r\n }\r\n return NewIntegrationCtrl;\r\n}());\r\nexports.NewIntegrationCtrl = NewIntegrationCtrl;\r\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      No
      \";\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

      New Integrations

      Name Channel MVPD Enabled
      {{item.entityData.id}} {{item.related[item.entityData.serviceProvider].entityData.displayName}} {{item | squash: 'displayName':'integration'}} ID: {{item | squash: 'id':'integration'}}
      \";\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      \";\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      \";\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      No
      No
      \";\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

      This is a null or dummy endpoint. No data to display.


      \";\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      \";\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar CsrfTokenInterceptor_1 = __webpack_require__(191);\r\nvar AuthorizationInterceptor_1 = __webpack_require__(192);\r\nvar InputEscapeService_1 = __webpack_require__(193);\r\n/**\r\n * @module security\r\n * @requires ui.router\r\n * @description Application's security module. Handles CSRF token and authentication/authorization errors.\r\n */\r\nvar SecurityModule = (function () {\r\n function SecurityModule() {\r\n this.ngRef.service('InputEscapeService', InputEscapeService_1.InputEscapeService);\r\n }\r\n /**\r\n * @method config\r\n * @memberOf module:security\r\n * @param {Object} $httpProvider - Angular http provider\r\n * @description Adds {@link module:security.CsrfTokenInterceptor} to $http interceptor list and configures the 401 and 403 states.\r\n */\r\n SecurityModule.prototype.config = [\"$provide\", \"$httpProvider\", function ($provide, $httpProvider) {\r\n \"ngInject\";\r\n $provide.factory('CsrfTokenInterceptor', CsrfTokenInterceptor_1.CsrfTokenInterceptor.getInstance);\r\n $provide.factory('AuthorizationInterceptor', AuthorizationInterceptor_1.AuthorizationInterceptor.getInstance);\r\n $httpProvider.interceptors.push('CsrfTokenInterceptor');\r\n $httpProvider.interceptors.push('AuthorizationInterceptor');\r\n }];\r\n SecurityModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'security',\r\n dependencies: [\r\n 'ui.router',\r\n 'data'\r\n ]\r\n })\r\n ], SecurityModule);\r\n return SecurityModule;\r\n}());\r\nexports.SecurityModule = SecurityModule;\r\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class CsrfTokenInterceptor\r\n * @memberOf module:security\r\n * @description Adds 'X-CSRF-HEADER' request header for every server call.\r\n */\r\nvar CsrfTokenInterceptor = (function () {\r\n function CsrfTokenInterceptor() {\r\n var _this = this;\r\n /**\r\n * @memberOf module:security.CsrfTokenInterceptor\r\n * @param {String} token - token value\r\n * @description Set the token value\r\n */\r\n this.setToken = function (token) {\r\n _this.csrfToken = token;\r\n };\r\n /**\r\n * @memberOf module:security.CsrfTokenInterceptor\r\n * @returns {String} The token value\r\n * @description Returns the token value\r\n */\r\n this.getToken = function () {\r\n return _this.csrfToken;\r\n };\r\n this.request = function (config) {\r\n config.headers['X-CSRF-TOKEN'] = _this.csrfToken;\r\n return config;\r\n };\r\n /**\r\n * @name module:security.CsrfTokenInterceptor#CSRF_TOKEN_HEADER\r\n * @constant\r\n * @private\r\n * @type {String}\r\n * @description CSRF request header name\r\n */\r\n this.CSRF_TOKEN_HEADER = 'X-CSRF-HEADER';\r\n /**\r\n * @name module:security.CsrfTokenInterceptor#csrfToken\r\n * @private\r\n * @type {String}\r\n * @default 'NO_TOKEN'\r\n * @description CSRF token value\r\n */\r\n this.csrfToken = 'NO-TOKEN';\r\n }\r\n CsrfTokenInterceptor.getInstance = function () {\r\n \"ngInject\";\r\n return new CsrfTokenInterceptor();\r\n };\r\n Object.defineProperty(CsrfTokenInterceptor.prototype, \"CSRF_TOKEN_KEY\", {\r\n /**\r\n * @name module:security.CsrfTokenInterceptor#CSRF_TOKEN_KEY\r\n * @constant\r\n * @type {String}\r\n * @description CSRF response header name\r\n */\r\n get: function () {\r\n return 'X-CSRF-TOKEN';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CsrfTokenInterceptor;\r\n}());\r\nexports.CsrfTokenInterceptor = CsrfTokenInterceptor;\r\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * @class AuthorizationInterceptor\r\n * @memberOf module:security\r\n * @param {Object} $q - Angular ajax queue library\r\n * @param {Object} $injector - Angular injector service\r\n * @description Intercepts 401 calls and redirects calls login on UserService\r\n */\r\nvar AuthorizationInterceptor = (function () {\r\n function AuthorizationInterceptor($q, $injector) {\r\n var _this = this;\r\n this.$q = $q;\r\n this.$injector = $injector;\r\n this.responseError = function (response) {\r\n if (response.status === 401) {\r\n var UserService = _this.$injector.get('UserService');\r\n UserService.setAuthorizationCodeUrl(response.data.authorization_code_url);\r\n UserService.login();\r\n }\r\n return _this.$q.reject(response);\r\n };\r\n }\r\n AuthorizationInterceptor.getInstance = [\"$q\", \"$injector\", function ($q, $injector) {\r\n \"ngInject\";\r\n return new AuthorizationInterceptor($q, $injector);\r\n }];\r\n return AuthorizationInterceptor;\r\n}());\r\nexports.AuthorizationInterceptor = AuthorizationInterceptor;\r\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar InputEscapeService = (function () {\r\n function InputEscapeService() {\r\n this.entityMap = {\r\n \"&\": \"&\",\r\n \"<\": \"<\",\r\n \">\": \">\",\r\n '\"': '"',\r\n \"'\": ''',\r\n \"/\": '/'\r\n };\r\n }\r\n InputEscapeService.prototype.escapeHtml = function (string) {\r\n var _this = this;\r\n return String(string).replace(/[&<>\"'\\/]/g, function (s) {\r\n return _this.entityMap[s];\r\n });\r\n };\r\n return InputEscapeService;\r\n}());\r\nexports.InputEscapeService = InputEscapeService;\r\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar BooleanFilter_1 = __webpack_require__(195);\r\nvar CountFilter_1 = __webpack_require__(196);\r\nvar HumanReadableFilter_1 = __webpack_require__(197);\r\nvar HumanReadableIdFilter_1 = __webpack_require__(198);\r\nvar IdToDisplayNameFilter_1 = __webpack_require__(199);\r\nvar InitialsFilter_1 = __webpack_require__(200);\r\nvar IntegrationParentsFilter_1 = __webpack_require__(201);\r\nvar MetadataFilter_1 = __webpack_require__(202);\r\nvar OlcaKeyMappingFilter_1 = __webpack_require__(203);\r\nvar OlcaTypeMappingFilter_1 = __webpack_require__(204);\r\nvar PropertyAlias_1 = __webpack_require__(205);\r\nvar SquashFilter_1 = __webpack_require__(206);\r\nvar TimeFilter_1 = __webpack_require__(207);\r\nvar TTLFilter_1 = __webpack_require__(208);\r\nvar FiltersModule = (function () {\r\n function FiltersModule() {\r\n this.ngRef.filter('boolean', BooleanFilter_1.booleanFilter);\r\n this.ngRef.filter('count', CountFilter_1.countFilter);\r\n this.ngRef.filter('humanReadable', HumanReadableFilter_1.humanReadableFilter);\r\n this.ngRef.filter('humanReadableId', HumanReadableIdFilter_1.humanReadableIdFilter);\r\n this.ngRef.filter('idToDisplayName', IdToDisplayNameFilter_1.idToDisplayNameFilter);\r\n this.ngRef.filter('initials', InitialsFilter_1.initialsFilter);\r\n this.ngRef.filter('integrationParents', IntegrationParentsFilter_1.integrationParentsFilter);\r\n this.ngRef.filter('metadata', MetadataFilter_1.metadataFilter);\r\n this.ngRef.filter('olcaKey', OlcaKeyMappingFilter_1.olcaKeyFilter);\r\n this.ngRef.filter('olcaType', OlcaTypeMappingFilter_1.olcaTypeFilter);\r\n this.ngRef.filter('propertyAlias', PropertyAlias_1.propertyAliasFilter);\r\n this.ngRef.filter('squash', SquashFilter_1.squashFilter);\r\n this.ngRef.filter('time', TimeFilter_1.timeFilter);\r\n this.ngRef.filter('ttl', TTLFilter_1.ttlFilter);\r\n }\r\n FiltersModule.prototype.config = function () { };\r\n FiltersModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'filters',\r\n dependencies: [\r\n 'xml',\r\n 'data'\r\n ]\r\n })\r\n ], FiltersModule);\r\n return FiltersModule;\r\n}());\r\nexports.FiltersModule = FiltersModule;\r\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction booleanFilter() {\r\n return function (input, arg) {\r\n return input ? 'Yes' : 'No';\r\n };\r\n}\r\nexports.booleanFilter = booleanFilter;\r\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\n/**\r\n * @class CountFilter\r\n * @memberOf module:filters\r\n * @description Returns object keys length\r\n */\r\nfunction countFilter() {\r\n return function resultFn(input) {\r\n if (input) {\r\n if (angular.isString(input)) {\r\n return input.length;\r\n }\r\n else if (angular.isObject(input)) {\r\n return Object.keys(input).length;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n}\r\nexports.countFilter = countFilter;\r\n;\r\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction humanReadableFilter() {\r\n return function (input) {\r\n if (!input) {\r\n return '';\r\n }\r\n return input\r\n .replace(/_/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/([a-zA-Z]+)([0-9]+)/, '$1 $2')\r\n .replace(/([0-9]+)([a-zA-Z]+)/, '$1 $2')\r\n .replace(/\\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')\r\n .replace(/^./, function (str) {\r\n return str.toUpperCase();\r\n })\r\n .trim();\r\n };\r\n}\r\nexports.humanReadableFilter = humanReadableFilter;\r\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction humanReadableIdFilter() {\r\n return function (input) {\r\n if (!input) {\r\n return '';\r\n }\r\n return input\r\n .replace(/_/g, ' - ')\r\n .trim();\r\n };\r\n}\r\nexports.humanReadableIdFilter = humanReadableIdFilter;\r\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nidToDisplayNameFilter.$inject = [\"humanReadableIdFilter\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction idToDisplayNameFilter(humanReadableIdFilter) {\r\n \"ngInject\";\r\n return function (entityId, entityData) {\r\n if (!entityData || !('displayName' in entityData)) {\r\n return humanReadableIdFilter(entityId);\r\n }\r\n else {\r\n return entityData.displayName;\r\n }\r\n };\r\n}\r\nexports.idToDisplayNameFilter = idToDisplayNameFilter;\r\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction initialsFilter() {\r\n return function (input) {\r\n var words = input.split(' ');\r\n var result = [];\r\n if (words.length === 1) {\r\n if (words[0].length > 5) {\r\n result.push(words[0].slice(0, 5).toUpperCase());\r\n }\r\n else {\r\n result.push(words[0].toUpperCase());\r\n }\r\n }\r\n else {\r\n words.forEach(function (word) {\r\n result.push(word.charAt(0).toUpperCase());\r\n });\r\n }\r\n return result.join('');\r\n };\r\n}\r\nexports.initialsFilter = initialsFilter;\r\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nintegrationParentsFilter.$inject = [\"humanReadableIdFilter\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction integrationParentsFilter(humanReadableIdFilter) {\r\n \"ngInject\";\r\n return function (integrationId, integrationData, relatedData) {\r\n if (!integrationData) {\r\n return humanReadableIdFilter(integrationId);\r\n }\r\n var mvpdRef = integrationData.entityData.owner;\r\n var channelRef = integrationData.entityData.serviceProvider;\r\n var related = integrationData.related ? integrationData.related : relatedData.related;\r\n return related[channelRef].entityData.displayName + ' - ' + related[mvpdRef].entityData.displayName;\r\n };\r\n}\r\nexports.integrationParentsFilter = integrationParentsFilter;\r\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmetadataFilter.$inject = [\"x2js\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction metadataFilter(x2js) {\r\n \"ngInject\";\r\n return function (input, path) {\r\n var metadata = atob(input);\r\n if (path) {\r\n var result = x2js.xml2js(metadata);\r\n return result;\r\n }\r\n else {\r\n return metadata;\r\n }\r\n };\r\n}\r\nexports.metadataFilter = metadataFilter;\r\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nolcaKeyFilter.$inject = [\"olcaTypeFilter\", \"idToDisplayNameFilter\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction olcaKeyFilter(olcaTypeFilter, idToDisplayNameFilter) {\r\n \"ngInject\";\r\n return function (entityKey) {\r\n var splitKey = entityKey.split(\":\");\r\n var entityType = splitKey[0];\r\n var entityId = splitKey[1];\r\n return olcaTypeFilter(entityType) + \": \" + idToDisplayNameFilter(entityId);\r\n };\r\n}\r\nexports.olcaKeyFilter = olcaKeyFilter;\r\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nolcaTypeFilter.$inject = [\"Config\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction olcaTypeFilter(Config) {\r\n \"ngInject\";\r\n return function (entityType) {\r\n if (Config.entityTypeMappings && Config.entityTypeMappings[entityType]) {\r\n return Config.entityTypeMappings[entityType];\r\n }\r\n else {\r\n return entityType;\r\n }\r\n };\r\n}\r\nexports.olcaTypeFilter = olcaTypeFilter;\r\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\npropertyAliasFilter.$inject = [\"Config\", \"humanReadableFilter\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction propertyAliasFilter(Config, humanReadableFilter) {\r\n \"ngInject\";\r\n return function (propertyName) {\r\n if (Config.propertyNameMappings[propertyName]) {\r\n return Config.propertyNameMappings[propertyName];\r\n }\r\n else {\r\n return humanReadableFilter(propertyName);\r\n }\r\n };\r\n}\r\nexports.propertyAliasFilter = propertyAliasFilter;\r\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nsquashFilter.$inject = [\"CacheService\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction squashFilter(CacheService) {\r\n \"ngInject\";\r\n return function (source, property, context) {\r\n var result = 'N/A';\r\n var mvpd;\r\n if (context === 'integration') {\r\n mvpd = CacheService.get(source.entityData.owner);\r\n if (!mvpd) {\r\n return result;\r\n }\r\n result = mvpd.entityData[property];\r\n console.log();\r\n if (source.entityData.clientData && source.entityData.clientData[property]) {\r\n result = source.entityData.clientData[property];\r\n }\r\n else if (mvpd.entityData.clientData && mvpd.entityData.clientData[property]) {\r\n result = mvpd.entityData.clientData[property];\r\n }\r\n }\r\n if (context === 'mvpd') {\r\n result = source.entityData[property];\r\n if (source.entityData.clientData && source.entityData.clientData[property]) {\r\n result = source.entityData.clientData[property];\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\nexports.squashFilter = squashFilter;\r\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2018 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction timeFilter() {\r\n return function (duration, withHour, unit) {\r\n if (unit === void 0) { unit = \"milliseconds\"; }\r\n var out = \"\";\r\n if (!duration) {\r\n return out;\r\n }\r\n // if you send the duration in another unit of time, transform it to milliseconds\r\n switch (unit) {\r\n case \"seconds\":\r\n duration = duration * 1000;\r\n break;\r\n case 'minutes':\r\n duration = duration * 60 * 1000;\r\n break;\r\n default:\r\n break;\r\n }\r\n var seconds;\r\n var minutes;\r\n var hours;\r\n var days;\r\n var secondsNumber = Math.floor((duration / 1000) % 60);\r\n var minutesNumber = Math.floor((duration / (1000 * 60)) % 60);\r\n var hoursNumber = Math.floor((duration / (1000 * 60 * 60)) % 24);\r\n var daysNumber = Math.floor((duration / (1000 * 60 * 60 * 24)));\r\n minutesNumber = minutesNumber + 60 * hoursNumber;\r\n minutes = (minutesNumber < 10) ? \"0\" + minutesNumber : minutesNumber;\r\n seconds = (secondsNumber < 10) ? \"0\" + secondsNumber : secondsNumber;\r\n out = minutes + \":\" + seconds;\r\n if (withHour) {\r\n minutesNumber = minutesNumber - hoursNumber * 60;\r\n var minutesPrefix = hoursNumber > 0 ? \" \" : \"\";\r\n var secondsPrefix = minutesNumber > 0 ? \" and \" : \"\";\r\n if (daysNumber > 0) {\r\n if (daysNumber === 1) {\r\n days = daysNumber + ' day ';\r\n }\r\n else {\r\n days = daysNumber + ' days ';\r\n }\r\n }\r\n else {\r\n days = \"\";\r\n }\r\n if (hoursNumber === 0) {\r\n hours = \"\";\r\n }\r\n else if (hoursNumber === 1) {\r\n hours = hoursNumber + ' hour';\r\n }\r\n else {\r\n hours = hoursNumber + ' hours';\r\n }\r\n if (minutesNumber === 0) {\r\n minutes = \"\";\r\n }\r\n else if (minutesNumber === 1) {\r\n minutes = minutesPrefix + minutesNumber + ' minute';\r\n }\r\n else {\r\n minutes = minutesPrefix + minutesNumber + ' minutes';\r\n }\r\n if (secondsNumber === 0) {\r\n seconds = \"\";\r\n }\r\n else if (secondsNumber === 1) {\r\n seconds = secondsPrefix + seconds + ' second';\r\n }\r\n else {\r\n seconds = secondsPrefix + seconds + ' seconds';\r\n }\r\n out = days + hours + minutes + seconds;\r\n }\r\n return out;\r\n };\r\n}\r\nexports.timeFilter = timeFilter;\r\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nttlFilter.$inject = [\"ManglerUtil\"];\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction ttlFilter(ManglerUtil) {\r\n \"ngInject\";\r\n return function (value, name) {\r\n var processedTTL = value;\r\n if (name.fieldName.substr(name.fieldName.length - 3) === \"ttl\" && value !== \"Not set\") {\r\n processedTTL = ManglerUtil.processTTL(value);\r\n return processedTTL.asString;\r\n }\r\n return processedTTL;\r\n };\r\n}\r\nexports.ttlFilter = ttlFilter;\r\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar Certificates_1 = __webpack_require__(13);\r\nvar Applications_1 = __webpack_require__(10);\r\nvar ClientData_1 = __webpack_require__(31);\r\nvar ComplexInput_1 = __webpack_require__(16);\r\nvar ImagePlaceholder_1 = __webpack_require__(211);\r\nvar Manglers_1 = __webpack_require__(32);\r\nvar OAuthConsumerCredentials_1 = __webpack_require__(33);\r\nvar OAuth2ClientCredentials_1 = __webpack_require__(34);\r\nvar OAuth2AccessToken_1 = __webpack_require__(35);\r\nvar OAuthEndpoint_1 = __webpack_require__(36);\r\nvar PanelList_1 = __webpack_require__(37);\r\nvar PlatformSwitcher_1 = __webpack_require__(38);\r\nvar SamlMetadataInfo_1 = __webpack_require__(39);\r\nvar Searchbox_1 = __webpack_require__(40);\r\nvar UserMetadata_1 = __webpack_require__(41);\r\nvar DurationInput_1 = __webpack_require__(42);\r\nvar AddChannel_1 = __webpack_require__(8);\r\nvar AddProgrammer_1 = __webpack_require__(9);\r\nvar Tabs_1 = __webpack_require__(3);\r\nvar Applications_2 = __webpack_require__(10);\r\nvar AddApplication_1 = __webpack_require__(226);\r\nvar ViewApplication_1 = __webpack_require__(227);\r\nvar Certificates_2 = __webpack_require__(13);\r\nvar AddCertificate_1 = __webpack_require__(228);\r\nvar EditCertificate_1 = __webpack_require__(230);\r\nvar DeleteCertificate_1 = __webpack_require__(231);\r\nvar ClientData_2 = __webpack_require__(31);\r\nvar ComplexInput_2 = __webpack_require__(16);\r\nvar ComplexInput_3 = __webpack_require__(16);\r\nvar Manglers_2 = __webpack_require__(32);\r\nvar OAuthConsumerCredentials_2 = __webpack_require__(33);\r\nvar OAuth2ClientCredentials_2 = __webpack_require__(34);\r\nvar OAuth2AccessToken_2 = __webpack_require__(35);\r\nvar OAuthEndpoint_2 = __webpack_require__(36);\r\nvar PanelList_2 = __webpack_require__(37);\r\nvar PlatformSwitcher_2 = __webpack_require__(38);\r\nvar SamlMetadataInfo_2 = __webpack_require__(39);\r\nvar Searchbox_2 = __webpack_require__(40);\r\nvar UserMetadata_2 = __webpack_require__(41);\r\nvar DurationInput_2 = __webpack_require__(42);\r\nvar AddChannel_2 = __webpack_require__(8);\r\nvar AddChannel_3 = __webpack_require__(8);\r\nvar AddProgrammer_2 = __webpack_require__(9);\r\nvar AddProgrammer_3 = __webpack_require__(9);\r\nvar AddChannel_4 = __webpack_require__(8);\r\nvar AddChannel_5 = __webpack_require__(8);\r\nvar AddProgrammer_4 = __webpack_require__(9);\r\nvar AddProgrammer_5 = __webpack_require__(9);\r\nvar CustomSchemes_1 = __webpack_require__(232);\r\nvar Permissions_1 = __webpack_require__(234);\r\nvar AddPermission_1 = __webpack_require__(236);\r\n/**\r\n * @module ui\r\n * @description Contains generic UI directives\r\n */\r\nvar UIModule = (function () {\r\n function UIModule() {\r\n this.ngRef.constant('SearchEvent', {\r\n SEARCH: 'onSearch',\r\n RESET: 'onSearchReset',\r\n CLEAR: 'onSearchClear'\r\n });\r\n this.ngRef.controller('TabsCtrl', Tabs_1.TabsCtrl);\r\n this.ngRef.controller('ApplicationsCtrl', Applications_2.ApplicationsCtrl);\r\n this.ngRef.controller('AddApplicationCtrl', AddApplication_1.AddApplicationCtrl);\r\n this.ngRef.controller('ViewApplicationCtrl', ViewApplication_1.ViewApplicationCtrl);\r\n this.ngRef.controller('CertificatesCtrl', Certificates_2.CertificatesCtrl);\r\n this.ngRef.controller('AddCertificateCtrl', AddCertificate_1.AddCertificateCtrl);\r\n this.ngRef.controller('EditCertificateCtrl', EditCertificate_1.EditCertificateCtrl);\r\n this.ngRef.controller('DeleteCertificateCtrl', DeleteCertificate_1.DeleteCertificateCtrl);\r\n this.ngRef.controller('ClientDataCtrl', ClientData_2.ApcClientDataCtrl);\r\n this.ngRef.controller('ComplexInputCtrl', ComplexInput_2.ApcComplexInputCtrl);\r\n this.ngRef.controller('ComplexInputModalCtrl', ComplexInput_3.ApcComplexInputModalCtrl);\r\n this.ngRef.controller('ManglersCtrl', Manglers_2.ApcManglersCtrl);\r\n this.ngRef.controller('OauthConsumerCredentialsCtrl', OAuthConsumerCredentials_2.ApcOauthConsumerCredentialsCtrl);\r\n this.ngRef.controller('Oauth2ClientCredentials', OAuth2ClientCredentials_2.ApcOauth2ClientCredentialsCtrl);\r\n this.ngRef.controller('Oauth2AccessTokenCtrl', OAuth2AccessToken_2.ApcOAuth2AccessTokenCtrl);\r\n this.ngRef.controller('OauthEndpointCtrl', OAuthEndpoint_2.ApcOauthEndpointCtrl);\r\n this.ngRef.controller('PanelListCtrl', PanelList_2.ApcPanelListCtrl);\r\n this.ngRef.controller('PlatformSwitcherCtrl', PlatformSwitcher_2.ApcPlatformSwitcherCtrl);\r\n this.ngRef.controller('SamlMetadataInfo', SamlMetadataInfo_2.ApcSamlMetadataInfoCtrl);\r\n this.ngRef.controller('SearchboxCtrl', Searchbox_2.ApcSearchboxCtrl);\r\n this.ngRef.controller('UserMetadataCtrl', UserMetadata_2.ApcUserMetadataCtrl);\r\n this.ngRef.controller('DurantionInputCtrl', DurationInput_2.ApcDurationInputCtrl);\r\n this.ngRef.controller('AddChannelCtrl', AddChannel_2.ApcAddChannelCtrl);\r\n this.ngRef.controller('AddChannelModalCtrl', AddChannel_3.ApcAddChannelModalCtrl);\r\n this.ngRef.controller('AddProgrammerCtrl', AddProgrammer_2.ApcAddProgrammerCtrl);\r\n this.ngRef.controller('AddProgrammerModalCtrl', AddProgrammer_3.ApcAddProgrammerModalCtrl);\r\n this.ngRef.controller('ApcCustomSchemesCtrl', CustomSchemes_1.ApcCustomSchemesCtrl);\r\n this.ngRef.controller('ApcPermissionsCtrl', Permissions_1.ApcPermissionsCtrl);\r\n this.ngRef.controller('AddPermissionCtrl', AddPermission_1.AddPermissionCtrl);\r\n this.ngRef.directive('apcCertificates', function () { return new Certificates_1.ApcCertificatesDirective(); });\r\n this.ngRef.directive('apcApplications', function () { return new Applications_1.ApcApplicationsDirective(); });\r\n this.ngRef.directive('apcClientData', function () { return new ClientData_1.ApcClientDataDirective(); });\r\n this.ngRef.directive('apcComplexInput', function () { return new ComplexInput_1.ApcComplexInputDirective(); });\r\n this.ngRef.directive('apcImagePlaceholder', function () { return new ImagePlaceholder_1.ApcImagePlaceholderDirective(); });\r\n this.ngRef.directive('apcManglers', function () { return new Manglers_1.ApcManglersDirective(); });\r\n this.ngRef.directive('apcOauthConsumerCredentials', function () { return new OAuthConsumerCredentials_1.ApcOauthConsumerCredentialsDirective(); });\r\n this.ngRef.directive('apcOauth2ClientCredentials', function () { return new OAuth2ClientCredentials_1.ApcOauth2ClientCredentialsDirective(); });\r\n this.ngRef.directive('apcOauth2AccessToken', function () { return new OAuth2AccessToken_1.ApcOAuth2AccessTokenDirective(); });\r\n this.ngRef.directive('apcOauthEndpoint', function () { return new OAuthEndpoint_1.ApcOauthEndpointDirective(); });\r\n this.ngRef.directive('apcPanelList', function () { return new PanelList_1.ApcPanelListDirective(); });\r\n this.ngRef.directive('apcPlatformSwitcher', function () { return new PlatformSwitcher_1.ApcPlatformSwitcherDirective(); });\r\n this.ngRef.directive('apcSamlMetadataInfo', function () { return new SamlMetadataInfo_1.ApcSamlMetadataInfoDirective(); });\r\n this.ngRef.directive('apcSearchbox', function () { return new Searchbox_1.ApcSearchboxDirective(); });\r\n this.ngRef.directive('apcUserMetadata', function () { return new UserMetadata_1.ApcUserMetadataDirective(); });\r\n this.ngRef.directive('apcDurationInput', function () { return new DurationInput_1.ApcDurationInputDirective(); });\r\n this.ngRef.directive('apcAddChannel', function () { return new AddChannel_1.ApcAddChannelDirective(); });\r\n this.ngRef.directive('apcAddProgrammer', function () { return new AddProgrammer_1.ApcAddProgrammerDirective(); });\r\n this.ngRef.directive('apcCustomSchemes', function () { return new CustomSchemes_1.ApcCustomSchemeDirective(); });\r\n this.ngRef.directive('apcPermissions', function () { return new Permissions_1.ApcPermissionsDirective(); });\r\n this.ngRef.directive('uniqueChannel', function () { return new AddChannel_4.UniqueChannelValidator(); });\r\n this.ngRef.directive('validChannelId', function () { return new AddChannel_5.ChannelIdValidator(); });\r\n this.ngRef.directive('uniqueProgrammer', function () { return new AddProgrammer_4.UniqueProgrammerValidator(); });\r\n this.ngRef.directive('validProgrammerId', function () { return new AddProgrammer_5.ProgrammerIdValidator(); });\r\n }\r\n UIModule.prototype.config = [\"$provide\", function ($provide) {\r\n \"ngInject\";\r\n $provide.decorator('toggleSwitchDirective', [\"$delegate\", \"NotificationService\", function ($delegate, NotificationService) {\r\n var directive = $delegate[0];\r\n var compile = directive.compile;\r\n directive.compile = function (element, attrs) {\r\n var link = compile.apply(this, arguments);\r\n var newLink = function (scope, element, attrs, ngModel) {\r\n link.apply(this, arguments);\r\n var toggle = scope.toggle;\r\n scope.toggle = function () { };\r\n element.on('click', function () {\r\n if (!scope.disabled && attrs.confirmation) {\r\n var message = ngModel.$viewValue ? attrs.confirmationOffMessage : attrs.confirmationOnMessage;\r\n NotificationService.warnModal('Confirmation', message).result.then(function (success) {\r\n if (success) {\r\n toggle();\r\n }\r\n });\r\n }\r\n else if (!scope.disabled) {\r\n toggle();\r\n }\r\n });\r\n };\r\n return newLink;\r\n };\r\n return $delegate;\r\n }]);\r\n }];\r\n UIModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'ui',\r\n dependencies: [\r\n 'ui.bootstrap',\r\n 'core',\r\n 'security',\r\n 'data',\r\n 'filters',\r\n 'toggle-switch'\r\n ]\r\n })\r\n ], UIModule);\r\n return UIModule;\r\n}());\r\nexports.UIModule = UIModule;\r\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" Entries: {{data | count}} Entries: {{inheritData[property.propertyName].value | count}} No entries \";\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcImagePlaceholderDirective = (function () {\r\n function ApcImagePlaceholderDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n name: '@',\r\n src: '=',\r\n height: '@',\r\n fontSize: '@?'\r\n };\r\n this.template = __webpack_require__(212);\r\n }\r\n ApcImagePlaceholderDirective.prototype.link = function (scope, element, attrs, fn) {\r\n if (scope.src === null) {\r\n scope.error = true;\r\n }\r\n else {\r\n element.find('img').on('error', function () {\r\n scope.$apply(function () {\r\n scope.error = true;\r\n });\r\n });\r\n element.find('img').on('load', function () {\r\n scope.$apply(function () {\r\n scope.error = false;\r\n });\r\n });\r\n }\r\n };\r\n return ApcImagePlaceholderDirective;\r\n}());\r\nexports.ApcImagePlaceholderDirective = ApcImagePlaceholderDirective;\r\n\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      {{(name | initials) || 'No preview available'}}
      \";\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      {{title}}
      \";\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      {{title}}
      \";\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      {{title}}
      \";\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
      {{title}}
      \";\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

      {{panelTitle}}

      0\\\" ng-click=onRowClick(item) ng-class=\\\"{clickable: onItemClick()}\\\"> 0\\\" class=pagination-holder>
      {{column.name}} {{column.name}}

        No data available

        \";\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
        0\\\" ng-click=onRowClick(item) ng-class=\\\"{clickable: onItemClick()}\\\"> 0\\\" class=pagination-holder>
        {{column.name}} {{column.name}}

          No data available

          \";\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          Platform Specific Settings
          \";\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          SAML Metadata
          \";\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          0\\\" ng-click=resetSearch()>×
          \";\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          User Metadata Keys
          \";\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          days
          hours
          min
          sec

          Value should be a valid number Value should be positive Value should be integer

          \";\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          \";\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          \";\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar angular = __webpack_require__(0);\r\nvar AddApplicationCtrl = (function () {\r\n AddApplicationCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"entity\", \"platforms\", \"applicationTypes\", \"ApplicationService\"];\r\n function AddApplicationCtrl($scope, $uibModalInstance, entity, platforms, applicationTypes, ApplicationService) {\r\n \"ngInject\";\r\n var ALL = 'All channels';\r\n $scope.addPlatformReference = function (item) {\r\n return '@Platform:' + item;\r\n };\r\n $scope.addProgrammerReference = function (item) {\r\n return '@Programmer:' + item;\r\n };\r\n $scope.addServiceProviderReference = function (item) {\r\n return '@ServiceProvider:' + item;\r\n };\r\n $scope.removeServiceProviderReference = function (item) {\r\n return item.trim().replace('@ServiceProvider:', '');\r\n };\r\n $scope.isChannel = function () {\r\n return entity.type === 'CHANNEL';\r\n };\r\n $scope.isProgrammer = function () {\r\n return entity.type === 'PROGRAMMER';\r\n };\r\n // Create new application instance\r\n $scope.application = ApplicationService.getApplicationDefinition(applicationTypes[0]).entityData;\r\n $scope.init = function () {\r\n $scope.platforms = platforms;\r\n $scope.domains = entity.relatedData.domains;\r\n $scope.applicationTypes = applicationTypes;\r\n if ($scope.isChannel()) {\r\n $scope.selectedServiceProvider = entity.data.entityData.id;\r\n // Service provider list: a list with one single item, being the current channel\r\n $scope.application.serviceProviders = [$scope.selectedServiceProvider];\r\n // Initialize owner, as the programmer of the current channel\r\n $scope.application.owner = entity.data.entityData.programmer;\r\n }\r\n else if ($scope.isProgrammer()) {\r\n $scope.selectedServiceProvider = angular.copy(ALL);\r\n // Initialize service provider options\r\n $scope.serviceProviderOptions = [ALL].concat(entity.data.entityData.serviceProviders.map($scope.removeServiceProviderReference));\r\n // Initialize owner, as current programmer\r\n $scope.application.owner = $scope.addProgrammerReference(entity.data.entityData.id);\r\n }\r\n };\r\n $scope.init();\r\n $scope.allPlatformsSelected = function () {\r\n var filtered = $scope.platforms.filter(function (item) {\r\n return $scope.application.platforms.indexOf(item) < 0;\r\n });\r\n return _.isEmpty(filtered);\r\n };\r\n $scope.updateProvider = function (selectedServiceProvider) {\r\n $scope.selectedServiceProvider = selectedServiceProvider;\r\n };\r\n $scope.updateRegisteredApplication = function () {\r\n // Update service providers and add references\r\n if ($scope.selectedServiceProvider === ALL) {\r\n $scope.application.serviceProviders = [];\r\n }\r\n else {\r\n $scope.application.serviceProviders = [$scope.addServiceProviderReference($scope.selectedServiceProvider)];\r\n }\r\n // Update platforms and add references\r\n if ($scope.allPlatformsSelected() === true) {\r\n $scope.application.platforms = [];\r\n }\r\n else {\r\n $scope.application.platforms = $scope.application.platforms.map($scope.addPlatformReference);\r\n }\r\n // Create new application entity\r\n var newAppEntity = {\r\n key: '',\r\n entityData: {}\r\n };\r\n newAppEntity.key = 'RegisteredApplication:' + $scope.application.id;\r\n newAppEntity.entityData = $scope.application;\r\n $scope.application = newAppEntity;\r\n };\r\n $scope.ok = function () {\r\n $scope.updateRegisteredApplication();\r\n $uibModalInstance.close({\r\n application: $scope.application\r\n });\r\n };\r\n $scope.cancel = function () {\r\n $uibModalInstance.close({});\r\n };\r\n }\r\n return AddApplicationCtrl;\r\n}());\r\nexports.AddApplicationCtrl = AddApplicationCtrl;\r\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar _ = __webpack_require__(1);\r\nvar ViewApplicationCtrl = (function () {\r\n ViewApplicationCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"application\", \"platforms\"];\r\n function ViewApplicationCtrl($scope, $uibModalInstance, application, platforms) {\r\n \"ngInject\";\r\n $scope.removeServiceProviderReference = function (item) {\r\n return item.trim().replace('@ServiceProvider:', '');\r\n };\r\n $scope.removePlatformReference = function (item) {\r\n return item.trim().replace('@Platform:', '');\r\n };\r\n $scope.application = angular.copy(application);\r\n $scope.init = function () {\r\n $scope.application.entityData.platforms = $scope.application.entityData.platforms.map($scope.removePlatformReference);\r\n if (_.isEmpty($scope.application.entityData.serviceProviders)) {\r\n $scope.application.entityData.serviceProviders = ['All channels'];\r\n }\r\n else {\r\n $scope.application.entityData.serviceProviders = $scope.application.entityData.serviceProviders.map($scope.removeServiceProviderReference);\r\n }\r\n $scope.platformNames = $scope.application.entityData.platforms.map(function (platformId) {\r\n return platforms[platformId].description;\r\n });\r\n };\r\n $scope.init();\r\n $scope.cancel = function () {\r\n $uibModalInstance.close({});\r\n };\r\n }\r\n return ViewApplicationCtrl;\r\n}());\r\nexports.ViewApplicationCtrl = ViewApplicationCtrl;\r\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar utf8 = __webpack_require__(229);\r\nvar AddCertificateCtrl = (function () {\r\n AddCertificateCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"data\", \"certificates\", \"platforms\", \"encryptionData\", \"CertificateService\", \"CertificateUtils\", \"EncryptionLevel\"];\r\n function AddCertificateCtrl($scope, $uibModalInstance, data, certificates, platforms, encryptionData, CertificateService, CertificateUtils, EncryptionLevel) {\r\n \"ngInject\";\r\n /**\r\n * User metadata encryption certificate id\r\n */\r\n var userMetadataEncryptionCertificateId = CertificateUtils.getUserMetadataEncryptionCertificateId(encryptionData.level, encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER, encryptionData.channelUserMetadataEncryptionCertificate.id, encryptionData.programmerUserMetadataEncryptionCertificate.id);\r\n /**\r\n * User metadata encryption certificate serial number\r\n */\r\n var userMetadataEncryptionCertificateSerialNumber = CertificateUtils.getUserMetadataEncryptionCertificateSerialNumber(encryptionData.level, encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER, encryptionData.channelUserMetadataEncryptionCertificate.id, encryptionData.programmerUserMetadataEncryptionCertificate.id);\r\n var initialCertificatesValues = {\r\n certificates: certificates,\r\n userMetadataEncryptionCertificateId: userMetadataEncryptionCertificateId,\r\n encryptionValue: false\r\n };\r\n $scope.data = data;\r\n $scope.platforms = platforms;\r\n $scope.encryptionValue = angular.copy(initialCertificatesValues.encryptionValue);\r\n $scope.hasErrors = false;\r\n /**\r\n * Gets the default list of platforms, which has all 'enabled' properties set to true.\r\n * When adding a new certificate, platforms should be enabled by default\r\n */\r\n var getInitialPlatformsList = function () {\r\n var platforms = [];\r\n for (var _i = 0, _a = Object.keys($scope.platforms); _i < _a.length; _i++) {\r\n var platformId = _a[_i];\r\n var platformDetails = angular.copy($scope.platforms[platformId]);\r\n platformDetails.enabled = true;\r\n platforms.push(platformDetails);\r\n }\r\n return platforms;\r\n };\r\n $scope.platforms = getInitialPlatformsList();\r\n $scope.certificate = {\r\n \"content\": \"\",\r\n \"platforms\": $scope.platforms\r\n };\r\n /**\r\n * Creates a specific warning message for every possible warning case\r\n */\r\n $scope.getEncryptionCertificateWarningMessage = function () {\r\n if ($scope.encryptionValue === true) {\r\n if (userMetadataEncryptionCertificateSerialNumber) {\r\n return \"Are you sure you want to overwrite the current encryption certificate (serial id: \" + userMetadataEncryptionCertificateSerialNumber + \")? By clicking OK, the user metadata encryption certificate will be updated.\";\r\n }\r\n else {\r\n return 'Are you sure you want to enable the encryption certificate? By clicking OK, the user metadata encryption certificate will be updated.';\r\n }\r\n }\r\n };\r\n /**\r\n * Get current certificate platform ids\r\n */\r\n var getPlatformIds = function () {\r\n var platforms = [];\r\n for (var platform in $scope.certificate.platforms) {\r\n if ($scope.certificate.platforms[platform].enabled) {\r\n platforms.push('@Platform:' + $scope.certificate.platforms[platform].id);\r\n }\r\n }\r\n return platforms;\r\n };\r\n /**\r\n * Updates the encryption certificate value at the entity data level\r\n */\r\n $scope.updateEncryptionCertificate = function (key) {\r\n if ($scope.encryptionValue) {\r\n $scope.data.entityData.userMetadataEncryptionCertificateId = key;\r\n }\r\n };\r\n /**\r\n * Checks if the encryption value of the selected certificate changed\r\n */\r\n $scope.encryptionValueChanged = function () {\r\n return ($scope.encryptionValue !== initialCertificatesValues.encryptionValue);\r\n };\r\n /**\r\n * Saves certificate details: content, platforms, encryption data\r\n */\r\n $scope.saveCertificate = function (certificateInfo) {\r\n return CertificateService.hashCertificate($scope.certificate.content).then(function (hash) {\r\n initialCertificatesValues.certificates[hash] = {\r\n base64Certificate: $scope.certificate.content,\r\n certificateInfo: certificateInfo,\r\n certificateKey: hash,\r\n platforms: $scope.platforms\r\n };\r\n $scope.data.entityData.certificates[hash] = {\r\n \"certificate\": $scope.certificate.content,\r\n \"platforms\": getPlatformIds()\r\n };\r\n $scope.updateEncryptionCertificate(hash);\r\n $uibModalInstance.close({\r\n certificates: initialCertificatesValues.certificates,\r\n userMetadataEncryptionCertificateId: $scope.data.entityData.userMetadataEncryptionCertificateId\r\n });\r\n });\r\n };\r\n /**\r\n * Corrects the certificate content, encodes it into base 64 and checks if it can be successfully parsed.\r\n * If yes, saves it. Otherwise, marks it as having errors.\r\n */\r\n $scope.ok = function () {\r\n if (!$scope.certificate.content || $scope.certificate.content.length < 256) {\r\n $scope.hasErrors = true;\r\n return;\r\n }\r\n var content = CertificateUtils.normalizeContent($scope.certificate.content);\r\n content = btoa(utf8.encode(content));\r\n CertificateService.parseCertificate(content).then(function (certificateInfo) {\r\n if (certificateInfo.parseSuccessful) {\r\n $scope.certificate.content = content;\r\n $scope.saveCertificate(certificateInfo);\r\n }\r\n else {\r\n $scope.hasErrors = true;\r\n }\r\n });\r\n };\r\n $scope.cancel = function () {\r\n $uibModalInstance.close({\r\n certificates: initialCertificatesValues.certificates,\r\n userMetadataEncryptionCertificateId: initialCertificatesValues.userMetadataEncryptionCertificateId\r\n });\r\n };\r\n }\r\n return AddCertificateCtrl;\r\n}());\r\nexports.AddCertificateCtrl = AddCertificateCtrl;\r\n\n\n/***/ }),\n/* 229 */,\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar EditCertificateCtrl = (function () {\r\n EditCertificateCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"data\", \"certificates\", \"platforms\", \"encryptionData\", \"selectedCertificateKey\", \"CertificateUtils\", \"EncryptionLevel\"];\r\n function EditCertificateCtrl($scope, $uibModalInstance, data, certificates, platforms, encryptionData, selectedCertificateKey, CertificateUtils, EncryptionLevel) {\r\n \"ngInject\";\r\n /**\r\n * User metadata encryption certificate id.\r\n */\r\n var userMetadataEncryptionCertificateId = CertificateUtils.getUserMetadataEncryptionCertificateId(encryptionData.level, encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER, encryptionData.channelUserMetadataEncryptionCertificate.id, encryptionData.programmerUserMetadataEncryptionCertificate.id);\r\n /**\r\n * User metadata encryption certificate serial number.\r\n */\r\n var userMetadataEncryptionCertificateSerialNumber = CertificateUtils.getUserMetadataEncryptionCertificateSerialNumber(encryptionData.level, encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER, encryptionData.channelUserMetadataEncryptionCertificate.serialNumber, encryptionData.programmerUserMetadataEncryptionCertificate.serialNumber);\r\n var initialCertificatesValues = {\r\n certificates: certificates,\r\n encryptionData: {\r\n encryptionValue: (selectedCertificateKey === userMetadataEncryptionCertificateId),\r\n userMetadataEncryptionCertificateId: userMetadataEncryptionCertificateId,\r\n level: encryptionData.level\r\n }\r\n };\r\n $scope.data = data;\r\n $scope.platforms = platforms;\r\n $scope.certificates = angular.copy(certificates);\r\n $scope.selectedCertificateKey = angular.copy(selectedCertificateKey);\r\n $scope.userMetadataEncryptionCertificateId = angular.copy(initialCertificatesValues.encryptionData.userMetadataEncryptionCertificateId);\r\n $scope.encryptionValue = angular.copy(initialCertificatesValues.encryptionData.encryptionValue);\r\n /**\r\n * Checks if the encryption value of the selected certificate changed\r\n */\r\n $scope.encryptionValueChanged = function () {\r\n return ($scope.encryptionValue !== initialCertificatesValues.encryptionData.encryptionValue);\r\n };\r\n /**\r\n * Creates a specific warning message for every possible warning case\r\n */\r\n $scope.getEncryptionCertificateWarningMessage = function () {\r\n if ($scope.encryptionValue === true) {\r\n if (userMetadataEncryptionCertificateSerialNumber) {\r\n return \"Are you sure you want to overwrite the current encryption certificate (serial id: \" + userMetadataEncryptionCertificateSerialNumber + \")? By clicking OK, the user metadata encryption certificate will be updated.\";\r\n }\r\n else {\r\n return 'Are you sure you want to enable the encryption certificate? By clicking OK, the user metadata encryption certificate will be updated.';\r\n }\r\n }\r\n else {\r\n switch (encryptionData.level) {\r\n case EncryptionLevel.CHANNEL:\r\n var msg = 'Are you sure you want to disable the current channel encryption certificate? ';\r\n if (encryptionData.programmerUserMetadataEncryptionCertificate.isSet) {\r\n return msg + \" After disabling it, the programmer level certificate will be used for encryption (serial id: \" + encryptionData.programmerUserMetadataEncryptionCertificate.serialNumber + \")\";\r\n }\r\n else {\r\n return msg + \" No encryption certificate is set at platform level. User metadata won't be encrypted.\";\r\n }\r\n case EncryptionLevel.PROGRAMMER:\r\n return 'Are you sure you want to disable the encryption certificate set at programmer level?';\r\n }\r\n }\r\n };\r\n /**\r\n * Updates platform configuration at the entity data level\r\n */\r\n var updatePlatformData = function (platform) {\r\n var enabled = platform.enabled;\r\n var entityDataPlatforms = $scope.data.entityData.certificates[$scope.selectedCertificateKey].platforms;\r\n var index = entityDataPlatforms.indexOf('@Platform:' + platform.id);\r\n if (index === -1) {\r\n // If platform is enabled, add it to platform data\r\n if (enabled) {\r\n entityDataPlatforms.push('@Platform:' + platform.id);\r\n }\r\n }\r\n else {\r\n // If the platform was disabled, remove it from entity data\r\n if (!enabled) {\r\n entityDataPlatforms.splice(index, 1);\r\n }\r\n }\r\n };\r\n /**\r\n * Updates the encryption certificate value at the entity data level\r\n */\r\n var updateEncryptionCertificate = function () {\r\n if ($scope.encryptionValue) {\r\n $scope.data.entityData.userMetadataEncryptionCertificateId = $scope.selectedCertificateKey;\r\n }\r\n else {\r\n $scope.data.entityData.userMetadataEncryptionCertificateId = null;\r\n }\r\n };\r\n /**\r\n * Updates entity data configuration - platforms and user metadata encryption certificate, if changed\r\n */\r\n var updateEntityData = function () {\r\n $scope.certificates[selectedCertificateKey].platforms.forEach(function (platform) {\r\n updatePlatformData(platform);\r\n });\r\n if ($scope.encryptionValueChanged() === true) {\r\n updateEncryptionCertificate();\r\n }\r\n };\r\n $scope.ok = function () {\r\n updateEntityData();\r\n $uibModalInstance.close({\r\n certificates: $scope.certificates,\r\n userMetadataEncryptionCertificateId: $scope.data.entityData.userMetadataEncryptionCertificateId\r\n });\r\n };\r\n $scope.cancel = function () {\r\n $uibModalInstance.close({\r\n certificates: initialCertificatesValues.certificates,\r\n userMetadataEncryptionCertificateId: initialCertificatesValues.encryptionData.userMetadataEncryptionCertificateId\r\n });\r\n };\r\n }\r\n return EditCertificateCtrl;\r\n}());\r\nexports.EditCertificateCtrl = EditCertificateCtrl;\r\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar DeleteCertificateCtrl = (function () {\r\n DeleteCertificateCtrl.$inject = [\"$scope\", \"$uibModalInstance\", \"data\", \"certificates\", \"encryptionData\", \"selectedCertificateKey\", \"EncryptionLevel\"];\r\n function DeleteCertificateCtrl($scope, $uibModalInstance, data, certificates, encryptionData, selectedCertificateKey, EncryptionLevel) {\r\n \"ngInject\";\r\n var initialCertificatesValues = {\r\n certificates: angular.copy(certificates),\r\n userMetadataEncryptionCertificateId: data.entityData.userMetadataEncryptionCertificateId\r\n };\r\n $scope.data = data;\r\n $scope.certificates = angular.copy(initialCertificatesValues.certificates);\r\n $scope.selectedCertificateKey = selectedCertificateKey;\r\n /**\r\n * Verifies if the current certificate is an encryption certificate\r\n */\r\n $scope.isEncryptionCertificate = function () {\r\n return (selectedCertificateKey === data.entityData.userMetadataEncryptionCertificateId);\r\n };\r\n $scope.encryptionCertificate = function () {\r\n if ($scope.isEncryptionCertificate()) {\r\n data.entityData.userMetadataEncryptionCertificateId = null;\r\n return null;\r\n }\r\n else {\r\n return data.entityData.userMetadataEncryptionCertificateId;\r\n }\r\n };\r\n /**\r\n * Creates a specific warning message for every possible warning case\r\n */\r\n $scope.getEncryptionCertificateWarningMessage = function () {\r\n var msg = 'This certificate is also used for user metadata encryption. ';\r\n switch (encryptionData.level) {\r\n case EncryptionLevel.PROGRAMMER:\r\n return msg + \"Removing it will impact retrieval of encrypted user metadata.\";\r\n case EncryptionLevel.CHANNEL:\r\n if (encryptionData.programmerUserMetadataEncryptionCertificate.isSet) {\r\n return msg + \"After disabling it, the programmer level certificate will be used for encryption (serial id: \" + encryptionData.programmerUserMetadataEncryptionCertificate.serialNumber + \")\";\r\n }\r\n else {\r\n return msg + \" No encryption certificate is set at platform level. User metadata won't be encrypted.\";\r\n }\r\n }\r\n };\r\n /**\r\n * Removes current certificate from entity data\r\n */\r\n $scope.updateEntityData = function () {\r\n delete $scope.certificates[selectedCertificateKey];\r\n delete $scope.data.entityData.certificates[selectedCertificateKey];\r\n };\r\n $scope.ok = function () {\r\n $scope.updateEntityData();\r\n $uibModalInstance.close({\r\n certificates: $scope.certificates,\r\n userMetadataEncryptionCertificateId: $scope.encryptionCertificate()\r\n });\r\n };\r\n $scope.cancel = function () {\r\n $uibModalInstance.close({\r\n certificates: initialCertificatesValues.certificates,\r\n userMetadataEncryptionCertificateId: initialCertificatesValues.userMetadataEncryptionCertificateId\r\n });\r\n };\r\n }\r\n return DeleteCertificateCtrl;\r\n}());\r\nexports.DeleteCertificateCtrl = DeleteCertificateCtrl;\r\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcCustomSchemeDirective = (function () {\r\n function ApcCustomSchemeDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n parent: '='\r\n };\r\n this.template = __webpack_require__(233);\r\n this.controller = ApcCustomSchemesCtrl;\r\n }\r\n return ApcCustomSchemeDirective;\r\n}());\r\nexports.ApcCustomSchemeDirective = ApcCustomSchemeDirective;\r\nvar ApcCustomSchemesCtrl = (function () {\r\n ApcCustomSchemesCtrl.$inject = [\"$scope\", \"CustomSchemeService\", \"UserService\"];\r\n function ApcCustomSchemesCtrl($scope, CustomSchemeService, UserService) {\r\n \"ngInject\";\r\n $scope.hasWriteRole = UserService.hasRole(\"ROLE_CONSOLE_WRITE\");\r\n $scope.generateNewCustomScheme = function () {\r\n if ($scope.parent) {\r\n CustomSchemeService.generateCustomSchemeForChannel($scope.data.entityData.id).then(function (response) {\r\n if (!$scope.data.entityData.customSchemes) {\r\n $scope.data.entityData.customSchemes = [];\r\n }\r\n $scope.data.entityData.customSchemes.push(response.data);\r\n });\r\n }\r\n else {\r\n CustomSchemeService.generateCustomSchemeForProgrammer($scope.data.entityData.id).then(function (response) {\r\n if (!$scope.data.entityData.customSchemes) {\r\n $scope.data.entityData.customSchemes = [];\r\n }\r\n $scope.data.entityData.customSchemes.push(response.data);\r\n });\r\n }\r\n };\r\n }\r\n return ApcCustomSchemesCtrl;\r\n}());\r\nexports.ApcCustomSchemesCtrl = ApcCustomSchemesCtrl;\r\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          0\\\">
          Inherited Custom Schemes from {{parent.entityData.displayName}} programmer
          {{customScheme}}
          Custom Schemes
          {{customScheme}}

          No data available

          \";\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ApcPermissionsDirective = (function () {\r\n function ApcPermissionsDirective() {\r\n this.restrict = 'E';\r\n this.replace = true;\r\n this.scope = {\r\n data: '=',\r\n parent: '='\r\n };\r\n this.template = __webpack_require__(235);\r\n this.controller = ApcPermissionsCtrl;\r\n }\r\n return ApcPermissionsDirective;\r\n}());\r\nexports.ApcPermissionsDirective = ApcPermissionsDirective;\r\nvar ApcPermissionsCtrl = (function () {\r\n ApcPermissionsCtrl.$inject = [\"$scope\", \"$uibModal\"];\r\n function ApcPermissionsCtrl($scope, $uibModal) {\r\n \"ngInject\";\r\n var _this = this;\r\n $scope.hasData = false;\r\n $scope.parentHasData = false;\r\n $scope.permissionOptions = new Map();\r\n $scope.permissionOptions.set('read', { value: 'read', label: 'READ' });\r\n $scope.permissionOptions.set('write', { value: 'write', label: 'WRITE' });\r\n for (var permission in $scope.data.entityData.permissions) {\r\n if ($scope.data.entityData.permissions.hasOwnProperty(permission) && !$scope.permissionOptions.get(permission)) {\r\n $scope.permissionOptions.set(permission, { value: permission, label: permission.toUpperCase() });\r\n }\r\n }\r\n $scope.isSelected = function (groupPermission, permission) {\r\n return groupPermission.permissions.has(permission.value);\r\n };\r\n $scope.removeGroup = function (groupPermission) {\r\n _this.initialGroups.delete(groupPermission.groupName);\r\n for (var _i = 0, _a = Array.from(groupPermission.permissions.values()); _i < _a.length; _i++) {\r\n var permission = _a[_i];\r\n $scope.data.entityData.permissions[permission.toString()]\r\n .splice($scope.data.entityData.permissions[permission.toString()].indexOf(groupPermission.groupName), 1);\r\n }\r\n _this.processData($scope);\r\n };\r\n $scope.onPermissionChange = function (groupPermission, value, targetPermission) {\r\n if (value) {\r\n if (!$scope.data.entityData.permissions[targetPermission.value]) {\r\n $scope.data.entityData.permissions[targetPermission.value] = [];\r\n }\r\n $scope.data.entityData.permissions[targetPermission.value].push(groupPermission.groupName);\r\n }\r\n else {\r\n $scope.data.entityData.permissions[targetPermission.value]\r\n .splice($scope.data.entityData.permissions[targetPermission.value].indexOf(groupPermission.groupName), 1);\r\n }\r\n _this.processData($scope);\r\n };\r\n var openAddModal = function () {\r\n var addModal = $uibModal.open({\r\n templateUrl: 'AddPermission.html',\r\n controller: 'AddPermissionCtrl',\r\n resolve: {},\r\n backdrop: 'static'\r\n });\r\n addModal.result.then(function (result) {\r\n if (result.groupName) {\r\n if (!$scope.data.entityData.permissions) {\r\n $scope.data.entityData.permissions = {};\r\n }\r\n if (!$scope.data.entityData.permissions.read) {\r\n $scope.data.entityData.permissions = { 'read': [] };\r\n }\r\n $scope.data.entityData.permissions.read.push(result.groupName);\r\n _this.initialGroups.set(result.groupName, {});\r\n _this.processData($scope);\r\n }\r\n });\r\n };\r\n $scope.createPermissionGroup = function () {\r\n openAddModal();\r\n };\r\n this.processData($scope);\r\n this.initialGroups = $scope.groupPermissions;\r\n this.processParentData($scope);\r\n }\r\n ApcPermissionsCtrl.prototype.processData = function ($scope) {\r\n $scope.groupPermissions = new Map();\r\n for (var _i = 0, _a = Array.from($scope.permissionOptions.keys()); _i < _a.length; _i++) {\r\n var permissionBucketKey = _a[_i];\r\n var permissionBucket = $scope.permissionOptions.get(permissionBucketKey);\r\n if ($scope.data.entityData.permissions && $scope.data.entityData.permissions[permissionBucket.value]) {\r\n for (var _b = 0, _c = $scope.data.entityData.permissions[permissionBucket.value]; _b < _c.length; _b++) {\r\n var group = _c[_b];\r\n var groupEntry = $scope.groupPermissions.get(group);\r\n if (!groupEntry) {\r\n groupEntry = {\r\n groupName: group,\r\n permissions: new Set()\r\n };\r\n }\r\n groupEntry.permissions.add(permissionBucket.value);\r\n $scope.groupPermissions.set(group, groupEntry);\r\n }\r\n }\r\n }\r\n if (this.initialGroups) {\r\n for (var _d = 0, _e = Array.from(this.initialGroups.keys()); _d < _e.length; _d++) {\r\n var initialGroup = _e[_d];\r\n if (!$scope.groupPermissions.get(initialGroup)) {\r\n $scope.groupPermissions.set(initialGroup, {\r\n groupName: initialGroup,\r\n permissions: new Set()\r\n });\r\n }\r\n }\r\n }\r\n $scope.groupPermissionsList = Array.from($scope.groupPermissions.values()).sort(function (a, b) {\r\n return a['groupName'] === b['groupName'] ? 0 : a['groupName'] > b['groupName'] ? 1 : -1;\r\n });\r\n $scope.permissionOptionsList = Array.from($scope.permissionOptions.values());\r\n $scope.hasData = $scope.groupPermissionsList.length > 0;\r\n };\r\n ApcPermissionsCtrl.prototype.processParentData = function ($scope) {\r\n if ($scope.parent) {\r\n $scope.parentGroupPermissions = new Map();\r\n for (var _i = 0, _a = Array.from($scope.permissionOptions.keys()); _i < _a.length; _i++) {\r\n var permissionBucketKey = _a[_i];\r\n var permissionBucket = $scope.permissionOptions.get(permissionBucketKey);\r\n if ($scope.parent.entityData.permissions && $scope.parent.entityData.permissions[permissionBucket.value]) {\r\n for (var _b = 0, _c = $scope.parent.entityData.permissions[permissionBucket.value]; _b < _c.length; _b++) {\r\n var group = _c[_b];\r\n var groupEntry = $scope.parentGroupPermissions.get(group);\r\n if (!groupEntry) {\r\n groupEntry = {\r\n groupName: group,\r\n permissions: new Set()\r\n };\r\n }\r\n groupEntry.permissions.add(permissionBucket.value);\r\n $scope.parentGroupPermissions.set(group, groupEntry);\r\n }\r\n }\r\n }\r\n $scope.parentGroupPermissionsList = Array.from($scope.parentGroupPermissions.values()).sort(function (a, b) {\r\n return a['groupName'] === b['groupName'] ? 0 : a['groupName'] > b['groupName'] ? 1 : -1;\r\n });\r\n $scope.parentHasData = $scope.parentGroupPermissionsList.length > 0;\r\n }\r\n };\r\n return ApcPermissionsCtrl;\r\n}());\r\nexports.ApcPermissionsCtrl = ApcPermissionsCtrl;\r\n\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          Group permissions explained
          This section is for managing group permissions for the current entity. The users that belong to a certain group will have read/write permissions for this entity and all its sub-entities.
          For example, if a user it's part of the read group at the programmer level, it will have read access to that specific programmer and all of it's channels. If the same user it's also part of the write group for a specific channel, it will also have write access to that specific channel.

          Inherited Permissions from {{parent.entityData.displayName}} programmer

          Group ID {{permission.label}}
          {{groupPermission.groupName}}
          Group ID {{permission.label}} Remove
          {{groupPermission.groupName}}

          No data available

          \";\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AddPermissionCtrl = (function () {\r\n AddPermissionCtrl.$inject = [\"$scope\", \"$uibModalInstance\"];\r\n function AddPermissionCtrl($scope, $uibModalInstance) {\r\n \"ngInject\";\r\n $scope.groupName = '';\r\n $scope.ok = function () {\r\n $uibModalInstance.close({\r\n groupName: $scope.groupName\r\n });\r\n };\r\n $scope.cancel = function () {\r\n $uibModalInstance.close({});\r\n };\r\n }\r\n return AddPermissionCtrl;\r\n}());\r\nexports.AddPermissionCtrl = AddPermissionCtrl;\r\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar ReportItem_1 = __webpack_require__(238);\r\nvar Tabs_1 = __webpack_require__(3);\r\nvar reportlist_1 = __webpack_require__(239);\r\nvar ReportModule = (function () {\r\n function ReportModule() {\r\n this.ngRef.controller('ReportItemCtrl', ReportItem_1.ReportItemCtrl);\r\n }\r\n ReportModule.prototype.config = [\"$stateProvider\", \"States\", function ($stateProvider, States) {\r\n \"ngInject\";\r\n var basicView = {\r\n template: __webpack_require__(11),\r\n controller: ReportItem_1.ReportItemCtrl\r\n };\r\n $stateProvider.state(States.ReportAuthnData.name, {\r\n abstract: States.ReportAuthnData.abstract,\r\n url: States.ReportAuthnData.url,\r\n ncyBreadcrumb: {\r\n label: States.ReportAuthnData.overrideDisplayName\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(5),\r\n controller: Tabs_1.TabsCtrl\r\n },\r\n 'tabs@Base.Report': {\r\n template: __webpack_require__(6)\r\n },\r\n 'tabContent@Base.Report': {\r\n template: __webpack_require__(11),\r\n controller: ReportItem_1.ReportItemCtrl,\r\n },\r\n 'ttlReportTabContent@Base.Report': {\r\n templateUrl: function () {\r\n return 'module/ui/template/reports/AuthNReport.html';\r\n }\r\n },\r\n 'entityItemBasic@Base.Report': basicView\r\n },\r\n resolve: {\r\n tabs: [\"States\", function (States) {\r\n var result = [];\r\n result.push({\r\n state: States.ReportAuthnData,\r\n id: States.ReportAuthnData.id\r\n });\r\n result.push({\r\n state: States.ReportAuthzData,\r\n id: States.ReportAuthzData.id\r\n });\r\n result.push({\r\n state: States.ReportSSOData,\r\n id: States.ReportSSOData.id\r\n });\r\n return result;\r\n }],\r\n selectedReport: function () {\r\n return reportlist_1.default.find(function (report) { return report.id === 'authnReport'; });\r\n },\r\n serviceProviderList: [\"ChannelService\", function (ChannelService) {\r\n return ChannelService.getAll().then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n mvpdList: [\"MvpdGenericService\", function (MvpdGenericService) {\r\n return MvpdGenericService.getAll().then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n integrationList: [\"IntegrationService\", function (IntegrationService) {\r\n return IntegrationService.getAllIntegrations().then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n });\r\n $stateProvider.state(States.ReportAuthzData.name, {\r\n abstract: States.ReportAuthzData.abstract,\r\n url: States.ReportAuthzData.url,\r\n ncyBreadcrumb: {\r\n label: States.ReportAuthzData.displayName\r\n },\r\n views: {\r\n 'tabContent@Base.Report': {\r\n template: __webpack_require__(11),\r\n controller: ReportItem_1.ReportItemCtrl,\r\n },\r\n 'ttlReportTabContent@Base.Report.Authz': {\r\n templateUrl: function () {\r\n return 'module/ui/template/reports/AuthZReport.html';\r\n }\r\n },\r\n 'entityItemBasic@Base.Report': basicView\r\n },\r\n resolve: {\r\n selectedReport: function () {\r\n return reportlist_1.default.find(function (report) { return report.id === 'authzReport'; });\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.ReportSSOData.name, {\r\n abstract: States.ReportSSOData.abstract,\r\n url: States.ReportSSOData.url,\r\n ncyBreadcrumb: {\r\n label: States.ReportSSOData.displayName\r\n },\r\n views: {\r\n 'tabContent@Base.Report': {\r\n template: __webpack_require__(11),\r\n controller: ReportItem_1.ReportItemCtrl,\r\n },\r\n 'ssoReportTabContent@Base.Report.SSO': {\r\n templateUrl: function () {\r\n return 'module/ui/template/reports/SSOReport.html';\r\n }\r\n },\r\n 'entityItemBasic@Base.Report': basicView\r\n },\r\n resolve: {\r\n selectedReport: function () {\r\n return reportlist_1.default.find(function (report) { return report.id === 'ssoReport'; });\r\n }\r\n }\r\n });\r\n }];\r\n ReportModule = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'report',\r\n dependencies: ['ui.bootstrap', 'ui.router', 'core', 'data']\r\n })\r\n ], ReportModule);\r\n return ReportModule;\r\n}());\r\nexports.ReportModule = ReportModule;\r\n\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * @class ReportItemCtrl\r\n * @memberOf module:report\r\n * @param {Object} $scope - Angular scope\r\n * @param {module:core.States} States - Application states\r\n * @param {module:data.BulkService} BulkService - Bulk service\r\n * @param {module:data.IntegrationService} IntegrationService - Integrations service\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar _ = __webpack_require__(1);\r\nvar ReportItemCtrl = (function () {\r\n ReportItemCtrl.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"Config\", \"States\", \"serviceProviderList\", \"mvpdList\", \"selectedReport\", \"ReportService\", \"integrationList\"];\r\n function ReportItemCtrl($rootScope, $scope, $state, Config, States, serviceProviderList, mvpdList, selectedReport, ReportService, integrationList) {\r\n \"ngInject\";\r\n $scope.$on(\"onPageChange\", function () {\r\n var tableListElement = document.getElementById('table-list');\r\n window.scrollTo(0, window.scrollY - tableListElement.offsetHeight);\r\n });\r\n /**\r\n * @name module:report.ReportItemCtrl#pageSize\r\n * @type {Number}\r\n * @default Config.PAGE_SIZE\r\n * @description Page size used by {@link module:ui.PanelListDirective#pageSize}\r\n */\r\n $scope.pageSize = Config.PAGE_SIZE;\r\n /**\r\n * @name module:report.ReportItemCtrl#service\r\n * @type {Object}\r\n * @description Data retrieval service. Used by {@link module:ui.PanelListDirective#service}\r\n */\r\n $scope.service = ReportService;\r\n ReportService.selectedReport = selectedReport;\r\n $scope.columns = selectedReport.columns;\r\n $scope.renderer = selectedReport.renderer;\r\n $scope.data = { entities: [] };\r\n $scope.reportStatus = \"Loading Data\";\r\n $scope.selectedChannelsList = [];\r\n $scope.selectedMvpdsList = [];\r\n integrationList = integrationList.entities;\r\n integrationList.sort(function (a, b) {\r\n if (a.entityData.serviceProvider === b.entityData.serviceProvider) {\r\n return a.entityData.owner > b.entityData.owner ? 1 : -1;\r\n }\r\n return a.entityData.serviceProvider > b.entityData.serviceProvider ? 1 : -1;\r\n });\r\n /**\r\n * @name module:report.ReportItemCtrl\r\n * @description For populating data of report\r\n */\r\n $scope.getData = function () {\r\n ReportService.selectedChannelsList = $scope.selectedChannelsList;\r\n ReportService.selectedMvpdsList = $scope.selectedMvpdsList;\r\n ReportService.finalData = integrationList\r\n .filter(function (integration) { return $scope.selectedChannelsList.some(function (channel) { return channel.key === integration.entityData.serviceProvider.split('@')[1]; }); })\r\n .filter(function (integration) { return $scope.selectedMvpdsList.some(function (mvpd) { return mvpd.key === integration.entityData.owner.split('@')[1]; }); });\r\n $scope.loading = true;\r\n ReportService.getPage(1, \"\", \"\", \"\").then(function (response) {\r\n $scope.data = response.data;\r\n $scope.loading = false;\r\n });\r\n };\r\n /**\r\n * @name module:report.ReportItemCtrl\r\n * @description For populating Service Provider List in dropdown\r\n */\r\n $scope.getAvailableChannelsList = function () {\r\n $scope.availableChannelsList = (serviceProviderList.entities).sort(function (a, b) { return a.entityData.displayName > b.entityData.displayName ? 1 : -1; });\r\n _.forEach($scope.availableChannelsList, function (channel) {\r\n // Select all channels by default\r\n channel.selected = true;\r\n });\r\n $scope.selectedChannelsList = $scope.availableChannelsList.filter(function (channel) { return channel.selected === true; });\r\n // Determine if all available channels where selected\r\n $scope.selectAllChannels = $scope.selectedChannelsList.length !== 0 && $scope.availableChannelsList.length === $scope.selectedChannelsList.length;\r\n };\r\n /**\r\n * @name module:report.ReportItemCtrl\r\n * @description For populating MVPD List in dropdown according to the channel selected\r\n */\r\n $scope.getAvailableMVPDsList = function () {\r\n // Compute available MVPDs for selected channels list\r\n var availableIntegrations = new Set();\r\n _.forEach($scope.selectedChannelsList, function (channel) {\r\n var integrations = Object.keys(channel.entityData.integrations);\r\n _.forEach(integrations, function (integration) {\r\n availableIntegrations.add(integration);\r\n });\r\n });\r\n $scope.availableMvpdsList = [];\r\n _.forEach(Array.from(availableIntegrations), function (integration) {\r\n var mvpd = mvpdList.entities.find(function (m) { return m.key === integration.split('@')[1]; });\r\n if (mvpd) {\r\n // Select all available MVPDs by default\r\n mvpd.selected = true;\r\n $scope.availableMvpdsList.push(mvpd);\r\n }\r\n });\r\n $scope.availableMvpdsList = ($scope.availableMvpdsList).sort(function (a, b) { return a.entityData.displayName > b.entityData.displayName ? 1 : -1; });\r\n $scope.selectedMvpdsList = $scope.availableMvpdsList.filter(function (mvpd) { return mvpd.selected === true; });\r\n // Determine if all available MVPDs where selected\r\n $scope.selectAllMvpds = $scope.selectedMvpdsList.length !== 0 && $scope.availableMvpdsList.length === $scope.selectedMvpdsList.length;\r\n };\r\n /**\r\n * @name module:report.ReportItemCtrl\r\n * @description On selection of channel in filters, method updates the data\r\n */\r\n $scope.selectChannel = function (channel) {\r\n if (!channel) {\r\n $scope.selectAllChannels = !$scope.selectAllChannels;\r\n if ($scope.selectAllChannels === false) {\r\n // Deselect all channels\r\n _.forEach($scope.selectedChannelsList, function (selectedChannel) {\r\n selectedChannel.selected = false;\r\n });\r\n $scope.selectedChannelsList = [];\r\n }\r\n else {\r\n // Select all channels\r\n $scope.getAvailableChannelsList();\r\n }\r\n }\r\n else {\r\n channel.selected = !channel.selected;\r\n if (channel.selected === false) {\r\n $scope.selectAllChannels = false;\r\n }\r\n $scope.selectedChannelsList = $scope.availableChannelsList.filter(function (availableChannel) { return availableChannel.selected === true; });\r\n if ($scope.selectedChannelsList.length === $scope.availableChannelsList.length) {\r\n $scope.selectAllChannels = true;\r\n }\r\n }\r\n $scope.getAvailableMVPDsList();\r\n $scope.getData();\r\n };\r\n /**\r\n * @name module:report.ReportItemCtrl\r\n * @description On selection of mvpds in filters, method updates the data\r\n */\r\n $scope.selectMvpd = function (mvpd) {\r\n if (!mvpd) {\r\n $scope.selectAllMvpds = !$scope.selectAllMvpds;\r\n if ($scope.selectAllMvpds === false) {\r\n _.forEach($scope.selectedMvpdsList, function (selectedMvpd) {\r\n selectedMvpd.selected = false;\r\n });\r\n $scope.selectedMvpdsList = [];\r\n }\r\n else {\r\n $scope.getAvailableMVPDsList();\r\n }\r\n }\r\n else {\r\n mvpd.selected = !mvpd.selected;\r\n if (mvpd.selected === false) {\r\n $scope.selectAllMvpds = false;\r\n }\r\n $scope.selectedMvpdsList = $scope.availableMvpdsList.filter(function (selectedMvpd) { return selectedMvpd.selected === true; });\r\n if ($scope.selectedMvpdsList.length === $scope.availableMvpdsList.length) {\r\n $scope.selectAllMvpds = true;\r\n }\r\n }\r\n $scope.getData();\r\n };\r\n // Populate selected Channels list and selected MVPDs list with all available data\r\n $scope.init = function () {\r\n $scope.getAvailableChannelsList();\r\n $scope.getAvailableMVPDsList();\r\n $scope.getData();\r\n };\r\n $scope.init();\r\n /**\r\n * @name module:report.ReportItemCtrl\r\n * @description Exports the reports in a csv format\r\n */\r\n $scope.exportConfiguration = function () {\r\n if (!($scope.data && $scope.data.entities.length)) {\r\n window.alert('No data to export');\r\n return;\r\n }\r\n ReportService.selectedChannelsList = $scope.selectedChannelsList;\r\n ReportService.selectedMvpdsList = $scope.selectedMvpdsList;\r\n var integrations = integrationList\r\n .filter(function (integration) { return $scope.selectedChannelsList.some(function (channel) { return channel.key === integration.entityData.serviceProvider.split('@')[1]; }); })\r\n .filter(function (integration) { return $scope.selectedMvpdsList.some(function (mvpd) { return mvpd.key === integration.entityData.owner.split('@')[1]; }); });\r\n var downloadItems;\r\n $scope.loading = true;\r\n $scope.reportStatus = \"Exporting Data\";\r\n ReportService.getDownloadData(integrations).then(function (response) {\r\n downloadItems = response.data;\r\n }).then(function () {\r\n ReportService.prepareDownloadReport(downloadItems, $state.current.name, States)\r\n .then(function (csvData) {\r\n ReportService.downloadFile(csvData);\r\n $scope.loading = false;\r\n $scope.reportStatus = \"Loading Data\";\r\n });\r\n });\r\n };\r\n /**\r\n * @name module:report.ReportItemCtrl#service\r\n * @type {Object}\r\n * @description Item Click Method. Used by {@link module:ui.PanelListDirective#service}\r\n */\r\n $scope.onItemClick = function () {\r\n return;\r\n };\r\n }\r\n return ReportItemCtrl;\r\n}());\r\nexports.ReportItemCtrl = ReportItemCtrl;\r\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * @name module:ui.Reports#reports\r\n * @JSON\r\n * @description Reports JSON. Any new report can be added here {@link module:ui.ReportsItemCtrl}\r\n * @template: HTML template of your report to be added 'module/ui/template/reports/.html'\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar columns = [\r\n {\r\n name: 'CHANNEL',\r\n sortable: false,\r\n sorted: true,\r\n sortAsc: true,\r\n sortField: 'serviceProvider',\r\n class: 'col-xs-1'\r\n },\r\n {\r\n \"name\": \"MVPD\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n },\r\n {\r\n \"name\": \"BROWSERS\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n }, {\r\n \"name\": \"MOBILE: IOS\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n }, {\r\n \"name\": \"MOBILE: ANDROID\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n }, {\r\n \"name\": \"MOBILE: OTHERS\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n }, {\r\n \"name\": \"TVCD: ROKU\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n },\r\n {\r\n \"name\": \"TVCD: FIRETV\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n },\r\n {\r\n \"name\": \"TVCD: APPLETV\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n },\r\n {\r\n \"name\": \"TVCD: OTHERS\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n }, {\r\n \"name\": \"PLATFORM: UNKNOWN\",\r\n \"sortable\": false,\r\n \"class\": \"col-xs-1\"\r\n }\r\n];\r\n/**\r\n * @name module:ui.Reports#reports\r\n * @JSON\r\n * @param {String} id - Report Id\r\n * @param {Columns} columns - Columns of the report for which data will hold values\r\n * @param {String} reportName - Display Name of the report\r\n*/\r\nvar reports = [{\r\n \"id\": \"authnReport\",\r\n // If there exists a nested structure for columns, Add only the columns which will hold actual values\r\n \"columns\": columns,\r\n \"reportName\": \"TTL Report\",\r\n \"renderer\": \"AuthNReport.html\",\r\n \"layout\": \"ttlReportTabContent\"\r\n }, {\r\n \"id\": \"authzReport\",\r\n // If there exists a nested structure for columns, Add only the columns which will hold actual values\r\n \"columns\": columns,\r\n \"reportName\": \"TTL Report\",\r\n \"renderer\": \"AuthZReport.html\",\r\n \"layout\": \"ttlReportTabContent\"\r\n }, {\r\n \"id\": \"ssoReport\",\r\n // If there exists a nested structure for columns, Add only the columns which will hold actual values\r\n \"columns\": columns,\r\n \"reportName\": \"SSO Report\",\r\n \"renderer\": \"SSOReport.html\",\r\n \"layout\": \"ssoReportTabContent\"\r\n }\r\n];\r\nexports.default = reports;\r\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar angular = __webpack_require__(0);\r\nvar AngularModule_1 = __webpack_require__(2);\r\nvar Header_1 = __webpack_require__(26);\r\nvar Footer_1 = __webpack_require__(27);\r\nvar Dashboard_1 = __webpack_require__(28);\r\nvar ChangeLog_1 = __webpack_require__(29);\r\nvar Forbidden_1 = __webpack_require__(241);\r\nvar Sidebar_1 = __webpack_require__(25);\r\nvar App = (function () {\r\n function App() {\r\n }\r\n App.prototype.config = [\"$stateProvider\", \"$urlRouterProvider\", \"$breadcrumbProvider\", \"$qProvider\", \"States\", function ($stateProvider, $urlRouterProvider, $breadcrumbProvider, $qProvider, States) {\r\n \"ngInject\";\r\n $qProvider.errorOnUnhandledRejections(true);\r\n $breadcrumbProvider.setOptions({\r\n includeAbstract: false\r\n });\r\n $stateProvider.state(States.Base.name, {\r\n abstract: States.Base.abstract,\r\n url: States.Base.url,\r\n ncyBreadcrumb: {\r\n skip: true\r\n },\r\n params: {\r\n reset: false\r\n },\r\n views: {\r\n 'header': {\r\n template: __webpack_require__(242),\r\n controller: Header_1.HeaderCtrl\r\n },\r\n 'sidebar': {\r\n template: __webpack_require__(243),\r\n controller: Sidebar_1.SidebarCtrl,\r\n resolve: {\r\n navItems: [\"NavService\", function (NavService) {\r\n return NavService.getAvailableNavigationStates();\r\n }]\r\n }\r\n },\r\n 'content': {\r\n template: __webpack_require__(43)\r\n },\r\n 'footer': {\r\n template: __webpack_require__(244),\r\n controller: Footer_1.FooterCtrl\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.Forbidden.name, {\r\n abstract: States.Forbidden.abstract,\r\n url: States.Forbidden.url,\r\n ncyBreadcrumb: {\r\n skip: true\r\n },\r\n params: {\r\n reset: false,\r\n forbidden: false\r\n },\r\n onEnter: [\"$stateParams\", \"$rootScope\", \"$state\", \"States\", function ($stateParams, $rootScope, $state, States) {\r\n if (!$rootScope.error || !$rootScope.error.active) {\r\n $state.go(States.Dashboard.name);\r\n }\r\n $rootScope.appLoading = false;\r\n }],\r\n views: {\r\n 'content@': {\r\n controller: Forbidden_1.Forbidden,\r\n template: function ($stateParams) {\r\n if ($stateParams.forbidden) {\r\n return __webpack_require__(245);\r\n }\r\n else {\r\n return __webpack_require__(43);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.Dashboard.name, {\r\n abstract: States.Dashboard.abstract,\r\n url: States.Dashboard.url,\r\n ncyBreadcrumb: {\r\n label: States.Dashboard.displayName\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(246),\r\n controller: Dashboard_1.DashboardCtrl,\r\n resolve: {\r\n latestChanges: [\"HistoryService\", function (HistoryService) {\r\n return HistoryService.getRecent().then(function (response) {\r\n return response.data.configurationInformationList;\r\n });\r\n }],\r\n serviceProviderList: [\"ChannelService\", function (ChannelService) {\r\n return ChannelService.getPage(1, 'displayName', 'ASC').then(function (response) {\r\n return response.data;\r\n });\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n $stateProvider.state(States.History.name, {\r\n abstract: States.History.abstract,\r\n url: States.History.url,\r\n ncyBreadcrumb: {\r\n label: States.History.displayName\r\n },\r\n views: {\r\n 'page@Base': {\r\n template: __webpack_require__(247),\r\n controller: ChangeLog_1.ChangelogCtrl,\r\n resolve: {\r\n history: [\"HistoryService\", function (HistoryService) {\r\n return HistoryService.getPage(1).then(function (response) {\r\n return response.data;\r\n });\r\n }],\r\n highlight: [\"$stateParams\", function ($stateParams) {\r\n return $stateParams.highlight;\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n /* Add New States Above */\r\n $urlRouterProvider.otherwise('/');\r\n }];\r\n App.prototype.run = [\"$log\", \"$timeout\", \"$http\", \"$rootScope\", \"$state\", \"States\", \"UserService\", \"CacheService\", \"DataCollectorService\", \"SearchEvent\", \"ResilienceService\", \"NotificationService\", function ($log, $timeout, $http, $rootScope, $state, States, UserService, CacheService, DataCollectorService, SearchEvent, ResilienceService, NotificationService) {\r\n \"ngInject\";\r\n $log.log('Starting the application...');\r\n //$rootScope.appLoading = true;\r\n $rootScope.statusMessage = \"Loading application\";\r\n $rootScope.safeApply = function (fn) {\r\n var phase = $rootScope.$$phase;\r\n if (phase === '$apply' || phase === '$digest') {\r\n if (fn && (typeof (fn) === 'function')) {\r\n fn();\r\n }\r\n }\r\n else {\r\n this.$apply(fn);\r\n }\r\n };\r\n $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {\r\n if (toParams.reset) {\r\n CacheService.reset();\r\n DataCollectorService.reset();\r\n toParams.reset = false;\r\n }\r\n if (toState.name !== States.Forbidden.name) {\r\n $rootScope.error = {\r\n active: false\r\n };\r\n }\r\n if (!UserService.isLoggedIn() && toState.name !== States.Forbidden.name) {\r\n event.preventDefault();\r\n $rootScope.statusMessage = \"Checking authentication\";\r\n UserService.checkAuthentication().then(function () {\r\n $rootScope.appLoading = false;\r\n $state.go(toState.name, toParams);\r\n });\r\n }\r\n else {\r\n if ((toState.name.indexOf('Admin') !== -1 && !UserService.hasRole('ROLE_CONSOLE_ADMIN')) || (toState.roles && !UserService.hasRole(\"ROLE_CONSOLE_\" + toState.roles))) {\r\n event.preventDefault();\r\n $rootScope.appLoading = false;\r\n $state.go(States.Dashboard.name);\r\n }\r\n else if (toState.name !== States.Forbidden.name) {\r\n $rootScope.loadingTimeout = $timeout(function () {\r\n $rootScope.statusMessage = \"Loading data\";\r\n $rootScope.appLoading = true;\r\n }, 300);\r\n }\r\n }\r\n });\r\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\r\n $rootScope.$broadcast(SearchEvent.CLEAR);\r\n $timeout.cancel($rootScope.loadingTimeout);\r\n if (ResilienceService.getResilienceState()) {\r\n NotificationService.errorWithHelperLink(\"Degraded state\", \"Only search and sort functionality is affected. \", ResilienceService.getTroubleshootingLink());\r\n }\r\n else {\r\n NotificationService.removeError(\"Degraded state\");\r\n }\r\n $rootScope.appLoading = false;\r\n });\r\n $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, Error) {\r\n $timeout.cancel($rootScope.loadingTimeout);\r\n $rootScope.statusMessage = \"Loading data\";\r\n $rootScope.appLoading = false;\r\n });\r\n $rootScope.$on(\"$viewContentLoaded\", function () {\r\n $(window).scrollTop();\r\n });\r\n $rootScope.user = UserService;\r\n $log.info('Application started.');\r\n }];\r\n App.prototype.bootstrap = function () {\r\n angular.element(document).ready(function () {\r\n var initInjector = angular.injector(['ng']);\r\n var $log = initInjector.get('$log');\r\n $log.log('Bootstrapping the application...');\r\n angular.bootstrap(document, ['apc'], {\r\n strictDi: false\r\n });\r\n $('body').tooltip({\r\n selector: '[data-toggle=tooltip]'\r\n });\r\n });\r\n };\r\n App = __decorate([\r\n AngularModule_1.AngularModuleConfig({\r\n moduleName: 'apc',\r\n dependencies: [\r\n 'ui.bootstrap',\r\n 'ui.router',\r\n 'ngCookies',\r\n 'angular-md5',\r\n 'ncy-angular-breadcrumb',\r\n 'xml',\r\n 'toggle-switch',\r\n 'core',\r\n 'security',\r\n 'data',\r\n 'diff',\r\n 'admin',\r\n 'filters',\r\n 'ui',\r\n 'channel',\r\n 'integration',\r\n 'programmer',\r\n 'mvpd',\r\n 'feedback',\r\n 'report',\r\n 'btorfs.multiselect'\r\n ]\r\n })\r\n ], App);\r\n return App;\r\n}());\r\nexports.App = App;\r\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*************************************************************************\r\n * ADOBE CONFIDENTIAL\r\n * ___________________\r\n *\r\n * Copyright 2017 Adobe Systems Incorporated\r\n * All Rights Reserved.\r\n *\r\n * NOTICE: All information contained herein is, and remains\r\n * the property of Adobe Systems Incorporated and its suppliers,\r\n * if any. The intellectual and technical concepts contained\r\n * herein are proprietary to Adobe Systems Incorporated and its\r\n * suppliers and are protected by all applicable intellectual property laws,\r\n * including trade secret and copyright laws.\r\n * Dissemination of this information or reproduction of this material\r\n * is strictly forbidden unless prior written permission is obtained\r\n * from Adobe Systems Incorporated.\r\n ************************************************************************/\r\nvar _ = __webpack_require__(1);\r\nvar Forbidden = (function () {\r\n Forbidden.$inject = [\"$window\", \"$rootScope\", \"$scope\", \"$injector\", \"$stateParams\", \"UserService\"];\r\n function Forbidden($window, $rootScope, $scope, $injector, $stateParams, UserService) {\r\n \"ngInject\";\r\n if ($stateParams.forbidden) {\r\n $rootScope.hiddenSidebar = true;\r\n $scope.status = 'init';\r\n $scope.user = UserService.getUserData();\r\n $scope.done = function () {\r\n $window.location.reload();\r\n };\r\n var userRoles = UserService.getUserRoles();\r\n if (_.keys(userRoles).length === 0) {\r\n $scope.unavailable = true;\r\n }\r\n }\r\n }\r\n return Forbidden;\r\n}());\r\nexports.Forbidden = Forbidden;\r\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

          Access to this application is restricted. If you think this in an error please submit a ticket to support@tve.zendesk.com

          \";\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"

          Latest Changes

          Changes Push Date Made By Email Export
          = 2 && !selected[$index]\\\"/>
          {{change.configurationSaveInformation.message}} {{change.configurationSaveInformation.saveTimestamp | date:'medium'}} {{change.configurationSaveInformation.userProfile.displayName}} {{change.configurationSaveInformation.userProfile.email}}

          No changes to display

          \";\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
          0\\\" class=pagination-holder>
          Changes Push Date Made By Push Status Pushed By Export Export Split
          = 2 && !selected[change.configurationSaveInformation.configurationVersion]\\\"/>
          {{change.configurationSaveInformation.message}} {{change.configurationSaveInformation.saveTimestamp | date:'medium'}} {{change.configurationSaveInformation.userProfile.displayName}} {{change.configurationPushInformation.pushResultStatus}} {{change.configurationSaveInformation.userProfile.email}}

          No changes to display

            \";\n\n/***/ }),\n/* 248 */,\n/* 249 */,\n/* 250 */,\n/* 251 */,\n/* 252 */,\n/* 253 */,\n/* 254 */,\n/* 255 */,\n/* 256 */,\n/* 257 */,\n/* 258 */,\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar map = {\n\t\"./index.html\": 260,\n\t\"./module/ui/directive/Applications/Add/AddApplication.html\": 261,\n\t\"./module/ui/directive/Applications/View/ViewApplication.html\": 262,\n\t\"./module/ui/directive/Certificates/Add/AddCertificate.html\": 263,\n\t\"./module/ui/directive/Certificates/Delete/DeleteCertificate.html\": 264,\n\t\"./module/ui/directive/Certificates/Edit/EditCertificate.html\": 265,\n\t\"./module/ui/directive/ClientData/ClientData.html\": 266,\n\t\"./module/ui/directive/ClientData/ClientDataBasic.html\": 267,\n\t\"./module/ui/directive/Manglers/Manglers.html\": 268,\n\t\"./module/ui/directive/Manglers/ManglersAuthnBasic.html\": 269,\n\t\"./module/ui/directive/Manglers/ManglersAuthzBasic.html\": 270,\n\t\"./module/ui/directive/Permissions/Add/AddPermission.html\": 271,\n\t\"./module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html\": 272,\n\t\"./module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html\": 273,\n\t\"./module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html\": 274,\n\t\"./module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html\": 275,\n\t\"./module/ui/template/endpoint/authenticationProviderConfiguration-rules.html\": 276,\n\t\"./module/ui/template/endpoint/authenticationProviderConfiguration-settings.html\": 277,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html\": 278,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-rules.html\": 279,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-settings.html\": 280,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html\": 281,\n\t\"./module/ui/template/endpoint/logoutProviderConfiguration-certificates.html\": 282,\n\t\"./module/ui/template/endpoint/logoutProviderConfiguration-rules.html\": 283,\n\t\"./module/ui/template/endpoint/logoutProviderConfiguration-settings.html\": 284,\n\t\"./module/ui/template/renderer/IntegrationRenderer.html\": 285,\n\t\"./module/ui/template/renderer/LiveIntegrationRenderer.html\": 286,\n\t\"./module/ui/template/renderer/MvpdRenderer.html\": 287,\n\t\"./module/ui/template/renderer/ProgrammerRenderer.html\": 288,\n\t\"./module/ui/template/reports/AuthNReport.html\": 289,\n\t\"./module/ui/template/reports/AuthZReport.html\": 290,\n\t\"./module/ui/template/reports/SSOReport.html\": 291,\n\t\"./static/res/swagger/o2c.html\": 292\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 259;\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\nAdobe Pass Console\\n\\n\\n\\n\\n
            \\n
            \\n
            Loading application
            \\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n\";\nvar id1=\"/index.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
            \\n

            New Registered Application

            \\n
            \\n
            \\n
            \\n\\n
            \\n \\n \\n \\n \\n
            \\n
            \\n\\n
            \\n \\n \\n
            \\n \\n
            \\n
            \\n \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n\\n
            \\n
            \\n \\n \\n
            \\n \\n \\n
            \\n\";\nvar id1=\"AddApplication.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
            \\n

            {{application.entityData.name}} - Registered Application

            \\n
            \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n
            \\n
            \\n
            \\n \\n \\n
            \\n \\n\\n
            \\n The certificate cannot be successfully parsed. Please update its\\n content\\n and try again.\\n
            \\n
            \\n\\n
            \\n

            Used On

            \\n \\n
            \\n Warning!\\n
            {{getEncryptionCertificateWarningMessage()}}\\n
            \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
            User metadata encryption\\n \\n \\n
            \\n \\n \\n
            \\n
            {{platform.description}}\\n \\n \\n
            \\n \\n \\n
            \\n
            \\n
            \\n
            \\n
            \\n
            \\n
            \\n \\n \\n
            \\n\";\nvar id1=\"AddCertificate.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
            \\n

            Delete Certificate

            \\n
            \\n
            \\n
            \\n
            \\n

            Are you sure you want to delete the certificate?

            \\n
            \\n
            \\n Warning!\\n
            {{getEncryptionCertificateWarningMessage()}}\\n
            \\n
            \\n
            \\n
            \\n \\n \\n
            \\n\";\nvar id1=\"DeleteCertificate.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
            \\n

            Edit Certificate

            \\n
            \\n
            \\n
            \\n
            \\n

            Used On

            \\n\\n \\n
            \\n Warning!\\n
            {{getEncryptionCertificateWarningMessage()}}\\n
            \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
            User metadata encryption\\n \\n \\n
            \\n \\n \\n
            \\n
            {{platform.description}}\\n \\n \\n
            \\n \\n \\n
            \\n
            \\n
            \\n
            \\n
            \\n
            \\n \\n \\n
            \\n\";\nvar id1=\"EditCertificate.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n
            \\n\\n\\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n{{inheritData[property.field].value | boolean}}\\n\\n{{property.addon}}\\n
            \\n

            \\nValue should not be empty\\nValue should be a valid number\\nValue should not exceed 4000px\\nValue should be positive\\nValue should be integer\\n

            \\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            \\n
            \\n
            0\\\">\\n\\n
            \\n
            \\n\\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\";\nvar id1=\"module/ui/directive/ClientData/ClientData.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n
            \\n\\n\\n
            \\n
            \\n\\n\\n\\n\\n\\n{{inheritData[property.field].value | boolean}}\\n\\n{{property.addon}}\\n
            \\n

            \\nValue should be a valid number\\nValue should not exceed 4000px\\nValue should be positive\\nValue should be integer\\n

            \\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            \\n
            \\n
            \\n
            \\n\";\nvar id1=\"module/ui/directive/ClientData/ClientDataBasic.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n
            \\n
            \\n
            \\n
            \\n
            \\n

            Adobe Pass

            \\n
            \\n
            \\n
            \\n
            \\n

            MVPD

            \\n
            \\n
            \\n
            \\nRequest ({{getPropsByPhase('REQUEST').length}})\\n
            \\n
            \\nResponse ({{getPropsByPhase('RESPONSE').length}})\\n
            \\n
            \\nToken ({{getPropsByPhase('TOKEN').length}})\\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n\\n\\n{{inheritData[property.propertyName].value | boolean}}\\n\\n
            \\n

            \\nValue should be a valid number\\nValue should be positive\\nValue should be integer\\n

            \\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            \\n
            \\n
            \\n
            \\n\";\nvar id1=\"module/ui/directive/Manglers/Manglers.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n
            \\n\\n\\n
            \\n\\n\\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            \\n
            \\n
            \\n
            \\n\";\nvar id1=\"module/ui/directive/Manglers/ManglersAuthnBasic.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n
            \\n\\n\\n
            \\n\\n\\n
            \\n
            \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            \\n
            \\n
            \\n
            \\n\";\nvar id1=\"module/ui/directive/Manglers/ManglersAuthzBasic.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
            \\n

            Add new group

            \\n
            \\n
            \\n
            \\n The group ID must match the group ID from Adobe's Administration Dashboard. You should obtain the group ID from programmer's admin.\\n
            \\n
            \\n\\n
            \\n \\n \\n \\n \\n
            \\n
            \\n \\n \\n
            \\n \\n \\n
            \\n\";\nvar id1=\"AddPermission.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\";\nvar id1=\"module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\";\nvar id1=\"module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\";\nvar id1=\"module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            Serial NumberSubject passOrganizationIssuer OrganizationActive SinceExpires
            Certificate parse error{{certificateInfo.serialNumber}}{{certificateInfo.subjectOrganization}}{{certificateInfo.issuerOrganization}}{{certificateInfo.issued | date:'mediumDate'}}\\n{{certificateInfo.expires | date:'mediumDate'}}\\n
            \\n\";\nvar id1=\"module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/endpoint/authenticationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n\\n\\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n\\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n\\n
            \\n
            \\n\";\nvar id1=\"module/ui/template/endpoint/authenticationProviderConfiguration-settings.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            Serial NumberSubject passOrganizationIssuer OrganizationActive SinceExpires
            Certificate parse error{{certificateInfo.serialNumber}}{{certificateInfo.subjectOrganization}}{{certificateInfo.issuerOrganization}}{{certificateInfo.issued | date:'mediumDate'}}\\n{{certificateInfo.expires | date:'mediumDate'}}\\n
            \\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n
            \\n\\nPreFlight Configuration\\n\\n\\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n\\n
            \\n\\nDOS Protection\\n\\n\\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\\n
            \\n\\nTempPass Configuration\\n\\n\\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n
            \\n
            \\n
            \\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-settings.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n 0\\\">\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            \\n

            No tmsid map available

            \\n
            Resource IDTMS ID
            {{tmsId.resourceName}}{{tmsId.resourceId}}
            \\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
            Serial NumberSubject passOrganizationIssuer OrganizationActive SinceExpires
            Certificate parse error{{certificateInfo.serialNumber}}{{certificateInfo.subjectOrganization}}{{certificateInfo.issuerOrganization}}{{certificateInfo.issued | date:'mediumDate'}}\\n{{certificateInfo.expires | date:'mediumDate'}}\\n
            \\n\";\nvar id1=\"module/ui/template/endpoint/logoutProviderConfiguration-certificates.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/endpoint/logoutProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
            \\n
            \\n
            \\n\\n\\n
            \\n\\n
            \\n
            \\n\\n
            \\n
            \\n\";\nvar id1=\"module/ui/template/endpoint/logoutProviderConfiguration-settings.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n{{item.entityData.id | integrationParents:item:data}}\\n\\n\\n{{data.related[item.entityData.serviceProvider].entityData.displayName}}\\n\\nID: {{data.related[item.entityData.serviceProvider].entityData.id}}\\n\\n\\n\\n{{item | squash: 'displayName':'integration'}}\\n\\nID: {{item | squash: 'id':'integration'}}\\n\\n\\n\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/renderer/IntegrationRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n{{item.entityData.displayName}}\\n\\nID: {{item.entityData.id}}\\n\\n\\n{{item.entityData.integrations | count}}\\n\";\nvar id1=\"module/ui/template/renderer/LiveIntegrationRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.entityData.displayName}}\\nID: {{item.entityData.id}}\\n\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/renderer/MvpdRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.entityData.displayName}}\\n{{item.entityData.serviceProviders.length}}\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/renderer/ProgrammerRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.serviceProvider}}\\n{{item.mvpd}}\\n\\n\\n{{item.authentication.JS}}\\n\\n\\n\\n{{item.authentication.iOS}}\\n\\n\\n\\n{{item.authentication.Android}}\\n\\n\\n\\n{{item.authentication.mobileOthers}}\\n\\n\\n\\n{{item.authentication.roku}}\\n\\n\\n\\n{{item.authentication.fireTV}}\\n\\n\\n\\n{{item.authentication.tvOS}}\\n\\n\\n\\n{{item.authentication.tvcdOthers}}\\n\\n\\n\\n{{item.authentication.unknown}}\\n\\n\";\nvar id1=\"module/ui/template/reports/AuthNReport.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.serviceProvider}}\\n{{item.mvpd}}\\n\\n\\n{{item.authorization.JS}}\\n\\n\\n\\n{{item.authorization.iOS}}\\n\\n\\n\\n{{item.authorization.Android}}\\n\\n\\n\\n{{item.authorization.mobileOthers}}\\n\\n\\n\\n{{item.authorization.roku}}\\n\\n\\n\\n{{item.authorization.fireTV}}\\n\\n\\n\\n{{item.authorization.tvOS}}\\n\\n\\n\\n{{item.authorization.tvcdOthers}}\\n\\n\\n\\n{{item.authorization.unknown}}\\n\\n\";\nvar id1=\"module/ui/template/reports/AuthZReport.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.serviceProvider}}\\n{{item.mvpd}}\\n\\n\\n\\n\\n{{value}}\\n\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/reports/SSOReport.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports) {\n\nvar angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\";\nvar id1=\"static/res/swagger/o2c.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n/***/ })\n],[44]);\n\n\n// WEBPACK FOOTER //\n// app-3.14.0.js","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as angular from \"angular\";\n\nexport interface IAngularModuleOptions {\n moduleName: string;\n dependencies: string[];\n}\n\nexport function AngularModuleConfig(options: IAngularModuleOptions) {\n return function (targetClass) {\n targetClass.prototype.ngRef = angular.module(options.moduleName, options.dependencies);\n targetClass.prototype.ngRef.config(targetClass.prototype.config);\n targetClass.prototype.ngRef.run(targetClass.prototype.run);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/common/AngularModule.ts","export class TabsCtrl {\n constructor($scope, $state, States, tabs){\n \"ngInject\";\n /**\n * @name module:ui.TabsCtrl#tabs\n * @type {Array}\n * @description TabsCtrl list\n */\n $scope.tabs = tabs;\n /**\n * @name module:ui.TabsCtrl#$state\n * @type {Object}\n * @description Ui router state service\n */\n $scope.$state = $state;\n /**\n * @name module:ui.TabsCtrl#onTabClick\n * @method\n * @param {Event} event - Jquery click event\n * @description Prevent Bootstrap to control the tabs\n */\n $scope.onTabClick = function (event) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/partial/Tabs/Tabs.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as _ from \"lodash\";\nimport * as angular from 'angular';\n\nclass Notification {\n private title: string;\n private message: string;\n\n constructor(title: string, message: string) {\n this.title = title;\n this.message = message;\n }\n\n public getTitle(): string {\n return this.title;\n }\n\n public getMessage(): string {\n return this.message;\n }\n}\n\nexport class Notifications {\n public static confirmDeleteTMSID = new Notification(\"Delete Confirmation\", \"Are you sure you want to delete this\" +\n \" TMS ID? If deleted, the authorization flows that involves this TMS ID mapping will stop working.\");\n public static confirmDeleteDefaultMetadata = new Notification(\"Delete Confirmation\", \"Are you sure you want to\" +\n \" delete this default metadata? If deleted, this default metadata key will be removed from all existing\" +\n \" integrations.\");\n public static confirmDeleteDomain = new Notification(\"Delete Confirmation\", \"Are you sure you want to delete this\" +\n \" domain? If deleted, the application associated with this domain will not be able to use the Adobe Primetime\" +\n \" authentication service.\");\n public static confirmDeleteSniHostname = new Notification(\"Delete Confirmation\", \"Are you sure you want to delete this\" +\n \" SNI hostname? If deleted, the authorization may fail with this mvpd.\");\n}\n\nexport class NotificationModalCtrl {\n constructor($scope, $sce, $uibModalInstance, data) {\n \"ngInject\";\n\n $scope.title = data.title;\n $scope.message = $sce.trustAsHtml(data.message);\n $scope.type = data.type;\n $scope.options = data.options;\n\n $scope.ok = function () {\n $uibModalInstance.close(true);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close(false);\n };\n }\n}\n\nexport class NotificationService {\n constructor(private $rootScope, private $injector) {\n \"ngInject\";\n }\n\n public getConfirmationFromUser(notification: Notification) {\n return this.showDialog(notification.getTitle(), notification.getMessage(), 'warning', null);\n }\n\n public warn(title, message) {\n this.showError(title, message, 'warning');\n }\n\n public error(title, message, persist) {\n this.showError(title, message, 'danger', persist);\n }\n\n public success(title, message) {\n this.showError(title, message, 'success');\n }\n\n public warnModal(title, message, options) {\n return this.showDialog(title, message, 'warning', options);\n }\n\n public removeError(title) {\n if (this.$rootScope.error && this.$rootScope.error.title === title) {\n this.$rootScope.error = {\n active: false,\n type: \"danger\",\n title: title\n };\n }\n }\n\n public errorWithHelperLink(title, message, link) {\n this.showErrorWithHelperLink(title, message, 'danger', link);\n }\n\n private showError(title, message, type, persist?) {\n this.$rootScope.error = {\n active: true,\n type: type,\n title: title,\n persist: persist,\n message: !angular.isObject(message) ? message : null,\n list: angular.isObject(message) ? message : null\n };\n }\n\n private showErrorWithHelperLink(title, message, type, link) {\n this.$rootScope.error = {\n active: true,\n type: type,\n title: title,\n link: link,\n message: !angular.isObject(message) ? message : null,\n list: angular.isObject(message) ? message : null\n };\n }\n\n private showDialog(title, message, type, options) {\n let modalData = _.assign({\n templateUrl: 'modal.html',\n controller: NotificationModalCtrl,\n resolve: {\n data: function () {\n return {\n title: title,\n message: message,\n type: type,\n options: options\n };\n }\n },\n backdrop: 'static'\n }, options);\n\n return this.$injector.get('$uibModal').open(modalData);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/NotificationService.ts","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/template/tabs-layout.tmpl\n// module id = 5\n// module chunks = 0","module.exports = \"
            • {{tab.displayName || tab.state.displayName}}
            • \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/partial/Tabs/Tabs.tmpl\n// module id = 6\n// module chunks = 0","export class ApcAddChannelDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n programmer: '<'\n };\n this.template = require('./AddChannel.tmpl');\n this.controller = ApcAddChannelCtrl;\n }\n}\n\nexport class UniqueChannelValidator {\n public require;\n public restrict;\n public scope;\n public link;\n\n constructor() {\n this.restrict = 'A';\n this.require = 'ngModel';\n this.scope = {};\n this.link = function(scope, elm, attrs, ctrl) {\n let field = '';\n\n attrs.$observe('uniqueChannel', function(value) {\n field = value.toString() || '';\n ctrl.$validate();\n });\n\n ctrl.$asyncValidators.uniqueChannel = function(modelValue, viewValue) {\n let deferred = scope.$q.defer();\n\n if (!field) {\n deferred.reject();\n }\n\n scope.ChannelService.getAll().then(function(response) {\n let channels = response.data.entities;\n let result = channels.filter((channel) => {return channel.entityData[field].toLowerCase() === modelValue.toLowerCase()}).length === 0;\n\n if (result) {\n deferred.resolve();\n } else {\n deferred.reject();\n }\n });\n\n return deferred.promise;\n };\n }\n }\n\n controller($scope, $q, ChannelService) {\n \"ngInject\";\n $scope.ChannelService = ChannelService;\n $scope.$q = $q;\n }\n}\n\nexport class ChannelIdValidator {\n public require;\n public restrict;\n public scope;\n public link;\n\n constructor() {\n this.restrict = 'A';\n this.require = 'ngModel';\n this.link = function(scope, elm, attrs, ctrl) {\n ctrl.$validators.validChannelId = function(modelValue, viewValue) {\n if (!modelValue) {\n return true;\n }\n\n return modelValue.indexOf(\" \") === -1;\n }\n }\n }\n}\n\nexport class ApcAddChannelModalCtrl {\n constructor($scope, $uibModalInstance, $state, $http, States, Config, programmer, ProgrammerService, ChannelService, DataCollectorService) {\n \"ngInject\";\n $scope.form = {};\n $scope.programmerSelectorDisabled = false;\n $scope.contentProvider = ChannelService.getNewContentProviderModel();\n $scope.serviceProvider = ChannelService.getNewServiceProviderModel();\n $scope.requiredErrorMessage = \"This field is required.\";\n $scope.channelIdErrorMessage = \"Channel id cannot contain white spaces.\";\n\n if (programmer) {\n $scope.programmerSelectorDisabled = true;\n $scope.form.selectedProgrammer = programmer;\n }\n\n $scope.getProgrammers = function (searchTerm) {\n return ProgrammerService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\n return response.data.entities;\n });\n };\n\n $scope.createChannel = function() {\n let programmerId = `@${$scope.form.selectedProgrammer.key}`;\n let channelId = $scope.form.channelId;\n let channelDisplayName = $scope.form.channelDisplayName;\n\n // Complete ContentProvider.\n $scope.contentProvider.key = `ContentProvider:${channelId}`;\n $scope.contentProvider.entityData.id = channelId;\n $scope.contentProvider.entityData.programmer = programmerId;\n $scope.contentProvider.entityData.serviceProviders = [`@ServiceProvider:${channelId}`];\n\n // Complete ServiceProvider.\n $scope.serviceProvider.key = `ServiceProvider:${channelId}`;\n $scope.serviceProvider.entityData.id = channelId;\n $scope.serviceProvider.entityData.displayName = channelDisplayName;\n $scope.serviceProvider.entityData.programmer = programmerId;\n $scope.serviceProvider.entityData.contentProviders = [`@ContentProvider:${channelId}`];\n\n // Reference new Content and Service providers.\n $scope.form.selectedProgrammer.entityData.contentProviders.push(`@${$scope.contentProvider.key}`);\n $scope.form.selectedProgrammer.entityData.serviceProviders.push(`@${$scope.serviceProvider.key}`);\n\n DataCollectorService.createEntity($scope.serviceProvider);\n DataCollectorService.createEntity($scope.contentProvider);\n DataCollectorService.updateEntity($scope.form.selectedProgrammer);\n\n $scope.close();\n\n $http.defaults.cache.put(`/rest/api/entity/ServiceProvider/${$scope.serviceProvider.entityData.id}?configurationVersion=${Config.configVersion}`,\n [200, $scope.serviceProvider]);\n $state.go(States.ChannelItemData.name, {\n channelId: channelId\n });\n };\n\n $scope.close = function () {\n $uibModalInstance.close();\n };\n }\n}\n\nexport class ApcAddChannelCtrl {\n constructor($scope, $uibModal, UserService) {\n \"ngInject\";\n $scope.hasWriteRole = UserService.hasRole(\"ROLE_CONSOLE_WRITE\");\n\n $scope.openModal = function () {\n let modal = $uibModal.open({\n templateUrl: 'add-channel-modal.html',\n controller: 'AddChannelModalCtrl',\n resolve: {\n programmer: function() {\n return $scope.programmer;\n }\n },\n backdrop: 'static'\n });\n\n return modal;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/AddChannel/AddChannel.ts","export class ApcAddProgrammerDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n programmer: '<'\n };\n this.template = require('./AddProgrammer.tmpl');\n this.controller = ApcAddProgrammerCtrl;\n }\n}\nexport class ProgrammerIdValidator {\n public require;\n public restrict;\n public scope;\n public link;\n\n constructor() {\n this.restrict = 'A';\n this.require = 'ngModel';\n this.link = function(scope, elm, attrs, ctrl) {\n ctrl.$validators.validProgrammerId = function(modelValue, viewValue) {\n if (!modelValue) {\n return true;\n }\n\n return modelValue.indexOf(\" \") === -1;\n }\n }\n }\n}\n\nexport class UniqueProgrammerValidator {\n public require;\n public restrict;\n public scope;\n public link;\n\n constructor() {\n this.restrict = 'A';\n this.require = 'ngModel';\n this.scope = {};\n this.link = function(scope, elm, attrs, ctrl) {\n let field = '';\n\n attrs.$observe('uniqueProgrammer', function(value) {\n field = value.toString() || '';\n ctrl.$validate();\n });\n\n ctrl.$asyncValidators.uniqueProgrammer = function(modelValue, viewValue) {\n let deferred = scope.$q.defer();\n\n if (!field) {\n deferred.reject();\n }\n\n scope.ProgrammerService.getAll().then(function(response) {\n let programmers = response.data.entities;\n let result = programmers.filter((programmer) => {return programmer.entityData[field].toLowerCase() === modelValue.toLowerCase()}).length === 0;\n\n if (result) {\n deferred.resolve();\n } else {\n deferred.reject();\n }\n });\n\n return deferred.promise;\n };\n }\n }\n\n controller($scope, $q, ProgrammerService) {\n \"ngInject\";\n $scope.ProgrammerService = ProgrammerService;\n $scope.$q = $q;\n }\n}\n\nexport class ApcAddProgrammerModalCtrl {\n constructor($scope, $uibModalInstance, $state, $http, States, Config, ProgrammerService, DataCollectorService) {\n \"ngInject\";\n $scope.form = {};\n $scope.programmer = ProgrammerService.getNewProgrammerModel();\n $scope.requiredErrorMessage = \"This field is required.\";\n $scope.programmerIdErrorMessage = \"Programmer id cannot contain white spaces.\";\n\n $scope.createProgrammer = function() {\n $scope.programmer.key = `Programmer:${$scope.form.programmerId}`;\n $scope.programmer.entityData.id = $scope.form.programmerId;\n $scope.programmer.entityData.displayName = $scope.form.programmerDisplayName;\n\n DataCollectorService.createEntity($scope.programmer);\n\n $scope.close();\n\n $http.defaults.cache.put(`/rest/api/entity/Programmer/${$scope.programmer.entityData.id}?configurationVersion=${Config.configVersion}`,\n [200, $scope.programmer]);\n $state.go(States.ProgrammerItemData.name, {\n programmerId: $scope.programmer.entityData.id\n });\n };\n\n $scope.close = function () {\n $uibModalInstance.close();\n };\n }\n}\n\nexport class ApcAddProgrammerCtrl {\n constructor($scope, $uibModal, UserService) {\n \"ngInject\";\n $scope.adobeOnly = UserService.hasRole('ROLE_CONSOLE_ALL_DATA') && UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n $scope.openModal = function () {\n return $uibModal.open({\n templateUrl: 'add-programmer-modal.html',\n controller: 'AddProgrammerModalCtrl',\n backdrop: 'static'\n });\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/AddProgrammer/AddProgrammer.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2018 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as _ from \"lodash\";\n\nexport class ApcApplicationsDirective {\n public restrict;\n public replace;\n public scope;\n public controller;\n public template;\n\n constructor() {\n this.restrict = 'E';\n this.replace = false;\n this.scope = {\n entity: '=',\n platforms: '=',\n applications: '=',\n applicationTypes: '='\n };\n this.controller = ApplicationsCtrl;\n this.template = require('./Applications.tmpl');\n }\n}\n\nexport class ApplicationsCtrl {\n constructor($scope, $uibModal, Config, DataCollectorService, DownloadService, UserService, NotificationService) {\n \"ngInject\";\n\n $scope.newlyAddedAppIds = [];\n\n $scope.addPlatformReference = function (item) {\n return '@Platform:' + item;\n };\n\n $scope.removePlatformReference = function (item) {\n return item.trim().replace('@Platform:', '');\n };\n\n /**\n * Parses all platforms in APass and retrieves their ids\n */\n $scope.getPlatformIdsForAllPlatforms = function () {\n let platformIds = [];\n for (let platformId of Object.keys($scope.platforms)) {\n platformIds.push(platformId);\n }\n return platformIds;\n };\n\n $scope.platformIds = $scope.getPlatformIdsForAllPlatforms();\n\n $scope.init = function () {\n // An empty list of platforms should be handled the same as a list containing all AdobePass defined platforms\n $scope.applications.forEach(function (application) {\n if (_.isEmpty(application.entityData.platforms)) {\n application.entityData.platforms = $scope.platformIds.map($scope.addPlatformReference);\n }\n });\n };\n\n $scope.init();\n\n /**\n * References the application at programmer level\n */\n $scope.addAppReferenceAtProgrammerLevel = function (application) {\n let appReference = '@' + application.key;\n if ($scope.entity.type === 'PROGRAMMER') {\n if (_.isNull($scope.entity.data.entityData.applications)) {\n $scope.entity.data.entityData.applications = [];\n }\n $scope.entity.data.entityData.applications.push(appReference);\n DataCollectorService.updateEntity($scope.entity.data);\n } else {\n if (_.isNull($scope.entity.relatedData.programmer.entityData.applications)) {\n $scope.entity.relatedData.programmer.entityData.applications = [];\n }\n $scope.entity.relatedData.programmer.entityData.applications.push(appReference)\n DataCollectorService.updateEntity($scope.entity.relatedData.programmer);\n }\n };\n\n $scope.write = UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n let openAddModal = function () {\n let addModal = $uibModal.open({\n templateUrl: 'AddApplication.html',\n controller: 'AddApplicationCtrl',\n resolve: {\n platforms: function () {\n return $scope.platformIds;\n },\n data: function () {\n return $scope.data;\n },\n entity: function () {\n return $scope.entity;\n },\n applicationTypes: function () {\n return $scope.applicationTypes;\n }\n },\n backdrop: 'static'\n });\n\n addModal.result.then(function (result) {\n if (_.isEmpty(result)) {\n return;\n }\n $scope.newlyAddedAppIds.push(result.application.entityData.id);\n $scope.applications.push(result.application);\n $scope.init();\n DataCollectorService.createEntity(result.application);\n $scope.addAppReferenceAtProgrammerLevel(result.application);\n });\n };\n\n let openViewModal = function () {\n let editModal = $uibModal.open({\n templateUrl: 'ViewApplication.html',\n controller: 'ViewApplicationCtrl',\n resolve: {\n application: function () {\n return $scope.selectedApplication;\n },\n platforms: function () {\n return $scope.platforms;\n }\n },\n backdrop: 'static'\n });\n\n return editModal;\n };\n\n /**\n * Opens the necessary modal for adding applications\n */\n $scope.addApplication = function () {\n openAddModal();\n };\n\n\n /**\n * Opens the necessary modal for viewing a specific application\n */\n $scope.viewApplication = function (application) {\n $scope.selectedApplication = application;\n openViewModal();\n };\n\n /**\n * Download software statement for a specific application\n */\n $scope.downloadStatement = function (application) {\n let onErrorCallback = function () {\n NotificationService.warn('Software statement not ready', 'Please try again in a couple of minutes.')\n };\n DownloadService.downloadWithErrorCallback(Config.API_ROOT + '/applications/' + application.entityData.id, onErrorCallback);\n };\n\n /**\n * Retrieve all details for a specific platform id\n */\n $scope.platformDetails = function (platformId) {\n return $scope.platforms[platformId];\n };\n\n /**\n * Checks if an application is a newly added one.\n * A new application can be viewed in the list, but is not yet saved in the JSON file\n */\n $scope.isNewlyAddedApp = function (application) {\n return $scope.newlyAddedAppIds.indexOf(application.entityData.id) > -1;\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Applications/Applications.ts","module.exports = \"


              Loading Data
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/report/partial/ReportItem/ReportItem.tmpl\n// module id = 11\n// module chunks = 0","import * as _ from \"lodash\";\nimport * as angular from \"angular\";\n\nexport class ApcCertificatesDirective {\n public restrict;\n public replace;\n public scope;\n public controller;\n public template;\n\n constructor() {\n this.restrict = 'E';\n this.replace = false;\n this.scope = {\n data: '=',\n platforms: '=',\n certificates: \"=\",\n encryptionData: \"=\",\n write: \"=\"\n };\n this.controller = CertificatesCtrl;\n this.template = require('./Certificates.tmpl');\n }\n}\n\nexport class CertificatesCtrl {\n constructor($scope, $uibModal, CertificateUtils, EncryptionLevel) {\n \"ngInject\";\n\n /**\n * User metadata encryption certificate id.\n */\n $scope.userMetadataEncryptionCertificateId =\n CertificateUtils.getUserMetadataEncryptionCertificateId($scope.encryptionData.level,\n $scope.encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER,\n $scope.encryptionData.channelUserMetadataEncryptionCertificate.id,\n $scope.encryptionData.programmerUserMetadataEncryptionCertificate.id);\n\n /**\n * Includes platform details: id, description, icon, enabled\n * E.g.: \"@Platform:JS\" -> {id: 'JS', description: 'JS SDK', icon: 'coral-Icon--deviceLaptop', enabled: true}\n */\n $scope.init = function () {\n if ($scope.certificates == null || $scope.certificates.length == 0) {\n $scope.certificates = {};\n }\n for (let certificateKey in $scope.certificates) {\n let platforms = $scope.certificates[certificateKey].platforms;\n if (!_.isEmpty(platforms) && _.isString(platforms[0])) {\n for (let platformId of Object.keys($scope.platforms)) {\n let index = $scope.certificates[certificateKey].platforms.indexOf('@Platform:' + platformId);\n if (index !== -1) {\n let platformDetails = angular.copy($scope.platforms[platformId]);\n platformDetails.enabled = true;\n $scope.certificates[certificateKey].platforms[index] = platformDetails;\n } else {\n $scope.certificates[certificateKey].platforms.push($scope.platforms[platformId]);\n }\n }\n }\n }\n };\n\n $scope.init();\n\n let openAddModal = function () {\n let addModal = $uibModal.open({\n templateUrl: 'AddCertificate.html',\n controller: 'AddCertificateCtrl',\n resolve: {\n encryptionData: function () {\n return $scope.encryptionData;\n },\n certificates: function () {\n return $scope.certificates;\n },\n platforms: function () {\n return $scope.platforms;\n },\n data: function () {\n return $scope.data;\n }\n },\n backdrop: 'static'\n });\n\n addModal.result.then(function (result) {\n $scope.certificates = result.certificates;\n $scope.userMetadataEncryptionCertificateId = result.userMetadataEncryptionCertificateId;\n });\n };\n\n let openEditModal = function () {\n let editModal = $uibModal.open({\n templateUrl: 'EditCertificate.html',\n controller: 'EditCertificateCtrl',\n resolve: {\n selectedCertificateKey: function () {\n return $scope.selectedCertificateKey;\n },\n encryptionData: function () {\n return $scope.encryptionData;\n },\n certificates: function () {\n return $scope.certificates;\n },\n platforms: function () {\n return $scope.platforms;\n },\n data: function () {\n return $scope.data;\n }\n },\n backdrop: 'static'\n });\n\n editModal.result.then(function (result) {\n $scope.certificates = result.certificates;\n $scope.userMetadataEncryptionCertificateId = result.userMetadataEncryptionCertificateId;\n });\n\n return editModal;\n };\n\n let openDeleteModal = function () {\n let deleteModal = $uibModal.open({\n templateUrl: 'DeleteCertificate.html',\n controller: 'DeleteCertificateCtrl',\n resolve: {\n selectedCertificateKey: function () {\n return $scope.selectedCertificateKey;\n },\n encryptionData: function () {\n return $scope.encryptionData;\n },\n certificates: function () {\n return $scope.certificates;\n },\n data: function () {\n return $scope.data;\n }\n },\n backdrop: 'static'\n });\n\n deleteModal.result.then(function (result) {\n $scope.certificates = result.certificates;\n $scope.userMetadataEncryptionCertificateId = result.userMetadataEncryptionCertificateId;\n });\n\n return deleteModal;\n };\n\n /**\n * Opens the necessary modal for adding certificates\n */\n $scope.addCertificate = function () {\n openAddModal();\n };\n\n /**\n * Opens the corresponding modal for editing a specific certificate\n */\n $scope.editCertificate = function (certificateKey) {\n $scope.selectedCertificateKey = certificateKey;\n openEditModal();\n };\n\n /**\n * Opens the corresponding modal for deleting a specific certificate\n */\n $scope.deleteCertificate = function (certificateKey) {\n $scope.selectedCertificateKey = certificateKey;\n openDeleteModal();\n };\n\n /**\n * Checks if the specified certificate is used for encryption\n */\n $scope.isEncryptionCertificate = function (certificateKey) {\n return (certificateKey === $scope.userMetadataEncryptionCertificateId);\n };\n\n /**\n * Returns the action specific tooltip message\n * @param {string} action\n * @returns {any}\n */\n $scope.getTooltipMessageFor = function (action: string) {\n switch (action) {\n case 'edit':\n return ($scope.write == false) ? \"For editing programmer specific certificates, please use the 'Programmers' tab.\" : \"Edit certificate\";\n case 'delete':\n return ($scope.write == false) ? \"For deleting programmer specific certificates, please use the 'Programmers' tab.\" : \"Delete certificate\";\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Certificates/Certificates.ts","import {isNullOrUndefined} from \"util\";\n\nexport class TempPassService {\n\n constructor() {\n \"ngInject\";\n }\n\n public getTempPassMap(pipelineStageListAuthZ: string) {\n let tempPassMap = new Object();\n if (!isNullOrUndefined(pipelineStageListAuthZ)) {\n //obtain array of ids\n let pipelineArray = (JSON.stringify(pipelineStageListAuthZ)).match(/[0-9]{4}:.{36}/g);\n\n for (let i = 0; i < pipelineArray.length; i++) {\n let tempPassConfig = pipelineStageListAuthZ[(pipelineArray[i].toString())];\n if (typeof tempPassConfig !== \"undefined\" &&\n (tempPassConfig[\"type\"] === \"flexibleTempPassConfiguration\" || tempPassConfig[\"type\"] === \"tempPassConfiguration\")) {\n tempPassMap[\"tempPassDuration\"] = tempPassConfig[\"tempPassDuration\"];\n if (tempPassConfig[\"type\"] === \"flexibleTempPassConfiguration\") {\n tempPassMap[\"tempPassMaxResources\"] = tempPassConfig[\"maxResources\"];\n tempPassMap[\"tempPassIdentifyingField\"] = tempPassConfig[\"identifyingField\"];\n }\n break;\n }\n }\n }\n return tempPassMap;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/TempPassService.ts","import * as angular from 'angular';\n\nexport class ApcComplexInputDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n property: '=',\n readOnly: '=',\n inheritData: '=',\n selected: '='\n };\n this.template = require('./ComplexInput.tmpl');\n this.controller = ApcComplexInputCtrl;\n }\n}\n\nexport class ApcComplexInputCtrl {\n constructor($scope, $uibModal) {\n \"ngInject\";\n var modal;\n $scope.openModal = function () {\n modal = $uibModal.open({\n templateUrl: 'complex-input-modal.html',\n controller: ApcComplexInputModalCtrl,\n resolve: {\n data: function () {\n return $scope.data;\n },\n property: function () {\n return $scope.property;\n },\n readOnly: function () {\n return $scope.readOnly;\n },\n inheritData: function () {\n return $scope.inheritData;\n }\n },\n backdrop: 'static'\n });\n modal.result.then(function (result) {\n $scope.data = result;\n });\n return modal;\n };\n }\n}\n\nexport class ApcComplexInputModalCtrl {\n constructor($scope, $uibModalInstance, $filter, data, property, readOnly, inheritData) {\n \"ngInject\";\n $scope.fieldName = $filter('propertyAlias')(property.propertyName);\n $scope.propertyName = property.propertyName;\n $scope.propertyType = property.propertyType;\n $scope.integrationPropertiesStartIndex = 0;\n $scope.newEmptyPropertyCreated = false;\n $scope.inheritData = inheritData;\n $scope.readOnly = readOnly;\n $scope.levelData = data;\n $scope.warning = false;\n $scope.errors = {};\n\n $scope.isPropertyMapType = function () {\n return $scope.propertyType === 'java.util.Map';\n };\n\n $scope.isPropertyInherited = function (propertyIndex) {\n return propertyIndex < $scope.integrationPropertiesStartIndex;\n };\n\n $scope.propertyKeyAlreadyExists = function (propertyIndex) {\n let propertyKey = $scope.properties[propertyIndex].key;\n for (let i = $scope.integrationPropertiesStartIndex; i < $scope.properties.length; i++) {\n if (i !== propertyIndex && $scope.properties[i].key === propertyKey) {\n return true;\n }\n }\n return false;\n };\n\n $scope.createPropertiesArrayFromData = function (data) {\n let propertiesArray = [];\n if (data) {\n if ($scope.isPropertyMapType()) {\n for (let propertyKeyInDataMap in data) {\n if (data.hasOwnProperty(propertyKeyInDataMap)) {\n let propertyValueInDataMap = JSON.stringify(data[propertyKeyInDataMap]);\n propertiesArray.push({\n key: JSON.stringify(propertyKeyInDataMap),\n value: propertyValueInDataMap\n });\n }\n }\n } else {\n for (let i = 0; i < data.length; i++) {\n let propertyValueInDataArray = JSON.stringify(data[i]);\n propertiesArray.push({\n key: null,\n value: propertyValueInDataArray\n });\n }\n }\n }\n\n return propertiesArray;\n };\n\n $scope.createPropertiesArray = function () {\n let inheritedPropertiesArray = [];\n if ($scope.inheritData && $scope.inheritData[$scope.propertyName]) {\n inheritedPropertiesArray = ($scope.createPropertiesArrayFromData($scope.inheritData[$scope.propertyName].value));\n $scope.integrationPropertiesStartIndex = inheritedPropertiesArray.length;\n }\n let levelPropertiesArray = [];\n if ($scope.levelData !== undefined) {\n levelPropertiesArray = $scope.createPropertiesArrayFromData($scope.levelData);\n if ($scope.integrationPropertiesStartIndex > 0) {\n $scope.warning = true;\n }\n }\n return inheritedPropertiesArray.concat(levelPropertiesArray);\n };\n\n $scope.properties = $scope.createPropertiesArray();\n\n $scope.createNewEmptyProperty = function () {\n let newEmptyProperty = {\n key: null,\n value: null\n };\n $scope.newEmptyPropertyCreated = true;\n return newEmptyProperty;\n };\n\n $scope.onAddNewProperty = function () {\n if (!$scope.newEmptyPropertyCreated && Object.keys($scope.errors).length === 0) {\n if ($scope.integrationPropertiesStartIndex > 0 && $scope.warning === false) {\n $scope.warning = true;\n }\n $scope.properties.splice($scope.integrationPropertiesStartIndex, 0, $scope.createNewEmptyProperty());\n }\n };\n\n $scope.onRemoveProperty = function (propertyIndex) {\n if (propertyIndex < $scope.integrationPropertiesStartIndex) {\n return;\n }\n let tooltip = $('.tooltip');\n if (tooltip) {\n tooltip.remove();\n }\n if (propertyIndex === $scope.integrationPropertiesStartIndex && $scope.newEmptyPropertyCreated) {\n $scope.newEmptyPropertyCreated = false;\n }\n $scope.properties.splice(propertyIndex, 1);\n delete $scope.errors[propertyIndex];\n if ($scope.properties.length === $scope.integrationPropertiesStartIndex) {\n $scope.warning = false;\n }\n };\n\n $scope.computeErrorStatusForInputField = function (inputValue, inputField) {\n try {\n let jsonValue = JSON.parse(inputValue);\n if (inputField === \"Key\") {\n return !angular.isString(jsonValue);\n } else if (inputField === \"Value\") {\n return !(angular.isObject(jsonValue) && Object.keys(jsonValue).length > 0 || angular.isString(jsonValue));\n }\n } catch (error) {\n return true;\n }\n };\n\n $scope.updateErrorStatusForProperty = function (propertyIndex) {\n let error = {\n propertyKeyError: false,\n propertyValueError: false,\n propertyKeyUniqueError: false\n };\n\n if ($scope.isPropertyMapType()) {\n error.propertyKeyError = $scope.computeErrorStatusForInputField($scope.properties[propertyIndex].key, \"Key\");\n if (!error.propertyKeyError) {\n error.propertyKeyUniqueError = $scope.propertyKeyAlreadyExists(propertyIndex);\n }\n }\n error.propertyValueError = $scope.computeErrorStatusForInputField($scope.properties[propertyIndex].value, \"Value\");\n\n if (error.propertyKeyError || error.propertyValueError || error.propertyKeyUniqueError) {\n $scope.errors[propertyIndex] = error;\n return;\n }\n if ($scope.errors[propertyIndex]) {\n delete $scope.errors[propertyIndex];\n }\n if (propertyIndex === $scope.integrationPropertiesStartIndex && $scope.newEmptyPropertyCreated) {\n $scope.newEmptyPropertyCreated = false;\n }\n };\n\n $scope.onSaveProperties = function () {\n if ($scope.properties.length === $scope.integrationPropertiesStartIndex) {\n $uibModalInstance.close(undefined);\n }\n if ($scope.newEmptyPropertyCreated) {\n $scope.updateErrorStatusForProperty($scope.integrationPropertiesStartIndex);\n }\n if (Object.keys($scope.errors).length === 0) {\n let result:any = $scope.isPropertyMapType() ? {} : [];\n let index;\n for (index = $scope.integrationPropertiesStartIndex; index < $scope.properties.length; index++) {\n if ($scope.isPropertyMapType()) {\n let newPropertyKey = JSON.parse($scope.properties[index].key);\n result[newPropertyKey] = JSON.parse($scope.properties[index].value);\n } else {\n let newPropertyValue = JSON.parse($scope.properties[index].value);\n result.push(newPropertyValue);\n }\n }\n $uibModalInstance.close(result);\n }\n };\n\n $scope.onCancel = function () {\n $uibModalInstance.dismiss();\n };\n\n $scope.computeValueColumnSize = function () {\n if (!$scope.readOnly && $scope.warning) {\n if ($scope.isPropertyMapType()) {\n return 'col-md-6';\n }\n return 'col-md-10';\n } else if (!$scope.readOnly || $scope.warning) {\n if ($scope.isPropertyMapType()) {\n return 'col-md-7';\n }\n return 'col-md-11';\n } else {\n if ($scope.isPropertyMapType()) {\n return 'col-md-8';\n }\n return 'col-md-12';\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/ComplexInput/ComplexInput.ts","/**\n * @class MaintenanceModalCtrl\n * @memberOf module:admin\n * @param {Object} $cope - Angular scope\n * @param {Object} $uibModalInstance - Ui bootstrap modal instance service\n * @param {Object} data - modal data\n * @description Controls the maintenance confirmation modal\n */\nexport class MaintenanceModalCtrl {\n constructor($scope, $window, $uibModalInstance, data) {\n \"ngInject\";\n /**\n * @name module:admin.MaintenanceModalCtrl#message\n * @type {String}\n * @description Activation/deactivation message\n */\n $scope.message = '';\n /**\n * @name module:admin.MaintenanceModalCtrl#title\n * @type {String}\n * @default 'Confirm maintenance mode activation'\n * @description Modal title\n */\n $scope.title = data.title || 'Confirm maintenance mode activation';\n /**\n * @name module:admin.MaintenanceModalCtrl#label\n * @type {String}\n * @default 'Activation message'\n * @description Input label\n */\n $scope.label = data.label || 'Activation message';\n /**\n * @name module:admin.MaintenanceModalCtrl#placeholder\n * @type {String}\n * @default 'Enter activation message'\n * @description Input placeholder\n */\n $scope.placeholder = data.placeholder || 'Enter activation message';\n /**\n * @name module:admin.MaintenanceModalCtrl#ok\n * @method\n * @description Ok button handler. Closes the modal and resolves the result promise with {@link module:admin.MaintenanceModalCtrl#message}\n */\n $scope.ok = function () {\n $uibModalInstance.close($scope.message);\n };\n /**\n * @name module:admin.MaintenanceModalCtrl#cancel\n * @method\n * @description Cancel button handler. Closes the modal.\n */\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }\n}\n\nexport class AdminAdvancedCtrl {\n constructor ($rootScope, $window, $scope, $uibModal, $state,\n isMaintenanceActive, storedModelSerialIds, AdminService,\n Config, CsrfTokenInterceptor, FileUploader, CacheService,\n NotificationService, TooltipService) {\n \"ngInject\";\n let headers = {};\n headers[CsrfTokenInterceptor.CSRF_TOKEN_KEY] = CsrfTokenInterceptor.getToken();\n\n let uploader = $scope.uploader = new FileUploader({\n url: Config.API_ROOT + '/admin/repo/restore',\n headers: headers,\n onSuccessItem: function (file, response) {\n let restoreMessage = \"Restore successful, keys restored:
                \";\n for (let restoredModelSerialId in response) {\n let nrKeysRestored = response[restoredModelSerialId];\n if (restoredModelSerialId === \"0\") {\n restoreMessage += \"
              • Global: \" + nrKeysRestored + \"
              • \";\n } else {\n restoreMessage += \"
              • \" + restoredModelSerialId + \": \" + nrKeysRestored + \"
              • \";\n }\n }\n restoreMessage += \"
              \";\n NotificationService.warnModal('Restore was successful', restoreMessage, {\n confirm: true,\n backdrop: 'static'\n }).result.then(function () {\n $state.reload();\n });\n }\n });\n\n $scope.isMaintenanceActive = isMaintenanceActive;\n $scope.storedModelSerialIds = storedModelSerialIds;\n $scope.modelSerialIdToDump = storedModelSerialIds[0];\n $scope.modelSerialIdToDelete = storedModelSerialIds[0];\n\n /**\n * @name module:admin.AdminAdvancedCtrl#openModal\n * @method\n * @private\n * @param {String} title - Modal title\n * @param {String} label - Modal input label\n * @param {String} placeholder - Modal input placeholder\n * @returns {Object} Modal instance\n * @description Opens a modal for maintenance mode activation / deactivation.\n */\n let openModal = function (title?, label?, placeholder?) {\n return $uibModal.open({\n templateUrl: 'maintenanceModal.html',\n controller: MaintenanceModalCtrl,\n resolve: {\n data: function () {\n return {\n title: title,\n label: label,\n placeholder: placeholder\n };\n }\n }\n });\n };\n /**\n * @name module:admin.AdminAdvancedCtrl#activateMaintenance\n * @method\n * @description Activates maintenance mode\n */\n $scope.activateMaintenance = function () {\n openModal().result.then(function (message) {\n $rootScope.statusMessage = \"Activating maintenance mode\";\n $rootScope.appLoading = true;\n AdminService.activateMaintenance(message).then(function () {\n $rootScope.appLoading = false;\n $state.reload();\n });\n });\n };\n /**\n * @name module:admin.AdminAdvancedCtrl#deactivateMaintenance\n * @method\n * @description Deactivates maintenance mode\n */\n $scope.deactivateMaintenance = function () {\n openModal('Confirm maintenance mode deactivation', 'Deactivation message', 'Enter deactivation message').result.then(function (message) {\n $rootScope.statusMessage = \"Deactivating maintenance mode\";\n $rootScope.appLoading = true;\n AdminService.deactivateMaintenance(message).then(function () {\n $rootScope.appLoading = false;\n $state.reload();\n });\n });\n };\n\n $scope.restoreDump = function () {\n NotificationService.warnModal('Confirm repository dump restore', 'Are you sure you want to restore this repository dump?' +\n '
              If it is a full repository dump, it will flush all existing data beforehand!').result.then(function (confirmation) {\n if (confirmation) {\n CacheService.reset();\n uploader.uploadAll();\n }\n });\n };\n\n $scope.dumpModelSerialId = function () {\n AdminService.dumpData($scope.modelSerialIdToDump);\n };\n\n $scope.dumpRepository = function () {\n AdminService.dumpData();\n\n };\n\n $scope.deleteDataForModel = function () {\n NotificationService.warnModal('Confirm repository data deletion', 'Are you sure you want to delete all data related to model ' +\n $scope.modelSerialIdToDelete + '?').result.then(function (confirmation) {\n if (confirmation) {\n AdminService.deleteDataForModel($scope.modelSerialIdToDelete).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n $scope.deleteDataForRunningModel = function () {\n AdminService.getConsoleInfo().then(function (response) {\n let runningModelSerialId = response.data.modelSerialId;\n NotificationService.warnModal('Confirm repository data deletion', 'Are you sure you want to delete all data ' +\n 'for the running (active) model ' + runningModelSerialId + '?').result.then(function (confirmation) {\n if (confirmation) {\n AdminService.deleteDataForModel(runningModelSerialId).then(function () {\n $state.reload();\n });\n }\n });\n });\n };\n\n $scope.resetSyncedConfigVersion = function () {\n NotificationService.warnModal('Confirm synced configuration version reset', 'Are you sure you want to reset the ' +\n 'synced Core configuration version to null?').result.then(function (confirmation) {\n if (confirmation) {\n AdminService.resetSyncedConfigVersion().then(function () {\n NotificationService.warn('Synced core configuration version was reset');\n });\n }\n });\n };\n\n $scope.forceApigeeResync = function () {\n NotificationService.warnModal('Confirm Apigee resynchronization', 'Are you sure you want to trigger an Apigee resynchronization?').result.then(function (confirmation) {\n if (confirmation) {\n AdminService.forceApigeeResync().then(function () {\n NotificationService.warn('A Manual Apigee resynchronization was triggered');\n });\n }\n });\n };\n\n $scope.forcePushConfig = function () {\n NotificationService.warnModal('Confirm force push', 'Are you sure you want to force push the active configuration to Core?').result.then(function (confirmation) {\n if (confirmation) {\n AdminService.forcePushConfig().then(function () {\n NotificationService.warn('A force push of the active configuration to Core was triggered');\n });\n }\n });\n };\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.ACTIONS.adminAdvanced;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/partial/AdminAdvanced/AdminAdvanced.ts","import * as angular from \"angular\";\n\nexport class ApcDiffDirective {\n private restrict;\n private scope;\n private template;\n private controller;\n\n constructor() {\n this.restrict = 'E';\n this.scope = {\n data: '=',\n sharing: '=?',\n typeFilter: '=?',\n nameFilter: '=?'\n };\n\n this.template = require('./Diff.tmpl');\n this.controller = ApcDiffCtrl;\n }\n}\n\nexport class ApcDiffCtrl {\n constructor($scope, $window, $filter) {\n \"ngInject\";\n $scope.typeFilter = $scope.typeFilter || 'all';\n $scope.nameFilter = $scope.nameFilter || 'all';\n\n $scope.selectedEntityFilter = {\n type: 'all',\n name: 'All entities'\n };\n $scope.selectedNameFilter = {\n type: 'all',\n name: 'All entities'\n };\n\n let defaultFilter = {\n all: {\n type: 'all',\n name: 'All entities'\n }\n };\n\n /**\n * @method extractEntityNames\n * @private\n * @returns [Array] Unique array of entity names\n * @description Creates a unique array of entity names\n */\n let extractEntityNames = function () {\n let result: any = [];\n angular.copy(defaultFilter, result);\n\n for (let i = 0; i < $scope.data.entityDifferences.length; i++) {\n let entity = $scope.data.entityDifferences[i];\n let entityType = entity.entityKey.split(':')[0];\n let entityName = entity.entityKey.split(':')[1];\n\n if (entityType === $scope.selectedEntityFilter.type || $scope.selectedEntityFilter.type === 'all') {\n if (!result[entityName]) {\n result[entityName] = {\n type: entityName,\n name: entityName\n };\n }\n }\n }\n\n return result;\n };\n\n /**\n * @method extractEntityTypes\n * @private\n * @returns [Array] Unique array of entity types\n * @description Creates a unique array of entity types\n */\n let extractEntityTypes = function () {\n let result: any = [];\n angular.copy(defaultFilter, result);\n\n for (let i = 0; i < $scope.data.entityDifferences.length; i++) {\n let entityType = $scope.data.entityDifferences[i].entityKey.split(':')[0];\n\n if (!result[entityType]) {\n result[entityType] = {\n type: entityType,\n name: entityType\n };\n }\n }\n\n return result;\n };\n\n /**\n * @method compareEntitiesWithFilter\n * @param entity1 - first entity to be compared\n * @param entity2 - second entity to be compared\n * @private\n * @returns {number} - compare result\n * @description Compares 2 entities with filter applied\n */\n let compareEntitiesWithFilter = function(entity1, entity2) {\n let name1 = $filter(\"olcaType\")(entity1.name);\n let name2 = $filter(\"olcaType\")(entity2.name);\n\n if (entity1.name.localeCompare(\"All entities\") === 0) {\n return -1;\n } else if(entity2.name.localeCompare(\"All entities\") === 0) {\n return 1;\n } else {\n return name1.localeCompare(name2);\n }\n };\n\n /**\n * @method getValuesFromMap\n * @param {Object[]} entities - array of entities\n * @private\n * @return {Object[]} Unique array with objects\n * @description Creates a unique array of objects from a map\n */\n let getValuesFromMap = function(entities) {\n let result = [];\n for (let entity in entities) {\n result.push(entities[entity]);\n }\n return result.sort(compareEntitiesWithFilter);\n };\n\n /**\n * @type {Object[]}\n * @description Unique array of entity types\n */\n $scope.entities = extractEntityTypes();\n\n /**\n * @type {Object[]}\n * @description Unique list of values from #entities\n */\n $scope.entityTypesValues = getValuesFromMap($scope.entities);\n\n /**\n * @type {Object[]}\n * @description Unique array of entity names\n */\n $scope.entityNames = extractEntityNames();\n\n /**\n * @type {Object[]}\n * @description Unique list of values from #entityNames\n */\n $scope.entityNamesValues = getValuesFromMap($scope.entityNames);\n\n /**\n * @method filterByEntityType\n * @param {String} entityTypeFilter - type filter value\n * @description Select the type filter, filter the entity names and types\n */\n $scope.filterByEntityType = function (entityTypeFilter) {\n $scope.selectedEntityFilter = $scope.entities[entityTypeFilter];\n $scope.selectedNameFilter = $scope.entityNames['all'];\n $scope.entities = extractEntityTypes();\n $scope.entityNames = extractEntityNames();\n $scope.entityTypesValues = getValuesFromMap($scope.entities);\n $scope.entityNamesValues = getValuesFromMap($scope.entityNames);\n };\n\n /**\n * @method filterByEntityName\n * @param {String} entityNameFilter - name filter value\n * @description Select the type filter\n */\n $scope.filterByEntityName = function (entityNameFilter) {\n $scope.selectedNameFilter = $scope.entityNames[entityNameFilter];\n };\n\n /**\n * @method isVisible\n * @memberOf module:diff.DiffCtrl\n * @param {Object} diffItem - diff item to check\n * @returns {Boolean} True/False is the filter should be applied or not\n * @description Checks if the element should be visible or not based on the selected filters\n */\n $scope.isVisible = function (diffItem) {\n let entityType = diffItem.entityKey.split(':')[0];\n let entityName = diffItem.entityKey.split(':')[1];\n return (\n (entityType === $scope.selectedEntityFilter.type || $scope.selectedEntityFilter.type === 'all') &&\n (entityName === $scope.selectedNameFilter.type || $scope.selectedNameFilter.type === 'all')\n );\n };\n\n /**\n * @method shareDiff\n * @description Calculates the full URL with filter data and opens the default mail client\n */\n $scope.shareDiff = function () {\n let url = $window.location.href + '&type=' + $scope.selectedEntityFilter.type + '&name=' + $scope.selectedNameFilter.type;\n $window.location.href = 'mailto:?subject=Adobe Pass configuration compare report&body=Configuration compare report: ' + encodeURIComponent(url);\n };\n\n $scope.isDefined = function (value) {\n return angular.isDefined(value) && value !== null;\n };\n\n $scope.isObject = function (value) {\n return angular.isObject(value);\n };\n\n $scope.selectedEntityFilter = $scope.entities[$scope.typeFilter];\n $scope.selectedNameFilter = $scope.entityNames[$scope.nameFilter];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/diff/directive/Diff/Diff.ts","export class ProxiedMvpdRequestorsModalCtrl {\n constructor($uibModalInstance, $scope, $filter, requestors) {\n \"ngInject\";\n\n $scope.requestors = requestors;\n\n $scope.search = function(searchTerm) {\n $scope.requestors = $filter('filter')(requestors, searchTerm);\n };\n\n $scope.resetSearch = function() {\n $scope.requestors = requestors;\n };\n\n $scope.onClose = function () {\n $uibModalInstance.close();\n };\n }\n}\n\nexport class MvpdProxiedMvpdsCtrl {\n constructor($scope, $rootScope, $filter, $uibModal, SearchEvent, Config, data) {\n \"ngInject\";\n var originalProxiedMvpds = $filter('orderBy')(data.related.proxiedMvpds, 'entityData.displayName');\n\n $scope.data = data;\n $scope.filteredProxiedMvpds = originalProxiedMvpds;\n $scope.pagination = {\n currentPage: 1,\n pageSize: Config.PAGE_SIZE\n };\n\n $scope.onPageChange = function() {\n let startIndex = ($scope.pagination.currentPage - 1) * $scope.pagination.pageSize;\n let stopIndex = startIndex + $scope.pagination.pageSize;\n\n $scope.pageData = $scope.filteredProxiedMvpds.slice(startIndex, stopIndex);\n };\n\n $scope.search = function(searchTerm) {\n $scope.filteredProxiedMvpds = $filter('filter')(originalProxiedMvpds, {\n 'entityData': {\n 'displayName': searchTerm\n }\n });\n $scope.pagination.currentPage = 1;\n $scope.onPageChange();\n };\n\n $scope.resetSearch = function() {\n $scope.filteredProxiedMvpds = originalProxiedMvpds;\n $scope.pagination.currentPage = 1;\n $scope.onPageChange();\n };\n\n $rootScope.$on(SearchEvent.SEARCH, (ev, searchTerm) => {\n $scope.search(searchTerm);\n });\n\n $rootScope.$on(SearchEvent.RESET, () => {\n $scope.resetSearch();\n });\n\n $scope.openModal = function (proxiedMvpd) {\n let modal = $uibModal.open({\n templateUrl: 'proxied-mvpd-requestors.html',\n controller: 'ProxiedMvpdRequestorsModalCtrl',\n resolve: {\n requestors: function() {\n return proxiedMvpd.entityData.serviceProviderIds;\n }\n },\n backdrop: 'static'\n });\n\n return modal;\n };\n\n $scope.onPageChange();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdProxiedMvpds/MvpdProxiedMvpds.ts","/**\n * @class SidebarCtrl\n * @memberOf module:core\n * @param {Object} $scope - Angular scope\n * @param {Array} navItems - navigation items\n * @description Controls the sidebar. If window width drops below 768px the sidebar will auto collapse.\n */\nexport class SidebarCtrl {\n constructor($rootScope, $scope, $state, $window, navItems, DataCollectorService) {\n \"ngInject\";\n /**\n * @name module:core.SidebarCtrl#isOpen\n * @type {Boolean}\n * @default true\n * @description Sidebar status\n */\n $scope.isOpen = true;\n $scope.showPush = DataCollectorService.getStoredData().length > 0;\n DataCollectorService.getScope().$watch('hasData', function (newValue) {\n $scope.showPush = newValue ? true : false;\n });\n /**\n * @name module:core.SidebarCtrl#navItems\n * @type {Array}\n * @description Navigation items. {@link module:core.NavService}\n */\n $scope.navItems = navItems;\n /**\n * @name module:core.SidebarCtrl#$state\n * @type {Object}\n * @description Ui router state service\n */\n $scope.$state = $state;\n /**\n * @name module:core.SidebarCtrl#toggleIcon\n * @type {String}\n * @description CUI icon name\n */\n $scope.toggleIcon = 'railRightOpen';\n\n /**\n * @method toggleSidebar\n * @memberOf module:core.SidebarCtrl\n * @description Toggles the sidebar\n */\n $scope.toggleSidebar = function () {\n if ($scope.isOpen) {\n $scope.toggleIcon = 'railRightClose';\n $('#sidebar').addClass('collapsed');\n } else {\n $scope.toggleIcon = 'railRightOpen';\n $('#sidebar').removeClass('collapsed');\n }\n $scope.isOpen = !$scope.isOpen;\n };\n\n $($window).on(\"resize.doResize\", function () {\n let value = $window.innerWidth;\n\n $scope.$apply(function () {\n if (value < 940 && $scope.isOpen) {\n $scope.toggleSidebar();\n }\n });\n });\n\n $scope.$on(\"$destroy\", function () {\n $($window).off(\"resize.doResize\");\n });\n\n if ($window.innerWidth < 940) {\n $scope.toggleSidebar();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/partial/Sidebar/Sidebar.ts","/**\n * @class HeaderCtrl\n * @memberOf module:core\n * @param {Object} $scope - Angular scope\n * @param {Object} $window - Angular reference to window\n * @param {module:core.UserService} UserService - User service\n * @description Controls the header view\n */\nexport class HeaderCtrl {\n constructor($rootScope, $scope, $state, States, $window, UserService, EnvironmentService) {\n \"ngInject\";\n /**\n * @name module:core.HeaderCtrl#user\n * @type {module:core.UserProfile}\n * @description The user profile data\n */\n $scope.user = UserService.getUserData();\n UserService.getScope().$watch('userProfile', function () {\n $scope.user = UserService.getUserData();\n });\n\n /**\n * @name module:core.HeaderCtrl#getWorkspaceMode\n * @type String\n * @description Returns the user's selected workspace mode\n */\n $scope.getWorkspaceMode = function () {\n let advancedWorkspaceEnabled = UserService.advancedWorkspaceEnabled();\n return advancedWorkspaceEnabled ? 'Advanced Workspace' : 'Basic Workspace';\n };\n\n /**\n * @name module:core.HeaderCtrl#enableBasicWorkspace\n * @type void\n * @description Enable Basic Workspace Mode\n */\n $scope.enableBasicWorkspace = function () {\n UserService.enableAdvancedWorkspace(false);\n };\n\n /**\n * @name module:core.HeaderCtrl#enableAdvancedWorkspace\n * @type void\n * @description Enabled Advanced Workspace Mode\n */\n $scope.enableAdvancedWorkspace = function () {\n UserService.enableAdvancedWorkspace(true);\n };\n\n /**\n * @name module:core.HeaderCtrl#environments\n * @type {Array}\n * @example\n * [{name: 'Environment name', url:'Environment url'}]\n * @description A list with available environments\n */\n $scope.environments = EnvironmentService.getEnvironments();\n\n EnvironmentService.identifyCurrentEnvironment($window);\n /**\n * @name module:core.HeaderCtrl#selectedEnvironment\n * @type {Object}\n * @example\n * {name: 'Environment name', url:'Environment url'}\n * @see {@link module:core.HeaderCtrl#environments}\n * @description The selected environment object\n */\n $scope.selectedEnvironment = EnvironmentService.getSelectedEnvironment();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/partial/Header/Header.ts","/*\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2015 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n */\nexport class FooterCtrl {\n constructor($scope, $state, DataCollectorService) {\n \"ngInject\";\n $scope.ncyBreadcrumbIgnore = true;\n $scope.showPush = DataCollectorService.getStoredData().length > 0;\n $scope.currentYear = new Date().getFullYear();\n DataCollectorService.getScope().$watch('hasData', function (newValue) {\n let errors = $('.ng-dirty.ng-invalid.ng-touched');\n if (errors.length > 0) {\n DataCollectorService.getScope().hasData = false;\n }\n $scope.showPush = !!(errors.length === 0 && newValue);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/partial/Footer/Footer.ts","/**\n * @class DashboardCtrl\n * @memberOf module:core\n * @param {Object} $scope - Angular scope\n * @param {Object} $state - Ui Router state manager\n * @param {module:data.Config} Config - Application config\n * @param {module:core.States} States - Application states\n * @param {module:data.HistoryService} HistoryService - History service\n * @param {module:data.ChannelService} ChannelService - ChannelService service\n * @param {Object} latestChanges - latest successful pushes\n * @param {Object} serviceProviderList - initial service provider data\n * @description Controls the dashboard page\n */\nexport class DashboardCtrl {\n constructor($scope, $state, Config, States, HistoryService, ChannelService, latestChanges, serviceProviderList, TooltipService, UserService) {\n \"ngInject\";\n $scope.adminOnly = UserService.hasRole('ROLE_CONSOLE_ADMIN');\n /**\n * @name module:core.DashboardCtrl#ChannelService\n * @type {module:data.ChannelService}\n * @description ServiceProvider service\n */\n $scope.ChannelService = ChannelService;\n /**\n * @name module:core.DashboardCtrl#pageSize\n * @type {Number}\n * @see {@link module:data.Config}\n * @description Items per page\n */\n $scope.pageSize = Config.PAGE_SIZE;\n /**\n * @name module:core.DashboardCtrl#integrationsColumns\n * @type {Array}\n * @description Columns description for panel list\n */\n $scope.integrationsColumns = [\n {\n name: 'Channel',\n sortable: true,\n sorted: true,\n sortAsc: true,\n sortField: 'displayName',\n class: 'col-md-10'\n },\n {\n name: 'No of integrations',\n sortable: false,\n class: 'col-md-2'\n }];\n /**\n * @name module:core.DashboardCtrl#serviceProviderList\n * @type {Object}\n * @see {@link module:data.ChannelService}\n * @description ServiceProvider data\n */\n $scope.serviceProviderList = serviceProviderList ? serviceProviderList : null;\n /**\n * @name module:core.DashboardCtrl#latestChanges\n * @type {Array}\n * @see {@link module:data.HistoryService}\n * @description Latest successful changes.\n */\n $scope.latestChanges = latestChanges;\n\n /**\n * @name module:core.DashboardCtrl#selected\n * @type {Array}\n * @description Configuration history selection status\n */\n $scope.selected = [];\n\n /**\n * @method compareConfigs\n * @memberOf module:core.DashboardCtrl\n * @description Navigates to Compare state.\n */\n $scope.compareConfigs = function () {\n let configA,\n configB;\n\n for (let i = 0; i < $scope.selected.length; i++) {\n if ($scope.selected[i] && !configA) {\n configA = $scope.latestChanges[i].configurationSaveInformation.configurationVersion;\n } else if ($scope.selected[i] && !configB) {\n configB = $scope.latestChanges[i].configurationSaveInformation.configurationVersion;\n }\n }\n\n $state.go(States.Compare.name, {\n configA: configA,\n configB: configB,\n parentState: States.Dashboard.name\n });\n };\n\n /**\n * @method getSelected\n * @memberOf module:core.DashboardCtrl\n * @returns {Number} The number of selected rows\n * @description Computes and returns the number of selected rows\n */\n $scope.getSelected = function () {\n let result = 0;\n for (let i = 0; i < $scope.selected.length; i++) {\n if ($scope.selected[i]) {\n result++;\n }\n }\n return result;\n };\n /**\n * @method onLiveIntegrationClick\n * @memberOf module:core.DashboardCtrl\n * @param {Object} item - Selected integration row\n * @description Navigates to channel detail integrations page\n */\n $scope.onLiveIntegrationClick = function (item) {\n $state.go(States.ChannelIntegrations.name, {\n channelId: item.entityData.id\n });\n };\n\n /**\n * @method exportConfiguration\n * @memberOf module:core.DashboardCtrl\n * @param {Object} change - Configuration push entry\n * @see {@link module:data.HistoryService}\n * @description Exports a configuration file.\n */\n $scope.exportConfiguration = function (change) {\n HistoryService.exportConfiguration(change.configurationSaveInformation.configurationVersion);\n };\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.ACTIONS.changeLog;\n });\n\n $scope.$on(\"onPageChange\", function(){\n const tableListElement = document.getElementById('table-list');\n window.scrollTo(0, window.scrollY-tableListElement.offsetHeight);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/partial/Dashboard/Dashboard.ts","/**\n * @class ChangelogCtrl\n * @memberOf module:core\n * @param {Object} $scope - Angular scope\n * @param {Object} $state - Angular state service\n * @param {Array} history - History data\n * @param {module:data.HistoryService} HistoryService - History service\n * @param {module:core.States} States - Application states\n * @description Handles history page\n */\nexport class ChangelogCtrl {\n constructor($scope, $timeout, $state, history, HistoryService, States, highlight, Config, TooltipService, UserService) {\n \"ngInject\";\n $scope.adminOnly = UserService.hasRole('ROLE_CONSOLE_ADMIN');\n $scope.pagination = {\n pageSize: Config.PAGE_SIZE\n };\n /**\n * @name module:core.ChangelogCtrl#history\n * @type {Array}\n * @see {@link module:data.HistoryService}\n * @description History list.\n */\n $scope.history = history.configurationInformationList;\n $scope.historyCount = history.count;\n $scope.onPageChange = function () {\n $scope.loadingTimeout = $timeout(function () {\n $scope.loading = true;\n }, 300);\n HistoryService.getPage($scope.pagination.currentPage).then(function (response) {\n $scope.history = response.data.configurationInformationList;\n $scope.historyCount = response.data.count;\n $timeout.cancel($scope.loadingTimeout);\n $scope.loading = false;\n });\n window.scrollTo(0,0);\n };\n /**\n * @name module:core.ChangelogCtrl#selected\n * @type {Array}\n * @description Configuration history selection status\n */\n $scope.selected = [];\n\n $scope.highlight = highlight;\n\n /**\n * @method compareConfigs\n * @memberOf module:core.ChangelogCtrl\n * @description Navigates to Compare state.\n */\n $scope.compareConfigs = function () {\n let configA,\n configB;\n\n for (let i = 0; i < $scope.selected.length; i++) {\n if ($scope.selected[i] && !configB) {\n configB = i;\n } else if ($scope.selected[i] && !configA) {\n configA = i;\n }\n }\n\n $state.go(States.Compare.name, {\n configA: configA,\n configB: configB,\n parentState: States.History.name\n });\n };\n\n /**\n * @method getSelected\n * @memberOf module:core.ChangelogCtrl\n * @returns {number} The number of selected rows\n * @description Computes and returns the number of selected rows\n */\n $scope.getSelected = function () {\n let result = 0;\n for (let i = 0; i < $scope.selected.length; i++) {\n if ($scope.selected[i]) {\n result++;\n }\n }\n return result;\n };\n\n /**\n * @method exportConfiguration\n * @memberOf module:core.ChangelogCtrl\n * @param {Object} change - Configuration push entry\n * @see {@link module:data.HistoryService}\n * @description Exports a JSON configuration file.\n */\n $scope.exportConfiguration = function (change) {\n HistoryService.exportConfiguration(change.configurationSaveInformation.configurationVersion);\n };\n /**\n * @method exportZipConfiguration\n * @memberOf module:core.ChangelogCtrl\n * @param {Object} change - Configuration push entry\n * @see {@link module:data.HistoryService}\n * @description Exports a zip configuration file.\n */\n $scope.exportZipConfiguration = function (change) {\n HistoryService.exportZipConfiguration(change.configurationSaveInformation.configurationVersion);\n };\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.ACTIONS.changeLog;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/partial/ChangeLog/ChangeLog.ts","import * as angular from \"angular\";\nimport * as _ from \"lodash\";\n\nexport class ManglerUtil {\n private propertyList;\n private zippedPropertyList;\n\n constructor(private $rootScope, private $timeout, private $q, private BulkService) {\n \"ngInject\";\n this.propertyList = [];\n this.zippedPropertyList = [];\n }\n\n public processManglers(manglerList, entityManglers, manglerChain) {\n _.forIn(entityManglers, (value, key) => {\n _.forIn(value, (manglerId) => {\n let mangler = manglerChain[manglerId];\n\n if (!mangler) {\n mangler = manglerChain[manglerId] = new ManglerItem(key);\n }\n\n let manglerInfo = manglerList[manglerId];\n mangler.setInfo(manglerInfo);\n });\n });\n }\n\n public processTTL(ttl) {\n let SECONDS_IN_DAY = 86400;\n let SECONDS_IN_HOUR = 3600;\n let SECONDS_IN_MINUTE = 60;\n let asString = \"\";\n\n let days = Math.floor(ttl / SECONDS_IN_DAY);\n let secondsRemainder = ttl % SECONDS_IN_DAY;\n\n let hours = Math.floor(secondsRemainder / SECONDS_IN_HOUR);\n secondsRemainder = secondsRemainder % SECONDS_IN_HOUR;\n\n let minutes = Math.floor(secondsRemainder / SECONDS_IN_MINUTE);\n secondsRemainder = secondsRemainder % SECONDS_IN_MINUTE;\n\n let seconds = secondsRemainder;\n\n if (days === 1) {\n asString += days + \" day \";\n } else if (days > 1) {\n asString += days + \" days \";\n }\n if (hours === 1) {\n asString += hours + \" hour \";\n } else if (hours > 1) {\n asString += hours + \" hours \";\n }\n if (minutes === 1) {\n asString += minutes + \" minute \";\n } else if (minutes > 1) {\n asString += minutes + \" minutes \";\n }\n if (seconds === 1) {\n asString += seconds + \" second\";\n } else if (seconds > 1) {\n asString += seconds + \" seconds\";\n }\n return {\n \"days\": days,\n \"hours\": hours,\n \"minutes\": minutes,\n \"seconds\": seconds,\n \"asString\": asString\n };\n }\n\n public getPropertyList() {\n return this.zippedPropertyList;\n }\n\n public getMandatoryManglerProperties(integration, manglerList) {\n this.propertyList = [];\n\n let deferred = this.$q.defer();\n let manglerChain = {};\n let types = [];\n\n if (!integration.entityData.configuration) {\n integration.entityData.configuration = {default: {}};\n }\n\n let propData = angular.copy(integration.entityData.configuration.default);\n let inheritTree = ['serviceProvider', 'owner', 'authenticationProviderConfiguration', 'authorizationProviderConfiguration', 'logoutProviderConfiguration'];\n let list = [];\n\n if (!integration.related) {\n integration.related = {};\n }\n if (!integration.related[integration.entityData.owner]) {\n list.push(integration.entityData.owner);\n }\n if (!integration.related[integration.entityData.serviceProvider]) {\n list.push(integration.entityData.serviceProvider);\n }\n if (!integration.related[integration.entityData.authenticationProviderConfiguration]) {\n list.push(integration.entityData.authenticationProviderConfiguration);\n }\n if (!integration.related[integration.entityData.authorizationProviderConfiguration]) {\n list.push(integration.entityData.authorizationProviderConfiguration);\n }\n if (!integration.related[integration.entityData.logoutProviderConfiguration]) {\n list.push(integration.entityData.logoutProviderConfiguration);\n }\n\n this.$rootScope.loadingTimeout = this.$timeout(() => {\n this.$rootScope.statusMessage = \"Loading data\";\n this.$rootScope.appLoading = true;\n }, 300);\n\n this.BulkService.getBulk(list).then(\n (response) => {\n _.each(response.data, function (item) {\n integration.related['@' + item.key] = item;\n });\n\n this.processManglers(manglerList, integration.entityData.manglers, manglerChain);\n\n for (let i = 0; i < inheritTree.length; i++) {\n let inheritLevel = inheritTree[i];\n let itemManglers = integration.related[integration.entityData[inheritLevel]].entityData.manglers || {};\n let itemConfig: any = integration.related[integration.entityData[inheritLevel]].entityData.configuration || {};\n\n this.processManglers(manglerList, itemManglers, manglerChain);\n propData = _.extend(propData, itemConfig.default || {});\n }\n\n _.forIn(manglerChain, (value: any, key) => {\n this.propertyList = _.union(this.propertyList, value.inProps, value.outProps);\n });\n\n this.propertyList = (_).uniqBy(this.propertyList, 'propertyName');\n\n types = _.map(this.propertyList, 'propertyType');\n this.propertyList = _.map(this.propertyList, 'propertyName');\n\n this.zippedPropertyList = _.zipObject(this.propertyList, types);\n\n propData = _.keys(propData);\n deferred.resolve(_.omit(this.zippedPropertyList, propData));\n }\n ).finally(\n () => {\n this.$timeout.cancel(this.$rootScope.loadingTimeout);\n this.$rootScope.appLoading = false;\n deferred.resolve({});\n }\n );\n\n return deferred.promise;\n }\n}\n\nclass ManglerItemOperation {\n public static readonly AUTHENTICATION = 'AUTHENTICATION';\n public static readonly AUTHORIZATION = 'AUTHORIZATION';\n public static readonly LOGOUT = 'LOGOUT';\n public static readonly ANY = 'ANY';\n}\n\nclass ManglerItemPhase {\n public static readonly REQUEST = 'REQUEST';\n public static readonly RESPONSE = 'RESPONSE';\n public static readonly TOKEN = 'TOKEN';\n public static readonly ANY = 'ANY';\n}\n\nclass ManglerItemProtocol {\n public static readonly REST = 'REST';\n public static readonly SAML = 'SAML';\n public static readonly OAUTH = 'OAUTH';\n public static readonly ANY = 'ANY';\n}\n\nexport class ManglerItem {\n static Operation = {\n AUTHENTICATION: 'AUTHENTICATION',\n AUTHORIZATION: 'AUTHORIZATION',\n LOGOUT: 'LOGOUT',\n ANY: 'ANY'\n };\n static Phase = {\n REQUEST: 'REQUEST',\n RESPONSE: 'RESPONSE',\n TOKEN: 'TOKEN',\n ANY: 'ANY'\n };\n static Protocol = {\n REST: 'REST',\n SAML: 'SAML',\n OAUTH: 'OAUTH',\n ANY: 'ANY'\n };\n\n private readonly bucket = {\n SAML_REQUEST_MANGLER: {\n operation: ManglerItemOperation.ANY,\n protocol: ManglerItemProtocol.SAML,\n phase: ManglerItemPhase.REQUEST\n },\n SAML_RESPONSE_MANGLER: {\n operation: ManglerItemOperation.ANY,\n protocol: ManglerItemProtocol.SAML,\n phase: ManglerItemPhase.RESPONSE\n },\n // SAML IdP Initiated Logout\n SAML_REQUEST_IDP_INITIATED: {\n operation: ManglerItemOperation.LOGOUT,\n protocol: ManglerItemProtocol.SAML,\n phase: ManglerItemPhase.RESPONSE\n },\n SAML_RESPONSE_IDP_INITIATED: {\n operation: ManglerItemOperation.LOGOUT,\n protocol: ManglerItemProtocol.SAML,\n phase: ManglerItemPhase.REQUEST\n },\n // REST AUTHORIZATION\n REST_AUTHORIZATION_REQUEST_MANGLER: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.REST,\n phase: ManglerItemPhase.REQUEST\n },\n REST_AUTHORIZATION_RESPONSE_MANGLER: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.REST,\n phase: ManglerItemPhase.RESPONSE\n },\n // TOKEN MANGLER\n AUTHENTICATION_TOKEN_MANGLER: {\n operation: ManglerItemOperation.AUTHENTICATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.TOKEN\n },\n AUTHORIZATION_TOKEN_MANGLER: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.TOKEN\n },\n SHORT_AUTHORIZATION_TOKEN_MANGLER: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.TOKEN\n },\n // RESOURCE MANGLER\n RESOURCE_AUTHORIZATION_REQUEST: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.REQUEST\n },\n RESOURCE_PREFLIGHT_AUTHORIZATION_REQUEST: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.REQUEST\n },\n AUTHORIZATION_REQUEST: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.REQUEST\n },\n // OAUTH2\n OAUTH2_AUTHORIZATION_CODE_REQUEST_MANGLER: {\n operation: ManglerItemOperation.AUTHENTICATION,\n protocol: ManglerItemProtocol.OAUTH,\n phase: ManglerItemPhase.REQUEST\n },\n OAUTH2_ACCESS_TOKEN_REQUEST_MANGLER: {\n operation: ManglerItemOperation.ANY,\n protocol: ManglerItemProtocol.OAUTH,\n phase: ManglerItemPhase.REQUEST\n },\n OAUTH2_LOGOUT_REQUEST_MANGLER: {\n operation: ManglerItemOperation.LOGOUT,\n protocol: ManglerItemProtocol.OAUTH,\n phase: ManglerItemPhase.REQUEST\n },\n // XACML\n XACML20_REQUEST_MANGLER: {\n operation: ManglerItemOperation.AUTHORIZATION,\n protocol: ManglerItemProtocol.ANY,\n phase: ManglerItemPhase.REQUEST\n }\n };\n\n public operation;\n public protocol;\n public phase;\n\n public inProps;\n public outProps;\n\n constructor(bucketName) {\n let bucket = this.bucket[bucketName];\n\n this.operation = bucket ? bucket.operation : null;\n this.protocol = bucket ? bucket.protocol : null;\n this.phase = bucket ? bucket.phase : null;\n }\n\n public setInfo(info) {\n for (let i = 0; i < info.length; i++) {\n let requirement = info[i];\n\n switch (requirement.requirementType) {\n case 'IN_PROPERTIES':\n this.inProps = requirement.configurationProperties;\n break;\n\n case 'OUT_PROPERTIES':\n this.outProps = requirement.configurationProperties;\n break;\n }\n }\n\n _.forIn(this.inProps, (value, key) => {\n value.phase = this.phase;\n });\n\n _.forIn(this.outProps, (value, key) => {\n value.phase = this.phase;\n });\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ManglerUtil.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as angular from 'angular';\n\nexport class ApcClientDataDirective {\n public restrict;\n public replace;\n public scope;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.scope = {\n data: '=',\n allowedList: '@?',\n inheritPath: '@',\n inheritTree: '@',\n readOnly: '=',\n template: '@?'\n };\n this.controller = ApcClientDataCtrl;\n }\n\n public templateUrl = (element, attributes) => {\n let template = 'module/ui/directive/ClientData/ClientData.html';\n if (angular.isDefined(attributes.template)) {\n template = attributes.template;\n }\n return template;\n }\n}\n\nexport class ApcClientDataCtrl {\n constructor($scope, $sce, DataCollectorService, UserService, TooltipService, InputEscapeService, $filter) {\n \"ngInject\";\n $scope.user = UserService;\n $scope.filter = $filter('boolean');\n\n TooltipService.getTooltips().then(function (result) {\n $scope.clientDataTooltips = result.data.CLIENT_DATA.clientData;\n $scope.getTooltip = function (property) {\n if (!$scope.clientDataTooltips[property + '.field']) {\n return;\n }\n return $scope.clientDataTooltips[property + '.field'];\n };\n });\n\n let fieldInvalidOrNull = function (property, field) {\n if (field.$invalid) {\n return true;\n }\n let clientData = $scope.data.entityData.clientData;\n if (clientData && property in clientData) {\n return !clientData[property];\n }\n return false;\n };\n\n $scope.properties = [\n {field: 'displayName', name: 'Display Name', type: 'string'},\n {field: 'logoUrl', name: 'Logo Url', type: 'string'},\n {field: 'passiveAuthnEnabled', name: 'Enable Passive AuthN', type: 'boolean'},\n {field: 'authPerAggregator', name: 'Auth / Aggregator', type: 'boolean'},\n {field: 'authPerBrowserSession', name: 'Auth / Browser Session', type: 'boolean'},\n {field: 'iFrameRequired', name: 'IFrame Required', type: 'boolean'},\n {field: 'iFrameWidth', name: 'IFrame Width', type: 'number', addon: 'px'},\n {field: 'iFrameHeight', name: 'IFrame Height', type: 'number', addon: 'px'},\n {field: 'preflightMaxResources', name: 'Max Number of Preflight Resources', type: 'number'},\n //{field: 'preloadToken', name: 'Preload Token', type: 'boolean'},\n {field: 'isProxy', name: 'Proxy MVPD', type: 'boolean'},\n {field: 'tempPass', name: 'TempPass', type: 'boolean'}\n ];\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.clear = function (property) {\n let value = $scope.data.entityData.clientData[property];\n if (!value) {\n delete $scope.data.entityData.clientData[property];\n }\n };\n $scope.clearBoolean = function (property) {\n if ($scope.data.entityData.clientData[property] === null) {\n delete $scope.data.entityData.clientData[property];\n }\n };\n $scope.deleteProperty = function (property) {\n if ($scope.data.entityData.clientData && $scope.inheritData[property]) {\n delete $scope.data.entityData.clientData[property];\n }\n };\n $scope.hideProperty = function (property) {\n if ($scope.inheritData[property]) {\n return;\n }\n if ($scope.data.entityData.clientData) {\n delete $scope.data.entityData.clientData[property];\n }\n for (let i = 0; i < $scope.properties.length; i++) {\n if ($scope.properties[i].field === property) {\n $scope.properties[i].added = false;\n }\n }\n };\n $scope.addProperty = function (property) {\n for (let i = 0; i < $scope.properties.length; i++) {\n if ($scope.properties[i].field === property) {\n $scope.properties[i].added = true;\n }\n }\n };\n $scope.removeIfNullOrInvalid = function (property, clientDataForm) {\n let field = clientDataForm['clientData-' + property];\n if (fieldInvalidOrNull(property, field)) {\n delete $scope.data.entityData.clientData[property];\n }\n };\n\n $scope.isFieldInvalid = function (property, clientDataForm) {\n let field = clientDataForm['clientData-' + property];\n if (field) {\n return field.$invalid && field.$dirty;\n }\n else {\n return false;\n }\n };\n $scope.getProperties = function () {\n let result = [];\n for (let i = 0; i < $scope.properties.length; i++) {\n if (!$scope.properties[i].added && !$scope.isDefined($scope.properties[i].field) && !$scope.inheritData[$scope.properties[i].field]) {\n result.push($scope.properties[i]);\n }\n }\n return result;\n };\n $scope.isDefined = function (property) {\n return ($scope.data.entityData.clientData) ? angular.isDefined($scope.data.entityData.clientData[property]) : false;\n };\n $scope.onNumberKeyPress = function (event) {\n if (event.keyCode === 32) {\n event.preventDefault();\n }\n };\n $scope.inheritData = {};\n if ($scope.inheritPath) {\n let inheritChain = $scope.inheritPath.split(':');\n for (let i = 0; i < $scope.properties.length; i++) {\n let field = $scope.properties[i].field;\n for (let j = 0; j < inheritChain.length; j++) {\n let inheritLevel = inheritChain[j];\n let inheritClientData = $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.clientData;\n let inheritValue;\n if (inheritClientData) {\n inheritValue = inheritClientData[field];\n if (angular.isDefined(inheritValue)) {\n $scope.inheritData[field] = {\n value: inheritValue,\n target: inheritLevel\n };\n break;\n }\n }\n }\n }\n $scope.useInheritTemplate = function (field) {\n let result = $scope.inheritData[field] ? 'Use inherited value: ' + InputEscapeService.escapeHtml($scope.inheritData[field].value) + '' : 'This property does not have an inherited value';\n return $sce.trustAsHtml(result);\n };\n $scope.inheritanceTemplate = function (field, name) {\n let result = '

              ' + name + ' - Property Inheritance Chain

              ';\n let inheritTreeData = $scope.inheritTree.split(':');\n let inheritChain = $scope.inheritPath.split(':');\n result += '';\n for (let j = inheritTreeData.length - 1; j >= 0; j--) {\n let inheritLayerName = inheritTreeData[j];\n let inheritLayerValue = 'Not set';\n let style = '';\n let inherited = '';\n let padding = 10 * (inheritTreeData.length - j);\n if (j === 0) {\n inheritLayerValue = $scope.data.entityData.clientData ? $scope.data.entityData.clientData[field] : 'Not set';\n } else {\n let inheritEntity = inheritChain[j - 1];\n inheritLayerValue = $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.clientData ? $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.clientData[field] : 'Not set';\n }\n if (!angular.isDefined(inheritLayerValue)) {\n inheritLayerValue = 'Not set';\n }\n if (inheritLayerValue !== 'Not set') {\n if (j !== 0) {\n result = result.replace(/inherited/g, '');\n inherited = 'inherited';\n }\n\n if (typeof inheritLayerValue === 'boolean') {\n inheritLayerValue = $scope.filter(inheritLayerValue);\n }\n result = result.replace('hasValue', '');\n style = 'hasValue';\n }\n result += '';\n }\n result += '
              Level:Value:
              ' + inheritLayerName + '' + InputEscapeService.escapeHtml(inheritLayerValue) + '
              ';\n return $sce.trustAsHtml(result);\n };\n }\n for (let k = 0; k < $scope.properties.length; k++) {\n if ($scope.isDefined($scope.properties[k].field)) {\n $scope.properties[k].added = true;\n }\n }\n $scope.infoTooltip = $sce.trustAsHtml('This is a modified value, not the one inherited.
              Click to see the inheritance chain.');\n\n $scope.isVisible = function () {\n if (!$scope.readOnly) {\n return true;\n }\n return $scope.getProperties().length !== $scope.properties.length;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/ClientData/ClientData.ts","import * as _ from 'lodash';\nimport * as angular from 'angular';\n\nexport class ApcManglersDirective {\n public restrict;\n public replace;\n public scope;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n 'data': '=',\n 'manglers': '=',\n 'inheritPath': '@',\n 'inheritTree': '@',\n 'operation': '@',\n 'template': '@?',\n 'readOnly': '=',\n 'allowedList': '@?'\n };\n this.controller = ApcManglersCtrl;\n }\n\n public templateUrl = (element, attributes) => {\n let template = 'module/ui/directive/Manglers/Manglers.html';\n if (angular.isDefined(attributes.template)) {\n template = attributes.template;\n }\n return template;\n }\n}\n\nexport class ApcManglersCtrl {\n constructor($scope, $sce, ManglerUtil, UserService, $filter, TooltipService, InputEscapeService) {\n \"ngInject\";\n $scope.user = UserService;\n $scope.filter = $filter('boolean');\n\n TooltipService.getTooltips().then(function (result) {\n $scope.manglerTooltips = result.data.MANGLERS;\n\n $scope.getTooltip = function (manglerid, propertyName, type) {\n if (!$scope.manglerTooltips[manglerid]) {\n return;\n }\n let manglerTooltips = $scope.manglerTooltips[manglerid];\n if (!manglerTooltips[propertyName + \".\" + type]) {\n return;\n }\n return manglerTooltips[propertyName + \".\" + type];\n };\n });\n\n let generateManglerProps = function () {\n let manglerChain = {};\n let inheritTree = $scope.inheritPath ? $scope.inheritPath.split(':') : [];\n ManglerUtil.processManglers($scope.manglers, $scope.data.entityData.manglers, manglerChain);\n for (let i = 0; i < inheritTree.length; i++) {\n let inheritLevel = inheritTree[i];\n if ($scope.data.related[$scope.data.entityData[inheritLevel]] != null) {\n ManglerUtil.processManglers($scope.manglers, $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.manglers, manglerChain);\n }\n }\n _.forIn(manglerChain, function (value: any, key) {\n if (value.operation === $scope.operation || value.operation === 'ANY') {\n let newProps = _.union(value.inProps, value.outProps);\n newProps = _.map(newProps, function (prop: any) {\n prop.manglerId = key;\n return prop;\n });\n\n $scope.props = _.union($scope.props, newProps);\n }\n });\n $scope.props = (_).uniqBy($scope.props, 'propertyName');\n };\n $scope.clear = function (property) {\n let value = $scope.data.entityData.configuration.default[property];\n if (!value) {\n delete $scope.data.entityData.configuration.default[property];\n }\n };\n $scope.clearBoolean = function (property) {\n if ($scope.data.entityData.configuration.default[property] === null) {\n delete $scope.data.entityData.configuration.default[property];\n }\n };\n $scope.deleteProperty = function (property) {\n if (!$scope.inheritData[property]) {\n return;\n }\n if ($scope.data.entityData.configuration && $scope.data.entityData.configuration.default) {\n delete $scope.data.entityData.configuration.default[property];\n }\n };\n $scope.isFieldInvalid = function (property, manglerForm) {\n if (manglerForm['mangler-' + property]) {\n return manglerForm['mangler-' + property].$invalid && manglerForm['mangler-' + property].$dirty;\n }\n else {\n return false;\n }\n };\n $scope.isDefined = function (property) {\n return ($scope.data.entityData.configuration && $scope.data.entityData.configuration.default) ? angular.isDefined($scope.data.entityData.configuration.default[property]) : false;\n };\n $scope.isBoolean = function (property) {\n return property.propertyType === 'java.lang.Boolean' || property.propertyType === 'boolean';\n };\n $scope.onNumberKeyPress = function (event) {\n if (event.keyCode === 32) {\n event.preventDefault();\n }\n };\n $scope.getPropsByPhase = function (phase) {\n let result = [];\n for (let i = 0; i < $scope.props.length; i++) {\n if ($scope.props[i].phase === phase || $scope.props[i].phase === 'ANY') {\n result.push($scope.props[i]);\n }\n }\n return result;\n };\n $scope.selectPhase = function (phase) {\n if ($scope.selectedPhase === phase) {\n $scope.selectedPhase = null;\n } else {\n $scope.selectedPhase = phase;\n }\n };\n $scope.getInheritedTooltip = function (propertyName) {\n let value = $scope.inheritData[propertyName] ? ($scope.inheritData[propertyName]).value : null;\n if (angular.isObject(value)) {\n value = $filter('json')(value);\n }\n\n if (propertyName.substr(propertyName.length - 3) === \"ttl\") {\n let processedTtl = ManglerUtil.processTTL(value);\n value = processedTtl.asString;\n }\n\n let result = $scope.inheritData[propertyName] ? 'Use inherited value: ' + InputEscapeService.escapeHtml(value) + '' : 'This property does not have an inherited value';\n return $sce.trustAsHtml(result);\n };\n $scope.props = [];\n generateManglerProps();\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.inheritData = {};\n if ($scope.inheritPath) {\n let inheritChain = $scope.inheritPath.split(':');\n for (let i = 0; i < $scope.props.length; i++) {\n let field = $scope.props[i].propertyName;\n for (let j = 0; j < inheritChain.length; j++) {\n let inheritLevel = inheritChain[j];\n if ($scope.data.related[$scope.data.entityData[inheritLevel]].entityData.configuration) {\n let inheritClientData = $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.configuration.default;\n let inheritValue;\n if (inheritClientData) {\n inheritValue = inheritClientData[field];\n if (angular.isDefined(inheritValue)) {\n $scope.inheritData[field] = ({\n value: inheritValue,\n target: inheritLevel\n });\n break;\n }\n }\n }\n }\n }\n $scope.inheritanceTemplate = function (field) {\n let result = '

              ' + $filter('propertyAlias')(field) + ' - Property Inheritance Chain

              ';\n let inheritTreeData = $scope.inheritTree.split(':');\n let inheritChain = $scope.inheritPath.split(':');\n result += '';\n for (let j = inheritTreeData.length - 1; j >= 0; j--) {\n let inheritLayerName = inheritTreeData[j];\n let inheritLayerValue = 'Not set';\n let style = '';\n let inherited = '';\n let padding = 10 * (inheritTreeData.length - j);\n if (j === 0) {\n inheritLayerValue = ($scope.data.entityData.configuration && $scope.data.entityData.configuration.default) ? $scope.data.entityData.configuration.default[field] : 'Not set';\n } else {\n let inheritEntity = inheritChain[j - 1];\n inheritLayerValue = ($scope.data.related[$scope.data.entityData[inheritEntity]].entityData.configuration && $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.configuration.default) ? $scope.data.related[$scope.data.entityData[inheritEntity]].entityData.configuration.default[field] : 'Not set';\n }\n if (!angular.isDefined(inheritLayerValue)) {\n inheritLayerValue = 'Not set';\n }\n if (inheritLayerValue !== 'Not set') {\n if (j !== 0) {\n result = result.replace(/inherited/g, '');\n inherited = 'inherited';\n }\n\n if (typeof inheritLayerValue === 'boolean') {\n inheritLayerValue = $scope.filter(inheritLayerValue);\n }\n result = result.replace('hasValue', '');\n style = 'hasValue';\n }\n if (inheritLayerValue !== 'Not set' && angular.isObject(inheritLayerValue)) {\n inheritLayerValue = $filter('json')(inheritLayerValue);\n }\n\n if (field.substr(field.length - 3) === \"ttl\" && inheritLayerValue !== \"Not set\") {\n let processedTtl = ManglerUtil.processTTL(inheritLayerValue);\n inheritLayerValue = processedTtl.asString;\n }\n\n result += '';\n }\n result += '
              Level:Value:
              ' + inheritLayerName + '' + InputEscapeService.escapeHtml(inheritLayerValue) + '
              ';\n return $sce.trustAsHtml(result);\n };\n }\n $scope.infoTooltip = $sce.trustAsHtml('This is a modified value, not the one inherited.
              Click to see the inheritance chain.');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Manglers/Manglers.ts","export class ApcOauthConsumerCredentialsDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n title: '@'\n };\n this.template = require('./OAuthConsumerCredentials.tmpl');\n this.controller = ApcOauthConsumerCredentialsCtrl;\n }\n}\n\nexport class ApcOauthConsumerCredentialsCtrl {\n constructor($scope, TooltipService) {\n \"ngInject\";\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuthConsumerCredentials;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/OAuthConsumerCredentials/OAuthConsumerCredentials.ts","export class ApcOauth2ClientCredentialsDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n title: '@'\n };\n this.template = require('./OAuth2ClientCredentials.tmpl');\n this.controller = ApcOauth2ClientCredentialsCtrl;\n }\n}\n\nexport class ApcOauth2ClientCredentialsCtrl {\n constructor($scope, TooltipService) {\n \"ngInject\";\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuth2ClientCredentials;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/OAuth2ClientCredentials/OAuth2ClientCredentials.ts","export class ApcOAuth2AccessTokenDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n title: '@'\n };\n this.template = require('./OAuth2AccessToken.tmpl');\n this.controller = ApcOAuth2AccessTokenCtrl;\n }\n}\n\nexport class ApcOAuth2AccessTokenCtrl {\n constructor($scope, TooltipService) {\n \"ngInject\";\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuth2Endpoint;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/OAuth2AccessToken/OAuth2AccessToken.ts","export class ApcOauthEndpointDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n type: '@',\n title: '@'\n };\n this.template = require('./OAuthEndpoint.tmpl');\n this.controller = ApcOauthEndpointCtrl;\n }\n}\n\nexport class ApcOauthEndpointCtrl {\n constructor($scope, TooltipService) {\n \"ngInject\";\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.oAuthEndpoint;\n });\n }\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/OAuthEndpoint/OAuthEndpoint.ts","import * as angular from 'angular'\n\n/**\n * @class PanelListDirective\n * @memberOf module:ui\n * @see module:ui.PanelListCtrl\n * @example\n * \n * @description Displays a panel with title, {@link module:ui.SearchboxDirective}, pagination and a table populated with given data.\n */\nexport class ApcPanelListDirective {\n public restrict;\n public replace;\n public scope;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n usePanel: '=?',\n /**\n * @name module:ui.PanelListDirective#panelTitle\n * @type {String}\n * @description Panel title\n */\n 'panelTitle': '@',\n /**\n * @name module:ui.PanelListDirective#itemRenderer\n * @type {String}\n * @description Path to external item renderer\n */\n 'itemRenderer': '@',\n /**\n * @name module:ui.PanelListDirective#columns\n * @type {Array}\n * @example\n * [{\n * name: 'Column name',\n * sortable: true || false,\n * sorted: true || false,\n * sortAsc: true || false,\n * sortField: 'fieldToSortBy',\n * class: 'additional-styling-class'\n * }]\n * @description Columns data\n */\n 'columns': '=',\n /**\n * @name module:ui.PanelListDirective#service\n * @type {Object}\n * @description The service used to fetch {@link module:ui.PanelListDirective#data}. This service needs a getPage method which should accept pagination, sorting and search params. See {@link module:ui.PanelListCtrl#updateData}\n */\n 'service': '=',\n /**\n * @name module:ui.PanelListDirective#data\n * @type {Object}\n * @example\n * {\n * entities: [{},{}],\n * count: totalItemsCount\n * }\n * @description Initial data to display\n */\n 'data': '=',\n /**\n * @name module:ui.PanelListDirective#pageSize\n * @type {Number}\n * @default 20\n * @description Page size value used by pagination.\n */\n 'pageSize': '=?',\n /**\n * @name module:ui.PanelListDirective#onItemClick\n * @type {Function}\n * @description Item click handler\n */\n 'onItemClick': '&?',\n 'fetchRelated': '=?'\n };\n this.controller = ApcPanelListCtrl;\n }\n\n public template = (element, attr) => {\n attr.usePanel = (angular.isDefined(attr.usePanel)) ? attr.usePanel : false;\n if (attr.usePanel) {\n return require('./PanelList.tmpl');\n } else {\n return require('./TableList.tmpl');\n }\n };\n}\n\nexport class ApcPanelListCtrl {\n constructor($scope, $rootScope, $timeout, SearchEvent, ResilienceService) {\n \"ngInject\";\n /**\n * @name module:ui.PanelListCtrl#updateData\n * @method\n * @private\n * @description Calls 'getPage' method on {@link module:ui.PanelListDirective#service} with pagination, search and sorting data\n */\n let updateData = function () {\n let sortOrder = ($scope.sortingColumn.sortAsc) ? 'ASC' : 'DESC';\n $scope.loadingTimeout = $timeout(function () {\n $scope.loading = true;\n }, 300);\n $scope.service.getPage($scope.pagination.currentPage, $scope.sortingColumn.sortField, sortOrder, encodeURIComponent($scope.searchTerm), $scope.fetchRelated).then(function (response) {\n $scope.data = response.data;\n $timeout.cancel($scope.loadingTimeout);\n $scope.loading = false;\n });\n };\n /**\n * @name module:ui.PanelListCtrl#selectDefaultSortingColumn\n * @method\n * @private\n * @description Iterates over {@link module:ui.PanelListDirective#columns} and sets the default sorting column.\n */\n let selectDefaultSortingColumn = function () {\n for (let i = 0; i < $scope.columns.length; i++) {\n if ($scope.columns[i].sorted) {\n $scope.sortingColumn = $scope.columns[i];\n }\n }\n };\n /**\n * @name module:ui.PanelListCtrl#loading\n * @type {Boolean}\n * @default false\n * @description Loading flag\n */\n $scope.loading = false;\n $scope.fetchRelated = (angular.isDefined($scope.fetchRelated)) ? $scope.fetchRelated : false;\n $scope.usePanel = (angular.isDefined($scope.usePanel)) ? $scope.usePanel : false;\n /**\n * @name module:ui.PanelListCtrl#pagination\n * @type {Object}\n * @default {currentPage: 1, pageSize: 20}\n * @description Pagination data\n */\n $scope.pagination = {\n currentPage: 1,\n pageSize: $scope.pageSize || 20\n };\n /**\n * @name module:ui.PanelListCtrl#searchTerm\n * @type {String}\n * @default ''\n * @description Search data. {@link module:ui.SearchboxCtrl#searchTerm}\n */\n $scope.searchTerm = '';\n /**\n * @name module:ui.PanelListCtrl#onColumnSort\n * @method\n * @param {Object} column - column item\n * @description Sets the sorting data and calls {@link module:ui.PanelListCtrl#updateData}\n */\n $scope.onColumnSort = function (column) {\n if (column.sortable) {\n for (let i = 0; i < $scope.columns.length; i++) {\n $scope.columns[i].sorted = false;\n }\n column.sorted = true;\n column.sortAsc = !column.sortAsc;\n $scope.sortingColumn = column;\n updateData();\n }\n };\n /**\n * @name module:ui.PanelListCtrl#onPageChange\n * @method\n * @description Sets the pagination data and calls {@link module:ui.PanelListCtrl#updateData}\n */\n $scope.onPageChange = function () {\n updateData();\n $rootScope.$broadcast(\"onPageChange\");\n };\n /**\n * @name module:ui.PanelListCtrl#onSearch\n * @method\n * @description Sets the search data and calls {@link module:ui.PanelListCtrl#updateData}\n */\n $scope.onSearch = function (searchTerm) {\n $scope.pagination.currentPage = 1;\n $scope.searchTerm = searchTerm;\n updateData();\n };\n /**\n * @name module:ui.PanelListCtrl#onRowClick\n * @method\n * @param {Object} item - clicked item\n * @description Calls {@link module:ui.PanelListDirective#onItemClick} handler if defined\n */\n $scope.onRowClick = function (item) {\n if ($scope.onItemClick()) {\n $scope.onItemClick()(item);\n }\n };\n /**\n * @name module:ui.PanelListCtrl#onSearchReset\n * @method\n * @description Resets the search data and calls {@link module:ui.PanelListCtrl#updateData}\n */\n $scope.onSearchReset = function () {\n $scope.pagination.currentPage = 1;\n $scope.searchTerm = '';\n updateData();\n };\n selectDefaultSortingColumn();\n $scope.$on(SearchEvent.RESET, function () {\n $scope.onSearchReset();\n });\n $scope.$on(SearchEvent.SEARCH, function (event, payload) {\n $scope.onSearch(payload);\n });\n\n $scope.isDegraded = function () {\n return ResilienceService.getResilienceState();\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/PanelList/PanelList.ts","import * as _ from 'lodash';\n\nexport class ApcPlatformSwitcherDirective {\n public restrict;\n public replace;\n public transclude;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.transclude = true;\n this.scope = {\n platformList: '=',\n selectedPlatform: '@',\n onChange: '&?',\n data: '=',\n properties: '@',\n inheritPath: '@?',\n inheritTree: '@?',\n manglers: '=?',\n operation: '@?'\n };\n this.template = require('./PlatformSwitcher.tmpl');\n this.controller = ApcPlatformSwitcherCtrl;\n }\n}\n\nexport class ApcPlatformSwitcherCtrl {\n constructor($scope, $element, $attrs, ManglerUtil) {\n \"ngInject\";\n $scope.props = [];\n $scope.manglerChain = {};\n\n let getOveridedStatus = function (platformId) {\n let result = false;\n _.each($scope.data.related.platformConfigurations, function (config) {\n if (platformId === config.entityData.platform.split(':')[1]) {\n if ($attrs.properties.indexOf('mangler') !== -1) {\n if (config.entityData.configuration && config.entityData.configuration.default && Object.keys(config.entityData.configuration.default).length > 0) {\n\n $scope.generateManglerProps($scope.getPlatformIndex(platformId));\n let overridedManglers = $scope.extractOverridedMenglersForPlatform($scope.data.related.platformConfigurations, platformId);\n\n for (let i = 0; i < overridedManglers.length; i++) {\n let prop:any = _.find($scope.props, {propertyName: overridedManglers[i]});\n if (prop) {\n let bucket:any = _.find($scope.manglerChain, {id: prop.manglerId});\n if (bucket && ($scope.operation === bucket.operation || bucket.operation === \"ANY\")) {\n result = true;\n }\n }\n }\n }\n } else if (config.entityData.enabledPlatformServices && (platformId === 'iOS' || platformId === 'tvOS' || platformId === 'roku')) {\n result = true;\n }\n if ($attrs.properties.indexOf('clientData') !== -1) {\n if (config.entityData.clientData && Object.keys(config.entityData.clientData).length > 0) {\n result = true;\n }\n }\n }\n });\n return result;\n };\n\n $scope.getPlatformIndex = function (platformId) {\n let platformConfiguration = $scope.data.related.platformConfigurations;\n for (let i = 0; i < platformConfiguration.length; i++) {\n if (platformId === platformConfiguration[i].entityData.platform.split(':')[1]) {\n return i;\n }\n }\n };\n\n $scope.generateManglerProps = function (platformIndex) {\n $scope.props = [];\n $scope.manglerChain = {};\n\n let inheritTree = $scope.inheritPath ? $scope.inheritPath.split(':') : [];\n ManglerUtil.processManglers($scope.manglers, $scope.data.related.platformConfigurations[0].manglers, $scope.manglerChain);\n for (let i = 0; i < inheritTree.length; i++) {\n let inheritLevel = inheritTree[i];\n\n if ($scope.data.related.platformConfigurations[platformIndex].related && $scope.data.related.platformConfigurations[platformIndex].related[$scope.data.related.platformConfigurations[0].entityData[inheritLevel]] != null) {\n ManglerUtil.processManglers($scope.manglers, $scope.data.related.platformConfigurations[platformIndex].related[$scope.data.related.platformConfigurations[platformIndex].entityData[inheritLevel]].entityData.manglers, $scope.manglerChain);\n }\n }\n _.forIn($scope.manglerChain, function (value, key) {\n if (value.operation === $scope.operation || value.operation === 'ANY') {\n let newProps = _.union(value.inProps, value.outProps);\n newProps = _.map(newProps, function (prop:any) {\n prop.manglerId = key;\n return prop;\n });\n\n $scope.props = _.union($scope.props, newProps);\n }\n });\n $scope.props = (_).uniqBy($scope.props, 'propertyName');\n };\n\n $scope.extractOverridedMenglersForPlatform = function (platformConfiguration, platformId) {\n let overridedManglers = [];\n\n if (platformConfiguration.length === 0) {\n return overridedManglers;\n }\n\n _.each(platformConfiguration, function (config) {\n if (platformId === config.entityData.platform.split(':')[1]) {\n if (config.entityData.configuration && config.entityData.configuration.default && Object.keys(config.entityData.configuration.default).length > 0) {\n for (let propertyName in config.entityData.configuration.default) {\n overridedManglers.push(propertyName);\n }\n }\n }\n });\n\n return overridedManglers;\n };\n\n let setPlatformIconAndTooltip = function () {\n _.each($scope.platformList, function (platform) {\n switch (platform.entityData.id) {\n case 'all':\n platform.icon = 'circle';\n platform.isOverided = false;\n break;\n case 'xboxOne':\n platform.icon = 'game';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'xbox':\n platform.icon = 'game';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'XBOX':\n platform.icon = 'game';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'REST':\n platform.icon = 'deviceDesktop';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'JS':\n platform.icon = 'deviceLaptop';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'Android':\n platform.icon = 'android';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'roku':\n platform.icon = 'deviceTV';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'tvOS':\n platform.icon = 'apple';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n case 'fireTV':\n platform.icon = 'android';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n default:\n platform.icon = 'devices';\n platform.isOverided = getOveridedStatus(platform.entityData.id);\n break;\n }\n });\n };\n\n setPlatformIconAndTooltip();\n\n $scope.selectPlatform = function (value) {\n if ($scope.onChange()) {\n $scope.onChange()(value);\n setPlatformIconAndTooltip();\n }\n };\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/PlatformSwitcher/PlatformSwitcher.ts","export class ApcSamlMetadataInfoDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n 'data': '='\n };\n this.template = require('./SamlMetadataInfo.tmpl');\n this.controller = ApcSamlMetadataInfoCtrl;\n }\n}\n\nexport class ApcSamlMetadataInfoCtrl {\n constructor($scope, $filter, TooltipService) {\n \"ngInject\";\n $scope.parseMetadata = function (metadata) {\n return $filter('metadata')(metadata, true);\n };\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.samlMetadataInfo;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/SamlMetadataInfo/SamlMetadataInfo.ts","import * as angular from 'angular';\n\n/**\n * @class SearchboxDirective\n * @memberOf module:ui\n * @see module:ui.SearchboxCtrl\n * @example\n * \n * @description Displays a searchbox with reset button and search as you type functionality.\n */\nexport class ApcSearchboxDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n /**\n * @name module:ui.SearchboxDirective#searchDelay\n * @type {string}\n * @default 250\n * @description Search delay. Only works if {@link module:ui.SearchboxDirective#realTime} is true\n */\n 'searchDelay': '=?',\n /**\n * @name module:ui.SearchboxDirective#realTime\n * @type {string}\n * @default true\n * @description Enables/disables the realtime feature.\n */\n 'realTime': '=?',\n /**\n * @name module:ui.SearchboxDirective#onSearch\n * @type {string}\n * @description Handler to call when search is performed.\n */\n 'onSearch': '&',\n /**\n * @name module:ui.SearchboxDirective#onReset\n * @type {string}\n * @description Handler to call when search is reset\n */\n 'onReset': '&',\n /**\n * @name module:ui.SearchboxDirective#id\n * @type {string}\n * @description Custom html id\n */\n customId: '@?'\n\n };\n this.template = require('./Searchbox.tmpl');\n this.controller = ApcSearchboxCtrl;\n }\n}\n\nexport class ApcSearchboxCtrl {\n constructor($rootScope, $scope, $timeout, SearchEvent, ResilienceService) {\n \"ngInject\";\n /**\n * @name module:ui.SearchboxCtrl#searchTimeout\n * @private\n * @type {Promise}\n * @description Search timeout promise. Used for realtime search.\n */\n var searchTimeout;\n /**\n * @name module:ui.SearchboxCtrl#submitSearch\n * @method\n * @private\n * @description Calls onSearch attribute handler if present.\n */\n var submitSearch = function () {\n if ($scope.onSearch()) {\n $scope.onSearch()($scope.searchTerm);\n } else {\n $rootScope.$broadcast(SearchEvent.SEARCH, $scope.searchTerm);\n }\n };\n /**\n * @name module:ui.SearchboxCtrl#searchTerm\n * @type {string}\n * @default ''\n * @description Search input value\n */\n $scope.searchTerm = '';\n /**\n * @name module:ui.SearchboxCtrl#realTime\n * @type {Boolean}\n * @default true\n * @description Realtime feature flag\n */\n $scope.realTime = (angular.isDefined($scope.realTime)) ? $scope.realTime : true;\n /**\n * @name module:ui.SearchboxCtrl#searchDelay\n * @type {Number}\n * @default 250\n * @description Realtime search delay in milliseconds\n */\n $scope.searchDelay = $scope.searchDelay || 250;\n\n $scope.customId = angular.isDefined($scope.customId) ? $scope.customId : 'searchbox';\n /**\n * @name module:ui.SearchboxCtrl#resetSearch\n * @method\n * @description Resets the {@link module:ui.SearchboxCtrl#searchTerm} to the default value and calls the onReset handler if present.\n */\n $scope.resetSearch = function () {\n $scope.searchTerm = '';\n if ($scope.onReset()) {\n $scope.onReset()();\n } else {\n $rootScope.$broadcast(SearchEvent.RESET);\n }\n };\n /**\n * @name module:ui.SearchboxCtrl#onKeyPress\n * @method\n * @param {Event} event - Key press JQuery event\n * @description Key press handler. If the pressed key is ENTER, calls {@link module:ui.SearchboxCtrl#submitSearch}\n */\n $scope.onKeyPress = function (event) {\n if (event.keyCode === 13) {\n submitSearch();\n }\n };\n /**\n * @name module:ui.SearchboxCtrl#onKeyUp\n * @method\n * @see module:ui.SearchboxCtrl#searchDelay\n * @see module:ui.SearchboxCtrl#searchTimeout\n * @description Key up handler. If realtime is enabled, resets the timeout and after expiration calls {@link module:ui.SearchboxCtrl#submitSearch}.\n */\n $scope.onKeyUp = function () {\n if ($scope.realTime) {\n if (searchTimeout) {\n $timeout.cancel(searchTimeout);\n }\n searchTimeout = $timeout(function () {\n submitSearch();\n }, $scope.searchDelay);\n }\n };\n\n $scope.$on(SearchEvent.CLEAR, function () {\n $scope.searchTerm = '';\n });\n\n $scope.isDegraded = function () {\n return ResilienceService.getResilienceState();\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Searchbox/Searchbox.ts","import * as _ from \"lodash\";\nimport * as angular from 'angular';\n\nexport class ApcUserMetadataDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n localConf: '=',\n level: '@'\n };\n this.template = require('./UserMetadata.tmpl');\n this.controller = ApcUserMetadataCtrl;\n }\n}\n\nexport class ApcUserMetadataCtrl {\n constructor($scope, $rootScope, DataCollectorService, UserService, TooltipService) {\n \"ngInject\";\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.USER_METADATA.userMetadata;\n });\n\n $scope.defaultMetadataKeys = $scope.localConf.entities[0].entityData.defaultMetadataKeys;\n let changedKeys = {};\n\n $scope.keys = Object.keys;\n $scope.userMetadataComponentOpen = true;\n\n let isMetadataEncryptionCertificateSet = () => {\n let serviceProvider = $scope.data.related[$scope.data.entityData.serviceProvider];\n if (!_.isEmpty(serviceProvider.entityData.userMetadataEncryptionCertificateId)) {\n return true;\n }\n\n let programmer = $scope.data.related[serviceProvider.entityData.programmer];\n return !_.isEmpty(programmer.entityData.userMetadataEncryptionCertificateId);\n };\n\n $scope.hasErrors = ($scope.level === 'integration') ? !isMetadataEncryptionCertificateSet() : false;\n $scope.encryptionRequired = function (userMetadataKey) {\n return [\"zip\", \"encryptedZip\"].indexOf(userMetadataKey) >= 0;\n };\n\n $scope.disableUserMetadataComponent = false;\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n $scope.adobeOnly = UserService.hasRole('ROLE_CONSOLE_ALL_DATA');\n\n $scope.getDefaultKeyDescription = function (userMetadataKey) {\n if ($scope.tooltips) {\n return $scope.tooltips[userMetadataKey.toString() + '.description'] || \"No description available\";\n } else {\n return \"No description available\";\n }\n };\n\n $scope.squashInheritedUserMetadata = function (userMetadataMap) {\n let inheritTree = [\"authenticationProviderConfiguration\", \"owner\"];\n\n for (let i = 0; i < inheritTree.length; i++) {\n let inheritLevel = inheritTree[i];\n let inheritedUserMetadataArray = $scope.data.related[$scope.data.entityData[inheritLevel]].entityData.userMetadataKeys;\n\n if (!inheritedUserMetadataArray) {\n continue;\n }\n\n for (let j = 0; j < inheritedUserMetadataArray.length; j++) {\n let inheritedUserMetadata = inheritedUserMetadataArray[j];\n\n if (!(inheritedUserMetadata.key in userMetadataMap)) {\n let userMetadata:any = {};\n userMetadata.enabled = false;\n userMetadata.encrypted = $scope.encryptionRequired(inheritedUserMetadata.key);\n userMetadataMap[inheritedUserMetadata.key] = userMetadata;\n }\n\n if (!userMetadataMap[inheritedUserMetadata.key].description) {\n userMetadataMap[inheritedUserMetadata.key].description = inheritedUserMetadata.description;\n }\n\n userMetadataMap[inheritedUserMetadata.key].warning = false;\n }\n }\n\n return userMetadataMap;\n };\n\n $scope.squashDefaultUserMetadata = function (defaultMetadataMap, userMetadataMap) {\n\n for (let key in defaultMetadataMap) {\n if (!(userMetadataMap.hasOwnProperty(key))) {\n\n let userMetadata:any = {};\n userMetadata.enabled = true;\n userMetadata.encrypted = defaultMetadataMap[key];\n userMetadataMap[key] = userMetadata;\n }\n }\n\n return userMetadataMap;\n };\n\n $scope.createUserMetadataMap = function () {\n let userMetadataMap = {};\n\n switch ($scope.level) {\n case \"integration\":\n let userMetadataMapIntegrationLevel = null;\n\n if ($scope.data.entityData.userMetadata === null) {\n $scope.data.entityData.userMetadata = {userMetadataKeyConfigurations: {}};\n } else {\n userMetadataMapIntegrationLevel = $scope.data.entityData.userMetadata.userMetadataKeyConfigurations;\n }\n\n if (userMetadataMapIntegrationLevel) {\n userMetadataMap = angular.copy(userMetadataMapIntegrationLevel);\n }\n for (let userMetadataKey in userMetadataMap) {\n if (userMetadataMap.hasOwnProperty(userMetadataKey) && !(userMetadataKey in $scope.defaultMetadataKeys)) {\n userMetadataMap[userMetadataKey].warning = true;\n }\n }\n userMetadataMap = $scope.squashDefaultUserMetadata($scope.defaultMetadataKeys, userMetadataMap);\n userMetadataMap = $scope.squashInheritedUserMetadata(userMetadataMap);\n\n break;\n case \"mvpd\":\n if ($scope.data) {\n for (let index = 0; index < $scope.data.length; index++) {\n userMetadataMap[$scope.data[index].key] = {\n description: $scope.data[index].description\n };\n }\n }\n\n break;\n }\n\n return userMetadataMap;\n };\n\n $scope.userMetadataMap = $scope.createUserMetadataMap();\n\n $scope.onChangeUserMetadata = function (userMetadataKey) {\n let changedUserMetadata = $scope.userMetadataMap[userMetadataKey];\n\n if ($scope.data.entityData.userMetadata === null || $scope.data.entityData.userMetadata.userMetadataKeyConfigurations === null) {\n $scope.data.entityData.userMetadata = {userMetadataKeyConfigurations: {}};\n }\n\n // extra checks for defaultUserMetadata in order not to have duplicated keys\n if (userMetadataKey in $scope.defaultMetadataKeys) {\n let defaultMetadataKey = {\n enabled: true,\n encrypted: $scope.defaultMetadataKeys[userMetadataKey]\n };\n\n // if the key doesn't exist on integration, create it\n if (!(userMetadataKey in $scope.data.entityData.userMetadata.userMetadataKeyConfigurations)) {\n $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey] = {\n enabled: changedUserMetadata.enabled,\n encrypted: changedUserMetadata.encrypted\n };\n changedKeys[userMetadataKey] = userMetadataKey;\n\n // if the key was recently changed but now is identical with the one from defaultMetadata, delete it from integration\n } else if (userMetadataKey in changedKeys){\n if (changedUserMetadata.encrypted === defaultMetadataKey.encrypted && changedUserMetadata.enabled === defaultMetadataKey.enabled) {\n delete $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey];\n delete changedKeys[userMetadataKey];\n }\n\n // if the key existed previously, just change it or delete it from integration if is identical with the one from defaultMetadata\n } else {\n if (changedUserMetadata.encrypted === defaultMetadataKey.encrypted && changedUserMetadata.enabled === defaultMetadataKey.enabled) {\n delete $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey];\n\n } else {\n $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey] = {\n enabled: changedUserMetadata.enabled,\n encrypted: changedUserMetadata.encrypted\n };\n }\n }\n } else {\n $scope.data.entityData.userMetadata.userMetadataKeyConfigurations[userMetadataKey] = {\n enabled: changedUserMetadata.enabled,\n encrypted: changedUserMetadata.encrypted\n };\n }\n\n if (_.isEmpty($scope.data.entityData.userMetadata.userMetadataKeyConfigurations)) {\n $scope.data.entityData.userMetadata = null;\n }\n\n };\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/UserMetadata/UserMetadata.ts","export class ApcDurationInputCtrl {\n constructor($scope, ManglerUtil) {\n \"ngInject\";\n let SECONDS_IN_DAY = 86400;\n let SECONDS_IN_HOUR = 3600;\n let SECONDS_IN_MINUTE = 60;\n\n let processedTTL;\n\n $scope.$watch('data', function () {\n if (!$scope.data) {\n $scope.days = undefined;\n $scope.hours = undefined;\n $scope.minutes = undefined;\n $scope.seconds = undefined;\n }\n });\n\n if ($scope.data) {\n processedTTL = ManglerUtil.processTTL($scope.data);\n\n $scope.days = processedTTL.days;\n $scope.hours = processedTTL.hours;\n $scope.minutes = processedTTL.minutes;\n $scope.seconds = processedTTL.seconds;\n }\n\n if ($scope.inheritData) {\n processedTTL = ManglerUtil.processTTL($scope.inheritData);\n\n $scope.daysPlaceholder = processedTTL.days;\n $scope.hoursPlaceholder = processedTTL.hours;\n $scope.minutesPlaceholder = processedTTL.minutes;\n $scope.secondsPlaceholder = processedTTL.seconds;\n } else {\n $scope.daysPlaceholder = 0;\n $scope.hoursPlaceholder = 0;\n $scope.minutesPlaceholder = 0;\n $scope.secondsPlaceholder = 0;\n }\n\n let makeValid = function (number, maxValue) {\n return number > maxValue ? maxValue : number;\n };\n\n $scope.onNumberKeyPress = function (event) {\n if (event.keyCode === 32) {\n event.preventDefault();\n }\n };\n\n $scope.isFieldInvalid = function (form, property) {\n if (form['days-' + property] && form['hours-' + property] && form['minutes-' + property] && form['seconds-' + property]) {\n return (form['days-' + property].$invalid && form['days-' + property].$dirty) ||\n (form['hours-' + property].$invalid && form['hours-' + property].$dirty) ||\n (form['minutes-' + property].$invalid && form['minutes-' + property].$dirty) ||\n (form['seconds-' + property].$invalid && form['seconds-' + property].$dirty);\n } else {\n return false;\n }\n };\n\n $scope.onChange = function () {\n let newTime = 0;\n\n if ($scope.days) {\n $scope.days = makeValid($scope.days, 730);\n newTime = $scope.days * SECONDS_IN_DAY;\n }\n\n if ($scope.hours) {\n $scope.hours = makeValid($scope.hours, 23);\n newTime += $scope.hours * SECONDS_IN_HOUR;\n }\n\n if ($scope.minutes) {\n $scope.minutes = makeValid($scope.minutes, 59);\n newTime += $scope.minutes * SECONDS_IN_MINUTE;\n }\n\n if ($scope.seconds) {\n $scope.seconds = makeValid($scope.seconds, 59);\n newTime += $scope.seconds;\n }\n\n if (newTime) {\n $scope.data = newTime;\n } else {\n delete $scope.data;\n }\n\n };\n }\n}\n\nexport class ApcDurationInputDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n property: '=',\n readOnly: '=',\n inheritData: '=',\n selected: '='\n };\n this.template = require('./DurationInput.tmpl');\n this.controller = ApcDurationInputCtrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/DurationInput/DurationInput.ts","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/template/layout.tmpl\n// module id = 43\n// module chunks = 0","// /*************************************************************************\n// * ADOBE CONFIDENTIAL\n// * ___________________\n// *\n// * Copyright 2018 Adobe Systems Incorporated\n// * All Rights Reserved.\n// *\n// * NOTICE: All information contained herein is, and remains\n// * the property of Adobe Systems Incorporated and its suppliers,\n// * if any. The intellectual and technical concepts contained\n// * herein are proprietary to Adobe Systems Incorporated and its\n// * suppliers and are protected by all applicable intellectual property laws,\n// * including trade secret and copyright laws.\n// * Dissemination of this information or reproduction of this material\n// * is strictly forbidden unless prior written permission is obtained\n// * from Adobe Systems Incorporated.\n// ************************************************************************/\nwindow.X2JS = require('../node_modules/x2js/x2js');\nwindow._ = require('lodash');\nwindow.$ = window.jQuery = require('jquery');\nwindow.URI = require('urijs');\n\nimport './app.less';\n\nimport {AdminModule} from './module/admin/admin';\nimport {ChannelModule} from './module/channel/channel';\nimport {FeedbackModule} from './module/feedback/feedback';\nimport {ProgrammerModule} from './module/programmer/programmer';\nimport {DiffModule} from './module/diff/diff';\nimport {MvpdModule} from './module/mvpd/mvpd';\nimport {CoreModule} from \"./module/core/core\";\nimport {DataModule} from \"./module/data/data\";\nimport {IntegrationModule} from './module/integration/integration';\nimport {SecurityModule} from './module/security/security';\nimport {FiltersModule} from './module/filters/filters';\nimport {UIModule} from './module/ui/ui';\nimport {ReportModule} from './module/report/report';\nimport {App} from \"./app.ts\";\n\nnew CoreModule();\nnew AdminModule();\nnew DataModule();\nnew FiltersModule();\nnew ChannelModule();\nnew FeedbackModule();\nnew DiffModule();\nnew ProgrammerModule();\nnew MvpdModule();\nnew IntegrationModule();\nnew SecurityModule();\nnew UIModule();\nnew ReportModule();\n\nvar app = new App();\napp.bootstrap();\n\nrequire('../node_modules/bootstrap/dist/js/bootstrap');\nrequire('../node_modules/angular/angular');\nrequire('../node_modules/angular-cookies/angular-cookies');\nrequire('../node_modules/angular-md5/angular-md5');\nrequire('../node_modules/angular-xml/angular-xml');\nrequire('../node_modules/angular-toggle-switch/angular-toggle-switch');\nrequire('../node_modules/angular-breadcrumb/dist/angular-breadcrumb');\nrequire('../node_modules/angular-ui-router/release/angular-ui-router');\nrequire('../node_modules/angular-ui-bootstrap/dist/ui-bootstrap-tpls');\nrequire('../node_modules/angular-file-upload/dist/angular-file-upload');\nrequire('../node_modules/angular-json-tree/dist/angular-json-tree');\nrequire('../node_modules/angular-bootstrap-multiselect/dist/angular-bootstrap-multiselect');\n\nfunction importAll(r) {\n r.keys().forEach(function (file) {\n r(file);\n });\n}\n\nimportAll(require.context(\"ng-cache-loader?prefix=src:**!./\", true, /.*\\.html/));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 44\n// module chunks = 0","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {AdminAdvancedCtrl} from \"./partial/AdminAdvanced/AdminAdvanced\";\nimport {AdminDefaultMetadataCtrl} from \"./partial/AdminDefaultMetadata/AdminDefaultMetadata\";\nimport {AdminImportCtrl} from \"./partial/AdminImport/AdminImport\";\nimport {AdminInfoCtrl} from \"./partial/AdminInfo/AdminInfo\";\nimport {AdminTmsIdsCtrl} from \"./partial/AdminTmsIds/AdminTmsIds\";\nimport {MaintenanceCtrl} from \"./partial/Maintenance/Maintenance\";\nimport {MaintenanceModalCtrl} from \"./partial/AdminAdvanced/AdminAdvanced\";\nimport {AdminService} from \"./service/AdminService\";\nimport {TabsCtrl} from \"../ui/partial/Tabs/Tabs\";\n\n/**\n * @module admin\n * @requires ui.router\n * @requires module:core\n * @requires module:data\n * @description Handles admin features\n */\n@AngularModuleConfig({\n moduleName: 'admin',\n dependencies: ['ui.router', 'ui.bootstrap', 'angularFileUpload', 'core', 'data', 'security']\n})\nexport class AdminModule {\n constructor() {\n (this).ngRef.service('AdminService', AdminService);\n (this).ngRef.controller('MaintenanceCtrl', MaintenanceCtrl);\n (this).ngRef.controller('MaintenanceModalCtrl', MaintenanceModalCtrl);\n (this).ngRef.controller('AdminTmsIdsCtrl', AdminTmsIdsCtrl);\n (this).ngRef.controller('AdminInfoCtrl', AdminInfoCtrl);\n (this).ngRef.controller('AdminImportCtrl', AdminImportCtrl);\n (this).ngRef.controller('AdminDefaultMetadataCtrl', AdminDefaultMetadataCtrl);\n (this).ngRef.controller('AdminAdvancedCtrl', AdminAdvancedCtrl);\n }\n\n /**\n * @method config\n * @memberOf module:admin\n * @param {Object} $stateProvider - UI-Router's state provider\n * @param {module:core.States} States - application states\n * @description Configures admin module states.\n */\n config($stateProvider, States) {\n \"ngInject\";\n $stateProvider.state(States.Admin.name, {\n abstract: States.Admin.abstract,\n url: States.Admin.url,\n ncyBreadcrumb: {\n label: 'Admin'\n },\n resolve: {\n tabs: function (States) {\n return [\n {\n state: States.Admin,\n id: 'adminInfo'\n },\n {\n state: States.AdminImport,\n id: 'adminImport'\n },\n {\n state: States.AdminAdvanced,\n id: 'adminAdvanced'\n },\n {\n state: States.AdminTmsIds,\n id: 'adminTmsIds'\n },\n {\n state: States.AdminDefaultMetadata,\n id: 'adminDefaultMetadata'\n }\n ];\n }\n },\n views: {\n 'page@Base': {\n template: require('./../core/template/tabs-layout.tmpl'),\n controller: TabsCtrl\n },\n 'tabs@Base.Admin': {\n template: require('../ui/partial/Tabs/Tabs.tmpl')\n },\n 'tabContent@Base.Admin': {\n template: require('./partial/AdminInfo/AdminInfo.tmpl'),\n controller: AdminInfoCtrl,\n resolve: {\n consoleInfo: function (AdminService) {\n return AdminService.getConsoleInfo().then(function (response) {\n return response.data;\n });\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.AdminImport.name, {\n abstract: States.AdminImport.abstract,\n url: States.AdminImport.url,\n ncyBreadcrumb: {\n label: 'Import',\n parent: States.Admin.name\n },\n views: {\n 'tabContent@Base.Admin': {\n template: require('./partial/AdminImport/AdminImport.tmpl'),\n controller: AdminImportCtrl\n }\n }\n });\n\n $stateProvider.state(States.AdminAdvanced.name, {\n abstract: States.AdminAdvanced.abstract,\n url: States.AdminAdvanced.url,\n ncyBreadcrumb: {\n label: 'Advanced',\n parent: States.Admin.name\n },\n views: {\n 'tabContent@Base.Admin': {\n template: require('./partial/AdminAdvanced/AdminAdvanced.tmpl'),\n controller: AdminAdvancedCtrl,\n resolve: {\n storedModelSerialIds: function (AdminService) {\n return AdminService.getStoredModelSerialIds().then(function (response) {\n return response.data;\n });\n },\n isMaintenanceActive: function (AdminService) {\n return AdminService.isMaintenanceActive().then(function (response) {\n return response.data.maintenanceMode === 'ON';\n });\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.Maintenance.name, {\n abstract: States.Maintenance.abstract,\n url: States.Maintenance.url,\n ncyBreadcrumb: {\n label: States.Maintenance.displayName,\n parent: 'Base'\n },\n views: {\n 'page@Base': {\n template: require('./partial/Maintenance/Maintenance.tmpl'),\n controller: MaintenanceCtrl,\n resolve: {\n maintenanceData: function (AdminService) {\n return AdminService.isMaintenanceActive().then(function (response) {\n return response.data;\n });\n },\n isMaintenanceActive: function (AdminService) {\n return AdminService.isMaintenanceActive().then(function (response) {\n return response.data.maintenanceMode === 'ON';\n });\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.AdminTmsIds.name, {\n abstract: States.AdminTmsIds.abstract,\n url: States.AdminTmsIds.url,\n ncyBreadcrumb: {\n label: 'TMS IDs',\n parent: States.Admin.name\n },\n views: {\n 'tabContent@Base.Admin': {\n template: require('./partial/AdminTmsIds/AdminTmsIds.tmpl'),\n controller: AdminTmsIdsCtrl,\n resolve: {\n tmsIdsList: function (TMSIdService) {\n return TMSIdService.getTmsIdsList().then(function (response) {\n return response.data;\n });\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.AdminDefaultMetadata.name, {\n abstract: States.AdminDefaultMetadata.abstract,\n url: States.AdminDefaultMetadata.url,\n ncyBreadcrumb: {\n label: 'Default Metadata',\n parent: States.Admin.name\n },\n views: {\n 'tabContent@Base.Admin': {\n template: require('./partial/AdminDefaultMetadata/AdminDefaultMetadata.tmpl'),\n controller: AdminDefaultMetadataCtrl,\n resolve: {\n localConfigurationData: function (LocalConfigurationService) {\n return LocalConfigurationService.getLocalConfiguration().then(function (response) {\n return response.data;\n });\n }\n }\n }\n }\n });\n /* Add New States Above */\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/admin.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as angular from 'angular';\n\nimport {NotificationService, Notifications} from \"../../../core/service/NotificationService\";\n\nexport class AdminDefaultMetadataCtrl {\n constructor($scope, localConfigurationData, DataCollectorService, NotificationService: NotificationService) {\n \"ngInject\";\n\n $scope.createDefaultMetadataKeysArray = function (defaultMetadataKeysMap) {\n if (!defaultMetadataKeysMap || Object.keys(defaultMetadataKeysMap).length === 0) {\n return [];\n }\n\n let defaultMetadataKeysArray = [];\n for (let key in defaultMetadataKeysMap) {\n let defaultMetadataKey = {\n name: key,\n encrypted: defaultMetadataKeysMap[key]\n };\n defaultMetadataKeysArray.push(defaultMetadataKey);\n }\n\n defaultMetadataKeysArray.sort(function (key1, key2) {\n return key1.name.localeCompare(key2.name);\n });\n\n return defaultMetadataKeysArray;\n };\n\n if (localConfigurationData && localConfigurationData.entities[0]) {\n $scope.localConfigurationData = localConfigurationData;\n $scope.defaultMetadataKeysArray = $scope.createDefaultMetadataKeysArray($scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys);\n $scope.$watch('defaultMetadataKeysArray', DataCollectorService.collector($scope.localConfigurationData.entities[0]), true);\n } else {\n $scope.defaultMetadataKeysArray = null;\n }\n\n $scope.createNewEmptyDefaultMetadataKey = function () {\n return {\n name: null,\n encrypted: false\n };\n };\n\n $scope.newDefaultMetadataKey = $scope.createNewEmptyDefaultMetadataKey();\n $scope.newDefaultMetadataKeyAdded = false;\n\n $scope.onAddNewDefaultMetadataKey = function () {\n $scope.newDefaultMetadataKeyAdded = true;\n };\n\n $scope.resetNewDefaultMetadataKey = function (keyNameInput) {\n if (keyNameInput) {\n $scope.newDefaultMetadataKey = $scope.createNewEmptyDefaultMetadataKey();\n $scope.newDefaultMetadataKeyAdded = false;\n keyNameInput.$setPristine();\n }\n };\n\n $scope.addNewDefaultMetadataKey = function (keyNameInput) {\n if (keyNameInput && $scope.newDefaultMetadataKey.name && !$scope.newDefaultMetadataKeyFormHasError(keyNameInput)) {\n\n let newKeyName = $scope.newDefaultMetadataKey.name;\n $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[newKeyName] = $scope.newDefaultMetadataKey.encrypted;\n\n $scope.defaultMetadataKeysArray.splice(0, 0, $scope.newDefaultMetadataKey);\n\n $scope.resetNewDefaultMetadataKey(keyNameInput);\n return true;\n }\n\n return false;\n };\n\n $scope.onChangeDefaultMetadataKey = function (defaultMetadataKeyName) {\n let valueOfChangedKey = $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[defaultMetadataKeyName];\n $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[defaultMetadataKeyName] = !valueOfChangedKey;\n\n $scope.defaultMetadataKeysArray[defaultMetadataKeyName] = !valueOfChangedKey;\n };\n\n $scope.removeDefaultMetadataKey = function (defaultMetadataKeyName) {\n for (let index = 0; index < $scope.defaultMetadataKeysArray.length; index++) {\n if (angular.equals(defaultMetadataKeyName, $scope.defaultMetadataKeysArray[index].name)) {\n NotificationService.getConfirmationFromUser(Notifications.confirmDeleteDefaultMetadata).result.then(\n (userDecisionToDelete) => {\n if (userDecisionToDelete === true) {\n delete $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys[defaultMetadataKeyName];\n $scope.defaultMetadataKeysArray.splice(index, 1);\n }\n }\n );\n\n break;\n }\n }\n };\n\n $scope.isNewDefaultMetadataKeyNameEmpty = function () {\n return typeof $scope.newDefaultMetadataKey.name === 'undefined';\n };\n\n $scope.isNewDefaultMetadataKeyNameUnique = function () {\n return !($scope.newDefaultMetadataKey.name in $scope.localConfigurationData.entities[0].entityData.defaultMetadataKeys);\n };\n\n $scope.newDefaultMetadataKeyFormHasError = function () {\n return $scope.isNewDefaultMetadataKeyNameEmpty() || !$scope.isNewDefaultMetadataKeyNameUnique();\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/partial/AdminDefaultMetadata/AdminDefaultMetadata.ts","/**\n * @class AdminImportCtrl\n * @memberOf module:admin\n * @param {Object} $rootScope - Angualar root scope\n * @param {Object} $scope - Angualar scope\n * @param {Object} $state - Ui router state service\n * @param {Object} $window - Angular window wrapper\n * @param {module:core.States} States - Application states\n * @param {Object} FileUploader - Angular file uploader\n * @param {module:data.Config} Config - Application config\n * @param {module:security.CsrfTokenInterceptor} CsrfTokenInterceptor - CSRF token interceptor\n * @description Handles full configuration import\n */\nexport class AdminImportCtrl {\n constructor($rootScope, $scope, $state, $window, $http, States,\n Config, CsrfTokenInterceptor, PushStatusInterceptor, NotificationService,\n DownloadService, AdminService, HttpExceptionHandler, TooltipService,\n RetryableRequestInterceptor, EnvironmentService) {\n \"ngInject\";\n $scope.selectedEnvironment = EnvironmentService.getSelectedEnvironment();\n $scope.trimmingInfo = null;\n $scope.configUpgrade = false;\n $scope.file = null;\n $scope.fileName = '';\n $scope.chooseFile = function (input) {\n $scope.fileName = '';\n $scope.file = null;\n $scope.$apply(function () {\n $scope.file = input.files[0];\n $scope.fileName = $scope.file.name;\n });\n };\n /**\n * @name module:admin.AdminAdvancedCtrl#pullFromCore\n * @method\n * @description Pull latest configuration from Core\n */\n $scope.pullFromCore = () => {\n NotificationService.warnModal(\"Confirm pull from Core\", \"Are you sure you want to pull the latest Core configuration?\").result.then(\n (pullConfigurationConfirmation) => {\n if (pullConfigurationConfirmation === true) {\n $rootScope.statusMessage = \"Pulling configuration from Core\";\n $rootScope.appLoading = true;\n AdminService.pullFromCore().then(() => {\n $rootScope.appLoading = false;\n $window.location.reload();\n });\n }\n });\n };\n /**\n * @name module:admin.AdminAdvancedCtrl#exportLatest\n * @method\n * @description Export latest console configuration in JSON format\n */\n $scope.exportLatestJson = function () {\n AdminService.exportLatestJson();\n };\n /**\n * @name module:admin.AdminAdvancedCtrl#exportLatest\n * @method\n * @description Export latest console configuration in ZIP format\n */\n $scope.exportLatestZip = function () {\n AdminService.exportLatestZip();\n };\n /**\n * @method reviewChanges\n * @memberOf module:admin.AdminImportCtrl\n * @description Fetch diff data for the selected file\n */\n $scope.reviewChanges = function (form) {\n $rootScope.appLoading = true;\n\n if (form.$valid && $scope.file) {\n let formData = new FormData();\n formData.append('message', $scope.formData.message);\n formData.append('file', $scope.file);\n $http({\n method: 'POST',\n url: Config.API_ROOT + '/config/diff/import',\n headers: {'Content-Type': undefined},\n data: formData\n }).then(function (response) {\n $rootScope.appLoading = false;\n\n if (response.status === 204) {\n $scope.pushChanges(form);\n }\n if (response.data.modelUpgradeInformation) {\n $scope.configUpgrade = true;\n }\n if (response.data.trimmingInfo && response.data.trimmingInfo.trimmed) {\n $scope.trimmingInfo = response.trimmingInfo;\n }\n if (response.data.entityDifferences) {\n $scope.diffData = response.data;\n }\n $scope.completeDiffUUID = response.data.completeDiffUUID;\n },function (error) {\n $rootScope.appLoading = false;\n\n if (error.status === 413) {\n NotificationService.warn('Oops!', 'The file you are trying to upload exceeds the maximum allowed size of 10MB.');\n } else if (error.status === 400) {\n let title = 'Error';\n let message = 'There was an error during configuration import';\n if (error.data.exceptionType === 'FieldTypeValidationException' || error.data.exceptionType === 'UnreferencedEntitiesException') {\n message = error.data.additionalInfo;\n title = error.data.exceptionMessage;\n } else if (error.data.exceptionType) {\n title = 'Configuration validation error';\n message = error.data.exceptionMessage;\n }\n NotificationService.error(title, message);\n } else if (error.status === 502 || error.status === 503) {\n NotificationService.error('A related service was unreachable and the operation failed. Please retry in a few minutes.');\n } else {\n HttpExceptionHandler.responseError({\n data: error.data,\n status: error.status,\n config: {}\n });\n }\n });\n }\n };\n /**\n * @method pushChanges\n * @memberOf module:admin.AdminImportCtrl\n * @description Upload the configuration file to the server\n */\n $scope.pushChanges = function (form) {\n if (form.$valid && $scope.file) {\n let formData = new FormData();\n formData.append('message', $scope.formData.message);\n formData.append('file', $scope.file);\n $http({\n method: 'POST',\n url: Config.API_ROOT + '/admin/import',\n headers: {'Content-Type': undefined},\n data: formData\n }).then(function (response) {\n PushStatusInterceptor.response({config: {url: Config.API_ROOT + '/admin/import'}, data: response.data});\n },function (error) {\n RetryableRequestInterceptor.responseError({\n config: {url: Config.API_ROOT + '/admin/import'},\n data: error.data\n });\n });\n $rootScope.statusMessage = 'Pushing configuration to server';\n $rootScope.appLoading = true;\n }\n };\n\n /**\n * @name module:admin.AdminImportCtrl#formData\n * @type {Object}\n * @description Upload form data\n */\n $scope.formData = {\n message: ''\n };\n\n $scope.downloadCompleteDiff = function () {\n let url = Config.API_ROOT + '/config/diff/uuid/' + $scope.completeDiffUUID;\n DownloadService.download(url);\n };\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.ACTIONS.adminImpex;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/partial/AdminImport/AdminImport.ts","/**\n * @class AdminInfoCtrl\n * @memberOf module:admin\n * @param {Object} $scope - Angular scope\n * @param {Object} coreInfo - Adobe Pass Core configuration\n * @param {Object} consoleInfo - Console build information\n * @description Controls admin module Info tab\n */\nexport class AdminInfoCtrl {\n constructor($scope, consoleInfo, AdminService, TooltipService) {\n \"ngInject\";\n $scope.coreData = {};\n\n AdminService.getCoreInfo().then(function (response) {\n $scope.coreData = response.data || {};\n /**\n * @name module:admin.AdminInfoCtrl#coreInfo\n * @type {Object}\n * @description Adobe Pass Core latest configuration information\n */\n $scope.coreInfo = $scope.coreData.configurationInfo ? $scope.coreData.configurationInfo[0] : null;\n /**\n * @name module:admin.AdminInfoCtrl#coreVersion\n * @type {String}\n * @description Adobe Pass Core version\n */\n $scope.coreVersion = $scope.coreData.coreVersion;\n /**\n * @name module:admin.AdminInfoCtrl#coreModelId\n * @type {Number}\n * @description Adobe Pass Core model serial id\n */\n $scope.coreModelId = $scope.coreData.modelSerialId;\n /**\n * @name module:admin.AdminInfoCtrl#consoleInfo\n * @type {Object}\n * @description Adobe Pass Console build info\n */\n });\n $scope.consoleInfo = consoleInfo;\n\n AdminService.getSyncedCoreConfigurationVersion().then(function (response) {\n $scope.syncedConfigurationVersion = response.data;\n });\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.ACTIONS.adminInfo;\n });\n\n $scope.consoleClientVersion = `${APP_VERSION}-${APP_COMMIT}`;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/partial/AdminInfo/AdminInfo.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport {NotificationService, Notifications} from \"../../../core/service/NotificationService\";\n\nexport class AdminTmsIdsCtrl {\n\n constructor($scope, TMSIdService, tmsIdsList, DataCollectorService, ConsoleUtils, NotificationService: NotificationService) {\n \"ngInject\";\n\n let tmsidWatcher;\n\n if (tmsIdsList && tmsIdsList.entityData && tmsIdsList.entityData.rootEntityIds) {\n $scope.tmsIdsList = ConsoleUtils.createTmsIdsList(tmsIdsList.entityData.rootEntityIds);\n $scope.selectedTmsId = ConsoleUtils.TMSID_DEFAULT_VALUE;\n } else {\n $scope.tmsIdsList = null;\n }\n\n $scope.onChangeTmsIdMap = function () {\n $scope.tmsIdsArray = null;\n let tmsidmap = $scope.selectedTmsId;\n if (tmsidmap != ConsoleUtils.TMSID_DEFAULT_VALUE) {\n TMSIdService.getMVPDTMSIdMap(tmsidmap).then(function (response) {\n if (response.data && response.data.entityData && response.data.entityData.mapping) {\n $scope.selectedTmsIdMap = response.data;\n $scope.tmsIdsArray = ConsoleUtils.createTmsIdsArray($scope.selectedTmsIdMap.entityData.mapping);\n if (tmsidWatcher) {\n tmsidWatcher();\n }\n tmsidWatcher = $scope.$watch('tmsIdsArray', DataCollectorService.collector($scope.selectedTmsIdMap), true);\n }\n });\n }\n };\n\n $scope.isResourceNameInputEmpty = function () {\n return typeof $scope.newTmsId.resourceName === 'undefined';\n };\n\n $scope.isResourceIdInputEmpty = function () {\n return typeof $scope.newTmsId.resourceId === 'undefined';\n };\n\n $scope.isResourceNameUnique = function () {\n if ($scope.newTmsId.resourceName && $scope.selectedTmsIdMap.entityData.mapping) {\n return !($scope.newTmsId.resourceName in $scope.selectedTmsIdMap.entityData.mapping);\n }\n return true;\n };\n\n $scope.newTmsIdFormHasError = function () {\n if ($scope.isResourceNameInputEmpty() || $scope.isResourceIdInputEmpty()) {\n return true;\n }\n return !$scope.isResourceNameUnique();\n };\n\n $scope.createNewEmptyTmsId = function () {\n return {\n resourceName: null,\n resourceId: null\n };\n };\n\n $scope.newTmsId = $scope.createNewEmptyTmsId();\n $scope.newTmsIdAdded = false;\n\n $scope.onAddNewTmsId = function () {\n $scope.newTmsIdAdded = true;\n };\n\n $scope.onRemoveTmsId = function (tmsIdIndex) {\n if ($scope.tmsIdsArray && tmsIdIndex >= 0 && tmsIdIndex < $scope.tmsIdsArray.length) {\n NotificationService.getConfirmationFromUser(Notifications.confirmDeleteTMSID).result.then(\n (userDecisionToDelete) => {\n if (userDecisionToDelete === true) {\n delete $scope.selectedTmsIdMap.entityData.mapping[$scope.tmsIdsArray[tmsIdIndex].resourceName];\n $scope.tmsIdsArray.splice(tmsIdIndex, 1);\n }\n }\n );\n }\n };\n\n $scope.onResetNewTmsId = function () {\n $scope.newTmsId = $scope.createNewEmptyTmsId();\n $scope.newTmsIdAdded = false;\n };\n\n $scope.onSaveNewTmsId = function () {\n if ($scope.tmsIdsArray && $scope.newTmsId.resourceName && $scope.newTmsId.resourceId && !$scope.newTmsIdFormHasError()) {\n if (!$scope.selectedTmsIdMap.entityData.mapping) {\n $scope.selectedTmsIdMap.entityData.mapping = {};\n }\n\n let resourceNameString = $scope.newTmsId.resourceName.toString();\n let resourceIdString = $scope.newTmsId.resourceId.toString();\n\n $scope.selectedTmsIdMap.entityData.mapping[resourceNameString] = resourceIdString;\n $scope.tmsIdsArray.splice(0, 0, $scope.newTmsId);\n\n $scope.onResetNewTmsId();\n return true;\n }\n return false;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/partial/AdminTmsIds/AdminTmsIds.ts","export class MaintenanceCtrl {\n constructor($scope, $state, States, maintenanceData, isMaintenanceActive, UserService) {\n \"ngInject\";\n $scope.data = maintenanceData;\n $scope.isAdmin = UserService.hasRole('ROLE_CONSOLE_ADMIN');\n if (!isMaintenanceActive) {\n $state.go(States.Dashboard.name);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/partial/Maintenance/Maintenance.ts","/**\n * @class AdminService\n * @memberOf module:admin\n * @param {Object} $http - Angular http service\n * @param {module:data.Config} Config - Application config\n * @description Performs admin specific calls\n */\nexport class AdminService {\n constructor(private $http, private Config, private DownloadService, private CacheService) {\n \"ngInject\";\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @returns {HttpPromise} Latest Core configuration\n * @description Retrieves latest Adobe Pass Core configuration\n */\n getCoreInfo() {\n return this.$http.get(this.Config.API_ROOT + '/config/latestCoreConfiguration', {ignoreError: true});\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @returns {HttpPromise} Console build info\n * @description Retrieves console build info\n */\n getConsoleInfo() {\n return this.$http.get(this.Config.API_ROOT + '/info/build');\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @returns {HttpPromise}\n * @description Pull configuration from core\n */\n pullFromCore() {\n return this.$http.post(this.Config.API_ROOT + '/admin/pull');\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @description Uses Download service to download a json file\n */\n exportLatestJson() {\n this.DownloadService.download(this.Config.API_ROOT + '/admin/download');\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @description Uses Download service to download a zip file\n */\n exportLatestZip() {\n this.DownloadService.download(this.Config.API_ROOT + '/admin/downloadSplit');\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @description Activate maintenance mode\n */\n activateMaintenance(message) {\n this.CacheService.reset();\n return this.$http.post(this.Config.API_ROOT + '/admin/maintenance/activate?message=' + encodeURIComponent(message));\n }\n\n /**\n * @memberOf module:admin.AdminService\n * @description Deactivates maintenance mode\n */\n deactivateMaintenance(message) {\n this.CacheService.reset();\n return this.$http.post(this.Config.API_ROOT + '/admin/maintenance/deactivate?message=' + encodeURIComponent(message));\n }\n\n isMaintenanceActive() {\n return this.$http.get(this.Config.API_ROOT + '/admin/maintenance/status');\n }\n\n resetSyncedConfigVersion() {\n return this.$http.post(this.Config.API_ROOT + '/admin/resetSyncedCoreConfigurationVersion');\n }\n\n forceApigeeResync() {\n return this.$http.post(this.Config.API_ROOT + '/admin/devapps/resync?message=[DevApp Resync]');\n }\n\n forcePushConfig() {\n return this.$http.post(this.Config.API_ROOT + '/admin/forcePush');\n }\n\n getSyncedCoreConfigurationVersion() {\n return this.$http.get(this.Config.API_ROOT + '/config/latestSyncedCoreConfigurationVersion',\n {'cache': false, ignoreError: true});\n }\n\n getStoredModelSerialIds() {\n return this.$http.get(this.Config.API_ROOT + '/admin/repo/storedModelSerialIds', {'cache': false});\n }\n\n deleteDataForModel(modelSerialId) {\n this.CacheService.reset();\n return this.$http.post(this.Config.API_ROOT + '/admin/repo/deleteDataForModel?modelSerialId=' + modelSerialId);\n }\n\n dumpData(modelSerialId) {\n if (modelSerialId) {\n this.DownloadService.download(this.Config.API_ROOT + '/admin/repo/dumpData?modelSerialId=' + modelSerialId);\n } else {\n this.DownloadService.download(this.Config.API_ROOT + '/admin/repo/dumpData');\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/admin/service/AdminService.ts","module.exports = \"

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/admin/partial/AdminInfo/AdminInfo.tmpl\n// module id = 62\n// module chunks = 0","module.exports = \"

              Export

              Import from Core

              Import from File

              An import message is required

              A file is required

              Choose File
              0 && uploader.progress < 100\\\" class=\\\"progress-striped active\\\" value=uploader.progress type=primary>{{uploader.progress}}%

              A push message is required

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/admin/partial/AdminImport/AdminImport.tmpl\n// module id = 63\n// module chunks = 0","module.exports = \"

              Maintenance

              Repository Dump & Restore

              0 && uploader.progress < 100\\\" class=\\\"progress-striped active\\\" value=uploader.progress type=primary>{{uploader.progress}}%

              Miscellaneous

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/admin/partial/AdminAdvanced/AdminAdvanced.tmpl\n// module id = 64\n// module chunks = 0","module.exports = \"
              The application is in maintenance mode
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/admin/partial/Maintenance/Maintenance.tmpl\n// module id = 65\n// module chunks = 0","module.exports = \"


              You are now editing the tmsid map {{selectedTmsId}}

              Resource ID TMS ID Remove
              Resource ID should be unique and values should not be empty Resource ID should be unique Values should not be empty
              {{tmsId.resourceName}} {{tmsId.resourceId}}

              No data available

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/admin/partial/AdminTmsIds/AdminTmsIds.tmpl\n// module id = 66\n// module chunks = 0","module.exports = \"
              Key Encrypted Remove
              {{ isNewDefaultMetadataKeyNameEmpty() ? 'Key name should not be empty' : 'Key name should be unique' }}
              {{key.name}}

              No data available

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/admin/partial/AdminDefaultMetadata/AdminDefaultMetadata.tmpl\n// module id = 67\n// module chunks = 0","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {ChannelListCtrl} from \"./partial/ChannelList/ChannelList\";\nimport {ChannelItemCtrl} from \"./partial/ChannelItem/ChannelItem\";\nimport {ChannelItemBasicCtrl} from \"./partial/ChannelItemBasic/ChannelItemBasic\";\nimport {ChannelCertificatesCtrl} from \"./partial/ChannelCertificates/ChannelCertificates\";\nimport {ChannelSettingsCtrl} from \"./partial/ChannelSettings/ChannelSettings\";\nimport {ChannelDomainsCtrl} from \"./partial/ChannelDomains/ChannelDomains\";\nimport {ChannelIntegrationsCtrl} from \"./partial/ChannelIntegrations/ChannelIntegrations\";\nimport * as _ from \"lodash\";\nimport {TabsCtrl} from \"../ui/partial/Tabs/Tabs\";\nimport {CertificatesCtrl} from \"../ui/directive/Certificates/Certificates\";\nimport * as angular from \"angular\";\nimport {ChannelApplicationsCtrl} from \"./partial/ChannelApplications/ChannelApplications\";\nimport {ApplicationsCtrl} from \"../ui/directive/Applications/Applications\";\nimport {ChannelCustomSchemesCtrl} from './partial/ChannelCustomSchemes/ChannelCustomSchemes';\nimport {ChannelPermissionsCtrl} from './partial/ChannelPermissions/ChannelPermissions';\n\n@AngularModuleConfig({\n moduleName: 'channel',\n dependencies: ['ui.router', 'core', 'data']\n})\nexport class ChannelModule {\n constructor() {\n (this).ngRef.controller('ChannelListCtrl', ChannelListCtrl);\n (this).ngRef.controller('ChannelItemCtrl', ChannelItemCtrl);\n (this).ngRef.controller('ChannelItemBasicCtrl', ChannelItemBasicCtrl);\n (this).ngRef.controller('ChannelCertificatesCtrl', ChannelCertificatesCtrl);\n (this).ngRef.controller('CertificatesCtrl', CertificatesCtrl);\n (this).ngRef.controller('ChannelSettingsCtrl', ChannelSettingsCtrl);\n (this).ngRef.controller('ChannelDomainsCtrl', ChannelDomainsCtrl);\n (this).ngRef.controller('ChannelIntegrationsCtrl', ChannelIntegrationsCtrl);\n (this).ngRef.controller('ChannelApplicationsCtrl', ChannelApplicationsCtrl);\n (this).ngRef.controller('ChannelCustomSchemesCtrl', ChannelCustomSchemesCtrl);\n (this).ngRef.controller('ChannelPermissionsCtrl', ChannelPermissionsCtrl);\n (this).ngRef.controller('ApplicationsCtrl', ApplicationsCtrl);\n }\n\n /**\n * @method config\n * @memberOf module:channel\n * @param {Object} $stateProvider - Ui router state provider\n * @param {module:core.States} States - Application states\n */\n config($stateProvider, States) {\n \"ngInject\";\n let basicView = {\n template: require('./partial/ChannelItemBasic/ChannelItemBasic.tmpl'),\n controller: ChannelItemBasicCtrl\n };\n $stateProvider.state(States.Channel.name, {\n abstract: States.Channel.abstract,\n url: States.Channel.url\n });\n $stateProvider.state(States.ChannelList.name, {\n abstract: States.ChannelList.abstract,\n url: States.ChannelList.url,\n ncyBreadcrumb: {\n label: States.ChannelList.displayName\n },\n onEnter: function ($rootScope) {\n $rootScope.searchActive = true;\n },\n onExit: function ($rootScope) {\n $rootScope.searchActive = false;\n },\n views: {\n 'page@Base': {\n template: require('./partial/ChannelList/ChannelList.tmpl'),\n controller: ChannelListCtrl,\n resolve: {\n serviceProviderList: function (ChannelService) {\n return ChannelService.getPage(1, 'displayName', 'ASC').then(function (response) {\n return response.data;\n });\n },\n newProviders: function (ChannelService) {\n return ChannelService.getNewProviders();\n }\n }\n }\n }\n });\n $stateProvider.state(States.ChannelItem.name, {\n abstract: States.ChannelItem.abstract,\n url: States.ChannelItem.url,\n resolve: {\n data: function ($stateParams, ChannelService) {\n return ChannelService.getItem($stateParams.channelId).then(function (response) {\n return response.data;\n });\n }\n },\n views: {\n 'page@Base': {\n template: require('../core/template/tabs-layout.tmpl')\n },\n 'tabs@Base.Channel.Item': {\n template: require('../ui/partial/Tabs/Tabs.tmpl'),\n controller: TabsCtrl,\n resolve: {\n tabs: function (States, data, UserService) {\n let result = [{\n state: States.ChannelItemData,\n id: 'channelDataTab'\n },\n {\n state: States.ChannelSettings,\n id: 'channelSettingsTab'\n },\n {\n state: States.ChannelCertificates,\n id: 'channelCertificatesTab'\n },\n {\n state: States.ChannelDomains,\n id: 'channelDomainsTab'\n },\n {\n state: States.ChannelIntegrations,\n id: 'channelIntegrationsTab'\n },\n {\n state: States.ChannelApplications,\n id: 'channelApplicationsTab'\n }];\n if (data.entityData.customSchemes) {\n result.push({\n state: States.ChannelCustomSchemes,\n id: 'channelCustomSchemesTab'\n });\n }\n if (UserService.hasRole('ROLE_CONSOLE_ADMIN')) {\n result.push({\n state: States.ChannelPermissions,\n id: 'channelPermissionsTab'\n });\n }\n return result;\n }\n }\n }\n }\n });\n $stateProvider.state(States.ChannelItemData.name, {\n abstract: States.ChannelItemData.abstract,\n url: States.ChannelItemData.url,\n ncyBreadcrumb: {\n label: '{{data.entityData.displayName}}',\n parent: States.ChannelList.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelItem/ChannelItem.tmpl'),\n controller: ChannelItemCtrl\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n $stateProvider.state(States.ChannelSettings.name, {\n abstract: States.ChannelSettings.abstract,\n url: States.ChannelSettings.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Settings'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelSettings/ChannelSettings.tmpl'),\n controller: ChannelSettingsCtrl\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n $stateProvider.state(States.ChannelCertificates.name, {\n abstract: States.ChannelCertificates.abstract,\n url: States.ChannelCertificates.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Certificates'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelCertificates/ChannelCertificates.tmpl'),\n controller: ChannelCertificatesCtrl,\n resolve: {\n platforms: function (data, PlatformService) {\n return PlatformService.getPlatformDetails().then(function (response) {\n return response;\n });\n },\n channelCertificates: function (data, CertificateService) {\n return CertificateService.parseCertificates(data).then(function (response) {\n return angular.copy(response.data);\n });\n },\n programmerCertificates: function (data, ProgrammerService, CertificateService) {\n let programmerId = data.entityData.programmer.replace(\"@Programmer:\", \"\").trim();\n return ProgrammerService.getItem(programmerId).then(function (programmerResponse) {\n return CertificateService.parseCertificates(programmerResponse.data).then(function (response) {\n return {\n certificates: angular.copy(response.data),\n userMetadataEncryptionCertificateId: programmerResponse.data.entityData.userMetadataEncryptionCertificateId\n };\n });\n });\n }\n }\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n $stateProvider.state(States.ChannelDomains.name, {\n abstract: States.ChannelDomains.abstract,\n url: States.ChannelDomains.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Domains'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelDomains/ChannelDomains.tmpl'),\n controller: ChannelDomainsCtrl\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n $stateProvider.state(States.ChannelIntegrations.name, {\n abstract: States.ChannelIntegrations.abstract,\n url: States.ChannelIntegrations.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Integrations'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelIntegrations/ChannelIntegrations.tmpl'),\n controller: ChannelIntegrationsCtrl,\n resolve: {\n mvpdList: function (data, BulkService) {\n let idList = (data.entityData.integrations) ? Object.keys(data.entityData.integrations) : [];\n return BulkService.getBulk(idList).then(function (response) {\n return response.data;\n });\n },\n integrationList: function (data, BulkService) {\n let idList = (data.entityData.integrations) ? _.values(data.entityData.integrations) : [];\n return BulkService.getBulk(idList).then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n\n $stateProvider.state(States.ChannelApplications.name, {\n abstract: States.ChannelApplications.abstract,\n url: States.ChannelApplications.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Applications'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelApplications/ChannelApplications.tmpl'),\n controller: ChannelApplicationsCtrl,\n resolve: {\n programmer: function (data, ProgrammerService) {\n let programmerId = data.entityData.programmer.replace('@Programmer:', '').trim();\n return ProgrammerService.getItem(programmerId).then(function (response) {\n return response.data;\n });\n },\n applications: function (data, ApplicationService) {\n let programmerId = data.entityData.programmer.trim().replace('@Programmer:', '');\n let channelId = data.entityData.id;\n return ApplicationService.getAllChannelApps(programmerId, channelId).then(function (response) {\n return response.data;\n });\n },\n platforms: function (data, PlatformService) {\n return PlatformService.getPlatformDetails().then(function (response) {\n return response;\n });\n },\n applicationTypes: function (data, ApplicationService) {\n return ApplicationService.getApplicationTypes().then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n\n $stateProvider.state(States.ChannelCustomSchemes.name, {\n abstract: States.ChannelCustomSchemes.abstract,\n url: States.ChannelCustomSchemes.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Custom Schemes'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelCustomSchemes/ChannelCustomSchemes.tmpl'),\n controller: ChannelCustomSchemesCtrl,\n resolve: {\n programmer: function (data, ProgrammerService) {\n let programmerId = data.entityData.programmer.replace('@Programmer:', '').trim();\n return ProgrammerService.getItem(programmerId).then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n\n $stateProvider.state(States.ChannelPermissions.name, {\n abstract: States.ChannelPermissions.abstract,\n url: States.ChannelPermissions.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Permissions'}}\",\n parent: States.ChannelItemData.name\n },\n views: {\n 'tabContent@Base.Channel.Item': {\n template: require('./partial/ChannelPermissions/ChannelPermissions.tmpl'),\n controller: ChannelPermissionsCtrl,\n resolve: {\n programmer: function (data, ProgrammerService) {\n let programmerId = data.entityData.programmer.replace('@Programmer:', '').trim();\n return ProgrammerService.getItem(programmerId).then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Channel.Item': basicView\n }\n });\n /* Add New States Above */\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/channel.ts","/**\n * @class ChannelListCtrl\n * @memberOf module:channel\n * @param {Object} $scope - Angular scope\n * @param {Object} $state - Ui router state service\n * @param {module:core.States} States - Application states\n * @param {module:data.Config} Config - Application config\n * @param {Object} serviceProviderList - Initial data\n * @param {module:data.ChannelService} ChannelService - service provider service\n */\nexport class ChannelListCtrl {\n constructor($rootScope, $scope, $state, States, Config, serviceProviderList, newProviders, ChannelService, CacheService) {\n \"ngInject\";\n /**\n * @name module:channel.ChannelListCtrl#columns\n * @type {Array}\n * @description Provides column description for {@link module:ui.PanelListDirective#columns}\n */\n $scope.columns = [\n {\n name: 'Display Name',\n sortable: true,\n sorted: true,\n sortAsc: true,\n sortField: 'displayName',\n class: 'col-md-10'\n },\n {\n name: 'No of integrations',\n sortable: false,\n class: 'col-md-2'\n }];\n /**\n * @name module:channel.ChannelListCtrl#data\n * @type {Object}\n * @see module:data.ChannelService\n * @description Initial list data\n */\n $scope.data = serviceProviderList ? serviceProviderList : null;\n if ($scope.data === null) {\n $rootScope.searchActive = false;\n }\n /**\n * @name module:channel.ChannelListCtrl#pageSize\n * @type {Number}\n * @default Config.PAGE_SIZE\n * @description Page size used by {@link module:ui.PanelListDirective#pageSize}\n */\n $scope.pageSize = Config.PAGE_SIZE;\n /**\n * @name module:channel.ChannelListCtrl#service\n * @type {Object}\n * @description Data retrieval service. Used by {@link module:ui.PanelListDirective#service}\n */\n $scope.service = ChannelService;\n /**\n * name module:channel.ChannelListCtrl#onItemClick\n * @method\n * @param {Object} item - selected item\n * @description Item click handler. Navigates to channel item detail page\n */\n $scope.onItemClick = function (item) {\n $state.go(States.ChannelItemData.name, {\n channelId: item.entityData.id\n });\n };\n\n $scope.$on(\"onPageChange\", function(){\n const tableListElement = document.getElementById('table-list');\n window.scrollTo(0, window.scrollY-tableListElement.offsetHeight);\n });\n\n $scope.newProviders = newProviders;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelList/ChannelList.ts","export class ChannelItemCtrl {\n constructor($scope, data, DataCollectorService, TooltipService, UserService) {\n \"ngInject\";\n $scope.data = data;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.serviceProvider;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelItem/ChannelItem.ts","export class ChannelItemBasicCtrl {\n constructor($scope, States, $state, data, mvpdList, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.basicWorkspaceEnabled = true;\n\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n\n $scope.mvpdList = mvpdList;\n $scope.onMvpdClick = function (mvpd) {\n let integrationId = $scope.data.entityData.integrations['@' + mvpd.key].split(':')[1];\n $state.go(States.IntegrationItemData.name, {\n integrationId: integrationId\n });\n };\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelItemBasic/ChannelItemBasic.ts","export class ChannelCertificatesCtrl {\n constructor($scope, data, platforms, channelCertificates, programmerCertificates, UserService, DataCollectorService, EncryptionLevel) {\n \"ngInject\";\n\n $scope.data = data;\n $scope.platforms = platforms;\n $scope.channelCertificates = channelCertificates;\n $scope.programmerCertificates = programmerCertificates.certificates;\n $scope.write = UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n let isChannelLevelEncryptionCertificateSet = function () {\n return data.entityData.userMetadataEncryptionCertificateId !== null;\n };\n\n let isProgrammerLevelEncryptionCertificateSet = function () {\n return programmerCertificates.userMetadataEncryptionCertificateId !== null;\n };\n\n let getSerialNumberFor = function (certificateId) {\n if (!certificateId) {\n return undefined;\n }\n if ($scope.channelCertificates[certificateId]) {\n return $scope.channelCertificates[certificateId].certificateInfo.serialNumber;\n }\n\n if (programmerCertificates.certificates[certificateId]) {\n return programmerCertificates.certificates[certificateId].certificateInfo.serialNumber;\n }\n\n return undefined;\n };\n\n\n $scope.encryptionData = {\n level: EncryptionLevel.CHANNEL,\n channelUserMetadataEncryptionCertificate: {\n isSet: isChannelLevelEncryptionCertificateSet(),\n id: data.entityData.userMetadataEncryptionCertificateId,\n serialNumber: getSerialNumberFor(data.entityData.userMetadataEncryptionCertificateId)\n },\n programmerUserMetadataEncryptionCertificate: {\n isSet: isProgrammerLevelEncryptionCertificateSet(),\n id: programmerCertificates.userMetadataEncryptionCertificateId,\n serialNumber: getSerialNumberFor(programmerCertificates.userMetadataEncryptionCertificateId)\n }\n };\n\n $scope.programmerCertificatesComponentOpen = true;\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelCertificates/ChannelCertificates.ts","export class ChannelSettingsCtrl {\n constructor($scope, data, DataCollectorService, TooltipService, UserService) {\n \"ngInject\";\n $scope.data = data;\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n\n $scope.$watch(\"data.entityData.analyticsConfigs\", (newValue, oldValue) => {\n if(newValue !== oldValue) {\n if (newValue && newValue.length !== 0) {\n if (!newValue[0].enabled) {\n newValue[0].enabled = false;\n }\n if (!newValue[0].trackingServerSchema) {\n newValue[0].trackingServerSchema = null;\n }\n if (!newValue[0].rsidMappingTemplate) {\n newValue[0].rsidMappingTemplate = null;\n }\n if (!newValue[0].rsidConfirmationMarker) {\n newValue[0].rsidConfirmationMarker = null;\n }\n if (!newValue[0].default) {\n newValue[0].default = true;\n }\n }\n }\n }, true);\n\n $scope.analyticsConfigOpen = false;\n\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n $scope.notAdmin = !UserService.hasRole('ROLE_CONSOLE_ADMIN');\n $scope.notInternalUser = !UserService.hasRole('ROLE_CONSOLE_ALL_DATA');\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n\n TooltipService.getTooltips().then(function(result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.serviceProvider;\n });\n\n $scope.isEmpty = function(field) {\n let ac = $scope.data.entityData.analyticsConfigs[0];\n if (!ac || !ac.enabled) {\n return false;\n }\n return !ac[field] || ac[field].length === 0;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelSettings/ChannelSettings.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as angular from \"angular\";\n\nimport {NotificationService, Notifications} from \"../../../core/service/NotificationService\";\n\nexport class ChannelDomainsCtrl {\n constructor($scope, data, DataCollectorService, TooltipService, UserService, NotificationService: NotificationService) {\n \"ngInject\";\n\n $scope.data = data;\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n $scope.regex = /^([a-zA-Z0-9-]{1,63}\\.)+([a-zA-Z]{1,})$/;\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.serviceProvider;\n });\n\n $scope.isFieldInvalid = function (newDomainForm) {\n if (newDomainForm) {\n return newDomainForm.$invalid && newDomainForm.$dirty;\n }\n\n return false;\n };\n\n $scope.removeDomain = function (domain) {\n let size = $scope.data.entityData.domains.length;\n\n for (let index = 0; index < size; index++) {\n if (angular.equals(domain, $scope.data.entityData.domains[index])) {\n NotificationService.getConfirmationFromUser(Notifications.confirmDeleteDomain).result.then(\n (userDecisionToDelete) => {\n if (userDecisionToDelete === true) {\n $scope.data.entityData.domains.splice(index, 1);\n }\n }\n );\n\n break;\n }\n }\n };\n\n $scope.createEmptyDomain = function () {\n return {\n id:\"\",\n domainName:\"\",\n idpInitiated: false\n };\n };\n\n $scope.newDomain = $scope.createEmptyDomain();\n $scope.newDomainAdded = false;\n\n $scope.addNewDomainButtonClicked = function () {\n $scope.newDomainAdded = true;\n };\n\n $scope.resetNewDomain = function() {\n $scope.newDomainAdded = false;\n $scope.newDomain = $scope.createEmptyDomain();\n };\n\n $scope.genericDomainExists = function (subdomain) {\n if (!subdomain) {\n return false;\n }\n\n let size = $scope.data.entityData.domains.length;\n let subdomainElements = subdomain.split(\".\").reverse();\n\n for (let index = 0; index < size; index++) {\n let domain = $scope.data.entityData.domains[index].domainName;\n domain = domain.split(\".\").reverse();\n\n if (domain.length <= subdomainElements.length) {\n for (var j = 0, counter = 0; j < domain.length; j++, counter++) {\n if (!angular.equals(domain[j], subdomainElements[j])) {\n break;\n }\n }\n\n if (counter === domain.length) {\n return true;\n }\n }\n }\n return false;\n };\n\n $scope.isDomainValid = function (domain) {\n if (domain) {\n if (domain.match($scope.regex)) {\n return true;\n }\n }\n\n return false;\n };\n\n $scope.saveDomain = function (domainForm) {\n if ($scope.isDomainValid($scope.newDomain.domainName) && !$scope.genericDomainExists($scope.newDomain.domainName)) {\n $scope.newDomainAdded = false;\n $scope.newDomain.id = $scope.newDomain.domainName;\n $scope.data.entityData.domains.push($scope.newDomain);\n $scope.newDomain = $scope.createEmptyDomain();\n domainForm.$setPristine();\n return true;\n }\n\n return false;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelDomains/ChannelDomains.ts","export class ChannelIntegrationsCtrl {\n constructor($scope, $state, States, data, mvpdList, integrationList) {\n \"ngInject\";\n $scope.data = data;\n $scope.mvpdList = mvpdList;\n $scope.integrationList = integrationList;\n $scope.onMvpdClick = function (integrationId) {\n $state.go(States.IntegrationItemData.name, {\n integrationId: integrationId\n });\n };\n $scope.getEnabled = function (integration) {\n return integration.entityData.enabled ? 'Yes' : 'No';\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelIntegrations/ChannelIntegrations.ts","module.exports = \"
              Serial Number Subject Organization Issuer Organization Active Since Expires Used On Actions
              Certificate parse error {{certificate.certificateInfo.serialNumber}} {{certificate.certificateInfo.subjectOrganization}} {{certificate.certificateInfo.issuerOrganization}} {{certificate.certificateInfo.issued | date:'mediumDate'}} {{certificate.certificateInfo.expires | date:'mediumDate'}}

              No certificate is defined

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/Certificates/Certificates.tmpl\n// module id = 76\n// module chunks = 0","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2018 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\n\nimport * as angular from \"angular\";\n\nexport class ChannelApplicationsCtrl {\n constructor($scope, data, programmer, applications, platforms, applicationTypes, ChannelService) {\n \"ngInject\";\n\n $scope.applicationTypes = applicationTypes;\n $scope.platforms = platforms;\n $scope.applications = applications;\n $scope.data = data;\n $scope.entity = {\n type: 'CHANNEL',\n data: angular.copy($scope.data),\n relatedData: {\n programmer: programmer,\n domains: ChannelService.getDomains(data.entityData)\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelApplications/ChannelApplications.ts","module.exports = \"

              No applications present.

              0\\\">
              Name Version Platforms Actions
              {{application.entityData.name}} {{application.entityData.version}}
              Download Download View
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/Applications/Applications.tmpl\n// module id = 78\n// module chunks = 0","export class ChannelCustomSchemesCtrl {\n constructor($scope, data, programmer, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.programmer = programmer;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelCustomSchemes/ChannelCustomSchemes.ts","export class ChannelPermissionsCtrl {\n constructor($scope, data, programmer, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.programmer = programmer;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/channel/partial/ChannelPermissions/ChannelPermissions.ts","module.exports = \"

              Live Integrations

              This channel has no integrations.

              0\\\">
              MVPD Display Name Enabled
              {{integration | squash: 'displayName':'integration'}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelItemBasic/ChannelItemBasic.tmpl\n// module id = 81\n// module chunks = 0","module.exports = \"

              New Channels

              Display Name No of integrations
              {{item.entityData.displayName}} {{item.entityData.integrations | count}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelList/ChannelList.tmpl\n// module id = 82\n// module chunks = 0","module.exports = \"
              Value should not be empty
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelItem/ChannelItem.tmpl\n// module id = 83\n// module chunks = 0","module.exports = \"
              Analytics Configuration
              Value should not be empty
              Value should not be empty
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelSettings/ChannelSettings.tmpl\n// module id = 84\n// module chunks = 0","module.exports = \"

              Channel Specific Certificates

              Inherited Programmer Certificates
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelCertificates/ChannelCertificates.tmpl\n// module id = 85\n// module chunks = 0","module.exports = \"

              This channel has no domains.

              0 || newDomainAdded)\\\">
              Domain IDP Initiated Actions
              {{domain.domainName}}
              0 && readOnly\\\">
              Domain IDP Initiated
              {{domain.domainName}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelDomains/ChannelDomains.tmpl\n// module id = 86\n// module chunks = 0","module.exports = \"

              This channel has no integrations.

              0\\\">
              Integration with Enabled
              {{integration | squash: 'displayName':'integration'}} ID: {{integration | squash: 'id':'integration'}} {{getEnabled(integration)}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelIntegrations/ChannelIntegrations.tmpl\n// module id = 87\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelApplications/ChannelApplications.tmpl\n// module id = 88\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelCustomSchemes/ChannelCustomSchemes.tmpl\n// module id = 89\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/channel/partial/ChannelPermissions/ChannelPermissions.tmpl\n// module id = 90\n// module chunks = 0","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {ApcFeedbackDirective} from \"./directive/Feedback/Feedback\";\nimport {FeedbackService} from \"./service/FeedbackService\";\n\n@AngularModuleConfig({\n moduleName: 'feedback',\n dependencies: ['core']\n})\nexport class FeedbackModule {\n constructor() {\n (this).ngRef.service('FeedbackService', FeedbackService);\n (this).ngRef.directive('apcFeedback', () => new ApcFeedbackDirective());\n }\n\n public config($stateProvider, States) {\n \"ngInject\";\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/feedback/feedback.ts","export class ApcFeedbackDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {};\n\n this.template = require('./Feedback.tmpl');\n this.controller = ApcFeedbackCtrl;\n }\n\n link(scope, element, attrs, fn) {}\n}\n\nclass ApcFeedbackCtrl {\n constructor($scope, FeedbackService, NotificationService) {\n \"ngInject\";\n $scope.opened = false;\n $scope.screenshotMode = false;\n $scope.invalidFile = false;\n\n $scope.resetForm = function () {\n $scope.title = '';\n $scope.message = '';\n $scope.screenshotData = null;\n $scope.invalidFile = false;\n $scope.feedbackForm.$setPristine(true);\n };\n\n $scope.toggleFeedbackForm = function () {\n $scope.opened = !$scope.opened;\n if ($scope.opened) {\n window.addEventListener('mouseup', $scope.closeFeedbackFormIfClickedOutside);\n }\n };\n\n $scope.closeFeedbackFormIfClickedOutside = function (event) {\n let feedbackFormElement = document.getElementById('feedback');\n let clickedElementOrParentOfIt = event.target;\n let feedbackFormRemainsOpen = false;\n\n while (clickedElementOrParentOfIt) {\n if (clickedElementOrParentOfIt === feedbackFormElement) {\n feedbackFormRemainsOpen = true;\n break;\n }\n clickedElementOrParentOfIt = clickedElementOrParentOfIt.parentNode;\n }\n\n if (!feedbackFormRemainsOpen) {\n window.removeEventListener('mouseup', $scope.closeFeedbackFormIfClickedOutside);\n $scope.opened = false;\n $scope.$apply();\n }\n };\n\n $scope.submit = function () {\n FeedbackService.send({\n title: $scope.title,\n message: $scope.message,\n screenshotData: $scope.screenshotData\n }).then(\n () => {\n $scope.toggleFeedbackForm();\n $scope.resetForm();\n\n NotificationService.success('', 'Thank you for your feedback.');\n },\n () => {\n NotificationService.error('', 'There was a problem while sending your message. Please try again later.');\n }\n );\n };\n\n $scope.updatePreview = function (input) {\n let reader = new FileReader();\n\n $scope.$apply(() => { $scope.invalidFile = false; });\n\n if (input.files[0].type.indexOf('image/') === -1) {\n $scope.$apply(() => { $scope.invalidFile = true; });\n } else {\n reader.onload = (e: any) => {\n $scope.$apply(() => {\n $scope.screenshotData = e.target.result;\n });\n };\n\n reader.readAsDataURL(input.files[0]);\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/feedback/directive/Feedback/Feedback.ts","module.exports = \"
              Feedback
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/feedback/directive/Feedback/Feedback.tmpl\n// module id = 93\n// module chunks = 0","export class FeedbackService {\n private $http;\n private Config;\n\n constructor($http, Config) {\n \"ngInject\";\n this.$http = $http;\n this.Config = Config;\n }\n\n send(payload) {\n return this.$http.post(this.Config.API_ROOT + '/feedback/send', payload);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/feedback/service/FeedbackService.ts","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {ProgrammerCertificatesCtrl} from \"./partial/ProgrammerCertificates/ProgrammerCertificates\";\nimport {ProgrammerChannelsCtrl} from \"./partial/ProgrammerChannels/ProgrammerChannels\";\nimport {ProgrammerItemCtrl} from \"./partial/ProgrammerItem/ProgrammerItem\";\nimport {ProgrammerItemBasicCtrl} from \"./partial/ProgrammerItemBasic/ProgrammerItemBasic\";\nimport {ProgrammerListCtrl} from \"./partial/ProgrammerList/ProgrammerList\";\nimport {TabsCtrl} from \"../ui/partial/Tabs/Tabs\";\nimport * as angular from \"angular\";\nimport {ProgrammerApplicationsCtrl} from \"./partial/ProgrammerApplications/ProgrammerApplications\";\nimport {ApplicationsCtrl} from \"../ui/directive/Applications/Applications\";\nimport {ProgrammerCustomSchemesCtrl} from './partial/ProgrammerCustomSchemes/ProgrammerCustomSchemes';\nimport {ProgrammerPermissionsCtrl} from './partial/ProgrammerPermissions/ProgrammerPermissions';\n\n@AngularModuleConfig({\n moduleName: 'programmer',\n dependencies: ['ui.bootstrap', 'ui.router', 'core', 'data']\n})\nexport class ProgrammerModule {\n constructor() {\n (this).ngRef.controller('ProgrammerCertificatesCtrl', ProgrammerCertificatesCtrl);\n (this).ngRef.controller('ProgrammerChannelsCtrl', ProgrammerChannelsCtrl);\n (this).ngRef.controller('ProgrammerItemCtrl', ProgrammerItemCtrl);\n (this).ngRef.controller('ProgrammerItemBasicCtrl', ProgrammerItemBasicCtrl);\n (this).ngRef.controller('ProgrammerListCtrl', ProgrammerListCtrl);\n (this).ngRef.controller('ProgrammerApplicationsCtrl', ProgrammerApplicationsCtrl);\n (this).ngRef.controller('ProgrammerCustomSchemesCtrl', ProgrammerCustomSchemesCtrl);\n (this).ngRef.controller('ProgrammerPermissionsCtrl', ProgrammerPermissionsCtrl);\n (this).ngRef.controller('ApplicationsCtrl', ApplicationsCtrl);\n }\n\n public config($stateProvider, States) {\n \"ngInject\";\n let basicView = {\n template: require('./partial/ProgrammerItemBasic/ProgrammerItemBasic.tmpl'),\n controller: ProgrammerItemBasicCtrl\n };\n\n $stateProvider.state(States.Programmer.name, {\n abstract: States.Programmer.abstract,\n url: States.Programmer.url\n });\n\n $stateProvider.state(States.ProgrammerList.name, {\n abstract: States.ProgrammerList.abstract,\n url: States.ProgrammerList.url,\n ncyBreadcrumb: {\n label: States.ProgrammerList.displayName\n },\n onEnter: function ($rootScope) {\n $rootScope.searchActive = true;\n },\n onExit: function ($rootScope) {\n $rootScope.searchActive = false;\n },\n views: {\n 'page@Base': {\n template: require('./partial/ProgrammerList/ProgrammerList.tmpl'),\n controller: ProgrammerListCtrl,\n resolve: {\n programmerList: function (ProgrammerService) {\n return ProgrammerService.getPage(1, 'displayName', 'ASC').then(function (response) {\n return response.data;\n });\n },\n newProgrammers: function (ProgrammerService) {\n return ProgrammerService.getNewProgrammers();\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.ProgrammerItem.name, {\n abstract: States.ProgrammerItem.abstract,\n url: States.ProgrammerItem.url,\n resolve: {\n data: function ($stateParams, ProgrammerService) {\n return ProgrammerService.getItem($stateParams.programmerId).then(function (response) {\n return response.data;\n });\n }\n },\n views: {\n 'page@Base': {\n template: require('./../core/template/tabs-layout.tmpl')\n },\n 'tabs@Base.Programmer.Item': {\n template: require('../ui/partial/Tabs/Tabs.tmpl'),\n controller: TabsCtrl,\n resolve: {\n tabs: function (States, data, UserService) {\n var result = [];\n result.push({\n state: States.ProgrammerItemData,\n id: 'programmerDataTab'\n });\n result.push({\n state: States.ProgrammerCertificates,\n id: 'programmerCertificatesTab'\n });\n result.push({\n state: States.ProgrammerChannels,\n id: 'programmerChannelsTab'\n });\n result.push({\n state: States.ProgrammerApplications,\n id: 'programmerApplicationsTab'\n });\n if (data.entityData.customSchemes) {\n result.push({\n state: States.ProgrammerCustomSchemes,\n id: 'programmerCustomSchemesTab'\n });\n }\n if (UserService.hasRole('ROLE_CONSOLE_ADMIN')) {\n result.push({\n state: States.ProgrammerPermissions,\n id: 'programmerPermissionsTab'\n });\n }\n return result;\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.ProgrammerItemData.name, {\n abstract: States.ProgrammerItemData.abstract,\n url: States.ProgrammerItemData.url,\n ncyBreadcrumb: {\n label: '{{data.entityData.displayName}}',\n parent: States.ProgrammerList.name\n },\n views: {\n 'tabContent@Base.Programmer.Item': {\n template: require('./partial/ProgrammerItem/ProgrammerItem.tmpl'),\n controller: ProgrammerItemCtrl\n },\n 'entityItemBasic@Base.Programmer.Item': basicView\n }\n });\n\n $stateProvider.state(States.ProgrammerCertificates.name, {\n abstract: States.ProgrammerCertificates.abstract,\n url: States.ProgrammerCertificates.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Certificates'}}\",\n parent: States.ProgrammerItemData.name\n },\n views: {\n 'tabContent@Base.Programmer.Item': {\n template: require('./partial/ProgrammerCertificates/ProgrammerCertificates.tmpl'),\n controller: ProgrammerCertificatesCtrl,\n resolve: {\n platforms: function (data, PlatformService) {\n return PlatformService.getPlatformDetails().then(function (response) {\n return response;\n });\n },\n certificates: function (data, CertificateService) {\n return CertificateService.parseCertificates(data).then(function (response) {\n return angular.copy(response.data);\n });\n }\n }\n },\n 'entityItemBasic@Base.Programmer.Item': basicView\n }\n });\n\n $stateProvider.state(States.ProgrammerChannels.name, {\n abstract: States.ProgrammerChannels.abstract,\n url: States.ProgrammerChannels.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Channels'}}\",\n parent: States.ProgrammerItemData.name\n },\n views: {\n 'tabContent@Base.Programmer.Item': {\n template: require('./partial/ProgrammerChannels/ProgrammerChannels.tmpl'),\n controller: ProgrammerChannelsCtrl\n },\n 'entityItemBasic@Base.Programmer.Item': basicView\n }\n });\n\n $stateProvider.state(States.ProgrammerApplications.name, {\n abstract: States.ProgrammerApplications.abstract,\n url: States.ProgrammerApplications.url,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Applications'}}\",\n parent: States.ProgrammerItemData.name\n },\n views: {\n 'tabContent@Base.Programmer.Item': {\n template: require('./partial/ProgrammerApplications/ProgrammerApplications.tmpl'),\n controller: ProgrammerApplicationsCtrl,\n resolve: {\n applications: function (data, ApplicationService) {\n let programmerId = data.entityData.id;\n return ApplicationService.getAllProgrammerApps(programmerId).then(function (response) {\n return response.data;\n });\n },\n platforms: function (data, PlatformService) {\n return PlatformService.getPlatformDetails().then(function (response) {\n return response;\n });\n },\n applicationTypes: function (data, ApplicationService) {\n return ApplicationService.getApplicationTypes().then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Programmer.Item': basicView\n }\n });\n\n $stateProvider.state(States.ProgrammerCustomSchemes.name, {\n abstract: States.ProgrammerCustomSchemes.abstract,\n url: States.ProgrammerCustomSchemes.url,\n roles: States.ProgrammerCustomSchemes.roles,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Custom Schemes'}}\",\n parent: States.ProgrammerItemData.name\n },\n views: {\n 'tabContent@Base.Programmer.Item': {\n template: require('./partial/ProgrammerCustomSchemes/ProgrammerCustomSchemes.tmpl'),\n controller: ProgrammerCustomSchemesCtrl\n },\n 'entityItemBasic@Base.Programmer.Item': basicView\n }\n });\n\n $stateProvider.state(States.ProgrammerPermissions.name, {\n abstract: States.ProgrammerPermissions.abstract,\n url: States.ProgrammerPermissions.url,\n roles: States.ProgrammerPermissions.roles,\n ncyBreadcrumb: {\n label: \"{{basicWorkspaceEnabled ? 'Basic' : 'Permissions'}}\",\n parent: States.ProgrammerItemData.name\n },\n views: {\n 'tabContent@Base.Programmer.Item': {\n template: require('./partial/ProgrammerPermissions/ProgrammerPermissions.tmpl'),\n controller: ProgrammerPermissionsCtrl\n },\n 'entityItemBasic@Base.Programmer.Item': basicView\n }\n });\n /* Add New States Above */\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/programmer.ts","export class ProgrammerCertificatesCtrl {\n constructor($scope, data, platforms, certificates, UserService, DataCollectorService, EncryptionLevel) {\n \"ngInject\";\n\n let isProgrammerLevelEncryptionCertificateSet = function () {\n return data.entityData.userMetadataEncryptionCertificateId !== null;\n };\n\n let getSerialNumberFor = function (certificateId) {\n if (!certificateId) {\n return undefined;\n }\n\n if (data.certificates[certificateId]) {\n return data.certificates[certificateId].certificateInfo.serialNumber;\n }\n\n return undefined;\n };\n\n $scope.data = data;\n $scope.platforms = platforms;\n $scope.certificates = certificates;\n $scope.write = UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n $scope.encryptionData = {\n level: EncryptionLevel.PROGRAMMER,\n channelUserMetadataEncryptionCertificate: {\n isSet: false,\n id: undefined,\n serialNumber: undefined\n },\n programmerUserMetadataEncryptionCertificate: {\n isSet: isProgrammerLevelEncryptionCertificateSet(),\n id: data.entityData.userMetadataEncryptionCertificateId,\n serialNumber: getSerialNumberFor(data.entityData.userMetadataEncryptionCertificateId)\n }\n };\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerCertificates/ProgrammerCertificates.ts","export class ProgrammerChannelsCtrl {\n constructor($scope, $state, States, data) {\n \"ngInject\";\n $scope.data = data;\n $scope.isSortAsc = true;\n\n\n $scope.onColumnSort = function() {\n $scope.data.related.serviceProviders.sort((a, b) =>\n a.entityData.displayName.localeCompare(b.entityData.displayName)\n );\n !$scope.isSortAsc && $scope.data.related.serviceProviders.reverse();\n $scope.isSortAsc = !$scope.isSortAsc;\n };\n\n $scope.onChannelClick = function(channel) {\n $state.go(States.ChannelItemData.name,{\n channelId: channel.entityData.id\n });\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerChannels/ProgrammerChannels.ts","export class ProgrammerItemCtrl {\n constructor($scope, data, DataCollectorService, TooltipService) {\n \"ngInject\";\n $scope.data = data;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.programmer;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerItem/ProgrammerItem.ts","export class ProgrammerItemBasicCtrl {\n constructor($scope, $state, States, data, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.basicWorkspaceEnabled = true;\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n\n $scope.onChannelClick = function (channel) {\n $state.go(States.ChannelItemData.name, {\n channelId: channel.entityData.id\n });\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerItemBasic/ProgrammerItemBasic.ts","export class ProgrammerListCtrl {\n constructor($rootScope, $scope, $state, States, Config, programmerList, newProgrammers, ProgrammerService) {\n \"ngInject\";\n $scope.columns = [\n {\n name: 'Display Name',\n sortable: true,\n sorted: true,\n sortAsc: true,\n sortField: 'displayName',\n class: 'col-md-9'\n },\n {\n name: 'No of channels',\n sortable: false,\n class: 'col-md-2'\n },\n {\n name: 'Logo',\n sortable: false,\n class: 'col-md-1 image action'\n }];\n $scope.data = programmerList ? programmerList : null;\n if ($scope.data === null) {\n $rootScope.searchActive = false;\n }\n $scope.pageSize = Config.PAGE_SIZE;\n $scope.service = ProgrammerService;\n $scope.onItemClick = function (item) {\n $state.go(States.ProgrammerItemData.name, {\n programmerId: item.entityData.id\n });\n };\n\n $scope.$on(\"onPageChange\", function(){\n const tableListElement = document.getElementById('table-list');\n window.scrollTo(0, window.scrollY-tableListElement.offsetHeight);\n });\n\n $scope.newProgrammers = newProgrammers;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerList/ProgrammerList.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2018 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\n\nimport * as angular from \"angular\";\n\nexport class ProgrammerApplicationsCtrl {\n constructor($scope, data, applications, platforms, applicationTypes, ProgrammerService) {\n \"ngInject\";\n\n $scope.applicationTypes = applicationTypes;\n $scope.platforms = platforms;\n $scope.applications = applications;\n $scope.data = data;\n $scope.entity = {\n type: 'PROGRAMMER',\n data: angular.copy($scope.data),\n relatedData: {\n domains: ProgrammerService.getDomains(data.related.serviceProviders)\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerApplications/ProgrammerApplications.ts","export class ProgrammerCustomSchemesCtrl {\n constructor($scope, $state, States, data, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerCustomSchemes/ProgrammerCustomSchemes.ts","export class ProgrammerPermissionsCtrl {\n constructor($scope, data, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/programmer/partial/ProgrammerPermissions/ProgrammerPermissions.ts","module.exports = \"

              Channels

              Channel No of Integrations
              {{channel.entityData.displayName}} {{channel.entityData.integrations | count}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerItemBasic/ProgrammerItemBasic.tmpl\n// module id = 104\n// module chunks = 0","module.exports = \"

              New Channels

              Display Name No of channels Logo
              {{item.entityData.displayName}} {{item.entityData.serviceProviders.length}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerList/ProgrammerList.tmpl\n// module id = 105\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerItem/ProgrammerItem.tmpl\n// module id = 106\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerCertificates/ProgrammerCertificates.tmpl\n// module id = 107\n// module chunks = 0","module.exports = \"
              Channel No of Integrations
              {{channel.entityData.displayName}} ID: {{channel.entityData.id}} {{channel.entityData.integrations | count}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerChannels/ProgrammerChannels.tmpl\n// module id = 108\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerApplications/ProgrammerApplications.tmpl\n// module id = 109\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerCustomSchemes/ProgrammerCustomSchemes.tmpl\n// module id = 110\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/programmer/partial/ProgrammerPermissions/ProgrammerPermissions.tmpl\n// module id = 111\n// module chunks = 0","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {ApcDiffDirective} from \"./directive/Diff/Diff\";\nimport {CompareCtrl} from \"./partial/Compare/Compare\";\nimport {ReviewCtrl} from \"./partial/Review/Review\";\nimport {DiffService} from \"./service/DiffService\";\nimport {ApcDiffCtrl} from \"./directive/Diff/Diff\";\n\n/**\n * @module diff\n * @requires ui.router\n * @requires module:core\n * @description Handles compare and diff features.\n */\n@AngularModuleConfig({\n moduleName: 'diff',\n dependencies: ['ui.router', 'core', 'data', 'filters', 'angular-json-tree']\n})\nexport class DiffModule {\n constructor() {\n (this).ngRef.service('DiffService', DiffService);\n (this).ngRef.directive('apcDiff', () => new ApcDiffDirective());\n (this).ngRef.controller('CompareCtrl', CompareCtrl);\n (this).ngRef.controller('ReviewCtrl', ReviewCtrl);\n (this).ngRef.controller('DiffCtrl', ApcDiffCtrl);\n }\n\n public config($stateProvider, States) {\n \"ngInject\";\n $stateProvider.state(States.Compare.name, {\n abstract: States.Compare.abstract,\n url: States.Compare.url,\n ncyBreadcrumb: {\n label: States.Compare.displayName,\n parent: function ($scope) {\n return $scope.parentState;\n }\n },\n params: {\n parentState: ''\n },\n views: {\n 'page@Base': {\n template: require('./partial/Compare/Compare.tmpl'),\n controller: CompareCtrl,\n resolve: {\n compareData: function ($stateParams, DiffService) {\n return DiffService.getCompareData($stateParams.configA, $stateParams.configB).then(function (response) {\n return response.data;\n });\n },\n filters: function ($stateParams) {\n return {\n type: $stateParams.type || 'all',\n name: $stateParams.name || 'all'\n };\n }\n }\n }\n }\n });\n $stateProvider.state(States.Review.name, {\n abstract: States.Review.abstract,\n url: States.Review.url,\n ncyBreadcrumb: {\n label: States.Review.displayName\n },\n resolve: {\n diffData: function (PushService, DataCollectorService) {\n var data = DataCollectorService.getStoredData();\n return PushService.getDiffData(data).then(function (response) {\n return response.data;\n });\n }\n },\n views: {\n 'page@Base': {\n template: require('./partial/Review/Review.tmpl'),\n controller: ReviewCtrl\n }\n }\n });\n /* Add New States Above */\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/diff/diff.ts","module.exports = \"

              Contents are identical or you have no rights to see the modified entities.

              0\\\">
              Created Updated Deleted {{diffItem.entityKey | olcaKey}}
              Property Old Value New Value
              {{diffEntry.fieldName | propertyAlias}} {{!isDefined(diffEntry.oldFieldValue)?'Not set':diffEntry.oldFieldValue | ttl:diffEntry}} {{!isDefined(diffEntry.newFieldValue)?'Not set':diffEntry.newFieldValue | ttl:diffEntry}}
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/diff/directive/Diff/Diff.tmpl\n// module id = 113\n// module chunks = 0","/**\n * @class CompareCtrl\n * @memberOf module:diff\n * @param {Object} $scope - Angular scope\n * @param {Object} $window - Angular window wrapper\n * @param {Object} compareData - Compare data from server\n * @param {Object} filters - Filter data from state params\n * @description Controls the compare configuration page\n */\nexport class CompareCtrl {\n constructor($scope, $state, $window, compareData, filters, Config, DownloadService) {\n \"ngInject\";\n /**\n * @name module:diff.CompareCtrl#parentState\n * @type {String}\n * @description The state from which the transition originated\n */\n $scope.parentState = $state.params.parentState;\n /**\n * @name module:diff.CompareCtrl#data\n * @type {Object}\n * @description Compare data\n */\n $scope.data = compareData;\n if (compareData.trimmingInfo && compareData.trimmingInfo.trimmed) {\n $scope.trimmingInfo = compareData.trimmingInfo;\n }\n $scope.completeDiffUUID = compareData.completeDiffUUID;\n /**\n * @name module:diff.CompareCtrl#typeFilter\n * @type {String}\n * @description Default type filter\n */\n $scope.typeFilter = filters.type;\n /**\n * @name module:diff.CompareCtrl#nameFilter\n * @type {String}\n * @description Default name filter\n */\n $scope.nameFilter = filters.name;\n $scope.downloadCompleteDiff = function () {\n var url = Config.API_ROOT + '/config/diff/uuid/' + $scope.completeDiffUUID;\n DownloadService.download(url);\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/diff/partial/Compare/Compare.ts","export class ReviewCtrl {\n constructor($scope, $rootScope, $state, $window, States, diffData, PushService, DataCollectorService, EnvironmentService) {\n \"ngInject\";\n $scope.selectedEnvironment = EnvironmentService.getSelectedEnvironment();\n $scope.data = diffData;\n $scope.formData = {\n message: ''\n };\n\n $scope.pushChanges = function () {\n $rootScope.statusMessage = 'Pushing configuration to server';\n $rootScope.appLoading = true;\n PushService.pushChanges(DataCollectorService.getStoredData(), $scope.formData.message).then(function () {\n $rootScope.appLoading = false;\n $window.location.reload();\n });\n };\n\n if (diffData.entityDifferences.length === 0) {\n $state.go(States.Dashboard.name);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/diff/partial/Review/Review.ts","/**\n * @class DiffService\n * @memberOf module:diff\n * @param {Object} $http - Angular http service\n * @param {module:data.Config} Config - Application config\n * @description Retrieves diff data from the server\n */\nexport class DiffService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n /**\n * @memberOf module:diff.DiffService\n * @param {Number} configA - Configuration A version\n * @param {Number} configB - Configuration B version\n * @returns {HttpPromise} Diff data from server\n * @description Retrieves diff data between 2 configuration versions\n */\n public getCompareData(configA, configB) {\n return this.$http.get(this.Config.API_ROOT + '/config/diff/versions?configurationVersionB=' + configA + '&configurationVersionA=' + configB);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/diff/service/DiffService.ts","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/diff/partial/Compare/Compare.tmpl\n// module id = 117\n// module chunks = 0","module.exports = \"

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/diff/partial/Review/Review.tmpl\n// module id = 118\n// module chunks = 0","import * as angular from \"angular\";\n\nimport {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {MvpdEndpointCtrl} from \"./partial/MvpdEndpoint/MvpdEndpoint\";\nimport {MvpdItemCtrl} from \"./partial/MvpdItem/MvpdItem\";\nimport {MvpdItemBasicCtrl} from \"./partial/MvpdItemBasic/MvpdItemBasic\";\nimport {MvpdListCtrl} from \"./partial/MvpdList/MvpdList\";\nimport {MvpdSettingsCtrl} from \"./partial/MvpdSettings/MvpdSettings\";\nimport {MvpdProxiedMvpdsCtrl} from \"./partial/MvpdProxiedMvpds/MvpdProxiedMvpds\";\nimport {ProxiedMvpdRequestorsModalCtrl} from \"./partial/MvpdProxiedMvpds/MvpdProxiedMvpds\";\nimport {TabsCtrl} from \"../ui/partial/Tabs/Tabs\";\nimport {MvpdServerNameIndicationCtrl} from \"./partial/MvpdServerNameIndication/MvpdServerNameIndication\";\n\n@AngularModuleConfig({\n moduleName: 'mvpd',\n dependencies: ['ui.bootstrap', 'ui.router', 'core', 'data', 'filters']\n})\nexport class MvpdModule {\n constructor() {\n ( this).ngRef.controller('MvpdEndpointCtrl', MvpdEndpointCtrl);\n ( this).ngRef.controller('MvpdItemCtrl', MvpdItemCtrl);\n ( this).ngRef.controller('MvpdItemBasicCtrl', MvpdItemBasicCtrl);\n ( this).ngRef.controller('MvpdListCtrl', MvpdListCtrl);\n ( this).ngRef.controller('MvpdSettingsCtrl', MvpdSettingsCtrl);\n ( this).ngRef.controller('MvpdProxiedMvpdsCtrl', MvpdProxiedMvpdsCtrl);\n ( this).ngRef.controller('ProxiedMvpdRequestorsModalCtrl', ProxiedMvpdRequestorsModalCtrl);\n ( this).ngRef.controller('MvpdServerNameIndicationCtrl', MvpdServerNameIndicationCtrl);\n }\n\n config($stateProvider, States) {\n \"ngInject\";\n let basicView = {\n template: require('./partial/MvpdItemBasic/MvpdItemBasic.tmpl'),\n controller: MvpdItemBasicCtrl,\n resolve: {\n endpointsData: function(data, BulkService) {\n \"ngInject\";\n let endpointsData = {};\n let authnEndpointKeys = data.entityData[\"authenticationProviderConfigs\"];\n let authzEndpointKeys = data.entityData[\"authorizationProviderConfigs\"];\n let logoutEndpointKeys = data.entityData[\"logoutProviderConfigs\"];\n let endpointKeys = authnEndpointKeys.concat(authzEndpointKeys).concat(logoutEndpointKeys);\n\n return BulkService.getBulk(endpointKeys).then(function(response) {\n endpointsData[\"authn\"] = response.data.filter(function(endpoint) {\n return endpoint.key.indexOf(\"AuthenticationProviderConfiguration\") !== -1;\n });\n endpointsData[\"authz\"] = response.data.filter(function(endpoint) {\n return endpoint.key.indexOf(\"AuthorizationProviderConfiguration\") !== -1;\n });\n endpointsData[\"logout\"] = response.data.filter(function(endpoint) {\n return endpoint.key.indexOf(\"LogoutProviderConfiguration\") !== -1;\n });\n return endpointsData;\n });\n },\n manglerList: function(ManglerService) {\n \"ngInject\";\n return ManglerService.getManglerList().then(function(response) {\n return response.data;\n });\n }\n }\n };\n\n $stateProvider.state(States.Mvpd.name, {\n abstract: States.Mvpd.abstract,\n url: States.Mvpd.url\n });\n\n $stateProvider.state(States.MvpdList.name, {\n abstract: States.MvpdList.abstract,\n url: States.MvpdList.url,\n ncyBreadcrumb: {\n label: States.MvpdList.displayName\n },\n onEnter: function($rootScope) {\n $rootScope.searchActive = true;\n },\n onExit: function($rootScope) {\n $rootScope.searchActive = false;\n },\n views: {\n 'page@Base': {\n template: require('./partial/MvpdList/MvpdList.tmpl'),\n controller: MvpdListCtrl,\n resolve: {\n mvpdList: function(MvpdGenericService) {\n return MvpdGenericService.getPage(1, 'displayName', 'ASC').then(function(response) {\n return response.data;\n });\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.MvpdItem.name, {\n abstract: States.MvpdItem.abstract,\n url: States.MvpdItem.url,\n resolve: {\n data: function($stateParams, MvpdGenericService) {\n return MvpdGenericService.getItem($stateParams.mvpdId).then(function(response) {\n return response.data;\n });\n }\n },\n params: {\n selectedAuthnEndpointKey: null,\n selectedAuthzEndpointKey: null\n },\n views: {\n 'page@Base': {\n template: require('./../core/template/tabs-layout.tmpl'),\n },\n 'tabs@Base.Mvpd.Item': {\n template: require('../ui/partial/Tabs/Tabs.tmpl'),\n controller: TabsCtrl,\n resolve: {\n tabs: function($stateParams, States, MvpdGenericService) {\n let tabs = [\n {\n state: States.MvpdItemData,\n id: 'mvpdDataTab'\n },\n {\n state: States.MvpdSettings,\n id: 'mvpdSettingsTab'\n },\n {\n state: States.MvpdEndpoint,\n displayName: 'Authentication Settings',\n highlightOn: 'authenticationProviderConfigs',\n params: {\n endpointType: 'authenticationProviderConfigs',\n selectedEndpoint: 0\n },\n id: 'mvpdAuthnTab'\n },\n {\n state: States.MvpdEndpoint,\n displayName: 'Authorization Settings',\n highlightOn: 'authorizationProviderConfigs',\n params: {\n endpointType: 'authorizationProviderConfigs',\n selectedEndpoint: 0\n },\n id: 'mvpdAuthzTab'\n },\n {\n state: States.MvpdEndpoint,\n displayName: 'Logout Settings',\n highlightOn: 'logoutProviderConfigs',\n params: {\n endpointType: 'logoutProviderConfigs',\n selectedEndpoint: 0\n },\n id: 'mvpdLogoutTab'\n },\n {\n state: States.MvpdServerNameIndication,\n displayName: 'Server Name Indication',\n id: 'serverNameIndicationTab'\n }\n ];\n\n if (MvpdGenericService.isProxy($stateParams.mvpdId)) {\n tabs.push({\n state: States.MvpdProxiedMvpds,\n id: 'mvpdProxiedMvpdsTab'\n });\n }\n\n return tabs;\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.MvpdItemData.name, {\n abstract: States.MvpdItemData.abstract,\n url: States.MvpdItemData.url,\n ncyBreadcrumb: {\n label: '{{data.entityData.displayName}}',\n parent: States.MvpdList.name\n },\n views: {\n 'tabContent@Base.Mvpd.Item': {\n template: require('./partial/MvpdItem/MvpdItem.tmpl'),\n controller: MvpdItemCtrl\n },\n 'entityItemBasic@Base.Mvpd.Item': basicView\n }\n });\n\n $stateProvider.state(States.MvpdSettings.name, {\n abstract: States.MvpdSettings.abstract,\n url: States.MvpdSettings.url,\n ncyBreadcrumb: {\n label: 'Settings',\n parent: States.MvpdItemData.name\n },\n views: {\n 'tabContent@Base.Mvpd.Item': {\n template: require('./partial/MvpdSettings/MvpdSettings.tmpl'),\n controller: MvpdSettingsCtrl,\n resolve: {\n localConfigurationData: function(LocalConfigurationService) {\n return LocalConfigurationService.getLocalConfiguration().then(function(response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Mvpd.Item': basicView\n }\n });\n\n $stateProvider.state(States.MvpdEndpoint.name, {\n abstract: States.MvpdEndpoint.abstract,\n url: States.MvpdEndpoint.url,\n params: {\n activeEndpointTab: 'settings',\n selectedEndpoint: 0,\n only: []\n },\n ncyBreadcrumb: {\n label: '{{endpointData.entityData.displayName}}',\n parent: States.MvpdItemData.name\n },\n views: {\n 'tabContent@Base.Mvpd.Item': {\n template: require('./partial/MvpdEndpoint/MvpdEndpoint.tmpl'),\n controller: MvpdEndpointCtrl,\n resolve: {\n endpointType: function($stateParams) {\n return $stateParams.endpointType;\n },\n activeEndpointTab: function($stateParams) {\n if ($stateParams.only.length > 0 && $stateParams.only.indexOf($stateParams.endpointType) === -1) {\n $stateParams.activeEndpointTab = 'settings';\n $stateParams.only = [];\n }\n\n return $stateParams.activeEndpointTab;\n },\n certificates: function(endpointData, CertificateService) {\n return CertificateService.parseCertificates(endpointData).then(function(response) {\n return response.data;\n });\n },\n selectedEndpoint: function($stateParams) {\n return $stateParams.selectedEndpoint;\n },\n endpointData: function(data, endpointType, BulkService, selectedEndpoint) {\n var endpointFetchData = data.entityData[endpointType][selectedEndpoint];\n return BulkService.getItem(endpointFetchData).then(function(response) {\n return response.data;\n });\n },\n manglerList: function(ManglerService) {\n return ManglerService.getManglerList().then(function(response) {\n return response.data;\n });\n }\n }\n },\n 'endpointTabContent@Base.Mvpd.Item.Endpoint': {\n templateUrl: function(data) {\n var endpointTypeValue = data.endpointType.replace('Configs', 'Configuration');\n\n if (angular.equals(data.activeEndpointTab, \"rules\")) {\n return 'module/ui/template/endpoint/MVPD' + endpointTypeValue + '-' + data.activeEndpointTab + '.html';\n } else {\n return 'module/ui/template/endpoint/' + endpointTypeValue + '-' + data.activeEndpointTab + '.html';\n }\n }\n },\n 'entityItemBasic@Base.Mvpd.Item': basicView\n }\n });\n\n $stateProvider.state(States.MvpdProxiedMvpds.name, {\n abstract: States.MvpdProxiedMvpds.abstract,\n url: States.MvpdProxiedMvpds.url,\n ncyBreadcrumb: {\n label: 'Proxied Mvpds',\n parent: States.MvpdItemData.name\n },\n onEnter: function($rootScope) {\n $rootScope.searchActive = true;\n },\n onExit: function($rootScope) {\n $rootScope.searchActive = false;\n },\n views: {\n 'tabContent@Base.Mvpd.Item': {\n template: require('./partial/MvpdProxiedMvpds/MvpdProxiedMvpds.tmpl'),\n controller: MvpdProxiedMvpdsCtrl\n },\n 'entityItemBasic@Base.Mvpd.Item': basicView\n }\n });\n\n $stateProvider.state(States.MvpdServerNameIndication.name, {\n abstract: States.MvpdServerNameIndication.abstract,\n url: States.MvpdServerNameIndication.url,\n ncyBreadcrumb: {\n label: \"Server Name Indication\",\n parent: States.MvpdItemData.name\n },\n views: {\n 'tabContent@Base.Mvpd.Item': {\n template: require('./partial/MvpdServerNameIndication/MvpdServerNameIndication.tmpl'),\n controller: MvpdServerNameIndicationCtrl\n },\n 'entityItemBasic@Base.Mvpd.Item': basicView\n }\n });\n /* Add New States Above */\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/mvpd.ts","import * as angular from \"angular\";\nimport {isNullOrUndefined} from \"util\";\nimport {TempPassService} from \"../../../data/service/TempPassService\";\n\nexport class MvpdEndpointCtrl {\n constructor($scope, $state, $filter, data, endpointType, activeEndpointTab, endpointData, selectedEndpoint, certificates, States, manglerList, DataCollectorService, TooltipService, TMSIdService, ConsoleUtils) {\n \"ngInject\";\n let generateTabs = function (endpointType) {\n let result = [];\n let type = '';\n\n switch (endpointType) {\n case 'authenticationProviderConfigs':\n type = 'AuthN';\n break;\n case 'authorizationProviderConfigs':\n type = 'AuthZ';\n break;\n case 'logoutProviderConfigs':\n type = 'Logout';\n break;\n }\n\n result.push({\n name: type + ' General Settings',\n active: activeEndpointTab === 'settings',\n location: States.MvpdEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'settings',\n only: []\n },\n id: type + '_endpointSettingsTab'\n });\n result.push({\n name: type + ' Certificates',\n active: activeEndpointTab === 'certificates',\n location: States.MvpdEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'certificates',\n only: []\n },\n id: type + '_endpointCertificatesTab'\n });\n result.push({\n name: type + ' Dynamic Rules',\n active: activeEndpointTab === 'rules',\n location: States.MvpdEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'rules',\n only: []\n },\n id: type + '_endpointDynamicRulesTab'\n });\n if (type === 'AuthZ') {\n result.push({\n name: type + ' TmsIds',\n active: activeEndpointTab === 'tmsids',\n location: States.MvpdEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'tmsids',\n only: ['authorizationProviderConfigs']\n },\n id: type + '_endpointTmsIdsTab'\n });\n }\n return result;\n };\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n\n $scope.data = data;\n $scope.selectedEndpoint = data.related[endpointType][selectedEndpoint].entityData.id;\n\n $scope.selectEndpoint = function (endpointId) {\n let endpointIndex = 0;\n for (let i = 0; i < data.related[endpointType].length; i++) {\n if (data.related[endpointType][i].entityData.id === endpointId) {\n endpointIndex = i;\n }\n }\n $state.go($state.current.name, {\n activeEndpointTab: 'settings',\n selectedEndpoint: endpointIndex\n });\n };\n $scope.endpointType = endpointType;\n $scope.endpointData = endpointData;\n $scope.manglerData = endpointData;\n $scope.certificates = certificates;\n $scope.related = endpointData.related;\n $scope.tabs = generateTabs(endpointType);\n $scope.parseMetadata = function (metadata) {\n return $filter('metadata')(metadata, true);\n };\n $scope.noData = (endpointData.entityData.id.indexOf('null') !== -1);\n $scope.isSaml = (endpointData.entityData.id.indexOf('saml') !== -1);\n $scope.manglerList = manglerList;\n\n $scope.$watch('endpointData.entityData', DataCollectorService.collector(endpointData), true);\n\n $scope.inheritPath = 'owner';\n $scope.inheritTree = 'AuthN Endpoint:Mvpd';\n $scope.readOnly = true;\n\n let pipelineStageList = endpointData.entityData.pipelineStageList;\n if (!isNullOrUndefined(pipelineStageList)) {\n $scope.tempPassConfig = new TempPassService().getTempPassMap(pipelineStageList.PIPELINE_AUTHORIZATION);\n }\n\n if (endpointData.entityData.configuration && angular.isObject(endpointData.entityData.configuration.default) &&\n angular.isDefined(endpointData.entityData.configuration.default.tmsIdMap)) {\n TMSIdService.getMVPDTMSIdMap(endpointData.entityData.configuration.default.tmsIdMap).then((result) => {\n let mvpdTMSIdMap = result.data;\n if (mvpdTMSIdMap && mvpdTMSIdMap.entityData) {\n $scope.tmsIdsArray = ConsoleUtils.createTmsIdsArray(mvpdTMSIdMap.entityData.mapping);\n } else {\n $scope.tmsIdsArray = [];\n }\n });\n } else {\n $scope.tmsIdsArray = [];\n }\n\n TooltipService.getTooltips().then(function (result) {\n // TODO: better separation when we will have separate controllers and templates for each endpoint type\n $scope.samlInfoTooltips = result.data.DOMAIN_MODELS.samlMetadataInfo;\n switch (endpointType) {\n case 'authenticationProviderConfigs':\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authenticationProviderConfiguration;\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthenticationProviderConfiguration;\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthenticationProviderConfiguration;\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthenticationProviderConfiguration;\n $scope.oAuth2EndpointTooltips = result.data.DOMAIN_MODELS.oAuth2Endpoint;\n $scope.authNAllTooltips = result.data.DOMAIN_MODELS.authNAllAuthenticationProviderConfiguration;\n break;\n case 'authorizationProviderConfigs':\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authorizationProviderConfiguration;\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthorizationProviderConfiguration;\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthorizationProviderConfiguration;\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthorizationProviderConfiguration;\n $scope.restTooltips = result.data.DOMAIN_MODELS.restAuthorizationProviderConfiguration;\n $scope.soapTooltips = result.data.DOMAIN_MODELS.soapAuthorizationProviderConfiguration;\n $scope.authZAllTooltips = result.data.DOMAIN_MODELS.authZAllAuthorizationProviderConfiguration;\n $scope.preFlightTooltips = result.data.DOMAIN_MODELS.preFlightConfiguration;\n $scope.dosProtectionTooltips = result.data.DOMAIN_MODELS.dosProtectionConfiguration;\n $scope.tempPassTooltips = result.data.DOMAIN_MODELS.tempPassConfiguration;\n break;\n case 'logoutProviderConfigs':\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlLogoutProviderConfiguration;\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2RedirectLogoutProviderConfiguration;\n break;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdEndpoint/MvpdEndpoint.ts","export class MvpdItemCtrl {\n constructor($scope, $filter, data, DataCollectorService, TooltipService) {\n \"ngInject\";\n $scope.data = data;\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.mvpd;\n });\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdItem/MvpdItem.ts","import * as _ from \"lodash\";\n\nexport class MvpdItemBasicCtrl {\n constructor($scope, $state, $stateParams, States, data, endpointsData, manglerList, DataCollectorService) {\n \"ngInject\";\n $scope.data = data;\n $scope.basicWorkspaceEnabled = true;\n\n $scope.authnEndpoints = endpointsData[\"authn\"];\n $scope.authnEndpointsData = _.keyBy($scope.authnEndpoints.map(function (authnEndpoint) {\n let endpointData = {};\n endpointData['key'] = authnEndpoint.key;\n endpointData['endpointType'] = authnEndpoint.entityData.authenticationProviderType;\n\n return endpointData;\n }), 'key');\n $stateParams.selectedAuthnEndpointKey = $stateParams.selectedAuthnEndpointKey || $scope.authnEndpoints[0].key;\n $scope.selectedAuthnEndpoint = $scope.data.related[\"@\" + $stateParams.selectedAuthnEndpointKey];\n $scope.authnSelectorDisabled = $scope.authnEndpoints.length === 1;\n\n $scope.authzEndpoints = endpointsData[\"authz\"];\n $scope.authzEndpointsData = _.keyBy($scope.authzEndpoints.map(function (authzEndpoint) {\n let endpointData = {};\n endpointData['key'] = authzEndpoint.key;\n endpointData['endpointType'] = authzEndpoint.entityData.authorizationProviderType;\n\n endpointData['preFlightSupport'] = (!authzEndpoint.entityData.preFlightConfiguration) ? \"N/A\" :\n authzEndpoint.entityData.preFlightConfiguration.type;\n\n let dosProtection = authzEndpoint.entityData.dosProtection;\n endpointData['dosProtectionEnabled'] = dosProtection ? (dosProtection.enabled ?\n \"Enabled\" : \"Disabled\") : \"N/A\";\n\n return endpointData;\n }), 'key');\n $stateParams.selectedAuthzEndpointKey = $stateParams.selectedAuthzEndpointKey || $scope.authzEndpoints[0].key;\n $scope.selectedAuthzEndpoint = $scope.data.related[\"@\" + $stateParams.selectedAuthzEndpointKey];\n $scope.authzSelectorDisabled = $scope.authzEndpoints.length === 1;\n\n $scope.updateEndpoint = function () {\n $stateParams.selectedAuthnEndpointKey = $scope.selectedAuthnEndpoint.key;\n $stateParams.selectedAuthzEndpointKey = $scope.selectedAuthzEndpoint.key;\n $state.transitionTo($state.current.name, $stateParams, {reload: true, inherit: false, notify: false});\n };\n\n $scope.clientDataAllowedList = ['iFrameRequired', 'iFrameWidth', 'iFrameHeight'];\n\n $scope.manglerList = manglerList;\n $scope.inheritPath = 'owner';\n $scope.authnInheritTree = 'AuthN Endpoint:Mvpd';\n $scope.authzInheritTree = 'AuthZ Endpoint:Mvpd';\n\n $scope.authnManglerData = $scope.selectedAuthnEndpoint;\n $scope.authnManglerData.related = {};\n $scope.authnManglerData.related['@' + data.key] = data;\n\n $scope.authzManglerData = $scope.selectedAuthzEndpoint;\n $scope.authzManglerData.related = {};\n $scope.authzManglerData.related['@' + data.key] = data;\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n $scope.$watch('authnManglerData.entityData', DataCollectorService.collector($scope.selectedAuthnEndpoint), true);\n $scope.$watch('authzManglerData.entityData', DataCollectorService.collector($scope.selectedAuthzEndpoint), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdItemBasic/MvpdItemBasic.ts","export class MvpdListCtrl {\n constructor($rootScope, $scope, $filter, $state, States, Config, mvpdList, MvpdGenericService) {\n \"ngInject\";\n $scope.columns = [\n {\n name: 'Display Name',\n sortable: true,\n sorted: true,\n sortAsc: true,\n sortField: 'displayName',\n class: 'col-md-9'\n },\n {\n name: 'Logo',\n sortable: false,\n class: 'col-md-1 image action'\n }];\n $scope.data = mvpdList ? mvpdList : null;\n if ($scope.data === null) {\n $rootScope.searchActive = false;\n }\n $scope.pageSize = Config.PAGE_SIZE;\n $scope.service = MvpdGenericService;\n $scope.onItemClick = function (item) {\n $state.go(States.MvpdItemData.name, {\n mvpdId: item.entityData.id\n });\n };\n\n $scope.$on(\"onPageChange\", function(){\n const tableListElement = document.getElementById('table-list');\n window.scrollTo(0, window.scrollY-tableListElement.offsetHeight);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdList/MvpdList.ts","export class MvpdSettingsCtrl {\n constructor($scope, data, DataCollectorService, localConfigurationData) {\n \"ngInject\";\n $scope.data = data;\n $scope.localConf = localConfigurationData;\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.clientDataOpen = true;\n $scope.hasClientData = data.entityData.clientData && Object.keys(data.entityData.clientData).length > 0 ? true : false;\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdSettings/MvpdSettings.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as angular from \"angular\";\n\nimport {NotificationService, Notifications} from \"../../../core/service/NotificationService\";\n\nexport class MvpdServerNameIndicationCtrl {\n constructor($scope, data, DataCollectorService, TooltipService, UserService, NotificationService: NotificationService) {\n \"ngInject\";\n\n $scope.isAdmin = UserService.hasRole('ROLE_CONSOLE_ADMIN');\n $scope.data = data;\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n $scope.regex = /^([a-zA-Z0-9-]{1,63}\\.)+([a-zA-Z]{1,})$/;\n\n $scope.isFieldInvalid = function (newHostnameForm) {\n if (newHostnameForm) {\n return newHostnameForm.$invalid && newHostnameForm.$dirty;\n }\n\n return false;\n };\n\n $scope.removeHostname = function (sni) {\n let size = $scope.data.entityData.serverNameIndication.length;\n for (let index = 0; index < size; index++) {\n if (angular.equals(sni, $scope.data.entityData.serverNameIndication[index])) {\n NotificationService.getConfirmationFromUser(Notifications.confirmDeleteSniHostname).result.then(\n (userDecisionToDelete) => {\n if (userDecisionToDelete === true) {\n $scope.data.entityData.serverNameIndication.splice(index, 1);\n }\n }\n );\n\n break;\n }\n }\n };\n\n $scope.createEmptyHostname = function () {\n return {\n id:\"\",\n hostname:\"\"\n };\n };\n\n $scope.newHostname = $scope.createEmptyHostname();\n $scope.newSniAdded = false;\n\n $scope.addNewSniButtonClicked = function () {\n $scope.newSniAdded = true;\n };\n\n $scope.resetnewHostname = function() {\n $scope.newSniAdded = false;\n $scope.newHostname = $scope.createEmptyHostname();\n };\n\n $scope.genericHostnameExists = function (subdomain) {\n if (!subdomain) {\n return false;\n }\n\n let size = $scope.data.entityData.serverNameIndication.length;\n let subdomainElements = subdomain.split(\".\").reverse();\n\n for (let index = 0; index < size; index++) {\n let domain = $scope.data.entityData.serverNameIndication[index];\n domain = domain.split(\".\").reverse();\n\n if (domain.length <= subdomainElements.length) {\n for (var j = 0, counter = 0; j < domain.length; j++, counter++) {\n if (!angular.equals(domain[j], subdomainElements[j])) {\n break;\n }\n }\n\n if (counter === domain.length) {\n return true;\n }\n }\n }\n return false;\n };\n\n $scope.isHostnameValid = function (hostname) {\n if (hostname) {\n if (hostname.match($scope.regex)) {\n return true;\n }\n }\n\n return false;\n };\n\n $scope.saveHostname = function (hostnameForm) {\n if ($scope.isHostnameValid($scope.newHostname.hostname) && !$scope.genericHostnameExists($scope.newHostname.hostname)) {\n $scope.newSniAdded = false;\n $scope.newHostname.id = $scope.newHostname.hostname;\n $scope.data.entityData.serverNameIndication.push($scope.newHostname.hostname);\n $scope.newHostname = $scope.createEmptyHostname();\n hostnameForm.$setPristine();\n return true;\n }\n\n return false;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/mvpd/partial/MvpdServerNameIndication/MvpdServerNameIndication.ts","module.exports = \"

              Authentication


              Authorization

              PreFlight Support: {{authzEndpointsData[selectedAuthzEndpoint.key].preFlightSupport}}

              DOS Protection: {{authzEndpointsData[selectedAuthzEndpoint.key].dosProtectionEnabled}}


              Client Data

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdItemBasic/MvpdItemBasic.tmpl\n// module id = 129\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdList/MvpdList.tmpl\n// module id = 130\n// module chunks = 0","module.exports = \"
              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdItem/MvpdItem.tmpl\n// module id = 131\n// module chunks = 0","module.exports = \"
              Client Data Properties

              No data available

              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdSettings/MvpdSettings.tmpl\n// module id = 132\n// module chunks = 0","module.exports = \"

              This is a null or dummy endpoint. No data to display.


              \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdEndpoint/MvpdEndpoint.tmpl\n// module id = 133\n// module chunks = 0","module.exports = \"
              0\\\" class=pagination-holder>
              Display name Logo Channels
              {{proxiedMvpd.entityData.displayName}}

                No data available

                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdProxiedMvpds/MvpdProxiedMvpds.tmpl\n// module id = 134\n// module chunks = 0","module.exports = \"

                This mvpd has no SNI hostnames.

                0 || newSniAdded)\\\">
                Hostname Delete
                {{sni}}
                0\\\">
                Hostname
                {{sni}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/mvpd/partial/MvpdServerNameIndication/MvpdServerNameIndication.tmpl\n// module id = 135\n// module chunks = 0","/**\n * @module core\n * @requires module:data\n * @description Application's core module. Defines utility services and constants.\n */\nimport {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {MaintenanceInterceptor} from \"./interceptor/MaintenanceInterceptor\";\nimport {HttpExceptionHandler} from \"./interceptor/HttpExceptionHandler\";\nimport {CertificateService} from \"./service/CertificateService\";\nimport {DownloadService} from \"./service/DownloadService\";\nimport {InitService} from \"./service/InitService\";\nimport {NavService} from \"./service/NavService\";\nimport {NotificationService} from \"./service/NotificationService\";\nimport {ResilienceService} from \"./service/ResilienceService\";\nimport {TooltipService} from \"./service/TooltipService\";\nimport {UserService} from \"./service/UserService\";\nimport {SidebarCtrl} from \"./partial/Sidebar/Sidebar\";\nimport {HeaderCtrl} from \"./partial/Header/Header\";\nimport {FooterCtrl} from \"./partial/Footer/Footer\";\nimport {DashboardCtrl} from \"./partial/Dashboard/Dashboard\";\nimport {ChangelogCtrl} from \"./partial/ChangeLog/ChangeLog\";\nimport {NotificationModalCtrl} from './service/NotificationService';\nimport {EnvironmentService} from \"./service/EnvironmentService\";\n\n@AngularModuleConfig({\n moduleName: 'core',\n dependencies: ['ui.bootstrap', 'ngCookies', 'data', 'security']\n})\nexport class CoreModule {\n constructor() {\n (this).ngRef.service('CertificateService', CertificateService);\n (this).ngRef.service('DownloadService', DownloadService);\n (this).ngRef.service('InitService', InitService);\n (this).ngRef.service('NavService', NavService);\n (this).ngRef.service('NotificationService', NotificationService);\n (this).ngRef.service('ResilienceService', ResilienceService);\n (this).ngRef.service('TooltipService', TooltipService);\n (this).ngRef.service('UserService', UserService);\n (this).ngRef.service(\"EnvironmentService\", EnvironmentService);\n\n (this).ngRef.controller('SidebarCtrl', SidebarCtrl);\n (this).ngRef.controller('HeaderCtrl', HeaderCtrl);\n (this).ngRef.controller('FooterCtrl', FooterCtrl);\n (this).ngRef.controller('ChangelogCtrl', ChangelogCtrl);\n (this).ngRef.controller('DashboardCtrl', DashboardCtrl);\n (this).ngRef.controller('NotificationModalCtrl', NotificationModalCtrl);\n\n (this).ngRef.constant('States', {\n 'Base': {\n name: 'Base',\n abstract: true,\n displayName: 'Base State',\n url: '/',\n roles: 'READ',\n enableNav: false\n },\n 'Intro': {\n name: 'Base.Intro',\n abstract: false,\n displayName: 'Intro State',\n url: '',\n roles: 'READ',\n enableNav: false\n },\n 'Forbidden': {\n name: 'Base.Forbidden',\n abstract: false,\n displayName: 'Forbidden State',\n url: 'error',\n roles: 'READ',\n enableNav: false\n },\n 'Compare': {\n name: 'Base.Compare',\n abstract: false,\n displayName: 'Compare',\n url: 'compare?configA&configB&type&name',\n roles: 'READ',\n enableNav: false\n },\n 'Review': {\n name: 'Base.Review',\n abstract: false,\n displayName: 'Review and Push Changes',\n url: 'review',\n roles: 'READ',\n enableNav: false\n },\n 'Dashboard': {\n name: 'Base.Dashboard',\n abstract: false,\n displayName: 'Dashboard',\n url: '',\n roles: 'READ',\n enableNav: true,\n icon: 'dashboard',\n id: 'dashboard'\n },\n 'Channel': {\n name: 'Base.Channel',\n abstract: true,\n displayName: 'Channels',\n url: 'channel',\n roles: 'READ',\n enableNav: false,\n icon: 'pages',\n id: 'channel'\n },\n 'ChannelList': {\n name: 'Base.Channel.List',\n abstract: false,\n displayName: 'Channels',\n highlightOn: 'Base.Channel',\n url: '',\n roles: 'READ',\n enableNav: true,\n icon: 'pages',\n id: 'channel'\n },\n 'ChannelItem': {\n name: 'Base.Channel.Item',\n abstract: true,\n displayName: 'Channel Data',\n url: '/:channelId',\n roles: 'READ',\n enableNav: false\n },\n 'ChannelItemData': {\n name: 'Base.Channel.Item.Data',\n abstract: false,\n displayName: 'Channel Data',\n url: '/data',\n roles: 'READ',\n enableNav: false,\n id: 'channelDataTab'\n\n },\n 'ChannelSettings': {\n name: 'Base.Channel.Item.Settings',\n abstract: false,\n displayName: 'General Settings',\n url: '/settings',\n roles: 'READ',\n enableNav: false,\n id: 'channelSettingsTab'\n },\n 'ChannelCertificates': {\n name: 'Base.Channel.Item.Certificates',\n abstract: false,\n displayName: 'Certificates',\n url: '/certificates',\n roles: 'READ',\n enableNav: false,\n id: 'channelCertificatesTab'\n },\n 'ChannelApplications': {\n name: 'Base.Channel.Item.Applications',\n abstract: false,\n displayName: 'Registered Applications',\n url: '/applications',\n roles: 'READ',\n enableNav: false,\n id: 'channelApplicationsTab'\n },\n 'ChannelCustomSchemes': {\n name: 'Base.Channel.Item.CustomSchemes',\n abstract: false,\n displayName: 'Custom Schemes',\n url: '/schemes',\n roles: 'READ',\n enableNav: false,\n id: 'channelCustomSchemesTab'\n },\n 'ChannelPermissions': {\n name: 'Base.Channel.Item.Permissions',\n abstract: false,\n displayName: 'Group Permissions',\n url: '/permissions',\n roles: 'READ',\n enableNav: false,\n id: 'channelPermissionsTab'\n },\n 'ChannelDomains': {\n name: 'Base.Channel.Item.Domains',\n abstract: false,\n displayName: 'Domains',\n url: '/domains',\n roles: 'READ',\n enableNav: false,\n id: 'channelDomainsTab'\n },\n 'ChannelIntegrations': {\n name: 'Base.Channel.Item.Integrations',\n abstract: false,\n displayName: 'Integrations',\n url: '/integrations',\n roles: 'READ',\n enableNav: false,\n id: 'channelIntegrationsTab'\n },\n 'Programmer': {\n name: 'Base.Programmer',\n abstract: true,\n displayName: 'Programmers',\n url: 'programmer',\n roles: 'READ',\n enableNav: false,\n icon: 'phoneGap',\n id: 'programmer'\n },\n 'ProgrammerList': {\n name: 'Base.Programmer.List',\n abstract: false,\n displayName: 'Programmers',\n highlightOn: 'Base.Programmer',\n url: '',\n roles: 'READ',\n enableNav: true,\n icon: 'phoneGap',\n id: 'programmer'\n },\n 'ProgrammerItem': {\n name: 'Base.Programmer.Item',\n abstract: true,\n displayName: 'Programmer Data',\n url: '/:programmerId',\n roles: 'READ',\n enableNav: false\n },\n 'ProgrammerItemData': {\n name: 'Base.Programmer.Item.Data',\n abstract: false,\n displayName: 'Programmer Data',\n url: '',\n roles: 'READ',\n enableNav: false,\n id: 'programmerDataTab'\n },\n 'ProgrammerCertificates': {\n name: 'Base.Programmer.Item.Certificates',\n abstract: false,\n displayName: 'Certificates',\n url: '/certificates',\n roles: 'READ',\n enableNav: false,\n id: 'programmerCertificatesTab'\n },\n 'ProgrammerApplications': {\n name: 'Base.Programmer.Item.Applications',\n abstract: false,\n displayName: 'Registered Applications',\n url: '/applications',\n roles: 'READ',\n enableNav: false,\n id: 'programmerApplicationsTab'\n },\n 'ProgrammerCustomSchemes': {\n name: 'Base.Programmer.Item.CustomSchemes',\n abstract: false,\n displayName: 'Custom Schemes',\n url: '/schemes',\n roles: 'ADMIN',\n enableNav: false,\n id: 'programmerCustomSchemesTab'\n },\n 'ProgrammerPermissions': {\n name: 'Base.Programmer.Item.Permissions',\n abstract: false,\n displayName: 'Group Permissions',\n url: '/permissions',\n roles: 'ADMIN',\n enableNav: false,\n id: 'programmerPermissionsTab'\n },\n 'ProgrammerChannels': {\n name: 'Base.Programmer.Item.Channels',\n abstract: false,\n displayName: 'Channels',\n url: '/channels',\n roles: 'READ',\n enableNav: false,\n id: 'programmerChannelsTab'\n },\n 'Integration': {\n name: 'Base.Integration',\n abstract: true,\n displayName: 'Integrations',\n url: 'integration',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'integration'\n },\n 'IntegrationList': {\n name: 'Base.Integration.List',\n abstract: false,\n displayName: 'Integrations',\n highlightOn: 'Base.Integration',\n url: '',\n roles: 'READ',\n enableNav: true,\n icon: 'merge',\n id: 'integration'\n },\n 'IntegrationItem': {\n name: 'Base.Integration.Item',\n abstract: true,\n displayName: 'Integrations',\n url: '/:integrationId',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'integration'\n },\n 'IntegrationItemData': {\n name: 'Base.Integration.Item.Data',\n abstract: false,\n displayName: 'Integration Data',\n url: '/data',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'integrationDataTab'\n },\n 'IntegrationSettings': {\n name: 'Base.Integration.Item.Settings',\n abstract: false,\n displayName: 'General Settings',\n url: '/settings',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'integrationDataTab'\n },\n 'IntegrationEndpoint': {\n name: 'Base.Integration.Item.Endpoint',\n abstract: false,\n displayName: 'Endpoint Settings',\n url: '/endpoint/:endpointType',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'integrationDataTab'\n },\n 'IntegrationNew': {\n name: 'Base.Integration.New',\n abstract: false,\n displayName: 'New Integration',\n url: '/new',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'newIntegration'\n },\n 'Mvpd': {\n name: 'Base.Mvpd',\n abstract: true,\n displayName: 'MVPDs',\n url: 'mvpd',\n roles: 'READ',\n enableNav: false,\n icon: 'deviceDesktop',\n id: 'mvpd'\n },\n 'MvpdList': {\n name: 'Base.Mvpd.List',\n abstract: false,\n displayName: 'MVPDs',\n highlightOn: 'Base.Mvpd',\n url: '',\n roles: 'READ',\n enableNav: true,\n icon: 'deviceDesktop',\n id: 'mvpd'\n },\n 'MvpdItem': {\n name: 'Base.Mvpd.Item',\n abstract: true,\n displayName: 'Mvpd Item',\n url: '/:mvpdId',\n roles: 'READ',\n enableNav: false,\n icon: 'deviceDesktop',\n id: 'mvpd'\n },\n 'MvpdItemData': {\n name: 'Base.Mvpd.Item.Data',\n abstract: false,\n displayName: 'MVPD Data',\n url: '',\n roles: 'READ',\n enableNav: false,\n icon: 'deviceDesktop',\n id: 'mvpdDataTab'\n },\n 'MvpdSettings': {\n name: 'Base.Mvpd.Item.Settings',\n abstract: false,\n displayName: 'General Settings',\n url: '/settings',\n roles: 'READ',\n enableNav: false,\n icon: 'deviceDesktop',\n id: 'mvpdSettingsTab'\n },\n 'MvpdEndpoint': {\n name: 'Base.Mvpd.Item.Endpoint',\n abstract: false,\n displayName: 'Endpoint Settings',\n url: '/endpoint/:endpointType',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'mvpdEndpointTab'\n },\n 'MvpdProxiedMvpds': {\n name: 'Base.Mvpd.Item.ProxiedMvpds',\n abstract: false,\n displayName: 'Proxied Mvpds',\n url: '/proxiedMvpds',\n roles: 'READ',\n enableNav: false,\n icon: 'merge',\n id: 'mvpdProxiedMvpdsTab'\n },\n 'MvpdServerNameIndication': {\n name: 'Base.Mvpd.Item.ServerNameIndication',\n abstract: false,\n displayName: 'Server Name Indication',\n url: '/sni',\n roles: 'READ',\n enableNav: false,\n id: 'serverNameIndicationTab'\n },\n 'History': {\n name: 'Base.History',\n abstract: false,\n displayName: 'Change Log',\n url: 'history?highlight',\n roles: 'READ',\n enableNav: true,\n icon: 'viewList',\n id: 'history'\n },\n 'ReportAuthnData': {\n name: 'Base.Report',\n abstract: false,\n displayName: 'AuthN TTL Reports',\n overrideDisplayName: 'Reports',\n highlightOn: 'Base.Report',\n url: 'reports',\n roles: 'READ',\n enableNav: true,\n icon: 'report',\n id: 'authnDataTab'\n },\n 'ReportAuthzData': {\n name: 'Base.Report.Authz',\n abstract: false,\n displayName: 'AuthZ TTL Reports',\n url: '',\n roles: 'READ',\n enableNav: false,\n id: 'authzDataTab'\n },\n 'ReportSSOData': {\n name: 'Base.Report.SSO',\n abstract: false,\n displayName: 'SSO Reports',\n url: '',\n roles: 'READ',\n enableNav: false,\n id: 'ssoDataTab'\n },\n 'Admin': {\n name: 'Base.Admin',\n abstract: false,\n displayName: 'Info',\n overrideDisplayName: 'Admin',\n url: 'admin',\n roles: 'ADMIN',\n highlightOn: 'Base.Admin',\n enableNav: true,\n icon: 'wrench',\n id: 'adminInfo'\n },\n 'AdminImport': {\n name: 'Base.Admin.Import',\n abstract: false,\n displayName: 'Import / Export',\n url: '/import',\n roles: 'ADMIN',\n enableNav: false,\n id: 'adminImport'\n },\n 'AdminAdvanced': {\n name: 'Base.Admin.Advanced',\n abstract: false,\n displayName: 'Advanced',\n url: '/advanced',\n roles: 'ADMIN',\n enableNav: false,\n id: 'adminAdvanced'\n },\n 'AdminTmsIds': {\n name: 'Base.Admin.TmsIds',\n abstract: false,\n displayName: 'TMS IDs',\n url: '/tmsIds',\n roles: 'ADMIN',\n enableNav: false,\n id: 'adminTmsIds'\n },\n 'Maintenance': {\n name: 'Base.Maintenance',\n abstract: false,\n displayName: 'Maintenance',\n url: 'maintenance',\n roles: 'READ',\n enableNav: false,\n id: 'adminMaintenance'\n },\n 'AdminDefaultMetadata': {\n name: 'Base.Admin.DefaultMetadata',\n abstract: false,\n displayName: 'Default Metadata',\n url: '/defaultMetadata',\n roles: 'ADMIN',\n enableNav: false,\n id: 'adminDefaultMetadata'\n }\n });\n }\n\n config($provide, $httpProvider) {\n \"ngInject\";\n $provide.factory('MaintenanceInterceptor', MaintenanceInterceptor.getInstance);\n $provide.factory('HttpExceptionHandler', HttpExceptionHandler.getInstance);\n\n $httpProvider.interceptors.push('MaintenanceInterceptor');\n $httpProvider.interceptors.push('HttpExceptionHandler');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/core.ts","export class MaintenanceInterceptor {\n constructor(private $q, private $injector, private States, private CacheService) {\n }\n\n public static getInstance($q, $injector, States, CacheService) {\n \"ngInject\";\n return new MaintenanceInterceptor($q, $injector, States, CacheService);\n }\n\n responseError = (response) => {\n if (response.status === 503 && response.data.maintenanceMessage) {\n this.CacheService.reset();\n this.$injector.get('$state').go(this.States.Maintenance.name);\n }\n return this.$q.reject(response);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/interceptor/MaintenanceInterceptor.ts","export class HttpExceptionHandler {\n constructor(private $q, private $rootScope, private $injector, private States, private $timeout, private NotificationService) {\n }\n\n static isRetryableRequest(response) {\n let retryableRequest = response.data.additionalInfo && response.data.additionalInfo.retry;\n let retryLimitNotReached = !response.config.retryCount ||\n (response.config.retryCount && response.config.retryCount < 10);\n\n return retryableRequest && retryLimitNotReached;\n }\n\n public static getInstance($q, $rootScope, $injector, States, $timeout, NotificationService) {\n \"ngInject\";\n return new HttpExceptionHandler($q, $rootScope, $injector, States, $timeout, NotificationService);\n }\n\n responseError = (response) => {\n let state = this.$injector.get('$state');\n this.$timeout.cancel(this.$rootScope.loadingTimeout);\n this.$rootScope.appLoading = false;\n\n switch (response.status) {\n case 413:\n this.NotificationService.warn('Oops!', 'The file you are trying to upload exceeds the maximum allowed size of 10MB.');\n break;\n case 403:\n if (!response.config.ignoreError) {\n this.NotificationService.error('Forbidden', 'Access to this resource is restricted.');\n state.go(this.States.Forbidden.name, {\n forbidden: true\n });\n }\n break;\n case 409:\n if (!HttpExceptionHandler.isRetryableRequest(response)) {\n this.NotificationService.warnModal('Data Conflict', 'Another user made a concurrent modification to the same data. ' +\n 'You need to refresh your data. All changes will be lost.', {\n confirm: true,\n backdrop: 'static'\n });\n }\n break;\n case 400:\n this.NotificationService.error(response.data.exceptionMessage, response.data.additionalInfo);\n break;\n case 500:\n if (response.data.exceptionMessage) {\n this.NotificationService.error(response.data.exceptionType, response.data.exceptionMessage);\n } else {\n // Default error message for all uncaught internal errors.\n this.NotificationService.error('Internal error', 'Please try again later.');\n }\n state.go(this.States.Forbidden.name);\n break;\n case 503:\n if (!response.data.maintenanceMessage && !response.config.ignoreError) {\n this.NotificationService.error('Network error', 'Please try again later.');\n if (response.data.url.indexOf('schemes') === -1) {\n state.go(this.States.Forbidden.name);\n }\n }\n break;\n case 404:\n if (response.data.exceptionType === 'MissingIndexException') {\n this.NotificationService.warnModal('No Data', 'Your loaded data might be expired. Please refresh the page to load the latest data.', {\n confirm: true,\n backdrop: 'static'\n });\n return this.$q.reject(response);\n }\n if (response.config.url.indexOf('latestActivatedConsoleConfigurationVersion') !== -1) {\n this.NotificationService.error('No data', 'There is no valid configuration loaded');\n state.go(this.States.Forbidden.name);\n }\n if (!response.config.ignoreError) {\n state.go(this.States.Dashboard.name);\n }\n if (response.config.url.indexOf('latestCoreConfiguration') !== -1) {\n return this.$q.when({data: {}, config: {url: ''}});\n }\n break;\n }\n return this.$q.reject(response);\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/interceptor/HttpExceptionHandler.ts","import * as angular from 'angular';\n\nexport class CertificateService {\n constructor(private $q, private $http, private Config, private CacheService) {\n \"ngInject\";\n }\n\n parseCertificates(endpointData) {\n let deferred = this.$q.defer();\n let certificates = endpointData.entityData.certificates;\n if (!certificates || Object.keys(certificates).length === 0) {\n deferred.resolve({data: []});\n } else {\n let cachedData = this.CacheService.get(endpointData.key);\n if (cachedData && cachedData.certificates) {\n deferred.resolve({data: cachedData.certificates});\n } else {\n let payload = {};\n for (let key in certificates) {\n if (certificates[key].certificate) {\n payload[key] = certificates[key].certificate;\n } else {\n payload[key] = certificates[key];\n }\n }\n this.$http.post(this.Config.API_ROOT + '/certificates/details', payload).then((response) => {\n let toReturn = angular.copy(response);\n for (let key in response.data) {\n toReturn.data[key] = {\n certificateKey: key,\n certificateInfo: response.data[key],\n base64Certificate: certificates[key].certificate,\n platforms: certificates[key].platforms\n };\n }\n if (cachedData) {\n cachedData.certificates = toReturn.data;\n this.CacheService.put(endpointData.key, cachedData);\n }\n deferred.resolve(toReturn);\n });\n }\n }\n return deferred.promise;\n }\n\n parseCertificate(pemCertificate) {\n let payload = {};\n let key = new Date().getTime() / 1000 | 0;\n payload[key] = pemCertificate;\n return this.$http.post(this.Config.API_ROOT + '/certificates/details', payload).then(function (result) {\n return result.data[key];\n });\n }\n\n hashCertificate(pemCertificate) {\n return this.$http.get(this.Config.API_ROOT + '/certificates/hash?pemCertificate=' + pemCertificate).then(function (result) {\n return result.data;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/CertificateService.ts","export class DownloadService {\n download(url) {\n let hiddenIFrameID = 'hiddenDownloader',\n iframe: any = document.getElementById(hiddenIFrameID);\n if (iframe === null) {\n iframe = document.createElement('iframe');\n iframe.id = hiddenIFrameID;\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n }\n iframe.src = url;\n }\n\n downloadWithErrorCallback(url, onErrorCallback) {\n $.ajax({\n url: url,\n method: 'GET',\n headers: {\n 'Accept': \"text/html,application/xhtml+xml,application/xml,*/*\"\n },\n xhrFields: {\n responseType: 'blob'\n },\n success: function (data, status, response) {\n let filename = response.getResponseHeader('Content-Disposition').match(/filename=\"(.+)\"/)[1];\n let a = document.createElement('a');\n a.href = window.URL.createObjectURL(data);\n a.id = 'hiddenLink';\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n },\n error: function () {\n onErrorCallback();\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/DownloadService.ts","export class InitService {\n constructor(private $q, private $http, private Config) {\n \"ngInject\";\n }\n\n public initConsole() {\n let deferred = this.$q.defer();\n this.$q.all([\n this.getLatestActivatedConfigVersion(),\n this.getEntityTypeMappings(),\n this.getPropertyNameMappings()\n ]).then((results) => {\n if (results) {\n this.Config.configVersion = results[0].data;\n this.Config.entityTypeMappings = results[1].data;\n this.Config.propertyNameMappings = results[2].data;\n }\n deferred.resolve();\n });\n\n return deferred.promise;\n }\n\n private getLatestActivatedConfigVersion() {\n return this.$http.get(this.Config.API_ROOT +\n '/config/latestActivatedConsoleConfigurationVersion', {ignoreError: false});\n }\n\n private getEntityTypeMappings() {\n return this.$http.get(this.Config.API_ROOT + '/config/entityTypeMappings', {ignoreError: false});\n }\n\n private getPropertyNameMappings() {\n return this.$http.get(this.Config.API_ROOT + '/config/propertyNameMappings', {ignoreError: false});\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/InitService.ts","export class NavService {\n constructor(private States, private UserService) {\n \"ngInject\";\n }\n\n public getAvailableNavigationStates() {\n return this.getProcessedAvailableStates();\n }\n\n private getProcessedAvailableStates() {\n let availableStates = [];\n if (this.UserService.hasRole('ROLE_CONSOLE_READ')) {\n for (let state in this.States) {\n let stateObject = this.States[state];\n if (stateObject.enableNav) {\n if (this.UserService.hasRole('ROLE_CONSOLE_' + stateObject.roles)) {\n availableStates.push(stateObject);\n }\n }\n }\n }\n return availableStates;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/NavService.ts","export class ResilienceService {\n private resilienceState: boolean = false;\n private troubleshootingLink: string = \"http://tve.helpdocsonline.com/primetime-tve-dashboard-user-guide$troubleshooting\";\n\n constructor(private CacheService) {\n \"ngInject\";\n }\n\n public getResilienceState() {\n return this.resilienceState;\n }\n\n public setResilienceState(value) {\n if (this.resilienceState !== value) {\n this.resilienceState = value;\n this.CacheService.getHttpServiceCache().removeAll();\n }\n }\n\n public getTroubleshootingLink() {\n return this.troubleshootingLink;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/ResilienceService.ts","export class TooltipService {\n constructor(private $q, private $http, private Config) {\n \"ngInject\";\n }\n\n public getTooltips() {\n let deferred = this.$q.defer();\n this.$http.get(this.Config.API_ROOT + '/config/tooltips').then(function (response) {\n deferred.resolve(response);\n });\n\n return deferred.promise;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/TooltipService.ts","import {IScope} from \"angular\";\n\nexport class UserService {\n private context: IScope;\n private loginRedirectUri: any;\n private userRoles: object = {};\n\n constructor(private $rootScope, private $state, private $log, private $http, private $q, private $window, private $cookies, private Config, private CsrfTokenInterceptor, private NotificationService, private InitService) {\n \"ngInject\";\n this.context = this.$rootScope.$new();\n this.context.userProfile = {\n /**\n * @name module:core.UserProfile#loggedIn\n * @type Boolean\n * @default false\n * @description Authentication status\n */\n loggedIn: false,\n /**\n * @name module:core.UserProfile#firstName\n * @type String\n * @default ''\n * @description User first name\n */\n firstName: \"\",\n /**\n * @name module:core.UserProfile#lastName\n * @type String\n * @default ''\n * @description User last name\n */\n lastName: \"\",\n /**\n * @name module:core.UserProfile#email\n * @type String\n * @default ''\n * @description User email\n */\n email: \"\",\n /**\n * @name module:core.UserProfile#displayName\n * @type String\n * @default ''\n * @description User display name\n */\n displayName: \"\"\n };\n }\n\n public advancedWorkspaceEnabled() {\n if (!this.$cookies.get('advancedWorkspace')) {\n this.$cookies.put('advancedWorkspace', false);\n }\n\n return (this.$cookies.get('advancedWorkspace') === true || this.$cookies.get('advancedWorkspace') === 'true');\n }\n\n public enableAdvancedWorkspace(selected) {\n this.$cookies.put('advancedWorkspace', selected);\n this.$state.reload();\n }\n\n public checkAuthentication() {\n let deferred = this.$q.defer();\n this.$log.log('Checking authentication...');\n this.$http.get(this.Config.API_ROOT + '/user/extendedProfile', {ignoreError: true}).then((response) => {\n let csrfToken = response.headers(this.CsrfTokenInterceptor.CSRF_TOKEN_KEY);\n this.context.userProfile = this.getParsedProfile(response.data.userProfile);\n this.context.userProfile.loggedIn = true;\n this.userRoles = this.getParsedRoles(response.data.grantedAuthorities);\n this.CsrfTokenInterceptor.setToken(csrfToken);\n this.InitService.initConsole().then(() => {\n deferred.resolve(this.context.userProfile);\n });\n\n }, (error) => {\n if (error.status !== 401) {\n this.NotificationService.error('Network error', 'Unable to check authentication.');\n }\n });\n return deferred.promise;\n }\n\n public getUserData() {\n return this.context.userProfile;\n }\n\n public getUserRoles() {\n return this.userRoles;\n }\n\n public login() {\n if (!this.loginRedirectUri) {\n this.checkAuthentication();\n } else {\n this.$rootScope.statusMessage = \"Redirecting to login page\";\n this.$window.location = this.loginRedirectUri.toString();\n }\n }\n\n public isLoggedIn() {\n return this.context.userProfile.loggedIn;\n }\n\n public setAuthorizationCodeUrl(authorizationCodeUrl) {\n this.loginRedirectUri = new URI(authorizationCodeUrl);\n let query = this.loginRedirectUri.search(true);\n let redirectUri: any = new URI(query.redirect_uri);\n let redirectQuery = redirectUri.search(true);\n redirectQuery.redirect = new URI().toString();\n redirectUri.search(redirectQuery);\n query.redirect_uri = redirectUri.toString();\n this.loginRedirectUri.search(query);\n return this.loginRedirectUri.toString();\n }\n\n public hasRole(role) {\n return !!this.userRoles[role];\n }\n\n public getScope() {\n return this.context;\n }\n\n private getParsedProfile(userData) {\n return {\n firstName: userData.first_name,\n lastName: userData.last_name,\n email: userData.email,\n displayName: userData.displayName\n };\n };\n\n private getParsedRoles(roles) {\n let result = {};\n for (let role in roles) {\n result[roles[role].authority] = roles[role].authority;\n }\n return result;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/UserService.ts","export class EnvironmentService {\n\n private environments = [\n {\n name: 'Prequal Staging',\n url: 'https://console-prequal.auth-staging.adobe.com'\n },\n {\n name: 'Prequal Production',\n url: 'https://console-prequal.auth.adobe.com'\n },\n {\n name: 'Release Staging',\n url: 'https://console.auth-staging.adobe.com'\n },\n {\n name: 'Release Production',\n url: 'https://console.auth.adobe.com'\n },\n {\n name: 'Release Production Europe',\n url: 'https://console-eu.auth.adobe.com'\n }\n ];\n\n private selectedEnvironment;\n\n constructor($window) {\n \"ngInject\";\n this.selectedEnvironment = {\n name: 'Development Environment',\n url: $window.location.href\n };\n\n if($window.location.href.indexOf('eu-dev') != -1){\n this.selectedEnvironment = {\n name: 'Development Environment Europe',\n url: $window.location.href\n };\n }\n\n this.identifyCurrentEnvironment($window);\n }\n\n public getEnvironments() {\n return this.environments;\n }\n\n public getSelectedEnvironment() {\n return this.selectedEnvironment;\n }\n\n public identifyCurrentEnvironment($window) {\n const currentBaseLocation = ( new URI($window.location.href)).hostname();\n for (let i = 0; i < this.getEnvironments().length; i++) {\n if (currentBaseLocation === this.getEnvironments()[i].url.replace('https://', '')) {\n this.selectedEnvironment = this.getEnvironments()[i];\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/service/EnvironmentService.ts","import {ConsoleUtils} from \"./service/ConsoleUtils\";\nimport {ManglerUtil} from \"./service/ManglerUtil\";\nimport {ManglerItem} from \"./service/ManglerUtil\";\nimport {MvpdService} from \"./service/MvpdService\";\nimport {MvpdProxyService} from \"./service/MvpdProxyService\";\nimport {MvpdGenericService} from \"./service/MvpdGenericService\";\nimport {ManglerService} from \"./service/ManglerService\";\nimport {BulkService} from \"./service/BulkService\";\nimport {PushService} from \"./service/PushService\";\nimport {TMSIdService} from \"./service/TMSIdService\";\nimport {CacheService} from \"./service/CacheService\";\nimport {ChannelService} from \"./service/ChannelService\";\nimport {PlatformService} from \"./service/PlatformService\";\nimport {ProgrammerService} from \"./service/ProgrammerService\";\nimport {DataCollectorService} from \"./service/DataCollectorService\";\nimport {LocalConfigurationService} from \"./service/LocalConfigurationService\";\nimport {IntegrationService} from \"./service/IntegrationService\";\nimport {HistoryService} from \"./service/HistoryService\";\nimport {ApplicationService} from \"./service/ApplicationService\";\n\nimport {ConfigVersionInterceptor} from \"./interceptor/ConfigVersionInterceptor\";\nimport {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {CacheInterceptor} from \"./interceptor/CacheInterceptor\";\nimport {PushStatusInterceptor} from \"./interceptor/PushStatusInterceptor\";\nimport {RelatedDataInterceptor} from \"./interceptor/RelatedDataInterceptor\";\nimport {ResilienceInterceptor} from \"./interceptor/ResilienceInterceptor\";\nimport {RetryableRequestInterceptor} from \"./interceptor/RetryableRequestInterceptor\";\nimport {CertificateUtils, EncryptionLevel} from \"./service/CertificateUtils\";\nimport {CustomSchemeService} from './service/CustomSchemeService';\nimport {TempPassService} from \"./service/TempPassService\";\nimport {ReportService} from \"./service/ReportService\";\n\n@AngularModuleConfig({\n moduleName: 'data',\n dependencies: ['ui.router', 'core']\n})\nexport class DataModule {\n constructor() {\n (this).ngRef.constant('EncryptionLevel', EncryptionLevel);\n (this).ngRef.constant('Config', {\n API_ROOT: '/rest/api',\n PAGE_SIZE: 20,\n maintenance: false,\n configVersion: null,\n propertyNameMappings: {}\n });\n\n (this).ngRef.service('CertificateUtils', CertificateUtils);\n (this).ngRef.service('ConsoleUtils', ConsoleUtils);\n (this).ngRef.service('ManglerUtil', ManglerUtil);\n (this).ngRef.factory('ManglerItem', () => {return ManglerItem});\n (this).ngRef.service('MvpdService', MvpdService);\n (this).ngRef.service('MvpdProxyService', MvpdProxyService);\n (this).ngRef.service('MvpdGenericService', MvpdGenericService);\n (this).ngRef.service('ManglerService', ManglerService);\n (this).ngRef.service('BulkService', BulkService);\n (this).ngRef.service('PushService', PushService);\n (this).ngRef.service('TMSIdService', TMSIdService);\n (this).ngRef.service('CacheService', CacheService);\n (this).ngRef.service('ChannelService', ChannelService);\n (this).ngRef.service('PlatformService', PlatformService);\n (this).ngRef.service('ProgrammerService', ProgrammerService);\n (this).ngRef.service('DataCollectorService', DataCollectorService);\n (this).ngRef.service('LocalConfigurationService', LocalConfigurationService);\n (this).ngRef.service('IntegrationService', IntegrationService);\n (this).ngRef.service('HistoryService', HistoryService);\n (this).ngRef.service('ApplicationService', ApplicationService);\n (this).ngRef.service('CustomSchemeService', CustomSchemeService);\n (this).ngRef.service('TempPassService', TempPassService);\n (this).ngRef.service('ReportService', ReportService);\n }\n\n config($provide, $httpProvider) {\n \"ngInject\";\n $provide.factory('ConfigVersionInterceptor', ConfigVersionInterceptor.getInstance);\n $provide.factory('CacheInterceptor', CacheInterceptor.getInstance);\n $provide.factory('PushStatusInterceptor', PushStatusInterceptor.getInstance);\n $provide.factory('RelatedDataInterceptor', RelatedDataInterceptor.getInstance);\n $provide.factory('ResilienceInterceptor', ResilienceInterceptor.getInstance);\n $provide.factory('RetryableRequestInterceptor', RetryableRequestInterceptor.getInstance);\n\n $httpProvider.interceptors.push('ConfigVersionInterceptor');\n $httpProvider.interceptors.push('RelatedDataInterceptor');\n $httpProvider.interceptors.push('CacheInterceptor');\n $httpProvider.interceptors.push('ResilienceInterceptor');\n $httpProvider.interceptors.push('PushStatusInterceptor');\n $httpProvider.interceptors.push('RetryableRequestInterceptor');\n\n }\n\n run($http, CacheService) {\n \"ngInject\";\n $http.defaults.cache = CacheService.getHttpServiceCache();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/data.ts","export class ConsoleUtils {\n public TMSID_DEFAULT_VALUE: string = \"Please select a map to edit\";\n\n public createTmsIdsArray(tmsIdMap) {\n let tmsIdsArray = [];\n for (let key in tmsIdMap) {\n let tmsId = {\n resourceName: key,\n resourceId: tmsIdMap[key]\n };\n tmsIdsArray.push(tmsId);\n }\n tmsIdsArray.sort((tmsId1, tmsId2) => tmsId1.resourceName.localeCompare(tmsId2.resourceName));\n return tmsIdsArray;\n }\n\n public createTmsIdsList(tmsIdsList) {\n let tmsIdsArray: String[] = [this.TMSID_DEFAULT_VALUE];\n for (let str of tmsIdsList) {\n let elems = str.split(\":\");\n if (elems && elems.length > 1) {\n tmsIdsArray.push(elems[1]);\n }\n\n }\n return tmsIdsArray;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ConsoleUtils.ts","import * as _ from \"lodash\";\n\nexport class MvpdService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n let url = this.Config.API_ROOT + '/entity/Mvpd?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\n\n if (searchTerm && searchTerm.trim().length >= 1) {\n url += '&query=' + searchTerm;\n }\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\n url += '&sorting=' +\n _.map(\n sortField.split(\",\"),\n (field) => {\n return field + \":\" + sortOrder;\n }\n ).join(',');\n }\n\n return this.$http.get(url);\n }\n\n public getItem(id) {\n return this.$http.get(this.Config.API_ROOT + '/entity/Mvpd/' + id, {\n arrayRelated: ['authenticationProviderConfigs', 'authorizationProviderConfigs', 'logoutProviderConfigs']\n });\n }\n\n public getAll() {\n return this.$http.get(this.Config.API_ROOT + '/entity/Mvpd');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/MvpdService.ts","import * as _ from \"lodash\";\n\nexport class MvpdProxyService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n let url = this.Config.API_ROOT + '/entity/MvpdProxy?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\n\n if (searchTerm && searchTerm.trim().length >= 1) {\n url += '&query=' + searchTerm;\n }\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\n url += '&sorting=' +\n _.map(\n sortField.split(\",\"),\n (field) => {\n return field + \":\" + sortOrder;\n }\n ).join(',');\n }\n\n return this.$http.get(url);\n }\n\n public getItem(id) {\n return this.$http.get(this.Config.API_ROOT + '/entity/MvpdProxy/' + id, {\n arrayRelated: ['authenticationProviderConfigs', 'authorizationProviderConfigs', 'logoutProviderConfigs', 'proxiedMvpds']\n });\n }\n\n public getAll() {\n return this.$http.get(this.Config.API_ROOT + '/entity/MvpdProxy');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/MvpdProxyService.ts","export class MvpdGenericService {\n constructor(private $q, private MvpdService, private MvpdProxyService, private Config) {\n \"ngInject\";\n }\n\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n return this.$q.all([\n this.MvpdService.getPage(1, sortField, sortOrder, searchTerm),\n this.MvpdProxyService.getPage(1, sortField, sortOrder, searchTerm)\n ]).then((responses) => {\n let mvpdNo = responses[0].data.count;\n let mvpdProxyNo = responses[1].data.count;\n\n let mvpdPages = Math.ceil(mvpdNo / this.Config.PAGE_SIZE);\n let mvpdProxyPages = Math.ceil(mvpdProxyNo / this.Config.PAGE_SIZE);\n let total = mvpdNo + mvpdProxyNo;\n let sliceSize = this.Config.PAGE_SIZE - (mvpdNo % this.Config.PAGE_SIZE);\n\n if (sliceSize === this.Config.PAGE_SIZE) {\n sliceSize = 0;\n }\n\n if (pageNumber <= mvpdPages) {\n return this.MvpdService.getPage(pageNumber, sortField, sortOrder, searchTerm).then((res1) => {\n res1.data.count = total;\n\n if (res1.data.entities.length < this.Config.PAGE_SIZE) {\n return this.MvpdProxyService.getPage(1, sortField, sortOrder, searchTerm).then((res2) => {\n res1.data.entities = res1.data.entities.concat(res2.data.entities.slice(0, sliceSize));\n return res1;\n });\n } else {\n return res1;\n }\n });\n } else {\n let page = pageNumber - mvpdPages;\n\n if (page < mvpdProxyPages && sliceSize > 0) {\n return this.$q.all([\n this.MvpdProxyService.getPage(page, sortField, sortOrder, searchTerm),\n this.MvpdProxyService.getPage(page + 1, sortField, sortOrder, searchTerm)\n ]).then((responses) => {\n responses[0].data.count = total;\n responses[0].data.entities = responses[0].data.entities.slice(sliceSize)\n .concat(responses[1].data.entities.slice(0, sliceSize));\n return responses[0];\n });\n } else {\n return this.MvpdProxyService.getPage(page, sortField, sortOrder, searchTerm).then((res) => {\n res.data.count = total;\n res.data.entities = res.data.entities.slice(sliceSize);\n return res;\n });\n }\n }\n });\n }\n\n public isProxy(id) {\n return id.indexOf(\"ProxyMVPD\") === 0;\n }\n\n public getItem(id) {\n if (this.isProxy(id)) {\n return this.MvpdProxyService.getItem(id);\n } else {\n return this.MvpdService.getItem(id);\n }\n }\n\n public getAll() {\n return this.$q.all([\n this.MvpdService.getAll(),\n this.MvpdProxyService.getAll()\n ]).then(function(responses) {\n responses[0].data.count += responses[1].data.count;\n responses[0].data.entities = responses[0].data.entities.concat(responses[1].data.entities);\n return responses[0];\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/MvpdGenericService.ts","export class ManglerService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getManglerList () {\n return this.$http.get(this.Config.API_ROOT + '/config/manglers');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ManglerService.ts","import * as _ from \"lodash\";\n\nexport class BulkService {\n constructor(private $q, private $injector, private Config, private CacheService) {\n \"ngInject\";\n }\n\n public getBulk(list) {\n let deferred = this.$q.defer();\n let cachedList = [];\n let listToFetch = [];\n\n _.each(list, (id) => {\n let processedId = id.replace('@', '');\n let cachedData = this.CacheService.get(processedId);\n\n if (!cachedData) {\n listToFetch.push(processedId);\n } else {\n cachedList.push(cachedData);\n }\n });\n\n if (listToFetch.length === 0) {\n deferred.resolve({\n data: cachedList\n });\n } else {\n this.$injector.get('$http').post(this.Config.API_ROOT + '/entity/bulkRetrieve', {\n entities: listToFetch,\n configVersion: this.Config.configVersion\n }).then(function (response) {\n let result = response.data;\n\n _.each(cachedList, function (cachedItem) {\n result.push(cachedItem);\n result.entities.push(cachedItem);\n });\n\n deferred.resolve({\n data: result\n });\n });\n }\n\n return deferred.promise;\n }\n\n public getItem(itemData) {\n let entity = itemData.split(':')[0].replace('@', '');\n let id = itemData.split(':')[1];\n let related = [];\n\n if (entity === 'SamlAuthenticationProviderConfiguration' || entity === 'SamlAuthorizationProviderConfiguration' || entity === 'SamlLogoutProviderConfiguration') {\n related.push('samlMetadataInfo');\n }\n if (entity === 'OAuthAuthenticationProviderConfiguration' || entity === 'OAuthAuthorizationProviderConfiguration') {\n related.push('oAuthConsumerCredentials');\n }\n if (entity === 'OAuth2AuthenticationProviderConfiguration') {\n related.push('oAuth2EndpointConfiguration');\n }\n if (entity.indexOf('ProviderConfiguration') !== -1) {\n related.push('owner');\n }\n return this.$injector.get('$http').get(this.Config.API_ROOT + '/entity/' + entity + '/' + id, {\n related: related\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/BulkService.ts","export class PushService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getDiffData(data) {\n return this.$http.post(this.Config.API_ROOT + '/config/diff/update', data);\n }\n\n public pushChanges(data, message) {\n return this.$http.post(this.Config.API_ROOT + '/entity/update', {\n message: message,\n entityPayloads: data\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/PushService.ts","export class TMSIdService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getDefaultTMSIdMap() {\n let url = this.Config.API_ROOT + '/entity/TMSIdMap/default';\n return this.$http.get(url);\n }\n\n public getMVPDTMSIdMap(tmsidmap) {\n let url = this.Config.API_ROOT + '/entity/TMSIdMap/' + tmsidmap;\n return this.$http.get(url);\n }\n\n public getTmsIdsList() {\n let url = this.Config.API_ROOT + '/entity/RootEntityList/TMSIdMap';\n return this.$http.get(url);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/TMSIdService.ts","import * as angular from \"angular\";\n\nexport class CacheService {\n private cache;\n private httpServiceCache;\n\n constructor($cacheFactory) {\n \"ngInject\";\n this.cache = $cacheFactory('apcCache');\n this.httpServiceCache = $cacheFactory('httpServiceCache');\n }\n\n public put(key, value) {\n if (this.get('@' + key) === null) {\n let initialData = value === undefined ? null : angular.copy(value);\n\n this.cache.put('@' + key, initialData);\n }\n\n this.cache.put(key, value === undefined ? null : value);\n }\n\n public get(key) {\n let value = this.cache.get(key);\n\n return (angular.isDefined(value)) ? value : null;\n }\n\n public getInfo() {\n return this.cache.info();\n }\n\n public getHttpServiceCache() {\n return this.httpServiceCache;\n }\n\n public reset() {\n this.cache.removeAll();\n this.httpServiceCache.removeAll();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/CacheService.ts","import * as _ from \"lodash\";\n\n/**\n * @class ChannelService\n * @memberOf module:data\n * @static\n * @param {Object} $http - Angular http service\n * @description Fetch ServiceProvider data. Supports pagination, searching and sorting\n */\nexport class ChannelService {\n constructor(private $http, private Config, private CacheService) {\n \"ngInject\";\n }\n\n /**\n * @memberOf module:data.ChannelService\n * @param {Number} pageNumber - Page number\n * @param {String} sortField - Field to sort. If null no sorting will be applied.\n * @param {String} sortOrder - Sort order. 'ASC' or 'DESC'. If null no sorting will be applied.\n * @param {String} searchTerm - What to search for. If null or shorter than 3 characters, no searching will be applied.\n * @returns {HttpPromise}\n */\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n let url = this.Config.API_ROOT + '/entity/ServiceProvider?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\n\n if (searchTerm && searchTerm.trim().length >= 1) {\n url += '&query=' + searchTerm;\n }\n\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\n url += '&sorting=' +\n _.map(\n sortField.split(\",\"),\n (field) => {\n return field + \":\" + sortOrder;\n }\n ).join(',');\n }\n\n return this.$http.get(url);\n }\n\n public getItem(id) {\n return this.$http.get(this.Config.API_ROOT + '/entity/ServiceProvider/' + id);\n }\n\n public getAll() {\n return this.$http.get(this.Config.API_ROOT + '/entity/ServiceProvider');\n }\n\n /**\n * Returns a list of all channel domains\n */\n public getDomains(channel) {\n let domains = [];\n channel.domains.forEach(function (domain) {\n domains.push(domain.domainName.toLowerCase());\n });\n return domains.sort();\n }\n\n public getNewProviders() {\n return this.CacheService.get(\"New:ServiceProvider\");\n }\n\n public getNewServiceProviderModel() {\n return {\n entityData: {\n analyticsConfigs: [],\n certificates: {},\n clientData: {},\n configuration: {\n default: {}\n },\n domains: [{\n \"id\": \"adobe.com\",\n \"domainName\": \"adobe.com\",\n \"idpInitiated\": false\n }],\n errorReporting: true,\n defaultRedirectUrl: null,\n integrations: {},\n manglers: {},\n pipelineStageList: {},\n privateKeys: {},\n userMetadataEncryptionCertificateId: null,\n usermetadataHashSeed: null,\n mediaCompanyMapping: null,\n additionalTokenFormat: [],\n customSchemes: [],\n permissions: null\n }\n };\n }\n\n public getNewContentProviderModel() {\n return {\n entityData: {\n channels: null\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ChannelService.ts","import * as _ from \"lodash\";\n\nexport class PlatformService {\n constructor(private $q, private $http, private Config) {\n \"ngInject\";\n }\n\n public getAll() {\n let deferred = this.$q.defer();\n\n this.$http.get(this.Config.API_ROOT + '/entity/Platform').then(\n (response) => {\n response.data.entities = _.sortBy(response.data.entities, (item: any) => {\n return item.entityData.name;\n });\n deferred.resolve(response);\n }\n );\n\n return deferred.promise;\n }\n\n public getPlatformDetails() {\n return this.getAll().then(function (response) {\n let platforms = {};\n response.data.entities.forEach(function (entity) {\n let platform: any = {};\n platform.id = entity.entityData.id;\n platform.description = entity.entityData.name;\n platform.enabled = false;\n switch (platform.id) {\n case 'xboxOne':\n platform.icon = 'coral-Icon--game';\n break;\n case 'xbox':\n platform.icon = 'coral-Icon--game';\n break;\n case 'XBOX':\n platform.icon = 'coral-Icon--game';\n break;\n case 'REST':\n platform.icon = 'coral-Icon--deviceDesktop';\n break;\n case 'JS':\n platform.icon = 'coral-Icon--deviceLaptop';\n break;\n case 'Android':\n platform.icon = 'coral-Icon--android';\n break;\n case 'roku':\n platform.icon = 'coral-Icon--deviceTV';\n break;\n case 'tvOS':\n platform.icon = 'coral-Icon--apple';\n break;\n case 'fireTV':\n platform.icon = 'coral-Icon--android';\n break;\n default:\n platform.icon = 'coral-Icon--devices';\n break;\n }\n platforms[platform.id] = platform;\n });\n return platforms;\n });\n }\n\n public getNewModel(selectedPlatform, integrationData) {\n let model = {\n key: 'PlatformConfiguration:' + integrationData.entityData.id + '_' + selectedPlatform,\n version: 1,\n entityData: {\n id: integrationData.entityData.id + '_' + selectedPlatform,\n clientData: {},\n pipelineStageList: {},\n manglers: {},\n integrationConfiguration: '@' + integrationData.key,\n platform: '@Platform:' + selectedPlatform,\n configuration: {\n default: {}\n },\n enabledPlatformServices: false,\n enforcePlatformPermissions: true\n }\n };\n\n return model;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/PlatformService.ts","import * as _ from \"lodash\";\n\nexport class ProgrammerService {\n constructor(private $http, private Config, private CacheService) {\n \"ngInject\";\n }\n\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n let url = this.Config.API_ROOT + '/entity/Programmer?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\n\n if (searchTerm && searchTerm.trim().length >= 1) {\n url += '&query=' + searchTerm;\n }\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\n url += '&sorting=' +\n _.map(\n sortField.split(\",\"),\n (field) => {\n return field + \":\" + sortOrder;\n }\n ).join(',');\n }\n\n return this.$http.get(url);\n }\n\n public getItem(id) {\n return this.$http.get(this.Config.API_ROOT + '/entity/Programmer/' + id, {\n arrayRelated: ['serviceProviders']\n });\n }\n\n public getAll() {\n return this.$http.get(this.Config.API_ROOT + '/entity/Programmer');\n }\n\n /**\n * Merges all programmer domains.\n * Currently, domains can only be added at service provider level.\n */\n public getDomains(serviceProviders) {\n let domains = new Set();\n serviceProviders.forEach(function (serviceProvider) {\n serviceProvider.entityData.domains.forEach(function (domain) {\n domains.add(domain.domainName.toLowerCase());\n });\n });\n return Array.from(domains).sort();\n }\n\n public getNewProgrammers() {\n return this.CacheService.get(\"New:Programmer\");\n }\n\n public getNewProgrammerModel() {\n return {\n entityData: {\n allowedRoles: [\"SERVICE_PROVIDER\", \"CONTENT_PROVIDER\"],\n certificates: null,\n clientData: null,\n configuration: null,\n contentProviders: [],\n logoUrl: null,\n manglers: null,\n parent: null,\n pipelineStageList: null,\n platformSettings: null,\n privateKeys: null,\n serviceProviders: [],\n customSchemes: [],\n imsOrgIds: [],\n featureFlags : {},\n applications: [],\n userMetadataEncryptionCertificateId: null,\n permissions: null\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ProgrammerService.ts","import * as angular from \"angular\";\nimport * as _ from \"lodash\";\n\nexport class DataCollectorService {\n private scope;\n private collectorObject;\n private debounceList;\n\n constructor(private $rootScope, private $timeout, private CacheService, private $http, private $window, private Config, private NotificationService, private UserService) {\n \"ngInject\";\n this.scope = this.$rootScope.$new();\n this.scope.hasData = false;\n this.debounceList = {};\n this.collectorObject = {};\n }\n\n private updateCollector(data, operation) {\n let storedData = {\n entityData: data.entityData,\n entityId: data.key.split(':')[1],\n entityPrefix: data.key.split(':')[0].replace('@', ''),\n operation: operation\n };\n\n if (operation !== 'CREATE') {\n (storedData).previousVersion = data.version;\n }\n\n let storedItem = this.collectorObject[data.key];\n if (storedItem) {\n storedData.operation = storedItem.operation;\n if (storedItem.operation === 'CREATE') {\n delete (storedData).previousVersion;\n }\n }\n\n this.collectorObject[data.key] = storedData;\n if (angular.equals(storedData.entityData, this.CacheService.get('@' + data.key).entityData) && storedData.operation !== 'CREATE') {\n delete this.collectorObject[data.key];\n } else {\n if (!this.debounceList[data.key]) {\n this.debounceList[data.key] = {};\n }\n\n if (!this.debounceList[data.key].debounced) {\n let checkForConflicts = () => {\n this.$http.get(this.Config.API_ROOT + '/entity/' + storedData.entityPrefix + '/' + storedData.entityId, {\n cache: false,\n latest: true,\n ignoreError: true\n }).then(\n (response) => {\n if (data.version !== response.data.version) {\n delete this.collectorObject[data.key];\n\n this.NotificationService.warnModal('Data conflict', storedData.operation === 'CREATE' ? 'Another user already added the same entity. You need to refresh your data. All changes will be lost.' : 'Another user made a concurrent modification to the same data. You need to refresh your data. All changes will be lost.', {\n backdrop: 'static',\n confirm: true\n }).result.then(\n () => {\n window.onbeforeunload = null;\n this.$window.location.reload();\n }\n );\n }\n },\n (error) => {\n if ((error.status === 404 || error.status === 403) && storedData.operation !== 'CREATE') {\n delete this.collectorObject[data.key];\n\n this.NotificationService.warnModal('Data conflict', 'Another user deleted the data you are trying to edit. You need to refresh your data. All changes will be lost.', {\n backdrop: 'static',\n confirm: true\n }).result.then(\n () => {\n window.onbeforeunload = null;\n this.$window.location.reload();\n }\n );\n }\n }\n );\n };\n\n this.debounceList[data.key].debounced = _.debounce(checkForConflicts, 1000, {\n leading: false,\n trailing: true\n });\n }\n\n this.debounceList[data.key].debounced();\n }\n\n this.$timeout(() => {\n // check for errors in page, in case there are any fields containing errors notify there are valid changes\n const errors = $(\"input.ng-invalid.ng-dirty\");\n\n this.scope.hasData = Object.keys(this.collectorObject).length > 0 && errors.length === 0;\n }, 100);\n\n window.onbeforeunload = (event) => {\n event.preventDefault();\n\n if (this.scope.hasData) {\n return \"You have unsaved changes. All of your changes will be lost.\";\n } else {\n return null;\n }\n };\n }\n\n public collector(data) {\n if (this.UserService.hasRole('ROLE_CONSOLE_WRITE')) {\n let _self = this;\n\n return (newValue, oldValue) => {\n if (newValue !== oldValue) {\n let entityType = data.key.split(':')[0].replace('@', '');\n\n if (entityType === 'PlatformConfiguration') {\n let cachedData = this.CacheService.get(data.key);\n if (cachedData) {\n this.updateCollector(data, 'UPDATE');\n this.CacheService.put(data.key, data);\n } else {\n let integration = this.CacheService.get(data.entityData.integrationConfiguration.replace('@', ''));\n\n if (!integration.entityData.platformConfigurations) {\n integration.entityData.platformConfigurations = {};\n }\n\n integration.entityData.platformConfigurations[data.entityData.platform] = '@' + data.key;\n integration.related.platformConfigurations.push(data);\n\n _self.updateEntity(integration);\n _self.createEntity(data);\n }\n } else {\n this.CacheService.put(data.key, data);\n this.updateCollector(data, 'UPDATE');\n }\n }\n };\n }\n }\n\n public updateEntity(entity) {\n if (this.UserService.hasRole('ROLE_CONSOLE_WRITE')) {\n this.CacheService.put(entity.key, entity);\n\n this.updateCollector(entity, 'UPDATE');\n }\n }\n\n public createEntity(entity) {\n if (this.UserService.hasRole('ROLE_CONSOLE_WRITE')) {\n let entityType = entity.key.split(':')[0].replace('@', '');\n let newList = this.CacheService.get('New:' + entityType);\n\n if (!newList) {\n newList = [];\n }\n\n newList.push(entity);\n\n this.CacheService.put('New:' + entityType, newList);\n this.CacheService.put(entity.key, entity);\n\n this.updateCollector(entity, 'CREATE');\n }\n }\n\n public getStoredData() {\n let storedData = angular.copy(_.values(this.collectorObject));\n\n for (let i = 0; i < storedData.length; i++) {\n let item: any = storedData[i];\n\n if (item.entityPrefix === 'PlatformConfiguration') {\n delete item.entityData.authenticationProviderConfiguration;\n delete item.entityData.authorizationProviderConfiguration;\n delete item.entityData.logoutProviderConfiguration;\n delete item.entityData.serviceProvider;\n delete item.entityData.owner;\n }\n }\n\n return storedData;\n }\n\n public getScope() {\n return this.scope;\n }\n\n public reset() {\n window.onbeforeunload = null;\n this.scope.hasData = false;\n this.collectorObject = {};\n this.debounceList = {};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/DataCollectorService.ts","export class LocalConfigurationService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getLocalConfiguration () {\n let url = this.Config.API_ROOT + '/entity/LocalConfiguration';\n return this.$http.get(url);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/LocalConfigurationService.ts","import * as _ from \"lodash\";\n\nexport class IntegrationService {\n constructor(private $http, private Config, private CacheService) {\n \"ngInject\";\n }\n\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n let url = this.Config.API_ROOT + '/entity/IntegrationConfiguration?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE;\n\n if (searchTerm && searchTerm.trim().length >= 1) {\n url += '&query=' + searchTerm;\n }\n if (sortField && sortField.trim().length > 0 && sortOrder && sortOrder.trim().length > 0) {\n url += '&sorting=' +\n _.map(\n sortField.split(\",\"),\n (field) => {\n return field + \":\" + sortOrder;\n }\n ).join(',');\n }\n\n return this.$http.get(url, {\n related: ['owner', 'serviceProvider']\n });\n }\n\n public getItem(id) {\n return this.$http.get(this.Config.API_ROOT + '/entity/IntegrationConfiguration/' + id, {\n related: ['owner', 'serviceProvider', 'authenticationProviderConfiguration', 'authorizationProviderConfiguration', 'logoutProviderConfiguration'],\n arrayRelated: ['platformConfigurations']\n });\n }\n\n public getAllIntegrations() {\n let url = this.Config.API_ROOT + '/entity/IntegrationConfiguration?pageNumber=1&pageSize=';\n let totalIntegrations = 0;\n return this.$http.get(url + this.Config.PAGE_SIZE).then((response) => {\n totalIntegrations = response.data.count;\n url += totalIntegrations;\n return this.$http.get(url);\n });\n }\n\n public getNewList() {\n return this.CacheService.get('New:IntegrationConfiguration');\n }\n\n public getNewModel() {\n let model = {\n key: 'IntegrationConfiguration:new',\n version: 1,\n entityData: {\n id: 'new',\n enabled: null,\n clientData: {},\n manglers: {},\n mvpdResourceFormat: null,\n pipelineStageList: {},\n platformConfigurations: {},\n platformTraitConfigurations: {},\n configuration: {\n default: {}\n },\n userMetadata: null\n }\n };\n\n return model;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/IntegrationService.ts","export class HistoryService {\n constructor(private $http, private Config, private DownloadService) {\n \"ngInject\";\n }\n\n /**\n * @class HistoryResponseTransformer\n * @memberOf module:data\n * @param {Object} data - data from server\n * @returns {Object} Transformed data\n * @description Adds a default message to configuration save information is none was specified and flags the history entry as an \"Import from Core\" if that's the case.\n */\n private HistoryResponseTransformer(response) {\n let data = response.configurationInformationList || [];\n\n for (let i = 0; i < data.length; i++) {\n let dataNode = data[i];\n if (!dataNode.configurationSaveInformation.message || dataNode.configurationSaveInformation.message.trim().length === 0) {\n dataNode.configurationSaveInformation.message = (dataNode.configurationPushInformation) ? 'No message was specified' : 'Import from Core';\n }\n\n if (dataNode.configurationPushInformation) {\n switch (dataNode.configurationPushInformation.pushResultStatus) {\n case 'SUCCESS':\n break;\n case 'SUCCESS_DIFFERENT_MODEL_SERIAL_ID':\n dataNode.configurationPushInformation.pushResultStatus = 'SUCCESS*';\n break;\n default:\n dataNode.configurationPushInformation.pushResultStatus = 'FAILED';\n break;\n }\n }\n }\n response.configurationInformationList = data;\n\n return response;\n };\n\n /**\n * @memberOf module:data.HistoryService\n * @see {@link module:data.HistoryResponseTransformer}\n * @returns {HttpPromise} Parsed data from server. See {@link module:data.HistoryResponseTransformer}\n * @description Fetch all configuration push history from server.\n */\n public getAll() {\n return this.$http.get(this.Config.API_ROOT + '/config/history', {\n cache: false,\n transformResponse: this.$http.defaults.transformResponse.concat([this.HistoryResponseTransformer])\n });\n }\n\n /**\n * @memberOf module:data.HistoryService\n * @see {@link module:data.HistoryResponseTransformer}\n * @returns {HttpPromise} Parsed data from server. See {@link module:data.HistoryResponseTransformer}\n * @description Fetch paginated configuration push history from server.\n */\n public getPage(pageNumber) {\n return this.$http.get(this.Config.API_ROOT + '/config/history?pageNumber=' + pageNumber + '&pageSize=' + this.Config.PAGE_SIZE, {\n cache: false,\n transformResponse: this.$http.defaults.transformResponse.concat([this.HistoryResponseTransformer])\n });\n }\n\n /**\n * @memberOf module:data.HistoryService\n * @see {@link module:data.HistoryResponseTransformer}\n * @returns {HttpPromise} Parsed data from server. See {@link module:data.HistoryResponseTransformer}\n * @description Fetch last 5 successful configurations\n */\n public getRecent() {\n return this.$http.get(this.Config.API_ROOT + '/config/history?pushStatus=SUCCESS&pageNumber=1&pageSize=5', {\n cache: false,\n transformResponse: this.$http.defaults.transformResponse.concat([this.HistoryResponseTransformer])\n });\n }\n\n /**\n * @memberOf module:data.HistoryService\n * @see {@link module:core.DownloadService}\n * @param {Number} configurationVersion - Configuration version to export\n * @description Exports a specific configuration file JSON format\n */\n public exportConfiguration(configurationVersion) {\n let url = this.Config.API_ROOT + '/admin/download?version=' + configurationVersion;\n this.DownloadService.download(url);\n }\n\n /**\n * @memberOf module:data.HistoryService\n * @see {@link module:core.DownloadService}\n * @param {Number} configurationVersion - Configuration version to export\n * @description Exports a specific configuration file ZIP format\n */\n public exportZipConfiguration(configurationVersion) {\n let url = this.Config.API_ROOT + '/admin/downloadSplit?version=' + configurationVersion;\n this.DownloadService.download(url);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/HistoryService.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2018 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as uuid from \"uuid\";\n\nexport class ApplicationService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public getItem(id) {\n return this.$http.get(this.Config.API_ROOT + '/entity/RegisteredApplication/' + id);\n }\n\n public getAll() {\n return this.$http.get(this.Config.API_ROOT + '/entity/RegisteredApplication');\n }\n\n public getAllProgrammerApps(programmerId) {\n return this.$http.get(this.Config.API_ROOT + '/applications?programmer=' + programmerId);\n }\n\n public getAllChannelApps(programmerId, channelId) {\n return this.$http.get(this.Config.API_ROOT + '/applications?programmer=' + programmerId + \"&channel=\" + channelId);\n }\n\n public getApplicationDefinition(typeValue) {\n return {\n entityData: {\n id: uuid.v4(),\n name: null,\n owner: null,\n version: \"1.0.0\",\n platformTraitIdentifiers: [],\n platforms: [],\n redirectUrls: [],\n serviceProviders: [],\n type : typeValue,\n scopes: null,\n externalConfiguration: null\n }\n };\n }\n\n public getApplicationTypes() {\n return this.$http.get(this.Config.API_ROOT + '/entity/enum/RegisteredApplicationType');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ApplicationService.ts","export class ConfigVersionInterceptor {\n constructor(private Config) {}\n\n request = (config) => {\n if (config.url.indexOf('entity') !== -1 && !config.latest) {\n let url:any = new URI(config.url);\n let query = url.search(true);\n query.configurationVersion = this.Config.configVersion;\n url.search(query);\n config.url = url.toString();\n }\n return config;\n };\n\n static getInstance(Config){\n \"ngInject\";\n return new ConfigVersionInterceptor(Config);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/interceptor/ConfigVersionInterceptor.ts","import * as angular from \"angular\";\n\nexport class CacheInterceptor {\n constructor(private Config, private CacheService) {\n }\n\n static getInstance(Config, CacheService) {\n \"ngInject\";\n return new CacheInterceptor(Config, CacheService);\n }\n\n request = (config) => {\n if (!config.latest && (config.url.indexOf(this.Config.API_ROOT + '/entity') !== -1 || config.url.indexOf(this.Config.API_ROOT + '/config/manglers') !== -1) && config.url !== this.Config.API_ROOT + '/entity/bulkRetrieve' && config.url !== this.Config.API_ROOT + '/entity/update') {\n config.cache = true;\n }\n return config;\n }\n\n response = (response) => {\n if (response.config.cache === true && !response.config.latest && response.config.url.indexOf(this.Config.API_ROOT + '/entity') !== -1 && response.config.url && response.config.url !== this.Config.API_ROOT + '/entity/update') {\n response = this.getCachedResponse(response);\n }\n return response;\n }\n\n private getCachedResponse(response) {\n if (response.data && response.data.entityData) {\n var cachedItem = this.CacheService.get(response.data.key);\n if (cachedItem) {\n response.data = cachedItem;\n } else {\n this.CacheService.put(response.data.key, response.data);\n }\n } else if (response.data) {\n if (angular.isArray(response.data)) {\n response.data.entities = response.data;\n }\n var list = response.data.entities;\n for (var i = 0; i < list.length; i++) {\n var entity = list[i];\n if(entity.key !== undefined){\n var cachedData = this.CacheService.get(entity.key);\n if (cachedData) {\n list[i] = cachedData;\n } else {\n this.CacheService.put(entity.key, entity);\n }\n }\n }\n }\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/interceptor/CacheInterceptor.ts","export class PushStatusInterceptor {\n private timeout;\n\n constructor(private $q, private $injector, private $timeout, private States, private Config, private NotificationService, private $rootScope) { }\n\n static getInstance($q, $injector, $timeout, States, Config, NotificationService, $rootScope) {\n \"ngInject\";\n return new PushStatusInterceptor($q, $injector, $timeout, States, Config, NotificationService, $rootScope);\n }\n\n response = (response) => {\n let deferred = this.$q.defer();\n if (response.config.url.indexOf('entity/update') !== -1 || response.config.url.indexOf('admin/import') !== -1 || response.config.url.indexOf('pull') !== -1) {\n this.checkPushStatus(response, deferred);\n } else {\n deferred.resolve(response);\n }\n return deferred.promise;\n}\n\n private checkPushStatus (response, deferred) {\n let http = this.$injector.get('$http');\n\n let pushInfo = response.data.configurationPushInformation;\n if (pushInfo) {\n let state = this.$injector.get('$state');\n if (pushInfo.pushResultStatus === 'SUCCESS') {\n state.go(this.States.History.name, {\n reset: true,\n highlight: response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion\n });\n } else {\n state.go(this.States.History.name, {\n reset: true,\n highlight: response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion\n });\n\n this.$rootScope.appLoading = false;\n this.NotificationService.error(\"Push failed due to a network error. Please contact Adobe Primetime Support.\");\n }\n } else {\n http.get(this.Config.API_ROOT + '/config/info?configurationVersion=' + (response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion), {cache: false}).then((checkResponse) => {\n this.timeout = this.$timeout(() => {\n this.checkPushStatus(checkResponse, deferred);\n }, 1000);\n });\n }\n this.Config.configVersion = response.data.configurationVersion || response.data.configurationSaveInformation.configurationVersion;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/interceptor/PushStatusInterceptor.ts","import * as _ from \"lodash\";\nimport * as angular from \"angular\";\n\nexport class RelatedDataInterceptor {\n constructor(private $q, private BulkService, private CacheService) {\n }\n\n static getInstance($q, BulkService, CacheService) {\n \"ngInject\";\n return new RelatedDataInterceptor($q, BulkService, CacheService);\n }\n\n response = (response) => {\n if (response.config.related || response.config.arrayRelated) {\n let deferred = this.$q.defer();\n let relatedList = _.union(response.config.related, response.config.arrayRelated);\n let processedData = this.getIdList(response.data, relatedList);\n let idsToFetch = processedData.list;\n this.BulkService.getBulk(idsToFetch).then((relatedResponse) => {\n relatedResponse.data = _.union(relatedResponse.data.entities, processedData.cachedList);\n let relatedData = {};\n for (let i = 0; i < relatedResponse.data.length; i++) {\n let relatedItem = relatedResponse.data[i];\n relatedData['@' + relatedItem.key] = relatedItem;\n }\n if (response.config.arrayRelated) {\n for (let property in response.config.arrayRelated) {\n let propertyName = response.config.arrayRelated[property];\n relatedData[propertyName] = [];\n let idList = response.data.entityData[propertyName];\n for (let relatedEntity in idList) {\n if (relatedData[idList[relatedEntity]]) {\n relatedData[propertyName].push(relatedData[idList[relatedEntity]]);\n }\n }\n }\n }\n if (response.data) {\n response.data.related = relatedData;\n let cachedData = this.CacheService.get(response.data.key);\n if (cachedData) {\n cachedData.related = relatedData;\n this.CacheService.put(response.data.key, cachedData);\n }\n }\n deferred.resolve(response);\n });\n return deferred.promise;\n } else {\n return response;\n }\n }\n\n private getMultipleIdList(data, relatedProperties) {\n let result = {\n list: [],\n cachedList: []\n };\n if (data && data.entities) {\n for (let i = 0; i < data.entities.length; i++) {\n let item = data.entities[i].entityData;\n for (let j = 0; j < relatedProperties.length; j++) {\n let cachedData = this.CacheService.get(item[relatedProperties[j]].replace('@', ''));\n if (cachedData) {\n result.cachedList.push(cachedData);\n } else {\n result.list.push(item[relatedProperties[j]]);\n }\n }\n }\n }\n return result;\n }\n\n private getIdList(data, relatedProperties) {\n let result = {\n list: [],\n cachedList: []\n };\n if (data && data.entityData) {\n for (let i = 0; i < relatedProperties.length; i++) {\n let property = data.entityData[relatedProperties[i]];\n if (property) {\n if (angular.isObject(property)) {\n property = _.values(property);\n }\n if (angular.isArray(property)) {\n for (let j = 0; j < property.length; j++) {\n let cachedItemData = this.CacheService.get(property[j].replace('@', ''));\n if (cachedItemData) {\n result.cachedList.push(cachedItemData);\n } else {\n result.list.push(property[j]);\n }\n }\n } else {\n let cachedData = this.CacheService.get(property.replace('@', ''));\n if (cachedData) {\n result.cachedList.push(cachedData);\n } else {\n result.list.push(data.entityData[relatedProperties[i]]);\n }\n }\n }\n }\n } else {\n result = this.getMultipleIdList(data, relatedProperties);\n }\n result.list = _.uniq(result.list);\n result.cachedList = _.uniq(result.cachedList);\n return result;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/interceptor/RelatedDataInterceptor.ts","export class ResilienceInterceptor {\n constructor(private Config, private ResilienceService, private NotificationService) {\n }\n\n static getInstance(Config, ResilienceService, NotificationService) {\n \"ngInject\";\n return new ResilienceInterceptor(Config, ResilienceService, NotificationService);\n }\n\n response = (response) => {\n if (response.config.url && response.config.url.indexOf(this.Config.API_ROOT + '/entity') !== -1 && response.config.url !== this.Config.API_ROOT + '/entity/bulkRetrieve' && response.config.url !== this.Config.API_ROOT + '/entity/update') {\n if (response.data && response.data.resilienceState !== undefined && response.config.url.indexOf(this.Config.API_ROOT + '/entity/Platform') === -1) {\n this.ResilienceService.setResilienceState(response.data.resilienceState);\n\n if (response.data.resilienceState) {\n this.NotificationService.errorWithHelperLink(\"Degraded state\", \"Only search and sort functionality is affected. \", this.ResilienceService.getTroubleshootingLink());\n } else {\n this.NotificationService.removeError(\"Degraded state\");\n }\n }\n }\n return response;\n}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/interceptor/ResilienceInterceptor.ts","export class RetryableRequestInterceptor {\n constructor(private $q, private $injector) {\n }\n\n static getInstance($q, $injector) {\n \"ngInject\";\n return new RetryableRequestInterceptor($q, $injector);\n }\n\n responseError = (response) => {\n let count = (response.config.retryCount) ? response.config.retryCount + 1 : 1;\n if (response.data && response.data.additionalInfo && response.data.additionalInfo.retry && count <= 10) {\n let http = this.$injector.get('$http');\n switch (response.config.method) {\n case 'GET':\n http.get(response.config.url, {retryCount: count});\n break;\n case 'POST':\n http.post(response.config.url, response.config.data, {retryCount: count});\n break;\n }\n }\n return this.$q.reject(response);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/interceptor/RetryableRequestInterceptor.ts","export class CertificateUtils {\n\n public getUserMetadataEncryptionCertificateId(encryptionLevel: EncryptionLevel, encryptionCertificateSetAt: EncryptionLevel, channelEncryptionCertificateId: string, programmerEncryptionCertificateId: string) {\n switch (encryptionLevel) {\n case EncryptionLevel.CHANNEL :\n return encryptionCertificateSetAt === EncryptionLevel.CHANNEL ? channelEncryptionCertificateId : programmerEncryptionCertificateId;\n case EncryptionLevel.PROGRAMMER :\n return programmerEncryptionCertificateId;\n }\n };\n\n public getUserMetadataEncryptionCertificateSerialNumber(encryptionLevel: EncryptionLevel, encryptionCertificateSetAt: EncryptionLevel, channelEncryptionCertificateSerialNo: string, programmerEncryptionCertificateSerialNo: string) {\n switch (encryptionLevel) {\n case EncryptionLevel.CHANNEL :\n return encryptionCertificateSetAt === EncryptionLevel.CHANNEL ? channelEncryptionCertificateSerialNo : programmerEncryptionCertificateSerialNo;\n case EncryptionLevel.PROGRAMMER :\n return programmerEncryptionCertificateSerialNo;\n }\n };\n\n /**\n * Corrects the certificate content by removing any whitespaces or new lines and adding\n * \"-----BEGIN CERTIFICATE-----\" and \"-----END CERTIFICATE-----\"\n */\n public normalizeContent(content: string) {\n return '-----BEGIN CERTIFICATE-----' + '\\n' +\n content\n .replace('-----BEGIN CERTIFICATE-----', '')\n .replace('-----END CERTIFICATE-----', '')\n .replace(/(\\r\\n|\\n|\\r)/gm, '') +\n '\\n' + '-----END CERTIFICATE-----' + '\\n';\n }\n}\n\nexport enum EncryptionLevel {\n CHANNEL,\n PROGRAMMER\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/CertificateUtils.ts","export class CustomSchemeService {\n constructor(private $http, private Config) {\n \"ngInject\";\n }\n\n public generateCustomSchemeForChannel(channelId) {\n return this.$http.post(this.Config.API_ROOT + '/schemes/serviceProvider/' + channelId);\n }\n\n public generateCustomSchemeForProgrammer(programmerId) {\n return this.$http.post(this.Config.API_ROOT + '/schemes/programmer/' + programmerId);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/CustomSchemeService.ts","import * as _ from \"lodash\";\n\nexport class ReportService {\n public finalData;\n public selectedReport;\n public selectedMvpdsList;\n public selectedChannelsList;\n private pageSize;\n public integrationList;\n\n // Compute related configurations (e.g. PLATFORM, ENDPOINT, MVPD, etc.)\n private configuration;\n\n constructor(private $q, private BulkService) {\n \"ngInject\";\n this.configuration = {};\n this.finalData = [];\n this.pageSize = 20;\n this.selectedMvpdsList = [];\n this.selectedChannelsList = [];\n this.BulkService = BulkService;\n }\n\n public getPage(pageNumber, sortField, sortOrder, searchTerm) {\n var self = this;\n\n return this.$q(function(resolve) {\n let paginatedData = self.finalData.slice((pageNumber - 1) * self.pageSize, pageNumber * self.pageSize);\n\n let reportData;\n\n if (self.selectedReport.id === 'authnReport' || self.selectedReport.id === 'authzReport' ) {\n self.getTTLReportData(paginatedData, self.selectedReport.id).then((response) => {\n reportData = response;\n }).then(() => {\n resolve({\n data: {\n entities: reportData,\n count: self.finalData.length\n }\n });\n });\n } else {\n self.getSSOReportData(paginatedData).then((response) => {\n reportData = response;\n }).then(() => {\n resolve({\n data: {\n entities: reportData,\n count: self.finalData.length\n }\n });\n });\n }\n });\n }\n\n public processTTL(ttl) {\n let SECONDS_IN_DAY = 86400;\n let SECONDS_IN_HOUR = 3600;\n let SECONDS_IN_MINUTE = 60;\n\n let asString = \"\";\n\n let days = Math.floor(ttl / SECONDS_IN_DAY);\n let secondsRemainder = ttl % SECONDS_IN_DAY;\n\n let hours = Math.floor(secondsRemainder / SECONDS_IN_HOUR);\n secondsRemainder = secondsRemainder % SECONDS_IN_HOUR;\n\n let minutes = Math.floor(secondsRemainder / SECONDS_IN_MINUTE);\n secondsRemainder = secondsRemainder % SECONDS_IN_MINUTE;\n\n let seconds = secondsRemainder;\n\n if (days === 1) {\n asString += days + \" day \";\n } else if (days > 1) {\n asString += days + \" days \";\n }\n if (hours === 1) {\n asString += hours + \" hour \";\n } else if (hours > 1) {\n asString += hours + \" hours \";\n }\n if (minutes === 1) {\n asString += minutes + \" minute \";\n } else if (minutes > 1) {\n asString += minutes + \" minutes \";\n }\n if (seconds === 1) {\n asString += seconds + \" second\";\n } else if (seconds > 1) {\n asString += seconds + \" seconds\";\n }\n\n return asString;\n }\n\n // Consider the fallowing inheritance chain tree:\n //\n // CHANNEL\n // -> MVPD\n // -> ENDPOINT\n // -> INTEGRATION\n // -> PLATFORM\n //\n public async getTTLReportData(integrations: any, reportType: string) {\n const deferred = this.$q.defer();\n\n let reportData = [];\n\n //\n // TTL report contains the following columns:\n //\n // 'mobileOthers' - REST platform configuration\n // 'tvcdOthers' - REST platform configuration\n // 'JS' - JS platform configuration\n // 'iOS' - iOS platform configuration\n // 'Android' - Android platform configuration\n // 'roku' - roku platform configuration\n // 'fireTV' - fireTV platform configuration\n // 'tvOS' - tvOS platform configuration\n // 'unknown' - N/A\n //\n\n let reportColumns = ['JS', 'iOS', 'Android', 'mobileOthers', 'roku', 'fireTV', 'tvOS', 'tvcdOthers', 'unknown'];\n\n //\n // We will try to compute the TTL value from the following levels and order:\n //\n // - PLATFORM (1)\n // - INTEGRATION (2)\n // - ENDPOINT (3)\n // - MVPD (4)\n //\n // We will stop when all TTL report columns are populated with data.\n //\n for await(const integration of integrations) {\n let authnTTLMap = {};\n let authzTTLMap = {};\n\n // Compute related configurations (e.g. PLATFORM, ENDPOINT, MVPD, etc.)\n let related = _.values(integration.entityData.platformConfigurations);\n\n if (!this.configuration[integration.entityData.owner.split('@')[1]]) {\n related.push(integration.entityData.owner);\n }\n if (reportType === 'authnReport' && !this.configuration[integration.entityData.authenticationProviderConfiguration.split('@')[1]]) {\n related.push(integration.entityData.authenticationProviderConfiguration);\n }\n if (reportType === 'authzReport' && !this.configuration[integration.entityData.authorizationProviderConfiguration.split('@')[1]]) {\n related.push(integration.entityData.authorizationProviderConfiguration);\n }\n\n // Fetch related entities configurations\n const [entities] = await Promise.all([this.BulkService.getBulk(related)]);\n\n if (entities.data) {\n entities.data.forEach(entity => {\n this.configuration[entity.key] = entity.entityData;\n });\n }\n\n //////////////////\n // PLATFORM\n //////////////////\n if (integration.entityData.platformConfigurations) {\n for (const key in integration.entityData.platformConfigurations) {\n const platformName = key.split(':')[1];\n\n if (reportColumns.includes(platformName) || platformName === 'REST') {\n const platformId = integration.entityData.platformConfigurations[key].split('@')[1];\n\n // Compute AUTHN_TLL from PLATFORM\n if (reportType === 'authnReport' &&\n this.configuration[platformId].configuration.default &&\n this.configuration[platformId].configuration.default.authn_ttl) {\n let authnTTLPlatform = this.processTTL(this.configuration[platformId].configuration.default.authn_ttl);\n\n if (platformName === \"REST\") {\n authnTTLMap['mobileOthers'] = authnTTLPlatform;\n authnTTLMap['tvcdOthers'] = authnTTLPlatform;\n } else {\n authnTTLMap[platformName] = authnTTLPlatform;\n }\n }\n\n // Compute AUTHZ_TLL from PLATFORM\n if (reportType === 'authzReport' &&\n this.configuration[platformId].configuration.default &&\n this.configuration[platformId].configuration.default.authz_ttl) {\n let authzTTLPlatform = this.processTTL(this.configuration[platformId].configuration.default.authz_ttl);\n\n if (platformName === \"REST\") {\n authzTTLMap['mobileOthers'] = authzTTLPlatform;\n authzTTLMap['tvcdOthers'] = authzTTLPlatform;\n } else {\n authzTTLMap[platformName] = authzTTLPlatform;\n }\n }\n }\n }\n }\n\n //\n // Use this variable to know after what level to stop from computing the AUTHN_TTL and AUTHZ_TTL\n //\n // It is 'false' at this point because the 'unknown' key does not have a PLATFORM level configuration\n // Also, the configuration might have multiple missing PLATFORM level configurations\n //\n let stop: boolean = false;\n\n //////////////////\n // INTEGRATION\n //////////////////\n if (!stop) {\n // Hope we will stop after INTEGRATION level\n stop = true;\n\n let authnTTLIntegration = undefined;\n let authzTTLIntegration = undefined;\n\n // Compute AUTHN_TLL from INTEGRATION\n if (reportType === 'authnReport' &&\n integration.entityData.configuration.default &&\n integration.entityData.configuration.default.authn_ttl) {\n authnTTLIntegration = this.processTTL(integration.entityData.configuration.default.authn_ttl);\n }\n\n // Compute AUTHZ_TLL from INTEGRATION\n if (reportType === 'authzReport' &&\n integration.entityData.configuration.default &&\n integration.entityData.configuration.default.authz_ttl) {\n authzTTLIntegration = this.processTTL(integration.entityData.configuration.default.authz_ttl);\n }\n\n reportColumns.forEach((key) => {\n if (reportType === 'authnReport' && authnTTLMap[key] === undefined && authnTTLIntegration !== undefined) {\n authnTTLMap[key] = authnTTLIntegration;\n }\n\n if (reportType === 'authzReport' && authzTTLMap[key] === undefined && authzTTLIntegration !== undefined) {\n authzTTLMap[key] = authzTTLIntegration;\n }\n\n if ((reportType === 'authnReport' && authnTTLMap[key] === undefined) ||\n (reportType === 'authzReport' && authzTTLMap[key] === undefined)) {\n // We need to keep on looking at ENDPOINT level\n stop = false;\n }\n });\n\n //////////////////\n // ENDPOINT\n //////////////////\n if (!stop) {\n // Hope we will stop after ENDPOINT level\n stop = true;\n\n let authnTTLEndpoint = undefined;\n let authzTTLEndpoint = undefined;\n\n const authnEndpoint = this.configuration[integration.entityData.authenticationProviderConfiguration.split('@')[1]];\n const authzEndpoint = this.configuration[integration.entityData.authorizationProviderConfiguration.split('@')[1]];\n\n // Compute AUTHN_TTL from ENDPOINT\n if (reportType === 'authnReport' &&\n authnEndpoint.configuration.default &&\n authnEndpoint.configuration.default.authn_ttl) {\n authnTTLEndpoint = this.processTTL(authnEndpoint.configuration.default.authn_ttl);\n }\n\n // Compute AUTHZ_TTL from ENDPOINT\n if (reportType === 'authzReport' &&\n authzEndpoint.configuration.default &&\n authzEndpoint.configuration.default.authz_ttl) {\n authzTTLEndpoint = this.processTTL(authzEndpoint.configuration.default.authz_ttl);\n }\n\n reportColumns.forEach((key) => {\n if (reportType === 'authnReport' && authnTTLMap[key] === undefined && authnTTLEndpoint !== undefined) {\n authnTTLMap[key] = authnTTLEndpoint;\n }\n\n if (reportType === 'authzReport' && authzTTLMap[key] === undefined && authzTTLEndpoint !== undefined) {\n authzTTLMap[key] = authzTTLEndpoint;\n }\n\n if ((reportType === 'authnReport' && authnTTLMap[key] === undefined) ||\n (reportType === 'authzReport' && authzTTLMap[key] === undefined)) {\n // We need to keep on looking at MVPD level\n stop = false;\n }\n });\n\n //////////////////\n // MVPD\n //////////////////\n if (!stop) {\n // MVPD is the last level\n stop = true;\n\n let authnTTLMvpd = undefined;\n let authzTTLMvpd = undefined;\n\n const mvpd = this.configuration[integration.entityData.owner.split('@')[1]];\n\n if (mvpd.configuration.default) {\n // Compute AUTHN_TTL from MVPD\n if (reportType === 'authnReport' && mvpd.configuration.default.authn_ttl) {\n authnTTLMvpd = this.processTTL(mvpd.configuration.default.authn_ttl);\n }\n // Compute AUTHZ_TTL from MVPD\n if (reportType === 'authzReport' && mvpd.configuration.default.authz_ttl) {\n authzTTLMvpd = this.processTTL(mvpd.configuration.default.authz_ttl);\n }\n }\n\n reportColumns.forEach((key) => {\n if (reportType === 'authnReport' && authnTTLMap[key] === undefined && authnTTLMvpd !== undefined) {\n authnTTLMap[key] = authnTTLMvpd;\n }\n\n if (reportType === 'authzReport' && authzTTLMap[key] === undefined && authzTTLMvpd !== undefined) {\n authzTTLMap[key] = authzTTLMvpd;\n }\n });\n }\n }\n }\n\n // Compute MVPD display name\n let mvpdName = integration.entityData.owner.split(':')[1];\n const owner = this.selectedMvpdsList.find((mvpd) => mvpd.key === integration.entityData.owner.split('@')[1]);\n mvpdName = (owner && owner.entityData.displayName) || mvpdName;\n\n // Compute Service Provider display name\n let serviceProviderName = integration.entityData.serviceProvider.split(':')[1];\n const serviceProvider = this.selectedChannelsList.find((channel) => channel.key === integration.entityData.serviceProvider.split('@')[1]);\n serviceProviderName = (serviceProvider && serviceProvider.entityData.displayName) || serviceProviderName;\n\n // Return TTL report data\n reportData.push({\n serviceProvider: serviceProviderName,\n mvpd: mvpdName,\n authentication: authnTTLMap,\n authorization: authzTTLMap\n });\n }\n\n deferred.resolve(reportData);\n\n return deferred.promise;\n }\n\n public async getSSOReportData(integrations: any) {\n const deferred = this.$q.defer();\n\n const ssoReportData = [];\n\n for await(const integration of integrations) {\n const mvpd = this.selectedMvpdsList.find((m) => m.entityData.id === integration.entityData.owner.split(\":\")[1]);\n const [mvpdBoardingStatus, configurationEnabled] = await Promise.all([this.getBoardingStatus(mvpd), this.getConfigurationEnabled(integration)]);\n\n const channelSSO = {\n serviceProvider: (this.selectedChannelsList.find((c) => c.entityData.id === integration.entityData.serviceProvider.split(\":\")[1])).entityData.displayName,\n mvpd: mvpd.entityData.displayName\n };\n\n channelSSO[\"JS\"] = this.getSSOStatus(mvpdBoardingStatus.JS, configurationEnabled.JS);\n channelSSO[\"iOS\"] = this.getSSOStatus(mvpdBoardingStatus.iOS, configurationEnabled.iOS);\n channelSSO[\"Android\"] = this.getSSOStatus(mvpdBoardingStatus.Android, configurationEnabled.Android);\n channelSSO[\"mobileOthers\"] = this.getSSOStatus(mvpdBoardingStatus.mobileOthers, configurationEnabled.mobileOthers);\n channelSSO[\"roku\"] = this.getSSOStatus(mvpdBoardingStatus.roku, configurationEnabled.roku);\n channelSSO[\"fireTV\"] = this.getSSOStatus(mvpdBoardingStatus.fireTV, configurationEnabled.fireTV);\n channelSSO[\"tvOS\"] = this.getSSOStatus(mvpdBoardingStatus.tvOS, configurationEnabled.tvOS);\n channelSSO[\"tvcdOthers\"] = this.getSSOStatus(mvpdBoardingStatus.tvcdOthers, configurationEnabled.tvcdOthers);\n channelSSO[\"unknown\"] = this.getSSOStatus(mvpdBoardingStatus.unknown, configurationEnabled.unknown);\n\n ssoReportData.push(channelSSO);\n }\n\n deferred.resolve(ssoReportData);\n\n return deferred.promise;\n }\n\n private getConfigurationEnabled(integration: any) {\n const deferred = this.$q.defer();\n\n const data = {\n channelName: (integration.entityData.serviceProvider).split(\":\")[1],\n mvpdName: (integration.entityData.owner).split(\":\")[1],\n JS: true,\n iOS: false,\n Android: false,\n mobileOthers: false,\n roku: false,\n fireTV: false,\n tvOS: false,\n tvcdOthers: false,\n unknown: true,\n };\n\n if (\"authPerAggregator\" in integration.entityData.clientData) {\n data[\"JS\"] = !integration.entityData.clientData.authPerAggregator;\n data[\"unknown\"] = !integration.entityData.clientData.authPerAggregator;\n }\n\n if (Object.keys(integration.entityData.platformConfigurations).length !== 0) {\n this.BulkService.getBulk(_.values(integration.entityData.platformConfigurations)).then((response) => {\n _.each(response.data, (config) => {\n const platformName = (config.entityData.platform).split(\":\")[1];\n\n if (platformName === \"roku\") {\n data[\"roku\"] = config.entityData.enabledPlatformServices;\n } else if (platformName === \"fireTV\") {\n data[\"fireTV\"] = config.entityData.enabledPlatformServices;\n } else if (platformName === \"iOS\") {\n data[\"iOS\"] = config.entityData.enabledPlatformServices;\n } else if (platformName === \"tvOS\") {\n data[\"tvOS\"] = config.entityData.enabledPlatformServices;\n } else if (platformName === \"Android\") {\n data[\"Android\"] = config.entityData.enabledPlatformServices;\n }\n });\n }).finally(() => {\n deferred.resolve(data);\n });\n } else {\n deferred.resolve(data);\n }\n\n return deferred.promise;\n }\n\n private getSSOStatus(ssoType: string, configurationEnabled: boolean) {\n if (ssoType === \"SUPPORTED\" && configurationEnabled === true) return \"SSO Enabled\";\n else if (ssoType === \"SUPPORTED\" && configurationEnabled === false) return \"SSO Disabled\";\n else if (ssoType === \"UNSUPPORTED\" && configurationEnabled === true) return \"SSO Uncertain\";\n else if (ssoType === \"UNSUPPORTED\" && configurationEnabled === false) return \"SSO Disabled\";\n else if (ssoType === \"PICKER\" && configurationEnabled === true) return \"SSO Uncertain\";\n else if (ssoType === \"PICKER\" && configurationEnabled === false) return \"SSO Disabled\";\n }\n\n private getBoardingStatus(mvpd: any) {\n const deferred = this.$q.defer();\n\n const mvpdBoardingStatus = {\n id: mvpd.entityData.id,\n JS: \"UNSUPPORTED\",\n iOS: \"UNSUPPORTED\",\n Android: \"UNSUPPORTED\",\n mobileOthers: \"UNSUPPORTED\",\n roku: \"UNSUPPORTED\",\n fireTV: \"UNSUPPORTED\",\n tvOS: \"UNSUPPORTED\",\n tvcdOthers: \"UNSUPPORTED\",\n unknown: \"UNSUPPORTED\",\n };\n\n const platformSettings = mvpd.entityData.platformSettings;\n\n this.BulkService.getBulk(platformSettings).then((response) => {\n _.each(response.data, (config) => {\n if (config.entityData.boardingStatus === \"NOT_SUPPORTED\") {\n config.entityData.boardingStatus = \"UNSUPPORTED\";\n }\n\n const platforms = (config.entityData.id).split(\"_\");\n\n if (platforms.indexOf(\"Amazon\") !== -1) {\n mvpdBoardingStatus[\"fireTV\"] = config.entityData.boardingStatus;\n }\n if (platforms.indexOf(\"Apple\") !== -1 || platforms.indexOf(\"iOS\") !== -1) {\n mvpdBoardingStatus[\"iOS\"] = config.entityData.boardingStatus;\n }\n if (platforms.indexOf(\"Apple\") !== -1 || platforms.indexOf(\"tvOS\") !== -1) {\n mvpdBoardingStatus[\"tvOS\"] = config.entityData.boardingStatus;\n }\n });\n }).finally(() => {\n deferred.resolve(mvpdBoardingStatus);\n });\n\n return deferred.promise;\n }\n\n public async getDownloadData(integrationList) {\n var self = this;\n\n return this.$q(function(resolve) {\n let reportData;\n\n if (self.selectedReport.id === 'authnReport' || self.selectedReport.id === 'authzReport') {\n self.getTTLReportData(integrationList, self.selectedReport.id).then((response) => {\n reportData = response;\n }).then(() => {\n resolve({\n data: {\n entities: reportData,\n count: self.finalData.length\n }\n });\n });\n } else {\n self.getSSOReportData(integrationList).then((response) => {\n reportData = response;\n }).then(() => {\n resolve({\n data: {\n entities: reportData,\n count: self.finalData.length\n }\n });\n });\n }\n });\n }\n\n public downloadFile(data) {\n var csvData = this.ConvertToCSV(data);\n\n var a = document.createElement(\"a\");\n a.setAttribute('style', 'display:none;');\n\n document.body.appendChild(a);\n\n var blob = new Blob([csvData], { type: 'text/csv' });\n var url = window.URL.createObjectURL(blob);\n\n a.href = url;\n a.download = 'Report.csv';\n\n a.click();\n }\n\n public prepareDownloadReport(items, currentState, States) {\n var self = this;\n\n const deferred = this.$q.defer();\n\n let downloadData = [];\n\n items.entities.forEach((item) => {\n let data = {};\n\n data[\"CHANNEL\"] = item.serviceProvider;\n data[\"MVPD\"] = item.mvpd;\n\n if (self.selectedReport.id === 'authnReport' || self.selectedReport.id === 'authzReport') {\n item = (currentState === States.ReportAuthnData.name) ? item.authentication : item.authorization;\n }\n\n data[\"BROWSERS\"] = item.JS || \"N/A\";\n data[\"MOBILE: IOS\"] = item.iOS || \"N/A\";\n data[\"MOBILE: ANDROID\"] = item.Android || \"N/A\";\n data[\"MOBILE: OTHERS\"] = item.mobileOthers || \"N/A\";\n data[\"TVCD: ROKU\"] = item.roku || \"N/A\";\n data[\"TVCD: FIRETV\"] = item.fireTV || \"N/A\";\n data[\"TVCD: APPLETV\"] = item.tvOS || \"N/A\";\n data[\"TVCD: OTHERS\"] = item.tvcdOthers || \"N/A\";\n data[\"PLATFORM: UNKNOWN\"] = item.unknown || \"N/A\";\n\n downloadData.push(data);\n });\n\n deferred.resolve(downloadData);\n\n return deferred.promise;\n }\n\n /**\n * @name module:ui.ReportUtils#ConvertToCSV\n * @method\n * @param {Object} objArray Json to be exported to CSV\n * @description Utility method for converting json to CSV {@link module:ui.ReportUtils}\n */\n public ConvertToCSV(objArray: any): string {\n var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;\n var str = '';\n var row = \"\";\n\n for (var index in objArray[0]) {\n // Now convert each value to string and comma-separated\n if (!(index == '$$hashKey')) {\n row += index + ',';\n }\n }\n row = row.slice(0, -1);\n\n //append Label row with line break\n str += row + '\\r\\n';\n\n for (var i = 0; i < array.length; i++) {\n var line = '';\n\n for (var index in array[i]) {\n if (line != '') {\n line += ','\n }\n if (!(index == '$$hashKey')) {\n line += array[i][index];\n }\n }\n\n line = line + ' ';\n line = line.slice(0,-1);\n str += line + '\\r\\n';\n }\n\n return str;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/data/service/ReportService.ts","import {AngularModuleConfig} from '../../common/AngularModule';\nimport {IntegrationEndpointCtrl} from './partial/IntegrationEndpoint/IntegrationEndpoint';\nimport {IntegrationItemCtrl} from './partial/IntegrationItem/IntegrationItem';\nimport {IntegrationItemBasicCtrl} from './partial/IntegrationItemBasic/IntegrationItemBasic';\nimport {IntegrationListCtrl} from './partial/IntegrationList/IntegrationList'\nimport {IntegrationSettingsCtrl} from './partial/IntegrationSettings/IntegrationSettings';\nimport {NewIntegrationCtrl} from './partial/NewIntegration/NewIntegration';\nimport {TabsCtrl} from \"../ui/partial/Tabs/Tabs\";\n\n@AngularModuleConfig({\n moduleName: 'integration',\n dependencies: [\n 'ui.bootstrap',\n 'ui.router',\n 'data',\n 'filters'\n ]\n})\nexport class IntegrationModule {\n constructor() {\n (this).ngRef.constant('IntegrationStatusChange', {\n ENABLE: `By enabling this integration you will allow the users of this channel to see the current MVPD in their picker and to authenticate with it.`,\n DISABLE: `Are you sure you want to disable this integration? If disabled, the users of current channel won't be able to see the current MVPD in the picker, and current authenticated users won't be able to use the integration anymore!`\n });\n\n (this).ngRef.controller('IntegrationEndpointCtrl', IntegrationEndpointCtrl);\n (this).ngRef.controller('IntegrationItemCtrl', IntegrationItemCtrl);\n (this).ngRef.controller('IntegrationItemBasicCtrl', IntegrationItemBasicCtrl);\n (this).ngRef.controller('IntegrationListCtrl', IntegrationListCtrl);\n (this).ngRef.controller('IntegrationSettingsCtrl', IntegrationSettingsCtrl);\n (this).ngRef.controller('NewIntegrationCtrl', NewIntegrationCtrl);\n }\n\n config($stateProvider, States) {\n \"ngInject\";\n let basicView = {\n template: require('./partial/IntegrationItemBasic/IntegrationItemBasic.tmpl'),\n controller: IntegrationItemBasicCtrl,\n resolve: {\n endpointsData: function (data, BulkService) {\n \"ngInject\";\n let endpointsData = {};\n let authnEndpointKey = data.entityData[\"authenticationProviderConfiguration\"];\n let authzEndpointKey = data.entityData[\"authorizationProviderConfiguration\"];\n let logoutEndpointKey = data.entityData[\"logoutProviderConfiguration\"];\n\n return BulkService.getBulk([authnEndpointKey, authzEndpointKey, logoutEndpointKey]).then(function (response) {\n endpointsData[\"authn\"] = response.data.filter(function (endpoint) {\n return endpoint.key.indexOf(\"AuthenticationProviderConfiguration\") !== -1;\n })[0];\n endpointsData[\"authz\"] = response.data.filter(function (endpoint) {\n return endpoint.key.indexOf(\"AuthorizationProviderConfiguration\") !== -1;\n })[0];\n endpointsData[\"logout\"] = response.data.filter(function (endpoint) {\n return endpoint.key.indexOf(\"LogoutProviderConfiguration\") !== -1;\n })[0];\n return endpointsData;\n });\n },\n manglerList: function (ManglerService) {\n \"ngInject\";\n return ManglerService.getManglerList().then(function (response) {\n return response.data;\n });\n }\n }\n };\n\n $stateProvider.state(States.Integration.name, {\n abstract: States.Integration.abstract,\n url: States.Integration.url\n });\n $stateProvider.state(States.IntegrationList.name, {\n abstract: States.IntegrationList.abstract,\n url: States.IntegrationList.url,\n ncyBreadcrumb: {\n label: States.IntegrationList.displayName\n },\n onEnter: function ($rootScope) {\n $rootScope.searchActive = true;\n },\n onExit: function ($rootScope) {\n $rootScope.searchActive = false;\n },\n views: {\n 'page@Base': {\n template: require('./partial/IntegrationList/IntegrationList.tmpl'),\n controller: IntegrationListCtrl,\n resolve: {\n integrationList: function (IntegrationService) {\n return IntegrationService.getPage(1, 'serviceProvider.displayName,owner.displayName', 'ASC').then(function (response) {\n return response.data;\n });\n },\n newIntegrations: function (IntegrationService) {\n return IntegrationService.getNewList();\n }\n }\n }\n }\n });\n $stateProvider.state(States.IntegrationItem.name, {\n abstract: States.IntegrationItem.abstract,\n url: States.IntegrationItem.url,\n resolve: {\n data: function ($stateParams, IntegrationService, ProgrammerService) {\n return IntegrationService.getItem($stateParams.integrationId).then(function (response) {\n let serviceProvider = response.data.entityData.serviceProvider;\n let programmer = response.data.related[serviceProvider].entityData.programmer;\n let programmerId = programmer.replace(\"@Programmer:\", \"\");\n\n return ProgrammerService.getItem(programmerId).then(function (programmerData) {\n response.data.related[programmer] = programmerData.data;\n return response.data;\n });\n });\n },\n platforms: function (PlatformService) {\n return PlatformService.getAll().then(function (response) {\n return response.data;\n });\n },\n manglerList: function (ManglerService) {\n return ManglerService.getManglerList().then(function (response) {\n return response.data;\n });\n }\n },\n views: {\n 'page@Base': {\n templateProvider: function (UserService) {\n return UserService.advancedWorkspaceEnabled() ?\n require('../../module/core/template/tabs-layout.tmpl') :\n require('../../module/core/template/basic-layout.tmpl');\n }\n },\n 'tabs@Base.Integration.Item': {\n template: require('../../module/ui/partial/Tabs/Tabs.tmpl'),\n controller: TabsCtrl,\n resolve: {\n tabs: function (States) {\n return [\n {\n state: States.IntegrationItemData,\n id: 'integrationDataTab'\n },\n {\n state: States.IntegrationSettings,\n id: 'integrationSettingsTab'\n },\n {\n state: States.IntegrationEndpoint,\n displayName: 'Authentication Settings',\n highlightOn: 'authenticationProviderConfiguration',\n params: {\n endpointType: 'authenticationProviderConfiguration'\n },\n id: 'integrationAuthnEndpointTab'\n },\n {\n state: States.IntegrationEndpoint,\n displayName: 'Authorization Settings',\n highlightOn: 'authorizationProviderConfiguration',\n params: {\n endpointType: 'authorizationProviderConfiguration'\n },\n id: 'integrationAuthzEndpointTab'\n },\n {\n state: States.IntegrationEndpoint,\n displayName: 'Logout Settings',\n highlightOn: 'logoutProviderConfiguration',\n params: {\n endpointType: 'logoutProviderConfiguration'\n },\n id: 'integrationLogoutEndpointTab'\n }\n ];\n }\n }\n }\n }\n });\n $stateProvider.state(States.IntegrationItemData.name, {\n abstract: States.IntegrationItemData.abstract,\n url: States.IntegrationItemData.url,\n ncyBreadcrumb: {\n label: '{{data.entityData.id | integrationParents:data}}',\n parent: States.IntegrationList.name\n },\n views: {\n 'tabContent@Base.Integration.Item': {\n template: require('./partial/IntegrationItem/IntegrationItem.tmpl'),\n controller: IntegrationItemCtrl\n },\n 'entityItemBasic@Base.Integration.Item': basicView\n }\n });\n $stateProvider.state(States.IntegrationSettings.name, {\n abstract: States.IntegrationSettings.abstract,\n url: States.IntegrationSettings.url,\n ncyBreadcrumb: {\n label: 'Settings',\n parent: States.IntegrationItemData.name\n },\n views: {\n 'tabContent@Base.Integration.Item': {\n template: require('./partial/IntegrationSettings/IntegrationSettings.tmpl'),\n controller: IntegrationSettingsCtrl,\n resolve: {\n localConfigurationData: function (LocalConfigurationService) {\n return LocalConfigurationService.getLocalConfiguration().then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'entityItemBasic@Base.Integration.Item': basicView\n }\n });\n $stateProvider.state(States.IntegrationEndpoint.name, {\n abstract: States.IntegrationEndpoint.abstract,\n url: States.IntegrationEndpoint.url,\n params: {\n activeEndpointTab: 'settings'\n },\n ncyBreadcrumb: {\n label: '{{data.related[data.entityData[endpointType]].entityData.id | idToDisplayName:data.related[data.entityData[endpointType]].entityData}}',\n parent: States.IntegrationItemData.name\n },\n views: {\n 'tabContent@Base.Integration.Item': {\n template: require('./partial/IntegrationEndpoint/IntegrationEndpoint.tmpl'),\n controller: IntegrationEndpointCtrl,\n resolve: {\n endpointType: function ($stateParams) {\n return $stateParams.endpointType;\n },\n activeEndpointTab: function ($stateParams) {\n return $stateParams.activeEndpointTab;\n },\n certificates: function (endpointData, CertificateService) {\n return CertificateService.parseCertificates(endpointData).then(function (response) {\n return response.data;\n });\n },\n endpointData: function (data, endpointType, BulkService) {\n let endpointFetchData = data.entityData[endpointType];\n return BulkService.getItem(endpointFetchData).then(function (response) {\n return response.data;\n });\n }\n }\n },\n 'endpointTabContent@Base.Integration.Item.Endpoint': {\n templateUrl: function (data) {\n return 'module/ui/template/endpoint/' + data.endpointType + '-' + data.activeEndpointTab + '.html';\n }\n },\n 'entityItemBasic@Base.Integration.Item': basicView\n }\n });\n $stateProvider.state(States.IntegrationNew.name, {\n abstract: States.IntegrationNew.abstract,\n url: States.IntegrationNew.url,\n ncyBreadcrumb: {\n label: States.IntegrationNew.displayName,\n parent: States.IntegrationList.name\n },\n views: {\n 'page@Base': {\n template: require('./partial/NewIntegration/NewIntegration.tmpl'),\n controller: NewIntegrationCtrl,\n resolve: {\n data: function (IntegrationService) {\n return IntegrationService.getNewModel();\n },\n manglerList: function (ManglerService) {\n return ManglerService.getManglerList().then(function (response) {\n return response.data;\n });\n }\n }\n }\n }\n });\n /* Add New States Above */\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/integration.ts","import * as _ from \"lodash\";\nimport * as angular from \"angular\";\nimport {TempPassService} from \"../../../data/service/TempPassService\";\nimport {isNullOrUndefined} from \"util\";\n\nexport class IntegrationEndpointCtrl {\n constructor($scope, $rootScope, $state, $filter, data, endpointType, activeEndpointTab, endpointData, certificates, States, manglerList, platforms, DataCollectorService, PlatformService, UserService, TooltipService, ManglerUtil, IntegrationStatusChange) {\n \"ngInject\";\n let type = '';\n let generateTabs = function (endpointType) {\n let result = [];\n switch (endpointType) {\n case 'authenticationProviderConfiguration':\n type = 'AuthN';\n break;\n case 'authorizationProviderConfiguration':\n type = 'AuthZ';\n break;\n case 'logoutProviderConfiguration':\n type = 'Logout';\n break;\n }\n\n result.push({\n name: type + ' General Settings',\n active: activeEndpointTab === 'settings',\n location: States.IntegrationEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'settings'\n },\n id: type + '_endpointSettingsTab'\n });\n result.push({\n name: type + ' Certificates',\n active: activeEndpointTab === 'certificates',\n location: States.IntegrationEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'certificates'\n },\n id: type + '_endpointCertificatesTab'\n });\n result.push({\n name: type + ' Dynamic Rules',\n active: activeEndpointTab === 'rules',\n location: States.IntegrationEndpoint.name,\n params: {\n endpointType: endpointType,\n activeEndpointTab: 'rules'\n },\n id: type + '_endpointDynamicRulesTab'\n });\n return result;\n };\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.data = data;\n\n $scope.hasMandatoryProperties = false;\n $scope.noToggle = function () {\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\n };\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\n });\n\n $scope.$watch('data.entityData.configuration.default', function (value, oldValue) {\n if (value !== oldValue) {\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\n });\n }\n }, true);\n\n $scope.manglerData = data;\n $scope.endpointType = endpointType;\n $scope.endpointData = endpointData;\n $scope.certificates = certificates;\n $scope.related = endpointData.related;\n $scope.tabs = generateTabs(endpointType);\n $scope.parseMetadata = function (metadata) {\n return $filter('metadata')(metadata, true);\n };\n $scope.noData = (endpointData.entityData.id.indexOf('null') !== -1);\n $scope.isSaml = (endpointData.entityData.id.indexOf('saml') !== -1);\n $scope.manglerList = manglerList;\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n\n $scope.inheritPath = endpointType + ':owner:serviceProvider';\n $scope.inheritTree = 'Integration:' + type + ' Endpoint:Mvpd:Channel';\n\n $scope.unregister = function () {\n };\n $scope.platforms = angular.copy(platforms);\n $scope.platforms.entities.unshift({\n entityData: {\n id: 'all',\n name: 'All Platforms'\n }\n });\n\n let pipelineStageList = endpointData.entityData.pipelineStageList;\n if (!isNullOrUndefined(pipelineStageList)) {\n $scope.tempPassConfig = new TempPassService().getTempPassMap(pipelineStageList.PIPELINE_AUTHORIZATION);\n }\n\n let platformConfig;\n for (let i = 0; i < $scope.data.related.platformConfigurations.length; i++) {\n let platform = $scope.data.related.platformConfigurations[i];\n platformConfig = platform;\n platformConfig.related = $scope.data.related;\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.related['@' + $scope.data.key] = $scope.data;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n }\n\n $scope.selectedPlatform = 'all';\n $scope.selectPlatform = function (platformValue) {\n $scope.unregister();\n $scope.selectedPlatform = platformValue;\n if (platformValue === 'all') {\n $scope.platformData = null;\n } else {\n let platformConfig:any = _.find($scope.data.related.platformConfigurations, {entityData: {platform: \"@Platform:\" + platformValue}});\n if (platformConfig) {\n $scope.platformData = platformConfig;\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\n } else {\n platformConfig = PlatformService.getNewModel(platformValue, $scope.data);\n platformConfig.related = $scope.data.related;\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n platformConfig.related['@' + $scope.data.key] = $scope.data;\n $scope.platformData = platformConfig;\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\n }\n }\n };\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n TooltipService.getTooltips().then(function (result) {\n // TODO: better separation when we will have separate controllers and templates for each endpoint type\n $scope.samlInfoTooltips = result.data.DOMAIN_MODELS.samlMetadataInfo;\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\n switch (endpointType) {\n case 'authenticationProviderConfiguration':\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authenticationProviderConfiguration;\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthenticationProviderConfiguration;\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthenticationProviderConfiguration;\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthenticationProviderConfiguration;\n $scope.authNAllTooltips = result.data.DOMAIN_MODELS.authNAllAuthenticationProviderConfiguration;\n break;\n case 'authorizationProviderConfiguration':\n $scope.generalTooltips = result.data.DOMAIN_MODELS.authorizationProviderConfiguration;\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlAuthorizationProviderConfiguration;\n $scope.oAuthTooltips = result.data.DOMAIN_MODELS.oAuthAuthorizationProviderConfiguration;\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2AuthorizationProviderConfiguration;\n $scope.restTooltips = result.data.DOMAIN_MODELS.restAuthorizationProviderConfiguration;\n $scope.soapTooltips = result.data.DOMAIN_MODELS.soapAuthorizationProviderConfiguration;\n $scope.authZAllTooltips = result.data.DOMAIN_MODELS.authZAllAuthorizationProviderConfiguration;\n $scope.preFlightTooltips = result.data.DOMAIN_MODELS.preFlightConfiguration;\n $scope.dosProtectionTooltips = result.data.DOMAIN_MODELS.dosProtectionConfiguration;\n $scope.tempPassTooltips = result.data.DOMAIN_MODELS.tempPassConfiguration;\n break;\n case 'logoutProviderConfiguration':\n $scope.samlTooltips = result.data.DOMAIN_MODELS.samlLogoutProviderConfiguration;\n $scope.oAuth2Tooltips = result.data.DOMAIN_MODELS.oAuth2RedirectLogoutProviderConfiguration;\n break;\n }\n\n $scope.getEnabledToggleTooltip = function() {\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\n return $scope.tooltips['disabled.noRights.toggle'];\n }\n if ($scope.noToggle()) {\n return $scope.tooltips['disabled.missingProperties.toggle'];\n } else {\n return $scope.tooltips['enabled.toggle'];\n }\n };\n });\n\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/partial/IntegrationEndpoint/IntegrationEndpoint.ts","import * as _ from 'lodash';\n\nexport class IntegrationItemCtrl {\n constructor($scope, $rootScope, data, manglerList, ManglerUtil, TooltipService, DataCollectorService, IntegrationStatusChange) {\n \"ngInject\";\n $scope.data = data;\n\n $scope.hasMandatoryProperties = false;\n $scope.noToggle = function () {\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\n };\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\n });\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\n\n $scope.getEnabledToggleTooltip = function() {\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\n return $scope.tooltips['disabled.noRights.toggle'];\n }\n if ($scope.noToggle()) {\n return $scope.tooltips['disabled.missingProperties.toggle'];\n } else {\n return $scope.tooltips['enabled.toggle'];\n }\n };\n });\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/partial/IntegrationItem/IntegrationItem.ts","import * as angular from 'angular';\nimport * as _ from 'lodash';\n\nexport class IntegrationItemBasicCtrl {\n constructor($scope, $rootScope, $state, States, manglerList, platforms, endpointsData, data, UserService, PlatformService, DataCollectorService, ManglerUtil, TooltipService, IntegrationStatusChange) {\n \"ngInject\";\n $scope.data = data;\n $scope.basicWorkspaceEnabled = true;\n $scope.manglerList = manglerList;\n $scope.clientDataAllowedList = ['iFrameRequired', 'iFrameWidth', 'iFrameHeight'];\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n $scope.platformData = data;\n $scope.endpointsData = endpointsData;\n $scope.platforms = angular.copy(platforms);\n $scope.hasMandatoryProperties = false;\n $scope.hasAuthnMangler = false;\n $scope.hasAuthzMangler = false;\n $scope.noToggle = function () {\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\n };\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\n let propertyList = ManglerUtil.getPropertyList();\n $scope.hasAuthnMangler = propertyList['authn_ttl'] ? true : false;\n $scope.hasAuthzMangler = propertyList['authz_ttl'] ? true : false;\n });\n\n if ($scope.platforms) {\n $scope.platforms.entities.unshift({\n entityData: {\n id: 'all',\n name: 'All Platforms'\n }\n });\n $scope.selectedPlatformId = 'all';\n }\n\n $scope.unregister = function () {\n };\n\n $scope.booleanSelectValues = [\n {value: true, label: 'Yes'},\n {value: false, label: 'No'}\n ];\n\n $scope.isDefined = function(propertyName) {\n return angular.isDefined($scope.platformData.entityData[propertyName]);\n };\n\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n function resetInheritancePath() {\n $scope.authnInheritPath = 'authenticationProviderConfiguration:owner:serviceProvider';\n $scope.authzInheritPath = 'authorizationProviderConfiguration:owner:serviceProvider';\n $scope.authnInheritTree = 'Integration:AuthN Endpoint:Mvpd:Channel';\n $scope.authzInheritTree = 'Integration:AuthZ Endpoint:Mvpd:Channel';\n }\n\n function addPlatformToInheritancePath() {\n $scope.authnInheritPath = 'integrationConfiguration:authenticationProviderConfiguration:owner:serviceProvider';\n $scope.authzInheritPath = 'integrationConfiguration:authorizationProviderConfiguration:owner:serviceProvider';\n $scope.authnInheritTree = 'Platform:Integration:AuthN Endpoint:Mvpd:Channel';\n $scope.authzInheritTree = 'Platform:Integration:AuthZ Endpoint:Mvpd:Channel';\n }\n\n resetInheritancePath();\n\n $scope.selectedPlatformId = 'all';\n $scope.selectPlatform = function (platformValue) {\n $scope.unregister();\n $scope.selectedPlatformId = platformValue;\n if (platformValue === 'all') {\n $scope.platformData = data;\n resetInheritancePath();\n } else {\n let platformConfig;\n for (let i = 0; i < $scope.data.related.platformConfigurations.length; i++) {\n let platform = $scope.data.related.platformConfigurations[i];\n if (platform.entityData.platform === '@Platform:' + platformValue) {\n platformConfig = platform;\n platformConfig.related = $scope.data.related;\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n platformConfig.related['@' + $scope.data.key] = $scope.data;\n }\n }\n if (platformConfig) {\n $scope.platformData = platformConfig;\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\n } else {\n platformConfig = PlatformService.getNewModel(platformValue, $scope.data);\n platformConfig.related = $scope.data.related;\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['authorizationProviderConfiguration'] = $scope.data.entityData.authorizationProviderConfiguration;\n platformConfig.entityData['logoutProviderConfiguration'] = $scope.data.entityData.logoutProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n platformConfig.related['@' + $scope.data.key] = $scope.data;\n $scope.platformData = platformConfig;\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\n }\n\n addPlatformToInheritancePath();\n }\n };\n\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\n $scope.authNTooltips = result.data.DOMAIN_MODELS.authenticationProviderConfiguration;\n $scope.authZTooltips = result.data.DOMAIN_MODELS.authorizationProviderConfiguration;\n\n $scope.getEnabledToggleTooltip = function() {\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\n return $scope.tooltips['disabled.noRights.toggle'];\n }\n if ($scope.noToggle()) {\n return $scope.tooltips['disabled.missingProperties.toggle'];\n } else {\n return $scope.tooltips['enabled.toggle'];\n }\n };\n\n $scope.getTooltip = function (property) {\n if (!$scope.tooltips[property + '.field']) {\n return;\n }\n return $scope.tooltips[property + '.field'];\n };\n });\n\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/partial/IntegrationItemBasic/IntegrationItemBasic.ts","export class IntegrationListCtrl {\n constructor($rootScope, $scope, $state, States, Config, integrationList, newIntegrations, IntegrationService) {\n \"ngInject\";\n $scope.columns = [\n {\n name: 'Name',\n sortable: true,\n sorted: true,\n sortAsc: true,\n sortField: 'serviceProvider.displayName,owner.displayName',\n class: 'col-md-4'\n },\n {\n name: 'Channel',\n sortable: true,\n sortField: 'serviceProvider.displayName',\n class: 'col-md-4'\n },\n {\n name: 'Mvpd',\n sortable: true,\n sortField: 'owner.displayName',\n class: 'col-md-4'\n },\n {\n name: 'Enabled',\n sortable: false,\n class: 'action integration'\n }];\n\n\n $scope.data = integrationList ? integrationList : null;\n if ($scope.data === null) {\n $rootScope.searchActive = false;\n }\n $scope.newIntegrations = newIntegrations;\n $scope.pageSize = Config.PAGE_SIZE;\n $scope.service = IntegrationService;\n $scope.onItemClick = function (item) {\n $state.go(States.IntegrationItemData.name, {\n integrationId: item.entityData.id\n });\n };\n $scope.addNewIntegration = function () {\n $state.go(States.IntegrationNew.name);\n };\n\n $scope.getEnabled = function (integration) {\n return integration.entityData.enabled ? 'Yes' : 'No';\n };\n\n $scope.$on(\"onPageChange\", function(){\n const tableListElement = document.getElementById('table-list');\n $(window).scrollTop(window.scrollY-tableListElement.offsetHeight);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/partial/IntegrationList/IntegrationList.ts","import * as angular from 'angular';\nimport * as _ from 'lodash';\n\nexport class IntegrationSettingsCtrl {\n constructor($scope, $rootScope, data, manglerList, DataCollectorService, PlatformService, platforms, UserService, $filter, ManglerUtil, TooltipService, localConfigurationData, IntegrationStatusChange) {\n \"ngInject\";\n $scope.data = data;\n $scope.localConf = localConfigurationData;\n\n $scope.hasMandatoryProperties = false;\n $scope.noToggle = function () {\n return !$rootScope.user.hasRole('ROLE_CONSOLE_WRITE') ? 'yes' : '';\n };\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.hasMandatoryProperties = _.keys(data).length > 0;\n });\n\n $scope.unregister = function () {\n };\n $scope.platforms = angular.copy(platforms);\n\n $scope.booleanSelectValues = [\n {value: true, label: 'Yes'},\n {value: false, label: 'No'}\n ];\n\n $scope.platforms.entities.unshift({\n entityData: {\n id: 'all',\n name: 'All Platforms'\n }\n });\n\n $scope.isDefined = function(propertyName) {\n return angular.isDefined($scope.platformData.entityData[propertyName]);\n };\n\n $scope.selectedPlatform = 'all';\n $scope.selectPlatform = function (platformValue) {\n $scope.unregister();\n $scope.selectedPlatform = platformValue;\n if (platformValue === 'all') {\n $scope.platformData = null;\n } else {\n let platformConfig;\n for (let i = 0; i < $scope.data.related.platformConfigurations.length; i++) {\n let platform = $scope.data.related.platformConfigurations[i];\n if (platform.entityData.platform === '@Platform:' + platformValue) {\n platformConfig = platform;\n platformConfig.related = $scope.data.related;\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n platformConfig.related['@' + $scope.data.key] = $scope.data;\n }\n }\n if (platformConfig) {\n $scope.platformData = platformConfig;\n $scope.unregister();\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\n } else {\n platformConfig = PlatformService.getNewModel(platformValue, $scope.data);\n platformConfig.related = $scope.data.related;\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n platformConfig.related['@' + $scope.data.key] = $scope.data;\n $scope.platformData = platformConfig;\n $scope.unregister();\n $scope.unregister = $scope.$watch('platformData.entityData', DataCollectorService.collector($scope.platformData), true);\n }\n }\n };\n $scope.$watch('data.entityData', DataCollectorService.collector(data), true);\n $scope.readOnly = !UserService.hasRole('ROLE_CONSOLE_WRITE');\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\n\n $scope.getEnabledToggleTooltip = function() {\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\n return $scope.tooltips['disabled.noRights.toggle'];\n }\n if ($scope.noToggle()) {\n return $scope.tooltips['disabled.missingProperties.toggle'];\n } else {\n return $scope.tooltips['enabled.toggle'];\n }\n };\n\n $scope.getTooltip = function (property) {\n if (!$scope.tooltips[property + '.field']) {\n return;\n }\n return $scope.tooltips[property + '.field'];\n };\n });\n\n $scope.disableMessage = IntegrationStatusChange.DISABLE;\n $scope.enableMessage = IntegrationStatusChange.ENABLE;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/partial/IntegrationSettings/IntegrationSettings.ts","import * as _ from 'lodash';\n\nexport class NewIntegrationCtrl {\n constructor($scope, $rootScope, $q, $state, $http, $uibModal, States, data, manglerList, Config, DataCollectorService, ChannelService, MvpdService, MvpdProxyService, UserService, ManglerUtil, TooltipService, BulkService, PlatformService) {\n \"ngInject\";\n $scope.channelId = '';\n $scope.mvpdId = '';\n $scope.data = data;\n $scope.mandatoryProperties = [];\n $scope.hasMandatory = false;\n\n $scope.updateId = function () {\n $scope.data.entityData.id = $scope.channelId + '_' + $scope.mvpdId;\n if ($scope.selectedChannel && $scope.selectedChannel.entityData && $scope.selectedChannel.entityData.integrations) {\n let integration = $scope.selectedChannel.entityData.integrations[$scope.data.entityData.owner];\n $scope.editOnly = !!integration;\n } else {\n $scope.editOnly = false;\n }\n if ($scope.data.entityData.owner && $scope.data.entityData.serviceProvider && !$scope.editOnly) {\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.mandatoryProperties = data;\n $scope.hasMandatory = _.keys(data).length > 0;\n });\n } else {\n $scope.mandatoryProperties = [];\n $scope.hasMandatory = false;\n }\n };\n\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n\n $scope.getChannels = function (searchTerm) {\n return ChannelService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\n\n if (response.data.resilienceState) {\n return ChannelService.getAll().then(function (response) {\n return response.data.entities;\n });\n }\n\n return response.data.entities;\n });\n };\n $scope.getIdp = function (searchTerm) {\n let defer = $q.defer();\n\n $q.all([MvpdService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\n\n if (response.data.resilienceState) {\n return MvpdService.getAll().then(function (response) {\n return response.data.entities;\n });\n }\n\n return response.data.entities;\n }), MvpdProxyService.getPage(1, 'displayName', 'ASC', searchTerm).then(function (response) {\n if (response.data.resilienceState) {\n return MvpdProxyService.getAll().then(function (response) {\n return response.data.entities;\n });\n }\n\n return response.data.entities;\n })]).then(function(response){\n let result = _.union([], response[0], response[1]);\n defer.resolve(result);\n });\n\n return defer.promise;\n };\n $scope.$watch('selectedChannel', function (channel, oldChannel) {\n if (!channel || !channel.key) {\n delete $scope.data.entityData.serviceProvider;\n $scope.channelId = '';\n $scope.updateId();\n } else if (channel !== oldChannel && channel.key) {\n $scope.data.entityData.serviceProvider = '@' + channel.key;\n $scope.channelId = channel.entityData.id;\n $scope.updateId();\n }\n });\n $scope.$watch('selectedMvpd', function (mvpd, oldMvpd) {\n $scope.onboardedPlatformsSettings = [];\n $scope.onboardedStatus = [];\n if (!mvpd || !mvpd.key) {\n delete $scope.data.entityData.owner;\n $scope.mvpdId = '';\n delete data.entityData.authenticationProviderConfiguration;\n delete data.entityData.authorizationProviderConfiguration;\n delete data.entityData.logoutProviderConfiguration;\n $scope.updateId();\n } else if (mvpd !== oldMvpd) {\n $scope.data.entityData.owner = '@' + mvpd.key;\n $scope.mvpdId = mvpd.entityData.id;\n data.entityData.authenticationProviderConfiguration = mvpd.entityData.authenticationProviderConfigs[0];\n data.entityData.authorizationProviderConfiguration = mvpd.entityData.authorizationProviderConfigs[0];\n data.entityData.logoutProviderConfiguration = mvpd.entityData.logoutProviderConfigs[0];\n $rootScope.loading = true;\n\n let onboardedPlatformsSettingsEndpoints = [];\n $scope.onboardedPlatformsSettings = mvpd.entityData.platformSettings;\n for (let platform in mvpd.entityData.platformSettings) {\n if (mvpd.entityData.platformSettings.hasOwnProperty(platform)) {\n onboardedPlatformsSettingsEndpoints.push(mvpd.entityData.platformSettings[platform]);\n }\n }\n\n BulkService.getBulk(\n _.union(mvpd.entityData.authenticationProviderConfigs,\n mvpd.entityData.authorizationProviderConfigs,\n mvpd.entityData.logoutProviderConfigs,\n onboardedPlatformsSettingsEndpoints)).then(\n function (response) {\n for (let i = 0; i < onboardedPlatformsSettingsEndpoints.length; i++) {\n for (let j = 0; j < response.data.length; j ++) {\n if (onboardedPlatformsSettingsEndpoints[i] === '@' + response.data[j].key) {\n $scope.onboardedStatus[onboardedPlatformsSettingsEndpoints[i]] = response.data[j].entityData.boardingStatus;\n }\n }\n }\n\n mvpd.related = {};\n _.each(response.data, function (val) {\n mvpd.related['@' + val.key] = val;\n });\n $rootScope.loading = false;\n }\n ).then(function () {\n $scope.updateId();\n });\n }\n });\n\n $scope.$watch('data.entityData.configuration.default', function (value, oldValue) {\n if (value !== oldValue) {\n ManglerUtil.getMandatoryManglerProperties($scope.data, manglerList).then(function (data) {\n $scope.mandatoryProperties = data;\n $scope.hasMandatory = _.keys(data).length > 0;\n $scope.data.entityData.enabled = !$scope.hasMandatory;\n });\n }\n }, true);\n\n\n $scope.integrationDefined = function () {\n return $scope.channelAndMvpdDefined() && !$scope.hasMandatory ? \"\" : \"false\";\n };\n\n $scope.channelAndMvpdDefined = function () {\n return !!(data.entityData.serviceProvider &&\n data.entityData.owner &&\n data.entityData.authenticationProviderConfiguration &&\n data.entityData.authorizationProviderConfiguration &&\n data.entityData.logoutProviderConfiguration &&\n data.entityData.id === $scope.channelId + '_' + $scope.mvpdId);\n };\n\n $scope.createPlatformConfig = function (platformId) {\n $scope.data.related.platformConfigurations = [];\n\n let platformConfig = PlatformService.getNewModel(platformId, $scope.data);\n platformConfig.entityData['authenticationProviderConfiguration'] = $scope.data.entityData.authenticationProviderConfiguration;\n platformConfig.entityData['serviceProvider'] = $scope.data.entityData.serviceProvider;\n platformConfig.entityData['owner'] = $scope.data.entityData.owner;\n platformConfig.entityData.enabledPlatformServices = true;\n $scope.data.related.platformConfigurations.push(platformConfig);\n $scope.data.related[\"@PlatformConfiguration:\" + $scope.data.entityData.id + \"_\" + platformId] = platformConfig;\n\n DataCollectorService.createEntity(platformConfig);\n $scope.data.entityData.platformConfigurations[\"@Platform:\" + platformId] = \"@PlatformConfiguration:\" + $scope.data.entityData.id + \"_\" + platformId;\n };\n\n let createIntegrationAndNavigate = function () {\n $scope.data.key = 'IntegrationConfiguration:' + $scope.data.entityData.id;\n\n for (let platform in $scope.onboardedPlatformsSettings) {\n if ($scope.onboardedPlatformsSettings.hasOwnProperty(platform)) {\n let platformId = platform.split(\":\")[1];\n let platformConfig = $scope.onboardedPlatformsSettings[platform];\n\n if ($scope.onboardedStatus[platformConfig] === \"SUPPORTED\") {\n $scope.createPlatformConfig(platformId);\n }\n }\n }\n\n if ($scope.data.entityData.enabled === null) {\n $scope.data.entityData.enabled = !$scope.hasMandatory;\n }\n DataCollectorService.createEntity($scope.data);\n if (!$scope.selectedChannel.entityData.integrations) {\n $scope.selectedChannel.entityData.integrations = {};\n }\n $scope.selectedChannel.entityData.integrations[$scope.data.entityData.owner] = '@' + $scope.data.key;\n DataCollectorService.updateEntity($scope.selectedChannel);\n $http.defaults.cache.put('/rest/api/entity/IntegrationConfiguration/' + $scope.data.entityData.id + '?configurationVersion=' + Config.configVersion, [200, $scope.data]);\n $state.go(States.IntegrationSettings.name, {\n integrationId: $scope.data.entityData.id\n });\n };\n\n $scope.createIntegration = function () {\n let integration = ($scope.selectedChannel.entityData.integrations) ? $scope.selectedChannel.entityData.integrations[$scope.data.entityData.owner] : null;\n if (integration) {\n $state.go(States.IntegrationSettings.name, {\n integrationId: integration.split(':')[1]\n });\n } else {\n if ($scope.hasMandatory) {\n $uibModal.open({\n templateUrl: 'mandatory-properties-modal.html',\n controller: function ($scope, $uibModalInstance, data, mandatoryProperties, integrationDefined) {\n $scope.data = data;\n $scope.integrationDefined = integrationDefined;\n $scope.mandatoryProperties = mandatoryProperties;\n $scope.booleanSelectValues = [\n {value: false, label: 'No'},\n {value: true, label: 'Yes'}\n ];\n $scope.deleteProperty = function (key) {\n let property = data.entityData.configuration.default[key];\n if (!property || property.length === 0) {\n delete data.entityData.configuration.default[key];\n }\n };\n $scope.continue = function () {\n $uibModalInstance.close();\n };\n $scope.cancel = function () {\n data.entityData.configuration.default = {};\n $uibModalInstance.dismiss();\n };\n $scope.isFieldInvalid = function (property, manglerForm) {\n if (manglerForm['mangler-' + property]) {\n return manglerForm['mangler-' + property].$invalid && manglerForm['mangler-' + property].$dirty;\n }\n else {\n return false;\n }\n };\n $scope.mandatoryPropertiesValid = function (manglerForm) {\n return _.keys(manglerForm.$error).length > 0;\n };\n },\n resolve: {\n data: function () {\n return $scope.data;\n },\n mandatoryProperties: function () {\n return $scope.mandatoryProperties;\n },\n integrationDefined: function () {\n return $scope.integrationDefined;\n }\n },\n backdrop: 'static'\n }).result.then(createIntegrationAndNavigate);\n } else {\n createIntegrationAndNavigate();\n }\n }\n };\n\n $scope.isValid = function () {\n if ($scope.data.entityData.serviceProvider === null){\n return false;\n }\n return true;\n };\n\n if (!UserService.hasRole('ROLE_CONSOLE_WRITE')) {\n $state.go(States.Dashboard.name);\n }\n\n TooltipService.getTooltips().then(function (result) {\n $scope.tooltips = result.data.DOMAIN_MODELS.integrationConfiguration;\n });\n\n $scope.getEnabledToggleTooltip = function () {\n if (!$rootScope.user.hasRole('ROLE_CONSOLE_WRITE')) {\n return $scope.tooltips['disabled.noRights.toggle'];\n }\n if ($scope.noToggle()) {\n return $scope.tooltips['disabled.missingProperties.toggle'];\n } else {\n return $scope.tooltips['enabled.toggle'];\n }\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/integration/partial/NewIntegration/NewIntegration.ts","module.exports = \"
                No
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/integration/partial/IntegrationItemBasic/IntegrationItemBasic.tmpl\n// module id = 183\n// module chunks = 0","module.exports = \"

                New Integrations

                Name Channel MVPD Enabled
                {{item.entityData.id}} {{item.related[item.entityData.serviceProvider].entityData.displayName}} {{item | squash: 'displayName':'integration'}} ID: {{item | squash: 'id':'integration'}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/integration/partial/IntegrationList/IntegrationList.tmpl\n// module id = 184\n// module chunks = 0","module.exports = \"
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/template/basic-layout.tmpl\n// module id = 185\n// module chunks = 0","module.exports = \"
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/integration/partial/IntegrationItem/IntegrationItem.tmpl\n// module id = 186\n// module chunks = 0","module.exports = \"
                No
                No
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/integration/partial/IntegrationSettings/IntegrationSettings.tmpl\n// module id = 187\n// module chunks = 0","module.exports = \"

                This is a null or dummy endpoint. No data to display.

                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/integration/partial/IntegrationEndpoint/IntegrationEndpoint.tmpl\n// module id = 188\n// module chunks = 0","module.exports = \"
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/integration/partial/NewIntegration/NewIntegration.tmpl\n// module id = 189\n// module chunks = 0","import {AngularModuleConfig} from '../../common/AngularModule';\nimport {CsrfTokenInterceptor} from './interceptor/CsrfTokenInterceptor';\nimport {AuthorizationInterceptor} from './interceptor/AuthorizationInterceptor';\nimport {InputEscapeService} from './service/InputEscapeService';\n\n/**\n * @module security\n * @requires ui.router\n * @description Application's security module. Handles CSRF token and authentication/authorization errors.\n */\n@AngularModuleConfig({\n moduleName: 'security',\n dependencies: [\n 'ui.router',\n 'data'\n ]\n})\nexport class SecurityModule {\n constructor() {\n (this).ngRef.service('InputEscapeService', InputEscapeService);\n }\n /**\n * @method config\n * @memberOf module:security\n * @param {Object} $httpProvider - Angular http provider\n * @description Adds {@link module:security.CsrfTokenInterceptor} to $http interceptor list and configures the 401 and 403 states.\n */\n config($provide, $httpProvider) {\n \"ngInject\";\n $provide.factory('CsrfTokenInterceptor', CsrfTokenInterceptor.getInstance);\n $provide.factory('AuthorizationInterceptor', AuthorizationInterceptor.getInstance);\n\n $httpProvider.interceptors.push('CsrfTokenInterceptor');\n $httpProvider.interceptors.push('AuthorizationInterceptor');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/security/security.ts","/**\n * @class CsrfTokenInterceptor\n * @memberOf module:security\n * @description Adds 'X-CSRF-HEADER' request header for every server call.\n */\nexport class CsrfTokenInterceptor {\n private CSRF_TOKEN_HEADER:any;\n private csrfToken:any;\n\n constructor() {\n /**\n * @name module:security.CsrfTokenInterceptor#CSRF_TOKEN_HEADER\n * @constant\n * @private\n * @type {String}\n * @description CSRF request header name\n */\n this.CSRF_TOKEN_HEADER = 'X-CSRF-HEADER';\n /**\n * @name module:security.CsrfTokenInterceptor#csrfToken\n * @private\n * @type {String}\n * @default 'NO_TOKEN'\n * @description CSRF token value\n */\n this.csrfToken = 'NO-TOKEN';\n }\n\n public static getInstance() {\n \"ngInject\";\n return new CsrfTokenInterceptor();\n }\n\n /**\n * @name module:security.CsrfTokenInterceptor#CSRF_TOKEN_KEY\n * @constant\n * @type {String}\n * @description CSRF response header name\n */\n get CSRF_TOKEN_KEY() {\n return 'X-CSRF-TOKEN';\n }\n\n /**\n * @memberOf module:security.CsrfTokenInterceptor\n * @param {String} token - token value\n * @description Set the token value\n */\n setToken = (token) => {\n this.csrfToken = token;\n }\n\n /**\n * @memberOf module:security.CsrfTokenInterceptor\n * @returns {String} The token value\n * @description Returns the token value\n */\n getToken = () => {\n return this.csrfToken;\n }\n\n request = (config) => {\n config.headers['X-CSRF-TOKEN'] = this.csrfToken;\n return config;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/security/interceptor/CsrfTokenInterceptor.ts","/**\n * @class AuthorizationInterceptor\n * @memberOf module:security\n * @param {Object} $q - Angular ajax queue library\n * @param {Object} $injector - Angular injector service\n * @description Intercepts 401 calls and redirects calls login on UserService\n */\nexport class AuthorizationInterceptor {\n constructor(private $q, private $injector) {}\n\n public static getInstance($q, $injector) {\n \"ngInject\";\n return new AuthorizationInterceptor($q, $injector);\n }\n\n responseError = (response) => {\n if (response.status === 401) {\n let UserService = this.$injector.get('UserService');\n UserService.setAuthorizationCodeUrl(response.data.authorization_code_url);\n UserService.login();\n }\n return this.$q.reject(response);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/security/interceptor/AuthorizationInterceptor.ts","export class InputEscapeService {\n private entityMap:any;\n\n constructor() {\n this.entityMap = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': '"',\n \"'\": ''',\n \"/\": '/'\n };\n }\n\n escapeHtml(string) {\n return String(string).replace(/[&<>\"'\\/]/g, (s) => {\n return this.entityMap[s];\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/security/service/InputEscapeService.ts","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {booleanFilter} from './filter/BooleanFilter';\nimport {countFilter} from './filter/CountFilter';\nimport {humanReadableFilter} from './filter/HumanReadableFilter';\nimport {humanReadableIdFilter} from './filter/HumanReadableIdFilter';\nimport {idToDisplayNameFilter} from './filter/IdToDisplayNameFilter';\nimport {initialsFilter} from './filter/InitialsFilter';\nimport {integrationParentsFilter} from './filter/IntegrationParentsFilter';\nimport {metadataFilter} from './filter/MetadataFilter';\nimport {olcaKeyFilter} from './filter/OlcaKeyMappingFilter';\nimport {olcaTypeFilter} from './filter/OlcaTypeMappingFilter';\nimport {propertyAliasFilter} from './filter/PropertyAlias';\nimport {squashFilter} from './filter/SquashFilter';\nimport {timeFilter} from './filter/TimeFilter';\nimport {ttlFilter} from \"./filter/TTLFilter\";\n\n@AngularModuleConfig({\n moduleName: 'filters',\n dependencies: [\n 'xml',\n 'data'\n ]\n})\nexport class FiltersModule {\n constructor() {\n (this).ngRef.filter('boolean', booleanFilter);\n (this).ngRef.filter('count', countFilter);\n (this).ngRef.filter('humanReadable', humanReadableFilter);\n (this).ngRef.filter('humanReadableId', humanReadableIdFilter);\n (this).ngRef.filter('idToDisplayName', idToDisplayNameFilter);\n (this).ngRef.filter('initials', initialsFilter);\n (this).ngRef.filter('integrationParents', integrationParentsFilter);\n (this).ngRef.filter('metadata', metadataFilter);\n (this).ngRef.filter('olcaKey', olcaKeyFilter);\n (this).ngRef.filter('olcaType', olcaTypeFilter);\n (this).ngRef.filter('propertyAlias', propertyAliasFilter);\n (this).ngRef.filter('squash', squashFilter);\n (this).ngRef.filter('time', timeFilter);\n (this).ngRef.filter('ttl', ttlFilter);\n }\n\n config() {}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filters.ts","export function booleanFilter() {\n return function (input, arg) {\n return input ? 'Yes' : 'No';\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/BooleanFilter.ts","import * as angular from 'angular';\n/**\n * @class CountFilter\n * @memberOf module:filters\n * @description Returns object keys length\n */\nexport function countFilter() {\n return function resultFn(input) {\n if (input) {\n if (angular.isString(input)) {\n return input.length;\n } else if (angular.isObject(input)) {\n return Object.keys(input).length;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/CountFilter.ts","export function humanReadableFilter() {\n return function (input) {\n if (!input) {\n return '';\n }\n\n return input\n // replace underlines with spaces\n .replace(/_/g, ' ')\n // insert a space between lower & upper\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // insert a space between a letter sequence and a number\n .replace(/([a-zA-Z]+)([0-9]+)/, '$1 $2')\n // insert a space between a number and a letter sequence\n .replace(/([0-9]+)([a-zA-Z]+)/, '$1 $2')\n // insert a space before last upper in a sequence followed by lower\n .replace(/\\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')\n // uppercase the first character\n .replace(/^./, function (str) {\n return str.toUpperCase();\n })\n .trim();\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/HumanReadableFilter.ts","export function humanReadableIdFilter () {\n return function (input) {\n if (!input) {\n return '';\n }\n\n return input\n // replace underlines with spaces\n .replace(/_/g, ' - ')\n .trim();\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/HumanReadableIdFilter.ts","export function idToDisplayNameFilter(humanReadableIdFilter) {\n \"ngInject\";\n return function (entityId, entityData) {\n if (!entityData || !('displayName' in entityData)) {\n return humanReadableIdFilter(entityId);\n } else {\n return entityData.displayName;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/IdToDisplayNameFilter.ts","export function initialsFilter() {\n return function (input) {\n var words = input.split(' ');\n var result = [];\n if (words.length === 1) {\n if (words[0].length > 5) {\n result.push(words[0].slice(0, 5).toUpperCase());\n } else {\n result.push(words[0].toUpperCase());\n }\n } else {\n words.forEach(function (word) {\n result.push(word.charAt(0).toUpperCase());\n });\n }\n return result.join('');\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/InitialsFilter.ts","export function integrationParentsFilter(humanReadableIdFilter) {\n \"ngInject\";\n return function (integrationId, integrationData, relatedData) {\n if (!integrationData) {\n return humanReadableIdFilter(integrationId);\n }\n\n var mvpdRef = integrationData.entityData.owner;\n var channelRef = integrationData.entityData.serviceProvider;\n\n var related = integrationData.related ? integrationData.related : relatedData.related;\n\n return related[channelRef].entityData.displayName + ' - ' + related[mvpdRef].entityData.displayName;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/IntegrationParentsFilter.ts","export function metadataFilter(x2js) {\n \"ngInject\";\n return function (input, path) {\n let metadata = atob(input);\n if (path) {\n let result = x2js.xml2js(metadata);\n return result;\n } else {\n return metadata;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/MetadataFilter.ts","export function olcaKeyFilter(olcaTypeFilter, idToDisplayNameFilter) {\n \"ngInject\";\n return function (entityKey) {\n var splitKey = entityKey.split(\":\");\n var entityType = splitKey[0];\n var entityId = splitKey[1];\n\n return olcaTypeFilter(entityType) + \": \" + idToDisplayNameFilter(entityId);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/OlcaKeyMappingFilter.ts","export function olcaTypeFilter(Config) {\n \"ngInject\";\n return function (entityType) {\n if (Config.entityTypeMappings && Config.entityTypeMappings[entityType]) {\n return Config.entityTypeMappings[entityType];\n } else {\n return entityType;\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/OlcaTypeMappingFilter.ts","export function propertyAliasFilter(Config, humanReadableFilter) {\n \"ngInject\";\n return function (propertyName) {\n if (Config.propertyNameMappings[propertyName]) {\n return Config.propertyNameMappings[propertyName];\n } else {\n return humanReadableFilter(propertyName);\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/PropertyAlias.ts","export function squashFilter(CacheService) {\n \"ngInject\";\n return function (source, property, context) {\n let result = 'N/A';\n let mvpd;\n if (context === 'integration') {\n mvpd = CacheService.get(source.entityData.owner);\n if (!mvpd) {\n return result;\n }\n result = mvpd.entityData[property];\n console.log();\n if (source.entityData.clientData && source.entityData.clientData[property]) {\n result = source.entityData.clientData[property];\n } else if (mvpd.entityData.clientData && mvpd.entityData.clientData[property]) {\n result = mvpd.entityData.clientData[property];\n }\n }\n if (context === 'mvpd') {\n result = source.entityData[property];\n if (source.entityData.clientData && source.entityData.clientData[property]) {\n result = source.entityData.clientData[property];\n }\n }\n return result;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/SquashFilter.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2018 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\n\nexport function timeFilter() {\n return function (duration, withHour, unit = \"milliseconds\") {\n let out: string = \"\";\n\n if (!duration) {\n return out;\n }\n\n // if you send the duration in another unit of time, transform it to milliseconds\n switch (unit) {\n case \"seconds\":\n duration = duration * 1000;\n break;\n case 'minutes':\n duration = duration * 60 * 1000;\n break;\n default:\n break;\n }\n\n let seconds;\n let minutes;\n let hours;\n let days;\n\n let secondsNumber = Math.floor((duration / 1000) % 60);\n let minutesNumber = Math.floor((duration / (1000 * 60)) % 60);\n let hoursNumber = Math.floor((duration / (1000 * 60 * 60)) % 24);\n let daysNumber = Math.floor((duration / (1000 * 60 * 60 * 24)));\n\n minutesNumber = minutesNumber + 60 * hoursNumber;\n\n minutes = (minutesNumber < 10) ? \"0\" + minutesNumber : minutesNumber;\n seconds = (secondsNumber < 10) ? \"0\" + secondsNumber : secondsNumber;\n\n out = minutes + \":\" + seconds;\n\n if (withHour) {\n minutesNumber = minutesNumber - hoursNumber * 60;\n\n let minutesPrefix = hoursNumber > 0 ? \" \" : \"\";\n let secondsPrefix = minutesNumber > 0 ? \" and \" : \"\";\n\n if (daysNumber > 0) {\n if (daysNumber === 1) {\n days = daysNumber + ' day ';\n } else {\n days = daysNumber + ' days ';\n }\n } else {\n days = \"\";\n }\n\n if (hoursNumber === 0) {\n hours = \"\";\n } else if (hoursNumber === 1) {\n hours = hoursNumber + ' hour';\n } else {\n hours = hoursNumber + ' hours';\n }\n\n if (minutesNumber === 0) {\n minutes = \"\";\n } else if (minutesNumber === 1) {\n minutes = minutesPrefix + minutesNumber + ' minute';\n } else {\n minutes = minutesPrefix + minutesNumber + ' minutes';\n }\n\n if (secondsNumber === 0) {\n seconds = \"\";\n } else if (secondsNumber === 1) {\n seconds = secondsPrefix + seconds + ' second';\n } else {\n seconds = secondsPrefix + seconds + ' seconds';\n }\n\n out = days + hours + minutes + seconds;\n }\n\n return out;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/TimeFilter.ts","export function ttlFilter(ManglerUtil){\n \"ngInject\";\n return function (value, name) {\n let processedTTL = value;\n\n if (name.fieldName.substr(name.fieldName.length - 3) === \"ttl\" && value !== \"Not set\") {\n processedTTL = ManglerUtil.processTTL(value);\n return processedTTL.asString;\n }\n\n return processedTTL;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/filters/filter/TTLFilter.ts","import {AngularModuleConfig} from '../../common/AngularModule';\nimport {ApcCertificatesDirective} from './directive/Certificates/Certificates';\nimport {ApcApplicationsDirective} from './directive/Applications/Applications';\nimport {ApcClientDataDirective} from './directive/ClientData/ClientData';\nimport {ApcComplexInputDirective} from './directive/ComplexInput/ComplexInput';\nimport {ApcImagePlaceholderDirective} from './directive/ImagePlaceholder/ImagePlaceholder';\nimport {ApcManglersDirective} from './directive/Manglers/Manglers';\nimport {ApcOauthConsumerCredentialsDirective} from './directive/OAuthConsumerCredentials/OAuthConsumerCredentials';\nimport {ApcOauth2ClientCredentialsDirective} from './directive/OAuth2ClientCredentials/OAuth2ClientCredentials';\nimport {ApcOAuth2AccessTokenDirective} from \"./directive/OAuth2AccessToken/OAuth2AccessToken\";\nimport {ApcOauthEndpointDirective} from './directive/OAuthEndpoint/OAuthEndpoint';\nimport {ApcPanelListDirective} from './directive/PanelList/PanelList';\nimport {ApcPlatformSwitcherDirective} from './directive/PlatformSwitcher/PlatformSwitcher';\nimport {ApcSamlMetadataInfoDirective} from './directive/SamlMetadataInfo/SamlMetadataInfo';\nimport {ApcSearchboxDirective} from './directive/Searchbox/Searchbox';\nimport {ApcUserMetadataDirective} from './directive/UserMetadata/UserMetadata';\nimport {ApcDurationInputDirective} from \"./directive/DurationInput/DurationInput\";\nimport {ApcAddChannelDirective} from \"./directive/AddChannel/AddChannel\";\nimport {ApcAddProgrammerDirective} from \"./directive/AddProgrammer/AddProgrammer\";\n\nimport {TabsCtrl} from \"./partial/Tabs/Tabs\";\nimport {ApplicationsCtrl} from './directive/Applications/Applications';\nimport {AddApplicationCtrl} from './directive/Applications/Add/AddApplication';\nimport {ViewApplicationCtrl} from './directive/Applications/View/ViewApplication';\nimport {CertificatesCtrl} from './directive/Certificates/Certificates';\nimport {AddCertificateCtrl} from './directive/Certificates/Add/AddCertificate';\nimport {EditCertificateCtrl} from './directive/Certificates/Edit/EditCertificate';\nimport {DeleteCertificateCtrl} from './directive/Certificates/Delete/DeleteCertificate';\nimport {ApcClientDataCtrl} from './directive/ClientData/ClientData';\nimport {ApcComplexInputCtrl} from './directive/ComplexInput/ComplexInput';\nimport {ApcComplexInputModalCtrl} from './directive/ComplexInput/ComplexInput';\nimport {ApcManglersCtrl} from './directive/Manglers/Manglers';\nimport {ApcOauthConsumerCredentialsCtrl} from './directive/OAuthConsumerCredentials/OAuthConsumerCredentials';\nimport {ApcOauth2ClientCredentialsCtrl} from './directive/OAuth2ClientCredentials/OAuth2ClientCredentials';\nimport {ApcOAuth2AccessTokenCtrl} from \"./directive/OAuth2AccessToken/OAuth2AccessToken\";\nimport {ApcOauthEndpointCtrl} from './directive/OAuthEndpoint/OAuthEndpoint';\nimport {ApcPanelListCtrl} from './directive/PanelList/PanelList';\nimport {ApcPlatformSwitcherCtrl} from './directive/PlatformSwitcher/PlatformSwitcher';\nimport {ApcSamlMetadataInfoCtrl} from './directive/SamlMetadataInfo/SamlMetadataInfo';\nimport {ApcSearchboxCtrl} from './directive/Searchbox/Searchbox';\nimport {ApcUserMetadataCtrl} from './directive/UserMetadata/UserMetadata';\nimport {ApcDurationInputCtrl} from \"./directive/DurationInput/DurationInput\";\nimport {ApcAddChannelCtrl} from \"./directive/AddChannel/AddChannel\";\nimport {ApcAddChannelModalCtrl} from \"./directive/AddChannel/AddChannel\";\nimport {ApcAddProgrammerCtrl} from \"./directive/AddProgrammer/AddProgrammer\";\nimport {ApcAddProgrammerModalCtrl} from \"./directive/AddProgrammer/AddProgrammer\";\n\nimport {UniqueChannelValidator} from \"./directive/AddChannel/AddChannel\";\nimport {ChannelIdValidator} from \"./directive/AddChannel/AddChannel\";\nimport {UniqueProgrammerValidator} from \"./directive/AddProgrammer/AddProgrammer\";\nimport {ProgrammerIdValidator} from \"./directive/AddProgrammer/AddProgrammer\";\nimport {ApcCustomSchemeDirective, ApcCustomSchemesCtrl} from './directive/CustomSchemes/CustomSchemes';\nimport {ApcPermissionsDirective, ApcPermissionsCtrl} from './directive/Permissions/Permissions';\nimport {AddPermissionCtrl} from './directive/Permissions/Add/AddPermission';\n\n/**\n * @module ui\n * @description Contains generic UI directives\n */\n@AngularModuleConfig({\n moduleName: 'ui',\n dependencies: [\n 'ui.bootstrap',\n 'core',\n 'security',\n 'data',\n 'filters',\n 'toggle-switch'\n ]\n})\nexport class UIModule {\n constructor() {\n (this).ngRef.constant('SearchEvent', {\n SEARCH: 'onSearch',\n RESET: 'onSearchReset',\n CLEAR: 'onSearchClear'\n });\n\n (this).ngRef.controller('TabsCtrl', TabsCtrl);\n (this).ngRef.controller('ApplicationsCtrl', ApplicationsCtrl);\n (this).ngRef.controller('AddApplicationCtrl', AddApplicationCtrl);\n (this).ngRef.controller('ViewApplicationCtrl', ViewApplicationCtrl);\n (this).ngRef.controller('CertificatesCtrl', CertificatesCtrl);\n (this).ngRef.controller('AddCertificateCtrl', AddCertificateCtrl);\n (this).ngRef.controller('EditCertificateCtrl', EditCertificateCtrl);\n (this).ngRef.controller('DeleteCertificateCtrl', DeleteCertificateCtrl);\n (this).ngRef.controller('ClientDataCtrl', ApcClientDataCtrl);\n (this).ngRef.controller('ComplexInputCtrl', ApcComplexInputCtrl);\n (this).ngRef.controller('ComplexInputModalCtrl', ApcComplexInputModalCtrl);\n (this).ngRef.controller('ManglersCtrl', ApcManglersCtrl);\n (this).ngRef.controller('OauthConsumerCredentialsCtrl', ApcOauthConsumerCredentialsCtrl);\n (this).ngRef.controller('Oauth2ClientCredentials', ApcOauth2ClientCredentialsCtrl);\n (this).ngRef.controller('Oauth2AccessTokenCtrl', ApcOAuth2AccessTokenCtrl);\n (this).ngRef.controller('OauthEndpointCtrl', ApcOauthEndpointCtrl);\n (this).ngRef.controller('PanelListCtrl', ApcPanelListCtrl);\n (this).ngRef.controller('PlatformSwitcherCtrl', ApcPlatformSwitcherCtrl);\n (this).ngRef.controller('SamlMetadataInfo', ApcSamlMetadataInfoCtrl);\n (this).ngRef.controller('SearchboxCtrl', ApcSearchboxCtrl);\n (this).ngRef.controller('UserMetadataCtrl', ApcUserMetadataCtrl);\n (this).ngRef.controller('DurantionInputCtrl', ApcDurationInputCtrl);\n (this).ngRef.controller('AddChannelCtrl', ApcAddChannelCtrl);\n (this).ngRef.controller('AddChannelModalCtrl', ApcAddChannelModalCtrl);\n (this).ngRef.controller('AddProgrammerCtrl', ApcAddProgrammerCtrl);\n (this).ngRef.controller('AddProgrammerModalCtrl', ApcAddProgrammerModalCtrl);\n (this).ngRef.controller('ApcCustomSchemesCtrl', ApcCustomSchemesCtrl);\n (this).ngRef.controller('ApcPermissionsCtrl', ApcPermissionsCtrl);\n (this).ngRef.controller('AddPermissionCtrl', AddPermissionCtrl);\n\n (this).ngRef.directive('apcCertificates', () => new ApcCertificatesDirective());\n (this).ngRef.directive('apcApplications', () => new ApcApplicationsDirective());\n (this).ngRef.directive('apcClientData', () => new ApcClientDataDirective());\n (this).ngRef.directive('apcComplexInput', () => new ApcComplexInputDirective());\n (this).ngRef.directive('apcImagePlaceholder', () => new ApcImagePlaceholderDirective());\n (this).ngRef.directive('apcManglers', () => new ApcManglersDirective());\n (this).ngRef.directive('apcOauthConsumerCredentials', () => new ApcOauthConsumerCredentialsDirective());\n (this).ngRef.directive('apcOauth2ClientCredentials', () => new ApcOauth2ClientCredentialsDirective());\n (this).ngRef.directive('apcOauth2AccessToken', () => new ApcOAuth2AccessTokenDirective());\n (this).ngRef.directive('apcOauthEndpoint', () => new ApcOauthEndpointDirective());\n (this).ngRef.directive('apcPanelList', () => new ApcPanelListDirective());\n (this).ngRef.directive('apcPlatformSwitcher', () => new ApcPlatformSwitcherDirective());\n (this).ngRef.directive('apcSamlMetadataInfo', () => new ApcSamlMetadataInfoDirective());\n (this).ngRef.directive('apcSearchbox', () => new ApcSearchboxDirective());\n (this).ngRef.directive('apcUserMetadata', () => new ApcUserMetadataDirective());\n (this).ngRef.directive('apcDurationInput', () => new ApcDurationInputDirective());\n (this).ngRef.directive('apcAddChannel', () => new ApcAddChannelDirective());\n (this).ngRef.directive('apcAddProgrammer', () => new ApcAddProgrammerDirective());\n (this).ngRef.directive('apcCustomSchemes', () => new ApcCustomSchemeDirective());\n (this).ngRef.directive('apcPermissions', () => new ApcPermissionsDirective());\n\n (this).ngRef.directive('uniqueChannel', () => new UniqueChannelValidator());\n (this).ngRef.directive('validChannelId', () => new ChannelIdValidator());\n (this).ngRef.directive('uniqueProgrammer', () => new UniqueProgrammerValidator());\n (this).ngRef.directive('validProgrammerId', () => new ProgrammerIdValidator());\n }\n\n config($provide) {\n \"ngInject\";\n $provide.decorator('toggleSwitchDirective', function($delegate, NotificationService) {\n let directive = $delegate[0];\n let compile = directive.compile;\n\n directive.compile = function(element, attrs) {\n let link = compile.apply(this, arguments);\n\n let newLink = function (scope, element, attrs, ngModel) {\n link.apply(this, arguments);\n\n let toggle = scope.toggle;\n scope.toggle = function() {};\n\n element.on('click', function() {\n if (!scope.disabled && attrs.confirmation) {\n let message = ngModel.$viewValue ? attrs.confirmationOffMessage : attrs.confirmationOnMessage;\n NotificationService.warnModal('Confirmation', message).result.then(function (success) {\n if (success) {\n toggle();\n }\n });\n } else if (!scope.disabled) {\n toggle();\n }\n });\n };\n\n return newLink;\n };\n\n return $delegate;\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/ui.ts","module.exports = \" Entries: {{data | count}} Entries: {{inheritData[property.propertyName].value | count}} No entries \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/ComplexInput/ComplexInput.tmpl\n// module id = 210\n// module chunks = 0","export class ApcImagePlaceholderDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n name: '@',\n src: '=',\n height: '@',\n fontSize: '@?'\n };\n this.template = require('./ImagePlaceholder.tmpl');\n }\n\n link(scope, element, attrs, fn) {\n if (scope.src === null) {\n scope.error = true;\n } else {\n element.find('img').on('error', function () {\n scope.$apply(function () {\n scope.error = true;\n });\n });\n\n element.find('img').on('load', function() {\n scope.$apply(function () {\n scope.error = false;\n });\n })\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/ImagePlaceholder/ImagePlaceholder.ts","module.exports = \"
                {{(name | initials) || 'No preview available'}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/ImagePlaceholder/ImagePlaceholder.tmpl\n// module id = 212\n// module chunks = 0","module.exports = \"
                {{title}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/OAuthConsumerCredentials/OAuthConsumerCredentials.tmpl\n// module id = 213\n// module chunks = 0","module.exports = \"
                {{title}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/OAuth2ClientCredentials/OAuth2ClientCredentials.tmpl\n// module id = 214\n// module chunks = 0","module.exports = \"
                {{title}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/OAuth2AccessToken/OAuth2AccessToken.tmpl\n// module id = 215\n// module chunks = 0","module.exports = \"
                {{title}}
                \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/OAuthEndpoint/OAuthEndpoint.tmpl\n// module id = 216\n// module chunks = 0","module.exports = \"

                {{panelTitle}}

                0\\\" ng-click=onRowClick(item) ng-class=\\\"{clickable: onItemClick()}\\\"> 0\\\" class=pagination-holder>
                {{column.name}} {{column.name}}

                  No data available

                  \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/PanelList/PanelList.tmpl\n// module id = 217\n// module chunks = 0","module.exports = \"
                  0\\\" ng-click=onRowClick(item) ng-class=\\\"{clickable: onItemClick()}\\\"> 0\\\" class=pagination-holder>
                  {{column.name}} {{column.name}}

                    No data available

                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/PanelList/TableList.tmpl\n// module id = 218\n// module chunks = 0","module.exports = \"
                    Platform Specific Settings
                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/PlatformSwitcher/PlatformSwitcher.tmpl\n// module id = 219\n// module chunks = 0","module.exports = \"
                    SAML Metadata
                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/SamlMetadataInfo/SamlMetadataInfo.tmpl\n// module id = 220\n// module chunks = 0","module.exports = \"
                    0\\\" ng-click=resetSearch()>×
                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/Searchbox/Searchbox.tmpl\n// module id = 221\n// module chunks = 0","module.exports = \"
                    User Metadata Keys
                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/UserMetadata/UserMetadata.tmpl\n// module id = 222\n// module chunks = 0","module.exports = \"
                    days
                    hours
                    min
                    sec

                    Value should be a valid number Value should be positive Value should be integer

                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/DurationInput/DurationInput.tmpl\n// module id = 223\n// module chunks = 0","module.exports = \"
                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/AddChannel/AddChannel.tmpl\n// module id = 224\n// module chunks = 0","module.exports = \"
                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/AddProgrammer/AddProgrammer.tmpl\n// module id = 225\n// module chunks = 0","import * as _ from \"lodash\";\nimport * as angular from \"angular\";\n\nexport class AddApplicationCtrl {\n constructor($scope, $uibModalInstance, entity, platforms, applicationTypes, ApplicationService) {\n \"ngInject\";\n\n let ALL = 'All channels';\n\n $scope.addPlatformReference = function (item) {\n return '@Platform:' + item;\n };\n\n $scope.addProgrammerReference = function (item) {\n return '@Programmer:' + item;\n };\n\n $scope.addServiceProviderReference = function (item) {\n return '@ServiceProvider:' + item;\n };\n\n $scope.removeServiceProviderReference = function (item) {\n return item.trim().replace('@ServiceProvider:', '');\n };\n\n $scope.isChannel = function () {\n return entity.type === 'CHANNEL';\n };\n\n $scope.isProgrammer = function () {\n return entity.type === 'PROGRAMMER';\n };\n\n // Create new application instance\n $scope.application = ApplicationService.getApplicationDefinition(applicationTypes[0]).entityData;\n\n $scope.init = function () {\n $scope.platforms = platforms;\n $scope.domains = entity.relatedData.domains;\n $scope.applicationTypes = applicationTypes;\n\n if ($scope.isChannel()) {\n $scope.selectedServiceProvider = entity.data.entityData.id;\n // Service provider list: a list with one single item, being the current channel\n $scope.application.serviceProviders = [$scope.selectedServiceProvider];\n // Initialize owner, as the programmer of the current channel\n $scope.application.owner = entity.data.entityData.programmer;\n } else if ($scope.isProgrammer()) {\n $scope.selectedServiceProvider = angular.copy(ALL);\n // Initialize service provider options\n $scope.serviceProviderOptions = [ALL].concat(entity.data.entityData.serviceProviders.map($scope.removeServiceProviderReference));\n // Initialize owner, as current programmer\n $scope.application.owner = $scope.addProgrammerReference(entity.data.entityData.id);\n }\n };\n\n $scope.init();\n\n $scope.allPlatformsSelected = function () {\n let filtered = $scope.platforms.filter((item) => {\n return $scope.application.platforms.indexOf(item) < 0;\n });\n return _.isEmpty(filtered);\n };\n\n $scope.updateProvider = function (selectedServiceProvider) {\n $scope.selectedServiceProvider = selectedServiceProvider;\n };\n\n $scope.updateRegisteredApplication = function () {\n // Update service providers and add references\n if ($scope.selectedServiceProvider === ALL) {\n $scope.application.serviceProviders = [];\n } else {\n $scope.application.serviceProviders = [$scope.addServiceProviderReference($scope.selectedServiceProvider)];\n }\n\n // Update platforms and add references\n if ($scope.allPlatformsSelected() === true) {\n $scope.application.platforms = [];\n } else {\n $scope.application.platforms = $scope.application.platforms.map($scope.addPlatformReference);\n }\n\n // Create new application entity\n let newAppEntity = {\n key: '',\n entityData: {}\n };\n newAppEntity.key = 'RegisteredApplication:' + $scope.application.id;\n newAppEntity.entityData = $scope.application;\n\n $scope.application = newAppEntity;\n };\n\n\n $scope.ok = function () {\n $scope.updateRegisteredApplication();\n $uibModalInstance.close({\n application: $scope.application\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close({});\n };\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Applications/Add/AddApplication.ts","import * as angular from 'angular';\nimport * as _ from 'lodash';\n\nexport class ViewApplicationCtrl {\n constructor($scope, $uibModalInstance, application, platforms) {\n \"ngInject\";\n\n $scope.removeServiceProviderReference = function (item) {\n return item.trim().replace('@ServiceProvider:', '');\n };\n\n $scope.removePlatformReference = function (item) {\n return item.trim().replace('@Platform:', '');\n };\n\n $scope.application = angular.copy(application);\n\n $scope.init = function () {\n $scope.application.entityData.platforms = $scope.application.entityData.platforms.map($scope.removePlatformReference);\n if (_.isEmpty($scope.application.entityData.serviceProviders)) {\n $scope.application.entityData.serviceProviders = ['All channels'];\n } else {\n $scope.application.entityData.serviceProviders = $scope.application.entityData.serviceProviders.map($scope.removeServiceProviderReference);\n }\n $scope.platformNames = $scope.application.entityData.platforms.map(function (platformId) {\n return platforms[platformId].description;\n });\n };\n\n $scope.init();\n\n $scope.cancel = function () {\n $uibModalInstance.close({});\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Applications/View/ViewApplication.ts","import * as angular from \"angular\";\nimport * as utf8 from \"utf8\";\n\nexport class AddCertificateCtrl {\n constructor($scope, $uibModalInstance, data, certificates, platforms, encryptionData, CertificateService, CertificateUtils, EncryptionLevel) {\n \"ngInject\";\n\n /**\n * User metadata encryption certificate id\n */\n let userMetadataEncryptionCertificateId = CertificateUtils.getUserMetadataEncryptionCertificateId(\n encryptionData.level,\n encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER,\n encryptionData.channelUserMetadataEncryptionCertificate.id,\n encryptionData.programmerUserMetadataEncryptionCertificate.id\n );\n\n /**\n * User metadata encryption certificate serial number\n */\n let userMetadataEncryptionCertificateSerialNumber = CertificateUtils.getUserMetadataEncryptionCertificateSerialNumber(\n encryptionData.level,\n encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER,\n encryptionData.channelUserMetadataEncryptionCertificate.id,\n encryptionData.programmerUserMetadataEncryptionCertificate.id\n );\n\n let initialCertificatesValues = {\n certificates: certificates,\n userMetadataEncryptionCertificateId: userMetadataEncryptionCertificateId,\n encryptionValue: false\n };\n\n $scope.data = data;\n $scope.platforms = platforms;\n $scope.encryptionValue = angular.copy(initialCertificatesValues.encryptionValue);\n $scope.hasErrors = false;\n\n /**\n * Gets the default list of platforms, which has all 'enabled' properties set to true.\n * When adding a new certificate, platforms should be enabled by default\n */\n let getInitialPlatformsList = () => {\n let platforms = [];\n for (let platformId of Object.keys($scope.platforms)) {\n let platformDetails = angular.copy($scope.platforms[platformId]);\n platformDetails.enabled = true;\n platforms.push(platformDetails);\n }\n return platforms;\n }\n\n $scope.platforms = getInitialPlatformsList();\n\n $scope.certificate = {\n \"content\": \"\",\n \"platforms\": $scope.platforms\n };\n\n /**\n * Creates a specific warning message for every possible warning case\n */\n $scope.getEncryptionCertificateWarningMessage = function () {\n if ($scope.encryptionValue === true) {\n if (userMetadataEncryptionCertificateSerialNumber) {\n return `Are you sure you want to overwrite the current encryption certificate (serial id: ${userMetadataEncryptionCertificateSerialNumber})? By clicking OK, the user metadata encryption certificate will be updated.`;\n } else {\n return 'Are you sure you want to enable the encryption certificate? By clicking OK, the user metadata encryption certificate will be updated.';\n }\n }\n };\n\n /**\n * Get current certificate platform ids\n */\n let getPlatformIds = () => {\n let platforms = [];\n for (let platform in $scope.certificate.platforms) {\n if ($scope.certificate.platforms[platform].enabled) {\n platforms.push('@Platform:' + $scope.certificate.platforms[platform].id);\n }\n }\n return platforms;\n }\n\n /**\n * Updates the encryption certificate value at the entity data level\n */\n $scope.updateEncryptionCertificate = function (key) {\n if ($scope.encryptionValue) {\n $scope.data.entityData.userMetadataEncryptionCertificateId = key;\n }\n };\n\n /**\n * Checks if the encryption value of the selected certificate changed\n */\n $scope.encryptionValueChanged = function () {\n return ($scope.encryptionValue !== initialCertificatesValues.encryptionValue);\n };\n\n /**\n * Saves certificate details: content, platforms, encryption data\n */\n $scope.saveCertificate = function (certificateInfo) {\n return CertificateService.hashCertificate($scope.certificate.content).then(function (hash) {\n initialCertificatesValues.certificates[hash] = {\n base64Certificate: $scope.certificate.content,\n certificateInfo: certificateInfo,\n certificateKey: hash,\n platforms: $scope.platforms\n };\n $scope.data.entityData.certificates[hash] = {\n \"certificate\": $scope.certificate.content,\n \"platforms\": getPlatformIds()\n };\n\n $scope.updateEncryptionCertificate(hash);\n\n $uibModalInstance.close({\n certificates: initialCertificatesValues.certificates,\n userMetadataEncryptionCertificateId: $scope.data.entityData.userMetadataEncryptionCertificateId\n });\n });\n };\n\n /**\n * Corrects the certificate content, encodes it into base 64 and checks if it can be successfully parsed.\n * If yes, saves it. Otherwise, marks it as having errors.\n */\n $scope.ok = function () {\n if (!$scope.certificate.content || $scope.certificate.content.length < 256) {\n $scope.hasErrors = true;\n return;\n }\n\n let content = CertificateUtils.normalizeContent($scope.certificate.content);\n content = btoa(utf8.encode(content));\n CertificateService.parseCertificate(content).then(function (certificateInfo) {\n if (certificateInfo.parseSuccessful) {\n $scope.certificate.content = content;\n $scope.saveCertificate(certificateInfo);\n } else {\n $scope.hasErrors = true;\n }\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close({\n certificates: initialCertificatesValues.certificates,\n userMetadataEncryptionCertificateId: initialCertificatesValues.userMetadataEncryptionCertificateId\n });\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Certificates/Add/AddCertificate.ts","import * as angular from \"angular\";\n\nexport class EditCertificateCtrl {\n constructor($scope, $uibModalInstance, data, certificates, platforms, encryptionData, selectedCertificateKey, CertificateUtils, EncryptionLevel) {\n \"ngInject\";\n\n /**\n * User metadata encryption certificate id.\n */\n let userMetadataEncryptionCertificateId =\n CertificateUtils.getUserMetadataEncryptionCertificateId(\n encryptionData.level,\n encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER,\n encryptionData.channelUserMetadataEncryptionCertificate.id,\n encryptionData.programmerUserMetadataEncryptionCertificate.id\n );\n\n /**\n * User metadata encryption certificate serial number.\n */\n let userMetadataEncryptionCertificateSerialNumber =\n CertificateUtils.getUserMetadataEncryptionCertificateSerialNumber(\n encryptionData.level,\n encryptionData.channelUserMetadataEncryptionCertificate.isSet ? EncryptionLevel.CHANNEL : EncryptionLevel.PROGRAMMER,\n encryptionData.channelUserMetadataEncryptionCertificate.serialNumber,\n encryptionData.programmerUserMetadataEncryptionCertificate.serialNumber\n );\n\n let initialCertificatesValues = {\n certificates: certificates,\n encryptionData: {\n encryptionValue: (selectedCertificateKey === userMetadataEncryptionCertificateId),\n userMetadataEncryptionCertificateId: userMetadataEncryptionCertificateId,\n level: encryptionData.level\n }\n };\n\n $scope.data = data;\n $scope.platforms = platforms;\n $scope.certificates = angular.copy(certificates);\n $scope.selectedCertificateKey = angular.copy(selectedCertificateKey);\n $scope.userMetadataEncryptionCertificateId = angular.copy(initialCertificatesValues.encryptionData.userMetadataEncryptionCertificateId);\n $scope.encryptionValue = angular.copy(initialCertificatesValues.encryptionData.encryptionValue);\n\n /**\n * Checks if the encryption value of the selected certificate changed\n */\n $scope.encryptionValueChanged = function () {\n return ($scope.encryptionValue !== initialCertificatesValues.encryptionData.encryptionValue);\n };\n\n /**\n * Creates a specific warning message for every possible warning case\n */\n $scope.getEncryptionCertificateWarningMessage = function () {\n if ($scope.encryptionValue === true) {\n if (userMetadataEncryptionCertificateSerialNumber) {\n return `Are you sure you want to overwrite the current encryption certificate (serial id: ${userMetadataEncryptionCertificateSerialNumber})? By clicking OK, the user metadata encryption certificate will be updated.`;\n } else {\n return 'Are you sure you want to enable the encryption certificate? By clicking OK, the user metadata encryption certificate will be updated.';\n }\n } else {\n switch (encryptionData.level) {\n case EncryptionLevel.CHANNEL :\n let msg = 'Are you sure you want to disable the current channel encryption certificate? ';\n if (encryptionData.programmerUserMetadataEncryptionCertificate.isSet) {\n return `${msg} After disabling it, the programmer level certificate will be used for encryption (serial id: ${encryptionData.programmerUserMetadataEncryptionCertificate.serialNumber})`;\n } else {\n return `${msg} No encryption certificate is set at platform level. User metadata won't be encrypted.`;\n }\n case EncryptionLevel.PROGRAMMER :\n return 'Are you sure you want to disable the encryption certificate set at programmer level?';\n }\n }\n };\n\n /**\n * Updates platform configuration at the entity data level\n */\n let updatePlatformData = function (platform) {\n let enabled = platform.enabled;\n let entityDataPlatforms = $scope.data.entityData.certificates[$scope.selectedCertificateKey].platforms;\n let index = entityDataPlatforms.indexOf('@Platform:' + platform.id);\n if (index === -1) {\n // If platform is enabled, add it to platform data\n if (enabled) {\n entityDataPlatforms.push('@Platform:' + platform.id);\n }\n } else {\n // If the platform was disabled, remove it from entity data\n if (!enabled) {\n entityDataPlatforms.splice(index, 1);\n }\n }\n };\n\n /**\n * Updates the encryption certificate value at the entity data level\n */\n let updateEncryptionCertificate = function () {\n if ($scope.encryptionValue) {\n $scope.data.entityData.userMetadataEncryptionCertificateId = $scope.selectedCertificateKey;\n } else {\n $scope.data.entityData.userMetadataEncryptionCertificateId = null;\n }\n };\n\n /**\n * Updates entity data configuration - platforms and user metadata encryption certificate, if changed\n */\n let updateEntityData = function () {\n $scope.certificates[selectedCertificateKey].platforms.forEach(function (platform) {\n updatePlatformData(platform);\n });\n\n if ($scope.encryptionValueChanged() === true) {\n updateEncryptionCertificate();\n }\n };\n\n $scope.ok = function () {\n updateEntityData();\n $uibModalInstance.close({\n certificates: $scope.certificates,\n userMetadataEncryptionCertificateId: $scope.data.entityData.userMetadataEncryptionCertificateId\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close({\n certificates: initialCertificatesValues.certificates,\n userMetadataEncryptionCertificateId: initialCertificatesValues.encryptionData.userMetadataEncryptionCertificateId\n });\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Certificates/Edit/EditCertificate.ts","import * as angular from \"angular\";\n\nexport class DeleteCertificateCtrl {\n constructor($scope, $uibModalInstance, data, certificates, encryptionData, selectedCertificateKey, EncryptionLevel) {\n \"ngInject\";\n\n let initialCertificatesValues = {\n certificates: angular.copy(certificates),\n userMetadataEncryptionCertificateId: data.entityData.userMetadataEncryptionCertificateId\n };\n\n $scope.data = data;\n $scope.certificates = angular.copy(initialCertificatesValues.certificates);\n $scope.selectedCertificateKey = selectedCertificateKey;\n\n /**\n * Verifies if the current certificate is an encryption certificate\n */\n $scope.isEncryptionCertificate = function () {\n return (selectedCertificateKey === data.entityData.userMetadataEncryptionCertificateId);\n };\n\n $scope.encryptionCertificate = function () {\n if ($scope.isEncryptionCertificate()) {\n data.entityData.userMetadataEncryptionCertificateId = null;\n return null;\n } else {\n return data.entityData.userMetadataEncryptionCertificateId;\n }\n };\n\n /**\n * Creates a specific warning message for every possible warning case\n */\n $scope.getEncryptionCertificateWarningMessage = function () {\n let msg = 'This certificate is also used for user metadata encryption. ';\n switch (encryptionData.level) {\n case EncryptionLevel.PROGRAMMER :\n return `${msg}Removing it will impact retrieval of encrypted user metadata.`;\n case EncryptionLevel.CHANNEL :\n if (encryptionData.programmerUserMetadataEncryptionCertificate.isSet) {\n return `${msg}After disabling it, the programmer level certificate will be used for encryption (serial id: ${encryptionData.programmerUserMetadataEncryptionCertificate.serialNumber})`;\n } else {\n return `${msg} No encryption certificate is set at platform level. User metadata won't be encrypted.`;\n }\n }\n };\n\n /**\n * Removes current certificate from entity data\n */\n $scope.updateEntityData = function () {\n delete $scope.certificates[selectedCertificateKey];\n delete $scope.data.entityData.certificates[selectedCertificateKey];\n };\n\n $scope.ok = function () {\n $scope.updateEntityData();\n $uibModalInstance.close({\n certificates: $scope.certificates,\n userMetadataEncryptionCertificateId: $scope.encryptionCertificate()\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close({\n certificates: initialCertificatesValues.certificates,\n userMetadataEncryptionCertificateId: initialCertificatesValues.userMetadataEncryptionCertificateId\n });\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Certificates/Delete/DeleteCertificate.ts","export class ApcCustomSchemeDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n parent: '='\n };\n this.template = require('./CustomSchemes.tmpl');\n this.controller = ApcCustomSchemesCtrl;\n }\n}\n\nexport class ApcCustomSchemesCtrl {\n constructor($scope, CustomSchemeService, UserService) {\n \"ngInject\";\n $scope.hasWriteRole = UserService.hasRole(\"ROLE_CONSOLE_WRITE\");\n\n $scope.generateNewCustomScheme = function () {\n if ($scope.parent) {\n CustomSchemeService.generateCustomSchemeForChannel($scope.data.entityData.id).then(function (response) {\n if(!$scope.data.entityData.customSchemes) {\n $scope.data.entityData.customSchemes = [];\n }\n $scope.data.entityData.customSchemes.push(response.data);\n })\n } else {\n CustomSchemeService.generateCustomSchemeForProgrammer($scope.data.entityData.id).then(function (response) {\n if(!$scope.data.entityData.customSchemes) {\n $scope.data.entityData.customSchemes = [];\n }\n $scope.data.entityData.customSchemes.push(response.data);\n })\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/CustomSchemes/CustomSchemes.ts","module.exports = \"
                    0\\\">
                    Inherited Custom Schemes from {{parent.entityData.displayName}} programmer
                    {{customScheme}}
                    Custom Schemes
                    {{customScheme}}

                    No data available

                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/CustomSchemes/CustomSchemes.tmpl\n// module id = 233\n// module chunks = 0","export class ApcPermissionsDirective {\n public restrict;\n public replace;\n public scope;\n public template;\n public controller;\n\n constructor() {\n this.restrict = 'E';\n this.replace = true;\n this.scope = {\n data: '=',\n parent: '='\n };\n this.template = require('./Permissions.tmpl');\n this.controller = ApcPermissionsCtrl;\n }\n}\n\ninterface GroupEntry {\n groupName: string;\n permissions: Set;\n}\n\nexport class ApcPermissionsCtrl {\n private initialGroups;\n\n constructor($scope, $uibModal) {\n \"ngInject\";\n\n $scope.hasData = false;\n $scope.parentHasData = false;\n\n $scope.permissionOptions = new Map();\n $scope.permissionOptions.set('read', {value: 'read', label: 'READ'});\n $scope.permissionOptions.set('write', {value: 'write', label: 'WRITE'});\n\n for (const permission in $scope.data.entityData.permissions) {\n if ($scope.data.entityData.permissions.hasOwnProperty(permission) && !$scope.permissionOptions.get(permission)) {\n $scope.permissionOptions.set(permission, {value: permission, label: permission.toUpperCase()})\n }\n }\n\n $scope.isSelected = (groupPermission, permission) => {\n return groupPermission.permissions.has(permission.value);\n };\n\n $scope.removeGroup = groupPermission => {\n this.initialGroups.delete(groupPermission.groupName);\n for (let permission of Array.from(groupPermission.permissions.values())) {\n $scope.data.entityData.permissions[permission.toString()]\n .splice($scope.data.entityData.permissions[permission.toString()].indexOf(groupPermission.groupName), 1);\n }\n this.processData($scope);\n };\n\n $scope.onPermissionChange = (groupPermission, value, targetPermission) => {\n if (value) {\n if (!$scope.data.entityData.permissions[targetPermission.value]) {\n $scope.data.entityData.permissions[targetPermission.value] = [];\n }\n $scope.data.entityData.permissions[targetPermission.value].push(groupPermission.groupName);\n } else {\n $scope.data.entityData.permissions[targetPermission.value]\n .splice($scope.data.entityData.permissions[targetPermission.value].indexOf(groupPermission.groupName), 1);\n }\n this.processData($scope);\n };\n\n let openAddModal = () => {\n let addModal = $uibModal.open({\n templateUrl: 'AddPermission.html',\n controller: 'AddPermissionCtrl',\n resolve: {},\n backdrop: 'static'\n });\n\n addModal.result.then((result) => {\n if (result.groupName) {\n if (!$scope.data.entityData.permissions) {\n $scope.data.entityData.permissions = {};\n }\n if (!$scope.data.entityData.permissions.read) {\n $scope.data.entityData.permissions = {'read': []};\n }\n $scope.data.entityData.permissions.read.push(result.groupName);\n this.initialGroups.set(result.groupName, {});\n this.processData($scope);\n }\n });\n };\n\n $scope.createPermissionGroup = () => {\n openAddModal();\n };\n\n this.processData($scope);\n this.initialGroups = $scope.groupPermissions;\n this.processParentData($scope);\n }\n\n private processData($scope) {\n $scope.groupPermissions = new Map();\n for (const permissionBucketKey of Array.from($scope.permissionOptions.keys())) {\n const permissionBucket = $scope.permissionOptions.get(permissionBucketKey);\n if ($scope.data.entityData.permissions && $scope.data.entityData.permissions[permissionBucket.value]) {\n for (const group of $scope.data.entityData.permissions[permissionBucket.value]) {\n let groupEntry = $scope.groupPermissions.get(group);\n if (!groupEntry) {\n groupEntry = {\n groupName: group,\n permissions: new Set()\n };\n }\n groupEntry.permissions.add(permissionBucket.value);\n $scope.groupPermissions.set(group, groupEntry);\n }\n }\n }\n\n if (this.initialGroups) {\n for (const initialGroup of Array.from(this.initialGroups.keys())) {\n if (!$scope.groupPermissions.get(initialGroup)) {\n $scope.groupPermissions.set(initialGroup, {\n groupName: initialGroup,\n permissions: new Set()\n })\n }\n }\n }\n\n $scope.groupPermissionsList = Array.from($scope.groupPermissions.values()).sort((a, b) => {\n return a['groupName'] === b['groupName'] ? 0 : a['groupName'] > b['groupName'] ? 1 : -1;\n });\n $scope.permissionOptionsList = Array.from($scope.permissionOptions.values());\n\n $scope.hasData = $scope.groupPermissionsList.length > 0;\n }\n\n private processParentData($scope) {\n if ($scope.parent) {\n $scope.parentGroupPermissions = new Map();\n for (const permissionBucketKey of Array.from($scope.permissionOptions.keys())) {\n const permissionBucket = $scope.permissionOptions.get(permissionBucketKey);\n if ($scope.parent.entityData.permissions && $scope.parent.entityData.permissions[permissionBucket.value]) {\n for (const group of $scope.parent.entityData.permissions[permissionBucket.value]) {\n let groupEntry = $scope.parentGroupPermissions.get(group);\n if (!groupEntry) {\n groupEntry = {\n groupName: group,\n permissions: new Set()\n };\n }\n groupEntry.permissions.add(permissionBucket.value);\n $scope.parentGroupPermissions.set(group, groupEntry);\n }\n }\n }\n\n $scope.parentGroupPermissionsList = Array.from($scope.parentGroupPermissions.values()).sort((a, b) => {\n return a['groupName'] === b['groupName'] ? 0 : a['groupName'] > b['groupName'] ? 1 : -1;\n });\n $scope.parentHasData = $scope.parentGroupPermissionsList.length > 0;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Permissions/Permissions.ts","module.exports = \"
                    Group permissions explained
                    This section is for managing group permissions for the current entity. The users that belong to a certain group will have read/write permissions for this entity and all its sub-entities.
                    For example, if a user it's part of the read group at the programmer level, it will have read access to that specific programmer and all of it's channels. If the same user it's also part of the write group for a specific channel, it will also have write access to that specific channel.

                    Inherited Permissions from {{parent.entityData.displayName}} programmer

                    Group ID {{permission.label}}
                    {{groupPermission.groupName}}
                    Group ID {{permission.label}} Remove
                    {{groupPermission.groupName}}

                    No data available

                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/ui/directive/Permissions/Permissions.tmpl\n// module id = 235\n// module chunks = 0","export class AddPermissionCtrl {\n constructor($scope, $uibModalInstance) {\n \"ngInject\";\n\n $scope.groupName = '';\n\n $scope.ok = function () {\n $uibModalInstance.close({\n groupName: $scope.groupName\n });\n };\n\n $scope.cancel = function () {\n $uibModalInstance.close({});\n };\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/ui/directive/Permissions/Add/AddPermission.ts","import {AngularModuleConfig} from \"../../common/AngularModule\";\nimport {ReportItemCtrl} from \"./partial/ReportItem/ReportItem\";\nimport {TabsCtrl} from \"../ui/partial/Tabs/Tabs\";\nimport reports from './reportlist';\n\n@AngularModuleConfig({\n moduleName: 'report',\n dependencies: ['ui.bootstrap', 'ui.router', 'core', 'data']\n})\nexport class ReportModule {\n constructor() {\n (this).ngRef.controller('ReportItemCtrl', ReportItemCtrl);\n }\n\n public config($stateProvider, States) {\n \"ngInject\";\n\n let basicView = {\n template: require('./partial/ReportItem/ReportItem.tmpl'),\n controller: ReportItemCtrl\n };\n\n $stateProvider.state(States.ReportAuthnData.name, {\n abstract: States.ReportAuthnData.abstract,\n url: States.ReportAuthnData.url,\n ncyBreadcrumb: {\n label: States.ReportAuthnData.overrideDisplayName\n },\n views: {\n 'page@Base': {\n template: require('./../core/template/tabs-layout.tmpl'),\n controller: TabsCtrl\n },\n 'tabs@Base.Report': {\n template: require('../ui/partial/Tabs/Tabs.tmpl')\n },\n 'tabContent@Base.Report': {\n template: require('./partial/ReportItem/ReportItem.tmpl'),\n controller: ReportItemCtrl,\n },\n 'ttlReportTabContent@Base.Report': {\n templateUrl: function() {\n return 'module/ui/template/reports/AuthNReport.html';\n }\n },\n 'entityItemBasic@Base.Report': basicView\n },\n resolve: {\n tabs: function (States) {\n var result = [];\n result.push({\n state: States.ReportAuthnData,\n id: States.ReportAuthnData.id\n });\n result.push({\n state: States.ReportAuthzData,\n id: States.ReportAuthzData.id\n });\n result.push({\n state: States.ReportSSOData,\n id: States.ReportSSOData.id\n });\n return result;\n },\n selectedReport: function() {\n return reports.find((report) => report.id === 'authnReport');\n },\n serviceProviderList: function (ChannelService) {\n return ChannelService.getAll().then(function (response) {\n return response.data;\n });\n },\n mvpdList: function(MvpdGenericService) {\n return MvpdGenericService.getAll().then(function(response) {\n return response.data;\n });\n },\n integrationList: function(IntegrationService) {\n return IntegrationService.getAllIntegrations().then(function(response) {\n return response.data;\n });\n }\n }\n });\n\n $stateProvider.state(States.ReportAuthzData.name, {\n abstract: States.ReportAuthzData.abstract,\n url: States.ReportAuthzData.url,\n ncyBreadcrumb: {\n label: States.ReportAuthzData.displayName\n },\n views: {\n 'tabContent@Base.Report': {\n template: require('./partial/ReportItem/ReportItem.tmpl'),\n controller: ReportItemCtrl,\n },\n 'ttlReportTabContent@Base.Report.Authz': {\n templateUrl: function() {\n return 'module/ui/template/reports/AuthZReport.html';\n }\n },\n 'entityItemBasic@Base.Report': basicView\n },\n resolve: {\n selectedReport: function() {\n return reports.find((report) => report.id === 'authzReport');\n }\n }\n });\n\n $stateProvider.state(States.ReportSSOData.name, {\n abstract: States.ReportSSOData.abstract,\n url: States.ReportSSOData.url,\n ncyBreadcrumb: {\n label: States.ReportSSOData.displayName\n },\n views: {\n 'tabContent@Base.Report': {\n template: require('./partial/ReportItem/ReportItem.tmpl'),\n controller: ReportItemCtrl,\n },\n 'ssoReportTabContent@Base.Report.SSO': {\n templateUrl: function() {\n return 'module/ui/template/reports/SSOReport.html';\n }\n },\n 'entityItemBasic@Base.Report': basicView\n },\n resolve: {\n selectedReport: function() {\n return reports.find((report) => report.id === 'ssoReport');\n }\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/report/report.ts","/**\n * @class ReportItemCtrl\n * @memberOf module:report\n * @param {Object} $scope - Angular scope\n * @param {module:core.States} States - Application states\n * @param {module:data.BulkService} BulkService - Bulk service\n * @param {module:data.IntegrationService} IntegrationService - Integrations service\n */\n\nimport * as _ from \"lodash\";\n\nexport class ReportItemCtrl {\n constructor($rootScope, $scope, $state, Config, States, serviceProviderList, mvpdList, selectedReport, ReportService, integrationList) {\n \"ngInject\";\n\n $scope.$on(\"onPageChange\", function(){\n const tableListElement = document.getElementById('table-list');\n window.scrollTo(0, window.scrollY-tableListElement.offsetHeight);\n });\n\n /**\n * @name module:report.ReportItemCtrl#pageSize\n * @type {Number}\n * @default Config.PAGE_SIZE\n * @description Page size used by {@link module:ui.PanelListDirective#pageSize}\n */\n $scope.pageSize = Config.PAGE_SIZE;\n\n /**\n * @name module:report.ReportItemCtrl#service\n * @type {Object}\n * @description Data retrieval service. Used by {@link module:ui.PanelListDirective#service}\n */\n $scope.service = ReportService;\n\n ReportService.selectedReport = selectedReport;\n\n $scope.columns = selectedReport.columns;\n $scope.renderer = selectedReport.renderer;\n\n $scope.data = {entities: []};\n\n $scope.reportStatus = \"Loading Data\";\n\n $scope.selectedChannelsList = [];\n $scope.selectedMvpdsList = [];\n\n integrationList = integrationList.entities;\n integrationList.sort((a, b) => {\n if (a.entityData.serviceProvider === b.entityData.serviceProvider) {\n return a.entityData.owner > b.entityData.owner ? 1 : -1;\n }\n return a.entityData.serviceProvider > b.entityData.serviceProvider ? 1 : -1;\n });\n\n /**\n * @name module:report.ReportItemCtrl\n * @description For populating data of report\n */\n $scope.getData = () => {\n ReportService.selectedChannelsList = $scope.selectedChannelsList;\n ReportService.selectedMvpdsList = $scope.selectedMvpdsList;\n\n ReportService.finalData = integrationList\n .filter((integration) => $scope.selectedChannelsList.some((channel) => channel.key === integration.entityData.serviceProvider.split('@')[1]))\n .filter((integration) => $scope.selectedMvpdsList.some((mvpd) => mvpd.key === integration.entityData.owner.split('@')[1]));\n\n $scope.loading = true;\n\n ReportService.getPage(1, \"\", \"\", \"\").then((response) => {\n $scope.data = response.data;\n $scope.loading = false;\n });\n };\n\n /**\n * @name module:report.ReportItemCtrl\n * @description For populating Service Provider List in dropdown\n */\n $scope.getAvailableChannelsList = () => {\n $scope.availableChannelsList = (serviceProviderList.entities).sort((a, b) => a.entityData.displayName > b.entityData.displayName ? 1 : -1);\n\n _.forEach($scope.availableChannelsList, function(channel) {\n // Select all channels by default\n channel.selected = true;\n });\n\n $scope.selectedChannelsList = $scope.availableChannelsList.filter((channel) => channel.selected === true);\n\n // Determine if all available channels where selected\n $scope.selectAllChannels = $scope.selectedChannelsList.length !== 0 && $scope.availableChannelsList.length === $scope.selectedChannelsList.length;\n\n }\n\n /**\n * @name module:report.ReportItemCtrl\n * @description For populating MVPD List in dropdown according to the channel selected\n */\n $scope.getAvailableMVPDsList = () => {\n // Compute available MVPDs for selected channels list\n let availableIntegrations = new Set();\n\n _.forEach($scope.selectedChannelsList, function(channel) {\n let integrations = Object.keys(channel.entityData.integrations);\n\n _.forEach(integrations, function(integration) {\n availableIntegrations.add(integration);\n });\n });\n\n $scope.availableMvpdsList = [];\n\n _.forEach(Array.from(availableIntegrations), function(integration: string) {\n let mvpd = mvpdList.entities.find((m) => m.key === integration.split('@')[1]);\n\n if (mvpd) {\n // Select all available MVPDs by default\n mvpd.selected = true;\n\n $scope.availableMvpdsList.push(mvpd);\n }\n });\n\n $scope.availableMvpdsList = ($scope.availableMvpdsList).sort((a, b) => a.entityData.displayName > b.entityData.displayName ? 1 : -1);\n\n $scope.selectedMvpdsList = $scope.availableMvpdsList.filter((mvpd) => mvpd.selected === true);\n\n // Determine if all available MVPDs where selected\n $scope.selectAllMvpds = $scope.selectedMvpdsList.length !== 0 && $scope.availableMvpdsList.length === $scope.selectedMvpdsList.length;\n };\n\n /**\n * @name module:report.ReportItemCtrl\n * @description On selection of channel in filters, method updates the data\n */\n $scope.selectChannel = (channel) => {\n if (!channel) {\n $scope.selectAllChannels = !$scope.selectAllChannels;\n\n if ($scope.selectAllChannels === false) {\n // Deselect all channels\n _.forEach($scope.selectedChannelsList, function(selectedChannel) {\n selectedChannel.selected = false;\n });\n\n $scope.selectedChannelsList = [];\n } else {\n // Select all channels\n $scope.getAvailableChannelsList();\n }\n } else {\n channel.selected = !channel.selected;\n\n if (channel.selected === false) {\n $scope.selectAllChannels = false;\n }\n\n $scope.selectedChannelsList = $scope.availableChannelsList.filter((availableChannel) => availableChannel.selected === true);\n\n if ($scope.selectedChannelsList.length === $scope.availableChannelsList.length) {\n $scope.selectAllChannels = true;\n }\n }\n\n $scope.getAvailableMVPDsList();\n\n $scope.getData();\n };\n\n /**\n * @name module:report.ReportItemCtrl\n * @description On selection of mvpds in filters, method updates the data\n */\n $scope.selectMvpd = (mvpd) => {\n if (!mvpd) {\n $scope.selectAllMvpds = !$scope.selectAllMvpds;\n\n if ($scope.selectAllMvpds === false) {\n _.forEach($scope.selectedMvpdsList, function(selectedMvpd) {\n selectedMvpd.selected = false;\n });\n\n $scope.selectedMvpdsList = [];\n } else {\n $scope.getAvailableMVPDsList();\n }\n } else {\n mvpd.selected = !mvpd.selected;\n\n if (mvpd.selected === false) {\n $scope.selectAllMvpds = false;\n }\n\n $scope.selectedMvpdsList = $scope.availableMvpdsList.filter((selectedMvpd) => selectedMvpd.selected === true);\n\n if ($scope.selectedMvpdsList.length === $scope.availableMvpdsList.length) {\n $scope.selectAllMvpds = true;\n }\n }\n\n $scope.getData();\n };\n\n // Populate selected Channels list and selected MVPDs list with all available data\n $scope.init = () => {\n $scope.getAvailableChannelsList();\n $scope.getAvailableMVPDsList();\n\n $scope.getData();\n }\n $scope.init();\n\n /**\n * @name module:report.ReportItemCtrl\n * @description Exports the reports in a csv format\n */\n $scope.exportConfiguration = () => {\n if (!($scope.data && $scope.data.entities.length)) {\n window.alert('No data to export');\n return;\n }\n\n ReportService.selectedChannelsList = $scope.selectedChannelsList;\n ReportService.selectedMvpdsList = $scope.selectedMvpdsList;\n\n let integrations = integrationList\n .filter((integration) => $scope.selectedChannelsList.some((channel) => channel.key === integration.entityData.serviceProvider.split('@')[1]))\n .filter((integration) => $scope.selectedMvpdsList.some((mvpd) => mvpd.key === integration.entityData.owner.split('@')[1]));\n\n var downloadItems;\n\n $scope.loading = true;\n $scope.reportStatus = \"Exporting Data\"\n\n ReportService.getDownloadData(integrations).then((response) => {\n downloadItems = response.data;\n }).then(() => {\n ReportService.prepareDownloadReport(downloadItems, $state.current.name, States)\n .then((csvData) => {\n ReportService.downloadFile(csvData);\n $scope.loading = false;\n $scope.reportStatus = \"Loading Data\"\n });\n });\n };\n\n /**\n * @name module:report.ReportItemCtrl#service\n * @type {Object}\n * @description Item Click Method. Used by {@link module:ui.PanelListDirective#service}\n */\n $scope.onItemClick = () => {\n return;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/report/partial/ReportItem/ReportItem.ts","/**\n * @name module:ui.Reports#reports\n * @JSON\n * @description Reports JSON. Any new report can be added here {@link module:ui.ReportsItemCtrl}\n * @template: HTML template of your report to be added 'module/ui/template/reports/.html'\n*/\n\n\nconst columns = [\n {\n name: 'CHANNEL',\n sortable: false,\n sorted: true,\n sortAsc: true,\n sortField: 'serviceProvider',\n class: 'col-xs-1'\n },\n {\n \"name\": \"MVPD\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n },\n {\n \"name\": \"BROWSERS\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n },{\n \"name\": \"MOBILE: IOS\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n }, {\n \"name\": \"MOBILE: ANDROID\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n }, {\n \"name\": \"MOBILE: OTHERS\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n },{\n \"name\": \"TVCD: ROKU\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n },\n {\n \"name\": \"TVCD: FIRETV\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n },\n {\n \"name\": \"TVCD: APPLETV\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n },\n {\n \"name\": \"TVCD: OTHERS\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n }, {\n \"name\": \"PLATFORM: UNKNOWN\",\n \"sortable\": false,\n \"class\": \"col-xs-1\"\n }];\n\n/**\n * @name module:ui.Reports#reports\n * @JSON\n * @param {String} id - Report Id\n * @param {Columns} columns - Columns of the report for which data will hold values\n * @param {String} reportName - Display Name of the report\n*/\n\n\nconst reports: any = [{\n \"id\": \"authnReport\",\n // If there exists a nested structure for columns, Add only the columns which will hold actual values\n \"columns\": columns,\n \"reportName\": \"TTL Report\",\n \"renderer\": \"AuthNReport.html\",\n \"layout\": \"ttlReportTabContent\"\n}, {\n \"id\": \"authzReport\",\n // If there exists a nested structure for columns, Add only the columns which will hold actual values\n \"columns\": columns,\n \"reportName\": \"TTL Report\",\n \"renderer\": \"AuthZReport.html\",\n \"layout\": \"ttlReportTabContent\"\n}, {\n \"id\": \"ssoReport\",\n // If there exists a nested structure for columns, Add only the columns which will hold actual values\n \"columns\": columns,\n \"reportName\": \"SSO Report\",\n \"renderer\": \"SSOReport.html\",\n \"layout\": \"ssoReportTabContent\"\n}\n];\n\nexport default reports;\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/report/reportlist.ts","import * as angular from \"angular\";\n\nimport {AngularModuleConfig} from \"./common/AngularModule\";\nimport {HeaderCtrl} from \"./module/core/partial/Header/Header\";\nimport {FooterCtrl} from \"./module/core/partial/Footer/Footer\";\nimport {DashboardCtrl} from \"./module/core/partial/Dashboard/Dashboard\";\nimport {ChangelogCtrl} from \"./module/core/partial/ChangeLog/ChangeLog\";\nimport {Forbidden} from \"./module/core/Forbidden\";\nimport {SidebarCtrl} from \"./module/core/partial/Sidebar/Sidebar\";\n\n@AngularModuleConfig({\n moduleName: 'apc',\n dependencies: [\n 'ui.bootstrap',\n 'ui.router',\n 'ngCookies',\n 'angular-md5',\n 'ncy-angular-breadcrumb',\n 'xml',\n 'toggle-switch',\n 'core',\n 'security',\n 'data',\n 'diff',\n 'admin',\n 'filters',\n 'ui',\n 'channel',\n 'integration',\n 'programmer',\n 'mvpd',\n 'feedback',\n 'report',\n 'btorfs.multiselect'\n ]\n})\nexport class App {\n config($stateProvider, $urlRouterProvider, $breadcrumbProvider, $qProvider, States) {\n \"ngInject\";\n $qProvider.errorOnUnhandledRejections(true);\n\n $breadcrumbProvider.setOptions({\n includeAbstract: false\n });\n\n $stateProvider.state(States.Base.name, {\n abstract: States.Base.abstract,\n url: States.Base.url,\n ncyBreadcrumb: {\n skip: true\n },\n params: {\n reset: false\n },\n views: {\n 'header': {\n template: require('./module/core/partial/Header/Header.tmpl'),\n controller: HeaderCtrl\n },\n 'sidebar': {\n template: require('./module/core/partial/Sidebar/Sidebar.tmpl'),\n controller: SidebarCtrl,\n resolve: {\n navItems: function (NavService) {\n return NavService.getAvailableNavigationStates();\n }\n }\n },\n 'content': {\n template: require('./module/core/template/layout.tmpl')\n },\n 'footer': {\n template: require('./module/core/partial/Footer/Footer.tmpl'),\n controller: FooterCtrl\n }\n }\n });\n\n $stateProvider.state(States.Forbidden.name, {\n abstract: States.Forbidden.abstract,\n url: States.Forbidden.url,\n ncyBreadcrumb: {\n skip: true\n },\n params: {\n reset: false,\n forbidden: false\n },\n onEnter: function ($stateParams, $rootScope, $state, States) {\n if (!$rootScope.error || !$rootScope.error.active) {\n $state.go(States.Dashboard.name);\n }\n $rootScope.appLoading = false;\n },\n views: {\n 'content@': {\n controller: Forbidden,\n template: function ($stateParams) {\n if ($stateParams.forbidden) {\n return require('./module/core/template/forbidden.tmpl');\n } else {\n return require('./module/core/template/layout.tmpl');\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.Dashboard.name, {\n abstract: States.Dashboard.abstract,\n url: States.Dashboard.url,\n ncyBreadcrumb: {\n label: States.Dashboard.displayName\n },\n views: {\n 'page@Base': {\n template: require('./module/core/partial/Dashboard/Dashboard.tmpl'),\n controller: DashboardCtrl,\n resolve: {\n latestChanges: function (HistoryService) {\n return HistoryService.getRecent().then(function (response) {\n return response.data.configurationInformationList;\n });\n },\n serviceProviderList: function (ChannelService) {\n return ChannelService.getPage(1, 'displayName', 'ASC').then(function (response) {\n return response.data;\n });\n }\n }\n }\n }\n });\n\n $stateProvider.state(States.History.name, {\n abstract: States.History.abstract,\n url: States.History.url,\n ncyBreadcrumb: {\n label: States.History.displayName\n },\n views: {\n 'page@Base': {\n template: require('./module/core/partial/ChangeLog/ChangeLog.tmpl'),\n controller: ChangelogCtrl,\n resolve: {\n history: function (HistoryService) {\n return HistoryService.getPage(1).then(function (response) {\n return response.data;\n });\n },\n highlight: function ($stateParams) {\n return $stateParams.highlight;\n }\n }\n }\n }\n });\n\n /* Add New States Above */\n $urlRouterProvider.otherwise('/');\n\n }\n\n run($log, $timeout, $http, $rootScope, $state, States, UserService, CacheService, DataCollectorService, SearchEvent, ResilienceService, NotificationService) {\n \"ngInject\";\n $log.log('Starting the application...');\n\n //$rootScope.appLoading = true;\n $rootScope.statusMessage = \"Loading application\";\n\n $rootScope.safeApply = function (fn) {\n var phase = $rootScope.$$phase;\n if (phase === '$apply' || phase === '$digest') {\n if (fn && (typeof(fn) === 'function')) {\n fn();\n }\n } else {\n this.$apply(fn);\n }\n };\n\n $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {\n if (toParams.reset) {\n CacheService.reset();\n DataCollectorService.reset();\n toParams.reset = false;\n }\n if (toState.name !== States.Forbidden.name) {\n $rootScope.error = {\n active: false\n };\n }\n if (!UserService.isLoggedIn() && toState.name !== States.Forbidden.name) {\n event.preventDefault();\n $rootScope.statusMessage = \"Checking authentication\";\n UserService.checkAuthentication().then(function () {\n $rootScope.appLoading = false;\n $state.go(toState.name, toParams);\n });\n } else {\n if ((toState.name.indexOf('Admin') !== -1 && !UserService.hasRole('ROLE_CONSOLE_ADMIN')) || (toState.roles && !UserService.hasRole(`ROLE_CONSOLE_${toState.roles}`))) {\n event.preventDefault();\n $rootScope.appLoading = false;\n $state.go(States.Dashboard.name);\n } else if (toState.name !== States.Forbidden.name) {\n $rootScope.loadingTimeout = $timeout(function () {\n $rootScope.statusMessage = \"Loading data\";\n $rootScope.appLoading = true;\n }, 300);\n }\n }\n });\n $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {\n $rootScope.$broadcast(SearchEvent.CLEAR);\n $timeout.cancel($rootScope.loadingTimeout);\n if (ResilienceService.getResilienceState()) {\n NotificationService.errorWithHelperLink(\"Degraded state\", \"Only search and sort functionality is affected. \", ResilienceService.getTroubleshootingLink());\n } else {\n NotificationService.removeError(\"Degraded state\");\n }\n $rootScope.appLoading = false;\n });\n $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, Error) {\n $timeout.cancel($rootScope.loadingTimeout);\n $rootScope.statusMessage = \"Loading data\";\n $rootScope.appLoading = false;\n });\n\n $rootScope.$on(\"$viewContentLoaded\", function(){\n $(window).scrollTop();\n });\n $rootScope.user = UserService;\n\n $log.info('Application started.');\n\n }\n\n bootstrap() {\n angular.element(document).ready(function () {\n var initInjector = angular.injector(['ng']);\n var $log = initInjector.get('$log');\n $log.log('Bootstrapping the application...');\n angular.bootstrap(document, ['apc'], {\n strictDi: false\n });\n\n $('body').tooltip({\n selector: '[data-toggle=tooltip]'\n });\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app.ts","/*************************************************************************\n * ADOBE CONFIDENTIAL\n * ___________________\n *\n * Copyright 2017 Adobe Systems Incorporated\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe Systems Incorporated and its suppliers,\n * if any. The intellectual and technical concepts contained\n * herein are proprietary to Adobe Systems Incorporated and its\n * suppliers and are protected by all applicable intellectual property laws,\n * including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe Systems Incorporated.\n ************************************************************************/\nimport * as _ from \"lodash\";\n\nexport class Forbidden {\n constructor($window, $rootScope, $scope, $injector, $stateParams, UserService) {\n \"ngInject\";\n if ($stateParams.forbidden) {\n $rootScope.hiddenSidebar = true;\n $scope.status = 'init';\n $scope.user = UserService.getUserData();\n $scope.done = function () {\n $window.location.reload();\n };\n let userRoles = UserService.getUserRoles();\n if (_.keys(userRoles).length === 0) {\n $scope.unavailable = true;\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/module/core/Forbidden.ts","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/partial/Header/Header.tmpl\n// module id = 242\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/partial/Sidebar/Sidebar.tmpl\n// module id = 243\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/partial/Footer/Footer.tmpl\n// module id = 244\n// module chunks = 0","module.exports = \"

                    Access to this application is restricted. If you think this in an error please submit a ticket to support@tve.zendesk.com

                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/template/forbidden.tmpl\n// module id = 245\n// module chunks = 0","module.exports = \"

                    Latest Changes

                    Changes Push Date Made By Email Export
                    = 2 && !selected[$index]\\\"/>
                    {{change.configurationSaveInformation.message}} {{change.configurationSaveInformation.saveTimestamp | date:'medium'}} {{change.configurationSaveInformation.userProfile.displayName}} {{change.configurationSaveInformation.userProfile.email}}

                    No changes to display

                    \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/partial/Dashboard/Dashboard.tmpl\n// module id = 246\n// module chunks = 0","module.exports = \"
                    0\\\" class=pagination-holder>
                    Changes Push Date Made By Push Status Pushed By Export Export Split
                    = 2 && !selected[change.configurationSaveInformation.configurationVersion]\\\"/>
                    {{change.configurationSaveInformation.message}} {{change.configurationSaveInformation.saveTimestamp | date:'medium'}} {{change.configurationSaveInformation.userProfile.displayName}} {{change.configurationPushInformation.pushResultStatus}} {{change.configurationSaveInformation.userProfile.email}}

                    No changes to display

                      \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/module/core/partial/ChangeLog/ChangeLog.tmpl\n// module id = 247\n// module chunks = 0","var map = {\n\t\"./index.html\": 260,\n\t\"./module/ui/directive/Applications/Add/AddApplication.html\": 261,\n\t\"./module/ui/directive/Applications/View/ViewApplication.html\": 262,\n\t\"./module/ui/directive/Certificates/Add/AddCertificate.html\": 263,\n\t\"./module/ui/directive/Certificates/Delete/DeleteCertificate.html\": 264,\n\t\"./module/ui/directive/Certificates/Edit/EditCertificate.html\": 265,\n\t\"./module/ui/directive/ClientData/ClientData.html\": 266,\n\t\"./module/ui/directive/ClientData/ClientDataBasic.html\": 267,\n\t\"./module/ui/directive/Manglers/Manglers.html\": 268,\n\t\"./module/ui/directive/Manglers/ManglersAuthnBasic.html\": 269,\n\t\"./module/ui/directive/Manglers/ManglersAuthzBasic.html\": 270,\n\t\"./module/ui/directive/Permissions/Add/AddPermission.html\": 271,\n\t\"./module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html\": 272,\n\t\"./module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html\": 273,\n\t\"./module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html\": 274,\n\t\"./module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html\": 275,\n\t\"./module/ui/template/endpoint/authenticationProviderConfiguration-rules.html\": 276,\n\t\"./module/ui/template/endpoint/authenticationProviderConfiguration-settings.html\": 277,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html\": 278,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-rules.html\": 279,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-settings.html\": 280,\n\t\"./module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html\": 281,\n\t\"./module/ui/template/endpoint/logoutProviderConfiguration-certificates.html\": 282,\n\t\"./module/ui/template/endpoint/logoutProviderConfiguration-rules.html\": 283,\n\t\"./module/ui/template/endpoint/logoutProviderConfiguration-settings.html\": 284,\n\t\"./module/ui/template/renderer/IntegrationRenderer.html\": 285,\n\t\"./module/ui/template/renderer/LiveIntegrationRenderer.html\": 286,\n\t\"./module/ui/template/renderer/MvpdRenderer.html\": 287,\n\t\"./module/ui/template/renderer/ProgrammerRenderer.html\": 288,\n\t\"./module/ui/template/reports/AuthNReport.html\": 289,\n\t\"./module/ui/template/reports/AuthZReport.html\": 290,\n\t\"./module/ui/template/reports/SSOReport.html\": 291,\n\t\"./static/res/swagger/o2c.html\": 292\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 259;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src ./node_modules/ng-cache-loader?prefix=src:**! .*\\.html\n// module id = 259\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\nAdobe Pass Console\\n\\n\\n\\n\\n
                      \\n
                      \\n
                      Loading application
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n\";\nvar id1=\"/index.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/index.html\n// module id = 260\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
                      \\n

                      New Registered Application

                      \\n
                      \\n
                      \\n
                      \\n\\n
                      \\n \\n \\n \\n \\n
                      \\n
                      \\n\\n
                      \\n \\n \\n
                      \\n \\n
                      \\n
                      \\n \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n\\n
                      \\n
                      \\n \\n \\n
                      \\n \\n \\n
                      \\n\";\nvar id1=\"AddApplication.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Applications/Add/AddApplication.html\n// module id = 261\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
                      \\n

                      {{application.entityData.name}} - Registered Application

                      \\n
                      \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n\\n
                      \\n The certificate cannot be successfully parsed. Please update its\\n content\\n and try again.\\n
                      \\n
                      \\n\\n
                      \\n

                      Used On

                      \\n \\n
                      \\n Warning!\\n
                      {{getEncryptionCertificateWarningMessage()}}\\n
                      \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
                      User metadata encryption\\n \\n \\n
                      \\n \\n \\n
                      \\n
                      {{platform.description}}\\n \\n \\n
                      \\n \\n \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n\";\nvar id1=\"AddCertificate.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Certificates/Add/AddCertificate.html\n// module id = 263\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
                      \\n

                      Delete Certificate

                      \\n
                      \\n
                      \\n
                      \\n
                      \\n

                      Are you sure you want to delete the certificate?

                      \\n
                      \\n
                      \\n Warning!\\n
                      {{getEncryptionCertificateWarningMessage()}}\\n
                      \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n\";\nvar id1=\"DeleteCertificate.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Certificates/Delete/DeleteCertificate.html\n// module id = 264\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
                      \\n

                      Edit Certificate

                      \\n
                      \\n
                      \\n
                      \\n
                      \\n

                      Used On

                      \\n\\n \\n
                      \\n Warning!\\n
                      {{getEncryptionCertificateWarningMessage()}}\\n
                      \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
                      User metadata encryption\\n \\n \\n
                      \\n \\n \\n
                      \\n
                      {{platform.description}}\\n \\n \\n
                      \\n \\n \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n \\n \\n
                      \\n\";\nvar id1=\"EditCertificate.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Certificates/Edit/EditCertificate.html\n// module id = 265\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n{{inheritData[property.field].value | boolean}}\\n\\n{{property.addon}}\\n
                      \\n

                      \\nValue should not be empty\\nValue should be a valid number\\nValue should not exceed 4000px\\nValue should be positive\\nValue should be integer\\n

                      \\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      \\n
                      \\n
                      0\\\">\\n\\n
                      \\n
                      \\n\\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/directive/ClientData/ClientData.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/ClientData/ClientData.html\n// module id = 266\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n
                      \\n\\n\\n\\n\\n\\n{{inheritData[property.field].value | boolean}}\\n\\n{{property.addon}}\\n
                      \\n

                      \\nValue should be a valid number\\nValue should not exceed 4000px\\nValue should be positive\\nValue should be integer\\n

                      \\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/directive/ClientData/ClientDataBasic.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/ClientData/ClientDataBasic.html\n// module id = 267\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n

                      Adobe Pass

                      \\n
                      \\n
                      \\n
                      \\n
                      \\n

                      MVPD

                      \\n
                      \\n
                      \\n
                      \\nRequest ({{getPropsByPhase('REQUEST').length}})\\n
                      \\n
                      \\nResponse ({{getPropsByPhase('RESPONSE').length}})\\n
                      \\n
                      \\nToken ({{getPropsByPhase('TOKEN').length}})\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n\\n\\n{{inheritData[property.propertyName].value | boolean}}\\n\\n
                      \\n

                      \\nValue should be a valid number\\nValue should be positive\\nValue should be integer\\n

                      \\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/directive/Manglers/Manglers.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Manglers/Manglers.html\n// module id = 268\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n\\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/directive/Manglers/ManglersAuthnBasic.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Manglers/ManglersAuthnBasic.html\n// module id = 269\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n\\n
                      \\n
                      \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/directive/Manglers/ManglersAuthzBasic.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Manglers/ManglersAuthzBasic.html\n// module id = 270\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
                      \\n

                      Add new group

                      \\n
                      \\n
                      \\n
                      \\n The group ID must match the group ID from Adobe's Administration Dashboard. You should obtain the group ID from programmer's admin.\\n
                      \\n
                      \\n\\n
                      \\n \\n \\n \\n \\n
                      \\n
                      \\n \\n \\n
                      \\n \\n \\n
                      \\n\";\nvar id1=\"AddPermission.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/directive/Permissions/Add/AddPermission.html\n// module id = 271\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\";\nvar id1=\"module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/MVPDauthenticationProviderConfiguration-rules.html\n// module id = 272\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\";\nvar id1=\"module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/MVPDauthorizationProviderConfiguration-rules.html\n// module id = 273\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\";\nvar id1=\"module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/MVPDlogoutProviderConfiguration-rules.html\n// module id = 274\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      Serial NumberSubject passOrganizationIssuer OrganizationActive SinceExpires
                      Certificate parse error{{certificateInfo.serialNumber}}{{certificateInfo.subjectOrganization}}{{certificateInfo.issuerOrganization}}{{certificateInfo.issued | date:'mediumDate'}}\\n{{certificateInfo.expires | date:'mediumDate'}}\\n
                      \\n\";\nvar id1=\"module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authenticationProviderConfiguration-certificates.html\n// module id = 275\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/endpoint/authenticationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authenticationProviderConfiguration-rules.html\n// module id = 276\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n\\n\\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n\\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n\\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/template/endpoint/authenticationProviderConfiguration-settings.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authenticationProviderConfiguration-settings.html\n// module id = 277\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      Serial NumberSubject passOrganizationIssuer OrganizationActive SinceExpires
                      Certificate parse error{{certificateInfo.serialNumber}}{{certificateInfo.subjectOrganization}}{{certificateInfo.issuerOrganization}}{{certificateInfo.issued | date:'mediumDate'}}\\n{{certificateInfo.expires | date:'mediumDate'}}\\n
                      \\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authorizationProviderConfiguration-certificates.html\n// module id = 278\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authorizationProviderConfiguration-rules.html\n// module id = 279\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n
                      \\n\\nPreFlight Configuration\\n\\n\\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\\n
                      \\n\\nDOS Protection\\n\\n\\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\\n
                      \\n\\nTempPass Configuration\\n\\n\\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n
                      \\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-settings.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authorizationProviderConfiguration-settings.html\n// module id = 280\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n 0\\\">\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      \\n

                      No tmsid map available

                      \\n
                      Resource IDTMS ID
                      {{tmsId.resourceName}}{{tmsId.resourceId}}
                      \\n\";\nvar id1=\"module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/authorizationProviderConfiguration-tmsids.html\n// module id = 281\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
                      Serial NumberSubject passOrganizationIssuer OrganizationActive SinceExpires
                      Certificate parse error{{certificateInfo.serialNumber}}{{certificateInfo.subjectOrganization}}{{certificateInfo.issuerOrganization}}{{certificateInfo.issued | date:'mediumDate'}}\\n{{certificateInfo.expires | date:'mediumDate'}}\\n
                      \\n\";\nvar id1=\"module/ui/template/endpoint/logoutProviderConfiguration-certificates.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/logoutProviderConfiguration-certificates.html\n// module id = 282\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/endpoint/logoutProviderConfiguration-rules.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/logoutProviderConfiguration-rules.html\n// module id = 283\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"
                      \\n
                      \\n
                      \\n\\n\\n
                      \\n\\n
                      \\n
                      \\n\\n
                      \\n
                      \\n\";\nvar id1=\"module/ui/template/endpoint/logoutProviderConfiguration-settings.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/endpoint/logoutProviderConfiguration-settings.html\n// module id = 284\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n{{item.entityData.id | integrationParents:item:data}}\\n\\n\\n{{data.related[item.entityData.serviceProvider].entityData.displayName}}\\n\\nID: {{data.related[item.entityData.serviceProvider].entityData.id}}\\n\\n\\n\\n{{item | squash: 'displayName':'integration'}}\\n\\nID: {{item | squash: 'id':'integration'}}\\n\\n\\n\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/renderer/IntegrationRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/renderer/IntegrationRenderer.html\n// module id = 285\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n{{item.entityData.displayName}}\\n\\nID: {{item.entityData.id}}\\n\\n\\n{{item.entityData.integrations | count}}\\n\";\nvar id1=\"module/ui/template/renderer/LiveIntegrationRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/renderer/LiveIntegrationRenderer.html\n// module id = 286\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.entityData.displayName}}\\nID: {{item.entityData.id}}\\n\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/renderer/MvpdRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/renderer/MvpdRenderer.html\n// module id = 287\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.entityData.displayName}}\\n{{item.entityData.serviceProviders.length}}\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/renderer/ProgrammerRenderer.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/renderer/ProgrammerRenderer.html\n// module id = 288\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.serviceProvider}}\\n{{item.mvpd}}\\n\\n\\n{{item.authentication.JS}}\\n\\n\\n\\n{{item.authentication.iOS}}\\n\\n\\n\\n{{item.authentication.Android}}\\n\\n\\n\\n{{item.authentication.mobileOthers}}\\n\\n\\n\\n{{item.authentication.roku}}\\n\\n\\n\\n{{item.authentication.fireTV}}\\n\\n\\n\\n{{item.authentication.tvOS}}\\n\\n\\n\\n{{item.authentication.tvcdOthers}}\\n\\n\\n\\n{{item.authentication.unknown}}\\n\\n\";\nvar id1=\"module/ui/template/reports/AuthNReport.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/reports/AuthNReport.html\n// module id = 289\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.serviceProvider}}\\n{{item.mvpd}}\\n\\n\\n{{item.authorization.JS}}\\n\\n\\n\\n{{item.authorization.iOS}}\\n\\n\\n\\n{{item.authorization.Android}}\\n\\n\\n\\n{{item.authorization.mobileOthers}}\\n\\n\\n\\n{{item.authorization.roku}}\\n\\n\\n\\n{{item.authorization.fireTV}}\\n\\n\\n\\n{{item.authorization.tvOS}}\\n\\n\\n\\n{{item.authorization.tvcdOthers}}\\n\\n\\n\\n{{item.authorization.unknown}}\\n\\n\";\nvar id1=\"module/ui/template/reports/AuthZReport.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/reports/AuthZReport.html\n// module id = 290\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"{{item.serviceProvider}}\\n{{item.mvpd}}\\n\\n\\n\\n\\n{{value}}\\n\\n\\n\\n\\n\";\nvar id1=\"module/ui/template/reports/SSOReport.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/module/ui/template/reports/SSOReport.html\n// module id = 291\n// module chunks = 0","var angular=window.angular,ngModule;\ntry {ngModule=angular.module([\"ng\"])}\ncatch(e){ngModule=angular.module(\"ng\",[])}\nvar v1=\"\\n\";\nvar id1=\"static/res/swagger/o2c.html\";\nvar inj=angular.element(window.document).injector();\nif(inj){inj.get(\"$templateCache\").put(id1,v1);}\nelse{ngModule.run([\"$templateCache\",function(c){c.put(id1,v1)}]);}\nmodule.exports=v1;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ng-cache-loader?prefix=src:**!./src/static/res/swagger/o2c.html\n// module id = 292\n// module chunks = 0"],"sourceRoot":""}